//运动会分数统计 ////////
//时间:2005-7-4
//程序: 张建波
#include <iostream.h>
#include <string.h>
#include "menu.h"
#include "Key.h"
typedef struct xm_table{
int item;// 项目编号
char name[20];
int count; //该项目得分人的数量
}XM_TABLE;
struct STUDENT{
char name[20]; //姓名
int score; //得分成绩
int range; //得分名次
int item; //得分项目
int sex; //性别
};
typedef struct SchoolStruct //参赛学校
{
int count; //计算实际运动员个数
int serial; //学校编号
char Name[20];
int menscore; //男子团体总分
int womenscore; //女子团体总分
int totalscore; //团体总分
int jifeng; //学校积分
struct STUDENT students[10]; //参赛运动员
struct SchoolStruct *next; //参赛学校
}SCHOOLSTRUCT;
void Creat_Shool_Link(SCHOOLSTRUCT * &head); //建立链表
void Add_Student_link(SCHOOLSTRUCT * &head); //添加获奖学生
void Tj_FX(SCHOOLSTRUCT * &head); //成绩统计
void Find_Xm_ID(SCHOOLSTRUCT * &head,int xm_ID); //按项目编号查询取得前三或前五名的学校。
void Find_School_Xm(SCHOOLSTRUCT * &head,int School_ID,int XM_ID);//按学校编号查询学校某个项目
void OutPut_Link(SCHOOLSTRUCT *head); //向屏幕输出数据
void _SetArgs(); //参数设置
void _SetXmInfor(); //项目 资料
void AddStudent(SCHOOLSTRUCT *&SchoolTable); //添加学生数据
int SchoolCount=0;//学校总数
int boyCount=0;//男生项目 总数
int girlCount=0;//女生项目 总数
int xm_Count=0; //项目 总数
XM_TABLE xm_T[41];//项目表
int _f1_main(){ //函数入口
Menu m[9];
m[1].Name="参数设置";
m[2].Name="添加学生";
m[3].Name="统计 ";
m[4].Name="学校查询";
m[5].Name="项目查询";
m[6].Name="返回 ";
SCHOOLSTRUCT *h,*head,*SchoolTable;//=new SCHOOLSTRUCT;
int ID=1;
while(1)
{
ShowMenu("数据结构--运动会成绩统计",m,6); //显示菜单
ID=SelectMenuID(); //获取选中的菜单ID
switch(ID){
case 1:{
_SetArgs();
_SetXmInfor();
Creat_Shool_Link(SchoolTable);
h=head=SchoolTable;
InitKey();
break;
}
case 2:{AddStudent(SchoolTable);InitKey();break;}
case 3:{Tj_FX(h);OutPut_Link(h);InitKey();break;}
case 4:{
int m_school_id;
int m_xm_id;
cout<<"\n请输入学校编号(1--"<<SchoolCount<<") School ID=";
cin>>m_school_id;
cout<<"\n请输入项目编号(1--"<<xm_Count<<") XM ID=";
cin>>m_xm_id;
Find_School_Xm(h,m_school_id,m_xm_id);
InitKey();
break;
}
case 5:{
int m_xm_i;
cout<<"\n请输入项目编号 ID=";
cin>>m_xm_i;
Find_Xm_ID(h,1);
InitKey();
}
case 6:return 0;
}
}
return 0;
}
void Creat_Shool_Link(SCHOOLSTRUCT * &head){ //建立链表
//创建链表
SCHOOLSTRUCT *p;
p=new SCHOOLSTRUCT;
head=p;
for(int i=1;i<=SchoolCount;i++)
{
p=p->next=new SCHOOLSTRUCT;
cout<<"请输入学校名称\n";
cout<<"学校编号School ID="<<i<<endl;
cout<<"School Name=";
p->serial=i;
p->jifeng=0; //设置积分为 0
p->totalscore=0;
p->womenscore=0;
p->menscore=0;
cin>>p->Name;
p->count=0; //置运动员数为0;
}
p->next=NULL;
head=head->next;
}
void Add_Student_link(SCHOOLSTRUCT * &head){//添加获奖学生
SCHOOLSTRUCT *h,*p;
int School_ID; //学校ID
char Student_name[20]; //学生姓名
int sex;//性别
int XM_ID;
int score;
int range; //得分名次
cout<<"请输入学生学校ID(1<--->"<<SchoolCount<<")ID=";
cin>>School_ID;
cout<<"请输入学生姓名Name=";
cin>>Student_name;
cout<<"请选择学生性别[0=女 1=男]sex=";
cin>>sex;
if(sex==0)
cout<<"\n请输入项目编号ID(1<--->"<<girlCount<<")ID=";
if(sex==1)
cout<<"\n请输入项目编号ID(1<--->"<<boyCount<<")ID=";
cin>>XM_ID;
cout<<"\n请输入该项目得分score=";
cin>>score;
cout<<"\n请输入得分名次range=";
cin>>range;
//查找学校ID
h=head;
while(h)
{
if(h->serial==School_ID)
{
p=h;
p->count=p->count+1; //运动员数+1
strcpy(p->students[p->count].name,Student_name); //学生姓名
p->students[p->count].item=XM_ID ;//得分项目
xm_T[XM_ID].count=xm_T[XM_ID].count+1; //该项目得分人数+1
p->students[p->count].range=range;//得分名次
p->students[p->count].score=score;//得分
p->students[p->count].sex=sex; //性别
break;
}
else h=h->next;
}
}
void Tj_FX(SCHOOLSTRUCT * &head){//成绩统计
SCHOOLSTRUCT *h,*p;
p=h=head; //保存链表头指针
int menscore=0; //男子团体总分
int womenscore=0; //女子团体总分
int totalscore=0; //团体总分
int i;
int item_i=0;
int jf=0;//积分
while(p){
for(i=1;i<=p->count;i++)
{
//计算分数
totalscore=totalscore+p->students[i].score; //计算总分
if(p->students[i].sex==0)womenscore=womenscore+p->students[i].score;////女子团体总分
else menscore=menscore+p->students[i].score;//男子团体总分
//计算积分
item_i=p->students[i].item;
if(xm_T[item_i].count>=5){
//取前5名
if(p->students[i].range==1)jf=jf+7;
else if(p->students[i].range==2)jf=jf+5;
else if(p->students[i].range==3)jf=jf+3;
else if(p->students[i].range==4)jf=jf+2;
else if(p->students[i].range==5)jf=jf+1;
}
if(xm_T[item_i].count<5){
//取前3名
if(p->students[i].range==1)jf=jf+5;
else if(p->students[i].range==2)jf=jf+3;
else if(p->students[i].range==3)jf=jf+2;
}
// cout<<"\nDEBUG:jf="<<jf<<endl;
// cout<<"\nDEBUG p->students[i].range:"<<p->students[i].range<<endl;
}
p->jifeng=jf; //计算积分
p->womenscore=womenscore;//保存 女子总分
p->menscore=menscore;//保存 男子总分
p->totalscore=totalscore;//保存总分
jf=0;
menscore=0; //男子团体总分
womenscore=0; //女子团体总分
totalscore=0; //总分
p=p->next; //向后移动指针
}
}
void Find_Xm_ID(SCHOOLSTRUCT * &head,int xm_ID){ //按项目编号查询取得前三或前五名的学校。
SCHOOLSTRUCT *h,*p;
p=h=head; //保存链表头指针
int i;
cout<<"\n按项目编号查询取得前三或前五名的学校\n";
cout<<"查询结果如下:\n";
while(h){
//
for(i=1;i<=h->count;i++)
{
if(h->students[i].item==xm_ID)
{
cout<<"学校:"<<h->Name<<" 姓名:"<<h->students[i].name<<" 名次:"<<h->students[i].range<<endl;
}
}
h=h->next;
}
}
void Find_School_Xm(SCHOOLSTRUCT * &head,int School_ID,int XM_ID){//按学校编号查询学校某个项目
SCHOOLSTRUCT *h,*p;
p=h=head; //保存链表头指针
while(h){
if(h->serial==School_ID){p=h;break;}
h=h->next;
}
cout<<"\n按学校编号查询学校某个项目\n";
int xm_i=0;
for(int i=1;i<=p->count;i++){
if(p->students[i].item==XM_ID){
cout<<"查询结果如下:"<<endl;
cout<<"姓名:"<<p->students[i].name<<" ";
xm_i=p->students[i].item;
if(p->students[i].sex==0){
cout<<"性别:女\n";
xm_i=xm_i+20;
}
else {
cout<<"性别: 男\n";
}
cout<<"项目编号:"<<p->students[i].item<<" 项目名称:"<<xm_T[xm_i].name;
cout<<"该项目得分:"<<p->students[i].score<<" 名次:"<<p->students[i].range<<endl;
}
}
}
void OutPut_Link(SCHOOLSTRUCT *head){ //向屏幕输出数据
SCHOOLSTRUCT *h;
h=head;
int i;
int xm_item;
while(h){ //遍历学校
cout<<"学校ID:\n"<<h->serial<<" ";
cout<<"学校名称:"<<h->Name<<" ";
cout<<"本次运动会积分:"<<h->jifeng<<"\n";
cout<<"男子团体总分:"<<h->menscore<<" ";
cout<<"女子团体总分:"<<h->womenscore<<" ";
cout<<"总分:"<<h->totalscore<<"\n";
cout<<"运动员数:"<<h->count<<endl;
cout<<"\n---------------------------------------\n";
for(i=1;i<=h->count;i++){//输出该校学生运动员情况
cout<<"运动员名称"<<h->students[i].name<<" ";
cout<<"性别"<<h->students[i].sex<<"\n";
xm_item=h->students[i].item;
if(h->students[i].sex==0)xm_item=xm_item+20; //如果是女生则项目表向后移动20
cout<<"得分项目"<<xm_T[xm_item].name<<" ";
cout<<"得分"<<h->students[i].score<<" ";
cout<<"得分名次"<<h->students[i].range<<"\n";
}
cout<<"\n--------------------------------------\n";
h=h->next; //指针向后移动
}
cout<<"\n--本次运动会的项目清单--\n";
int xm_count_i;
for(xm_count_i=1;xm_count_i<=boyCount;xm_count_i++)
{
cout<<"编号 "<<xm_T[xm_count_i].item<<" 名称 "<<xm_T[xm_count_i].name<<" 参与人数 "<<xm_T[xm_count_i].count<<endl;
}
for(xm_count_i=1;xm_count_i<=girlCount;xm_count_i++)
{
cout<<"编号 "<<xm_T[xm_count_i+20].item<<" 名称 "<<xm_T[xm_count_i+20].name<<" 参与人数 "<<xm_T[xm_count_i+20].count<<endl;
}
cout<<"\n-------------------------\n";
}
void _SetArgs(){ //参数设置
//// 设置参赛学校
loop_1:
cout<<"请输入参赛学校(n>=2)\nn=";
cin>>SchoolCount;
if(SchoolCount<2){cout<<"\n数据输入有误";goto loop_1;}
////////////////////////////
loop_2:
cout<<"\n请输男生 项目总数0<n<=20\nm=";
cin>>boyCount;
if(boyCount<0 || boyCount>20){cout<<"\n数据输入有误";goto loop_2;}
/////////////////////////////
loop_3:
cout<<"\n请输女生 项目总数0<n<=20\nw=";
cin>>girlCount;
if(girlCount<0 || girlCount>20){cout<<"\n数据输入有误";goto loop_3;}
/////////////////////////////
xm_Count=boyCount+girlCount; //项目总数
}
void _SetXmInfor(){ //项目 资料
int i;
cout<<"\n请输入男生项目信息"<<endl;
for(i=1;i<=boyCount;i++){
cout<<"项目 "<<i<<" 名称 name=";
xm_T[i].item=i; //项目编号
xm_T[i].count=0; //该项目的参与人数
cin>>xm_T[i].name; //项目名称
}
cout<<"\n请输入女生项目信息"<<endl;
for(i=1;i<=girlCount;i++){
cout<<"项目 "<<i<<" 名称 name=";
xm_T[20+i].item=i; //项目编号
cin>>xm_T[20+i].name; //项目名称
}
}
void AddStudent(SCHOOLSTRUCT *&SchoolTable){ //添加学生数据
int ANW;
Loop_4:
Add_Student_link(SchoolTable); //添加学生数据
cout<<"\n是否继续添加学生数据?[0=No 1=Yes]\n";
cin>>ANW;
if(ANW==1)goto Loop_4;
}
分享到:
相关推荐
数据结构在运动会分数统计中的应用主要涉及到如何有效地存储和处理运动员的成绩信息,以便进行排序、检索和计算。在这个课程设计中,"08年最新课程设计"可能意味着它采用了当年较为先进的编程技术和算法,同时也考虑...
运动会分数统计系统 --------------------------------------------本程序的运行平台为Windows 2000/XP/,不设最低配置。 本程序可以实现运动会记录的创建、增加、按学院编号查询、按项目编号查询、按学 编号排序、按...
数据结构课程设计运动会分数统计(C语言版) 本文档是关于数据结构课程设计运动会分数统计系统的设计和实现,使用C语言作为开发语言。整个系统的设计和实现将分为四个章节,即绪论、需求分析、系统开发工具及关键技术...
【c语言】数据结构运动会分数统计报告,运动会分数统计(数据结构课程设计实验报告) 运动会分数统计 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子...
在本实验中,"运动会分数统计 数据结构实验"是一个典型的IT应用场景,它涉及到计算机科学中的数据结构知识。数据结构是编程领域中一个至关重要的部分,它关乎如何有效地组织和存储数据,以便进行高效的访问和操作。...
C语言课程设计--运动会分数统计系统 本文档是关于C语言课程设计的报告,主题是运动会分数统计系统。该系统主要用于统计运动会的成绩单和得分报表。系统的基本要求包括产生各学校的成绩单和团体总分报表,内容包括各...
数据结构课设运动会分数统计 C++源码 需要的拿去
数据结构课程设计-运动会分数统计(C语言版) 在这个数据结构课程设计项目中,我们将实现一个运动会分数统计系统,该系统使用C语言开发,旨在统计各学校在运动会中的分数。下面是该系统的详细设计和实现过程。 第一...
数据结构课设-运动会分数统计源码.pdf 本资源为一份数据结构课程设计的源代码,主要实现运动会分数统计的功能。下面将对该源代码进行详细的解释和分析,从而总结出相关的知识点。 知识点1:数据结构 在该源代码中...
在本次数据结构课程设计中,我们关注的主题是“运动会分数统计”以及“模拟旅馆系统的一个功能”。这个项目旨在让学生深入理解和应用数据结构的基本概念,同时锻炼他们的编程技能,特别是处理复杂数据的问题解决能力...
在本项目中,“数据结构课设 运动会分数统计程序”是一个基于C++编程语言的课程设计项目,主要目标是实现对运动会分数的高效管理和统计。选择Visual C++6.0或Visual Studio 2008作为编译环境,这是因为它们都是微软...
根据给定的信息,本文将对“数据结构课设运动会分数统计”的相关知识点进行详细解析。 ### 一、项目概述 该项目使用C++语言编写,旨在实现一个运动会分数统计系统。该系统可以完成以下功能: - 输入运动会的具体...
此设计荣获学校课程设计一等奖 任务:参加运动会有n个学校,学校编号为1……n.比赛分成m个男子项目,和w个女子项目....存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中
"数据结构课程设计报告--运动会分数统计" 本设计报告的主要任务是设计一个运动会分数统计系统,用于统计和分析运动会的成绩。该系统需要满足以下功能要求: 1. 输入各个项目的前三名或前五名的成绩; 2. 统计各...
"运动会分数统计数据结构课程设计" 该课程设计主要是为了设计一个运动会分数统计系统,能够统计各个学校的分数,并且能够根据学校编号、学校总分、男女团体总分进行排序输出。同时,系统也能够查询学校某个项目的...
总的来说,"课程设计--运动会分数统计"项目不仅涵盖了C语言的基础知识,还涉及到数据结构、算法、文件操作等进阶概念,是一个很好的实践和学习C语言的实例。通过参与这样的项目,开发者可以提升编程能力,同时理解...
在数据分析和信息技术领域,"数据结构 运动会分数统计"是一个典型的实例,它涉及到如何有效地组织和处理数据,以便对运动会的分数进行有效分析。数据结构是计算机科学中的核心概念,它指的是存储和组织数据的方式,...
### 数据结构课程设计-运动会分数统计(C语言版) #### 运动会分数统计系统的背景 在信息技术快速发展的背景下,计算机软件被广泛应用于政府与企业的各项业务之中,这不仅提升了工作效率,也增强了信息处理的准确性...
### 数据结构课程运动会分数统计设计代码解析 #### 一、背景与目标 本代码是针对一个数据结构课程的项目,其主要目的是通过编程实现运动会分数的统计与管理。该程序涉及到了基本的数据输入、处理以及输出操作,并且...