运动会分数统计系统

合集下载

运动会分数统计(数据结构课程设计)python

运动会分数统计(数据结构课程设计)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 查询语句,实现对比赛数据的查询和统计功能。

运动会分数统计系统(内涵源代码)

运动会分数统计系统(内涵源代码)

数据结构课程设计实验学校:江西农业大学班级:软件1115班姓名:朱利斌学号:20111976课程:数据结构课程设计指导教师:彭玉莹2012.1.2目录第一章绪论 (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。

数据结构课程设计--运动会成绩管理系统

数据结构课程设计--运动会成绩管理系统

目录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;}。

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

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

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");}九、课程设计体会本次课程设计查验了我的实践能力,感觉自己还有许多东西要学习,并非仅限于讲义上的知识,实践才是真理,在学习中实践,实践中去学习。

运动会分数统计系统说明书

运动会分数统计系统说明书

目录摘要 (1)前言 (2)正文 (3)1.采用类C语言定义相关的数据类型 (3)2.各模块的伪码算法 (4)3.函数的调用关系图 (7)4.调试分析 (7)5.测试结果 (8)6.源程序(带注释) (12)总结 (15)参考文献 (17)致谢 (18)附件Ⅰ部分源程序代码 (19)摘要本次课程设计的主要任务是利用学过的数据结构的知识设计一个运动会分数统计系统。

运动会分数统计系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。

运动会分数统计系统是典型的信息管理系统,本系统是根据现代化校园的发展而设计的运动会分数统计系统,本系统可以方便老师、运动员来学校查找成绩、名次。

要求应用程序功能完备,易使用等特点。

实现全校运动会信息在线查询。

还可以对新的运动信息进行信息录入。

由于运动项目种类繁多,可以实现信息修改。

通过本次课程设计可以加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构。

关键词:数据结构;运动会;分数统计系统;C语言前言本学期开设的《算法与数据结构》课程已经告一段落,。

在学习科目的第一节课起,张老师就为我们阐述了它的重要性。

它对我们来说具有一定的难度。

它是其它编程语言的一门基本学科。

尽管不好学,但是我们必须学好这门课程,这对于我们计算机专业的学生来说意义重大。

经过一个学期的理论知识的学习,对于数据结构相关的知识有了一定的了解。

这是一门纯属于设计的科目,它需用把理论变为上机调试和具体实践。

在课程结束之后。

老师为我们安排了这次为期两周的课程设计。

目的就是让我们自己在计算机上自己设计算法来实现相应的功能以及锻炼学生的动手能力和实践能力,最重要的是要把我们所学的数据结构的理论知识应运到实践中去。

这次课程设计的题目是“运动会分数统计系统”,要求学生自己查阅相关资料,完成相应的任务,自己上机设计算法,调试程序,运行出结果,以此来加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养自己的动手能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计
运 动 会 分 数 统 计
东华大学信息科学与技术学院 班级:电气 0910 班 姓名:周涛涛 学号:090901017
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. 基本要求:
*2;
sch[i].total=sch[i].total+b;
if(k<bm)
sch[i].boytotal=sch[i].boytotal+b;
if(k>=bm)
sch[i].girltotal=sch[i].girltotal+b;
}
}
void mulu(){
printf("\n\n
**系统目录**\n"); //目录
#define N 2
3
#define bm 4
#define gm 3
2、数据类型定义 (1)运动项目的定义:
struct match
{
int matchnum;
int rank[3];
}mat[bm+gm];
(2)学校的定义:
struct school
{
int schoolnum;
struct match mat[bm+gm];
1、源程序
#include<stdio.h> #include<process.h>
#define N 2 //学校个数
#define bm 4 //男团体个数
#define gm 3 //女团体个数
void xuanze();
void xunhuan();
struct match
//项目
{
int matchnum;




女询 学 项 出
各 学 校 总 分










团 体 总 分 排
团 体 总 分
学 校 某 个 项
排目


校 编 号 查 询 学 校 某




目 编 号 查 询 取 得 名 次 的 学 校
系 统

用户选择某命令,产生相应的操作 显示结果,用户选择返回主目录或退出
退出程序
三、详细设计 1、宏定义:
示返回总目录); 输入:3 按学校总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表
示返回总目录); 输入:4 按男团体总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’
表示返回总目录); 输入:5 按女团体总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’
五、测试结果
<1>数据输入(输入成绩如图)
5
输入:
请输入学校编号:1
项目编号
1
2
3
4
5
6
7
第<1>名:
1
0
0
1
1
0
0
第<2>名:
1
1
1
0
0
1
0
第<3>名:
0
0
0
0
1
1
1
请输入学校编号: 2
项目编号
1
2
3
4
5
6
7
第<1>名:
0
1
1
0
0
1
1
第<2>名:
0
0
0
1
1
0
1
第<3>名:
1
1
1
1
0
0
0
输入成绩后出现总目录(下图);
int rank[3];
}mat[bm+gm];
struct school //学校
{
int schoolnum;
struct match mat[bm+gm];
int total;
int boytotal;
int girltotal;
}sch[N];
void huanyingni() /*开始界面,欢迎使用*/
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)输入其他数据会提示错误输入,重新输入。
printf("\t\t* 4.按男团体总分排序输出
*\t \n");
printf("\t\t* 5.按女团体总分排序输出
*\t \n");
printf("\t\t* 6.按学校编号查询学校某个项目情况 *\t \n");
{
printf("输入错误(只能是 1-%d)请重新输入:",N);
goto loop3;
}
printf("项目编号 ");
for(k=0;k<bm+gm;k++)
printf("%d ",sch[i].mat[k].matchnum);
printf("\n");
for(j=0;j<3;j++)
{
loop: printf("第(%d)名:",j+1);
printf("\t***^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^***\n\n "); } void input() //输入成绩 {
int i,j,k; for(i=0;i<N;i++) //初始化分数
10
{
sch[i].total=0;
printf("\t\t ************************************\n");
printf("\t\t* 1.统计各学校总分
*\t \n");
printf("\t\t* 2.按学校编号排序输出
*\t \n");
printf("\t\t* 3.按学校总分排序输出
*\t \n");
int total;
int boytotal;
int girltotal;
}sch[N];
3、函数之间的调用关系
huanyingni
main
input
system totaljisua n
xunhuan
mulu funct0 funct1 funct2
funct3 funct4 funct5 funct6 funct7
for(k=0;k<bm+gm;k++)
scanf(" %d",&sch[i].mat[k].rank[j]);
for(k=0;k<bm+gm;k++)
if(sch[i].mat[k].rank[j]!=0&&sch[i].mat[k].rank[j]!=1)
{
printf("输入错误,请重新输入,成绩只能是‘0’或‘1’\n");
7
输出:
(8)输入:1,返回总目录;再输入:7,输入项目编号:7 输出:
(9)如果输入提示外的数字,例如输入:4 则输出错误提示:
(10)输入:0 输出:
六、用户手册
1、运行环境 Windຫໍສະໝຸດ ws,VC++6.0
2、用户界面
8
3、操作过程 (1)用户进入运动会分数统计系统程序欢迎界面 (2)录入成绩,先输入要输入的学校编号,1 或 2;再输入对应学校的 1-7 项目的成绩(成
绩用 0 或 1:‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次)
当成绩录入错误时会有错误提示。 (3)进入总目录,按提示,输入 0--7 中的一个数; 输入:0 则推出系统; 输入:1 统计各学校总分并输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’
表示返回总目录); 输入:2 按学校编号排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表
sch[i].boytotal=0;
sch[i].girltotal=0;
for(k=0;k<bm+gm;k++)
相关文档
最新文档