1、输入要求: 可输入学院信息(学院编号、学院名称、运动员编号、运动员姓名、运动员性别、项目编号、项目名称、名次),有中文提示,在输入的同时限定输入数据的大小以及一些错误输入。输出要求: 输出内容整洁,排列有序。界面要求:界面布局合理整洁,有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。2.总体设计2.1系统设计方案 根据课程设计任务书要求,本方案要求准备结构体数组、读写文件。还能把信息直接输入存储到文件中,读取文件中信息,从而得到结果。1) 菜单设计分为主函数菜单,比赛数据输入菜单,学院
2、、男子团体、女子团体总分排序输出菜单,查询学院成绩菜单、查询项目排名菜单。 2) 数据保存方式建立文件,数据保存在文件中。3) 数据类型采用结构体类型。4) 存储结构采用结构体类型数组存储结构存储。5) 算法设计输入比赛结果模块中运用了冒泡算法将输入的数据排序。2.2功能模块设计根据分析整个系统主要划分为4个功能模块,分别执行要求中的功能。该系统分为比赛数据输入、总分排序输出、查询比赛成绩模块。总分排序输出模块有三个子模块,分别是:按学校总分排序输出模块、按男子团体总分排序输出模块和按女子团体总分排序输出模块;查询比赛成绩模块分为按学院编号查询模块和按项目编号查询两个子模块。图2.1 功能模块
3、图1) 比赛数据输入模块比赛成绩输入模块分为:创建信息部分,创建学院数,男子项目数,女子项目数,学院信息,比赛项目信息,运动员信息,成绩输入部分需根据项目编号,按排名依次输入学院编号,运动员编号,最后将数据依次写入文件。 2) 比赛成绩输出模块读取比赛数据,冒泡算法排序,按选择输出学院、男子团体或女子团体总分的排名情况。3) 查询比赛成绩模块选择按学院编号查询模块或按项目编号查询输入相应的编号输出查询结果。3.详细设计3.1数据结构定义建立结构体如下:typedef struct PlayerInfo /存储运动员相关信息 char PlayerNameMAXSIZE; int Sex; /运
4、动员性别 int PlayerNumber; int PlayerScore; struct PlayerInfo *next;Player;typedef struct SchoolInfo /存储学校相关信息 char SchoolNameMAXSIZE; int SchoolNumber; int SchoolScore; /学校总分 int WomenScore; /女子总分 int MenScore; /男子总分 Player *PlayerHead; int PlayerData; struct SchoolInfo *next;School;typedef struct Matc
5、hItem /存储运动项目的相关信息 char MatchNameMAXSIZE; int MatchNumber; int range5; /存储获得前三名或前五名的学校 int Player5; /存储获得前三名或前五名的运动员 struct MatchItem *next;MatchPro;typedef struct PreNews /存储要输入的学校,男女项目个数 int SchoolSum; /学校总数 int ManItemSum; /男子项目总数 int WomanItemSum; /女子项目总数 int PlayerSum; /运动员总数PNews;3.2比赛数据输入模块比赛
6、数据输入模块需要输入学院数,男子项目数,女子项目数,学院信息,比赛项目信息,运动员信息,成绩输入部分需根据项目编号,按排名依次输入学院编号,运动员编号,最后将数据依次写入文件。图3.1比赛数据输入流程图此模块定义变量i,j先初始化储存分数的数组各元素,定义flag标记,while循环与for循环实现各学校信息的输入,包括学校编号、项目编号、运动员编号,使用if语句实现对输入的数据判断是否合法,选择是取前三名或前五名,使用switch语句选择添加总分。3.3比赛成绩输出模块比赛成绩输出模块实现按要求输出相应的数据。有以下输出选项:按学校总分排序输出、按男子团体总分排序输出和按女子团体总分排序输出
7、。模块定义了int i,j,k,flag;School PTemp=0变量, for循环包括switch语句,选择输出按学校总分排序输出、按男子团体总分排序输出和按女子团体总分排序输出相应的数据,同时实现冒泡排序。for循环实现输出各个方式输出的每个数据。3.3查询比赛成绩模块查询比赛成绩模块包括:按学校编号查询,按项目编号查询。此模块定义了int i,j; switch(choice)实现查询的两种方式的选择,使用while循环与for循环查询相关数据,从而输出相关数据,从而实现查询功能。4.调试与测试程序测试是程序质量保证的关键步骤从用户的角度来看,普遍希望通过程序测试暴露程序中隐藏的错误
8、和缺陷,所以程序测试应该是“为了发现错误而执行程序的过程”。或者说,程序测试应该根据程序开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。以下是程序调试与测试的展示。4.1测试数据4.1.1 School.txtcqkjxy 1 13 3 10 5czw 1 1 13ld 2 1 0zql 3 1 0dx 4 2 0tjb 5 2 0cqd
9、x 2 20 5 15 5fuc 6 1 17kyo 7 1 3uyo 8 1 0udo 9 2 0ngd 10 2 0cqsfxy 3 21 8 13 5zxx 11 1 21wxx 12 1 0lxx 13 1 0cxx 14 2 0txx 15 2 0cqykdx 4 16 12 4 5tmd 16 1 16tnn 17 1 0tmm 18 1 0ccc 19 2 0xxx 20 2 0scmsxy 5 12 8 4 5csa 21 1 12wqe 22 1 0fgd 23 1 0yjg 24 2 0fdr 25 2 04.1.2 MatchItem.txtfeifei 5 4 17 3
10、 13 2 8 1 4 5 25tiaotiao 4 5 24 4 19 3 12 2 9 1 5paopao 3 3 11 2 7 1 1tiaolou 2 2 6 3 13 5 23 4 18 1 4tiaogao 1 1 2 2 6 3 13 4 17 5 224.1.3 PreNews.txt 5 3 2 254.1程序主界面图4.1程序主界面4.2输入数据图4.2数据输入(1)图4.3数据输入(2)图4.4数据输入(3)4.3排序输出学校总分图4.5排序输出学校总分4.4排序输出男子团体总分图4.6排序输出男子团体总分4.5排序输出女子团体总分图4.7排序输出女子团体总分4.6按学校
11、查询项目数据图4.8按学校查询项目数据4.7按项目查询数据图4.9按学校查询项目情况5.总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的
12、,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高.参考文献1 严蔚敏 吴伟民.
13、 数据结构. 清华大学出版社.2007.32 李春葆. 数据结构教程. 清华大学出版社.2005.13 (美)Stephen Prata. C Primer Plus中文版(第五版). 人民邮电出版社.2005.24 杨路明 郭浩志. C语言程序设计教程. 北京邮电大学出版社. 2005.125 谭浩强. C程序设计.第三版. 清华大学出版社. 2005.26 徐孝凯. 数据结构实用教程. 清华大学出版社. 2006.87 刘大有. 数据结构C语言版. 高等教育出版社. 2004致谢 首先感谢在本次课程设计中老师们的辛勤指导,感谢XX师,还要感谢在本次课程设计中帮助我的同学,感谢XX等同学的帮
14、助,最终在老师和同学的帮助和指导下完成了这次的课程设计。附录:程序代码:#include stdlib.hmalloc.hstring.hconio.h#define MAXSIZE 20typedef struct PlayerInfotypedef struct SchoolInfotypedef struct MatchItemtypedef struct PreNewsvoid ChiefMenu(MatchPro *MatchHead,PNews *PreNode,School *SchoolHead);PNews *BeginInput(PNews *PreNode);void P
15、reNews_Write(PNews *PreNode);School * Add_School(School *SchoolHead,PNews *PreNode);void School_Write(School *SchoolHead,PNews *PreNode);MatchPro * MatchInput(MatchPro *MatchHead,PNews *PreNode,School *SchoolHead);void Match_Write( MatchPro *MatchHead,PNews *PreNode,School *SchoolHead);PNews * PreNe
16、ws_read(PNews *PreNode) ;School * School_Array_Read(PNews *PreNode);MatchPro * Match_Read(MatchPro *MatchHead,PNews *PreNode);School * CountSchoolScore(School *SchoolHead,PNews *PreNode);School * SchoolOrder(School *SchoolHead,int Total_PointsType,PNews *PreNode);void ShowScore(School *SchoolHead,PN
17、ews *PreNode,int Total_PointsType);int ShowScore_School(MatchPro *MatchHead,School *SchoolHead,PNews *PreNode);int QueryItem(MatchPro *MatchHead,School *SchoolHead,PNews *PreNode);void ClearNode(MatchPro *MatchHead);void ChiefMenu(MatchPro *MatchHead,PNews *PreNode,School *SchoolHead) int choice=1;
18、while(choice) printf( 欢迎进入运动会分数统计系统! nn); printf( 1.按系统提示输入关于运动会各种信息! 2.排序输出学校总分. nn 3.排序输出男子团体总分. nn 4.排序输出女子团体总分. nn 5.按学校编号查询学校某个项目的情况. nn 6.按项目编号查询取得前三名或前五名的学校. nn 0.退出运动会分数统计系统!nnn请输入你要进行的步骤: scanf(%d,&choice); system(cls switch(choice) case 1:Match_Write(MatchHead,PreNode,SchoolHead); break; c
19、ase 2: ShowScore(SchoolHead,PreNode,1); case 3: ShowScore(SchoolHead,PreNode,2); case 4: ShowScore(SchoolHead,PreNode,3); case 5: QueryItem(MatchHead,SchoolHead,PreNode); case 6: ShowScore_School(MatchHead,SchoolHead,PreNode); case 0: free(SchoolHead); free(MatchHead); free(PreNode); choice=0; print
20、f( 您已安全的退出程序! n default :您输入的有误 getch(); PNews *BeginInput(PNews *PreNode) int SchoolCount = 0; int WomenCount = 0; int MenCount = 0; int PlayerCount = 0; while(1)请输入参加比赛的学校个数:SchoolCount); if(SchoolCount=5) PreNode-SchoolSum = SchoolCount; else输入数据不合法,请重新输入!n 请输入男子比赛的项目个数:MenCount); if(MenCount20|M
21、enCount20|WomenCountWomanItemSum = WomenCount;请输入运动员个数:PlayerCount); if(PlayerCountSchoolSum,PreNode-ManItemSum,PreNode-WomanItemSum,PreNode-PlayerSum); fclose(fp);写入成功!School *Add_School(School *SchoolHead,PNews *PreNode) int i = 0,j = 0,k = 0; SchoolHead = (School *)malloc(sizeof(School)*PreNode-SchoolSum); if(NULL=SchoolHead)分配内存失败,程序结束 for( i = 0;i SchoolSum;i+)请输入第%d个学校的名称n,i+1);%sSchoolHeadi.SchoolName); SchoolHeadi.SchoolNumber=i+1; SchoolHeadi.SchoolScore = 0; SchoolHeadi.MenScore = 0; SchoolHeadi.WomenScore = 0; SchoolHeadi.Play
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1