1、C+学生成绩管理系统要求用C+语言编写学生成绩管理系统,要求能进行添加删除修改输入输出等的操作,并能使用面相对像原理对此系统进行实现。学生成绩管理系统分析:学生成绩管理系统分为8个模块,分别是:添加学生信息,输出学生成绩,查找学生成绩,修改学生成绩,删除学生成绩,学生成绩排序,保存数据到文件和读取文件中学生成绩的模块。学生成绩管理系统结构:Main()函数Menu()函数Student()Add()Output()Find()Modify()Deleted()Sort()Save()Load()重载符号Student类私有成员:char name20; char sex5; int numbe
2、r; int score3; int total; int average;公有函数各个子函数功能及其流程:1. 首先定义一个学生类Class Student;并定义其各个私有变量和公有函数Class Studentload重载Classaddoutputfinddeletemodifysave私有变量2. Student();构造函数,用于初始化学生类中的各个变量并记录3. Add();函数:用于添加学生信息的函数包括学号姓名成绩等的内容主函数main()菜单函数menu()选择菜单中的选项添加学生信息调用Add()函数调用重载并添加信息4. Output();函数:用于输出学生信息,包括学
3、号姓名各科及总分平均成绩主函数main()菜单函数menu()选择菜单中的选项输出学生信息调用Output()函数输出学生信息5. Find();函数:用于查找学生各项信息。主函数main()菜单函数menu()选择菜单中的选项查找学生信息调用find()函数查找并输出学生信息要求输入学生姓名6. modify();函数:用于修改学生各项信息。主函数main()菜单函数menu()选择菜单中的选项修改学生信息调用modify()函数修改并保存学生信息要求输入学生姓名7. delete();函数:用于删除学生信息。主函数main()菜单函数menu()选择菜单中的选项删除学生信息调用delete
4、()函数删除学生信息要求输入学生姓名8.sort();函数:对学生各项信息进行排序操作。主函数main()菜单函数menu()选择菜单中的选项学生信息排序调用Sort()函数完成排序操作8. save()和load();函数:将学生信息保存到文件中,并在需要的时候调用该文件将其中的学生信息显示出来 主函数main()菜单函数menu()选择菜单中的选项选保存或读取调用load()函数文件读取成功调用save()函数按要求输入文件名文件保存成功9.“=”“”符号的重载:在各个函数处理数据过程中对这些的调用处理函数源代码:此函数源代码在VisualC+6.0环境下编译通过。具体如下:#includ
5、eiostream.h #includeconio.h #includeiomanip.h #includestdio.h #includestring.h #includestdlib.h #includefstream.h class student /定义学生类 char name20; /名字char sex5; /性别int number; /学号int score3; /分数int total; /总分int average; /平均分 public: /公有成员student(); /学生构造函数,用于学生数据的初始化及保存学生数据void add(); /添加学生信息函数voi
6、d output(); /输出学生信息函数void find(); /查找学生数据函数void modify(); /修改学生信息函数void deleted(); /删除学生信息函数void sort(); /排序函数void save(); /保存学生信息并写入文件函数void load (); /打开写有学生信息的文件的函数student & operator=(student & T); /重载“=”符号friend istream & operator (istream & scin, student &s1); /重载“”符号friend ostream & operator ”符
7、号; student stu100; int n=0;void student:add() /添加函数 char flag=Y; while(toupper(flag)=Y) cinstun; n+; coutflag; if(toupper(flag)!=Y) if(toupper(flag)=N) break; else coutflag; void student:output() /输出函数 if(n!=0) cout -n; cout number name sex math C+ English total averagen; cout - n; for(int t=0;tn;t+
8、) coutstut; getch(); void student:find() /查找函数 int f3=0; char n120; student temp; coutn1; for(int j=0;jn;j+) if(strcmp(stuj.name,n1)=0) temp=stuj; f3=1; if(f3=0) cout对不起,没有你要查找的学生成绩endl; else cout -n; cout number name sex math C+ English total averagen; cout - n; cout temp.number temp.name temp.sex
9、temp.score0 temp.score1 temp.score2 temp.total temp.averageendl; getch(); void student:modify() /修改函数 int f4=0; int t; char n250; coutn2; for(int j=0;jn;j+) if(strcmp(stuj.name,n2)=0) t=j; f4=1; if(f4=0) cout对不起,没有你要修改的学生成绩endl; else coutstut.number; coutstut.name; coutstut.sex; coutstut.score0; cou
10、tstut.score1; coutstut.score2; stut.total=stut.score0+stut.score1+stut.score2; stut.average=stut.total/3; cout 修改成功 !endl; getch(); void student:deleted() /删除函数 char n320; bool f5=0; char c; do coutn3; for(int i=0;in;i+) if(strcmp(n3,stui.name)=0) f5=1; n-; do stui=stui+1; i+; while(i=n); if(f5=0) c
11、out您要求删除的对象本来就不存在!; cout要继续删除吗?(y/n)c; if(toupper(c)!=Y&toupper(c)!=N) cout输入指令错误!请重新输入Y或N!c; while(toupper(c)=Y); getch(); void student:sort() /排序函数 int i,j,k; student s3; for( i=0;i(n-1);i+) k=i; for(j=i+1;jstui.average)k=j; if(k!=i) s3=stui; stui=stuk; stuk=s3; coutnn排序成功!nn; void student:save()
12、/保存函数 char filename120;coutfilename1; ofstream fout(filename1,ios:app); if(!fout)cout文件不能打开!endl; else for(int i=0;in;i+) fout stui.name stui.sex stui.number stui.score0 stui.score1 stui.score2 stui.total stui.average ; cout保存成功!endl; fout.close(); getch(); void student:load() /读取函数 char filename220
13、; coutfilename2; ifstream fin(filename2,ios:in); if(!fin)cout文件打不开 !stui.namestui.sexstui.number stui.score0stui.score1stui.score2stui.totalstui.average; cout文件已读取成功!endl; fin.close(); getch(); student & student:operator=(student & T) /重载= strcpy(name,T.name); strcpy(sex,T.sex); number=T.number; for
14、(int i=0;i3;i+)scorei=T.scorei; total=T.total; average=T.average; return ( * this ); ostream & operator (ostream & scout, student &s2) /重载 coutsetw(6)s2.numbersetw(10)s2.namesetw(8)s2.sexsetw(8)s2.score0 setw(8)s2.score1setw(10)s2.score2setw(10)s2.totalsetw(8)s2.average (istream & scin,student &s1)
15、/重载 couts1.number; couts1.name; couts1.sex; couts1.score0; couts1.score1; couts1.score2; s1.total=s1.score0+s1.score1+s1.score2; s1.average=s1.total/3; return scin; student:student() /构造函数 strcpy(name, ); strcpy(sex, ); number=0; for(int i=0;i3;i+)scorei=0; total=0; average=0; void menu() /菜单函数 cout
16、nnn学生成绩管理系统主菜单 endl; coutnnn1.添加学生信息 endl; cout2.输出学生信息 endl; cout3.查找学生信息 endl; cout4.修改学生信息 endl; cout5.删除学生信息 endl; cout6.学生信息排序 endl; cout7.保存数据 endl; cout8.读出数据 endl; cout9.退出系统 endl; coutchoose; switch(choose) case 1: s.add(); break; case 2: s.output(); break; case 3: s.find(); break; case 4: s.modify(); break; case 5: s.deleted(); break; case 6: s.sort(); break; case 7: s.save(); break; case 8: s.load(); break; default : break; while(choose!=0);
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100