数据结构作业 运动会分数统计 c++
2008-12-17 17:41
435 查看
///////////////////////// 说明 ////////////////////////////////// 共有N个学校参加运动会,编号为1~N。 ////// 共有W个项目,编号为1~W ////// 在某个项目结束后可以进行该项目的数据输入 ////// 可以显示指定项目的所有获奖信息 ////// 指定编号的学校的获奖信息 ////// 可以对所有学校的总成绩进行统计和排名显示 ////// 每个项目去前三名的运动员获得极分 ///////////////////////////////////////////////////////////////////#include "iostream.h"#include "stdlib.h" #include "stdlib.h"
#define OK 1 #define ERROR 2#define SN 8 //参加比赛的学校数
typedef int Status;
int NodeNum=0; //全局变量,当前节点个数
typedef struct { char StudentsName[20]; int SchoolName; int Rank;}Event;
typedef struct xiangmu{ int EventNum; Event StudentScore[3]; struct xiangmu *NextEvent;
}xiangmu,*EventNode;
EventNode LastEvent;
//////////////输入数据,建立链表/////////////////////////////////Status Input(EventNode &head){ cout<<"***************项目成绩输入*****************"<<endl; int i; EventNode NewEvent; NewEvent=(EventNode)malloc(sizeof(xiangmu)); if(!NewEvent) return ERROR;
cout<<"请输入该项目的编号:"; cin>>NewEvent->EventNum; cout<<endl<<endl; for(i=0;i<3;i++) { cout<<"请输入第"<<i+1<<"名姓名:"; cin>>NewEvent->StudentScore[i].StudentsName; cout<<"请输入运动员学校编号:"; cin>>NewEvent->StudentScore[i].SchoolName; cout<<"请输入运动员分数:"; cin>>NewEvent->StudentScore[i].Rank; cout<<endl; } if(head==NULL) head=NewEvent; //头节点为空,新节点做表头 else LastEvent->NextEvent=NewEvent; //否则加入表尾 LastEvent=NewEvent; NodeNum++; cout<<"这个项目输入完了!"<<endl<<"********************************************"<<endl; return OK;
}
/////////////////////显示用户查找的项目名(号),所对应的项目信息/////////////////////////////Status EventSort(EventNode head,int EventName){ cout<<"名次 "<<" 姓名 "<<" 学校 "<<" 积分 "<<endl; EventNode p; if(NodeNum!=0) //说明链表不为空,可以进行搜索 { p=head; for(int i=1;i<=NodeNum;i++) { if(EventName==p->EventNum) { for(int m=1;m<4;m++) //循环输出该项目的信息 { cout<<"第"<<m<<"名: "<<p->StudentScore[m-1].StudentsName <<" "<<p->StudentScore[m-1].SchoolName<<" " <<4-m<<endl; } // p=p->NextEvent; break; } else p=p->NextEvent; } cout<<"********************************************"<<endl; } else cout<<"还没有输入数据,请先进行输入操作!"<<endl<<endl; return OK;}
//////////////////////用户给出学校名,显示该校得分信息//////////////////////////////////Status SchoolSort(EventNode head,int SchoolName){ cout<<"项目号 "<<"姓名 "<<"得分"<<endl; EventNode p; if(NodeNum!=0) //说明链表不为空,可以进行搜索 { p=head;
for(int i=1;i<=NodeNum;i++) { for(int a=0;a<3;a++) { if(p->StudentScore[a].SchoolName==SchoolName) //循环输出该学校得分信息 { cout<<" "<<p->EventNum<<" "<<p->StudentScore[a].StudentsName <<" "<<p->StudentScore[a].Rank<<endl; break; } else p=p->NextEvent; } } cout<<"********************************************"<<endl;
} else cout<<"还没有输入数据,请先进行输入操作!"<<endl<<endl; return OK;}
///////////////对所有学校的成绩进行统计排名,显示//////////////////////////////Status AllSchoolSort(EventNode head){ //////////首先要对所有学校的成绩进行汇总////// EventNode p; typedef struct { int name; int score; }SchoolScore;
SchoolScore schoolscore[SN]={0};
// int SchoolScore[SN]={0}; if(NodeNum!=0) //说明链表不为空,可以进行搜索 { p=head;
for(int i=1;i<=NodeNum;i++) { for(int a=0;a<3;a++) { int num; num=p->StudentScore[a].SchoolName-1; schoolscore[num].score=schoolscore[num].score+p->StudentScore[a].Rank; } p=p->NextEvent;
}//统计各个学校的总分
for(int s=0;s<SN;s++) { schoolscore[s].name=s+1; } for(int m=0;m<SN;m++) { for(i=SN-1;i>-1;i--) { if(schoolscore[i].score<=schoolscore[i-1].score) { SchoolScore t; t=schoolscore[i-1]; schoolscore[i-1]=schoolscore[i]; schoolscore[i]=t; //排序 } // else // { // int falm; // falm++; // } }
} cout<<"学校名次"<<" "<<"总分"<<" "<<"学校编号"<<endl; for(int n=1;n<=SN;n++) { if(schoolscore[SN-n].score!=0) { cout<<" "<<n<<" "<<" "<<schoolscore[SN-n].score<<" "<<schoolscore[SN-n].name<<endl; } } cout<<"********************************************"<<endl; //将结果按格式输出 } else cout<<"还没有输入数据,请先进行输入操作!"<<endl<<endl; return OK;}
///////////////////////////////显示导航菜单//////////////////////////////void show(){// system("cls");
cout<<"你将要进行:"<<endl<<"1.项目成绩输入"<<endl <<"2.项目成绩查询"<<endl<<"3.查询学校成绩"<<endl <<"4.显示学校总分排名"<<endl<<"Q.退出"<<endl<<endl;}
void main(){
cout<<endl<<endl; cout<<" 欢迎使用运动会分数统计系统"; cout<<endl<<endl; cout<<"********************************************************************************"<<endl; show(); EventNode head=NULL; int n=1;
while(n=1) { char opt; cout<<"请选择:"; cin>>opt; if(opt=='Q') { exit(0); } else switch(opt) { case '1': Input(head); show(); break; case '2': cout<<"***************项目成绩查询*****************"<<endl; int EventName; cout<<"项目编号:"; cin>>EventName; EventSort(head,EventName); show(); break; case'3': cout<<"***************学校成绩查询*****************"<<endl; int SchoolName; cout<<"学校编号:"; cin>>SchoolName; SchoolSort(head,SchoolName); show(); break; case'4': cout<<"***************学校总分排名*****************"<<endl; AllSchoolSort(head); show(); break; default: cout<<"请输入正确的序号!"<<endl; } }}
#define OK 1 #define ERROR 2#define SN 8 //参加比赛的学校数
typedef int Status;
int NodeNum=0; //全局变量,当前节点个数
typedef struct { char StudentsName[20]; int SchoolName; int Rank;}Event;
typedef struct xiangmu{ int EventNum; Event StudentScore[3]; struct xiangmu *NextEvent;
}xiangmu,*EventNode;
EventNode LastEvent;
//////////////输入数据,建立链表/////////////////////////////////Status Input(EventNode &head){ cout<<"***************项目成绩输入*****************"<<endl; int i; EventNode NewEvent; NewEvent=(EventNode)malloc(sizeof(xiangmu)); if(!NewEvent) return ERROR;
cout<<"请输入该项目的编号:"; cin>>NewEvent->EventNum; cout<<endl<<endl; for(i=0;i<3;i++) { cout<<"请输入第"<<i+1<<"名姓名:"; cin>>NewEvent->StudentScore[i].StudentsName; cout<<"请输入运动员学校编号:"; cin>>NewEvent->StudentScore[i].SchoolName; cout<<"请输入运动员分数:"; cin>>NewEvent->StudentScore[i].Rank; cout<<endl; } if(head==NULL) head=NewEvent; //头节点为空,新节点做表头 else LastEvent->NextEvent=NewEvent; //否则加入表尾 LastEvent=NewEvent; NodeNum++; cout<<"这个项目输入完了!"<<endl<<"********************************************"<<endl; return OK;
}
/////////////////////显示用户查找的项目名(号),所对应的项目信息/////////////////////////////Status EventSort(EventNode head,int EventName){ cout<<"名次 "<<" 姓名 "<<" 学校 "<<" 积分 "<<endl; EventNode p; if(NodeNum!=0) //说明链表不为空,可以进行搜索 { p=head; for(int i=1;i<=NodeNum;i++) { if(EventName==p->EventNum) { for(int m=1;m<4;m++) //循环输出该项目的信息 { cout<<"第"<<m<<"名: "<<p->StudentScore[m-1].StudentsName <<" "<<p->StudentScore[m-1].SchoolName<<" " <<4-m<<endl; } // p=p->NextEvent; break; } else p=p->NextEvent; } cout<<"********************************************"<<endl; } else cout<<"还没有输入数据,请先进行输入操作!"<<endl<<endl; return OK;}
//////////////////////用户给出学校名,显示该校得分信息//////////////////////////////////Status SchoolSort(EventNode head,int SchoolName){ cout<<"项目号 "<<"姓名 "<<"得分"<<endl; EventNode p; if(NodeNum!=0) //说明链表不为空,可以进行搜索 { p=head;
for(int i=1;i<=NodeNum;i++) { for(int a=0;a<3;a++) { if(p->StudentScore[a].SchoolName==SchoolName) //循环输出该学校得分信息 { cout<<" "<<p->EventNum<<" "<<p->StudentScore[a].StudentsName <<" "<<p->StudentScore[a].Rank<<endl; break; } else p=p->NextEvent; } } cout<<"********************************************"<<endl;
} else cout<<"还没有输入数据,请先进行输入操作!"<<endl<<endl; return OK;}
///////////////对所有学校的成绩进行统计排名,显示//////////////////////////////Status AllSchoolSort(EventNode head){ //////////首先要对所有学校的成绩进行汇总////// EventNode p; typedef struct { int name; int score; }SchoolScore;
SchoolScore schoolscore[SN]={0};
// int SchoolScore[SN]={0}; if(NodeNum!=0) //说明链表不为空,可以进行搜索 { p=head;
for(int i=1;i<=NodeNum;i++) { for(int a=0;a<3;a++) { int num; num=p->StudentScore[a].SchoolName-1; schoolscore[num].score=schoolscore[num].score+p->StudentScore[a].Rank; } p=p->NextEvent;
}//统计各个学校的总分
for(int s=0;s<SN;s++) { schoolscore[s].name=s+1; } for(int m=0;m<SN;m++) { for(i=SN-1;i>-1;i--) { if(schoolscore[i].score<=schoolscore[i-1].score) { SchoolScore t; t=schoolscore[i-1]; schoolscore[i-1]=schoolscore[i]; schoolscore[i]=t; //排序 } // else // { // int falm; // falm++; // } }
} cout<<"学校名次"<<" "<<"总分"<<" "<<"学校编号"<<endl; for(int n=1;n<=SN;n++) { if(schoolscore[SN-n].score!=0) { cout<<" "<<n<<" "<<" "<<schoolscore[SN-n].score<<" "<<schoolscore[SN-n].name<<endl; } } cout<<"********************************************"<<endl; //将结果按格式输出 } else cout<<"还没有输入数据,请先进行输入操作!"<<endl<<endl; return OK;}
///////////////////////////////显示导航菜单//////////////////////////////void show(){// system("cls");
cout<<"你将要进行:"<<endl<<"1.项目成绩输入"<<endl <<"2.项目成绩查询"<<endl<<"3.查询学校成绩"<<endl <<"4.显示学校总分排名"<<endl<<"Q.退出"<<endl<<endl;}
void main(){
cout<<endl<<endl; cout<<" 欢迎使用运动会分数统计系统"; cout<<endl<<endl; cout<<"********************************************************************************"<<endl; show(); EventNode head=NULL; int n=1;
while(n=1) { char opt; cout<<"请选择:"; cin>>opt; if(opt=='Q') { exit(0); } else switch(opt) { case '1': Input(head); show(); break; case '2': cout<<"***************项目成绩查询*****************"<<endl; int EventName; cout<<"项目编号:"; cin>>EventName; EventSort(head,EventName); show(); break; case'3': cout<<"***************学校成绩查询*****************"<<endl; int SchoolName; cout<<"学校编号:"; cin>>SchoolName; SchoolSort(head,SchoolName); show(); break; case'4': cout<<"***************学校总分排名*****************"<<endl; AllSchoolSort(head); show(); break; default: cout<<"请输入正确的序号!"<<endl; } }}
相关文章推荐
- 数据结构 运动会分数统计
- 运动会分数统计系统开发
- [c++的运用]-使用迭代器,vector指针统计分数---ShinePans
- 运动会分数统计
- 数据结构-运动会分数统计
- 数据结构运动会分数统计实习报告源码
- 数据结构-运动会分数统计
- <数据结构>运动会分数统计
- 运动会分数统计系统——史上最完善的运动会分数统计系统
- [置顶] 运动会分数统计(数据结构课程设计)
- 运动会分数统计
- 运动会分数统计系统开发(第一版)
- 运动会分数统计
- 数据结构实习报告(运动会分数统计)
- C++作业四—分数的累加,星形图案,百钱白鸡问题
- 全国C++职位需求统计20170507
- 【C++】统计代码覆盖率(三)
- C/C++复习:分数减法(结构体)
- C/C++复习:统计字符串种类(指针)
- 算法竞赛入门经典-课后练习-3-1-2分数统计