版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
洛阳理工学院课程设计报告课程名称 数据结构课程设计 _设计题目运动会分数统计系统专业 计算机科学与技术班级 学号_ 姓名 完成日期 2016.12.30 课程设计任务书设计题目 运动会分数统计系统 设计内容与要求:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。指导教师:张新颜2016年12月日课程设计评语成绩:指导教师: 洛阳理工学院课程设计报告.算法思想:本课设要求输入信息,统计分数,执行排序与查找功能,在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。考虑到程序的要求在设计函数时将学校个数和项目个数设计为可变的数据,为方便使用设计菜单函数(menu),而由于要求将信息存储在文件中故设计文件的存储(savetofile)与读取函数(readfromfile),信息输入函数(input)在输入基本信息后由系统统计总分的内容并全部存入文件file中,在接下来的函数中开始都需要读取文件中的信息,信息的输出(output)输出输入函数中统计后的各项信息,在排序输出(sortput)中使用冒泡排序法进行不同关键字的排序,查询函数(search)采用顺序表的查找来完成。开始进入主菜单菜单选项(0-4)洛阳理工学院课程设计报告2.模块划分:1、Voidmenu(intn,intm,intw)功能是提供界面窗口。2、Voidsavetofile() 功能是保存输入的运动会信息到file文件功能是从功能是从file文件中读取运动会信息功能是输入信息并统计功能是按学校、项目输出统计信息洛阳理工学院课程设计报告3、Voidreadfromfile()4、Voidinput(intn,intm,intw)5、Voidoutput(intn,intm,intw)6、Voidsortput(intn,intm,intw)功能是按四种方法排序并输出结果开始输入c按女生项目排序结束7、Voidsearch(intn,intm,intw)功能是按两种方法查询并输出结果主函数8、voidmain()主函数洛阳理工学院课程设计报告.数据结构:(1)项目数据表:运动会系统先制定本次运动会所需的参赛项目。本数据表根据要求设计存储每个项目的编号、要取的名次、各个名次名称及各名次对应的分数。用于对以后项目情况的统计已及查询。其中inum,top,range由输入信息输入,而mark有range和top决定。typedefstruct(intinum; /*项目编号*/int top; /*取名次的数目*/int range[5]; /*名次*/int mark[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],形成一个整体。
洛阳理工学院课程设计报告.测试:测试取学校个数为3,男子项目个数2.女子项目个数1。\项目编号1(男)编号2(男)编号3(女)学校取前3取前5取前5编号1编号2名次31、43、4名次22、51、5编号3名次132将上述所有学校的信息输入,然后计算出所有学校的总分,男子项目的总分,女子项目的总分,然后再将自己计算出的数值与所做成的系统比较,观看是否存在误差和错误。1.主菜单界面而七娘蕤出、小一厂.口E£kt叩快如浮绘吟,欢迎使用***********运动会分数统计系统***********请先输入运动会主要信息输入学校个教:3命人男子项目个数:2欢迎使用游人女子项目个数:1欢迎使用***********运动会分数统计系统*********************1,信息输入2,统计输出3,排序输出4.信息查询0,退出系统*****老师你最好看请选择要实现步骤的编号9—4):1.信息输入测试:预计输入三个学校的信息。洛阳理工学院课程设计报告请选绎要实现步骤的编号(0—4):1学校桀号:1顷目绢号:1顼目取前3名或前5名(3或者5);3我得名次个数(1一3):1所获名次(1-3)二3顷目绡号;2面目取前3名或前5名(3或者5):5换得名次个数0--5):2岬获名次0—5):1所获名次11-5〉:4喷目桀号:3顷目取前3名或前5名(3或者5):5凌得名次个数(1一5):2所获名次(1—5):3所获名次(1一5):4学校绡号:2顼目编号:1哽目取前3名或前5名(3或者5);3获得名次个数。-3):1所获名次。一3)二2哽目编号:2顼目取前3名或前5名(3或者5):5获得名次个数(1一5):2行获名次U—5):2所获名次(1—5):5.统计输出测试:预计输出三个学校信息。********/**[互动,会分数筵T+系统***********L信息检人之统计输出3「排序输出4信息查-均。,退出系统:*请选择要实现步骤的编号(。-•4).2学校编号M 学校总分:16男团总分:11女团总分:5项目编号二1所取名次数量:3名次:3分数:2项目编号二2所取.名次裁量:5芸次:1分数:7名次:4分数:2项目编号;3所取名次数量:5名次;3分薮二3名次:4分数:2学校编号;学校总分门了男团总分;9女团总分用项目编号二1所取.名次数量二3名次:2分数:3项目编号:2所取名法数量:5名氏:2分数:5名次:5分数门项目编号:3所取.名次薮是;5名次:1分敷:7名次:5分数M
洛阳理工学院课程设计报告4.排序输出测试。实现学校总分,男团总分,女团总分均可排序输出。欢迎使用*******本**木***木木;云司,会'分■娄上会充■i1干系£克**率*木辛本**中中*****1,信息输入.统计输出.排序输出.俵息查询0,退出系统老师你最好看清选择要实现步骤.斡编号(0--4):3**+*********半*,彳上岸输出系****率********+************1_按学校维号输出************水水本*卡*水土本木本木2一按学校这分输出++*+*++******¥本率********3.按与团,除分输出本**************半********4:接女团A务薪出************请选择要实现功能的编号(1—4):2学校辅学校总分;17号团总分力女团思分由学校编号:1学校总分:16窘团总分:11女团总分二5学校箍号:3学校忠分:13男团总分:E女团点分:5请选择1返回主菜单0继续欢迎使用***********运动会分效牝m+系统************1一信息输入**2.统计输出**3.排.序输出**4信息查询**。.退出系统*老师你透好看*请选择要实现步骤的第号(0--4):3****亲*********#上序^■出系^^**************水水**木率水**木本水1.按学才交编号输出洋水水水木洋水本水*洋水************2.学才史.落分篇由***********************+3.4应旁团.落分输由***++*******************4按丢团息分输出************请选择要实现功能的缰号(1--4):4学校编号:2学校总分:17男团总分;9女因总分⑵学校编号;1学校总分:16男团总分;11女团总分;5学校猛号:3学校总分:13男团总分:8女因总分:5请选择1返回主菜单。维犊5.信息查询测试:预计可以用学校编号和项目编号查询。
洛阳理工学院课程设计报告欢迎使用**********动分统]+系统***********TOC\o"1-5"\h\z1.41息输入 *2.统计输出 *3.排序揄出 *4.信息查:询 *0.退出系统 *\o"CurrentDocument"老师你最好看 *请选择受实现步歌的编号⑴一个:4***************_^^询系g无*************琳**1,按学校编号查询 *2,按项目编号查询 *请选择要实现功能的编号(1—2):1要查洵的学校编号;2要查询的项目编号:1这个项目取前3名,该学校的成绩■如下:名次:2请选舞:1.返回主菜单。,继续欢迎使用***********之军动会分数统计系施*********************1.信息输入2.统讦输由3排序输出4.信息查询0.退出系统*****老牌你最好看请选搽要实现步骤的编号(0--4):4*本本*木*木东水木水外木木木木查西系^****************1.按学校编号查询 *2.按项目编号查询 *请选搽要实现功能的编号(1—2):2要查询的项目编号:3该项目版前5名,取得名次的学校学校编号1名次:3学校褊号:1,名次;4学校编号2名次:1学校编号:2,名次:5学校编号:3,名次:2请选搽:1,返回主菜单CL继钱
洛阳理工学院课程设计报告6.结束程序测试:预计直接退出系统。欢迎使用人出出询统输输输交系息计序息出人出出询统输输输交系息计序息出俏统排肩退1工a4s********* 老师你最好看 *请选择要实现步琳的编号(0-4);0诩谢使用,再见!请按任意键继续...经过运算与测试结果比较,发现预期结果与运行结果一致。所以运动会分数统计系统正确无误。5.源程序:#include<stdio.h>#include<math.h>#include<stdlib.h>#defineN20/*学校最大数目*/#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*1.信息输入*\t\n");printf("\t*2.统计输出*\t\n");printf("\t*3.排序输出*\t\n");printf("\t*4.信息查询*\t\n");printf("\t*0.退出系统*\t\n\n")printf("\t*老师你最好看*\t\n");printf(\L —\n\n);printf(〃请选择要实现步骤的编号(0--4):〃);scanf("%d",&c);switch(c){input(n,m,w);break;output(n,m,w);break;sortput(n,m,w);break;search(n,m,w);break;case0: printf("谢谢使用,再见!\n");exit(0);default: printf("输入错误,请重试!\n");menu(n,m,w);))voidsavetofile() /*信息存入文件file*/{FILE*fp;inti;if((fp=fopen("file.txt","wb"))==NULL){printf("cannotopenthefile\n");return;)for(i=0;i<N;i++){if(a[i].snum!='\0')if(fwrite(&a[i],sizeof(snode),1,fp)!=1){printf("filewriteerror\n");return;10洛阳理工学院课程设计报告)fclose(fp);)voidreadfromfile() /*信息从文件file中取出*/{inti;FILE*fp;if((fp=fopen("file.txt","rb"))==NULL){printf("cannotopenthefile\n");return;)for(i=0;i<N;i++)fread(&a[i],sizeof(snode),1,fp);fclose(fp);)voidinput(intn,intm,intw) //输入函数{inti,j,s,k,q=0;for(i=0;i<n;i++){printf(〃学校编号:〃);scanf("%d",&a[i].snum);/*输入学校信息*/for(j=0;j<m+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):〃);elseprintf(〃获得名次个数(1--5):〃);scanf("%d",&k); /*输入项目信息*/for(s=0;s<k;s++){if(a[i].t[j].top==3)printf(〃所获名次(1--3):〃);elseprintf(”所获名次(1--5):");scanf("%d",&a[i].t[j].range[s]);/*输入所获名次信息*/)printf(〃\n〃);11洛阳理工学院课程设计报告))for(i=0;i<n;i++){a[i].score=0;a[i].mscore=0;a[i].wscore=0;} /砌始化分数*/for(i=0;i<n;i++)for(j=0;j<m+w;j++)for(s=0;s<5;s++){if(a[i].t[j].top==3)switch(a[i].t[j].range[s]){case0:a[i].t[j].mark[s]=0;break;a[i].t[j].mark[s]=5;break;a[i].t[j].mark[s]=3;break;a[i].t[j].mark[s]=2;break;)elseif(a[i].t[j].top==5)switch(a[i].t[j].range[s]){case0:a[i].t[j].mark[s]=0;break;a[i].t[j].mark[s]=7;break;a[i].t[j].mark[s]=5;break;a[i].t[j].mark[s]=3;break;a[i].t[j].mark[s]=2;break;a[i].t[j].mark[s]=1;break;)else{printf("信息有误!”);printf(〃\n〃);exit(0);)a[i].score=a[i].score+a[i].t[j].mark[s]; /*i记学校总分*/if(j<=m-1)a[i].mscore=a[i].mscore+a[i].t[j].mark[s];/*i己男子团体总分*/elsea[i].wscore=a[i].wscore+a[i].t[j].mark[s];/*i己女子团体总分*/)printf(〃输入完毕!返回?1是0否\n〃); /*返回菜单*/12洛阳理工学院课程设计报告scanf("%d",&q);printf(〃\n〃);if(q!=1)printf(〃不能再添加信息!〃);printf(〃\n〃);savetofile(); /*将信息存入文件file*/getchar();system("cls");menu(n,m,w);)voidoutput(intn,intm,intw) //输出函数{readfromfile();inti,j,s,q=0;for(i=0;i<n;i++)/*显示结果*/{printf(〃学校编号:%d学校总分:%d男团总分:%d女团总分:%d\n",a[i].snum,a[i].score,a[i].mscore,a[i].wscore);for(j=0;j<m+w;j++){printf(〃项目编号:%d所取名次数fi:%d\n",a[i].t[j].inum,a[i].t[j].top);for(s=0;s<5;s++){if(a[i].t[j].range[s]!=0)printf("名次:%d分数:%d\n",a[i].t[j].range[s],a[i].t[j].mark[s]);))printf(〃\n〃);)printf(〃\n〃);printf(〃统计成功!返回?1是0否〃); /*返回菜单*/scanf("%d",&q);printf(〃\n〃);if(q!=1)printf("统计已经结束!”);printf(〃\n〃);system("cls");menu(n,m,w);)voidsortput(intn,intm,intw) //顺序输出{readfromfile();13洛阳理工学院课程设计报告intc,i,j,k,q=0;inttemp[N];printf("\t**************排序输出系统**************\n\n");printf("\t************1.按学校编号输出************\t\n");printf("\t************2.按学校总分输出************\t\n");printf("\t************3.按男团总分输出************\t\n");printf("\t************4.按女团总分输出************\t\n");printf("\t========================================\n\n");do{printf(〃请选择要实现功能的编号(1--4):〃);scanf("%d",&c);switch(c){case1:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].snum>a[j].snum){k=temp[i];temp[i]=temp[j];temp[j]=k;)} /*用冒泡排序方法排序*/for(i=0;i<n;i++){printf(〃学校编号:%d学校总分:%d男团总分:%d女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按学校编号输出*/break;case2:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].score<a[j].score){k=temp[i];temp[i]=temp[j];temp[j]=k;14洛阳理工学院课程设计报告)} /*用冒泡排序方法排序*/for(i=0;i<n;i++){printf(〃学校编号:%d学校总分:%d男团总分:%d女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按学校总分输出*/break;case3:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].mscore<a[j].mscore){k=temp[i];temp[i]=temp[j];temp[j]=k;)} /*用冒泡排序方法排序*/for(i=0;i<n;i++){printf(〃学校编号:%d学校总分:%d男团总分:%d女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按男团总分输出*/break;case4:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].wscore<a[j].wscore){k=temp[i];temp[i]=temp[j];temp[j]=k;)} /*用冒泡排序方法排序*/for(i=0;i<n;i++){printf(〃学校编号:%d学校总分:%d男团总分:%d女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);15洛阳理工学院课程设计报告} /*按女团总分输出*/break;default:printf(〃输入错误,请重试!\n〃);)printf(〃请选择1返回主菜单0继续〃); /*返回菜单或继续排序*/scanf("%d",&q);system("cls");printf(〃\n〃);)while(q==0);printf(〃\n〃);if(q!=0)menu(n,m,w);)voidsearch(intn,intm,intw) //查询函数{readfromfile();intc,i,j,k,d,l,q=0;printf("\t****************查询系统****************\n\n'");printf("\t* 1.按学校编号查询 *\t\n");printf("\t* 2.按项目编号查询 *\t\n");printf("\t========================================\n\n");do{k=-1;d=-1;l=-1;printf(〃请选择要实现功能的编号(1--2):〃);scanf("%d",&c);switch(c){printf(〃要查询的学校编号:〃); /*查找学校编号下标*/scanf("%d",&c);for(i=0;i<n;i++){if(a[i].snum==c)k=i;)if(k==-1)printf(〃错误:这个学校没有参加此次运动会!\n〃);else{printf(〃要查询的项目编号:〃); /*查找项目编号下标*/scanf("%d",&c);for(j=0;j<m+w;j++)16洛阳理工学院课程设计报告{if(a[k].t[j].inum==c)d=j;)if(d==-1)printf("此次运动会没有这个项目\/);else /*显示结果*/{printf("这个项目取前%d名,该学校的成绩如下:\n",a[k].t[d].top);for(i=0;i<5;i++)if(a[k].t[d].range[i]!=0)printf("名次:%d\n",a[k].t[d].range[i]);))break;printf(〃要查询的项目编号:〃); /*查找项目编号下标*/scanf("%d",&c);for(i=0;i<n;i++)for(j=0;j<m+w;j++)if(a[i].t[j].inum==c)l=j;if(l==-1)printf("此次运动会没有这个项目\/);else /*显示结果*/{printf(〃该项目取前%d名,取得名次的学校\n〃,a[0].t[l].top);for(i=0;i<n;i++)for(j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公益岗位招聘综合历年真题(附答案)
- 天津公务员行测历年真题(附答案)
- 肾内科全真模拟冲刺密卷含完整答案
- 检验技师初级历年真题(附答案)
- 护理人员正装礼仪与职业形象的塑造
- 头发护理与保养
- 干眼症患者的睡眠与休息护理
- 中职护理面试中的沟通与表达能力提升
- 器官移植护理要点
- 分娩准备事项清单
- 2026北京市大兴区瀛海镇人民政府面向社会公开招聘劳务派遣2人笔试参考试题及答案详解
- 2026广东揭阳市惠来县卫生健康事业单位招聘综合类18人笔试题库附参考答案详解【A卷】
- 优化门诊护理流程提升患者满意度
- 2026年四川省机关事业单位考调、选调工作人员考试(综合知识、综合应用能力测试)测试题及答案
- 临床医学课程思政案例
- 短期与长期应对策略
- JT∕T 850-2013 挤压锚固钢绞线拉索
- 2024届福建省漳州市台商投资区六年级下学期小升初真题数学试卷含解析
- 2024福建检察机关书记员招聘笔试参考题库含答案解析
- 新规公路桥台抗震计算程序
- 天疱疮病人护理查房
评论
0/150
提交评论