




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+课程设计学生成绩统计管理系统姓名:钱进飞学号:099074152班级:软091学院:计算机学院指导老师:柯栋梁完成日期:2011年1月1号目录一、需求分析21、功能需求分析.22、方法需求分析2二、课程设计目的2三课程设计目标21、基本功能22、扩展功能2四类层次图 3五、程序实现思路31、类的创建32、功能实现33、函数4六、源程序4七、调试程序14八、课程设计心得18一、需求分析1、功能需求分析学生成绩统计管理系统主要有4个大的模块:学生成绩从文件读入和写入,学生成绩的输入和删除,学生成绩信息的查询,以及学生成绩的汇总2、方法需求分析总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。也可根据自己对题目的理解增加新的功能模块。系统以菜单界面方式工作,演示程序以用户和计算机的对话方式进行。二、课程设计目的目标是使学生了解可视化程序设计语言的基础知识,掌握面向对象编程的分析设计方法,以及与面向对象技术相关的一些软件开发技术,掌握在 VisualC+6环境下进行可视化程序设计技术。通过设计一个学生成绩统计管理,进一步熟悉C+中类的概念、基本知识和技能,类的封装、继承的实现方式。掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。三课程设计目标1、基本功能:1)资料的输入(学号、姓名、地址、性别、英语、数学、C+语言);2)资料统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例);3)总资料统计(学生的总成绩、平均成绩及成绩排名);4)资料的统计结果用表格显示。2、扩展功能:1)学生数据的添加、修改、与删除;2)学生数据的读取与储存。3.总体设计,要有一个菜单,有于选择各项功能,其中(1)新建学生名单:输入各种数据;(2)读取学生成绩:读取到二进制文件中;(3)添加学生成绩(4)删除学生成绩(5)修改学生资料:学号、姓名、性别、地址、各科成绩;(6)单人资料查询:学生的各种资料;(7)成绩统计(8)总成绩统计(9)存储学生资料:存储到二进制文件.(10)退出程序;四类层次图 English class student maths sum 公有成员 c+ numbername成员函数 double add() 数据成员 sexaddress五、程序实现思路:1)类的创建 创建一个学生类student,它有八个公有成员,分别是:number、name、sex、math、English、C+、sum,分别表示学生学号、姓名、数学成绩、英语成绩、C+成绩。2)功能实现 利用菜单实现所需功能,每个功能的实现调用一个函数,共有12个函数,分别是void list()、void newstu()、void infile()、void add()、void del()、void xiugai()、void see_grade()、void tongji()、void totaltongji()、void outfile()、void lei()、void restart()。这些函数的含义分别是设置菜单(可以调用它里面的12个函数)、新建学生名单、读取学生资料、添加学生资料、删除学生资料、修改学生资料、单人资料查询、成绩统计、总成绩统计、存储学生资料、计算学生数量、返回主菜单。 用图表示如下: 密 码 主菜单 新 读 添 删 修 资 资 总 资 退 建 取 加 除 改 料 料 资 料 出 名 资 资 资 资 查 统 料 储 程 单 料 料 料 料 询 计 统 存 序 计 3)函数:在程序最前面我用了#include、#include、#include、#include、#include文件,定义了3个对象数组name20、point3、stu80,分别表示了存放学生姓名、3科成绩、学生人数,另外还定义了12个函数。六、源程序:#include #include #include #include #include class student /定义一个学生类public:int number;char name20;double point3; double sum; student()number=0;student(int num,char na20,double math,double english,double cpp) number=num;for(int i=0;i20;i+)namei=nai;point0=math;point1=english;point2=cpp;double add() /求个人总成绩 sum=0;for(int i=0;i3;i+)sum=sum+pointi;return sum;void list();void newstu();void infile();void add();void del(); void xiugai();void see_grade();void tongji();void totaltongji();void outfile();void lei();void restart();student stu80; int z=0;char r50;char set_code10=123; /设定密码double T10; char string10;void main() for(int time=1;time4;time+) /设定三次输入密码的机会 coutstring; coutn; if (strcmp(string,set_code)=0)coutttt*欢迎来到学生成绩统计管理系统*endl;break; else cout!输入密码有错误,请重新输入!endl; if(time=4) exit(1);list();void list() /选择菜单 coutn; coutttt*本系统由软件工程编写*endl;coutn; coutttt=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=endl;couttttt 系统菜单endl;coutttt=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=endl;couttttt 新建学生名单endl;couttttt 读取学生成绩endl;couttttt 添加学生成绩endl;couttttt 删除学生成绩endl;couttttt 修改学生资料endl; couttttt 单人资料查询endl;couttttt 成绩统计endl;couttttt 总成绩统计endl;couttttt 储存学生成绩endl;couttttt 退出程序endl;coutttt=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=;int a;coutendla;coutendl;switch(a)case 1:newstu();break;case 2:infile();break;case 3:add();break;case 4:del();break;case 5:xiugai();break;case 6:see_grade();break;case 7:tongji();break;case 8:totaltongji();break;case 9:outfile();break;case 10:cout退出程序endl;break;default:cout输入错误endl;void newstu() /case_1 新建学生名单char y;for(int i=0;i80;i+) coutstui.number;;coutstui.point0;coutstui.point1;coutstui.point2;couty;if(y=n)i=80;else coutendl;cout新建学生名单完成,;restart();void infile() /case_2 读取学生成绩fstream in;coutendl;in.open(f:学生名单.dat,ios:in|ios:binary);if(!in) cout无法找到指定文件.endl;abort();for(int i=0;i80;i+) /从文件逐个导入学生成绩 in.read(char*)&stui,sizeof(stui);in.close();cout学生成绩已读取完毕endl;coutendl;lei();restart();void add() /case_3 添加学生lei();coutstuz.number;;coutstuz.point0;coutstuz.point1;coutstuz.point2;cout添加完毕endl;restart();void del() /case_4 删除学生 int n,m;lei();coutn;for(int i=0;iz;i+) if(stui.number=n)m=i;stum.number=0;for(i=m;i80-m;i+) /将被删除学号后面的所有学号依次上移一位stui.number=stui+1.number;for(int j=0;j20;j+)j=stui+1.namej;stui.point0=stui+1.point0;stui.point1=stui+1.point1;stui.point2=stui+1.point2;cout已删除成功endl;restart();void xiugai() /case_5 修改学生成绩 int n,m;lei();coutn;for(int i=0;iz;i+) if(stui.number=n)m=i;cout该学生现在的资料:n学号:stum.numbern姓名:n数学成绩:stum.point0n英语成绩:stum.point1nC+成绩:stum.point2endl;cout开始对该学生的资料进行修改endl;;coutstum.point0;coutstum.point1;coutstum.point2;cout该学生成绩修改完毕;coutendl;restart();void see_grade() /case_6单个查询 lei();long int n; int m;for(int a=0;az;a+)coutn;for(int i=0;iz;i+)if(n=stui.number)m=i; coutendl; cout序列号Number Name English Maths C+ endl; coutendl; coutsetw(6)(m+1)setw(8)stum.numbersetw(8)setprecision(4)setw(8)stum.point0setprecision(4)setw(8)stum.point1setprecision(4)setw(8)stum.point2endl; coutendl; cout您是否要继续查询:y/n qq;if(qq=n)a=z;coutendl;restart();void tongji() /case_7 成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例) coutendl;lei();cout=endl;for(int j=0;j3;j+)double a=0,b=0,c=0,d=0,e=0;double s(0);switch(j)case 0:cout数学:endl;break;case 1:cout英语:endl;break;case 2:coutC+:endl;break;for(int i=0;i=90)a+; else if(stui.pointj=80)b+; else if(stui.pointj=70)c+; else if(stui.pointj=60)d+; else e+; coutendl; cout 平均优秀(比例)良好(比例)中等(比例)及格(比例)不及格(比例)endl; coutendl; cout数学setprecision(3)setw(4)stui.point0/zsetw(9)(a/z)*100%setw(9)(b/z)*100%setw(9)(c/z)*100%setw(9)(d/z)*100%setw(11)(e/z)*100%endl; coutendl; cout英语setprecision(3)setw(4)stui.point1/zsetw(9)(a/z)*100%setw(9)(b/z)*100%setw(9)(c/z)*100%setw(9)(d/z)*100%setw(11)(e/z)*100%endl; coutendl; coutC+ setprecision(3)setw(4)stui.point2/zsetw(9)(a/z)*100%setw(9)(b/z)*100%setw(9)(c/z)*100%setw(9)(d/z)*100%setw(11)(e/z)*100%endl; coutendl; cout 数学人数 setw(10)asetw(10)bsetw(10)csetw(10)dsetw(12)eendl; coutendl; cout 英语人数 setw(10)asetw(10)bsetw(10)csetw(10)dsetw(12)eendl; coutendl; cout C+ setw(10)asetw(10)bsetw(10)csetw(10)dsetw(12)eendl; coutendl; restart();void totaltongji() /case_8 总成绩统计(学生的总成绩、平均成绩及成绩排名) int i,j,u,nu;char n20;double p;lei();for(j=1;jz;j+) /使用起泡法排名 for(i=0;iz-j;i+)if(stui.add()stui+1.add() for(u=0;u20;u+) /姓名按学生总成绩的高低,从大到小排序 nu=u; u=stui+1.nameu;stui+1.nameu=nu;p=stui.point0; /学生数学成绩从大到小排序stui.point0=stui+1.point0;stui+1.point0=p;p=stui.point1; /学生英语成绩从大到小排序stui.point1=stui+1.point1;stui+1.point1=p;p=stui.point2; /学生C+成绩从大到小排序stui.point2=stui+1.point2;stui+1.point2=p;nu=stui.number; /学号按学生总成绩的高低,从大到小排序stui.number=stui+1.number;stui+1.number=nu;coutendl;cout名次学号 姓名 数学 英语 C+ 总成绩平均分endl;for(i=0;iz;i+) coutendl;cout;coutsetw(4)i+1;coutsetw(4)stui.number;coutsetw(6);coutsetw(6)stui.point0;coutsetw(6)stui.point1;coutsetw(6)stui.point2;coutsetw(6)stui.add();coutsetw(6)setprecision(4)stui.add()/3endl; coutendl;coutendl;restart();void outfile() /case_9 储存学生成绩fstream out;lei();out.open(f:学生名单.dat,ios:out|ios:binary);if(!out) cout无法找到指定文件.endl;abort();for(int i=0;iz;i+) /从文件逐个导出学生成绩 out.write(char*)&stui,sizeof(stui);out.close();cout学生成绩已储存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度离婚协议财产分割与子女抚养合同
- 二零二五年度第五人民医院与医疗垃圾处理公司合作合同
- 二零二五年度二手房买卖房屋保险合同
- 在线教育平台运营合同书
- 培训急救知识价格课件
- 水上救援队课件模板
- 2025-2030船舶大型化趋势对港口物流园区设施改造的要求
- 2025年成人自考-自考专科(工商管理)-生产与作业管理:00145历年参考题库典型考点含答案解析
- 中医护理岗位面试题
- 高新技术工程面试题目及应对策略
- 沥青路面工程监理实施细则
- 人民调解工作方法与技巧
- 传染病标本的采集、保存、运送管理规范
- 应用文写作PPT全套完整教学课件
- 全过程造价咨询服务方案
- 大学生开学第一课主题班会PPT
- SB/T 10941-2012自动制冰机试验方法
- GB/T 6804-2008烧结金属衬套径向压溃强度的测定
- 沙盘游戏治疗(2017)课件
- SY∕T 5280-2018 原油破乳剂通用技术条件
- 苏教版五年级数学下册【全册课件完整版】
评论
0/150
提交评论