数据结构课程设计运动会.docx
- 文档编号:4473129
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:28
- 大小:292.71KB
数据结构课程设计运动会.docx
《数据结构课程设计运动会.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计运动会.docx(28页珍藏版)》请在冰豆网上搜索。
数据结构课程设计运动会数据结构课程设计运动会目录1.需求分析:
2功能要求:
2性能需求:
22.概要设计:
21.存储结构设计:
32.流程图设计:
43.详细设计:
114.菜单窗口:
201.主菜单窗口202.输入各个项目成绩并存储文件203.统计各学校总分214.按学校编号排序输出215.按学校总分排序输出216.按男团体总分排序输出227.按女团体总分排序输出228.按学校编号查询学校某个项目情况239.按项目编号查询取得名次的学校235.课程设计总结与体会:
231.需求分析:
任务:
参加运动会有n个学校,学校编号为1n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1m,女子m+1m+w。
不同的项目取前前三名积分;前三名的积分分别为:
5、3、2。
(m、w=20,n=10)功能要求:
1.可以输入各个学校、各项目、以及各项目前三名的数据信息;2能统计各学校总分、男子项目和女子项目总分;3可以按学校编号(或学校名称)、学校总分、男女团体总分排序输出;4.可以按学校编号(或学校名称)查询学校某个项目的情况;可以按项目编号查询取得前三的学校。
性能需求规定:
输入数据形式和范围:
10以内的整数(如果做得更好可以输入学校的名称和运动项目的名称)输出形式:
有中文提示,各学校分数为整形界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计。
请在最后的上交资料中指明你用到的存储结构;测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;2.概要设计:
1.存储结构设计:
主菜单123456780输入各个项目成绩并存储文件统计各学校总分按学校编号排序输出按学校总分排序输出按男团体总分排序输出按女团体总分排序输出按学校编号查询学校某个项目情况按项目编号查询取得名次的学校退出1输入各个项目成绩并存储文件输入男子项目总数m输入女子项目总数w输入参加运动会的学校总数n男子项目女子项目输入项目:
0返回主菜单界面输入项目编号(如1)输入项目编号(如m)输入项目编号(如m+1)输入项目编号(如m+n)2.统计各学校的总分显示:
各学校的总分退出:
按enter键3.按学校编号排序输出输入学校编号退出(返回菜单主界面):
按enter显示按学校排序输出结果返回到主界面4.按学校总分排序输出输入学校编号退出(返回菜单主界面):
按enter显示按学校总分排序结果返回到主界面5.按男团体总分排序输出输入学校编号退出(返回菜单主界面):
按enter显示按学校编号排序结果返回到主界面6.按女团体总分排序输出输入学校编号退出(返回菜单主界面):
按enter显示按女团体总分排序结果返回到主界面7.按学校编号查询学校某个项目情况输入要查询的学校编号输入要查询的项目编号退出(返回菜单主界面):
按enter显示要查询学校的某个项目的获奖情况返回到主界面8.按项目编号查询取得名次的学校(前三名或前五名)输入要查询的项目编号退出(返回菜单主界面):
按enter显示某个项目编号的学校名次(前三或前五)返回到主界面0.退出按任意键可以推出2.流程程图设计:
Main()函数流程图Funct1()函数流程图Save()函数流程图Funct2()函数流程图Funct3()函数流程图Funct4()函数流程图Funct5()函数流程图Funct6()函数流程图Funct7()函数流程图Funct8()函数流程图3.详细设计:
#include#include#include#include/#include屏幕操作函数#defineMAX50/#defineNULL0typedefstructnode1intschool;学校编号intrecord;项目成绩structnode1*next;链域Schools;typedefstructintitem;项目编号Schools*firstschool;链域指向链表中第一个结点ITEM;typedefstructintz;项目总数ITEMaMAX;ALLitems;typedefstructnode2intitem;该学校获奖的项目intrecord;项目成绩structnode2*next;链域Items;typedefstructintschool;/*学校编号*/intscore;/*学校总分*/intboys;/*男团体总分*/intgirls;/*女团体总分*/Items*firstitem;链域指向链表中第一个获奖项目的结点SCHNode;typedefstructintn;/*学校总数*/SCHNodebMAX;ALLNode;ALLitems*g1;ALLNode*g2;voidfunct1(ALLitems*g1,ALLNode*g2)输入各个项目成绩Schools*p1;Items*p2;inti,k,m,w,h,x;p1=(Schools*)malloc(sizeof(Schools);p2=(Items*)malloc(sizeof(Items);if(!
p1|!
p2)exit
(1);printf(n);printf(nnn);printf(n*输入各个项目信息*nn);printf(输入男子项目总数m:
);scanf(%d,&m);while(m10)printf(输入有误,m是10以内的整数,请重新输入:
);scanf(%d,&m);printf(输入女子项目总数w:
);scanf(%d,&w);while(w10)printf(输入有误,w是10以内的整数,请重新输入:
);scanf(%d,&w);printf(输入参加运动会的学校总数n:
);scanf(%d,&g2-n);while(g2-nn10)printf(输入有误,n是10以内的整数,请重新输入:
);scanf(%d,&g2-n);g1-z=m+w;printf(则项目编号为男子1-%d,女子%d-%d,m,m+1,g1-z);printf(nn*记录运动会成绩*);printf(nn(输入0标志结束)n);for(k=1;kz;k+)/*对两个邻接表置初态*/g1-ak.item=k;g1-ak.firstschool=NULL;for(k=1;kn;k+)g2-bk.school=k;g2-bk.firstitem=0;g2-bk.score=0;g2-bk.boys=0;g2-bk.girls=0;g2-b0.score=0;g2-b0.boys=0;g2-b0.girls=0;while(i!
=0)printf(n项目:
);scanf(%d,&i);while(im+w)printf(输入有误,无此项目编号,请重新输入数字:
);scanf(%d,&i);if(i!
=0)h=3;doprintf(第%d名:
学校(学校编号为数字),h);scanf(%d,&x);while(xg2-n)printf(输入有误,无此学校编号,请重新输入数字:
);scanf(%d,&x);p1=(Schools*)malloc(sizeof(Schools);p1-school=x;p2=(Items*)malloc(sizeof(Items);p2-item=i;if(h=3)p2-record=p1-record=2;if(h=2)p2-record=p1-record=3;if(h=1)p2-record=p1-record=5;p1-next=g1-ai.firstschool;g1-ai.firstschool=p1;p2-next=g2-bx.firstitem;g2-bx.firstitem=p2;g2-bx.score=g2-bx.score+p2-record;累计总分if(ibx.boys=g2-bx.boys+p2-record;累计男团体总分elseg2-bx.girls=g2-bx.girls+p2-record;累计女团体总分h-;while(x!
=0&h!
=0);voidsave()存储数据文件FILE*fp1,*fp2;fp1=(FILE*)malloc(sizeof(FILE);fp2=(FILE*)malloc(sizeof(FILE);if(fp1=fopen(sports1,wb)=NULL)printf(cannotopenfile.n);return;if(fwrite(g1,sizeof(ALLitems),1,fp1)!
=1)printf(filewriteerror.n);fclose(fp1);if(fp2=fopen(sports2,wb)=NULL)printf(cannotopenfile.n);return;if(fwrite(g2,sizeof(ALLNode),1,fp2)!
=1)printf(filewriteerror.n);fclose(fp2);voidfunct2(ALLNode*g2)输出各学校总分intk;printf(学校编号t总分n);for(k=1;kn;k+)printf(%dttt%dn,k,g2-bk.score);printf(n);system(pause);printf(按任意键返回主菜单.);getchar();voidfunct3(ALLNode*g2)按学校编号排序输出intk;Items*p2;p2=(Items*)malloc(sizeof(Items);printf(n);printf(nn);printf(nn*按学校编号排序输出*n);printf(学校编号ttt获奖情况n);for(k=1;kn;k+)printf(tttttt%dt,k);p2=g2-bk.firstitem;while(p2!
=NULL)printf(项目%d:
得%d分,p2-item,p2-record);p2=p2-next;printf(n);printf(n);system(pause);printf(按任意键返回主菜单.);getchar();voidfunct4(ALLNode*g2)按学校总分排序输出inti,j,k;Items*p2;printf(n);printf(nn);printf(nn*按学校总分排序输出*n);printf(学校编号tt总分n);printf(按1继续n);scanf(%d,&k);/printf(输入要查询的项目编号:
);for(i=2;in;i+)printf(%dt,k);p2=g2-bk.firstitem;while(p2!
=NULL)printf(%dtt%dn,g2-bk.school,g2-bk.score);p2=p2-next;printf(n);g2-b0.score=g2-bi.score;g2-b0.boys=g2-bi.boys;g2-b0.girls=g2-bi.girls;g2-b0.school=g2-bi.school;j=i-1;while(g2-b0.scorebj.score&j0)g2-bj+1.score=g2-bj.score;g2-bj+1.boys=g2-bj.boys;g2-bj+1.girls=g2-bj.girls;g2-bj+1.school=g2-bj.school;j-;g2-bj+1.score=g2-b0.score;g2-bj+1.boys=g2-b0.boys;g2-bj+1.girls=g2-b0.girls;g2-bj+1.school=g2-b0.school;for(k=1;kn;k+)printf(%dtt%dn,g2-bk.school,g2-bk.score);system(pause);printf(按任意键返回主菜单.);getchar();voidfunct5(ALLNode*g2)按男团体总分排序输出inti,j,k;Items*p2;p2=(Items*)malloc(sizeof(Items);printf(n);printf(nn);printf(nn*按男团体总分排序输出*n);printf(学校编号tt男团体总分n);printf(按1继续n);scanf(%d,&k);/printf(输入要查询的学校编号:
);for(i=2;in;i+)printf(%dt,k);p2=g2-bk.firstitem;while(p2!
=NULL)printf(%dtt%dn,g2-bk.school,g2-bk.boys);p2=p2-next;printf(n);g2-b0.score=g2-bi.score;g2-b0.boys=g2-bi.boys;g2-b0.girls=g2-bi.girls;g2-b0.school=g2-bi.school;j=i-1;while(g2-b0.boysbj.boys&j0)g2-bj+1.score=g2-bj.score;g2-bj+1.boys=g2-bj.boys;g2-bj+1.girls=g2-bj.girls;g2-bj+1.school=g2-bj.school;j-;g2-bj+1.score=g2-b0.score;g2-bj+1.boys=g2-b0.boys;g2-bj+1.girls=g2-b0.girls;g2-bj+1.school=g2-b0.school;for(k=1;kn;k+)printf(%dtt%dn,g2-bk.school,g2-bk.boys);system(pause);/暂停等待printf(按任意键返回主菜单.);getchar();voidfunct6(ALLNode*g2)按女团体总分排序输出inti,j,k;Items*p2;p2=(Items*)malloc(sizeof(Items);printf(n);printf(nn);printf(nn*按女团体总分排序输出*n);printf(学校编号tt女团体总分n);printf(按1继续n);scanf(%d,&k);for(i=2;in;i+)printf(%dt,k);p2=g2-bk.firstitem;while(p2!
=NULL)printf(%dtt%dn,g2-bk.school,g2-bk.girls);p2=p2-next;printf(n);g2-b0.score=g2-bi.score;g2-b0.boys=g2-bi.boys;g2-b0.girls=g2-bi.girls;g2-b0.school=g2-bi.school;j=i-1;while(g2-b0.girlsbj.girls&j0)g2-bj+1.score=g2-bj.score;g2-bj+1.boys=g2-bj.boys;g2-bj+1.girls=g2-bj.girls;g2-bj+1.school=g2-bj.school;j-;g2-bj+1.score=g2-b0.score;g2-bj+1.boys=g2-b0.boys;g2-bj+1.girls=g2-b0.girls;g2-bj+1.school=g2-b0.school;for(k=1;kn;k+)printf(%dtt%dn,g2-bk.school,g2-bk.girls);system(pause);printf(按任意键返回主菜单.);getchar();voidfunct7(ALLNode*g2)按学校编号查询学校某个项目情况inti,j;Items*p2;printf(n);printf(nn);printf(n*按学校编号查询学校某个项目情况*n);printf(输入要查询的学校编号:
);scanf(%d,&i);printf(输入要查询的项目编号:
);scanf(%d,&j);p2=g2-bi.firstitem;while(p2!
=NULL)if(p2-item=j)printf(学校编号:
%dt项目%d:
得%d分n,i,p2-item,p2-record);p2=p2-next;printf(n);system(pause);printf(按任意键返回主菜单.);getchar();voidfunct8(ALLitems*g1)按项目编号查询取得名次的学校inti;Schools*p1;printf(n*按项目编号查询取得名次的学校*n);printf(输入要查询的项目编号:
);scanf(%d,&i);printf(项目编号ttt取得名次的学校n);printf(%dt,i);p1=g1-ai.firstschool;while(p1!
=NULL)printf(学校%d:
得%d分,p1-school,p1-record);p1=p1-next;printf(nn);system(pause);printf(按任意键返回主菜单.);getchar();voidmain()intt;g2=(ALLNode*)malloc(sizeof(ALLNode);g1=(ALLitems*)malloc(sizeof(ALLitems);if(!
g2|!
g1)exit
(1);system(cls);for(;)printf(ttn);printf(ttn);printf(ttn);printf(tt运动会分数统计系统n);printf(ttn);printf(tt1.输入各个项目成绩并存储文件tn);printf(tt2.统计各学校总分tn);printf(tt3.按学校编号排序输出tn);printf(tt4.按学校总分排序输出tn);printf(tt5.按男团体总分排序输出tn);printf(tt6.按女团体总分排序输出tn);printf(tt7.按学校编号查询学校某个项目情况tn);printf(tt8.按项目编号查询取得名次的学校n);printf(tt0.退出n);printf(ttn);printf(tt请选择(0-8):
);loop:
scanf(%d,&t);system(cls);switch(t)case1:
funct1(g1,g2);save();break;case2:
funct2(g2);break;case3:
funct3(g2);break;case4:
funct4(g2);break;case5:
funct5(g2);break;case6:
funct6(g2);break;case7:
funct7(g2);break;case8:
funct8(g1);break;case0:
exit(0);default:
printf(输入有误,请重新选择:
);gotoloop;system(cls);4.菜单窗口1.主菜单窗口2.输入各个项目成绩并存储文件3.统计各学校总分4.按学校编号排序输出5.按学校总分排序输出6.按男团体总分排序输出7.按女团体总分排序输出8.按学校编号查询学校某个项目情况9.按项目编号查询取得名次的学校5.课程设计总结与体会:
在这次的课程设计过程中,我学到的不仅是知识,我还认识到许多事情。
这次设计使我的编程水平提高了一大步,使我充分的认识到合作的可贵。
由于这次设计主要涉及到数据结构中的链表结构,学到了学到了不少关于数据链表的知识,对链表的操作有了进一步的了解。
这次设计对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅。
所以今后我的学习道路还是很漫长的。
最后,在这里由于我水平有限,加之时间短暂,故运动会分数统计系统中还有许多不足之处,请老师批评指正,我会在以后的制作中不断改进,不断完善。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 运动会