学生成绩管理程序设计报告.doc

上传人:文库蛋蛋多 文档编号:3804139 上传时间:2023-03-22 格式:DOC 页数:21 大小:233.50KB
返回 下载 相关 举报
学生成绩管理程序设计报告.doc_第1页
第1页 / 共21页
学生成绩管理程序设计报告.doc_第2页
第2页 / 共21页
学生成绩管理程序设计报告.doc_第3页
第3页 / 共21页
学生成绩管理程序设计报告.doc_第4页
第4页 / 共21页
学生成绩管理程序设计报告.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《学生成绩管理程序设计报告.doc》由会员分享,可在线阅读,更多相关《学生成绩管理程序设计报告.doc(21页珍藏版)》请在三一办公上搜索。

1、HUNAN UNIVERSITY程序设计训练报告题目 学生成绩管理 学生姓名 张烨学生学号 201208010426专业班级 计科四班学院名称 信息科学与工程学院指导老师 李丽娟 2013 年7 月 9 日程序功能简介: 此程序可以从文件读取学生成绩,并按照文件排列方式显示。 此程序可以增加,查询,修改,保存学生成绩。 此程序可以根据科目成绩,总成绩,学号排列显示学生成绩。设计方案:l 设计分析; 设计程序时,首先把学生成绩构成一个类,然后把学号,姓名,科目成绩,总成绩构成结构体。随后读取学生成绩,因为文件有表头,故要从第二行开始读取,并将读取的数据保存。l 模块的功能及程序说明 由查询,修改

2、,增加,默认排列,按要求排列,保存这六个模块组成。(程序说明见附录程序)l 核心算法流程图核心源程序模块; 查询学生信息按要求排列l 核心源程序模块n 查找学生成绩: case 1: /按学号查找coutnumber; for(i=0;icount;i+) if(number=stui.n) cout已查询到该学生:nn; cout学号t姓名t数学t语文t英语t总分n; stui.showme(); goto end2; /如果找到该学号,则跳过没有找到的。 cout没有找到该学号!; case 2: /按姓名查找 coutmizi;for(i=0;icount;i+)if(!strcmp(m

3、izi,stui.name) cout已查询到该学生:nn; cout学号t姓名t数学t语文t英语t总分n; stui.showme(); goto end2; /如果找到该名字,则跳过没有找到的。 cout没有找到该名字!;else system(cls); cout输入有误,请重新选择!endl; end2:coutn;n 按要求排列显示:case 1: /按总分排列 student tem1;for(int a1=0;a1=1;b1-)if(stub1-1.sstub1.s)tem1=stub1-1;stub1-1=stub1;stub1=tem1; cout排名t学号t姓名t数学t语文

4、t英语t总分n;for( a1=0;a1count;a1+)couta1+1t; stua1.showme();break;l 实验结果l 操作方法简介; 根据提示输入数字,字母,学生信息。 l 设计体会。 设计了这个程序后,我又知道了一些运用的技巧,例如:如何从第二行读取数据,读取错误时如何清除错误继续读取等等。我了解了许多,也从发现困难,解决困难中体会到难以言喻的快乐和兴奋。附录;程序中主要变量、自定义函数的功能说明void showstu(); /按默认显示所有学生void resetstu(); /修改学生成绩void sortstu(); /查找学生void addstu(); /增

5、加学生void arrangestu();/排序显示void savestu(); /保存信息int n;char name20;float m; /数学成绩float c; /语文成绩float e; /英语成绩float s; /总成绩int count; /学生人数源程序代码:#include#include#include #include#includeusing namespace std;void showstu(); /按默认显示所有学生void resetstu(); /修改学生成绩void sortstu(); /查找学生void addstu(); /增加学生void a

6、rrangestu();/排序显示void savestu(); /保存信息class studentpublic: int n;char name20;float m;float c;float e;float s;void set(char*Name,float M,float C,float E,float N)strcpy(name,Name);n=N;m=M;c=C;e=E;s=m+c+e;void showme()coutntnametmtctetsendl;student stu100;int count;int i,j,k;float N,M,C,E,S;char NAME20

7、;int main() cout欢迎进入学生成绩管理系统!n;char c,c110,c210,c310,c410,c510;ifstream infile(学生成绩.txt);if(!infile)cout打开失败!;return 1;while(infile.get(c) /计算文件中的行数得出已有学生个数if(c=n)count+; /行数加 1/cout文件中已有count个学生记录c1c2c3c4c5; for(int l=0;lNNAMEMCE;stul.set(NAME,M,C,E,N); infile.close();while(1) cout主菜单n;cout*endl;co

8、ut1.默认显示全部tt2.增加学生信息n3.修改学生信息tt4.查询学生信息n5.按要求排列显示t6.保存并退出系统n; cout*endl;couti;if(i=1)switch(i)case 1:/默认显示全部 system(cls); showstu(); system(pause); system(cls); break;case 2:/增加学生信息system(cls); addstu();system(pause);system(cls);break;case 3:/修改学生信息system(cls); resetstu(); system(pause); system(cls)

9、; break;case 4:/查询学生信息 system(cls); sortstu(); system(pause); system(cls); break;case 5:/按要求排列显示 system(cls); arrangestu(); system(pause); system(cls); break;case 6:/询问是否保存并退出系统 system(cls);coutsave;if(save=1|save=0)switch(save)case 1:savestu();system(pause);system(cls);return 0;case 0: return 0;els

10、ecout输入有误,请重新输入:endl;goto read1; /返回重新读取 else system(cls); cout输入有误,请重新选择!endl; void showstu() /按默认显示所有学生cout现有count名学生信息:n; cout学号t姓名t数学t语文t英语t总分n; for(j=0;jcount;j+)stuj.showme(); coutn;void resetstu() /修改学生成绩int num;cout请输入需要修改的学生学号:num;for(i=0;icount;i+) if(num=stui.n) cout已查询到该学生n; cout学号t姓名t数学

11、t语文t英语t总分n; stui.showme(); cout请依次输入新的学号,姓名,数学成绩,语文成绩,英语成绩:NNAMEMCE; coutendl; stui.set(NAME,M,C,E,N); goto end1; /如果找到该学号,则跳过没有找到的。 cout没有找到该学号:没有;end1: cout设置成功!n;void sortstu() /查找学生int number,v;char mizi10;cout请输入需要查询的方式n;cout1:按学号查找n;coutv;if(v=1|v=2)switch(v) case 1:coutnumber; for(i=0;icount;

12、i+) if(number=stui.n) cout已查询到该学生:nn; cout学号t姓名t数学t语文t英语t总分n; stui.showme(); goto end2; /如果找到该学号,则跳过没有找到的。 cout没有找到该学号!; case 2: coutmizi;for(i=0;icount;i+)if(!strcmp(mizi,stui.name) cout已查询到该学生:nn; cout学号t姓名t数学t语文t英语t总分n; stui.showme(); goto end2; /如果找到该名字,则跳过没有找到的。 cout没有找到该名字!;else system(cls); c

13、out输入有误,请重新选择!endl; end2:coutn;void addstu() /增加学生if(count50)k=count;count+; cout请依次输入学生学号,姓名,数学成绩,语文成绩,英语成绩:NNAMEMCE; for(i=0;icount;i+) if(N=stui.n)couti;coutifsame;if(ifsame!=y&ifsame!=n)cout输入有误,请重新输入:endl; goto read3; /返回重新输入 else if(ifsame=y)stui.set(NAME,M,C,E,N);count-; /覆盖后计数器要减小1goto end;

14、/跳过正常添加 elseif(ifsame=n) cout没有;count-; /没有设置,计数器要减小1goto end; /跳过正常添加 stuk.set(NAME,M,C,E,N);end:cout设置成功!n;elsecout记录已满endl;void arrangestu() /排序显示int kind;cout1.按总分排t2.按数学排t3.按语文排t4.按英语排t5.按学号排nkind;if(kind=1&kind=5)switch(kind)case 1: /按总分排列 student tem1;for(int a1=0;a1=1;b1-)if(stub1-1.sstub1.s

15、)tem1=stub1-1;stub1-1=stub1;stub1=tem1; cout排名t学号t姓名t数学t语文t英语t总分n;for( a1=0;a1count;a1+)couta1+1t; stua1.showme();break;case 2: /按数学成绩排列 student tem2;for(int a2=0;a2=1;b2-)if(stub2-1.mstub2.m)tem2=stub2-1;stub2-1=stub2;stub2=tem2; cout排名t学号t姓名t数学t语文t英语t总分n;for( a2=0;a2count;a2+)couta2+1t; stua2.show

16、me();break;case 3: /按语文成绩排列 student tem3;for(int a3=0;a3=1;b3-)if(stub3-1.cstub3.c)tem3=stub3-1;stub3-1=stub3;stub3=tem3; cout排名t学号t姓名t数学t语文t英语t总分n;for( a3=0;a3count;a3+)couta3+1t; stua3.showme();break;case 4: /按英语成绩排列 student tem4;for(int a4=0;a4=1;b4-)if(stub4-1.estub4.e)tem4=stub4-1;stub4-1=stub4

17、;stub4=tem4; cout排名t学号t姓名t数学t语文t英语t总分n;for( a4=0;a4count;a4+)couta4+1t; stua4.showme();break;case 5: /按学号排列 student tem5;for(int a5=0;a5=1;b5-)if(stub5-1.nstub5.n)tem5=stub5-1;stub5-1=stub5;stub5=tem5; cout学号t姓名t数学t语文t英语t总分=0;a5-) stua5.showme();break; else cout输入有误,请重新操作:; goto read2; /返回重新输入 void savestu() /对修改进行保存ofstream outfile(学生成绩.txt); outfile学号t姓名t数学t语文t英语n; for(int NEW=0;NEWcount-1;NEW+) outfilestuNEW.ntstuNEW.nametstuNEW.mtstuNEW.ctstuNEW.en; outfilestucount-1.ntstucount-1.nametstucount-1.mtstucount-1.ctstucount-1.e;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号