ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:59.74KB ,
资源ID:22869095      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22869095.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件工程课程设计报告.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件工程课程设计报告.docx

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():建立一个数组。 Retrieve(i)

3、:返回下标位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、 主程序模块的基本算法 void main()

4、 初始化 do 根据显示键入操作符 while(根据状态标志位返回); do switch(键入的操作符) 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; else flag4=1; while(fl

5、ag4=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();

6、void DISPLAY(); void SortZ(); void SortC(); void SortM(); void SortE(); 3、学生成绩管理软件由主控模块形成顶层模块,由初始化,数据录入,增加人员,删除人员,修改数据,按总成绩查询,按语文成绩查询,按数学成绩查询,按英语成绩查询模块组成一级模块如图: 四、调试分析: (1)由于我们在各模块中用到的状态标志位太多,而且在定义时出现了错误,在老师和同学们的帮助下,我们组的成员齐心协力使得错误很快得到了解决。 (2)在一开始时我们忽略了定义友元,导致后面程序运行时遇到了问题,但是后来在九系同学的帮助下得以一一解决。开始时,我们在定

7、义存储文件长度空间过小,使得程序无法正常运行,后来我们又将存储空间定义为50个单元,然而在实际上我们却只用到了32个单元,在一定程度上造成了存储空间的浪费。 (3)该程序输入的内容是按顺序存储,但是在因为查找时从第一个存储单元开始顺序查找,所以导致了查询效率的降低。还有,在各个模块中,只有录入模块进行单独的调试,而其他模块则必须和录入模块合并使用才可以调试。因为我们的水平有限,所以可能会使该程序的编写显得过于冗长。 (4)刚开始因为主模块不够完善,调用时老出现问题,而且各子模块和主模块的衔接不够完善,经过本族成员的努力攻关,问题终于地得到解决五、用户说明书: 1、本程序的运行环境为DOS操作系

8、统执行文件student.exe 2、当用户启动该程序,可根据提示信息,按相应的快捷键,进行相应的操作,首先按0键进行录入成绩,完成之后,系统会提示是否继续操作并按 Y/N进行选择,可继续按相应的数字键执行工作,完成查找,删除,排名等功能。六、心得体会开始设计自己的程序时心中充满了欣喜,觉得很新鲜,可真正做起来才知道其中的困难。经过两个星期的编程,我们体会到编程的艰辛与复杂。由于我知识学的不扎实,刚开始总也理不清头绪,在老师的合理安排和指导下我们本着先从大处着眼,逐步分工细化的原则 ,我们分头查找资料,共同讨论发扬团结一致的精神,进展非常顺利,通过两周的软件工程课程设计的学习,使我对C语言的编

9、程有了更进一步的了解,并且认识到书本上的知识只是C语言的基础部分,只有通过真正的实践才能接触到C语言本身的、内在的、最根本的问题,数据结构和算法是最灵魂的东西,这就促使我们在实践中倍加努力掌握真谛七 、原程序清单#include#include#includevoid LURU(); /录入模块void CJC(); /按总成绩查询模块void NMC(); /按姓名查询 void ADDP(); /添加成员模块void DEL(); /删除模块void XIU(); /修改模块void DISPLAY(); /显示模块void SortZ(); /按总分查询模块void SortC(); /

10、按语文查询模块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,double ma,double chin,double eng) strcpy(name,n); math=ma; chinese=chin; engl

11、ish=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 void DEL(); friend void XIU(); friend void DISPLAY(); friend v

12、oid 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; cout(4)按总成绩查询endl; cout(5)按姓名查询endl; cout(6)输出所有学生的数据end

13、l; cout成绩名词endl; cout(7)按总分查询排名endl; cout(8)按语文查询排名endl; cout(9)按数学查询排名endl; cout(y)按英语查询排名endl; cout选择相关操作请输入相对的括号里的阿拉伯数字!p; if(p=0&p=10) /输入的字符应满足的条件 flag2=1; else cout指令错误!请重新输入:endl; while(flag2=0); do switch(p) /循环语句 case 0: LURU(); break; /跳出 case 4: CJC(); break; case 5: NMC(); break; case 1:

14、 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; else flag4=1; while(flag4=0); if(w=y) cout请输入操作代码(0 录

15、入/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; do int flag1=0; cout请输入你要查询学生的总成绩t; for(int q=0;qgetsum()=t) /按查询条件查找 flag1=1; cout您要查询的学生是:(*sq).nam

16、eendl; /输出要查询的数据 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; do int 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; do cout请输入姓名name; cout请输入数学成绩:math; cout请输入语文成绩:chinese; cout请输入外语成绩:english; fi

18、lej=new ofstream(d:document,ios:ate); *filej姓名name数学成绩math语文成绩chinese外语成绩englishendl; j+; si=new stu(name, math, chinese, english); i+; cout数据录入成功,想继续录入吗(y/n)c; flag2=0; do if(c!=y&c!=n) cout指令错误!请重新输入!c; else flag2=1; while(flag2=0); while(c=y);void ADDP() /添加模块char name20;double math,chinese,engli

19、sh; char c; do cout请输入您要增加的学生的姓名: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) c

20、out指令错误!请重新输入!c; while(c=y);void DEL() /删除模块char name20;bool flag3=0;char c; do cout请输入您要删除的学生姓名:name; for(int h=0;hname)=0) /定位 flag3=1; i-; do sh=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 na

21、me20;double mat,chin,eng;flag2=0;/定义每个量的存储空间 char c; do cout请输入您要修改的学生的姓名: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; /选

22、择是否继续修改 if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y);void DISPLAY() /显示所有成绩 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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1