




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目: 运动会成绩管理系统实验报告 指导教师:指导教师: 班班 级级 : 学学 号号 : 学生姓名学生姓名 : 专专 业业 : 20112011 年年 1111 月月 目录目录 (一)主要内容(一)主要内容 .2 (二)基本要求(二)基本要求 .2 摘要摘要 .1 1.1.绪论绪论 .1 2.2.系统分析系统分析 .1 2.1 功能需求.1 2.2 数据需求.2 2.3 性能需求.2 3.3.总体设计总体设计 .2 3.1 功能模块设计.2 3.2 系统设计方案.3 4 4详细设计详细设计 .4 4.1 录入信息模块.4 4.2 查询信息模块 .6 4.3 修改信息模块.7 4.4 删除信息模
2、块.8 4.5 成绩排名模块.10 5调试和测试调试和测试.12 5.1 测试.12 5.2 调试.12 6.结论结论.13 7、结束语、结束语.13 8、附录、附录源程序源程序.13 一、一、课程设计的内容及要求:课程设计的内容及要求: (一)主要内容(一)主要内容 设计一个运动会成绩管理程序,主要实现以下功能: 1、检录功能,登录参赛运动员的信息; 2、记录成绩功能,每项比赛结束后记录参赛运动员的成绩; 3、针对不同比赛对运动员的成绩排名次; 4、可对运动员的信息和成绩进行修改、删除、查询操作。 (二)基本要求(二)基本要求 1、系统采用所学相关课程中编辑程序设计语言实现; 2、独立完成系
3、统的设计、编码和调试,通过指导教师当场验收; 3、交出完整的课程设计报告。 摘要摘要 运动会是一个全民健身的活动,在运动会里可以提高人们的身体素质,培养人们的素 养。在参加运动会的过程中我们可以看到激情和友情的碰撞,人们用自己的实力来赢得 第一。开发本系统是为了更方便,在运动会中做比赛数据的记录,方便记录比赛成绩。 本系统使用 c 语言作为开发语言。实现了对运动会的结果提示以及对成绩的储存和对 成绩的排名。 本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设 计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成 情况进行了总结。 关键词:c 语言
4、;运动会;信息管理 1.1.绪论绪论 运动会成绩管理程序设计的开发是为了方便记录比赛成绩,运动员的状况和成绩, 对比赛成绩进行排名。这个系统以快捷,简便为原则,更加方便了对运动会成绩的记录。 运动会是很早以前就有的一项组织性活动,它的存在使人们的身体得到了锻炼。运动会 是一项必不可少的活动,所以开发这个系统可以使运动会成绩的记录变的更加方便。 设计一个运动会成绩管理程序,主要实现以下功能: 1、检录功能,登录参赛运动员的信息; 2、记录成绩功能,每项比赛结束后记录参赛运动员的成绩; 3、针对不同比赛对运动员的成绩排名次; 4、可对运动员的信息和成绩进行修改、删除、查询操作。 2.2.系统分析系
5、统分析 2.12.1 功能需求功能需求 本系统要求对运动员的信息进行登录修改,记录,查询,要求可以对运动员的成绩 进行单项排名。主要实现程序最初运行时运动员数据的录入以及其后的运行数据的追加 功能,实现的功能是按照号码对运动员的数据记录进行修改、记录、查询、删除,按照 题目的具体要求实现的是某项成绩的递减排序以及名次显示。 2.2 数据需求数据需求 在这些函数当中,添加运动员数据函数例如运动员序号、运动员名称、百米赛跑成 绩、三级跳成绩和撑杆跳成绩。 2.3 性能需求性能需求 本系统的性能需求:要求运行稳定、数据可靠、输出准确、响应速度快、可安全运行、 能很好的保存、删除、修改。可以及时保存存
6、储删除数据,可对成绩进行排名,显示即 时成绩 3.3.总体设计总体设计 3.13.1 功能模块设计功能模块设计 经过对程序设计题目的分析可知,整个程序的设计实现大致分为 5 个模块,每一 个模块对应一个函数。在这些函数当中,添加运动员数据函数,删除数据函数,某项成 绩排序函数的实现严格按照题目的要求,而更改数据函数和显示函数属于附加功能。读 取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序 的整体运行。录入信息模块是录入运动员信息、查询信息模块是查询运动员信息的、修 改信息模块可以对运动员信息进行修改、删除模块可对运动员信息进进行删除、成绩排 名是对运动员的成绩进行
7、排名,功能模块见图 1 所示。 图图 1 1 功能模块图功能模块图 3.2 系统设计方案系统设计方案 本系统中用到了结构体数组和数据的存储。该结构体数组中包含字符串,系统的设计 方案如下: (1)数据结构 struct student char num20;/运动员号码 char name10;/运动员名字 float baimi;/百米赛跑成绩 float sanjitiao;/三级跳成绩 float chenggantiao;/撑杆跳成绩 ; (2)菜单 设计一个总菜单,0、查询运动员数据;1、添加运动员数据;2、显示运动员数据;3、 删除运动员数据;4、修改运动员数据;5、百米成绩排序;
8、6、三级跳成绩排序;7 撑杆 跳成绩排序;8、退出;基本功能的实现都将体现在这几个菜单选项中。 (3) 函数 定义了 12 个函数 void menu(); int reads(struct student stun);/读取运动员信息 void save(struct student stun,int n);/储存运动员信息 void search();/查询运动员信息 void add();/添加运动员信息 void del();/删除运动员信息 void sort();/ 按百米赛跑成绩查询 void keep();/按三级跳成绩查询 void sheep();/按撑杆跳成绩查询 voi
9、d query();/退出程序 void show();/显示运动员信息 void change();/更改运动员信息 4 4详细设计详细设计 4.14.1 录入信息模块录入信息模块 1. 添加数据函数 添加数据分为两种情况,其一是在运动员文件(student.txt)不存在的情况下,首 先由程序创建一个新文件,并将录入的运动员信息写入该文件当中;其二是在运动员文 件(student.txt)已经存在的情况下,此时文件以追加的方式打开,这样才可以保证以 前已经存在的数据不丢失。 开始 fp=fopen(“c:student.txt”a ”)=null file*fp;int n,i; stru
10、ct student stu; fp=fopen(“c:student.txt”,”w ”)=null “文件打开失败!n” 输入要添加 运动员数量 i=1 scanf(”%s%s”,stu.num, ); scanf(“%f%f%f”, fprintf(fp,”%s%s%f%f%fn”,stu.n um,,stu.baimi,stu.sanjitiao ,stu.chenggantiao); i+ i=n fclose(fp); 结束 y y y n n n 图图 2 2 录入信息流程图录入信息流程图 4.2 查查询询信信息息模模块块 查询文件是在以存的运动员
11、信息中进行查询,可对运动员信息进行查询显示运动员信 息。通过录入运动员号码 num ,与 stui.num 做比较,结果相同进行 m+,m=reads(stu);来提取文件中的数据 开始 inti=0.m;charnum20; structstudent stun;m=reads(stu); scanf(“%s”,num ); i=0 im strcmp(stui,num,n um=0) 输出信息 结束 i+ y y n n 图图 3 3 查询信息流程图查询信息流程图 4.3 修改信息模块修改信息模块 修改信息是对运动员信息进行修改,通过输入 number 与 stui.num 比较,如果相同
12、 进行 n=reads(stu)来提取信息在对信息进行修改。 图图 4 4 修改信息流程图修改信息流程图 4.4 删除信息模块删除信息模块 该函数的核心内容是删除算法以及最终对源文件的更新。该函数执行时,首先调 用 reads 函数将文件中的运动员信息读入数组当中,并由用户输入待删除运动员的号码, 而后按照该号码进行查找,如果文件中存在该运动员的数据,则采用删除算法删除,否 则输出运动员信息不存在的提示信息。对运动员信息的具体删除算法是在结构体数组中 实现的,当运动员的信息被找到后,位于数组中该学生后面的运动员记录依次向前移动 一个元素的位置,这些操作完成后,要删除运动员信息就被后面的数组元素
13、覆盖掉了, 也就实现了删除。 开始 结束 struct student stun;char number20;int n,i,j; n=reads(stu); scanf(“$s” ,number); i-0 i=n 没有找到该 运动员信息 j=i+1 stuj-1 stuj; save(stu,n-1); j+jn i+ n y n y n y 图图 5 5 删除信息流程图删除信息流程图 4.5 成绩排名模块成绩排名模块 对于某项的排序采用的排序算法是冒泡法排序,整个排序过程在结构体数组 stu 中 实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来 协助。排序函数
14、使运动员数据的排列顺序发生了变化,因此也需要对源文件进行更新。 此外,对于运动员排序后名次的确定,仅在结果输出时予以显示,并未将名次信息写入 源文件。具体的程序段如下(由于各项成绩排序函数相同,所以只给出百米赛跑排名程 序): 图图 6 6 成绩排名流程图成绩排名流程图 5调试和测试调试和测试 5.1 测试测试 测试是在完成某一部分功能和全部功能后,根据功能和性能的需求,看看系统有没 有实现要求中的功能,是否达到性能要求。系统测试是软件生存期中的一个重要阶段, 系统质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的 错误和缺陷,所以系统测试应该是“为了发现错误而执行程序的
15、过程”。或者说,系统 测试应该根据程序开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例 (即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错 误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付 出了过高的代价。 测试数据过程如下。 当运动员成绩管理系统进行对运动员数据的添加数据 号码 1 姓名 zhanglinlin 百 米赛跑 10 三级跳 9 撑杆跳 4.5 号码 2 姓名 yushuo 百米赛跑 9.8 三级跳 7 撑杆跳 4。显示信息即显示添加的数据 ,修改数据,查询数据,现在测试系统是否能够正确显 示录入的所有运动员信息,当
16、系统中已存入一定的运动员信息当执行浏览功能时,系统 会将运动员信息全部列出,当系统未存入任何信息是显示无运动员信息 。 测试成功,显示正确,完成测试。 5.2 调试调试 调试是程序编写中的一个重要环节,也是最复杂,对程序编写者来说是一项艰巨的任 务。调试的任务就是及时改正测试过程中发现的错误。具体地说,调试过程由两个步骤 组成,它是从程序中存在错误的某种迹象开始的。首先是确定错误的准确位置,也就是 找出是哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并 设法改正。 调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问 题所在。本系统调试过程中遇到问题
17、、原因和解决方法如下面介绍: (1)程序运行不顺利 在程序运行的过程中出现死循环、不运行和提前结束。原因是程序中出现了逻辑错误, 进入查询页面后,查询的时候显示的是逻辑错误。没有写读取文件的函数 m=reads(stu); 所以读取不了存储的文件 (2)无法将排完序的数据写入到文本文件 stu_list.txt 中去 原因是读写文件的方式不对。 6.结论结论 经过一段时间的学习,制作我的运动会成绩管理系统完成了,但只能说是粗略的完成。 虽然说还存在一写不足的地方,但基本实现了任务说上得所有要求,发现错误并及时修 改,她能够统计学生的比赛成绩和通过成绩进行排名,我设计的成绩还存在一定的不足, 一
18、开始是没有查询功能的 ,经过我不断地努力把程序进行了完善,让它变的更加实用。 7、结束语、结束语 经过两个星期的思考,设计,编程,我真的感到这不是一件简单容易的事情。c 语言 综合训练考察的并不仅仅是我们的基础知识,还有思维上得活跃性,创新性,以及我们 的动手能力。让我了解到要想又好又快地完成一个程序,必须要有坚实的基础和认真的 编写过程。在写本程序的过程中我对文件中数据的排序有了深刻的认识,并且学会指针 的选择排序,但是不会将文件中的某一个数据删除。 8、附录、附录 2源程序源程序 主要模块的源代码清单:#include #include #include #includeconio.h #
19、define n 20 struct student char num20; char name10; float baimi; float sanjitiao; float chenggantiao; ; void menu(); int reads(struct student stun); void save(struct student stun,int n); void search(); void add(); void del(); void sort(); void keep(); void sheep(); void query(); void show(); void ch
20、ange(); int reads(struct student stun) / 读取运动员文件中的内容 file *fp; int i=0; if(fp=fopen(c:student.txt,r)=null) printf(文件打开失败!n); return 0; else for(i=0;!feof(fp);i+) fscanf(fp,%s %s %f %f %fn,stui.num,, fclose(fp); return i; void save(struct student stun,int n) / 运动员信息改变后更新文件 file *fp; int i=0;
21、 if(fp=fopen(c:student.txt,w)=null) printf(文件打开失败!n); return ; else for(i=0;in;i+) fprintf(fp,%s %s %f %f %fn,stui.num,,stui.baimi,stui.sanjitiao,stui.chenggantia o); fclose(fp); void search()/查询运动员信息 int i=0,m; char num20; struct student stun; m=reads(stu); printf(请输入运动员号码:); scanf(%s,num)
22、; printf(号码t 姓名t 百米赛跑t 三级跳t 撑杆跳tn); for(i=0; im; i+) if(strcmp(stui.num,num)=0) printf(n%12s%11s%11.2f%12.2f%11.2fn,stui.num,,stui.baimi,s tui.sanjitiao,stui.chenggantiao); m+; printf(-n); void add()/*添加运动员信息*/ file *fp; int n,i; struct student stu; if(fp=fopen(c:student.txt,a)=null) /如果文件已
23、经存在,可以追 加学生信息 if(fp=fopen(c:student.txt,w)=null) / 文件不存在时,创建新 文件,输入学生信息 printf(文件打开失败!n); return; printf(请输入要添加的运动员数量,按回车键确认:); scanf(%d, for(i=1;i=n;i+) printf(n 请输入第%d 个运动员的号码、姓名,用空格分开,并按回车键确 认:n,i); scanf(%s%s,stu.num,); printf(n 请输入第%d 个运动员的百米赛跑、三级跳和撑杆跳三项成绩,用空格分开, 并按回车键确认:n,i); scanf(%f%
24、f%f, fprintf(fp,%s %s %f %f %fn,stu.num,,stu.baimi,stu.sanjitiao,stu.chenggantiao); fclose(fp); void show() / 运动员信息显示函数 struct student stun; int i,n; n=reads(stu); printf(*所有的学生信息如下 *nn); printf( 序号 号码 姓名 百米赛跑 三级跳 撑杆跳 n); printf(*n); for(i=0;in;i+) printf(n%12s%11s%11.2f%12.2f%11.2fn,stui.nu
25、m,,stui.baimi,s tui.sanjitiao,stui.chenggantiao); 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; else for(j=i+1;jn;j+) stuj-1=stuj; save(stu,n-1); pr
26、intf(删除成功!n); void change() /学生信息更改 struct student stun; int 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,, save(stu,n); void sort() /
27、 按百米赛跑成绩排名 struct student stun,temp; int i,j,n; n=reads(stu); for(i=0;in-1;i+) for(j=0;jstuj+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) if(stui.baimi!=0) p
28、rintf(n%3d%12s%11s%11.2f%11.2fn,j,stui.num,,stui.baimi,s tui.baimi); else printf(n%3d%12s%11sttttn,j,stui.num,); else printf(n%3d%12s%11s%11.2f%11.2fn,j+,stui.num,,stui.baimi, stui.baimi); getch(); void keep() / 按三级跳成绩排名 struct student stun,temp; int i,j,n; n=reads(stu); f
29、or(i=0;in-1;i+) for(j=0;jn-1;j+) if(stuj.sanjitiaostuj+1.sanjitiao)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.sanjitiao=stui+1.sanjitiao) printf(n%3d%12s%11s%11.2f%11.2fn,j,stui.num,,stui.sanjitia o,stui.sanjitiao); else printf(n%3d%12s%11s%11.2f%11.2fn,j+,stui.num,,stui.sanjit iao,stui.sanjitiao); getch(); void sheep() / 按三级跳成绩排名 struct student stun,temp; int i,j,n; n=reads(stu); for(i=0;in-1;i+) for(j=0;jn-1;j+) if(stuj.chenggantiaostuj+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届河北省永年县一中高一物理第二学期期末监测模拟试题含解析
- 教育技术应用与文化传承的关系研究
- 教育技术中的专利申请与风险规避
- 2025届江西省丰城二中高二物理第二学期期末预测试题含解析
- 2025届广东省广州市番禺区禺山高级中学物理高一下期末调研模拟试题含解析
- 探索教育游戏化如何影响孩子的情绪认知能力
- 教育技术项目的投资规划与风险控制
- 福建省师范大学附中2025年高一物理第二学期期末考试试题含解析
- 医疗培训中融入教育心理学的效果评估
- 技术如何塑造现代办公模式
- 暑假的一次冒险经历记事作文4篇范文
- 入职预支薪资协议书
- 《中国特色社会主义理论体系的形成和发展》(课件)
- 职业技术学院婴幼儿托育服务与管理专业人才培养方案
- 2025台州市椒江区辅警考试试卷真题
- 中学生零食消费情况调查与分析
- 国开本科《管理英语4》机考总题库及答案
- 软装行业竞品分析报告
- 公司收购公司协议书
- 基于移动端的互联网金融服务创新研究
- T∕CACM 024-2017 中医临床实践指南 穴位埋线减肥
评论
0/150
提交评论