计算机科学与技术课程设计运动会成绩管理系统设计

上传人:仙*** 文档编号:34343669 上传时间:2021-10-21 格式:DOC 页数:25 大小:351KB
收藏 版权申诉 举报 下载
计算机科学与技术课程设计运动会成绩管理系统设计_第1页
第1页 / 共25页
计算机科学与技术课程设计运动会成绩管理系统设计_第2页
第2页 / 共25页
计算机科学与技术课程设计运动会成绩管理系统设计_第3页
第3页 / 共25页
资源描述:

《计算机科学与技术课程设计运动会成绩管理系统设计》由会员分享,可在线阅读,更多相关《计算机科学与技术课程设计运动会成绩管理系统设计(25页珍藏版)》请在装配图网上搜索。

1、程序设计课程设计报告( 2012 - 2013 年度第 一 学期)运动会成绩管理系统专业计算机科学与技术学生姓名吴小会班级M计算机112学号1151401225指导教师王 榕完成日期2012年9 月 13日目 录1 概 述11.1 课程设计目的11.2 课程设计内容12 系统总体设计12.1 系统目标12.2 主体功能22.3 系统流程32.4 开发环境43系统详细设计43.1系统主界面设计43.2录入修改成绩模块设计43.3成绩查询模块设计53.4成绩排序模块设计74 测试84.1 测试方案84.2 测试结果85 小结9参考文献10附 录11附录1 源程序清单11附录1.1输入运动员的基本信

2、息、输出运动员的基本信息模块源程序21附录1.2 查找运动员比赛成绩模块源程序21附录1.3排序模块源程序22运动会成绩管理系统的设计与实现1 概 述 1.1 课程设计目的1、巩固并加深对C语言程序设计知识的理解;2、掌握和提高C语言编程和程序调试的基本技能;3、进一步理解和运用结构化程序设计的思想和方法;4、提高运用C语言解决实际问题的能力; 5、初步掌握开发小型实用软件的基本方法;6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。1.2 课程设计内容课题名称:运动会成绩管理系统说明:运动会的基本项目包括:100米,铅球,跳高,跳远要求:(1) 系统的操作界面,有提示用户如何操作;

3、(2) 从键盘可以将学生的各个运动项目的成绩输入;(3) 运动会的录入成绩可以通过查询方式(通过运动员姓名)在屏幕上显示出来;(4) 程序具有修改输入资料的功能;(5) 程序实现对文件的读取和写入操作;(6) 程序具有对某一运动会项目的名次进行排序,使其按降序排列;(7) 每一项目都有对应的折合分数,程序可以计算出所有代表队的比赛总得分,并将各队按总得分降序排列;比如:甲队获得100米的第三名折合分数为1;获得铅球的第一名折合分数为3;获得跳高的第一名折合分数为1;获得跳远的第一名折合分数为3;则甲队的总得分为:1+3+1+3=8;(8) 程序要求可以将各个参赛队的所有队员中成绩全部显示出来;

4、(9) 程序可以运用运动员的姓名来查询该队员的此次运动会的所有项目成绩。2 系统总体设计2.1 系统目标实现对运动员成绩输入功能以及修改输入资料功能,但是在输入修改功能时加一项加密功能使其仅限于管理员使用。对于运动员再输入姓名之后可以查询该运动员的报名项目、归属何队、比赛成绩以及排名。要对每一队每名运动员参加项目的比赛成绩进行累加并对三队总成绩的累加进行排序。当运动员查询自己成绩情况后可以查询该队的所有队员以及总成绩排名。实现对系统的读取和写入操作。2.2 主体功能运动会成绩管理系统输入运动员比赛成绩成绩情况查询修改输入资料运动员比赛成绩查询代表队总得分查询图2-1 系统功能模块图2.3 系统

5、流程输入运动员所在队及赢得的分数输入运动员参加项目成绩开始初始化输入Y修改YNN成绩查询查询运动员成绩情况查询团体成绩继续结束退出输入运动员参加项目成绩输入运动员所在队及赢得的分数输入各队比才成绩输出运动员参加项目、所属队为队赢得分数和比赛名次输出队中所有成员和各队成绩排名图3-1系统流程图2.4 开发环境该程序通过Turbo C&C+3.0软件集成开发3系统详细设计3.1系统主界面设计menu() 图3-1 系统主界面 其基本功能如下: 当打开学校或者学生信息录入时系统会弹出运动会主要信息录入提醒。当打开运动员成绩查询系统会显示输入学生姓名和学号,学生开始正式查询可了解到该学生比赛项目、比赛

6、成绩、所属队及为代表队赢得得分数。3.2录入修改成绩模块设计成绩录入模块的功能流程图开始输入运动员资料增加资料YYYNNN修改资料删除资料结束请输入家的数量ni=n请增加i=i+1失败修改的学号in失败请修改NYYNN删除的学号in失败删除成功NY图5-1成绩录入、增加、修改流程图3.3成绩查询模块设计成绩查询模块的功能流程图。开始输入比赛项目赛跑YYYYYYYNNNNNN输入学号姓名i=1iNi=i+1跳远i=1i=1iNiNi=i+1i=i+1跳高i=1铅球i=i+1iNNYN结束输出成绩图6-1成绩查询流程图3.4成绩排序模块设计成绩排序模块的功能流程图开始定义i、j、n读取ni=0in

7、-1i=i+1YYYNNNj=n-1jn-1j=j+1stujstuj+1temp=stujstuj=stuj+1stuj+1=tempj=1输出排序结果结束图7-1成绩排序流程图4 测试测试是采用测试用例执行软件的活动。测试有两个显著目标:找出失效,或演示正确的执行。在对每个模块的编码后,对程序本身,采用结构性测试的方法,主要是采用路径测试的方法。在将各个模块集成后,采用功能性测试的方法,主要是采用划分等价类的方法,从输入的正确和错误两个方面分别设计不同的测试用例,测试过程和结果如下。4.1 测试方案测试方案一:对运动员成绩排序测试 图8-1运动员排名界面当输入排序程序时,显示各个运动员的比

8、赛成绩测试方案二:显示运动员成绩测试 图8-2得分规则显示界面4.2 测试结果测试结果一:a、 问题:每次在运行时输入两个以上的项目便不能出正确结果。发现过程:通过对程序的单步执行监视,发现在执行完stujnextPtr 被意外的修改。解决办法:将newPtr =malloc (sizeof (bodyPtr) 改为 newPtr =malloc (sizeof (body)。 测试结果二:错误主要是在输入字符时使用的是中文输入,只要改成英文输入就行了;注意“”使用要完整等等。不过在我编写程序时遇到的最大的困难还是在输入文件模块,因为对这个知识点掌握不好,后来经过查阅资料终于弄清楚了。5 小结

9、总体来说此次程序设计写得特别吃力感觉什么都不会有一些生疏的词以前都没有听过。好像感觉自己之前学的C语言都白学了,以前上课老师只要我们写一些比较简单的小程序感觉还好,现在突然写一个成绩管理系统开始的时候感觉不知所措不知道从何入手。后来到图书馆查询和网上搜索才深入的了解C语言,渐渐的就有了一些想法。要想编写出一个优秀的需求软件,前期的需求分析是相当重要的工作,而且在系统设计的过程中,对C语言又进行了一次系统的学习。在设计信息代码的时候,将功能分到不同的类中实现,在编码的时候,多次在小问题上卡住,但最后还是在自己的思考和向其他同学请教、相互讨论之后,将问题解决掉。可以说这二个星期的综合设计,让我学习

10、到了很多很多。经过这两个星期的学习我体会比较多,深深地感到自己有许多的不足。以前学专业课时并没有调整好自己的心态以为考试只要过就行了课后自己也没有练习,现在才认识到我这种态度的严重性。以后我要把我所学的放入实践中经常体会各种题目的意义所在,为自己以后找工作打下有利基础。参考文献1谭浩强.C程序设计(第二版)M.北京:清华大学出版社,2012. 2谭浩强.C程序设计题解与上机指导(第二版)M.北京:清华大学出版社,2012.3明日科技.C语言程序开发范例宝典M.北京:人民邮电出版社,2010.4王一萍 梁伟 金梅.C程序设计与项目实践M. 北京:清华大学出版社,2011.附 录附录1 源程序清单

11、#include#include#includeconio.h#defineN20Struct studentchar num20;char name10;float baimi;float tiaoyuan;float tiaogao;float qianqiu;Void menu();int reads(struct student stuN);void save(struct student tstuN,int n);void add();void del();void sort();void keep();void sheep();void qianq();void query();v

12、oid show();void change();void main()Int n;while(1)menu();printf(n请输入您要选择的操作序号,按回车键确认:);scanf(%d,&n);switch(n)case1:add();break;case2:show();break;case3:del();break;case4:change();break;case5:sort();break;case6:keep();break;case7:sheep();break;case8:qianq();break;case9:exit(0);default:printf(输入错误,请输入

13、列表中存在的序号!n);void menu()printf(*运动员成绩管理系统*);printf(n1添加运动员数据);printf(n2显示运动员数据);printf(n3删除运动员数据);printf(n4更改运动员数据);printf(n5百米成绩排序);printf(n6跳远成绩排序);printf(n7跳高成绩排序);printf(“n8铅球成绩排序”);printf(n9退出);printf(n(_)(_)(_)(_)(_)(_)(_);int reads(struct student stu N)/读取运动员文件中的内容FILE*fp;int i=0;if(fp=fopen(e

14、:student.txt,r)=NULL)printf(文件打开失败!n);return0;elsefor(i=0;!feof(fp);i+)fscanf(fp,%s%s%f%f%fn,stui.num,stui.name,&stui.baimi,&stui.tiaoyuan,&stui.tiaogao,&stui,qianqiu);fclose(fp);return i;void save(struct student stuN,int n) /运动员信息改变后更新文件FILE*fp;Int i=0;if(fp=fopen(e:student.txt,w)=NULL)printf(文件打开失

15、败!n);return;Elsefor(i=0;in;i+)fprintf(fp,%s%s%f%f%fn,stui.num,stui.name,stui.baimi,stui.tiaoyuan,stui.tiaogao,stui,qianqiu);fclose(fp);void add()/*添加运动员信息*/FILE*fp;int n,i;struct student stu;if(fp=fopen(e:student.txt,a)=NULL)/如果文件已经存在,可以追加学生信息if(fp=fopen(e:student.txt,w)=NULL)/文件不存在时,创建新文件,输入学生信息pri

16、ntf(文件打开失败!n);return;printf(请输入要添加的运动员数量,按回车键确认:);scanf(%d,&n);for(i=1;i=n;i+)printf(n请输入第%d个运动员的号码、姓名,用空格分开,并按回车键确认:n,i);scanf(%s%s,stu.num,stu.name);printf(n请输入第%d个运动员的百米赛跑、跳远和跳高、铅球四项成绩,用空格分开,并按回车键确认:n,i);scanf(%f%f%f,&stu.baimi,&stu.tiaoyuan,&stu.tiaogao,&stu,qianqiu);fprintf(fp,%s%s%f%f%fn,stu.n

17、um,stu.name,stu.baimi,stu.tiaoyuan,stu.tiaogao.stu,qianqiu);fclose(fp);void show()/运动员信息显示函数struct student stuN;inti,n;n=reads(stu);printf(*所有的学生信息如下*nn);printf(序号号码姓名百米赛跑跳远跳高铅球n);printf(*n);for(i=0;in;i+)printf(n%3d%12s%11s%11.2f%12.2f%11.2fn,i+1,stui.num,stui.name,stui.baimi,stui.tiaoyuan.stui.tia

18、ogao.stui,qianqiu);getch();void del()/*运动员信息删除函数*/Struct student stuN;char number20;int n,i,j;n=reads(stu);printf(n请输入要删除信息运动员号码,按回车键确认:);scanf(%s,number);for(i=0;i=n)printf(没有找到该运动员信息!n);return;elsefor(j=i+1;jn;j+)stuj-1=stuj; save(stu,n-1);printf(删除成功!n);void change()/学生信息更改struct student stuN;int

19、 n,i;char number20;printf(n请输入要更改信息的学生学号,按回车键确认:);scanf(%s,number);n=reads(stu);for(i=0;i=n)printf(无此学生信息!);return;printf(n请输入更改后学生的号码,姓名,百米赛跑、跳远、跳高、铅球四门成绩,按回车键确认:n);scanf(%s%s%f%f%f,stui.num,stui.name,&stui.baimi,&stui.tiaoyuan,&stui.tiaogao,&stui,qianqiu);save(stu,n);void sort()/按百米赛跑成绩排名struct st

20、udent stuN,temp;int i,j,n;n=reads(stu);for(i=0;in-1;i+)for(j=0;jn-1;j+)if(stuj.baimistuj+1.baimi)temp=stuj;stuj=stuj+1;stuj+1=temp;save(stu,n);j=1;printf(*百米赛跑成绩排序结果如下*nn);printf(名次号码姓名百米赛跑成绩n);printf(*n);for(i=0;in;i+)/输出结果并排名if(stui.baimi=stui+1.baimi)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j

21、,stui.num,stui.name,stui.baimi,stui.baimi);elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,stui.name,stui.baimi,stui.baimi);getch();void keep()/按跳远成绩排名struct student stuN,temp;inti,j,n;n=reads(stu);for(i=0;in-1;i+)for(j=0;jn-1;j+)if(stuj.tiaoyuan stuj+1.tiaoyuan)temp=stuj;stuj=stuj+1;st

22、uj+1=temp;save(stu,n);j=1;printf(*跳远成绩排序结果如下*nn);printf(名次号码姓名跳远成绩n); printf(*n);for(i=0;in;i+)/输出结果并排名if(stui.sanjitiao=stui+1.sanjitiao)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.num,stui.name,stui.sanjitiao,stui.sanjitiao);elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,stui

23、.name,stui.sanjitiao,stui.sanjitiao);getch();void sheep()/按跳高成绩排名 struct student stuN,temp;inti,j,n;n=reads(stu);for(i=0;in-1;i+)for(j=0;jn-1;j+) if(stuj.tiaogaostuj+1.tiaogao)temp=stuj;stuj=stuj+1;stuj+1=temp;save(stu,n);j=1;printf(*跳高成绩排序结果如下*nn);printf(名次号码姓名跳高成绩n);printf(*n);for(i=0;in;i+)/输出结果并

24、排名if(stui.tiaogao=stui+1.tiaogao)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.num,stui.name,stui.tiaogao,stui.tiaogao); elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,stui.name,stui.chenggantiao,stui.tiaogao);getch();void qianq()/按铅球成绩排名 struct student stuN,temp;inti,j,n;n=reads

25、(stu);for(i=0;in-1;i+)for(j=0;jn-1;j+) if(stuj.qianqiustuj+1.qianqiu)temp=stuj;stuj=stuj+1;stuj+1=temp;save(stu,n);j=1;printf(*铅球成绩排序结果如下*nn);printf(名次号码姓名铅球成绩n);printf(*n);for(i=0;in;i+)/输出结果并排名if(stui.qianqiu =stui+1.qianqiu)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.num,stui.name,stui.qi

26、anqiu,stui.qianqiu); elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,stui.name,stui.qianqiu,stui.qianqiu);getch();附录1.1输入运动员的基本信息、输出运动员的基本信息模块源程序当执行学生成绩录入功能时,所录入的数据被储存程序开头所定义的结构体中,并且各种数据被保存其中,方便以后其他的功能函数调用。具体的程序段如下:int,i; printf(请输入要添加的学生数量,按回车键确认:); scanf(%d,&n); for(i=1;i=n;i+) printf

27、(n请输入第%d个学生的学号、姓名,,用空格分开,并按回车键确认:n,i); scanf(%s%s%s,stui.num,stui.name,stui.daibd); printf(n请输入第%d个学生的赛跑比赛、跳远比赛、跳高比赛、铅球比赛,用空格分开,并按回车键确认:n,i); scanf(%f%f%f,&stui.race,&stui.jump,&stui.high,&stui,qianq); printf(%s %s %s %f %f %f n,stui.num,stui.name,stui.daibd,stui.race,stui.jump,stui.high.stui,qianq)

28、; 附录1.2 查找运动员比赛成绩模块源程序按项目进行运动员成绩查询 当执行按项目进行运动员成绩查询时,整个查询过程是在结构体数组stu中实现的。在此函数中,为了方便起见,用1代表赛跑比赛,2代表跳远比赛,3代表跳高比赛,4代表铅球,输入数字后,用if语句进行判断,输出各个学生该项目的成绩。具体的程序段如下int i,a; printf(请输入1,2,3或4,1代表赛跑成绩,2代跳远成绩,3代表跳高成绩,4代表铅球); scanf(%d,&a); if(a=1) printf(*按项目查询结果如下*nn); printf( 名次 学号 姓名 系别 赛跑 n); printf(*n); for(

29、i=1;i=N;i+) printf(n%d%12s%12s%11s%11.2f n,i,stui.num,stui.name,stui.daibd,stui.race); getch(); if(a=2) printf(*按项目查询结果如下*nn); printf( 名次 学号 姓名 系别 跳高 n); printf(*n); for(i=1;i=N;i+) printf(n%d%12s%11s%11s%11.2fn,i,stui.num,stui.name,stui.daibd,stui.high); getch();if(a=3) printf(*按项目查询结果如下*nn); print

30、f( 名次 学号 姓名 代表队 跳远 n); printf(*n); for(i=1;i=N;i+) printf(n%d%12s%11s%11s%11.2fn,i,stui.num,stui.name,stui.daibd,stui.jump); if(a=4) printf(*按项目查询结果如下*nn); printf( 名次 学号 姓名 代表队 铅球 n); printf(*n); for(i=1;i=N;i+) printf(n%d%12s%11s%11s%11.2fn,i,stui.num,stui.name,stui.daibd,stui.qianq); 附录1.3排序模块源程序按

31、代表队排名函数(参照学生总成绩) 对于按代表队的排名采用的排序算法是冒泡法排序,其中总成绩的求得是在排序的过程中实现的,整个排序过程在结构体数组stu中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。排序函数使学生数据的排列顺序发生了变化,因此也需要对结构体进行更新。此外,对于系别排序后名次的确定,仅在结果输出时予以显示。具体的程序段如下: int i,j; printf(*按系成绩排序结果如下*nn); printf( 名次 代表队 总成绩 n); printf(*n); for(i=1;i=N;i+) for(j=1;j=N-i;j+) if(stuj.race+stuj.jump+stuj.high stuj+1.qianq+stuj.race+stuj+1.jump+stuj+1.high+stuj+1,qianq) temp=stuj; stuj=stuj+1; stuj+1=temp; for(i=1;i=N;i+) printf(n%d%12s%11.2fn,i,stui.xibie,stui.race+stui.jump+stui.high+stui ,qianq);

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!