《数据结构实验运动会分数统计实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构实验运动会分数统计实验报告.docx(31页珍藏版)》请在三一办公上搜索。
1、实验报告题目:运动会分数统计班级:14电子商务平台建设班完成日期:2015.10.10学号:20141103468姓名:孙少辉学号:20141103421姓名:杨德龙学号:20141103407姓名:柴益新一:需求分析参加运动会的n个学校编号为1n。比赛分成m个男子项目和可个 女子项目,项目编号分别为1m和m + 1m + w。有些项目取前 五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为 5,3,2。【基本要求】产生各学校的成绩单,内容包括各校所取得的每项成绩的项目 号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、 男子团体总分、女子团体总分和团体总分。结于
2、n=4,m=3,w=2,编号为奇数的项目取前五名,编号 为公里数的项目取前三名,设计一组实例数据。【项目约束】可以假设nV20,mV30,wV20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入, 并按名次顺序输入运动员姓名、校名(和成绩)。二:概要设计采用结构体二维数组存储方式产生各学校的成绩单,内容包括各校所 取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分 报表,内容包括校号、男子团体总分、女子团体总分和团体总分。三:详细设计1:数据结构的定义元素类型、变量、指针类型(1)项目数据表:运动会开始前必须详细制定本次运动会所需的参 赛项
3、目为接下来报名、场地的准备提供依据。本数据表根据要 求设计存储每个项目的编号、名称、要取的名次以及各个名次 对应的学校的编号,在初始输入时仅输入项目编号、名称及要 取的名次,而各名次对应的学校编号将由系统自动统计。这也 有利于以后项目情况的查询。3.1结构体结构体名数据类型数据名备注Schoolcharname20学校名称intschoolnum学校编号charprojectmane5020项目编号及名称intprojectscouer50项目得分charprojectstudentmane5020获奖学生姓名intsum团体总分intmenscouer男子总分intwomenscouer女子
4、总分3.2子函数函数名入口参数出口参数功能介绍main()实现学校输入项目输入welcome()调用主页面选择各类操作以转至其他页面input()输入项目编号及名称choose()int j,chars20int g;1. 判断所输项目是取前 二或刖五2. 返回经判断后的项目 的编号与名称three()int j,chars20j1. 按名次判断得分,按项 目编号判断男女得分2. 返回经判断后的项目 的编号five()int j,chars20j1. 按名次判断得分,按项 目编号判断男女得分2. 返回经判断后的项目 的编号output()按规定顺序查询n个 学校中某一学校的得 分信息sumpu
5、t()按规定顺序产生团体总分报表goodbye()弹出退出界面并退出程序3:函数调用关系四:调试分析在调试的过程中,我们发现了在查询成绩功能是只能按照各个学 校的编号进行查询选手,学校的成绩信息,查询功能有待健壮完善。五:用户使用说明(1) 首先运行文件运动会统计分数系统(2) 输入信息:1.输入学校数量一2.输入各个学校名称一3.男子运动项目数量一4.女子运动 项目数量。四 *0: DDCLLiienTsand SettingsA(i*inist rator13 Debug0. eze- 3 名名名名名精 SJ- J3- A J 3 - 咬咬咬咬fe咱杰 -., -.-I-r.I.-1.L.
6、 ZL.- 盖五、羞一两W 1 2 3 4 5 中RJAiA-IAIA 请请请请请请请范学业蛭业师大工用度;口古古占白HB_ 龚BB柔敲下回车后进入welcome界面中进入1数据输入一输入运动会项目名称一输入该项目的打分规则一依次录入学校的排名情况5或UK 3co40二s儡威31芸林盛/:E : u- _- sftM : 5 -币-/_- :扁5刍,5或3.(_|-bn-2扁二扁扁MT-S-.扁-占 睚瘴1旧随履嗟 箱宙器壕有 nit ins .1 A及1 AlAlAiAlAlA择1 X1.K1 A1A*八lly 1请请请请请请请请请请请请请请请请请g;rvlA供*仗1 AlAiAlAlA择供
7、1.K1 A1A*八”请请请请请请请请请请请请请请请请请请请请g;普考姓名,刘书剑蛆者朕,齐俺杰3个项目名标=跳远项目罩前王蛇是前二3或切J名的技痢弓:1胳跻却少辉共看建* :街德龙奖者盛蔑益菊4个项目名卷女t3T Tm-i.-r- H 曰羊始者圳洋=马小婷5个项目名恭女了侣球 半;LHM4 3霞 2 1hi.邸.瑞媛.一子r. 1乐 早刻号刘号enit s and 5ettingsXAdilnist rat orifijEebug0. eze隋输A普查询拘学校编玲,3 翳磐善 房野 称:内蒙日二业大学 R校霜喜:3 :花船称:内蒙3二业大学 恢奖者;柴益新件校编号=3芝校名称:内嬴石二业大学
8、 展斐考;柴益新:缅危:3旦校沼你:内豢石二业大学 磨矣者:于洋g蠢:景知称:出篆口二业大字 is:;争博招怀:内蒙日一*大学 荻奕者3 隔按杯有撬端读一.项目编号T 项目编号海 项目编号;3 项目编号:4 项目编号:s 项目编号:6项目名称,男子4跑来 项目卷分. 项目名称:跳高项目得g I 项目名祢:跳运项目得介:2 B项日沼你:么子N瞄卷项目得分 项目女子铅球项对听 项目名怀:女十8明米 项目得分.iQtjFiiiyiii芸籍寤芮蒙司才经大学 学校名祢:内蒙古财经大学 学校名称:内蒙古财经大学 学校名称:内蒙古财经大学 与快名称:内篆口财经大字 :4竺校名怀:内盖日财经大学醇渥禁幅4 里
9、4亵善者::u Nmil舞队.项目编号 项目编号没 项目编号;3 项目编号舛 项目编号:5 项目编号:6项目名称,男子4酒米 项目得分 项目名称:跳高项目得分没 项目名祢:跳运 项目得分冲 项目名你:右子2瞄卷 项目名称:女子钳球 项目名怀:女十8明米项目得分项目得分:项目得分QtjFlnj/in查询结束后按任意键返回主界面输入4退出系统如下图所示源代码/*项目名称:运动会统计系统*设计者:杨德龙,柴益新,孙少辉*时间:2015.10.16*实现目标:1.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;2.产生团体总分报表,内容包括校号、男子团体总分、女子团
10、体总分和团体总分。*/#include#include#include#include/*n个学校编号为1n*m个男子项目,编号为1m*w个女子项目,编号为m+1m + w*/int n,m,w;/*学校信息结构体*目的:1.按此结构体存贮数据*2.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;*/struct schoolchar name20; /学校名称int schoolnum; /学校编号char projectmane5020; /项目编号及名称int projectscouer50; /项目得分char projectstudentmane5
11、020; /获奖学生姓名int sum; /团体总分int menscouer; /男子总分int womenscouer; /女子总分num20;/*主函数*目的:1.实现学校输入*2.项目输入*/int main()int i,j;void welcome();/ 调用主界面printf(请输入学校数量n);scanf(%d,&n);/输入学校名称,并初始化数据for(i=1;i=n;i+)printf(-请输入第d学校的名称:”,i);scanf(%s,numi.name);numi.schoolnum=i; /学校编号初始numi.menscouer=0; /男子团体分初始numi.w
12、omenscouer=0; /女子团体分初始numi.sum=0;/团体总分初始for(j=1;j=50;j+)各项目得分初始numi.projectscouerj=0;printf(-请输入男子项目个数:);scanf(%d”,&m);printf(-请输入女子项目个数:);scanf(%d”,&w);welcome();return 0;/*主界面函数:*目的:选择各类操作以转至其他页面*/void welcome()system(cls);int n;void input();void output();void sumput();void goodbye();/读取这个welcome界
13、面并显示FILE *welcome;welcome=fopen(c:/新建文件夹/welcome.txt”,r”);char s60;while(fgets(s,60,welcome)printf(%s”,s);printf(n);/选择进入子页面while(scanf(”d”,&n)!=EOF)if(n=1)input();/调用输入函数else if(n=2)output(); /调用输出函数else if(n=3)sumput();/调用求和函数else if(n=4)goodbye();/调用退出函数elseprintff输入有误,请重新输入:n);/输入错误提示/*数据输入函数:*目
14、的:选择各类操作以转至其他页面*/void input()void welcome();int j,k;int choose(int j,char s20);char s20;for(j=1;j=w+m;j+)printf(-请输入第d个项目名称:”,j);scanf(%s,s);for(k=1;k=n;k+)strcpy(numk.projectmanej,s);/输入项目名称(将所输入的数 组拷贝至项目组中)j=choose(j,s);/调用项目类型选择函数welcome();/*项目类型选择函数(3或5名)*目的:1.判断所输项目是取前三或前五2.返回经判断后的项目的编号与名称*/int
15、 choose(int j,char s20)int l;int g;int three(int j,char s20);int five(int j,char s20);/输入3, 5分别调用不同的函数来判断printf(”请选择此项目取前五还是前三(3或5):);while(scanf(”d”,&l)!=EOF)if(l=3)g=three(j,s);return g;else if(l=5)g=five(j,s);return g;elseprintf(输入错误,请重新输入:);/*取前3的项目函数 *目的:1.按名次判断得分,按项目编号判断男女得分2.返回经判断后的项目的编号*/int
16、 three(int j,char s20)/输入前三名获奖者信息,输入次序为学校编号加获奖者姓名int p,b;for(p=1;pm)numb.womenscouer=numb.womenscouer+5;/从第 m个开始为女子项目得分elsenumb.menscouer=numb.menscouer+5;/前 m 个为男子项目得分/第二名得分为3else if(p=2)numb.projectscouerj=numb.projectscouerj+3;numb.sum=numb.sum+3;if(jm)numb.womenscouer=numb.womenscouer+3;elsenumb
17、.menscouer=numb.menscouer+3;/第三名得分为2else if(p=3)numb.projectscouerj=numb.projectscouerj+2;numb.sum=numb.sum+2;if(jm)numb.womenscouer=numb.womenscouer+2;elsenumb.menscouer=numb.menscouer+2;return j;/*取前5的项目函数*目的:1.按名次判断得分,按项目编号判断男女得分2.返回经判断后的项目的编号*/int five(int j,char s20)int p,b;/输入前五名获奖者信息,输入次序为学校编
18、号加获奖者姓名for(p=1;pm)numb.womenscouer=numb.womenscouer+7;elsenumb.menscouer=numb.menscouer+7;/第二名得分为5else if(p=2)numb.projectscouerj=numb.projectscouerj+5;numb.sum=numb.sum+5;if(jm)numb.womenscouer=numb.womenscouer+5;elsenumb.menscouer=numb.menscouer+5;/第三名得分为3else if(p=3)numb.projectscouerj=numb.proje
19、ctscouerj+3;numb.sum=numb.sum+3;if(jm)numb.womenscouer=numb.womenscouer+3;elsenumb.menscouer=numb.menscouer+3;/第四名得分为2else if(p=4)numb.projectscouerj=numb.projectscouerj+2;numb.sum=numb.sum+2;if(jm)numb.womenscouer=numb.womenscouer+2;elsenumb.menscouer=numb.menscouer+2;/第四名得分为1else if(p=5)numb.proje
20、ctscouerj=numb.projectscouerj+1;numb.sum=numb.sum+1;if(jm)numb.womenscouer=numb.womenscouer+1;elsenumb.menscouer=numb.menscouer+1;return j;/*选择输出函数:*目的:按规定顺序查询n个学校中某一学校的得分信息*/void output()system(cls);int t,i;void welcome();printf(请输入要查询的学校编号:);while(scanf(”d”,&t)!=EOF)/保证所输序号为0 nif(t0 & t=n)for(i=1;
21、i=w+m;i+)printf(学校编号:d学校名称:s项目编号:d 项目名称:s 项目得分:d 获奖者:sn”,numt.schoolnum,numt.name,i,numt.projectmanei,numt.projectscoueri,numt .projectstudentmanei);system(pause);welcome();elseprintf(输入错误,请重新输入:);/*总体输出函数*目的:按规定顺序产生团体总分报表*/void sumput()system(cls);void welcome();int i;for(i=1;i=n;i+)printf(学校编号:%d 学校名称:%s 团体总分:%d 男子总 分 :d女 子 总分 : %dn,i,numi.name,numi.sum,numi.menscouer,numi.wo menscouer);system(pause);welcome();/*退出页面*目的:弹出退出界面并退出程序*/void goodbye()system(cls);printf(-谢谢使用! n);printf(祝你生活愉快! n);exit(0); 结束