学生成绩管理程序设计报告_第1页
学生成绩管理程序设计报告_第2页
学生成绩管理程序设计报告_第3页
学生成绩管理程序设计报告_第4页
学生成绩管理程序设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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,) 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,) 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;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输入有误,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论