题目
竞技比赛中运动员成绩管理系统
1需求分析和说明
本实例实现了竞技比赛中运动员成绩管理系统。运行程序后,用户首先需要输入各个裁判对运动员的打分,程序会自动将其保存在一个用户指定的文件中。程序具有以下几项功能:求出各运动员的总分数、平均分,按姓名、按号码寻找其记录并显示,浏览全部运动员的成绩和按平均分由高到低显示运动员信息等。用户可以根据主菜单的提示选择不同的功能项。
1.1基本要求
(1)界面友好,易与操作。采用菜单或其它人机对话方式进行选择。
(2)运动员成绩表的组织。运动员成绩应包括姓名、序号、三位裁判员打分的成绩、平均成绩4项内容(也称4个字段)。
(3)运动员成绩的录入。完成运动员成绩的录入,按照上述定义的字段逐一输入运动员成绩,并以适当格式存储。
(4)查询运动员的成绩。能实现按姓名和按号码查询。
(5)显示/打印成绩表。按照一定的格式美观地将成绩表显示在屏幕上或者输出到打印机上。
(6)统计计算。计算各运动员的平均成绩。 (7)排序。对运动员成绩进行排序。
1.2各功能模块的功能描述:
1.主函数模块
本模块的主要功能是初始化图形界面,调用各模块,实现软件功能。 2.成绩录入模块
本模块的主要功能是键盘输入运动员姓名、序号、成绩等,按一定格式创建并保存到数据文件中。
3.查询模块
本模块的主要功能是通过运动员的序号或姓名以查询运动员的基本信息。 4.列出信息模块
本模块的主要功能是列出所有运动员的信息。
课 程 设 计 报 告 书 专 用 纸
5.信息排序模块
本模块的主要功能是按照运动员平均成绩由高到低的顺序来进行排序,并依次输出。
2详细设计
2.1模块调用图
主控模块 成绩录入模块查询模块列出信息模块信息排序模块 图1 运动员比赛成绩模块调用图
2.2算法思想
1.主函数模块
完成菜单的显示,根据用户输入调用不同的子函数实现相应的功能。主函数中调用switch()语句完成对各功能函数的调用。
课 程 设 计 报 告 书 专 用 纸
Int m ; char name[21], code[21] 1 Y n=getN() N Printf(“……”) CASE m CASE=0 CASE=1 CASE=2 CASE=3 CASE=4 CASE=5 结束
图2 主函数模块流程图 2.成绩录入模块
在实现添加功能时,要对每个运动员的基本信息进行添加,需要注意的是添加每个运动运的成绩时需要进行三次记录,每个运动员计入成绩和计入每个运动员的所有信息构成两个循环结构,循环次数分别由裁判数和运动员人数控制。流程图如下:
课 程 设 计 报 告 书 专 用 纸
开始 输入运动员序号 Y 序号是否重复 N 输入运动员信息 结束
图3 成绩录入模块流程图
3.查询模块
本程序中实现了两种查询方式,一种是按运动员姓名查询,另外一种是按号码查询。程序中定义了下面两个函数来实现此项功能:
int search1(char *filename,char *key) int search2(char *filename,char *key)
函数search1的作用是按名字来查询运动员的信息,其中key指定了要查询的运动员的姓名。函数search2的作用是按号码来查询运动员的信息,其中参数key指定了要查询的运动员的号码。如果查找成功,两个函数都会返回1;否则返回0。
具体查询过程中的流程图如下:
课 程 设 计 报 告 书 专 用 纸
开始 输入姓名 是否存在 Y Y 输出相关信息 N 结束
图 4 按运动员姓名查询模块流程图
开始 输入序号 是否存在 Y 输出相关信息 N 结束
图5 按运动员号码查询模块流程图
课 程 设 计 报 告 书 专 用 纸
4.列出信息模块
此模块的作用是列出所有运动员的信息。流程图如下:
FILE *fp Clrscr() 文件打开成功 Y i=0 N i 课 程 设 计 报 告 书 专 用 纸 5.信息排序模块 此模块的作用是按平均分由高到低的顺序来对运动员排序,并依次输出。此程序通过函数sort()来实现此功能,其中采用冒泡排序法。 流程图如下: 开始 读文件 随机输出运动员信息 冒泡排序 按平均成绩高低输出运动员信息 结束 图7 信息排序模块流程图 课 程 设 计 报 告 书 专 用 纸 3用户手册 (1)第一次使用这个软件时。 图8 系统对话框 (2)按“0”输入运动员比赛成绩信息。 图9 “运动员比赛成绩输入信息”窗口 (3)按“1”进入系统输入运动员姓名查询运动员的成绩信息。 图10 按姓名查询窗口 (4)按“2”进入系统输入运动员序号查询运动员的成绩信息 课 程 设 计 报 告 书 专 用 纸 图11 按号码查询窗口 (5)进入系统按“3”就可以查询所有运动员的成绩信息 图12 显示所有运动员的成绩信息窗口 (6)进入系统按“4”就可以查询按平均成绩进行排序的所有运动员的成绩信息 图13 显示排序后的运动员成绩信息窗口 (7)当使用完运动员比赛成绩管理系统按“5”就可以退出系统。 课 程 设 计 报 告 书 专 用 纸 图14 退出运动员比赛成绩管理系统 4测试结果 4.1测试数据及运行结果 下面对几组数据进行测试。 姓名 lili qinan jingjing 序号 01 02 03 JudgementA 88 78 89 JudgementB 88 89 77 JudgementC 88 98 99 4.2运行结果分析 运行结果符合预定目标。 课 程 设 计 报 告 书 专 用 纸 5心得体会 这次课程设计虽然只有短短的两周时间,但此过程中我得到的收获却没有时间的界限。在这期间,我有刚开始对于设计的茫然,也有设计过程中面对不熟悉的知识的焦急,更有面对程序运行出错时的惆怅,同时还有当自己把设计的思路一点点想清楚,把程序代码上出现的错误一个个改正确,把程序成功运行出来的那份难以表述的喜悦!成功的背后有过一丝丝彷徨,但拨开乌云的天空通常看到的是美丽的彩虹! 它对于我精神上的收获确实不少,学习上也受益匪浅。 通过这次“运动员比赛成绩管理系统”课题的设计,通过这个阶段的实践,使我对C语言进行了深入的学习。同时设计的过程中,为了实现预期的功能,我利用了图书馆内相关的资料进行参考,也使我懂得一些初次学习过程中不太熟悉的知识。在实践中,我利用图书馆和网络,查找了相关的信息。也明确在以后的学习过程中,我应该多利用这些有效的途径来充实自己的知识点,学习得更深入,“善假于物”也是一种有效的学习方法。在程序调试的过程中,遇到了好几个自己没能及时解决的问题,我选择的是请教老师和同学,在你们的指导下,我成功调试出程序。学习的过程除了需要自己要独立思考问题之外,还应该要有与他人的互动。我想这也就是集体的智慧,团结的力量! 在此过程中,我也发现了许多自己的不足。在我刚开始设计的时候,头脑里没有一点清晰的思路,这就与平时自己看得少,练得少有关系。所以我觉得学习任何一门语言还是需要多看书,多编写程序,特别是当自己突然有一丝灵感的时候,最好记录下来,甚至把它想出来,想明白。实践的过程中,要明确自己写这些程序是为了达到什么目的,实践后,要考虑这样编写是不是最好的,还能不能做其它方法来做,在编写这个程序中遇到了什么样的错误,为什么会遇到,以后应该怎样避免。这样的学习,就会更深入,学习得更好! 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在李老师的辛勤指导下,终于游逆而解。同时,在李老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 课 程 设 计 报 告 书 专 用 纸 6参考文献 [1]谭浩强等.C语言程序设计教程.北京:高等教育出版社,1997 [2]谭浩强.C程序设计.第2版.北京:清华大学出版社,1999 [3]郭浩志.C语言程序设计.北京.北京邮电大学出版社,2005 [4]《C陷阱与缺陷》.北京:人民邮电出版社,2008 [5]谭浩强、张基温. C语言程序设计教程.北京:高等教育出版社,2006 [6]《C程序设计经典教程》.北京:清华大学出版社,2006 课 程 设 计 报 告 书 专 用 纸 因篇幅问题不能全部显示,请点此查看更多更全内容