版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程课程设计报告一、需求分析:、本系统只有一个文件, 包含学生姓名、成绩。姓名、语文成绩、数学成绩、英语成绩均由键盘输入。()文件名:()文件类型:顺序文件() 文件结构 姓名 数学 语文 英语数据类型 字符型 单精度数 单精度数 单精度数数据占用长度 20字节 4字节 4字节 4字节()文件记录长度:322、输出时根据操作显示排名或查询成绩,按姓名、数学成绩、语文成绩、英语成绩。3、该程序具有初始化学生成绩,录入学生成绩,修改学生成绩,删除学生成绩,添加学生成绩,按总成绩查询,按姓名查询,按总分查询排名,按英语成绩查询,显示所有学生的数据等功能。4、测试数据:例如: 姓名 语文 数学 英
2、语 小五 80 90 100 小王 90 85 79 小李 87 91 95 按姓名查询:输入姓名小五,显示语文成绩80,数学成绩90,英语成绩100按语文成绩排序: 姓名 语文 数学 英语 小王 90 85 79 小李 87 91 95 小五 80 90 100 5、数据流图:教师录入整理存储文件学生修改、添加、删除修改成绩查询返回二、概要设计:1、类的定义格式:Class Public: Private : 2、定义数组类型ADT Stu DATA: 下标index和数据元素值value组成的数据堆集合,其中任意两个数据队的下标index各不相同。Operstions: Creat():建
3、立一个数组。 Retrieve(i):返回下标位I的元素值。 Store(i,x):将下标位I的数据对的值为x. 3、 义字符串类型ADT String DATA: Operation: 字符串是由n(0)各字符组成的有限序列S=”a1.a2.a3an”(in)Creat(): 建立一个空串Destroy(): 撤销一个串Length(): 求串长Setnull(): 置为空串Assign(): 串赋值Contat(): 串连接Insert(): 串插入Delete(): 串删除Replace(): 串替位Substr(): 取子串Find(): 求子串在主串中的位置三、详细设计1、 主程序模
4、块的基本算法void main() 初始化 do根据显示键入操作符 while(根据状态标志位返回);doswitch(键入的操作符)case 0: 录入模块case 4: 总成绩查询模块case 5:按姓名查询模块case 1: 添加成员模块 case 2:删除模块 case 3: 修改模块 case 6: 显示所有学生成绩模块case 7:按总分查询排名 case 8: 按语文查询排名case 9: 按数学查询排名case y: 按英语查询排名 cout您想继续进行其他操作吗?(y/n)w;if(w!=y&w!=n)cout指令错误!请重新输入!endl;elseflag4=1;while
5、(flag4=0);if(w=y)cout请输入操作代码(0 录入/4 按总分查询/5 按姓名查询/1 增加人员/2 删除人员/3 修改数据/6 显示所有成员数据/7 按总分排名/8 按语文排名/9按数学排名/y按英语排名)p;while(w=y);for(int x=0;xi;x+)delete sx;coutdelete all members!endl;2、 子程序函数清单(因为所用到的算法比较简单算法略) void main();void LURU();void CJC(); void NMC();void ADDP();void DEL(); void XIU();void DISP
6、LAY(); void SortZ(); void SortC(); void SortM(); void SortE(); 3、学生成绩管理软件由主控模块形成顶层模块,由初始化,数据录入,增加人员,删除人员,修改数据,按总成绩查询,按语文成绩查询,按数学成绩查询,按英语成绩查询模块组成一级模块如图: 录入学生成绩模块修改学生成绩模块增加人员模块删除人员模块按总成绩查询模块按姓名查询模块语文查询排名模块数学排名查询模块英语查询排名模块学生成绩管理软件主控模块显示所有学生的成绩四、调试分析: (1)由于我们在各模块中用到的状态标志位太多,而且在定义时出现了错误,在老师和同学们的帮助下,我们组的成
7、员齐心协力使得错误很快得到了解决。 (2)在一开始时我们忽略了定义友元,导致后面程序运行时遇到了问题,但是后来在九系同学的帮助下得以一一解决。开始时,我们在定义存储文件长度空间过小,使得程序无法正常运行,后来我们又将存储空间定义为50个单元,然而在实际上我们却只用到了32个单元,在一定程度上造成了存储空间的浪费。 (3)该程序输入的内容是按顺序存储,但是在因为查找时从第一个存储单元开始顺序查找,所以导致了查询效率的降低。还有,在各个模块中,只有录入模块进行单独的调试,而其他模块则必须和录入模块合并使用才可以调试。因为我们的水平有限,所以可能会使该程序的编写显得过于冗长。 (4)刚开始因为主模块
8、不够完善,调用时老出现问题,而且各子模块和主模块的衔接不够完善,经过本族成员的努力攻关,问题终于地得到解决五、用户说明书: 1、本程序的运行环境为DOS操作系统执行文件student.exe 2、当用户启动该程序,可根据提示信息,按相应的快捷键,进行相应的操作,首先按0键进行录入成绩,完成之后,系统会提示是否继续操作并按 Y/N进行选择,可继续按相应的数字键执行工作,完成查找,删除,排名等功能。六、心得体会开始设计自己的程序时心中充满了欣喜,觉得很新鲜,可真正做起来才知道其中的困难。经过两个星期的编程,我们体会到编程的艰辛与复杂。由于我知识学的不扎实,刚开始总也理不清头绪,在老师的合理安排和指
9、导下我们本着先从大处着眼,逐步分工细化的原则 ,我们分头查找资料,共同讨论发扬团结一致的精神,进展非常顺利,通过两周的软件工程课程设计的学习,使我对C语言的编程有了更进一步的了解,并且认识到书本上的知识只是C语言的基础部分,只有通过真正的实践才能接触到C语言本身的、内在的、最根本的问题,数据结构和算法是最灵魂的东西,这就促使我们在实践中倍加努力掌握真谛七 、原程序清单#include#include#includevoid LURU(); /录入模块void CJC(); /按总成绩查询模块void NMC(); /按姓名查询 void ADDP(); /添加成员模块void DEL(); /
10、删除模块void XIU(); /修改模块void DISPLAY(); /显示模块void SortZ(); /按总分查询模块void SortC(); /按语文查询模块void SortM(); /按数学查询模块void SortE(); /按英语查询模块int i=0;ofstream *file50; /定义插入的文件int j=0;bool flag2=0; /状态标志位class stu /定义的类 char name20;double math,chinese,english,average,sum; /定义存储空间public: /公有成员stu()stu(char n20,d
11、ouble ma,double chin,double eng)strcpy(name,n);math=ma;chinese=chin;english=eng;double getsum() /定义求和函数 sum=chinese+english+math;return sum;double getaver() /定义求平均成绩average=getsum()/3;return average;friend void main();friend void LURU();friend void CJC(); friend void NMC();friend void ADDP();friend
12、void DEL(); friend void XIU();friend void DISPLAY(); friend void SortZ(); friend void SortC(); friend void SortM(); friend void SortE(); /定义用到的友元类;stu *s50; /定义指针数组,即能容纳50个学生void main() /主函数cout请选择您需要的操作!endl;cout操作:endl;cout(0)数据录入endl; cout(1)增加人员endl;cout(2)删除人员endl;cout(3)修改数据endl;cout查询:endl;co
13、ut(4)按总成绩查询endl;cout(5)按姓名查询endl; cout(6)输出所有学生的数据endl;cout成绩名词endl;cout(7)按总分查询排名endl;cout(8)按语文查询排名endl;cout(9)按数学查询排名endl;cout(y)按英语查询排名endl;cout选择相关操作请输入相对的括号里的阿拉伯数字!p;if(p=0&p=10) /输入的字符应满足的条件flag2=1; elsecout指令错误!请重新输入:endl;while(flag2=0);doswitch(p) /循环语句case 0:LURU();break; /跳出case 4:CJC();b
14、reak;case 5: NMC();break;case 1: ADDP();break;case 2:DEL();break; case 3:XIU();break; case 6: DISPLAY(); break; case 7: SortZ(); break; case 8: SortC(); break; case 9: SortM(); break; case y: SortE(); break; cout您想继续进行其他操作吗?(y/n)w; /键盘输入if(w!=y&w!=n)cout指令错误!请重新输入!endl;elseflag4=1;while(flag4=0);if(
15、w=y)cout请输入操作代码(0 录入/4 按总分查询/5 按姓名查询/1 增加人员/2 删除人员/3 修改数据/6 显示所有成员数据/7 按总分排名/8 按语文排名/9按数学排名/y按英语排名)p;while(w=y);for(int x=0;xi;x+)delete sx;coutdelete all members!endl; /不保留数据 void CJC() / 按成绩查询模块 double t;char c;doint flag1=0;cout请输入你要查询学生的总成绩t;for(int q=0;qgetsum()=t) /按查询条件查找flag1=1; cout您要查询的学生是
16、:(*sq).nameendl; /输出要查询的数据if(flag1=0)cout对不起!您要查询的学生不存在!endl; cout您想继续查询吗?(y/n)c; if(c!=y&c!=n)cout指令错误!请重新输入!c; while(c=y);void NMC() /按名字查询模块char n20;int j=0;char c;doint flag=0;cout请输入你要查询的学生姓名n;for(int j=0;ji;j+)if(strcmp(n,(*sj).name)=0) /顺序查找flag=1;cout您要查询的学生是:(*sj).nameendl; cout(*sj).name的总
17、成绩成绩是(*sj).getsum()endl平均成绩是:(*sj).getaver()endl; /输出if(flag=0) cout对不起!您要查询的学生不存在!endl;cout您想继续查询吗?(y/n)c;if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);void LURU() /录入模块 char c;char name20;double math,chinese,english;docout请输入姓名name;cout请输入数学成绩:math;cout请输入语文成绩:chinese;cout请输入外语成绩:english;filej=new ofst
18、ream(d:document,ios:ate);*filej姓名name数学成绩math语文成绩chinese外语成绩englishendl; j+;si=new stu(name, math, chinese, english);i+;cout数据录入成功,想继续录入吗(y/n)c;flag2=0;doif(c!=y&c!=n)cout指令错误!请重新输入!c;elseflag2=1;while(flag2=0);while(c=y);void ADDP() /添加模块char name20;double math,chinese,english;char c;docout请输入您要增加的
19、学生的姓名:name;cout请输入数学成绩:math;cout请输入语文成绩:chinese;cout请输入外语成绩:english;filej=new ofstream(d:document,ios:ate);/插入存储*filej姓名name数学成绩math语文成绩chinese外语成绩englishendl; /保存输入的数据 j+;si=new stu(name, math, chinese, english);/建立新的存储空间i+;cout数据录入成功,想继续录入吗(y/n)c;if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);void DEL()
20、 /删除模块char name20;bool flag3=0;char c; docout请输入您要删除的学生姓名:name;for(int h=0;hname)=0) /定位flag3=1;i-;dosh=sh+1;h+; /while(h=i);if(flag3=0)cout您要求删除的对象本来就不存在!请检查输入的正确性!; cout要继续删除吗?(y/n)c; if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);void XIU() /修改模块char name20;double mat,chin,eng;flag2=0;/定义每个量的存储空间 char
21、c;docout请输入您要修改的学生的姓名:name; for(int h=0;hname)=0) /定位 flag2=1;cout请输入新的数学成绩:mat;cout请输入新的语文成绩:chin;cout请输入新的外语成绩:eng;sh-chinese=chin; /修改sh-math=mat;sh-english=eng;cout数据修改成功!; if(flag2=0) cout您要修改的学生本来就不存在!请检查重新输入!endl; cout想继续修改吗(y/n)c; /选择是否继续修改if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);void DISPLA
22、Y() /显示所有成绩 cout本系统所有学生数据如下:endl; if(i=0) cout管理系统中没有录入数据或者数据已经被删除!endl; for(int k=0;ki;k+) coutk+1 姓名: name 语文: chinese数学: math 外语: english总分: (*sk).getsum() 平均分: (*sk).getaver()endl; void SortZ() /按总分查询模块int t;stu b; cout本系统所以学生排名如下:endl; for(int x=0;xi-1;x+) t=x; for(int y=x+1;ygetsum()getsum() /比较 t=y; if(t!=x) b=*sx; *sx=*st; *st=b; /排序 if(i=0) cout管理系统中没有录入数据或者数据已经被删除!; for(int k=0;ki;k+) coutk+1 姓名: name 语文: chinese数学: math 外语: english总分: getsum() 平均分: getaver()endl; void SortC() /按语文查询排名int t;stu b; cout本系统所以学生语文排名如下:endl; for(int x=0;xi-1;x+) t=x; for(int y=x+1;ychinese)chinese)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026农业幸福发展行业市场深度调研及发展趋势与投资前景预测研究报告
- 2026儿童智能玩具技术演进与市场竞争格局分析
- 2026中国金属期货异常交易监测体系构建研究报告
- 2026中国监护仪产品召回机制与危机公关预案设计
- 2025年AI情绪调节设备行业学术会议参会指南
- 2025新中小学教师高级职称专业水平能力题库(附含答案)-
- 2026年医疗卫生机构工作人员廉洁从业行动计划实施方案(3篇)
- 2026届武汉地区十一校市级名校中考语文仿真试卷含解析
- 2025福建高压电工证考试题库及答案考低压电工证模拟试题(全国真题)
- 电气系统维护保养计划方案
- DB52T 1086-2016 贵州省生产建设项目水土保持监测技术规范
- GA/T 2131-2024移民管理领域标准体系表
- 2024年四川省内江市中考英语试题(含答案)
- DL-T5588-2021电力系统视频监控系统设计规程
- 幼儿园安全园本培训
- 雅马哈电吹管知识讲座
- 论述摘编全部
- 万家寨水利枢纽混凝土重力坝设计
- 外科学椎间盘突出症
- 年产15万吨铝板带项目安全预评价报告
- GB/T 10575-2007无水氯化锂
评论
0/150
提交评论