学生成绩管理系统(C++指针、链表、文件及面向对象的运用)
学生成绩管理系统
功能页面显示:
实现源码:
#include<iostream>
#include<fstream>
#include<cstring>
#include<iomanip>
#include<stdlib.h>
#include<windows.h>
using namespace std;
//学生类
class Student
{
public:
void inputStudent(Student *head); //输入学生的信息
void outputStudent(Student *head); //输出学生的信息
void deleteStudent(Student *head); //删除学生的信息
void addStudent(Student *head); //添加学生的信息
void changeStudent(Student *head); //修改学生的信息
void findStudent(Student *head); //查找学生的信息
void paixuStudent(Student *head);//学生成绩排序
void saveStudent(Student *head); //保存学生的信息
void loadStudent(Student *head);//加载学生的信息
void getcountStudent(Student *head); int num;
char name[];
char sex[];
float Chinese;
float English;
float Math;
float sum;
float average;
Student *next; private: };
void Student ::inputStudent(Student *head)//输入学生的信息
{
system("cls");
Student *p1,*p2; p1=head;
int N;
cout<<"哈喽,小可爱,请输入学生的总人数"<<endl;
cin>>N;
for(int i=;i<N;i++)
{
p2= new Student ;
p1->next=p2;
p1=p1->next;
cout<<"哈喽,小可爱,请输入学生的信息: "<<"学号 "<<"姓名 "<<"性别 " <<"语文 "<<"数学 "<<"英语 "<<endl;
cin>>p1->num>>p1->name>>p1->sex>>p1->Chinese>>p1->Math>>p1->English;
p1->sum=p1->Chinese+p1->Math+p1->English;
p1->average=(p1->sum)/;
}
p1->next=NULL;
cout<<"YES!输入成功"<<endl;
}
void Student ::outputStudent(Student *head)//浏览学生的信息
{
system("cls");
Student *p1,*p2; p1=head->next;
int r=;//名次
cout<<"学号\t"<<"姓名\t"<<"性别\t"<<"语文"
<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"<<"\t"<<"平均分"<<"\t"<<"\t"<<"总分"
<<"\t"<<"\t"<<"排名"<<endl;
while(p1!=NULL)
{
cout<<p1->num<<"\t"<<p1->name<<"\t"<<p1->sex<<"\t"<<p1->Chinese<<"\t"<<p1->Math<<"\t"<<p1->English<<"\t"<<"\t";
cout<<p1->average<<"\t"<<"\t";
cout<<p1->sum<<"\t"<<"\t";
cout<<r+<<endl;
r++;
p1=p1->next;
}
cout<<"YES!浏览成功"<<endl; }
void Student ::deleteStudent(Student *head)//删除学生的信息
{
system("cls"); Student *p1,*p2;
char n;
cout<<"哈喽,小可爱,请输入要删除的位置:"<<endl;
cin>>n;
int a;
a=n-'';
if(a>=)
{
if(a>= && a<=count)
{
p1=head;
p2=p1->next;
while(--a)
{
p1=p1->next;
p2=p2->next;
}
p1->next=p2->next; cout<<"YES!删除成功"<<endl;
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
void Student ::addStudent(Student *head)//添加学生的信息
{
system("cls");
Student *p1,*p2;
Student *p3;
char n;
cout<<"哈喽,小可爱,请输入要添加的位置 "<<endl;
cin>>n;
int a;
a=n-'';
if(a>)
{
if(a>= && a<=count)
{
p1=head;
p2=p1->next;
while(--a)
{
p2=p2->next;
p1=p1->next; }
p3=new Student;
cout<<"哈喽,小可爱,请输入你的信息 :"<<endl<<"学号 "<<"姓名 "<<"性别 "<<"语文 "<<"数学 "<<"英语 "<<endl; cin>>p3->num>>p3->name>>p3->sex>>p3->Chinese>>p3->Math>>p3->English;
p3->sum=p3->Chinese+p3->Math+p3->English;
p3->average=(p3->sum)/;
p3->next=p2;
p1->next=p3;
cout<<"YES!添加成功 "<<endl;
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
void Student::changeStudent(Student *head)//修改学生的信息
{
system("cls"); Student *p1,*p2;
Student *p3; char n;
cout<<"哈喽,小可爱,请选择你要修改的位置 :"<<endl;
cin>>n;
int a;
a=n-'';
if(a>)
{
if(a>= && a<=count)
{
p1=head;
p2=p1->next;
while(--a)
{
p1=p1->next;
p2=p2->next ;
}
cout<<"哈喽,小可爱,请输入你的信息 :"<<endl<<"学号 "<<"姓名 "<<"性别 "<<"语文 "<<"数学 "<<"英语 "<<endl; cin>>p2->num>>p2->name>>p2->sex>>p2->Chinese>>p2->Math>>p2->English;
p2->sum=p2->Chinese+p2->Math+p2->English;
p2->average=(p2->sum)/;
cout<<"YES!修改成功"<<endl; }
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
} }
void Student::findStudent(Student *head)//查找学生的信息
{
system("cls");
Student *p1;
int p;
int i=;
int stunum;
char stuname[];
p1=head->next;
cout<<"请选择 1.按学号查找 2. 按姓名查找"<<endl;
cin>>p;
if(p==)
{
system("cls");
cout<<"请输入要查找的学号 "<<endl;
cin>>stunum;
while(p1!=NULL)
{
if(stunum==p1->num)
{
cout<<"学号\t"<<"姓名\t"<<"性别\t"<<"语文"
<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"<<"\t"<<"平均分"<<"\t"<<"\t"<<"总分"
<<"\t"<<"\t"<<endl;
cout<<p1->num<<"\t"<<p1->name<<"\t"<<p1->sex<<"\t"<<p1->Chinese<<"\t"<<p1->Math<<"\t"<<p1->English<<"\t"<<"\t";
cout<<p1->average<<"\t"<<"\t";
cout<<p1->sum<<"\t"<<"\t";
}
p1=p1->next;
} }else if(p==)
{
system("cls");
cout<<"请输入要查找的姓名 "<<endl;
cin>>stuname;
while(p1!=NULL)
{
if(strcmp(p1->name,stuname)==)
{
cout<<"学号\t"<<"姓名\t"<<"性别\t"<<"语文"
<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"<<"\t"<<"平均分"<<"\t"<<"\t"<<"总分"
<<"\t"<<"\t"<<endl;
cout<<p1->num<<"\t"<<p1->name<<"\t"<<p1->sex<<"\t"<<p1->Chinese<<"\t"<<p1->Math<<"\t"<<p1->English<<"\t"<<"\t";
cout<<p1->average<<"\t"<<"\t";
cout<<p1->sum<<"\t"<<"\t";
}
p1=p1->next;
}
}else
{
cout<<"输入选项错误 "<<endl;
} }
void Student::paixuStudent(Student *head)//排序
{
Student *p1;
Student *p2;
p1=head;
int n=;
int a=;
char b[];
int i,j;
while(p1->next)
{
p1=p1->next ;
n++;
}
for(i=;i<n-;i++)
{
p2=head->next;
p1=p2->next;
for(j=;j<n-i-;j++)
{
if(p1->average >p2->average )
{
strcpy(b,p2->name);
strcpy(p2->name ,p1->name );
strcpy(p1->name,b); strcpy(b,p2->sex);
strcpy(p2->sex ,p1->sex);
strcpy(p1->sex,b); a=p2->num ;
p2->num =p1->num ;
p1->num =a; a=p2->Chinese;
p2->Chinese=p1->Chinese;
p1->Chinese=a; a=p2->Math ;
p2->Math =p1->Math ;
p1->Math =a; a=p2->English ;
p2->English =p1->English ;
p1->English =a; a=p2->average;
p2->average =p1->average ;
p1->average =a; a=p2->sum ;
p2->sum =p1->sum ;
p1->sum =a;
}
p1=p1->next;
p2=p2->next;
}
}
cout<<"YES!排序成功 "<<endl;
}
void Student::saveStudent(Student *head) //保存学生的信息
{
Student *p;
ofstream os;
os.open("sco.txt"); p=head->next ;
while(p)
{
os<<p->num<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->Chinese<<"\t" <<p->Math<<"\t" <<p->English <<"\t"<<p->sum<<"\t"<<p->average; p=p->next;
os<<endl;
} cout<<"YES!保存成功 "<<endl;
os.close();
}
void Student:: loadStudent(Student *head)//加载学生的信息
{
Student *p,*p2;
ifstream is;
is.open("sco.txt"); p2=head; while()
{
p=new Student;
is>>p->num>>p->name>>p->sex>>p->Chinese
>>p->Math>>p->English >>p->sum>>p->average;
if(is.fail() )//判断是否到文件结尾
{
delete p;
p2->next =NULL;
break;
} p2->next =p; p2=p2->next;
} cout<<"YES!加载成功 "<<endl; is.close(); }
int count;
void Student::getcountStudent(Student *head)
{
Student *p;
count=;
p=head;
while(p->next!=NULL)
{
count++;
p=p->next;
}
} void welcome()
{
cout<<" ~~~ 欢迎进入**学生成绩管理系统! ~~~"<<endl;
system("color 1");
}
void menu()
{
cout<<" ******************************************"<<endl;
cout<<" ~~~~~~~ 学生成绩管理系统 ~~~~~~~"<<endl;
cout<<" ******************************************"<<endl;
cout<<" ******************************************"<<endl;
cout<<" ******************************************"<<endl;
cout<<" ~~哈喽,小可爱,请选择你要进行的操作**" <<endl;
cout<<" ~~1. 输入学生的信息 ~~"<<endl;
cout<<" ~~2. 浏览学生的信息 ~~"<<endl;
cout<<" ~~3. 删除学生的信息 ~~"<<endl;
cout<<" ~~4. 添加学生的信息 ~~"<<endl;
cout<<" ~~5. 修改学生的信息 ~~"<<endl;
cout<<" ~~6. 查找学生的信息 ~~"<<endl;
cout<<" ~~7. 排序学生的成绩 ~~"<<endl;
cout<<" ~~8. 保存学生的信息 ~~"<<endl;
cout<<" ~~9. 加载学生的信息 ~~"<<endl;
cout<<" ~~0. 退出学生信息系统 ~~"<<endl;
cout<<" *****************************************"<<endl;
cout<<" *****************************************"<<endl;
cout<<" *****************************************"<<endl;
system("color b");
}
int main()
{
Student h;
system("cls");
welcome();
Sleep();
int i;
Student *head=new Student; while()
{
system("cls");
menu();
cout<<"哈喽,小可爱,请输入你要进行的操作 :"<<endl;
cin>>i;
switch(i)
{
case : cout<<"输入学生的信息 "<<endl;h.inputStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"浏览学生的信息 "<<endl;h.outputStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"删除学生的信息 "<<endl;h.deleteStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"添加学生的信息 "<<endl;h.addStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"修改学生的信息 "<<endl;h.changeStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"查询学生的信息 "<<endl;h.findStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"学生成绩的排序 "<<endl;h.paixuStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"保存学生的信息 "<<endl;h.saveStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"加载学生的信息 "<<endl;h.loadStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"谢谢使用,欢迎下次光临 "<<endl;system("pause");exit(); default: cout<<"输入错误"<<endl;
}
}
return ;
}
学生成绩管理系统(C++指针、链表、文件及面向对象的运用)的更多相关文章
- 学生成绩管理系统C(链表)语言
#include"stdio.h" #include"stdlib.h" #include"string.h" //用于调用一些函数 str ...
- c++链表实现学生成绩管理系统(简易版)
#include<iostream> using namespace std; typedef struct student{ int id;//学号 string sex; string ...
- 基于C语言文件操作的学生成绩管理系统
原理 在一个班级学生成绩管理系统中,希望处理每个学生的学习情况信息,其中包括学生的学号.姓名.各科名称和成绩等并能使管理人员通过界面完成对学生信息的录入及对学生信息的录入及对数据的查找.浏览.插入.排 ...
- 使用C++名单在文档处理和学生成绩管理系统相结合
对于学生成绩管理系统,我并不陌生,几乎学习C人的语言.做项目会想到学生成绩管理系统,我也不例外.在研究中的一段时间C语言之后,还用C语言到学生管理系统,然后做几个链接.计数,这个系统是以前的系统上的改 ...
- C项目实践--学生成绩管理系统
1.功能需求分析 学生成绩管理系统是对学生基本信息及成绩的管理.本程序主要实现了对学生的学号.姓名等基本信息以及各项学科成绩进行增加.删除.修改.查询和保存到磁盘文件等操作.主要功能描述如下: (1) ...
- 从零开始的C程序设计大作业——学生成绩管理系统
前言 学生成绩管理系统可以说是C语言程序设计的结课的必备大作业了.花了些时间,费了些头发肝了下,完成了两个系统,一个是控制台版本的,另一个用easyx图形库进行了优化. 先放出完成后的演示图片占个坑. ...
- 【学生成绩管理系统】 大二c语言作业
几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...
- [项目记录] 用c语言完成的一个学生成绩管理系统
一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...
- 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念
1 成绩管理系统概述 1.1 管理信息系统的概念 管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...
随机推荐
- php 处理上百万条的数据库如何提高处理查询速度
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 大数据入门到精通8-spark RDD 复合key 和复合value 的map reduce操作
一.做基础数据准备 这次使用fights得数据. scala> val flights= sc.textFile("/user/hdfs/data/Flights/flights.cs ...
- 视频和swf的相对路径加载,卸载
package com{ import flash.display.MovieClip; import flash.net.NetConnection; import flash.net.NetStr ...
- 最小生成树求最大比率 UVALive - 5713
题目链接:https://vjudge.net/problem/UVALive-5713 题意:给出t组数据,每组数据第一行给出一个n,表示点的数量,接下来n行,每行有三个数字,分别是点的坐标x,y和 ...
- Lozad.js 简单使用
GayHub位置:https://github.com/ApoorvSaxena/lozad.js 导入: <script type="text/javascript" sr ...
- python shell的交互模式和文本编辑模式
之前学python的时候,是拿<笨办法学python>练习的. 书里面基本都是以.py文件去写代码,也就是文本编辑模式. 而交互模式(也就是powershell),唯有在input用户输入 ...
- [leetcode]75. Sort Colors三色排序
Given an array with n objects colored red, white or blue, sort them in-place so that objects of the ...
- js、jquery、jsp的区别
1.JSP全称是java server page JS全称是javaScript 2.最主要的区别是运行位置不同. JSP运行在后台服务器上,混合在HTML中的java程序段用于控制HTML的动 ...
- Centos7 进入单用户模式,修复系统
一.开机时进入如下界面,(按下方向键盘,阻止系统自动继续) 按e键出现下面界面 按方向键下,定位到最后,找到“ro”一行,ro的意思是read only,将“ro”替换成 rw init=/sysro ...
- android 去掉activity的切换动画
在styles.xml文件中增加样式代码: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActio ...