运动会分数统计系统课程设计报告
运动会分数统计系统设计报告

C语言课程设计报告运动会分数统计系统学校湖南工程学院班级:土木0981班姓名:钟宇学号:0131一.需求分析1问题描述运动会分数统计系统参加运动会有n个系,系编号为1……n。
竞赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分别离为:7、五、3、二、1,前三名的积分别离为:五、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)2.大体要求:(1). 运动员检录;(2).运动员检录,(3).运动员成绩排序;(4). 运动员评奖3.测试数据《1》输入:1进入添加系的界面,依照提示,再输入:汽车系。
再输入:8,成功添加了一个系。
再输入:2进入运动项目添加界面,依照提示,再输入:跳高;1;0;1;2;3。
以后输入0。
再次进入系统界面。
《2》输入:3查看输出结果。
《3》:输入:4查看输出结果。
《4》:输入:5查看输出结果。
《5》:输入:6查看输出结果。
《6》:输入:7依照提示输入项目编号:2。
查看输出结果。
《7》:输入:8依照提示输入系编号:3。
查看输出结果。
二、概要设计1.数据结构<1>系:名称,编号,男子集体总分,女子固体总分。
<2>运动项目:项目编号,名称,男子项目,女子项目,前三名,前五名,第一名系的编号,第二名系的编号,第三名系的编号,第四名系的编号,第五名系的编号。
2.程序模块及之间的挪用关系三、详细设计一、数据类型概念(1)系的概念:typedef struct Department100m菜单有以下9个选项1.输入系别2.输入运动项目3.按系别编号输出总分4.按总分排序5.按男集体总分排序6.按女集体总分排序7.按项目编号查询8.按系别编号查询0.退出(2)输入0~8中的一个数(3)输入1,进行添加系操作,别离输入系的名称和编号(4)输入2,进行添加运动项目操作,别离输入项目名称,编号,项目类型,名次选取,排名情形(5)输入0,那么退出系统,而且保留输入的信息.每次添加完都要输入0退出系统才有效(6)输入3,输出按系编号总分排名.(7)输入4,输出按总分排名(8)输入5,输出按男集体总分排序(9)输入6,输出按女集体总分排序(10)输入7,进入按项目编号查询界面.输入要查询的项目编号(11)输入8,进入按系别编号查询界面,输入要查询的系的编号四、参考文献【1】《C++程序设计》作者:郑莉,董渊,张瑞丰出版社:清华大学出版社时刻:2003/12 【2】《数据结构》严蔚敏,吴伟民出版社:清华大学出版社时刻:2006/10【3】《数据结构教程上机实验指导》严蔚敏,吴伟民,米宁出版社:清华大学出版社时刻:2006/5五、【4】网址: 附录六、1、源程序#include<>#include<>#include<>#include<>#include<>#include<>#include<>#include<>typedef struct Department ."};char bar[]={"...."};int i,j,k=0,x=0,y=0;for(i=0;i<=strlen(line)/2;){system("cls");for(j=0;j<9;j++) O欢迎利用运动会分数统计系统Oo. "<<endl;cout<<"**********************************************************"<<endl;cout<<" * *"<<endl;cout<<" * 1.输入系别; 2.输入运动项目*"<<endl;cout<<" * *"<<endl;cout<<" * 3.按系别编号输出总分; 4.按总分排序; *"<<endl;cout<<" **"<<endl;cout<<" * 5.按男集体总分排序; 6.按女集体总分排序; *"<<endl;cout<<" * *"<<endl;cout<<" * 7.按项目编号查询; 8.按系别编号查询; *"<<endl;cout<<" * *"<<endl;cout<<" * 0.退出*"<<endl;cout<<" * *"<<endl;cout<<" * 提示:需先输入系别后才能输入运动项目*"<<endl;cout<<" * *"<<endl;cout<<"**********************************************************"<<endl;cout<<" 请选择:";//cin>>ch;//choose=int(ch[0])+int(ch[1])-'0'; //处置异样状态cin>>choose;if (!isdigit(choose)){system("cls");cout<<"操作非法1"<<endl;}else{switch(getint(choose)){case 1:system("cls");department_add();break;case 2:system("cls");cout<<"当前项目:"<<endl;sport_output(p2);cout<<"当前系:"<<endl;department_output(p1);sport_add();break;case 3:system("cls");department_output(p1);break;case 4:system("cls");department_order(p1,0);department_output(p1);break;case 5:system("cls");department_order(p1,1);department_output(p1);break;case 6:system("cls");department_order(p1,2);department_output(p1);break;case 7:system("cls");cout<<"请输入项目编号:";cin>>temp;sport_search(temp);break;case 8:system("cls");cout<<"请输入系的编号:";cin>>temp;department_search(temp);break;case 0:system("cls");a=0;break;default:system("cls");cout<<"操作非法\n";}}}department_write();sport_write();system("exit");}九、课程设计体会本次课程设计查验了我的实践能力,感觉自己还有许多东西要学习,并非仅限于讲义上的知识,实践才是真理,在学习中实践,实践中去学习。
运动会分数统计系统设计报告

} for(i=1;i<=N;i++){
printf("请输入第%02d 个学校名称:",i); scanf("%s",parr[i].Sname); parr[i].Snumber=i; } printf("按任意键继续\n"); getch(); while(1){ system("cls"); printf("\n\n\n\n"); printf("\t\t|******************************************|\n"); printf("\t\t|------------ 运动会分数统计系统 ----------|\n"); printf("\t\t|-------------- 1.比赛成绩录入 ------------|\n"); printf("\t\t|-------------- 2.比赛成绩统计 ------------|\n"); printf("\t\t|-------------- 3.比赛成绩排序 ------------|\n"); printf("\t\t|-------------- 4.比赛成绩查询 ------------|\n"); printf("\t\t|-------------- 5.比赛成绩保存 ------------|\n"); printf("\t\t|-------------- 0.退出统计系统 ------------|\n"); printf("\t\t|******************************************|\n"); printf("\t\t\n"); scanf(" %c",&ch); switch(ch){
运动会分数统计系统实验报告【精选文档】

运动会分数统计系统的实现09计科(2)班E10914044杨素传一、设计要求1、问题描述参加运动会有n个学校,学校编码为1,2,…,n,比赛分成m个男子项目和w个女子项目.项目编号为男子1,2,…,m,女子m+1,m+2,…,m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为7,5,3,2,1;前三名的积分分别5,3,2;哪些取前五名或前三名由学生自己设定(m〈=20,n〈=20)。
2、需求分析(1)可以输入各个项目的前三名或前五名成绩;(2)能统计各学校成绩;(3)可以按学校编号、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某项目情况,可以按项目编号查询取得前三名或前五名的学校。
二、概要设计1、主界面设计为了实现运动会分数统计系统,设计一个含有多个菜单项的主控菜单子程序以连接系统的各项子程序,方便用户使用本程序。
本系统主控菜单运行界面图1所示.图1 运动会分数统计系统程序主菜单2、存储结构设计本程序采用链式存储类型(LNode)存储运动会分数统计系统的节点信息。
运动会分数统计系统的链表中的结点包括8个域:项目编号域(objnum)、项目类型(objtype)、运动员编号(athnum)、运动员姓名(athname[20])、学校编号(schnum)、校名(schname[30])、运动员分数(athscore)和指向下一个节点的指针欲(struct LNode *next)。
3、系统功能设计本系统设置了8个子功能菜单。
8个子功能的设计描述如下:(1)录入各项目的成绩。
由函数creatLink()实现.当用户选择该功能时,系统会以用户输入的数据运动会分数统计链表.(2)统计各学校分数.由函数schoolScore()实现。
当用户选择该功能时,系统会统计各学校分数。
(3)按学校编号顺序输出。
由函数printfSchoolNumber()实现。
当用户选择该功能时,系统会按学校编号顺序输出数据。
数据结构课程设计—运动会分数统计系统[1]
![数据结构课程设计—运动会分数统计系统[1]](https://img.taocdn.com/s3/m/f876d990d0d233d4b14e69ff.png)
运动会分数统计系统一、需求分析为了简便地对运动会的报名、成绩的录入和统计,本组设计开发了本系统,以解决需求。
当然,本系统只是一个较为简单的系统,仍然存在着一些操作上以及显示上的问题,本组将在以后的学习中进行完善。
问题描述:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分,3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
二、概要设计1.本系统的流程图如下:2. 本系统采用的存储结构为结构化设计理念,这是数据库的最基本的设计要求,主要包括三个数据表:(1) 项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。
本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。
这也有利于以后项目情况的查询。
typedef struct{int itemnum; //项目编号int top; //取名次的数目int range[5]; //名次int mark[5]; //分数}itemnode; //定义项目结点的类型Y N NN Y Case1 Case3 N Y Y 开始---初始化输入 输入某项目各名次成绩 输入学校及男女项目范围 继续输查询各学校成绩 Case2 查询团体总分 成绩查询 输出查询学校成绩 继续 结束—退出继续(2)学校数据表:本数据表储存了各个参赛学校的总体情况,包括学校的编号、名称、男子团体总分、女子团体总分和学校总分。
(完整word版)数据结构 运动会分数统计系统

数据结构课程设计报告题目:运动会分数统计系统学生姓名:学号:班级:指导教师:2010年 5 月28 日目录一、题目 (3)二、时间 (3)三、地点 (3)四、程序要求 (3)五、数据结构设计 (4)1.概述 (4)2.关键算法 (5)3.查询操作 (7)六、详细代码 (8)七、测试结果 (20)1.主菜单窗口 (20)3. 统计各学校总分 (21)4. 按学校编号排序输出 (22)5. 按学校总分排序输出 (22)6. 按男团体总分排序输出 (23)7. 按女团体总分排序输出 (23)8. 按学校编号查询学校某个项目情况 (24)9. 按项目编号查询取得名次的学校 (24)八、测试非法数据 (24)九、课程设计总结 (25)一、题目:运动会分数统计系统二、时间:2010.05.24~05.28三、地点:软件楼606四、程序要求:任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前前三名积分;前三名的积分分别为:5、3、2。
(m、w<=20,n<=10)功能要求:1).可以输入各个学校、各项目、以及各项目前三名的数据信息;2).能统计各学校总分、男子项目和女子项目总分;3).可以按学校编号(或学校名称)、学校总分、男女团体总分排序输出;4).可以按学校编号(或学校名称)查询学校某个项目的情况;可以按项目编号查询取得前三的学校。
规定:输入数据形式和范围:10以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计。
请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
运动会计分系统课程设计

计算机学院信息管理与信息系统专业《程序设计综合课程设计》报告(2010/2011学年第一学期)学生姓名:学生班级:学生学号:指导教师:2011 年1月4日目录第一章课程设计的目的和要求 (1)1.1课程设计问题描述 (1)1.2课程设计基本要求 (1)1.3课程设计测试数据 (1)第二章课程设计任务内容 (2)第三章详细设计说明 (3)3.1数据类型定义 (3)3.2程序功能图及功能说明 (4)3.2.1程序功能图 (4)3.2.2程序功能说明 (4)3.3程序流程图 (5)3.4算法设计 (6)第四章程序测试 (7)4.1多组数据输入与输出 (7)4.2操作过程 (10)第五章课程设计心得与体会 (11)第六章致谢 (12)附录一参考文献 (13)附录二程序清单 (14)运动会计分系统第一章课程设计的目的和要求1.1课程设计问题描述参加运动会的系有n个,其中系编号从1至n。
比赛分成w个女子项目和m 个男子项目。
运动会比赛项目编号是:男子1……m,女子m+1……m+w。
在比赛的结果中,不同的项目取前五名或者取前三名的积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)1.2课程设计基本要求(1)能够方便快捷的输入各个项目的前三名或前五名的成绩(2)能够按系编号、系总分、男女团体总分进行排序并输出(3)能够精确的统计各系的总分(4)能够按系编号查询系某个项目的基本情况,能够按项目编号查询取得前三或前五名的系1.3课程设计测试数据a)按1键进入添加系的界面,根据提示,再输入:汽车系。
再输入:8,成功添加了一个系。
再输入:2进入运动项目添加界面,根据提示,再输入:跳高;1;0;1;2;3。
之后输入0。
再次进入系统界面b)按3键查看系统中输出的结果c)按4键查看系统中输出的结果d)按5键查看系统中输出的结果e)按6键查看系统中输出的结果f)按7键根据提示输入项目编号并查看系统中输出的结果g)按8键根据提示输入系编号并查看系统中输出的结果第二章课程设计任务内容A.可以输入各个项目的前三名或前五名的成绩B.可以按系编号、系总分、男女团体总分排序输出C.可以统计出各系的总分D.可以按系编号查询系某个项目的情况E.可以按项目编号查询取得前三或前五名的系F.数据存入文件中,并且可以随时查询G.系统操作规定:输入数据形式和范围:可以输入学院(系)的名称和运动会项目的名称输出形式:有中文提示,各学院(系)分数为整形H.界面要求:有合理的操作提示,每个功能都可以设立菜单,并且根据提示,可以完成相关的功能要求I.存储结构:学生自己可以根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中,实时保存第三章详细设计说明3.1数据类型定义(1)运动项目定义:typedef struct Sport //运动项目结构{char name[20]; //运动项目名称int isboy; //0为女项目,1为男项目int is3; //0为取前五名,1为取前五名int number; //项目编号int first; //第一名系的编号int second; //第二名系的编号int third; //第三名系的编号int fourth; //第四名系的编号int fifth; //第五名系的编号Sport *next;}Sport;、运动项目结构体定义如下:char型的数组,int型的number,first,second,third,fourth,fifth以及sport类型的指针next。
运动会分数统计课设报告

运动会分数统计课设报告英文回答:Introduction:In this report, I will discuss the score statistics ofa sports meet. The purpose of this report is to analyze the scores of different events and identify any trends or patterns. By doing so, we can gain insights into the performance of the participants and evaluate the success of the sports meet.中文回答:介绍:在这份报告中,我将讨论一次运动会的分数统计情况。
本报告的目的是分析不同项目的分数并找出任何趋势或规律。
通过这样做,我们可以了解参与者的表现,并评估运动会的成功程度。
Score Distribution:To begin with, let's examine the distribution of scores across different events. By analyzing the scores, we can identify the range and spread of performance levels. For example, in the sprint event, the scores may range from 10to 20 seconds, with most participants falling within the 12 to 15-second range. On the other hand, in the long jump event, the scores may range from 5 to 8 meters, with a majority of participants achieving scores between 6 and 7 meters. These score distributions provide a comprehensive view of the performance levels in each event.分数分布:首先,让我们来看看不同项目的分数分布情况。
数据结构课程设计报告--运动会分数统计

实验报告(数据结构)学院:信息科学与技术学院班级:姓名:日期:课题一运动会分数统计任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1~m,女子m+1~m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。
(m<=20,n<=20)功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。
需求分析:本演示程序中,用户可以对运动会的的成绩一不同的方式进行输入输出等操作。
首先由用户输入运动会的成绩及相关的信息,然后程序会自动将输入的信息进行统计处理。
用于测试程序的数据如下所示:学校数据项目数据:概要设计:void Scanf(); 输入学校运动会成绩void Grade(); 查询成绩void Show(); 输出void Rank(); 查询名次void Show_sumscore();学校总分排序输出void Show_boyscore();男团总分排序输出void Show_girlscore();女团总分排序输出void Show_num(); 学校编号排序输出void Menu(); 总菜单程序图:主函数Scanf 输入函数Init 初始化函数Menu总菜单详细设计:#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量#define LISTINCREMENT 10 //线性表存储空间的分配增量const int n=5; //参加运动会的学校个数const int m=5; //男子项目个数const int w=5; //女子项目个数void Init();//初始化学校总分、男女团体总分void Scanf();//输入学校运动会成绩void Grade();//查询成绩void Show();//输出void Rank();//查询名次void Show_sumscore();//学校总分排序输出void Show_boyscore();//男团总分排序输出void Show_girlscore();//女团总分排序输出void Show_num();//学校编号排序输出void Menu(); //总菜单typedef struct{char *event;int num;int sumscore;int boyscore;int girlscore;int length;int listsize; //当前分配的存储容量}SqList;// 初始化自定大小的线性表Lvoid InitList_Sq(SqList &L,int LIST_SIZE){L.event=(char *)malloc(LIST_SIZE* sizeof(char));if(!L.event) exit (0);L.length=0;L.listsize=LIST_SIZE;}//初始化默认大小的线性表Lvoid InitList_Sq(SqList &L){L.event=(char *)malloc(LIST_INIT_SIZE* sizeof(char)); if(!L.event)exit (0); //存储分配失败L.length=0; //空表长度为0L.listsize=LIST_INIT_SIZE; //初始存储容量}void ShowList_Sq(SqList &L,int Lenth){int i;for (i=0;i<Lenth;i++)printf("项目%d 成绩:%d\n",i+1,L.event[i]);}SqList School[n];void Init(){int i,j;for(i=0;i<n;i++){InitList_Sq(School[i],m+w);School[i].sumscore=0;School[i].boyscore=0;School[i].girlscore=0;School[i].num=i+1;for(j=0;j<m+w;j++){School[i].event[j]=0;}}}void Scanf(){int i,j,x;int a[3]={5,3,2};int b[5]={7,5,3,2,1};int c[10],d[10];printf("\n\n 输入各个项目的前三名或前五名的成绩\n\n\n"); for(i=0;i<m+w;i++){if(i<m){for(j=1;j<=5;j++){do{printf("项目%d 第%d名学校编号:",i+1,j);scanf("%d",&x);printf("\n");if(x>n||x<=0)printf("输入错误,请重新输入!\n");}while(x>n||x<=0);School[x-1].event[i]=b[j-1];}}else{for(j=1;j<=3;j++){do{printf("项目%d 第%d名学校编号:",i+1,j);scanf("%d",&x);printf("\n");if(x>n||x<=0)printf("输入错误,请重新输入!\n");}while(x>n||x<=0);School[x-1].event[i]=a[j-1];}}}printf("\n");//统计各校总分for(i=0;i<n;i++){for(j=0;j<m+w;j++){School[i].sumscore+=School[i].event[j];}}//统计男子总分for (i=0;i<n;i++){for(j=0;j<m;j++){School[i].boyscore+=School[i].event[j];}}//统计女子总分for(i=0;i<n;i++){for(j=m;j<m+w;j++){School[i].girlscore+=School[i].event[j];}}}void Grade(){int k,t;do{printf("\n请输入需要查询的学校编号:");scanf("%d",&k);if(k>n||k<=0)printf("输入出错,请重新输入!\n\n");}while(k>n||k<=0);do{printf("\n请输入需要查询的项目编号:");scanf("%d",&t);printf("\n");if(t>m+w||t<=0)printf("输入出错,请重新输入!\n\n");}while(t>m+w||t<=0);int i=0;while(School[i++].num!=k);printf("第%d个学校项目%d 积分为:%d\n",k,t,School[--i].event[t-1]); }void Show(){for(int i=0;i<n;i++){printf("第%d个学校:\n\n",i+1);ShowList_Sq(School[i],m+w);printf(" 男子总分为:%d\n",School[i].boyscore);printf(" 女子总分为:%d\n",School[i].girlscore);printf(" 学校总分为:%d\n",School[i].sumscore);printf("\n\n");}}void Rank(){int i,j,t;do{printf("请输入需要查询的项目编号:");scanf("%d",&t);if(t>m+w||t<=0)printf("输入出错,请重新输入!\n\n");}while(t>m+w||t<=0);for(i=n-1;i>=0;i--){for(j=0;j<i;j++){if(School[j].event[t-1]<School[i].event[t-1]){SqList temp=School[i];School[i]=School[j];School[j]=temp;}}}//冒泡排序if(t<=m){printf("项目%d 前五名:\n",t);for(i=0;i<5;i++){printf("第%d个学校\n",School[i].num);}}else if(t>m&&t<=m+w){printf("项目%d 前三名:\n",t);for(i=0;i<3;i++){printf("第%d个学校\n",School[i].num);}}elseprintf("输入错误,请重新输入!\n");}void Show_sumscore(){int i,j;for(i=n-1;i>=0;i--){for(j=0;j<i;j++){if(School[j].sumscore<School[i].sumscore) {SqList temp=School[i];School[i]=School[j];School[j]=temp;}}}printf("按学校总分排列:\n\n");Show();}void Show_boyscore(){int i,j;for(i=n-1;i>=0;i--)for(j=0;j<i;j++)if(School[j].boyscore<School[i].boyscore){SqList temp=School[i];School[i]=School[j];School[j]=temp;}printf("按男子总分排列:\n\n");Show();}void Show_girlscore(){int i,j;for(i=n-1;i>=0;i--)for(j=0;j<i;j++)if(School[j].girlscore<School[i].girlscore) {SqList temp=School[i];School[i]=School[j];School[j]=temp;}printf("按女子总分排列:\n\n");Show();}void Show_num(){int i,j;for(i=n-1;i>=0;i--)for(j=0;j<i;j++)if(School[j].num>School[i].num){SqList temp=School[i];School[i]=School[j];School[j]=temp;}printf("按学校编号排列:\n\n");Show();void Menu() //菜单函数{int choose;while(1){printf(" 运动会统计系统\n\n");printf("*****************************************************************\n"); printf(" 1、按学校编号排序输出\n");printf(" 2、按学校总分排序输出\n");printf(" 3、按男团总分排序输出\n");printf(" 4、按女团总分排序输出\n");printf(" 5、按学校编号查询学校某个项目的情况\n");printf(" 6、按项目编号查询取得前三名或前五名的学校\n");printf(" 7、退出\n");printf("*****************************************************************\n"); printf("\n\n -------------选择编号------------\n");scanf("%d",&choose);if(choose==1)Show_num();if(choose==2)Show_sumscore();if(choose==3)Show_boyscore();if(choose==4)Show_girlscore();if(choose==5)Grade();if(choose==6)Rank();if(choose==7)break;}}int main(){ int i=0;for(i=0;i<80;i++)printf("*");printf("\n 编号运动会项目 \n"); printf(" 1 男子100米 \n"); printf(" 2 男子200米 \n"); printf(" 3 男子400米 \n"); printf(" 4 男子跳高 \n"); printf(" 5 男子跳远 \n"); printf(" 6 女子跳高 \n"); printf(" 7 女子跳远 \n"); printf(" 8 女子铅球 \n"); printf(" 9 女子100米 \n");printf(" 10 女子400米\n\n");for(i=0;i<80;i++)printf("*");printf("\n");printf(" 编号参与运动会的学校 \n");printf(" 1 东华大学 \n");printf(" 2 上海交大 \n");printf(" 3 复旦大学 \n");printf(" 4 同济大学 \n");printf(" 5 华东师范大学 \n\n"); for(i=0;i<80;i++)printf("*");printf("\n");Init();Scanf();Menu();return 0;}调试分析:1,在编译过程中使用了结构体来存储航班和客户的相关信息,注意到使用结构体可以定义自己需要的类型,同时还可以对其成员进行各种操作,有效地解决了数据的建立和修改;2,在编程时建立了文件,将自己输入的文件和系统内部存入文档,有效地实现了大容量数据的操作;3,运用菜单功能,是程序和实际生活中的情况更加接近,有利于程序的广泛利用;4,在编程中学习到了编程的很多好的习惯,养成了添加注释的习惯。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运动会分数统计系统课程设计报告数据结构院系:专业:班级:学号:姓名:教师:时间:一、问题描述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、数据建议输入学校的名称,运动项目的名称等,其余信息学生自行设计;输出形式:有合理的提示,各学校分数为整形;数据的存储结构自行设计。
建议运动会的相关数据要存储在数据文件中。
3、操作1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
4、要求提供系统菜单,界面友好,提示信息完整。
二、系统分析及设计1、需求分析根据运动会分数统计系统的问题分析及设计要求,可以将此系统分为四个模块:信息统计模块、信息输出模块、信息查询模块、信息调用模块。
其系统功能结构图如图所示。
(1)、信息统计模块实现信息的输入、统计、存档。
(2)、信息输出模块实现信息的输出。
(3)、信息查询模块实现信息的查询。
(4)、信息调用模块实现信息的调用,即从文件中读出信息并输出。
2、概要设计此系统采用顺序存储结构存储,定义了一个结构体数组存放参赛学校的信息。
之所以采用顺序存储结构,是因为用它来实现信息的存储、查询比较方便,节省时间,效率高,而且也方便把信息写入文件以及读取文件。
(1)、结构体定义如下:①、定义运动项目数据类型,用于存放运动项目的信息,包括项目名称、项目编号、用户自己定义的取前3名还是前5名的积分、名次、分数。
typedef struct{char proname[10]; //项目名称int pronum; //项目编号int top; //取前3名或前5名积分,由用户自己定义int range[5]; //名次int mark[5]; //分数}Pronode; //项目结点类型定义②、定义学校数据类型,用于存放参赛学校的信息,包括学校名称、学校编号、学校总分、男子团体总分、女子团体总分以及项目数组。
typedef struct{char schname[20]; //学校名称int schnum; //学校编号int score; //总分int Mscore; //男子团体总分int Wscore; //女子团体总分Pronode a[M+W]; //项目数组}Schnode; //学校结点类型定义③、定义一个学校结点类型的结构体数组Schnode s[N]。
采用数组结构有利于随机存储和查询。
(2)、信息统计模块的算法设计说明输入参赛学校比赛成绩的信息时,采用三重循环,第一重循环控制参赛学校的个数,第二重循环控制各参赛学校的参赛项目个数,第三重循环控制各参赛学校的各参赛项目所获得的名次个数,并依次输入相应信息,根据所输入的名次得出相对应的分数。
然后分别统计出各学校的总分、男子团体总分和女子团体总分。
调用文件数据块写函数fwrite将信息写入文件,方便以后调用。
(3)、信息输出模块的算法设计说明根据设计要求,实现按学校名称、学校总分、男子团体总分、女子团体总分输出。
因此选用switch语句实现此功能。
case 1按学校名称输出时,直接取出数据进行输出;case 2按学校总分输出时,采用冒泡排序法进行排序然后按分数由高到低输出;case 3和case 4也均采用冒泡排序法进行排序最后按分数由高到低输出。
其流程图如图所示:(4)、信息查询模块的算法设计说明根据设计要求,提供两种不同的查询方式:按学校编号查询和按项目编号查询。
因此也采用switch语句实现此功能。
case 1按学校编号查询,提示输入要查询的学校编号以及要查询的项目编号,直接取出该学校该项目的信息进行输出。
case 2按项目编号查询,提示输入要查询的项目编号,输出该项目取得名次的学校的信息。
其流程图如图所示:(5)、信息调用模块的算法设计说明信息调用,即读取保存在文件里的信息并输出。
由于采用的是数组存储,可以很方便的一下把文件里的信息全部读取出来,再利用三重循环依次把各学校各项目所取得的成绩输出。
3、详细设计(1)、信息输入及分数统计功能void InfoInput()是信息输入及分数统计的函数,在输入信息的同时进行分数统计,可以输入各学校各项目前3名或前5名的成绩。
结果取前3名还是前5名由用户自己定。
用switch 语句将前3名的成绩赋值为5、3、2,前5名的成绩赋值为7、5、3、2、1,未取得的成绩则赋为0。
并统计总分、男子团体总分和女子团体总分。
其主要功能代码如下:for(m=0;m<k;m++) //输入所获名次信息{cout<<" 名次:";cin>>s[i].a[j].range[m];if(s[i].a[j].top==3) //匹配各名次对应的分数{switch(s[i].a[j].range[m]){case 0: s[i].a[j].mark[m]=0; break;case 1: s[i].a[j].mark[m]=5; break;case 2: s[i].a[j].mark[m]=3; break;case 3: s[i].a[j].mark[m]=2; break;}}else{switch(s[i].a[j].range[m]){case 0: s[i].a[j].mark[m]=0; break;case 1: s[i].a[j].mark[m]=7; break;case 2: s[i].a[j].mark[m]=5; break;case 3: s[i].a[j].mark[m]=3; break;case 4: s[i].a[j].mark[m]=2; break;case 5: s[i].a[j].mark[m]=1; break;}}s[i].score=s[i].score+s[i].a[j].mark[m]; //统计学校总分if(j<=M-1)s[i].Mscore=s[i].Mscore+s[i].a[j].mark[m]; //统计男团总分elses[i].Wscore=s[i].Wscore+s[i].a[j].mark[m]; //统计女团总分}(2)、信息输出功能void InfoOutput()是信息输出函数。
输出一个总分显示菜单,利用switch语句实现按学校名称输出或按学校总分、男子团体总分、女子团体总分由高到低输出。
采用冒泡排序的方法使之按总分由高到低输出。
利用循环语句while(1)返回总分显示菜单,break语句终止循环。
其主要功能代码如下:for(i=0;i<N;i++) //冒泡排序,用辅助数组b[]记住学校结点的下标b[i]=i;for(i=0;i<N;i++){for(j=i+1;j<N;j++){if(s[b[i]].score < s[j].score){k=b[i];b[i]=b[j];b[j]=k;}}}for(i=0;i<N;i++) //输出各学校运动会分数信息{cout<<" 学校名称:"<<s[b[i]].schname<<endl;cout<<" 学校编号:"<<s[b[i]].schnum<<endl;cout<<" 学校总分:"<<s[b[i]].score<<endl;cout<<" 男团总分:"<<s[b[i]].Mscore<<endl;cout<<" 女团总分:"<<s[b[i]].Wscore<<endl;cout<<endl;}(3)、信息查询功能void Inquiry()函数是信息查询函数,显示一个查询菜单,利用switch语句实现按学校编号查询和按项目编号查询,并输出该学校某个项目的情况或某个项目取得前3名或前5名的学校信息。
利用循环语句while(1)返回查询菜单,break语句终止循环。
其主要功能代码如下:按学校编号查询:cout<<" 要查询的学校编号:";cin>>i;if(i>N) //学校编号超出范围,输出提示信息cout<<" 这个学校没有参加此次运动会!"<<endl;else{cout<<" 要查询的项目编号:";cin>>j;if(j>M+W || j==0) //项目编号超出范围,输出提示信息cout<<" 此次运动会没有这个项目!"<<endl;else //输出要查询学校项目的成绩{cout<<" 这个项目取前"<<s[0].a[j-1].top<<"名,该学校的成绩如下:"<<endl;for(k=0;k<5;k++){if(s[i-1].a[j-1].range[k]!=0)cout<<" 名次:"<<s[i-1].a[j-1].range[k];if(s[i-1].a[j-1].mark[k]!=0)cout<<" 分数:"<<s[i-1].a[j-1].mark[k]<<endl;}}}按项目编号查询:cout<<" 要查询的项目编号:";cin>>y;if(y>M+W || y==0) //项目编号超出范围,输出提示信息cout<<" 此次运动会没有这个项目!"<<endl;else //输出该项目取得名次的学校的成绩{cout<<" 该项目取前"<<s[0].a[y-1].top<<"名,取得该名次的学校:"<<endl;for(i=0;j<N;i++)for(j=0;j<5;j++){if(s[i].a[y-1].range[j]!=0)cout<<" 学校名称:"<<s[i].schname<<" 学校编号:"<<s[i].schnum<<" 名次:"<<s[i].a[y-1].range[j];if(s[i].a[y-1].mark[j]!=0)cout<<" 分数:"<<s[i].a[y-1].mark[j]<<endl;}}三、系统实现1、完整源代码见附录。