数据结构课程设计(运动会分数统计系统)
运动会分数统计系统大数据结构课程设计
石家庄经济学院华信学院课程设计报告学院:专业:班级:学号:姓名:运动会分数统计系统的设计与实现一.问题描述大学作为一个提供学生全面发展的高等教育机构,不仅要培养学生的学习能力,而且更要注重学生的德智体美全面发展。
在大学中有很多丰富多彩的比赛和活动,例如运动会,演讲比赛,歌唱比赛,书法比赛等,在比赛和竞争中,我们的这些素质和能力更容易得到培养提升。
但是比赛最后的分数统计和查询往往是举办者头疼的事情,分数的统计和查询需要快速准确,因此我们设计了这个运动会分数统计系统,以方便分数的统计查询。
参加运动会的n个学校编号为1~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。
由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。
写一个统计程序产生各种成绩单和得分报表。
二.需求分析系统功能描述:(1)可以输入各个项目的前三名或前五名的成绩;(2)能统计各学校总分;(3)可以按学校编号或名称、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
三.概要设计3.1链表结构的ADT的定义ADT List{数据对象:D={a i|a i∈ElemSet,i=1,2,…,n,n≥0}数据关系:R1={<a i-1,a i>|a i-1,a i∈D,i=2,…,n}基本操作:InitList(&L)操作结果:构造一个空的线性表L。
GetElem(L,i,&e)初始条件:线性表L已存在,1≦i≦ListLength(L)操作结果:用e返回L中第i个数据元素的值。
LocateElem(L,e,compare())初始条件:线性表L已存在,compare()是数据元素判定函数。
操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。
运动会分数统计(数据结构课程设计)python
运动会是学校中一项重要的活动,通过运动会可以增强学生的体质,增进师生之间的情感,同时也能够激发学生的运动热情和团队精神。
而对于运动会的分数统计来说,如何高效、准确地完成这项工作是非常重要的。
本文主要介绍了基于数据结构课程设计的运动会分数统计系统,使用Python语言实现。
二、系统设计1. 数据结构的选择在设计运动会分数统计系统时,需要考虑如何存储和管理参赛队伍和成绩信息。
由于参赛队伍和成绩信息的数量较大,因此需要选择适合高效查询和排序的数据结构。
本系统选择使用Python中的字典(dictionary)和列表(list)来存储和管理数据。
2. 数据的存储在系统中,每支队伍的信息包括队伍编号、队伍名称和各项比赛成绩等。
这些信息可以使用字典来存储,其中队伍编号作为键,队伍信息作为值。
而各项比赛成绩可以使用列表来存储,方便进行排序和统计。
3. 数据的输入为了方便输入参赛队伍和成绩信息,本系统提供了相应的输入界面,用户可以通过界面逐一输入每支队伍的信息。
程序也提供了批量导入功能,用户可以通过导入文件的方式一次性输入所有的参赛队伍和成4. 数据的统计和输出系统可以对输入的成绩信息进行统计和排序,可以按照总分或特定比赛项目的成绩进行排序,并将排名信息输出到文件中。
排名信息包括队伍名称、总分和各项比赛成绩,方便后续的奖励和表彰工作。
三、系统实现1. 数据结构类的设计为了方便对队伍和成绩信息进行管理,本系统设计了队伍(Team)和成绩(Score)两个类,分别用于存储队伍信息和比赛成绩。
2. 主程序的设计系统的主程序主要包括数据的输入、统计和输出三个功能。
用户可以通过交互式界面输入队伍和成绩信息,也可以通过命令行参数进行批量导入。
系统会对输入的成绩信息进行统计和排序,并将排名信息输出到指定的文件中。
3. 界面设计为了方便用户操作,系统提供了简洁清晰的交互式界面。
用户可以通过界面进行数据的输入和操作,也可以查看和导出排名信息。
数据结构运动会分数统计系统
数据结构运动会分数统计系统一、系统需求分析在设计运动会分数统计系统之前,我们首先需要明确系统的需求。
运动会通常包括多个项目,如田径、游泳、球类比赛等,每个项目又有不同的小项和参赛选手。
因此,系统需要能够处理大量的比赛数据,包括选手信息、比赛项目、成绩等。
1、数据录入功能系统应提供方便快捷的数据录入界面,支持手动输入和批量导入数据。
录入的数据应包括选手的基本信息(如姓名、性别、班级等)、参赛项目、比赛成绩等。
2、成绩计算功能能够根据不同项目的比赛规则自动计算选手的成绩和得分。
例如,在田径比赛中,根据选手的跑步时间计算名次和得分;在游泳比赛中,根据选手的游泳时间计算得分;在球类比赛中,根据比赛结果(如胜、负、平)计算得分。
3、数据存储功能系统需要将录入和计算得到的数据安全地存储起来,以便后续查询和分析。
数据存储应采用可靠的数据库管理系统,如 MySQL、Oracle 等。
能够根据不同的条件查询和统计比赛数据,如查询某个选手的比赛成绩、某个班级的总分、某个项目的前三名等。
统计结果应以清晰直观的方式展示,如表格、图表等。
5、报表生成功能系统应能够生成各种报表,如比赛成绩报表、班级总分报表、项目排名报表等。
报表应支持打印和导出为 Excel、PDF 等格式,方便数据的共享和存档。
二、系统设计基于上述需求分析,我们可以设计一个基于数据结构的运动会分数统计系统。
系统主要由以下几个模块组成:1、数据录入模块该模块负责接收用户输入的比赛数据,并进行合法性检查和数据预处理。
数据录入可以通过网页界面、Excel 导入等方式进行。
2、成绩计算模块根据比赛项目的规则和录入的成绩数据,计算选手的得分和排名。
成绩计算可以采用算法实现,如冒泡排序、快速排序等。
3、数据存储模块使用数据库来存储比赛数据,包括选手信息表、比赛项目表、成绩表等。
数据库设计应遵循规范化原则,以确保数据的一致性和完整性。
通过编写 SQL 查询语句,实现对比赛数据的查询和统计功能。
数据结构课程设计报告 运动会计分系统
课程设计报告书
2010 年
12 月
目录
1 设计时间 .....................................................3 2 设计目的 .....................................................3 3 设计任务 .....................................................3 4 设计内容 .....................................................3 4.1 需求分析 ................................................3 4.2 总体设计 ................................................4 4.3 详细设计 ................................................6 4.4 测试与分析 ..............................................9 4.4.1 测试 ...............................................8 4.4.2 分析 ...............................................8 4.5 附录 ....................................................9 5 总结与展望 ..................................................14 5.1 设计总结 ...............................................14 5.2 优化展望 ...............................................10 参考文献......................................................15 成绩评定......................................................15
(完整word版)数据结构 运动会分数统计系统
数据结构课程设计报告题目:运动会分数统计系统学生姓名:学号:班级:指导教师:2010年 5 月28 日目录一、题目 (2)二、时间 (3)三、地点 (3)四、程序要求 (3)五、数据结构设计 (3)1。
概述 (3)2。
关键算法 (5)3。
查询操作 (7)六、详细代码 (8)七、测试结果 (26)1.主菜单窗口 (26)3. 统计各学校总分 (27)4. 按学校编号排序输出 (27)5。
按学校总分排序输出 (28)6. 按男团体总分排序输出 (28)7。
按女团体总分排序输出 (29)8. 按学校编号查询学校某个项目情况 (29)9。
按项目编号查询取得名次的学校 (30)八、测试非法数据 (30)九、课程设计总结 (32)一、题目:运动会分数统计系统二、时间: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、局部非法数据。
进行程序测试,以保证程序的稳定。
C++数据结构课程设计 运动会分数分析系统
软件学院班级:10211121学号:1021112106姓名:艾志强指导老师:姜林一、设计目的 (1)二、设计要求 (1)三、设计内容(运动会分数统计查询系统) (1)(一)需求分析 (1)(二)概要设计 (2)(三)详细设计(源代码) (4)(四)测试数据及运行结果 (20)四、运行环境 (29)一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。
凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。
三、设计内容(运动会分数统计查询系统)(一)需求分析1.在该程序中,参赛学校编号为1~n(n<=20)。
比赛分成m(m<=30)个男子项目和w(w<=20)个女子项目,分别编号为1~m和m+1~m+w,姓名长度不超过20个字符;2.输入各个项目信息的详细信息,包括项目号,姓名,性别,学校和名次。
3.对于项目编号可以取前五名,得分顺序为7,5,3,2,1;亦可以取前三名,得分顺序为5,3,2,具体怎样取名次可以由用户自己定义。
4.程序执行的命令包括:1)构造线性表的存储结构(简单一维线性表,广义二维表)。
具体包括:(1)运动会项目加初始化(2)录入运动会中各学校的成绩(3)计算各学校详细成绩以及排名可以将以上信息存储在线性表中(一维,二维)2)根据每个学生的名次确定相应的得分。
3)可以分别按男子团体总分,女子团体总分和团体总分降序输出各学校的成绩。
4)可以按学校编号查询学校某个项目的情况,也可以按项目编号查询取得前三或前五名的学校。
数据结构课程设计--运动会成绩管理系统
目录1 需求分析 (1)1.1 问题描述 (1)1.2 基本要求 (1)1.3 测试数据 (1)2 概要设计 (2)2.1 数据结构 (2)2.2 程序模块及之间的调用关系 (2)3 详细设计 (3)3.1 数据类型定义 (3)3.2 函数之间的调用关系 (3)3.3 算法设计 (4)4 测试结果 (5)4.1多组数据输入与输出 (5)5 调试分析 (9)参考文献 (10)附录 (11)1 需求分析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)1.2 基本要求(1) 可以输入各个项目的前三名或前五名的成绩;(2) 能统计各系总分,(3) 可以按系编号、系总分、男女团体总分排序输出;(4) 可以按系编号查询系某个项目的情况;可以按项目编号查询取得前三或前五名的系。
1.3 测试数据(1) 输入:进入输入界面,根据提示,输入参赛学校个数,再输入:男子组和女子组个数。
再根据提示的选择菜单1:输入各项中的获奖学校。
(2) 输入:2查看输出结果。
(3) 输入:3查看输出结果。
(4) 输入:4查看输出结果。
(5) 输入:5查看输出结果。
(6) 输入:6查看输出结果。
(7) 输入:7根据提示输入系编号和项目编号。
(8) 输入:8根据提示输入系编号和项目编号。
(8) 输入:9,退出。
2.1 数据结构(1) 学校:代号,男子团体个数和总分,女子团体个数和总分。
(2) 运动项目:项目编号,男子项目,女子项目,前三名,前五名,第一名系的编号,第二名系的编号,第三名系的编号,第四名系的编号,第五名系的编号。
2.2 程序模块及之间的调用关系3.1算法设计主要算法的设计思想:本程序主要是使用数组来实现操作。
数据结构课程设计-运动会分数统计系统
运动会分数统计系统Ø 设计内容1. 任务:参加运动会有n个学校,学校编号为1~n。
比赛分成m个男子项目,和w个女子项目。
项目编号为1~m,女子为m+1~w。
不同的项目取前5名或前3明积分;取前5名的积分为:7、5、3、2、1,前3名的积分分别为:5、3、2;哪些项目取前5名或前3名由学生自己决定。
(m<=20,n<=20)。
2. 功能要求:1) 可以输入各个项目的前3名或前5名的成绩;名的成绩;2) 能统计各个学校总分;能统计各个学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前3或前5名的学校。
名的学校。
Ø 设计思路1. 系统结构设计图运动会SportsMeeting东华University交大University……比赛项目集合SportEvents 项目1 Event项目2 Event…………复旦University运动会分数统计系统结构设计图2. 思路分析1) 从上面的结构设计图来看,隐含地给出了第一个约束条件:每个参赛学校均参加所有的比赛项目。
然而这种设计思路并不符合实际情况,因为每个学校有权利选择参加或不参加某个比赛项目。
加某个比赛项目。
2) 首先,在上述结构图中,比赛项目Event 是最小的数据存储基本单元。
比赛项目集合SportEvents 可以理解为Event 数组,包含了所有的比赛项目。
根据约束,只要有学校University 参加运动会,此学校就包含了一个SportEvents 集合,即为每个学校分配自己的项目成绩单。
有n 个学校报名参加了运动会SportsMee ng ,大会的工作人员根据比赛项目结果统计各个学校的成绩。
赛项目结果统计各个学校的成绩。
因此,因此,这种设计结构有3层包含关系,层包含关系,但是每一部分但是每一部分相互独立,耦合性弱。
关于运动会分数统计系统数据结构++课程设计实验报告
#include <stdlib.h>#include"fstream.h"#include <iostream.h>class Record//最小的类,用来记录得奖者的信息{friend class Subject;friend class RankList;private:int school;int score;int mark;public:Record(int s=-1,int sc=0,int m=0):school(s),score(sc),mark(m){} int & ReturnSchool(){return school;}int & ReturnScore(){return score;}int & ReturnMark(){return mark;}};class Subject//它嵌套Record类,正好组成一个项目{friend class RankList;private:Record Rec[5];void SetRecord_3(int i);void SetRecord_5(int i);};class School//主要为了输出的方便{friend class RankList;int WholeScoreM,WholeScoreF,WholeScore;void output(){cout<<WholeScoreM<<"\t"<<WholeScoreF<<"\t"<<WholeScore<<endl; }School(){WholeScoreM=0;WholeScoreF=0;WholeScore=0;}};class RankList{//他嵌套Subject类,正好组成所有的项目private:Subject Subject[5];public:School school[5];void Innput();int SumScoreSchool(int number);//.按照学校代码查找学校总分int MSumScoreSchool(int number);//按照学校代码查找学校男子团体总分int FSumScoreSchool(int number);//按照学校代码查找学校女子团体总分void OutPut(void);//按学校代码输出所有的总分void SumOutPut(void);//输出所有学校总分排名void MSumOutPut(void);//输出学校男子总分排名void save_to_file();//存入文件void FSumOutPut(void);//输出学校女子总分排名void get(char * c);//从文件中读取数据void paixuWhole(void);void paixuWholeM(void);void paixuWholeF(void);void ItemSearch(int SchoolNumber,int ItemNumber);//按学校编号查询学校某个项目的情况void SchoolSearch(int ItemNumber);//可以按项目编号查询取得前三或前五名的学校};void RankList::get(char * c){char ch;fstream fin(c,ios::in|ios::out);if(!fin){cerr<<"open"<<c<<"error!"<<endl;exit(1);}for(int k=0;k<3;k++)for(int j=0;j<5;j++){fin>>Subject[k].Rec[j].ReturnSchool();fin>>Subject[k].Rec[j].ReturnScore();fin>>Subject[k].Rec[j].ReturnMark();//iofile.read((char *)&Subject[k].Rec[j],sizeof(Subject[k].Rec[j]));}for( k=3;k<5;k++)for(int j=0;j<3;j++){fin>>Subject[k].Rec[j].ReturnSchool();fin>>Subject[k].Rec[j].ReturnScore();fin>>Subject[k].Rec[j].ReturnMark();//iofile.read((char *)&Subject[k].Rec[j],sizeof(Subject[k].Rec[j]));}}void RankList::save_to_file(){ofstream outfile("123.txt",ios::out);if(!outfile){cerr<<"open error!"<<endl;exit(1);}for(int k=0;k<3;k++)for(int j=0;j<5;j++){outfile<<Subject[k].Rec[j].ReturnSchool()<<""<<Subject[k].Rec[j].ReturnScore()<<" "<<Subject[k].Rec[j].ReturnMark()<<endl; }for( k=3;k<5;k++)for(int j=0;j<3;j++){outfile<<Subject[k].Rec[j].ReturnSchool()<<""<<Subject[k].Rec[j].ReturnScore()<<" "<<Subject[k].Rec[j].ReturnMark()<<endl; }outfile.close();}void RankList::ItemSearch(int SchoolNumber,int ItemNumber){int temp=0;if(ItemNumber<3){for(int i=0;i<5;i++){if(Subject[ItemNumber].Rec[i].ReturnSchool()==SchoolNumber){cout<<"第"<<SchoolNumber<<"学校在男子项目"<<ItemNumber<<"取得"<<i+1<<"名"<<endl;temp++;}}}else{for(int i=0;i<3;i++){if(Subject[ItemNumber].Rec[i].ReturnSchool()==SchoolNumber){cout<<"第"<<SchoolNumber<<"学校在女子项目"<<ItemNumber<<"取得"<<i+1<<"名"<<endl;temp++;}}}if(temp==0)cout<<"第"<<SchoolNumber<<"学校在项目"<<ItemNumber<<"没有取得名次"<<endl; }void RankList::SchoolSearch(int ItemNumber){if(ItemNumber<3){for(int i=0;i<5;i++){cout<<"取得男子项目第"<<i+1<<"名的学校是"<<Subject[ItemNumber].Rec[i].ReturnSchool()<<endl;}}else{for(int i=0;i<3;i++){cout<<"取得女子项目第"<<i+1<<"名的学校是"<<Subject[ItemNumber].Rec[i].ReturnSchool()<<endl;}}}void Subject::SetRecord_3(int i){ //为取前三名的项目建立记录 int a,j;cout<<"请输入第"<<i+1<<"名的学校,成绩"<<endl;cout<<"学校:";cin>>a;bool Tag=true;while(Tag){if(a>5){cout<<"输入错误!只有5个学校!"<<endl;cout<<"学校:";cin>>a;}elseTag=false;}Rec[i].school=a;cout<<"成绩:";cin>>a;Rec[i].score=a;bool flag=true;if(i>0){while(flag){for(j=0;j<i;j++){if(Rec[i].score>Rec[j].score){cout<<"输入错误!重新输入!"<<endl;cin>>a;Rec[i].score=a;}elseflag=false;}}}switch(i){case 0:Rec[i].mark=5;break;case 1:Rec[i].mark=3;break;case 2:Rec[i].mark=2;break;}}void Subject::SetRecord_5(int i){ //为取前五名的项目建立记录 int a;cout<<"请输入第"<<i+1<<"名的学校,成绩"<<endl;cout<<"学校:";cin>>a;bool Tag=true;while(Tag){if(a>5){cout<<"输入错误!只有5个学校!"<<endl;cout<<"学校:";cin>>a;}elseTag=false;}Rec[i].school=a;cout<<"成绩:";cin>>a;Rec[i].score=a;bool flag=true;if(i>0){while(flag){for(int j=0;j<i;j++){if(Rec[i].score>Rec[j].score){cout<<"输入错误!重新输入!"<<endl;cout<<"成绩:";cin>>a;Rec[i].score=a;}elseflag=false;}}}switch(i){case 0:Rec[i].mark=7;break;case 1:Rec[i].mark=5;break;case 2:Rec[i].mark=3;break;case 3:Rec[i].mark=2;break;case 4:Rec[i].mark=1;break;}}void RankList::Innput(){int i,j;for(i=0;i<3;i++){cout<<"项目"<<i+1<<"(男子,取前五名)"<<endl; for(j=0;j<5;j++){Subject[i].SetRecord_5(j);}}for(i=3;i<5;i++){cout<<"项目"<<i+1<<"(女子,取前三名)"<<endl; for(j=0;j<3;j++){Subject[i].SetRecord_3(j);}}}int RankList::SumScoreSchool(int number)//查找学校总分{int gole=MSumScoreSchool(number)+FSumScoreSchool(number); school[number].WholeScore=gole;return gole;}int RankList::MSumScoreSchool(int number){int WholeScore=0,i,j;for(i=0;i<3;i++){for(j=0;j<5;j++)if(Subject[i].Rec[j].ReturnSchool()==number){WholeScore=WholeScore+Subject[i].Rec[j].ReturnMark(); }}school[number].WholeScoreM=WholeScore;return WholeScore;}int RankList::FSumScoreSchool(int number){int WholeScore=0,i,j;for(i=3;i<5;i++){for(j=0;j<5;j++)if(Subject[i].Rec[j].ReturnSchool()==number){WholeScore=WholeScore+Subject[i].Rec[j].ReturnMark(); }}school[number].WholeScoreF=WholeScore;return WholeScore;void RankList::paixuWhole(){int bound,j,t;School o;bound=4;while(bound!=0){t=0;for(j=0;j<=bound;j++)if(school[j].WholeScore<school[j+1].WholeScore) {o=school[j];school[j]=school[j+1];school[j+1]=o;t=j;}bound=t;}}void RankList::paixuWholeM(){int bound,j,t;School o;bound=4;while(bound!=0){t=0;for(j=0;j<=bound;j++)if(school[j].WholeScoreM<school[j+1].WholeScoreM) {o=school[j];school[j]=school[j+1];school[j+1]=o;t=j;}bound=t;}void RankList::paixuWholeF(){int bound,j,t;School o;bound=4;while(bound!=0){t=0;for(j=0;j<=bound;j++)if(school[j].WholeScoreF<school[j+1].WholeScoreF){o=school[j];school[j]=school[j+1];school[j+1]=o;t=j;}bound=t;}}void RankList::OutPut(void){for(int i=0;i<5;i++){SumScoreSchool(i);MSumScoreSchool(i);FSumScoreSchool(i);}cout<<"学校"<<" "<<"男团总分"<<" "<<"女团总分"<<" "<<"总分"<<endl; for(i=0;i<5;i++){cout<<i<<"\t";school[i].output();}}void RankList::SumOutPut(void){int i,k;for(i=0;i<5;i++){SumScoreSchool(i);MSumScoreSchool(i);FSumScoreSchool(i);}paixuWhole();cout<<"学校总分排名为(根据学校代码)"<<endl;cout<<"学校"<<" "<<"男团总分"<<" "<<"女团总分"<<" "<<"总分"<<endl; for(k=0;k<5;k++){cout<<k<<"\t";school[k].output();}}void RankList::MSumOutPut(void){int i,k;for(i=0;i<5;i++){SumScoreSchool(i);MSumScoreSchool(i);FSumScoreSchool(i);}paixuWholeM();cout<<"学校男子团体总分排名为(根据学校代码)"<<endl;for(k=0;k<5;k++){cout<<k<<"\t";school[k].output();}}void RankList::FSumOutPut(void){int i,k;for(i=0;i<5;i++){SumScoreSchool(i);MSumScoreSchool(i);FSumScoreSchool(i);}paixuWholeF();cout<<"学校女子团体总分排名为(根据学校代码)"<<endl;for(k=0;k<5;k++){cout<<k<<"\t";school[k].output();}}//运动会分数统计系统#include"iostream.h"#include"fstream.h"#include"stdlib.h"//#include"fstream"#include"fgc.h"int main(){cout<<"比赛共设5个项目,共有5个学校参加"<<endl;cout<<"前三为男子组项目,后两个为女子组项目"<<endl;cout<<"每组前三个个项目取前五名,其余取前三名"<<endl;cout<<"取前五名的项目,从第一名开始,积分依次为7分,5分,3分,2分,1分"<<endl;cout<<"取前三名的项目,从第一名开始,积分分别为5分,3分,2分"<<endl;cout<<" ************************************************** "<<endl;int t;RankList Rank;// 定义一个RankList对象bool flag1;//用来控制错误的再次输入char r[9]; //文件名cout<<"请选择你的输入模式:1,文件输入,2,键盘输入,请输入整数1或者2"<<endl; cin>>t;if(t==1||t==2) // 防止错误的输入flag1=true;while(flag1){switch(t){case 1:cout<<"请输入文件名"<<endl;Rank.get(r);flag1=false;break;case 2:Rank.Innput();Rank.save_to_file();flag1=false;break;default :cout<<"你的输入有误,请再次输入1或者2"<<endl;//纠错返回switch cin>>t;flag1=true;}}bool flag=true;//用来控制多次查询while(flag){int i;cout<<"请选择要进行的操作"<<endl;cout<<"1,按学校编号排序"<<endl;cout<<"2,按学校总分排序"<<endl;cout<<"3,男团体总分排序"<<endl;cout<<"4,女团体总分排序"<<endl;cout<<"5,按学校编号查询学校某个项目的情况"<<endl;cout<<"6,可以按项目编号查询取得前三或前五名的学校"<<endl;cout<<"0,退出"<<endl;cin>>i;char o;while(i<0||i>6)//防止错误的输入{cout<<"您的输入有误,请您在0~6之间选一个数输入"<<endl;cin>>i;}switch(i){Rank.OutPut();cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n')//防止错误的输入{cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;case 2:Rank.SumOutPut();cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;Rank.MSumOutPut();cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;case 4:Rank.FSumOutPut();cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;int k,l;cout<<"请输入学校编号0~4"<<endl;cin>>k;while(k<0||k>4){cout<<"您的输入有错,请再次输入0~4之间的任意数"<<endl; cin>>k;}cout<<"请输入项目编号0~4"<<endl;cin>>l;while(l<0||l>4){cout<<"您的输入有错,请再次输入0~4之间的任意数"<<endl; cin>>l;}Rank.ItemSearch(k,l);cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;case 6:cout<<"请输入项目编号"<<endl;int m;cin>>m;Rank.SchoolSearch(m);cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;case 0:flag=false;break;}}return 0;}。
运动会分数统计系统设计报告
} 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){
运动会分数统计系统数据结构 课程设计 附代码
摘要21世纪是个信息化的时代,现代计算机技术的发展,为各行各业的发展创造了一个全新的时代背景——人们的生活、工作等已经越来越离不开计算机科学的运用,体育作为个人、家庭、社会的一个主要实践领域,大大小小的运动会也在各大中院校中展开,自从计算机科学涉及运动领域后,人们对运动会的管理也从人工的向自动化转变。
运用数据结构的知识解决运动会分数统计的问题,编写一个程序来完成运动会分数统计系统.本程序设计中,可以输入参加运动会的学校编号及项目编号;根据具体情况选择输入参加项目的男女类别和取成绩名次类别;最后选择输入名次;实现数据统计,排序输出,学院及项目查询等功能。
关键词:运动会分数统计程序排序查询目录1 设计内容和要求 (1)1.1具体内容及要求 (1)2.总体设计 (3)2.1系统设计方案 (3)2.2功能模块设计 (3)3.详细设计 (5)3.1数据结构定义 (5)3.2比赛数据输入模块 (6)3.3比赛成绩输出模块 (7)3.3查询比赛成绩模块 (8)4.调试与测试 (10)4.1测试数据 (10)4.1.1 School.txt (10)4.1.2 MatchItem.txt (11)4.1.3 PreNews.txt (12)4.1程序主界面 (12)4.2输入数据 (12)4.3排序输出学校总分 (14)4.4排序输出男子团体总分 (14)4.5排序输出女子团体总分 (15)4.6按学校查询项目数据 (15)4.7按项目查询数据 (16)5.总结 (17)参考文献 (18)致谢..................................................... 错误!未定义书签。
1 设计内容和要求数据结构课程设计是为数据结构课程独立开设的实践性教学环节。
数据结构课程设计对于巩固数据结构知识,加强学生的实际动手能力和提高学生综合素质是十分必要的。
课程设计的目的是要求学生达到熟练掌握C语言的基本知识和技能;了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;提高程序设计和调试能力。
运动会分数查询系统数据结构课程设计
14-15上13信息管理与信息系统1班《数据结构课程设计》“运动会分数系统”的设计与实现一、设计要求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)可以按学校编号查询学校某项目情况,可以按项目编号查询取得前三名或前五名的学校。
二、概要设计为了实现以上功能,可以从3个方面着手设计。
为了实现运动会分数统计系统,设计一个含有多个菜单项的主控菜单子程序以连接系统的各项子程序,方便用户使用本程序。
本系统主控菜单运行界面下图1所示:1.主界面设计图1 运动会分数系统主菜单2.存储结构设计本程序采用链式存储类型(LNode)存储运动会分数统计系统的节点信息。
运动会分数统校园导游系统设计第1 页共16 页14-15上13信息管理与信息系统1班《数据结构课程设计》计系统的链表中的结点包括8个域:项目编号域(objnum)、项目类型(objtype)、运动员编号(athnum)、运动员姓名(athname[20])、学校编号(schnum)、校名(schname[30])、运动员分数(athscore)和指向下一个节点的指针域(struct LNode *next)。
3.系统功能设计本系统设置了8个子功能菜单。
8个子功能的设计描述如下:(1)录入各项目的成绩。
由函数creatLink()实现。
当用户选择该功能时,系统会以用户输入的数据运动会分数统计链表。
(2)统计各学校分数。
由函数schoolScore()实现。
数据结构课程设计-运动会分数统计(C语言版)
目录第一章绪论 (1)1.1 运动会分数统计系统的背景 (1)1.2 运动会分数统计系统的任务和目标 (1)第二章运动会分数统计系统的需求分析 (2)2.1 功能需求 (2)2.2 功能模块 (2)2.3 数据要求 (3)2.4 性能要求 (3)第三章系统开发工具及关键技术 (4)3.1 系统开发工具 (4)3.1.1 CodeBlocks (4)3.2 关键技术 (4)3.2.1 C语言 (4)3.2.2 数组 (4)3.2.3 链表 (4)第四章运动会分数统计系统的实现 (5)4.1 数据结构设计 (5)4.2 结构定义 (5)4.3 系统界面的实现 (6)4.3.1 主菜单窗口 (6)4.3.2 输入各个项目成绩并存储文件 (6)4.3.3 统计各学校总分 (8)4.3.4 按学校编号排序输出 (8)4.3.5 按学校总分排序输出 (8)4.3.6 按男团体总分排序输出 (9)4.3.7 按女团体总分排序输出 (9)4.3.8 按学校编号查询学校某个项目情况 (10)4.3.9 按项目编号查询取得名次的学校 (10)第五章结束语 (11)5.1 课程设计总结 (11)5.2 致谢 (11)参考文献 (12)附录 (13)第一章绪论1.1 运动会分数统计系统的背景在信息技术已经深入人类工作生活的今天,计算机软件得到了广泛的应用,越来越多的政府和企业将其业务纳入计算机软件系统。
随着社会进步,体育事业的发展,为了提高运动会成绩统计准确,减少设计者们的工作量,开发了本系统。
1.2 运动会分数统计系统的任务和目标任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前前三名积分;前三名的积分分别为:5、3、2。
(m、w<=20,n<=10)。
目标:1.可以输入各个项目的前三名或前五名的成绩;2.能统计各学校总分;3.可以按学校编号、学校总分、男女团体总分排序输出;4.可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
数据结构运动会分数统计系统完整版
数据结构运动会分数统计系统HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】洛阳理工学院课程设计报告课程名称数据结构课程设计设计题目运动会分数统计系统专业计算机科学与技术班级学号姓名课程设计任务书设计题目:运动会分数统计系统设计内容与要求:参加运动会有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 月日课程设计评语成绩:指导教师:_______________年月日1.算法思想:本课设要求输入信息,统计分数,执行排序与查找功能,在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。
由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。
考虑到程序的要求在设计函数时将学校个数和项目个数设计为可变的数据,为方便使用设计菜单函数(menu),而由于要求将信息存储在文件中故设计文件的存储(savetofile)与读取函数(readfromfile),信息输入函数(input)在输入基本信息后由系统统计总分的内容并全部存入文件file中,在接下来的函数中开始都需要读取文件中的信息,信息的输出(output)输出输入函数中统计后的各项信息,在排序输出(sortput)中使用冒泡排序法进行不同关键字的排序,查询函数(search)采用顺序表的查找来完成。
数据结构课程设计报告--运动会分数统计
实验报告(数据结构)学院:信息科学与技术学院班级:姓名:日期:课题一运动会分数统计任务:参加运动会有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,在编程中学习到了编程的很多好的习惯,养成了添加注释的习惯。
数据结构 课程设计 运动会计分(C语言)
1.问题描述纸质的运动会分数信息统计无法满足人们对信息处理的需求,包括信息查找,排名等各方面信息处理人工处理很慢,严重影响运动会进程,“运动会分数统计系统”是为了帮助人们更快更准确的处理信息。
2.需求分析(1)输入学校基本信息(2)输入项目基本信息(3)输入运动员比赛信息(4)统计运动员信息(5)对同一项目运动员排名(6)对各学校总分排名(7)按学校编号、学校总分、男女团体总分排序输出(8)可对某项目进行修改3.主界面设计为了实现运动会分数统计系统各功能的管理,设计一个含有多个菜单项的主控菜单子程序一链接系统的各项子功能,方便用户使用本系统。
主界面如下:4.存储结构设计本系统主要采用数组结构体类型来表示存储在“运动会分数统计系统”中的信息。
第一个结构体为学校信息包括学校名、学校编号、学校参加比赛运动员获奖积分男子总积分、女子总积分。
第二个结构体为项目属性项目编号、项目名第三个结构体为运动员信息运动员排名、运动员编号、运动员姓名、参加项目编号、积分、学校编号、学校名。
5.系统功能设计(1)输入残社学校数量、男子项目数、女子项目数(2)输入学校编号和学校名字(3)输入项目编号、项目名字(4)输入结束项目编号、选取项目获奖名次、输入获奖的运动员姓名所在学校运动员积分(5)按学校编号排序输出可以一次输出所有参赛学校信息(6)按学校总分排序输出可以按学校运动员总分排序输出(7)按学校男运动员总分排序输出(8)按学校女运动员总分排序输出(9)查询某个项目成绩可以通过项目编号查询运动员成绩(10)修改某项项目获奖名单可以对项目中的获奖运动员进行修改(11)显示运动会上统计的信息6.模块设计本模块包含两个模块 主程序模块和数据结构操作模块 主程序模块7.系统子程序功能设计(1)Ssum(school sa[],athlete sb[][M]) / /统计学校分数 (2)print(school c[],int i){//学校相关信息输出 (3)snorder(school c[]){//按学校编号排序 (4)saorder(school c[])//按学校总分排序 (5)sforder(school c[])//按学校女子总分排序 (6)smorder(school c[])//按学校男子总分排序(7)Snoquery(school sb[],athlete sa[][M])//按学校编码查询 (8)Pnorder(athlete d[][M])//按项目编号查询排名(9)udefine(athlete a[][M],school b[])//修改项目获奖运动员 (10) menu(school b[],athlete sa[][M])//菜单选项 (11)main(int argc, char* argv[])8.本系统10个子程序之间的主要调用关系图9.数据类型定义typedef struct {//运动员属性 int arank;//排名 int No; //编号char Name[20];//姓名int Pno; //参加项目编号数据结构操作模块Main()1103 47568921222int grade;//成绩int Sno; //学校编号char Sna[20];//学校名字}athlete;typedef struct{//学校属性int No; //学校编号char Name[20];//学校名字int Msum; //男运动员总分int Fsum; //女运动员总分int Fnum; //输出标记int Pnum; //项目种类}school;typedef struct{//项目属性int No; //项目编号char Name[20];//项目名}project;10.系统子函数部分详细设计void Ssum(school sa[],athlete sb[][M])//统计学校分数{int i,j,k;for(i=0;i<n;i++){sa[i].Fsum=0;sa[i].Msum=0;//初始化总分。
数据结构课程设计—运动会分数统计系统
运动会分数统计系统1、需求分析为了简便地对运动会的报名、成绩的录入和统计,本组设计开发了本系统,以解决需求。
当然,本系统只是一个较为简单的系统,仍然存在着一些操作上以及显示上的问题,本组将在以后的学习中进行完善。
问题描述:参加运动会有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、局部非法数据。
进行程序测试,以保证程序的稳定。
2、概要设计1. 本系统的流程图如下:NYYYNCase2Case3 YCase1NYN2. 本系统采用的存储结构为结构化设计理念,这是数据库的最基本的设计要求,主要包括三个数据表:(1)项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。
本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。
这也有利于以后项目情况的查询。
typedef struct{int itemnum; //项目编号int top; //取名次的数目int range[5]; //名次int mark[5]; //分数}itemnode; //定义项目结点的类型(2)学校数据表:本数据表储存了各个参赛学校的总体情况,包括学校的编号、名称、男子团体总分、女子团体总分和学校总分。
数据结构运动会分数系统
1 系统分析1.1 课程设计内容设计一个运动会分数统计系统,功能包括:1、数据、信息输入2、不同方式排序3、输出相关信息4、计算得分情况运动会分数统计系统的性能需求:1、可以输入各个项目的前三名或前五名的成绩2、能统计各学校总分3、可以按学校编号或名称、学校总分、男女团体总分排序输出4、可以按学校编号查询学校某个项目的情况5、可以按项目编号查询取得前三或前五名的学校6、数据存入文件并能随时查询7、输入数据形式和范围:可以输入学校的名称,运动项目的名称1.2 系统功能需求分析系统要求能实现的功能有输入数据、排序及计算。
输入数据时,会以先输入学校代码的形式,依次再输入该校各项目获得的名次,考虑到使用者的方便,减少重复输入错误的发生。
计算时会依据每个名次的得分(第一名:5第二名:3第三名:2),将每个学校的总得分,及每个学校男团、女团的总分计算出。
为了方便查看,我们将采用多元化的排序,按学校总分、学校编号、男团总分、女团总分来排序。
1.3 数据结构设计考虑到在系统的使用时,不需要进行删除、插入等操作,为了方便数据的调用,我们将采用顺序结构。
我们定义了两个自定义类型,分别是学校和项目。
项目下面有项目编号和名次。
学校下面有学校编号,总分,男团总分,女团总分。
# define Max 20int N,bm,gm;//学校个数男团体个数女团体个数void xunhuan();struct match //项目{int matchnum;//项目编号int rank[3];//名次}mat[Max];struct school //学校{int schoolnum;//学校编号int total;//学校总分int boytotal;//男团总分int girltotal;//女团总分struct match mat[Max];}sch[Max];2系统设计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. 基本要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。
3.测试数据1)首先进入成绩录入界面,先输入学校编号1,再输入学校1各个项目成绩0或1(‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次); 然后再输入第二个学校编号2,再输入成绩;当输入其他的学校编号和成绩会提示错误输入,重新输入。
2)然后进入总目录,输入:1 统计各学校总分并输出;3)输入:2 按学校编号排序输出;4)输入:3 按学校总分排序输出;5)输入:4 按男团体总分排序输出;6)输入: 5 按女团体总分排序输出;7) 输入:6 按学校编号查询学校某个项目情况;8)输入:7 按项目编号查询取得名次的学校;9)输入:0 退出系统;10)输入其他数据会提示错误输入,重新输入。
二、概要设计1 结构体运动项目{ 项目编号;名次;};学校{ 学校编号;项目;团体总分;男团体总分;女团体总分;};2 主程序(main)包括登陆欢迎程序,分数录入程序,查询程序,退出程序3 程序模块机之间的调用关系流程图三、详细设计1、宏定义:#define N 2启动程序录入分数显示主目录统计各学校总分按学校编号排序按学校总分排序按女团体总分排按学校编号查询学校某个项目情况按男团体总分排按项目编号查询取得名次的学校退出系统用户选择某命令,产生相应的操作显示结果,用户选择返回主目录或退出退出程序#define bm 4 #define gm 32、数据类型定义(1)运动项目的定义:struct match {int matchnum; int rank[3]; }mat[bm+gm];(2)学校的定义:struct school { int schoolnum;struct match mat[bm+gm]; int total; int boytotal;int girltotal;}sch[N];3、函数之间的调用关系mainxunhuantotaljisuainputhuanyingni funct4 funct6 funct5funct3 funct2 funct1 funct0 mulu funct7system4、算法设计主要算法的设计思想:本程序主要是使用顺序表来实现操作。