学生信息管理系统源代码:#include<iostream.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<iomanip.h>#include<fstream.h>struct student{char num[30]; int maths;char name[30]; int chinese;char clas[30]; int english;int total; float average;student *next;};//◆1(1)void createlist(student * & head) //学生成绩文件导入功能(用链表储存) {char t[80],num0[30],name0[30],clas0[30];int chinese0,maths0,english0;student *s,*p;ifstream instuf("student-score.txt",ios::in);if (!instuf) {cerr<<"file could not be open."<<endl; abort();}instuf.getline(t,80);while (instuf>>num0>>name0>>clas0>>chinese0>>maths0>>english0){s=new student;strcpy(s->num,num0);strcpy(s->name,name0);strcpy(s->clas,clas0);s->chinese=chinese0;s->maths=maths0;s->english=english0;s->total=s->chinese+s->maths+s->english; s->average=float(s->total)/3;if (head==NULL) head=s;else p->next=s;p=s;}p->next=NULL;instuf.close();//◆1(2)void showlist(student *head) //学生成绩信息显示功能(遍历链表){int n=1;cout<<"学号姓名班级语文数学英语总分均分序号 ";while (head){cout<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<'\t'<<""<<n< <endl;n=n+1;head=head->next;}}//◆2void charu(student *head) //学生成绩信息插入功能(链表尾部插入学生成绩信息){student *s,*p,*q;int n,i;cout<<"请输入需要【插入】的学生成绩信息的数量: ";cin>>n;cout<<"请输入需插入的学生成绩信息(每人一行):"<<endl;cout<<"学号姓名班级语文数学英语"<<endl;p=head;while (p){q=p;p=p->next;}for (i=1;i<=n;i++){s=new student;cin>>s->num>>s->name>>s->clas>>s->chinese>>s->maths>>s->english;s->total=s->chinese+s->maths+s->english; s->average=float(s->total)/3;q->next =s;q=s;}q->next=NULL;}//◆3void shanchu(student * & head) //学生成绩信息删除功能{student *p,*q;char a[30];int n,i,b=1;cout<<"请输入需【删除】的学生成绩信息的数量: ";cin>>n;cout<<"请输入需要删除的学生的学号或姓名:"<<endl;for (i=1;i<=n;i++){cin>>a;if ((strcmp(head->num,a)==0)||(strcmp(head->name,a)==0)){b=0;p=head;head=head->next;delete p;p=NULL;}else{p=head;while ((p->next!=NULL)&&(strcmp(p->next->num,a)!=0)&&(strcmp(p->next->name,a)!=0)) {p=p->next;}if (p->next!=NULL){b=0;q=p->next;p->next=q->next;delete q;q=NULL;}}}if (b==1) cout<<"无此学号或姓名的成绩记录!"<<endl;}//◆4void change(student *head) //学生成绩信息的修改功能(修改指定学生信息){char a[30];int b=1;cout<<"请输入您要【修改】的学生的学号或姓名: ";cin>>a;while (head){if ((strcmp(head->num,a)==0)||(strcmp(head->name,a)==0)){cout<<""<<endl;b=0;cout<<"此学生原来的学生成绩信息是:"<<endl;cout<<"学号姓名班级语文数学英语"<<endl;cout<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<endl;cout<<"请输入修改后的学生成绩信息:"<<endl;cout<<"学号姓名班级语文数学英语"<<endl;cin>>head->num>>head->name>>head->clas>>head->chinese>>head->maths>>head->english;head->total=head->chinese+head->maths+head->english; head->average=float(head->total)/3;}head=head->next;}if (b==1) cout<<"无此学号或姓名的成绩记录!"<<endl;}//◆5(1)void geren(student *head) //查询个人成绩功能{char a[30];int b=1;cout<<"请输入您要【查询】的学生的学号或姓名: ";cin>>a;cout<<"此学生的学生成绩信息是:"<<endl;cout<<"学号姓名班级语文数学英语总分均分"<<endl;while (head){if ((strcmp(head->num,a)==0)||(strcmp(head->name,a)==0)){b=0;cout<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<endl; }head=head->next;}if (b==1) cout<<"无此学号或姓名的成绩记录!"<<endl;}//◆5(2)void chabanji(student *head) //查询班级成绩功能{char a[30];int b=1;cout<<"请输入您要查询成绩的【班级】的名称: ";cin>>a;cout<<"此班级的学生成绩信息是:"<<endl;cout<<"学号姓名班级语文数学英语总分均分"<<endl;while (head){if (strcmp(head->clas,a)==0){b=0;cout<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<endl; }head=head->next;}if (b==1) cout<<"无此班级的成绩记录!"<<endl;}//◆5(3)void chayuwen(student *head) //查询语文成绩功能{int h,l,b=1;cout<<"请输入您要查询的【语文】成绩的分数段: "<<endl;cout<<"起始分终止分"<<endl;cin>>l; cin>>h;cout<<"此分数段的学生语文成绩信息是:"<<endl;cout<<"学号姓名班级语文数学英语总分均分"<<endl;while (head){if ((head->chinese>=l)&&(head->chinese<=h)){b=0;cout<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<endl; }head=head->next;}if (b==1) cout<<"无此分数段的语文成绩记录!"<<endl;}//◆5(4)void chashuxue(student *head) //查询数学成绩功能{int h,l,b=1;cout<<"请输入您要查询的【数学】成绩的分数段: "<<endl;cout<<"起始分终止分"<<endl;cin>>l; cin>>h;cout<<"此分数段的学生数学成绩信息是:"<<endl;cout<<"学号姓名班级语文数学英语总分均分"<<endl;while (head){if ((head->maths>=l)&&(head->maths<=h)){b=0;cout<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<endl; }head=head->next;}if (b==1) cout<<"无此分数段的数学成绩记录!"<<endl;}//◆5(5)void chayingyu(student *head) //查询英语成绩功能{int h,l,b=1;cout<<"请输入您要查询的【英语】成绩的分数段: "<<endl;cout<<"起始分终止分"<<endl;cin>>l; cin>>h;cout<<"此分数段的学生英语成绩信息是:"<<endl;cout<<"学号姓名班级语文数学英语总分均分"<<endl;while (head){if ((head->english>=l)&&(head->english<=h)){b=0;cout<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<endl; }head=head->next;}if (b==1) cout<<"无此分数段的英语成绩记录!"<<endl;}//◆5(6)void chazongfen(student *head) //查询总分成绩功能{int h,l,b=1;cout<<"请输入您要查询的【总分】成绩的分数段: "<<endl;cout<<"起始分终止分"<<endl;cin>>l; cin>>h;cout<<"此分数段的学生总分成绩信息是:"<<endl;cout<<"学号姓名班级语文数学英语总分均分"<<endl;while (head){if ((head->total>=l)&&(head->total<=h)){b=0;cout<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<endl; }head=head->next;}if (b==1) cout<<"无此分数段的总分成绩记录!"<<endl;}//◆6(1)void yuwen(student *head) //按语文成绩从高到低排序功能{student *p,*q;char a[30];int b;float c;p=head;while (p){q=p->next;while (q)if (p->chinese<q->chinese){strcpy(a,p->num);strcpy(p->num,q->num);strcpy(q->num,a);strcpy(a,p->name);strcpy(p->name,q->name);strcpy(q->name,a); strcpy(a,p->clas);strcpy(p->clas,q->clas);strcpy(q->clas,a); b=p->chinese;p->chinese=q->chinese;q->chinese=b;b=p->maths;p->maths=q->maths;q->maths=b;b=p->english;p->english=q->english;q->english=b;b=p->total;p->total=q->total;q->total=b;c=p->average;p->average=q->average;q->average=c;}q=q->next;}p=p->next;}}//◆6(2)void shuxue(student *head) //按数学成绩从高到低排序功能{student *p,*q;char a[30];int b;float c;p=head;while (p){q=p->next;while (q){if (p->maths<q->maths){strcpy(a,p->num);strcpy(p->num,q->num);strcpy(q->num,a);strcpy(a,p->name);strcpy(p->name,q->name);strcpy(q->name,a); strcpy(a,p->clas);strcpy(p->clas,q->clas);strcpy(q->clas,a); b=p->chinese;p->chinese=q->chinese;q->chinese=b;b=p->maths;p->maths=q->maths;q->maths=b;b=p->english;p->english=q->english;q->english=b;b=p->total;p->total=q->total;q->total=b;c=p->average;p->average=q->average;q->average=c;}q=q->next;p=p->next;}}//◆6(3)void yingyu(student *head) //按英语成绩从高到低排序功能{student *p,*q;char a[30];int b;float c;p=head;while (p){q=p->next;while (q){if (p->english<q->english){strcpy(a,p->num);strcpy(p->num,q->num);strcpy(q->num,a);strcpy(a,p->name);strcpy(p->name,q->name);strcpy(q->name,a); strcpy(a,p->clas);strcpy(p->clas,q->clas);strcpy(q->clas,a); b=p->chinese;p->chinese=q->chinese;q->chinese=b;b=p->maths;p->maths=q->maths;q->maths=b;b=p->english;p->english=q->english;q->english=b;b=p->total;p->total=q->total;q->total=b;c=p->average;p->average=q->average;q->average=c;}q=q->next;}p=p->next;}}//◆6(4)void zongfen(student *head) //按总分成绩从高到低排序功能{student *p,*q;char a[30];int b;float c;p=head;while (p){q=p->next;while (q){if (p->total<q->total){strcpy(a,p->num);strcpy(p->num,q->num);strcpy(q->num,a);strcpy(a,p->name);strcpy(p->name,q->name);strcpy(q->name,a); strcpy(a,p->clas);strcpy(p->clas,q->clas);strcpy(q->clas,a); b=p->chinese;p->chinese=q->chinese;q->chinese=b;b=p->maths;p->maths=q->maths;q->maths=b;b=p->english;p->english=q->english;q->english=b;b=p->total;p->total=q->total;q->total=b;c=p->average;p->average=q->average;q->average=c;}q=q->next;}p=p->next;}}//◆7void xuehao(student *head) //按学号从小到大排序功能{student *p,*q;char a[30];int b;float c;p=head;while (p){q=p->next;while (q){if (strcmp(p->num,q->num)>0){strcpy(a,p->num);strcpy(p->num,q->num);strcpy(q->num,a);strcpy(a,p->name);strcpy(p->name,q->name);strcpy(q->name,a); strcpy(a,p->clas);strcpy(p->clas,q->clas);strcpy(q->clas,a); b=p->chinese;p->chinese=q->chinese;q->chinese=b;b=p->maths;p->maths=q->maths;q->maths=b;b=p->english;p->english=q->english;q->english=b;b=p->total;p->total=q->total;q->total=b;c=p->average;p->average=q->average;q->average=c;}q=q->next;}p=p->next;}}//◆8void xingming(student *head) //按姓名首字母排序功能{student *p,*q;char a[30];int b;float c;p=head;while (p){q=p->next;while (q){if (strcmp(p->name,q->name)>0){strcpy(a,p->num);strcpy(p->num,q->num);strcpy(q->num,a);strcpy(a,p->name);strcpy(p->name,q->name);strcpy(q->name,a); strcpy(a,p->clas);strcpy(p->clas,q->clas);strcpy(q->clas,a); b=p->chinese;p->chinese=q->chinese;q->chinese=b;b=p->maths;p->maths=q->maths;q->maths=b;b=p->english;p->english=q->english;q->english=b;b=p->total;p->total=q->total;q->total=b;c=p->average;p->average=q->average;q->average=c;}q=q->next;}p=p->next;}}//◆9void banji(student *head) //按班级的类别排序功能{student *p,*q;char a[30];int b;float c;p=head;while (p){q=p->next;while (q){if (strcmp(p->clas,q->clas)>0){strcpy(a,p->num);strcpy(p->num,q->num);strcpy(q->num,a);strcpy(a,p->name);strcpy(p->name,q->name);strcpy(q->name,a);strcpy(a,p->clas);strcpy(p->clas,q->clas);strcpy(q->clas,a);b=p->chinese;p->chinese=q->chinese;q->chinese=b;b=p->maths;p->maths=q->maths;q->maths=b;b=p->english;p->english=q->english;q->english=b;b=p->total;p->total=q->total;q->total=b;c=p->average;p->average=q->average;q->average=c;}q=q->next;}p=p->next;}}//◆10void show(student *head,char *s) //学生成绩信息文件导出功能{int n=1;ofstream outstuf;outstuf.open(s,ios::out);if (!outstuf) {cerr<<"file could not be open."<<endl; abort();}outstuf<<"学号姓名班级语文数学英语总分均分序号"<<endl;while (head){outstuf<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t' <<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<'\t'<<""<<n<<endl;n=n+1;head=head->next;}outstuf.close();}void main(){student *head=NULL;int n;char s[30];cout<<"********************************************************************************"; cout<<"* ★欢迎使用学生成绩管理系统★ *"; cout<<"* 管理员: XXX *"; cout<<"* 请选择您想使用的功能: *"; cout<<"* 功能名请输入功能名请输入 *"; cout<<"* ◆导入学生成绩文件 1 ◆按学号小到大排序 7 *"; cout<<"* ◆插入学生成绩信息 2 ◆按姓名首字母排序 8 *"; cout<<"* ◆删除学生成绩信息 3 ◆按班级的类别排序 9 *"; cout<<"* ◆修改学生成绩信息 4 ◆导出学生成绩文件 10 *"; cout<<"* ◆查询学生成绩信息 5 ◆其它功能...... *"; cout<<"* ◆按成绩高到低排序 6 ◆退出管理系统 0 *"; cout<<"********************************************************************************"; cout<<"您的输入是: ";cin>>n;createlist(head);while (n>0){switch (n){case 1:cout<<"导入的需管理的学生成绩信息表:"<<endl;showlist(head);break;case 2:charu(head);cout<<"插入后的学生成绩信息表:"<<endl;showlist(head);break;case 3:shanchu(head);cout<<"删除后的学生成绩信息表:"<<endl;showlist(head);break;case 4:change(head);cout<<"修改后的学生成绩信息表:"<<endl;showlist(head);break;case 5:cout<<"请选择查询学生成绩的方式:"<<endl;cout<<" 方式请输入方式请输入 "<<endl; cout<<" ●查询个人成绩 1 ●查询数学成绩 4 "<<endl; cout<<" ●查询班级成绩 2 ●查询英语成绩 5 "<<endl; cout<<" ●查询语文成绩 3 ●查询总分成绩 6 "<<endl; cout<<"您的输入是: ";cin>>n;switch (n){case 1:geren(head);break;case 2:zongfen(head);chabanji(head);break;case 3:yuwen(head);chayuwen(head);break;case 4:shuxue(head);chashuxue(head);break;case 5:yingyu(head);chayingyu(head);break;case 6:zongfen(head);chazongfen(head);break;}break;case 6:cout<<"请选择需排序的成绩的类型:"<<endl;cout<<" 类型请输入类型请输入 "<<endl; cout<<" ●按语文成绩排序 1 ●按英语成绩排序 3 "<<endl; cout<<" ●按数学成绩排序 2 ●按总分成绩排序 4 "<<endl; cout<<"您的输入是: ";cin>>n;switch (n){case 1:yuwen(head);cout<<"按【语文】成绩排序后的学生成绩信息表:"<<endl;showlist(head);break;case 2:shuxue(head);cout<<"按【数学】成绩排序后的学生成绩信息表:"<<endl;showlist(head);break;case 3:yingyu(head);cout<<"按【英语】成绩排序后的学生成绩信息表:"<<endl;showlist(head);break;case 4:zongfen(head);cout<<"按【总分】成绩排序后的学生成绩信息表:"<<endl;showlist(head);break;}break;case 7:xuehao(head);cout<<"按【学号】从小到大排序后的学生成绩信息表:"<<endl;showlist(head);break;case 8:xingming(head);cout<<"按【姓名】首字母排序后的学生成绩信息表:"<<endl;showlist(head);break;case 9:banji(head);cout<<"按【班级】的类别排序后的学生成绩信息表:"<<endl;showlist(head);break;case 10:cout<<"请选择需导出的学生成绩数据文件的内容:"<<endl;cout<<" 内容请输入内容请输入 "; cout<<" ●按总分成绩排序的成绩表 1 ●按姓名首字母排序的成绩表 3 "; cout<<" ●按学号大小排序的成绩表 2 ●按班级分类别排序的成绩表 4 "; cout<<"您的输入是: ";cin>>n;switch (n){case 1:zongfen(head);cout<<" 按【总分】成绩排序的成绩表已导出"<<endl;cout<<" 在生成的 total-sort.txt 文件中"<<endl;cout<<" 请注意查看!"<<endl;strcpy(s,"total-sort.txt");show(head,s);break;case 2:xuehao(head);cout<<" 按【学号】大小排序的成绩表已导出"<<endl;cout<<" 在生成的 number-sort.txt 文件中"<<endl;cout<<" 请注意查看!"<<endl;strcpy(s,"number-sort.txt");show(head,s);break;case 3:xingming(head);cout<<" 按【姓名】首字母排序的成绩表已导出"<<endl;cout<<" 在生成的 name-sort.txt 文件中"<<endl;cout<<" 请注意查看!"<<endl;strcpy(s,"name-sort.txt");show(head,s);break;case 4:banji(head);cout<<" 按【班级】分类排序的成绩表已导出"<<endl;cout<<" 在生成的 class-sort.txt 文件中"<<endl;cout<<" 请注意查看!"<<endl;strcpy(s,"class-sort.txt");show(head,s);break;}break;}cout<<"继续操作请按回车键!"<<endl;cgets(s);cout<<endl<<endl<<endl;cout<<"********************************************************************************";cout<<"* ★欢迎使用学生成绩管理系统★ *";cout<<"* 管理员: XXX *";cout<<"* 请选择您想使用的功能: *";cout<<"* 功能名请输入功能名请输入 *";cout<<"* ◆导入学生成绩文件 1 ◆按学号小到大排序 7 *";cout<<"* ◆插入学生成绩信息 2 ◆按姓名首字母排序 8 *";cout<<"* ◆删除学生成绩信息 3 ◆按班级的类别排序 9 *";cout<<"* ◆修改学生成绩信息 4 ◆导出学生成绩文件 10 *";cout<<"* ◆查询学生成绩信息 5 ◆其它功能...... *";cout<<"* ◆按成绩高到低排序 6 ◆退出管理系统 0 *";cout<<"********************************************************************************";cout<<"您的输入是: ";cin>>n;}cout<<endl<<" 您所使用的功能已完成,谢谢使用!"<<endl; cout<<" 欢迎再次使用!"<<endl<<endl;}。