运动会分数统计数据结构课程设计(含源代码)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机学院信管专业数据结构课程设计题目:运动会分数统计班级:姓名:学号:同组人姓名:起迄日期:课程设计地点:指导教师:评阅意见:成绩评定:评阅人:日期:完成日期:2013年12月-1-目录1、需求分析……………………………………………………022、概要设计……………………………………………………033、详细设计……………………………………………………044、调试分析和测试结果………………………………………055、总结…………………………………………………………136、参考文献……………………………………………………147、致谢…………………………………………………………148、附录…………………………………………………………14-2-1、需求分析(1)任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)(2)功能要求:a).可以输入各个项目的前三名或前五名的成绩;b).能统计各学校总分,c).可以按学校编号、学校总分、男女团体总分排序输出;d).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。(3)规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)(4)输出形式:有中文提示,各学校分数为整形(5)界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。(6)存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(7)测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;-3-2、概要设计(1)文字分析本课设要求输入信息,统计分数,执行排序与查找功能,在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。考虑到程序的要求在设计函数时将学校个数和项目个数设计为可变的数据,为方便使用设计菜单函数(menu),而由于要求将信息存储在文件中故设计文件的存储(savetofile)与读取函数(readfromfile),信息输入函数(input)在输入基本信息后由系统统计总分的内容并全部存入文件file中,在接下来的函数中开始都需要读取文件中的信息,信息的输出(output)输出输入函数中统计后的各项信息,在排序输出(sortput)中使用冒泡排序法进行不同关键字的排序,查询函数(search)采用顺序表的查找来完成。开始进入主菜单菜单选项(0—4)1.信息输入2.统计输出3.排序输出4.信息查询5.退出结束-4-3、详细设计(1)项目数据表:运动会系统先制定本次运动会所需的参赛项目。本数据表根据要求设计存储每个项目的编号、要取的名次、各个名次名称及各名次对应的分数。用于对以后项目情况的统计已及查询。其中inum,top,range由输入信息输入,而mark有range和top决定。typedefstruct{intinum;/*项目编号*/inttop;/*取名次的数目*/intrange[5];/*名次*/intmark[5];/*分数*/}itemnode;/*存放项目信息*/(2)学校数据表:本数据表根据要求储存了各个参赛学校的总体情况,包括学校的编号、学校总分、男子团体总分、女子团体总分,并且包括项目数据数组t[n]。其中snum和t[n]中部分数据由输入信息输入,而其他三项内容score,mscore,wscore将由系统进行自动统计。typedefstruct{intsnum;/*学校编号*/intscore;/*学校总分*/intmscore;/*男团体总分*/intwscore;/*女团体总分*/itemnodet[M+W];/*项目数组*/}snode;/*存放学校信息*/snodea[N];/*定义一个学校数组*/这二个数据表相关联接,a[n]中包括t[n],形成一个整体。-5-(3)模块划分1、Voidmenu(intn,intm,intw)功能是提供界面窗口2、Voidsavetofile()功能是保存输入的运动会信息到file文件3、Voidreadfromfile()功能是从file文件中读取运动会信息4、Voidinput(intn,intm,intw)功能是输入信息并统计5、Voidoutput(intn,intm,intw)功能是按学校、项目输出统计信息6、Voidsortput(intn,intm,intw)功能是按四种方法排序并输出结果7、Voidsearch(intn,intm,intw)功能是按两种方法查询并输出结果4、调试分析与测试结果(1)测试数据测试取学校个数为3,男子项目个数2.女子项目个数1(2)测试结果1、主菜单界面项目学校编号1(男)编号2(男)编号3(女)取前3取前5取前5编号1名次31、43、4编号2名次22、51、5编号3名次132-6-2、信息输入运行测试a).信息输入-7-b).输入完成-8--9-3、统计输出运行测试a).统计输出-10-b).统计输出完毕4、排序输出运行测试a).选择排序输出形式b).按学校编号输出-11-c).按学校总分输出d).按男团总分输出-12-d).按女团总分输出5、信息查询运行测试a).选择信息查询方式-13-b).按学校编号查询c).按项目编号查询-14-6、退出系统运行测试5、总结通过为期四天的课程设计,我对《数据结构》这门课程有了更深一步的了解,使我对《数据结构》这门课程掌握以及运用更加灵活。虽然是应用C语言来编写程序,但却深刻的体现了数据结构对编程的重要性。这次课程设计运用C语言与数据结构知识,编写一个运动会分数统计系统。其中遇到了不少问题,因为对《数据结构》这一门课程掌握不够熟练以及平时自己在编写一些普通常见的程序时只是运用单一的知识而课程设计却需要将各个方面的内容联系结合,例如文件与程序的结合,输入、输出、统计、查找的综合应用等,因此真正的程序设计必须先有一个正确的算法思想,运用正确的数据结-15-构和编程语言,灵活的运用并联系几个方面的内容。通过课程设计也使我认识到,要学好编程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西6、参考文献[1]严蔚敏,吴伟民;《数据结构(C语言版)》,清华大学出版社,2007年[2]王裕明;《数据结构与程序设计》,清华大学出版社,2010年[3]谭浩强;《C语言程序设计(第三版)》,北京航空航天大学出版社,2005年[4]李建学;《数据结构课程设计案例精编(用C/C++描述)》,清华大学出版社,2007年[5]催俊凯;《计算机软件基础》,机械工业出版社,2007年[6]、致谢本次试验能够如期完成,主要是要感谢席老师课堂上的讲解以及指导,才能使我对《数据结构》这门课程有较为深入的理解与掌握,才能在本次课程设计中得以运用。再加上课程设计过程中的程序设计建议,才使得这次课程设计中所遇到的问题能够较快的解决其次,我还要感谢和我一组的赵咏荔同学,通过两个人的共同协作,才使得本次课程设计能够较好的完成。同时,还要感谢平时课堂上以及课堂外给我帮助的同学们,能够热心的为我解答我所存在的疑问,并为我的程序提出一些建议。8、附录源代码:#includestdio.h#includemath.h#includeprocess.h#defineN20/*学校最大数目*/-16-#defineM20/*男子项目最大数目*/#defineW20/*女子项目最大数目*/typedefstruct{intinum;/*项目编号*/inttop;/*取名次的数目*/intrange[5];/*名次*/intmark[5];/*分数*/}itemnode;/*存放项目信息*/typedefstruct{intsnum;/*学校编号*/intscore;/*学校总分*/intmscore;/*男团体总分*/intwscore;/*女团体总分*/itemnodet[M+W];/*项目数组*/}snode;/*存放学校信息*/snodea[N];/*定义一个学校数组*/voidmenu(intn,intm,intw)/*菜单函数*/{intc;voidinput(intn,intm,intw);voidoutput(intn,intm,intw);voidsortput(intn,intm,intw);voidsearch(intn,intm,intw);printf(\t\t\t欢迎使用\t\t\t\t\n\n);printf(\t***********运动会分数统计系统***********\n\n);printf(\t\t*******1.信息输入*******\n);printf(\t\t*******2.统计输出*******\n);-17-printf(\t\t*******3.排序输出*******\n);printf(\t\t*******4.信息查询*******\n);printf(\t\t*******0.退出系统*******\n\n);printf(=======================================================\n\n);printf(请选择要实现步骤的编号(0--4):);scanf(%d,&c);switch(c){case1:input(n,m,w);break;case2:output(n,m,w);break;case3:sortput(n,m,w);break;case4:search(n,m,w);break;case0:printf(谢谢使用,再见!\n);exit(0);default:printf(输入错误,请重试!\n);menu(n,m,w);}}voidsavetofile()/*信息存入文件file*/{FILE*fp;inti;-18-if((fp=fopen(file.txt,w))==NULL){printf(cannotopenthefile\n);return;}for(i=0;iN;i++){if(a[i].snum!='\0')if(fwrite(&a[i],sizeof(snode),1,fp)!=1){printf(filewriteerror\n);return;}}fclose(fp);}voidreadfromfile()/*信息从文件file中取出*/{inti;FILE*fp;if((fp=fopen(file.txt,rb))==NULL){printf(cannotopenthefile\n);return;}for(i=0;iN;i++)fread(&a[i],sizeof(snode),1,fp);fclose(fp);}-19-voidinput(intn,intm,intw)/*1.信息输入*/{inti,j,s,k,q=0;for(i=0;in;i++){printf(学校编号:);scanf(%d,&a[i].snum);/*输入学校信息*/for(j=0;jm+w;j++){printf(项目编号:);scanf(%d,&a[i].t[j].inum);printf(项目取前3名或前5名(3或者5):);scanf(%d,&a[i].t[j].top);if(a[i].t[j].top==3)printf(获得名次个数(1--3):

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功