第一次做学年设计 学生成绩管理系统
2020-06-24 完成代码部分
2020-06-26 完成报告部分
2020-06-30 终于等到了答辩的时间,完成答辩很开兴~~~。
该系统具有的功能
总:对于小学生 中学生 大学生 进行操作
以下以小学生为例
1 查询学生信息
2 添加学生信息
3 删除学生信息
4 显示学生信息
5 编辑学生信息
6 统计学生信息
7 学生成绩排序
8 退出管理系统
直接上代码 已经在DEV C++通过 没毛病
首先时main.cpp
#include <cstring>
#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include "StuL.h"
#include "StuM.h"
#include "StuB.h"
using namespace std;int main() {int choose; cout<<"请输入对那类学生进行成绩统计 1--小学生 2--中学生 3--大学生"<<endl;StuL ll;StuM mm;StuB bb; cin>>choose;switch(choose){case 1: ll.menu(); break;case 2: mm.menu(); break;case 3: bb.menu(); break;}return 0;
}
小学生的处理板块:
StuL.h文件
#ifndef STUL_H
#define STUL_H
#include <string>
using namespace std;class StuL{public: StuL();//学生数据初始化和保存学生数据void input();//输入学生信息 void insert();//添加学生信息 void display();//显示学生信息 void sort1();//对学生成绩进行排序 void write();//把信息写入文件void read();//读取文件信息void readOrClear();//清空学生信息1 void modify();//修改学生信息void stat();//统计学生信息void del();//删除学生信息 void find();//查找学生信息void menu();//菜单 private:char name[20];//姓名char sex[5];//性别int number;//学号int className;//班级int total;//总分 int average;//平均分 double score[3];
};#endif
StuL.cpp
#include "StuL.h"
#include <cstring>
#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;StuL stu[100];
int n=0;StuL::StuL(){strcpy(name," ");strcpy(sex," ");number=0;className=0;total=0;average=0;for(int i=0;i<3;i++)score[i]=0;
}void StuL::input(){cout<<"输入学生人数:"<<endl;cin>>n;cout<<"输入学生信息 学号 姓名 语文成绩 数学成绩 英语成绩:"<<endl;for(int i=0;i<n;i++){cin>>stu[i].number;cin>>stu[i].name;for(int j=0;j<3;j++){cin>>stu[i].score[j];stu[i].total+=stu[i].score[j];}} cout<<"完成学生信息的输入!"<<endl;
}void StuL::insert(){int num,score1[3];char name1[20];cout<<"输入所要添加学生的学号:"<<endl;cin>>num;bool f=1;for(int i=0;i<n;i++){if(num==stu[i].number){cout<<"无法添加该学生 该学生信息已经存在!"<<endl;f=0;break;}}if(f){cout<<"输入姓名 语文成绩 数学成绩 英语成绩:"<<endl;cin>>name>>score1[0]>>score1[1]>>score1[2];stu[n].number=num;for(int p=0;p<3;p++){stu[n].score[p]=score1[p];stu[n].total+=score1[p];}strcpy(stu[n].name,name);cout<<"添加成功"<<endl;n++;write();//添加后要保存到文件中}
} void StuL::display(){cout<<"输出学生信息:学号 姓名 语文成绩 数学成绩 英语成绩 总成绩:"<<endl;for(int i=0;i<n;i++){cout<<setw(16)<<stu[i].number<<setw(8)<<stu[i].name<<" ";for(int j=0;j<3;j++){cout<<setw(8)<<stu[i].score[j]<<" ";}cout<<setw(7)<<stu[i].total; cout<<endl;}
}void StuL::sort1(){cout<<"选择排序方式:1--按照总成绩排序 2--按照语文成绩排序 3--按照数学成绩排序 4--按照英语成绩排序 5--返回菜单"<<endl;int m;cin>>m;while(1){if(m==1){for(int i=0;i<n;i++){for(int j=0;j<n-i-1;j++){if(stu[j].total<stu[j+1].total){swap(stu[j],stu[j+1]);}}} display(); } else if(m==2){for(int i=0;i<n;i++){for(int j=0;j<n-i-1;j++){if(stu[j].score[0]<stu[j+1].score[0]){swap(stu[j],stu[j+1]);}}}display(); }else if(m==3){for(int i=0;i<n;i++){for(int j=0;j<n-i-1;j++){if(stu[j].score[1]<stu[j+1].score[1]){swap(stu[j],stu[j+1]);}}}display(); }else if(m==4){for(int i=0;i<n;i++){for(int j=0;j<n-i-1;j++){if(stu[j].score[2]<stu[j+1].score[2]){swap(stu[j],stu[j+1]);}}}display(); } else if(m==5){break;} else{cout<<"输入号码选项序号错误!"<<endl;}cout<<"选择排序方式:1--按照总成绩排序 2--按照语文成绩排序 3--按照数学成绩排序 4--按照英语成绩排序 5--返回菜单"<<endl; cin>>m;}
}void StuL::write(){for(int i=0;i<n;i++){//先按总成绩排序 再存入 for(int j=0;j<n-i-1;j++){if(stu[j].total<stu[j+1].total){swap(stu[j],stu[j+1]);}}}ofstream outfile("data.dat",ios::binary);if(!outfile){cerr<<"保存学生信息时打开文件失败!"<<endl;exit(1);}cout<<"将学生信息读入文件当中....."<<endl;for(int i=0;i<n;i++){outfile.write((char*)&stu[i],sizeof(StuL));}outfile.close();
}void StuL::read(){ifstream infile("data.dat",ios::binary);if(!infile){cerr<<"读取学生信息时打开文件失败!"<<endl;exit(1);}cout<<"从文件中读取学生信息....."<<endl;int j=0;cout<<"输出学生信息:学号 姓名 语文成绩 数学成绩 英语成绩 总成绩:"<<endl;while(infile.read((char*)&stu[j],sizeof(StuL))){cout<<setw(16)<<stu[j].number<<setw(8)<<stu[j].name<<" ";for(int z=0;z<3;z++){cout<<setw(8)<<stu[j].score[z]<<" ";}cout<<setw(7)<<stu[j].total<<endl; j++;}n=j; //保存学生人数cout<<"学生人数为:"<<n<<endl;infile.close();
}void StuL::readOrClear(){cout<<"是否清空文件中的学生信息?(清空/第一次录入信息 需要输入学生信息,保存到文件中 yes--清空 no--不清空 )"<<endl;string s;cin>>s;if(s=="yes"){n=0;input();//清空后调用 输入学生信息函数write();//并将信息保存到文件中read();}if(s=="no"){read();cout<<"读取信息完毕!"<<endl;}
}void StuL::modify(){int pd=0;//判断有没有 int t;//记录位置 int num;cout<<"请输入你的学号: ";cin>>num;for(int i=0;i<n;i++){if(stu[i].number==num){pd=1;t=i;}}if(pd==0){cout<<"对不起,没有你要修改的学生信息"<<endl;}else{cout<< "请输入新的学号: "; cin>>stu[t].number; cout<< " 姓名: "; cin>>stu[t].name; cout<< " 语文成绩: "; cin>>stu[t].score[0]; cout<< " 数学成绩: "; cin>>stu[t].score[1]; cout<< " 英语成绩: "; cin>>stu[t].score[2]; stu[t].total=stu[t].score[0]+stu[t].score[1]+stu[t].score[2];write(); cout<<" 修改成功 !"<<endl; }
}void StuL::del(){int num;bool f=0;cout<<"输入你要删除的学生学号:"<<endl;cin>>num;for(int i=0;i<n;i++){if(stu[i].number==num){cout<<"找到该学生!进行删除操作..."<<endl;for(int j=i;j<n-1;j++){stu[j].number=stu[j+1].number;strcpy(stu[j].name,stu[j+1].name);for(int p=0;p<3;p++){stu[j].score[p]=stu[j+1].score[p];}}cout<<"删除成功!"<<endl;n--;//学生人数-1f=1;break;}}if(f)write();else cout<<"不存在该学生!无法删除!"<<endl;}void StuL::find(){cout<<"选择查询方式:0--学号 1--姓名:"<<endl;int s;cin>>s;while(1){if(s==0){cout<<"输入你要查询的学号:"<<endl;int num;cin>>num;for(int i=0;i<n;i++){if(num==stu[i].number){cout<<"查询成功!"<<num<<"号学生信息 姓名:"<<stu[i].name<<" ";cout<<"语文成绩 数学成绩 英语成绩:"<<stu[i].score[0]<<" "<<stu[i].score[1]<<" "<<stu[i].score[2]<<endl;}} break;}else if(s==1){cout<<"输入你要查询的学生姓名:"<<endl;char name[20];cin>>name;for(int i=0;i<n;i++){if(strcmp(stu[i].name,name)==0){cout<<"查询成功!"<<name<<"学生信息 学号 成绩:"<<stu[i].number<<" ";cout<<"语文成绩 数学成绩 英语成绩:"<<stu[i].score[0]<<" "<<stu[i].score[1]<<" "<<stu[i].score[2]<<endl;}} break;}else{cout<<"输入的选项序号有误,请重新输入:"<<endl;cin>>s;}}
}void StuL::stat(){cout<<"请选择统计方式 0--人数统计 1--总平均分统计 2--语文平均分统计 3--数学平均分统计 4--英语平均分统计 5--退出统计,返回菜单"<<endl; double t=0,t1=0,t2=0,t3=0;for(int i=0;i<n;i++){t+=stu[i].total;t1+=stu[i].score[0]; t2+=stu[i].score[1]; t3+=stu[i].score[2]; }int m;cin>>m;int y=0;while(1){switch(m){case 0: cout<<"人数为:"<<n<<endl; break;case 1: cout<<"总平均分为:"<<t*1.0/n<<endl; break;case 2: cout<<"语文平均分为:"<<t1*1.0/n<<endl; break;case 3: cout<<"数学平均分为:"<<t2*1.0/n<<endl; break;case 4: cout<<"英语平均分为:"<<t3*1.0/n<<endl; break;case 5: cout<<"退出统计"; y=1; break;default:cout<<"输入序号错误!请重新输入"<<endl;}if(y==1){cout<<endl;break;}cin>>m;}
}void StuL::menu(){readOrClear();while(1){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<<"|-------------------------------------------------------|"<<endl;int m;cout<<"输入你的选择:"<<endl;cin>>m;switch(m){case 1:find();break;case 2:insert();break;case 3:del();break;case 4:read();break;case 5:modify();break;case 6:stat();break;case 7:sort1();break;case 8:exit(1);default:cout<<"输入选项序号错误!"<<endl;}}
}
中学生板块:
StuM.h
#ifndef STUM_H
#define STUM_H
#include <string>
using namespace std;class StuM{public: StuM();//学生数据初始化和保存学生数据void input();//输入学生信息 void insert();//添加学生信息 void display();//显示学生信息 void sort1();//对学生成绩进行排序 void write();//把信息写入文件void read();//读取文件信息void readOrClear();//清空学生信息1 void modify();//修改学生信息void stat();//统计学生信息void del();//删除学生信息 void find();//查找学生信息void menu();//菜单 private:char name[20];//姓名char sex[5];//性别int number;//学号int className;//班级int total;//总分 int average;//平均分 double score[5];
};#endif
var foo = 'bar';
StuM.cpp
#include "StuM.h"
#include <cstring>
#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;StuM stu1[100];
int n1=0;StuM::StuM(){strcpy(name," ");strcpy(sex," ");number=0;className=0;total=0;average=0;for(int i=0;i<5;i++)score[i]=0;
}void StuM::input(){cout<<"输入学生人数:"<<endl;cin>>n1;cout<<"输入学生信息 学号 姓名 语文成绩 数学成绩 英语成绩 地理成绩 历史成绩:"<<endl;for(int i=0;i<n1;i++){cin>>stu1[i].number;cin>>stu1[i].name;for(int j=0;j<5;j++){cin>>stu1[i].score[j];stu1[i].total+=stu1[i].score[j];}} cout<<"完成学生信息的输入!"<<endl;
}void StuM::insert(){int num,score1[5];char name1[20];cout<<"输入所要添加学生的学号:"<<endl;cin>>num;bool f=1;for(int i=0;i<n1;i++){if(num==stu1[i].number){cout<<"无法添加该学生 该学生信息已经存在!"<<endl;f=0;break;}}if(f){cout<<"输入姓名 语文成绩 数学成绩 英语成绩 地理成绩 历史成绩:"<<endl;cin>>name>>score1[0]>>score1[1]>>score1[2]>>score1[3]>>score[4];stu1[n1].number=num;for(int p=0;p<5;p++){stu1[n1].score[p]=score1[p];stu1[n1].total+=score1[p];}strcpy(stu1[n1].name,name);cout<<"添加成功"<<endl;n1++;write();//添加后要保存到文件中}
} void StuM::display(){cout<<"输出学生信息:学号 姓名 语文成绩 数学成绩 英语成绩 地理成绩 历史成绩 总成绩:"<<endl;for(int i=0;i<n1;i++){cout<<setw(16)<<stu1[i].number<<setw(8)<<stu1[i].name<<" ";for(int j=0;j<5;j++){cout<<setw(10)<<stu1[i].score[j]<<" ";}cout<<setw(11)<<stu1[i].total; cout<<endl;}
}void StuM::sort1(){cout<<"选择排序方式:1--按总成绩排序 2--按语文成绩排序 3--按数学成绩排序 4--按英语成绩排序 5--按地理成绩排序 6--按历史成绩排序 7--返回菜单"<<endl; int m;cin>>m;while(1){if(m==1){for(int i=0;i<n1;i++){for(int j=0;j<n1-i-1;j++){if(stu1[j].total<stu1[j+1].total){swap(stu1[j],stu1[j+1]);}}} display(); } else if(m==2){for(int i=0;i<n1;i++){for(int j=0;j<n1-i-1;j++){if(stu1[j].score[0]<stu1[j+1].score[0]){swap(stu1[j],stu1[j+1]);}}}display(); }else if(m==3){for(int i=0;i<n1;i++){for(int j=0;j<n1-i-1;j++){if(stu1[j].score[1]<stu1[j+1].score[1]){swap(stu1[j],stu1[j+1]);}}} display();}else if(m==4){for(int i=0;i<n1;i++){for(int j=0;j<n1-i-1;j++){if(stu1[j].score[2]<stu1[j+1].score[2]){swap(stu1[j],stu1[j+1]);}}}display(); } else if(m==5){for(int i=0;i<n1;i++){for(int j=0;j<n1-i-1;j++){if(stu1[j].score[3]<stu1[j+1].score[3]){swap(stu1[j],stu1[j+1]);}}}display(); }else if(m==6){for(int i=0;i<n1;i++){for(int j=0;j<n1-i-1;j++){if(stu1[j].score[4]<stu1[j+1].score[4]){swap(stu1[j],stu1[j+1]);}}}display(); }else if(m==7){break;} else{cout<<"输入号码选项序号错误!"<<endl;}cout<<"选择排序方式:1--按总成绩排序 2--按语文成绩排序 3--按数学成绩排序 4--按英语成绩排序 5--按地理成绩排序 6--按历史成绩排序 7--返回菜单"<<endl; cin>>m;}
}void StuM::write(){for(int i=0;i<n1;i++){//先按总成绩排序 再存入 for(int j=0;j<n1-i-1;j++){if(stu1[j].total<stu1[j+1].total){swap(stu1[j],stu1[j+1]);}}}ofstream outfile("dataM.dat",ios::binary);if(!outfile){cerr<<"保存学生信息时打开文件失败!"<<endl;exit(1);}cout<<"将学生信息读入文件当中....."<<endl;for(int i=0;i<n1;i++){outfile.write((char*)&stu1[i],sizeof(StuM));}outfile.close();
}void StuM::read(){ifstream infile("dataM.dat",ios::binary);if(!infile){cerr<<"读取学生信息时打开文件失败!"<<endl;exit(1);}cout<<"从文件中读取学生信息....."<<endl;int j=0;cout<<"学号 姓名 语文成绩 数学成绩 英语成绩 地理成绩 历史成绩:"<<endl;while(infile.read((char*)&stu1[j],sizeof(StuM))){cout<<" "<<stu1[j].number<<" "<<stu1[j].name<<" "; for(int p=0;p<5;p++){cout<<setw(11)<<stu1[j].score[p];}cout<<endl;j++;}n1=j; //保存学生人数cout<<"学生人数为:"<<n1<<endl;infile.close();
}void StuM::readOrClear(){cout<<"是否清空文件中的学生信息?(清空/第一次录入信息 需要输入学生信息,保存到文件中 yes--清空 no--不清空 )"<<endl;string s;cin>>s;if(s=="yes"){n1=0;input();//清空后调用 输入学生信息函数write();//并将信息保存到文件中read();}if(s=="no"){read();cout<<"读取信息完毕!"<<endl;}
}void StuM::modify(){int pd=0;//判断有没有 int t;//记录位置 int num;cout<<"请输入你的学号: ";cin>>num;for(int i=0;i<n1;i++){if(stu1[i].number==num){pd=1;t=i;}}if(pd==0){cout<<"对不起,没有你要修改的学生信息"<<endl;}else{cout<<"请输入新的学号: "; cin>>stu1[t].number; cout<<" 姓名: "; cin>>stu1[t].name; cout<<"语文成绩 数学成绩 英语成绩 地理成绩 历史成绩:"; for(int h=0;h<5;h++){cin>>stu1[t].score[h];stu1[t].total+=stu1[t].score[h];}write();cout<<" 修改成功 !"<<endl; }
}void StuM::del(){int num;bool f=0;cout<<"输入你要删除的学生学号:"<<endl;cin>>num;for(int i=0;i<n1;i++){if(stu1[i].number==num){cout<<"找到该学生!进行删除操作..."<<endl;for(int j=i;j<n1-1;j++){stu1[j].number=stu1[j+1].number;strcpy(stu1[j].name,stu1[j+1].name);for(int p=0;p<5;p++){stu1[j].score[p]=stu1[j+1].score[p];}}cout<<"删除成功!"<<endl;n1--;//学生人数-1f=1;break;}}if(f)write();else cout<<"不存在该学生!无法删除!"<<endl;}void StuM::find(){cout<<"选择查询方式:0--学号 1--姓名:"<<endl;int s;cin>>s;while(1){if(s==0){cout<<"输入你要查询的学号:"<<endl;int num;cin>>num;for(int i=0;i<n1;i++){if(num==stu1[i].number){cout<<"查询成功!"<<num<<"号学生信息 姓名:"<<stu1[i].name<<" ";cout<<"语文成绩 数学成绩 英语成绩 地理成绩 历史成绩 总成绩:"; for(int h=0;h<5;h++){cout<<stu1[i].score[h]<<" ";} cout<<stu1[i].total; cout<<endl; }} break;}else if(s==1){cout<<"输入你要查询的学生姓名:"<<endl;char name[20];cin>>name;for(int i=0;i<n1;i++){if(strcmp(stu1[i].name,name)==0){cout<<"查询成功!"<<name<<"学生信息 学号 成绩:"<<stu1[i].number<<" ";cout<<"语文成绩 数学成绩 英语成绩 地理成绩 历史成绩 总成绩:"; for(int h=0;h<5;h++){cout<<stu1[i].score[h]<<" "; } cout<<stu1[i].total;cout<<endl; }} break;}else{cout<<"输入的选项序号有误,请重新输入:"<<endl;cin>>s;}}
}void StuM::stat(){cout<<"请选择统计方式 0--人数 1--总平均分 2--语文平均分 3--数学平均分 4--英语平均分 5--地理平均分 6--历史平均分 7--退出统计,返回菜单"<<endl; double t=0,t1=0,t2=0,t3=0,t4=0,t5=0;for(int i=0;i<n1;i++){t+=stu1[i].total;t1+=stu1[i].score[0]; t2+=stu1[i].score[1]; t3+=stu1[i].score[2];t4+=stu1[i].score[3];t5+=stu1[i].score[4]; }int m;cin>>m;int y=0;while(1){switch(m){case 0: cout<<"人数为:"<<n1<<endl; break;case 1: cout<<"总平均分为:"<<t*1.0/n1<<endl; break;case 2: cout<<"语文平均分为:"<<t1*1.0/n1<<endl; break;case 3: cout<<"数学平均分为:"<<t2*1.0/n1<<endl; break;case 4: cout<<"英语平均分为:"<<t3*1.0/n1<<endl; break;case 5: cout<<"地理平均分为:"<<t4*1.0/n1<<endl; break; case 6: cout<<"历史平均分为:"<<t5*1.0/n1<<endl; break; case 7: cout<<"退出统计"; y=1; break;default:cout<<"输入序号错误!请重新输入"<<endl;}if(y==1){cout<<endl;break;} cout<<"请选择统计方式 0--人数 1--总平均分 2--语文平均分 3--数学平均分 4--英语平均分 5--地理平均分 6--历史平均分 7--退出统计,返回菜单"<<endl;cin>>m;}
}void StuM::menu(){readOrClear();while(1){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<<"|-------------------------------------------------------|"<<endl;int m;cout<<"输入你的选择:"<<endl;cin>>m;switch(m){case 1:find();break;case 2:insert();break;case 3:del();break;case 4:read();break;case 5:modify();break;case 6:stat();break;case 7:sort1();break;case 8:exit(1);default:cout<<"输入选项序号错误!"<<endl;}}
}
大学生板块:
StuB.h
#ifndef STUB_H
#define STUB_H
#include <string>
using namespace std;class StuB{public: StuB();//学生数据初始化和保存学生数据void input();//输入学生信息 void insert();//添加学生信息 void display();//显示学生信息 void sort1();//对学生成绩进行排序 void write();//把信息写入文件void read();//读取文件信息void readOrClear();//清空学生信息1 void modify();//修改学生信息void stat();//统计学生信息void del();//删除学生信息 void find();//查找学生信息void menu();//菜单 private:char name[20];//姓名char sex[5];//性别int number;//学号int className;//班级int total;//总分 int average;//平均分 double score[5];
};#endif
StuB.cpp
#include "StuB.h"
#include <cstring>
#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;StuB stu12[100];
int n12=0;StuB::StuB(){strcpy(name," ");strcpy(sex," ");number=0;className=0;total=0;average=0;for(int i=0;i<5;i++)score[i]=0;
}void StuB::input(){cout<<"输入学生人数:"<<endl;cin>>n12;cout<<"输入学生信息 学号 姓名 大学语文 高等数学 大学英语 程序设计 大学思修:"<<endl;for(int i=0;i<n12;i++){cin>>stu12[i].number;cin>>stu12[i].name;for(int j=0;j<5;j++){cin>>stu12[i].score[j];stu12[i].total+=stu12[i].score[j];}} cout<<"完成学生信息的输入!"<<endl;
}void StuB::insert(){int num,score1[5];char name1[20];cout<<"输入所要添加学生的学号:"<<endl;cin>>num;bool f=1;for(int i=0;i<n12;i++){if(num==stu12[i].number){cout<<"无法添加该学生 该学生信息已经存在!"<<endl;f=0;break;}}if(f){cout<<"输入姓名 大学语文 高等数学 大学英语 程序设计 大学思修:"<<endl;cin>>name>>score1[0]>>score1[1]>>score1[2]>>score1[3]>>score[4];stu12[n12].number=num;for(int p=0;p<5;p++){stu12[n12].score[p]=score1[p];stu12[n12].total+=score1[p];}strcpy(stu12[n12].name,name);cout<<"添加成功"<<endl;n12++;write();//添加后要保存到文件中}
} void StuB::display(){cout<<"输出学生信息:学号 姓名 大学语文 高等数学 大学英语 程序设计 大学思修 总成绩:"<<endl;for(int i=0;i<n12;i++){cout<<setw(16)<<stu12[i].number<<setw(8)<<stu12[i].name<<" ";for(int j=0;j<5;j++){cout<<setw(10)<<stu12[i].score[j]<<" ";}cout<<setw(11)<<stu12[i].total; cout<<endl;}
}void StuB::sort1(){cout<<"选择排序方式:1--按总成绩排序 2--按大学语文排序 3--按高等数学排序 4--按大学英语排序 5--按程序设计排序 6--按大学思修排序 7--返回菜单"<<endl; int m;cin>>m;while(1){if(m==1){for(int i=0;i<n12;i++){for(int j=0;j<n12-i-1;j++){if(stu12[j].total<stu12[j+1].total){swap(stu12[j],stu12[j+1]);}}} display(); } else if(m==2){for(int i=0;i<n12;i++){for(int j=0;j<n12-i-1;j++){if(stu12[j].score[0]<stu12[j+1].score[0]){swap(stu12[j],stu12[j+1]);}}}display(); }else if(m==3){for(int i=0;i<n12;i++){for(int j=0;j<n12-i-1;j++){if(stu12[j].score[1]<stu12[j+1].score[1]){swap(stu12[j],stu12[j+1]);}}} display();}else if(m==4){for(int i=0;i<n12;i++){for(int j=0;j<n12-i-1;j++){if(stu12[j].score[2]<stu12[j+1].score[2]){swap(stu12[j],stu12[j+1]);}}}display(); } else if(m==5){for(int i=0;i<n12;i++){for(int j=0;j<n12-i-1;j++){if(stu12[j].score[3]<stu12[j+1].score[3]){swap(stu12[j],stu12[j+1]);}}}display(); }else if(m==6){for(int i=0;i<n12;i++){for(int j=0;j<n12-i-1;j++){if(stu12[j].score[4]<stu12[j+1].score[4]){swap(stu12[j],stu12[j+1]);}}}display(); }else if(m==7){break;} else{cout<<"输入号码选项序号错误!"<<endl;}cout<<"选择排序方式:1--按总成绩排序 2--按大学语文排序 3--按高等数学排序 4--按大学英语排序 5--按程序设计排序 6--按大学思修排序 7--返回菜单"<<endl; cin>>m;}
}void StuB::write(){for(int i=0;i<n12;i++){//先按总成绩排序 再存入 for(int j=0;j<n12-i-1;j++){if(stu12[j].total<stu12[j+1].total){swap(stu12[j],stu12[j+1]);}}}ofstream outfile("dataB.dat",ios::binary);if(!outfile){cerr<<"保存学生信息时打开文件失败!"<<endl;exit(1);}cout<<"将学生信息读入文件当中....."<<endl;for(int i=0;i<n12;i++){outfile.write((char*)&stu12[i],sizeof(StuB));}outfile.close();
}void StuB::read(){ifstream infile("dataB.dat",ios::binary);if(!infile){cerr<<"读取学生信息时打开文件失败!"<<endl;exit(1);}cout<<"从文件中读取学生信息....."<<endl;int j=0;cout<<"学号 姓名 大学语文 高等数学 大学英语 程序设计 大学思修:"<<endl;while(infile.read((char*)&stu12[j],sizeof(StuB))){cout<<" "<<stu12[j].number<<" "<<stu12[j].name<<" "; for(int p=0;p<5;p++){cout<<setw(11)<<stu12[j].score[p];}cout<<endl;j++;}n12=j; //保存学生人数cout<<"学生人数为:"<<n12<<endl;infile.close();
}void StuB::readOrClear(){cout<<"是否清空文件中的学生信息?(清空/第一次录入信息 需要输入学生信息,保存到文件中 yes--清空 no--不清空 )"<<endl;string s;cin>>s;if(s=="yes"){n12=0;input();//清空后调用 输入学生信息函数write();//并将信息保存到文件中read();}if(s=="no"){read();cout<<"读取信息完毕!"<<endl;}
}void StuB::modify(){int pd=0;//判断有没有 int t;//记录位置 int num;cout<<"请输入你的学号: ";cin>>num;for(int i=0;i<n12;i++){if(stu12[i].number==num){pd=1;t=i;}}if(pd==0){cout<<"对不起,没有你要修改的学生信息"<<endl;}else{cout<<"请输入新的学号: "; cin>>stu12[t].number; cout<<" 姓名: "; cin>>stu12[t].name; cout<<"大学语文 高等数学 大学英语 程序设计 大学思修:"; for(int h=0;h<5;h++){cin>>stu12[t].score[h];stu12[t].total+=stu12[t].score[h];}write();cout<<" 修改成功 !"<<endl; }
}void StuB::del(){int num;bool f=0;cout<<"输入你要删除的学生学号:"<<endl;cin>>num;for(int i=0;i<n12;i++){if(stu12[i].number==num){cout<<"找到该学生!进行删除操作..."<<endl;for(int j=i;j<n12-1;j++){stu12[j].number=stu12[j+1].number;strcpy(stu12[j].name,stu12[j+1].name);for(int p=0;p<5;p++){stu12[j].score[p]=stu12[j+1].score[p];}}cout<<"删除成功!"<<endl;n12--;//学生人数-1f=1;break;}}if(f)write();else cout<<"不存在该学生!无法删除!"<<endl;}void StuB::find(){cout<<"选择查询方式:0--学号 1--姓名:"<<endl;int s;cin>>s;while(1){if(s==0){cout<<"输入你要查询的学号:"<<endl;int num;cin>>num;for(int i=0;i<n12;i++){if(num==stu12[i].number){cout<<"查询成功!"<<num<<"号学生信息 姓名:"<<stu12[i].name<<" ";cout<<"大学语文 高等数学 大学英语 程序设计 大学思修 总成绩:"; for(int h=0;h<5;h++){cout<<stu12[i].score[h]<<" ";} cout<<stu12[i].total; cout<<endl; }} break;}else if(s==1){cout<<"输入你要查询的学生姓名:"<<endl;char name[20];cin>>name;for(int i=0;i<n12;i++){if(strcmp(stu12[i].name,name)==0){cout<<"查询成功!"<<name<<"学生信息 学号 成绩:"<<stu12[i].number<<" ";cout<<"大学语文 高等数学 大学英语 程序设计 大学思修 总成绩:"; for(int h=0;h<5;h++){cout<<stu12[i].score[h]<<" ";} cout<<stu12[i].total; cout<<endl; }} break;}else{cout<<"输入的选项序号有误,请重新输入:"<<endl;cin>>s;}}
}void StuB::stat(){cout<<"请选择统计方式 0--人数 1--总平均分 2--语文平均分 3--数学平均分 4--英语平均分 5--程设平均分 6--思修平均分 7--退出统计,返回菜单"<<endl; double t=0,t1=0,t2=0,t3=0,t4=0,t5=0;for(int i=0;i<n12;i++){t+=stu12[i].total;t1+=stu12[i].score[0]; t2+=stu12[i].score[1]; t3+=stu12[i].score[2];t4+=stu12[i].score[3];t5+=stu12[i].score[4]; }int m;cin>>m;int y=0;while(1){switch(m){case 0: cout<<"人数为:"<<n12<<endl; break;case 1: cout<<"总平均分为:"<<t*1.0/n12<<endl; break;case 2: cout<<"语文平均分为:"<<t1*1.0/n12<<endl; break;case 3: cout<<"数学平均分为:"<<t2*1.0/n12<<endl; break;case 4: cout<<"英语平均分为:"<<t3*1.0/n12<<endl; break;case 5: cout<<"程设平均分为:"<<t4*1.0/n12<<endl; break; case 6: cout<<"思修平均分为:"<<t5*1.0/n12<<endl; break; case 7: cout<<"退出统计"; y=1; break;default:cout<<"输入序号错误!请重新输入"<<endl;}if(y==1){cout<<endl;break;} cout<<"请选择统计方式 0--人数 1--总平均分 2--语文平均分 3--数学平均分 4--英语平均分 5--程设平均分 6--思修平均分 7--退出统计,返回菜单"<<endl;cin>>m;}
}void StuB::menu(){readOrClear();while(1){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<<"|-------------------------------------------------------|"<<endl;int m;cout<<"输入你的选择:"<<endl;cin>>m;switch(m){case 1:find();break;case 2:insert();break;case 3:del();break;case 4:read();break;case 5:modify();break;case 6:stat();break;case 7:sort1();break;case 8:exit(1);default:cout<<"输入选项序号错误!"<<endl;}}
}
你可能已经看出来了,没错小,中,大学生其实是一样的,本人水平较低~~~。
OK,就这样,希望对你有用。
第一次做学年设计 学生成绩管理系统相关推荐
- MFC课程设计 --学生成绩管理系统
MFC课程设计 ,C++课程设计 --学生成绩管理系统 ps:因为课设完成的过程大家都不太一样,以下的代码仅供学习一下在MFC下各个控件的用法,有问题欢迎留言讨论. 实验目的 使用MFC类库编制应用程 ...
- c语言课程设计查找分数与删除元素,c语言课程设计学生成绩管理系统
<c语言课程设计学生成绩管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计学生成绩管理系统(31页珍藏版)>请在人人文库网上搜索. 1.河南理工大学计算机科学与技术学院 ...
- C语言学生成绩管理设计总结,C语言课程设计学生成绩管理系统个人总结
C语言课程设计学生成绩管理系统个人总结 C语言课程设计--学生成绩管理系统 个人心得体会 (徐州工程学院 14计嵌1班 07组 张凯) 这一周以来的课程设计,不仅让我明白了C语言的确是一门很有用的,但 ...
- C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码
<C语言课程设计学生成绩管理系统+源码>由会员分享,可在线阅读,更多相关<C语言课程设计学生成绩管理系统+源码(25页珍藏版)>请在人人文库网上搜索. 1.简易教学管理系统的设 ...
- 课程设计——学生成绩管理系统 C语言
课程设计--学生成绩管理系统 基本要求: 1.程序功能 编程实现一个基础的成绩管理系统. 2.设计目的 通过本程序综合掌握结构体类型.指针.函数.文件等知识的综合使用. 3.功能要求(可扩充功能) ( ...
- c语言学生成绩管理系统课设作业,C语言课程设计——学生成绩管理系统
摘 要 学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来人们使用传统人工的方式 ...
- 大一上学期C++课程设计——学生成绩管理系统(QT项目)
这里是一个大一的萌新!仅做学习分享 工程文件在评论区置顶!! 近期整理了一下大一上学期的课程设计报告作为学习总结,使用的软件是Qt Creator,主界面效果如下图 ----------以下为课程设计 ...
- 学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计
记一次课程设计作业 学生成绩管理系统#include #include #include #include /* 学生成绩管理系统介绍 2017C语言课程设计 202160936 1.支持将数据保存 ...
- 按课程查询学生成绩C语言,C语言课程设计学生成绩管理系统
1. 设计目标 设计一个简单的学生成绩管理系统,系统要解决成绩录入.计算学分和平均分成绩排名和成绩查询等几个方面. 主要功能分为四部分: ① 提供成绩录入界面. ② 统计每个学生的总分和平均分. ③ ...
最新文章
- java精确浮点型小数,java练习 计算n位可被浮点数精确表示的小数
- 实战生产环境:kubeadmin安装1.13.3最新版k8s集群教程
- python 面向对象编程 之 上下文管理协议
- ASP.NET MVC Beta 新特性之 IValueProvider
- python时间序列画图_简洁的Python时间序列可视化实现
- Mac下下载android4.2源码,进行源码调试
- C/C++学习之路: 模板和异常
- DotNetCore 3.0 助力 WPF本地化
- netflix_Netflix的Polynote
- 【学习总结】Markdown 使用的正确姿势
- firstchild.data与childNodes[0].nodeValue意思
- mysql数据库工程师考证题_100道MySQL常见面试题总结
- Spring之注入集合值
- 阿里代码规范插件安装和使用技巧
- 全面对战LILO 和 GRUB
- jdk版本升级、技术选型
- java日志体系分析
- selenium操作各种浏览器
- 仓库搬仓实施过程参考
- python手机摄像头投测距_python opencv单目测距 小孔成像原理