




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、辽宁科技大学课程设计报告设计题目:学生成绩管理学院、系:电子与信息工程学院专业班级:计算机11-2班学生姓名:赵月指导教师:龙艳彬成 绩:2013年1 月 8 日目录一、需求分析 3二、概要设计 3三、详细设计 5系统流程图5界面设计6各功能模块的设计 7四、测试与分析 9五、总结 15六、附录(源代码) 161. 需求分析11 问题描述本系统实现了学生成绩管理的功能,具有学生成绩的输入、读取、查询、 修改、插入、删除、排序,统计等功能。12 基本要求(1)?输入的形式和输入值的范围;首先输入学生个数, 按回车键。 按照提示选择,将学生信息保存在文本文档中,具体 对学生信息进行插入删除查询操作
2、时, 将保存在文本文档中的学生信息提取出来, 保存在自 己定义的数据结构中, 然后再对该数据结构进行操作, 所有操作完成, 或者在相应的命令后, 再将学生信息保存到文本文档中。输入数据类型主要是char、 int 、 float 等数据类型,输入内容包括:学期、学号、姓名、高等数学成绩,数据机构成绩,大学英语成绩总分,平均分 等数据。(2)?输出的形式; 学期、学号、姓名、高等数学成绩,数据结构成绩,大学英语成绩,总分,平均分 等数据。(3)?程序所能达到的功能;1. 数据输入功能,输入的数据能最终保存在文件中;2. 数据删除功能,能最终从文件中删除;3. 排序功能,根据自己设计的数据结构,设
3、计排序算法4. 多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;6. 学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩)7. 其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平 均分等等)2、 概要设计1. 数据结构:数组(顺序存储结构)2. 程序模块:(1)先编入系统所需的库函数,使程序可运行#include #include #in elude 输 入 学 生 个 数输入学生成绩退岀* * * * * *=-三 一i =MUB- F:Debugg g qg.exe9件1 文 i 到息息序 并皆修删頤序 学号号券 Asum=n&rm.term=
4、k)若找到则显示学生记录并跳出循环;if(rm.num!=n&rm.term!=k)若没有则提示“该学号不存在,或没有这个学期的成绩!”。按姓名及学期来查找学生记录模块:用函数 void searchname(Student *r)来实现主要功能也是用来查找学生记录的。首先会有提示输入姓名及学期,再用for循环语句和 if 判断语句来进行查找,if(0 = n0) & (rm.term = k)若找到 则显示学生记录并跳出循环; if(0!=n0&rm.term!=k) 若没有则提示 该姓 名不存在 , 或没有这个学期的成绩 ! 按学号及学期修改信息:用函数 voi
5、d change(Student *r) 来实现主要功能是用来修改学生记录。 首先也要有个判断语句, 判断学生是否存在, 这个是 通过学号及学期来判断的,这里会有提示输入学号及学期,之后是 for 和 if 语句, if(rm.num=n & rm.term=k) 若存在则先输出修改之前的信息,查看是否正确。若正 确,则修改此学生记录, 这里有个 while 循环语句,和 switch-case 选择语句,用来选择修 改哪科成绩,和是否进行再修改记录(通过选择Y或y来实现)。最后将修改过后的记录保存到文件中去,并输出提示 文件已修改并写入 。插入学生资料模块:用函数 Student *inse
6、rt(Student *r);实现主要功能是用来添加学生资料, 成绩。 若显示没有此学生的信息, 就可以使用本模块 来进行添加。在此模块代码中定义了另一个指针数组:Student *y = (Student *)newStudentnum+1; 用来存放新添加的学生记录。再利用for 循环进行输入新学生记录,for(m=0;mnum;m+)最后会有一个提示语句cout是否继续输入?(继续,输入y,否则输入其他) endl; 若输入 y 则继续输入,否则将返回主菜单。按学号及学期删除学生记录模块用函数 void shanchu(Student *r) 来实现主要功能是用来删除学生记录。 首先有个
7、读文件的操作, 之后会有判断语句, 根据所 输入的学号及学期, 来显示删除前的信息记录, 添加 for 循环语句, 循环把后一位的信息提 前一位, 整体数量减一, 来进行全局变量的修改, 之后再把修改过后的信息记录保存到文件 中去。按数据结构成绩(冒泡)降序排序模块用函数 void maopao(Student *r) 来实现主要功能时是用来对学生的记录来按单科成绩 (这里以数据结构成绩为例) 进行排序。 这样方便对某科成绩有个大致的了解。 首先会有一个读文件操作, 为排序做基础。 本排序使 用冒泡排序。它有两个优点:一是很容易写出代码;二是具有稳定性,这里的稳定性是指原序列中相同两元素的相对
8、顺序仍然保持到排序后的序列。 冒泡排序时进过 n-1 趟子排序完成 的,第 i 趟子排序从第 1 个数至第 n+1 个数,若第 i 个数比后一个数大 (则升序, 小则降序。 本程序一律采用降序)则交换两数。 排序之后,将排序之后的结果写入文件,再打开文件的 时候,里面显示的就是按单科成绩排序后的结果。按总分(选择)降序排序 :用函数 void xuanze(Student *r) 来实现 主要功能时是用来对学生的记录来按总分成绩进行排序。这样方便对学生总体有个大 致的了解。 首先会有一个读文件操作, 为排序做基础。 本排序使用选择排序。 其基本思想是: n个记录的文件的直接选择排序可进过n-1
9、趟直接选择排序得到有序结果:初始状态,无序区为R仁n,有序区为空。第一趟排序在无序区R仁n中选出关键字最小的记录Rk ,将它与无序区的第一个记录 R1 交换,使 R1.n 和 R2.n 分别变为记录个数增加 1 个的新有序区记录和记录数减少 1 个的新无序区。 第 i 趟排序 第 i 趟排序开始时,当前有序区和无序区分别为R1.i-1 和R(1 i w n-1)。该趟排序从当前无序区中选出关键字最小的记录Rk,将它与无序区的第一个记录与R交换,使R1.i和R分别变成为记录个数增加 1 个的新有序区和记录个数减少 1 个的新无序区。这样, n 个记录的文件的 直接选择排序可经过 n-1 趟直接选
10、择排序得到有序结果。统计各科总分及平均分模块:用函数 void tongji(Student *r)来实现主要功能是计算总分和各科平均分,计算完之后将总分保存到文件中。4、测试与分析进入主界面选择输入学生信息2t:Debuggggg.exen負及学期亘询*taw鶉分:- 1- 3 S 7 9 C 谨舷件弄辎匕学主信息按 字; 退岀戶歼拦M严* 输入结束后的界面:FfDeb号屈牛 g.t鼻r2 5V 8 8 - 绩绩M 成成成 一畢构语数樂英3人英人I . . d i IJ -1/? rtr- 5H 7 4 : is&lAA.AAAAAAAA 已 -.-MN.JOH- 一 Inri.HM-. -
11、 3J. 3M4 - RH. RM.- nnr.MH: 肴士f冃主-H看请土I-R主-R肩w 退出到 息息JT 存 坨一冒54 看改曹 并查修删舔 sis 生及艮及隆杵选择:.半23赵月312李丽331王虎3选择,输出了学生信息:|- F ;Debugg g gg.exe总分平吻分月-丽虎 赵李王茉单栏 * * * 宀Tlr号口寻 ASI wn.=rTJ一一且二息息JT 退岀硼生信息请选择=*=选择,按学号及学期查询学生信息: 退出*Ma誨时息X * * * *聲卜=二=二二一=亠_=一=_导査找的彳言J8、如下 丈二口二二=二一二= 常号 姓名 高等数学 数据嶷 犬疑语 学期 魚芬 平均分M
12、 赵月 69520032&99_7清选拦:自心恳.17 gliL非并查羸翳 生及爰降 学兮号一一召 AISK#选择,按姓名及学期查询学生信息:=赵月F : ?ebi,g,1 g ygcj.exeI要査找的信息女F 452 4 b 8 1件 反?|息肩)? -17亠I5IE诽 菁改尊 并查盘頤 值盂点 学号i-xR 佥SS直 iK3 . 3579 - M直豪髀豪疔i青诜择:B9选择,按学号及学期修改学生信息:F :D亡 11曰弓日 g(号 exe參修改的学期泊QE-F:Vebug99S9岸号姓名高等敷学31王虎 0?可丿修改的坝目如下-修议学主的高手数学戎绩记录霊修议学主的教据站陶成绩记录算修刃
13、学牛的夫学英君戒缔记录丄修改学兰的高尊数学咸绩记录2 .修改学匸的数馮结枸感绩:己录丸修改学生的大学英语成绩记录一暮星謡d缰记录“初 已修孜并写人保询改陽郛 A慘HHI号 WI,学兰序 生及舟降 学号号号分 13S79Jk c zv i存到文件11 I退出|呼膵生信息23赵月312李丽331王虎3选择6,插入学生信息: F:Desugg ggg.eKe退出统#各斡崩曲昌券利平均头業亘栏一一否贝躺人耳也i圉先择=1i y 1_3 S79 ZX 7 8ffirl空构语獸籟千繭-询:件文到息吕诽存塔 息317王数纭 量滙事一23赵月312李丽331王虎317土力3选择7,按学号及学期删除学生信息:
14、:) 退岀* -* CJ* 亲亘栏弋F :ebugg g 阳启 xm=| 耳1肓选择:=亠15唔北 I*.彊隆 号 otitic 3 b 7 9 c- c _c c* # # # 1 3 号期dz子的的1-一缰sAS写:7要臺择入入已t 僑谙隕乂敢翼書灣鑒萨侶息:s盘入彳巨息劇軸驕I辭分: 退出*到息息存 ?-士 .4 一 塔改陈影 =FA惨础日 坦 1 3 b 7 9 c c yx y殳健盔写人11息息序 圧后_ 13 5 7 9 i1 1 3 5 7 UJ C 逞黯覊分:*-_11倒息白芳 爲改除勒 二丄忑圳亠亠 信圭SK 生圧KK隆 学号号口另 ai Bi-23赵月312李丽317土力3
15、81. 退出人字七力为啦平均il:B7_3J33清遗择:、琮苴芒芒-一一高等数学 总分为唸刈平坡分为嘶-药阳 数据结构億.分为泄3平坟分为洛九财曲I F ;Debuggg;gqte-V 2 2 unG;6.2 2 2 弟眾 jn竄 ms 学构语 数结英 尊振手选择11,退出:选择10,统计各科成绩的总分和平均分:井皱岀警生信息 * L翔査询 * to繚隔J*# 卄杳修黑 isss 学号号UZ刀 $玄心* *-于号号口ZR Ait UK息息序除? 蓝S孟末-11退出读取文件芒驰岀誉生信息裁也疑甘萄斗;请选擇士Pie ss ojiy key 七口 cant- iimuie -Fpebuggggg.
16、ff高等数学 总分为哟y平均分为皿爲:m 珈结构谊分知沏平均=87.3333 丄学英语总分为血汗均分为=8-3333海恢5、 总结课程设计终于结束了感觉有很多的收获,通过课程设计我又一次巩固了所学的知识,对学习到的理论知识进行了巩固,真正的理解及体会了。平时有很多知识都是似懂非懂,通过平时上机操作,自己也了解了一些,但在这次的课设上, 之前的困惑也通过这次的课设解决了一些,虽然还是不能够全面的理解,但是有进步就很有成就感。在课程设计中遇到不少困难,通过查阅资料,询问同学,在应用课本的前提下,拓展课外知识,完成了此次课程设 计,虽然还有许多不足之处,但是从中我学到了许多东西。我懂得了我们不能拘泥
17、于所学知识,应对其灵活运用。通过此次课程的设计使我认识到对知识的掌握不全面,而且感觉我们在学习专业知 识的同时还需要再加强其他方面知识的学习,因为编程有时候涉及到其他方面的知识,只有了解了其他方面的知识才能收集资料,然后编程。在编程的过程中,又重新复习了课本,从中学到了许多以前未学到的知识,感觉非常有成就感,特别当自己把程序一点点完善时, 让我对自己更加有信心,让我对数据结构这门课程也更感兴趣了,以前我一直感觉枯燥难学的数据结构,在编程的过程中我也愿意去认真研究学习了。这次数据结构课程设计中,多亏了同学的耐心帮助。如果没有同学的指导改错,我 会花更多的时间去找错误。在以后的学习过程中,我一定会
18、认真负责地对待课本中的每一个知识点,进一步充实自己,提高自己。争取在不断的练习中提高自己的层次。也希望可以在 以后的专业课当中多增加一些实践的内容,只有多动手,我们才能不断提高。6附录:源程序清单#include #include #include erm;coutvv请输入第vvi+1vv个人的学号:;cinri.num;if(i=1)for(n=0;ni;n+)if(rn.num=ri.num) cout 该学号已存在! ! endl; t=1;if(t=1) ame;coutri.mark1;coutri.mark2;coutri.mark3;ri.sum=ri.mark1+ri.mar
19、k2+ri.mark3;ri.average=(ri.mark1+ri.mark2+ri.mark3)/3; fp=fopen(,w+);if(!fp)cout 文件不能打开 endl;exit(0); for(n=0;ni;n+)fprintf(fp,%d %s %.1f %.1f %.1f %d %.1f %.1f,rn.num,,rn.ma rk1,rn.mark2,rn.mark3,rn.term,rn.sum,rn.average);fprintf(fp,n);fclose(fp);cout 文件已经写入 endl;um,,&rn.mark1,&rn.ma
20、rk2,&rn.mark3,&rn.term,&rn.sum,&rn.average); fclose(fp);umsetw(6)setw(7)rm.mark1setw(10) rm.mark2setw(10)rm.mark3setw(8)rm.termsetw(6) rm.sumsetw(6)rm.averageendl;cout00endl;cout 未输入任何信息! ! endl; elseum=n&rm.term=k)umsetw(6)setw(7)rm.mark1setw(10)rm.mark2setw(10)rm.mark3setw(8)rm.terms
21、etw(6)rm.sumsetw(8)rm.averageendl;break;if(rm.num!=n&rm.term!=k)ame0 = n0) & (rm.term = k)umsetw(6)setw(7)rm.mark1setw(10)rm.mark2setw(10)rm.mark3setw(8)rm.termsetw(6)rm.sumsetw(8)rm.averageendl;break;if(0!=n0&rm.term!=k)um=n & rm.term=k)int j;coutendl;cout 修 改 前 的 信 息 如 下endl;cout 学号
22、setw(6) 姓名 setw(10) 高等数学 setw(10) 数据 结构setw(10) 大 学 英 语 setw(6) 学 期 setw(6) 总 分 setw(8) 平均分 endl;coutrm.numsetw(6)setw(7)rm.mark1setw(10)rm.mark2setw(10)rm.mark3setw(8)rm.termsetw(6) rm.sumsetw(8)rm.averageendl;coutendl;while (chiose=Y|chiose=y)cout 可以修改的项目如下 nendl;coutttt 1. 修改学生的 高等数学 成绩记录
23、nendl; coutttt 2. 修改学生的 数据结构 成绩记录 nendl; coutttt 3. 修改学生的 大学英语 成绩记录 nendl;coutj;switch(j)case 1:coutrm.mark1;break;case 2: coutrm.mark2; break;case 3:coutrm.mark3;break;t=1;cout 是否要继续修改此学生的其他成绩记录? (Y/N); fflush(stdin);f %.1f %.1f %d %.1f %.1f,rn.num,,rn.mark1,rn.mark2,rn.mark3 ,rn.term,rn.sum
24、,rn.average);fprintf(fp,n);fclose(fp);cout 文件已修改并写入 endl;um,,&ro.mark1,&ro.mark2,&ro.mark3,&ro.term,&ro.sum,&ro.average);Student *y = (Student *)new Studentnum+1;erm;coutrnum.num;;coutrnum.mark1;coutrnum.mark2;coutrnum.mark3; rnum.sum=rnum.mark1+rnum.mark2+rnum.mark3;verage=(rnum
25、.mark1+rnum.mark2+rnum.mark3)/3;num+;coutvv是否继续输入?(继续,输入y,否则输入其他)vvendl;cinn;while(n=y);if(fp=fopen(,w+)=NULL)coutvv 文件不能打开 vvendl; exit(0);for(n=0;nvnum;n+)fprintf(fp,%d %s %.1f %.1f %.1f %d %.1f %.1f,rn.num,,rn.ma rk1,rn.mark2,rn.mark3,rn.term,rn.sum,rn.average);fprintf(fp,n);fclose(fp);cou
26、tvv 文件已经写入 vvendl;return r;um,,&ro.mark1,&ro.mark2,&ro.mark3,&ro.term,&ro.sum,&ro.average); int n,k,t=0;coutvv 请输入要删除学生的学号 :; cinn;coutvv 请输入要删除成绩的学期 :;cink;for(int m=0;mvnum;m+) if(rm.num=n&rm.term=k) for(int k=m;kvnum;k+)f %.1f %.1f %d %.1f %.1f,rn.num,,rn.mark1,rn.mark3,rn.mark3,rn
27、.term,rn.sum,rn.average);fprintf(fp,n); fclose(fp);coutvv 文件已经写入 vvendl;if(t=0)coutvv 对不起,该学号不存在! vvendl;cout 未输入任何信息! endl; elseum,,&rn.mark1,&rn.mark2,&rn.mark3,&rn.term,&rn.sum,&rn.average);ark2rm+1.mark2)max=rm+1;rm+1=rm;rm=max;cout 排序完毕 endl;if(fp=fopen(,w)=NULL)cout 对不起,文件不能打开! endl;exit(0);for(n=0;nnum;n+)fprintf(fp,%d %s %.1f %.1f %.1f %d %.1f %.1f,rn.num,,rn.mark1,rn.mark2,rn.mark3,rn.term,rn.sum,rn.average);fprintf(fp,n);fclose(fp);cout 文件已经写入 endl;elsecout 对不起,未输入任何信息! endl;um,,&rn.mark1,&rn.mark2,&rn.mark3,&rn.term,&rn.sum,&rn.average)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 注册土木工程师线上学习试题及答案
- 考初级工的试题及答案
- 基于AI的2025年智能客服情感分析在客服中心的应用
- 2025国企面试题库及答案
- 工业互联网平台SDN在工业互联网平台设备管理中的优化应用报告
- 护士皮瓣移植试题及答案
- 宁波二模语文试题及答案
- 针对2025年市场流动性风险管理的量化投资策略绩效评估报告
- 数字孪生视角下2025年城市规划与建设中的智慧城市安防设施布局与评估优化优化报告
- 现代音乐理论与作曲技巧的结合研究试题及答案
- GB/T 11253-2019碳素结构钢冷轧钢板及钢带
- 商务标评审表
- 2021版《安全生产法》培训课件
- 大连理工大学画法几何自学片段课件
- 相关方需求和期望及风险和机遇措施表
- FIDIC银皮书(中英文对照)
- 家谱电子版模板2
- 一年级美术下册教案-第8课 练笔成图-苏少版
- 农用地分等定级规程
- DB12∕T 822-2018 路用高粘结力环氧乳化沥青技术要求
- 《建设工程监理规范》word版
评论
0/150
提交评论