数据结构课程设计运动会统计系统
2020-07-15 05:09
375 查看
经过一天的俩人的瞎糊弄,搞出来的系统。。代码有点冗余,不要在意。
#include <iostream> #include <time.h> #include <stdlib.h> #include<unistd.h> #include<iomanip> using namespace std; typedef struct School { int num; //学校编号 char name[20]; //学校名称 int score; //学校总分 int man_score; //男团体总分 int women_score;//女团体总分 struct School *next; }*Sch; Sch P=(Sch)malloc(sizeof(School));//学校链表头指针 typedef struct Project { int pnum; //项目编号 char name[20]; //项目名称 int sex; //区分男女项目,男为1,女为0; int top_r[6]; //名次 int mark[6]; //分数 struct Project *next; } *Pro; Pro Q=(Pro)malloc(sizeof(Project));//项目链表头指针 void Initialization(); //初始化学校和运动项目的编号和名称 void Input(); //成绩输入 void view(); //菜单 void Sum_Score(); //统计总分 Sch GetSchool();//函数返回学校链表头指针 Pro GetProject();//函数返回项目链表头指针 void Sc_numsort();//按学校编号排序 void Sc_scoreSort();//按学校总分排序 void Sc_ManSort();//按男团 void Sc_WomenSort();//按女团 void Find_Scnum();//按学校编号 void Find_ProNum();//按项目编号 char* GetSch_Name(int n);//输入编号查询学校名 int main() { cout<<"是否进行重置初始化(1.是 2.否)"<<endl; char i; while(1){ cin>>i; if(i=='1') { Initialization(); //初始化学校和项目 break; } else if(i=='2'){ break; } else{ cout<<"输入有误,请重新输入:"; } } P=GetSchool(); //函数返回学校链表头指针 if(P==NULL){ cout<<"学校相关信息丢失,请重新格式化!"; return 0; } Q=GetProject(); //函数返回项目链表头指针 if(Q==NULL){ cout<<"项目相关信息丢失,请重新格式化!"; return 0; } view(); free(P); free(Q); return 0; } void Initialization() { system("cls"); int sch_num; //学校数量 int pro_num; //项目数量 int man_num; //男子项目数量 int i; FILE *fp; if((fp = fopen("information.txt","w"))==NULL) { cout<<"文件不存在正在建立..."<<endl; cout<<"建立成功!"<<endl; } cout<<"请输入参加学校个数:"; cin>>sch_num; for(i=1; i<=sch_num; i++) { Sch S=(Sch)malloc(sizeof(School)); cout<<endl<<"请输入第"<<i<<"个学校名称:"; cin>>S->name; cout<<endl<<"请输入第"<<i<<"个学校编号:"; cin>>S->num; S->man_score=0; S->women_score=0; S->score=0; //存进文件 fprintf(fp,"\n%s %d %d %d %d",S->name,S->num, S->man_score,S->women_score,S->score); } cout<<"学校初始化成功"<<endl<<endl; FILE *ff; if((ff = fopen("pro.txt","w"))==NULL) { cout<<"文件不存在正在建立..."<<endl; cout<<"建立成功!"<<endl; } cout<<"请输入项目个数:"; cin>>pro_num; cout<<"请输入男子项目个数:"; cin>>man_num; for(i=1; i<=man_num; i++) { Pro n=(Pro)malloc(sizeof(Project)); cout<<endl<<"请输入第"<<i<<"个男子项目名称:"; cin>>n->name; n->pnum=i; if(i%2==0) { fprintf(ff,"\n%d %s 1 0 0 0 0 0 0",n->pnum,n->name); } else if(i%2!=0) { fprintf(ff,"\n%d %s 1 0 0 0 0 0 0 0 0 0 0",n->pnum,n->name); } } for(i=1; i<=pro_num-man_num; i++) { Pro n=(Pro)malloc(sizeof(Project)); cout<<endl<<"请输入第"<<i<<"个女子项目名称:"; cin>>n->name; n->pnum=i+man_num; if(i%2==0) { fprintf(ff,"\n%d %s 0 0 0 0 0 0 0",n->pnum,n->name); } else if(i%2!=0) { fprintf(ff,"\n%d %s 0 0 0 0 0 0 0 0 0 0 0",n->pnum,n->name); } } cout<<"写入成功"<<endl; cout<<"项目初始化成功"<<endl<<endl; fclose(ff); fclose(fp); cout<<"初始化完成,即将进入主菜单......"; sleep(2); system("cls"); } void view() { while(1){ system("cls"); char op; cout<<endl; cout<<"\t欢迎来到郑轻运动会统计系统"<<endl; cout<<"\t 1.输入成绩并存储"<<endl; cout<<"\t 2.统计各学院总分"<<endl; cout<<"\t 3.按学校编号排序输出"<<endl; cout<<"\t 4.按学校总分排序输出"<<endl; cout<<"\t 5.按男子总分排序输出"<<endl; cout<<"\t 6.按女子总分排序输出"<<endl; cout<<"\t 7.按学校编号查询"<<endl; cout<<"\t 8.按项目编号查询"<<endl; cout<<"\t 9.退出"<<endl; cout<<"-----------------------------------------"<<endl; cout<<"请输入你的选择:"<<endl; cin>>op; switch (op) { case '1':Input();break; case '2':Sum_Score();break; case '3':Sc_numsort();break; case '4':Sc_scoreSort();break; case '5':Sc_ManSort();break; case '6':Sc_WomenSort();break; case '7':Find_Scnum();break; case '8': Find_ProNum(); break; case '9': return; default: cout<<"输入有错请重新输入"<<endl; view(); } cout<<"操作完成!"<<endl; cout<<"1.返回主菜单 else.退出"<<endl; cin>>op; if(op!='1'){ break; } } } Sch GetSchool() { Sch p=(Sch)malloc(sizeof(School)); Sch t=p; FILE *ff; ff=fopen("information.txt","r"); if(fgetc(ff)==EOF) {//判断文件是否为空 return NULL; } while(!feof(ff)) { int num; char name[20]; int score; int man_score; int women_score; fscanf(ff,"%s%d%d%d%d",name,&num,&man_score,&women_score,&score); Sch m=(Sch)malloc(sizeof(School)); m->num=num; strcpy(m->name,name); m->score=score; m->man_score=man_score; m->women_score=women_score; t->next=m; t=t->next; } t->next=NULL; fclose(ff); return p; } Pro GetProject() { Pro p=(Pro)malloc(sizeof(Project)); Pro t=p; FILE *ff; ff=fopen("pro.txt","r"); if(fgetc(ff)==EOF) {//判断文件是否为空 return NULL; } int pronum=1; while(!feof(ff)) { int pnum; char name[20]; int sex; int top_r[5]; int mark[5]; Pro m=(Pro)malloc(sizeof(Project)); if(pronum%2==0) { fscanf(ff,"%d%s%d%d%d%d%d%d%d",&pnum,name,&sex,&top_r[1],&top_r[2],&top_r[3],&mark[1],&mark[2],&mark[3]); pronum++; m->pnum=pnum; strcpy(m->name,name); m->sex=sex; for(int i=1;i<=3;i++) { m->top_r[i]=top_r[i]; m->mark[i]=mark[i]; } } else if(pronum%2!=0) { fscanf(ff,"%d%s%d%d%d%d%d%d%d%d%d%d%d",&pnum,name,&sex,&top_r[1],&top_r[2],&top_r[3],&top_r[4],&top_r[5], &mark[1],&mark[2],&mark[3],&mark[4],&mark[5]); pronum++; m->pnum=pnum; strcpy(m->name,name); m->sex=sex; for(int i=1;i<=5;i++){ m->top_r[i]=top_r[i]; m->mark[i]=mark[i]; } } t->next=m; t=t->next; } t->next=NULL; fclose(ff); return p; } void Input() { Sch m; m=P->next; Pro n; n=Q->next; system("cls"); int i; int pro_num; //要输入的项目个数 int pnum; //输入的项目编号 char schname[20]; //输入的学校名 char proname[20]; //输入的项目名 int score; //输入的成绩 int score_f; //两个成绩变量用于判断成绩是否呈降序 cout<<"请输入项目个数:"; cin>>pro_num; //检查是否存在此项目 for(i=1; i<=pro_num; i++) { while(1){ cout<<"请输入第"<<i<<"个项目编号:"<<endl; cin>>pnum; n=Q->next; while(n!=NULL) {//查询是否已经存在 if(n->pnum==pnum) { break; } n=n->next; } if(n==NULL) { cout<<"该项目不存在,请重新输入:"<<endl; } else { if(pnum%2==0) {//偶数前三名 cout<<"请依次输入该项目前三名成绩信息:"<<endl; int j=1; score_f=100; //将标记成绩设置为100 for(j;j<4;j++) { while(1){ cout<<"请输入第"<<j<<"名的学校名:"; cin>>schname; m=P->next; //检查学校名是否存在 while(m!=NULL){ if(strcmp(m->name,schname)==0){ break; } m=m->next; } if(m==NULL){ cout<<"该学校不存在,请重新输入:"<<endl; }else{ cout<<"请输入成绩:"; while(1){ cin>>score; if(score>score_f){ cout<<"比第"<<(j-1)<<"名成绩高,请重新输入:"; } else{ score_f=score; n->top_r[j]=m->num; n->mark[j]=score; m->score+=score; if(n->sex==1){ m->man_score+=score; } else if(n->sex==0){ m->women_score+=score; }break; } }break; } } } } else if(pnum%2!=0){ cout<<"请依次输入该项目前五名成绩信息:"<<endl; int j=1; score_f=100; //将标记成绩设置为100 for(j;j<6;j++) { while(1){ cout<<"请输入第"<<j<<"名的学校名:"; cin>>schname; m=P->next; while(m!=NULL){ if(strcmp(m->name,schname)==0){ break; } m=m->next; } if(m==NULL){ cout<<"该学校不存在,请重新输入:"<<endl; }else{ cout<<"请输入成绩:"; while(1){ cin>>score; if(score>score_f){ cout<<"比第"<<(j-1)<<"名成绩高,请重新输入:"; } else{ score_f=score; n->top_r[j]=m->num; n->mark[j]=score; m->score+=score; if(n->sex==1){ m->man_score+=score; } else if(n->sex==0){ m->women_score+=score; } break; } } break; } } } } break; } } } //以下部分为写文件,可以写成函数 FILE *ff=fopen("information.txt","w"); m=P->next; while(m!=NULL){ fprintf(ff,"\n%s %d %d %d %d",m->name,m->num,m->man_score,m->women_score,m->score); m=m->next; } fclose(ff); FILE *fp=fopen("pro.txt","w"); n=Q->next; while(n!=NULL){ if(n->pnum%2==0){ fprintf(ff,"\n%d %s %d %d %d %d %d %d %d",n->pnum,n->name,n->sex,n->top_r[1],n->top_r[2], n->top_r[3],n->mark[1],n->mark[2],n->mark[3]); } else if(n->pnum%2!=0){ fprintf(ff,"\n%d %s %d %d %d %d %d %d %d %d %d %d %d",n->pnum,n->name,n->sex,n->top_r[1],n->top_r[2], n->top_r[3],n->top_r[4],n->top_r[5],n->mark[1],n->mark[2],n->mark[3],n->mark[4],n->mark[5]); } n=n->next; } fclose(fp); cout<<"录入成功!"<<endl; } void Sum_Score() { Sch q; cout<<"\t各学校总分为"<<endl; for(q=P->next; q!=NULL; q=q->next) { cout<<setiosflags(ios::left); cout<<"\t"<<setw(8)<<q->name<<" :"<<setw(5)<<q->score<<endl; } } void Sc_numsort() { Sch i,j,m,q,t; int sum=0,n=0; q=GetSchool();//获得头指针 cout<<"按编号排序输出为:"<<endl; for(i=q->next;i!=NULL;i=i->next) sum++; //冒泡排序 while(sum!=1) { m=q;i=q->next; j=i->next; n=sum; sum--; while(n!=1) { n--; if(i->num>j->num) { m->next=j; i->next=j->next; j->next=i; m=j; j=i->next; } else { m=i; i=j; j=j->next; } } } cout<<setiosflags(ios::left); cout<<setw(10)<<"学校编号"<<setw(15)<<"学校名"<<setw(15)<<"学校总得分"<<setw(15)<<"男子团体总分"<<setw(15)<<"女子团体总分"<<endl; for(i=q->next;i!=NULL;i=i->next) { cout<<" "<<setw(9)<<i->num<<setw(15)<<i->name <<setw(15)<<i->score <<setw(15)<<i->man_score<<setw(15)<<i->women_score<<endl; } free(q); } void Sc_scoreSort() { Sch i,j,m,q,t; int sum=0,n; q=GetSchool(); cout<<"按学校总分排序输出为:"<<endl; for(i=q->next;i!=NULL;i=i->next) sum++; while(sum!=1) { m=q;i=q->next; j=i->next; n=sum; sum--; while(n!=1) { n--; if(i->score < j->score) { m->next=j; i->next=j->next; j->next=i; m=j; j=i->next; } else { m=i; i=j; j=j->next; } } } cout<<setiosflags(ios::left); cout<<setw(15)<<"学校总得分"<<setw(10)<<"学校编号"<<setw(15)<<"学校名"<<setw(15)<<"男子团体总分"<<setw(15)<<"女子团子总分"<<endl; for(i=q->next;i!=NULL;i=i->next) { cout<<setw(15)<<i->score<<setw(10)<<i->num<<setw(15)<<i->name<<setw(15)<<i->man_score<<setw(15)<<i->women_score<<endl; } free(q); } void Sc_ManSort() { Sch i,j,m,q,t; int sum=0,n; q=GetSchool(); cout<<"按男子团体总分排序输出为:"<<endl; for(i=q->next;i!=NULL;i=i->next) sum++; while(sum!=1) { m=q;i=q->next; j=i->next; n=sum; sum--; while(n!=1) { n--; if(i->man_score < j->man_score) { m->next=j; i->next=j->next; j->next=i; m=j; j=i->next; } else { m=i; i=j; j=j->next; } } } cout<<setiosflags(ios::left); cout<<setw(15)<<"男子团体总分"<<setw(15)<<"女子团体总分"<<setw(15)<<"学校总得分"<<setw(10)<<"学校编号"<<setw(15)<<"学校名"<<endl; for(i=q->next;i!=NULL;i=i->next) { cout<<setw(15)<<i->man_score<<setw(15)<<i->women_score<<setw(15)<<i->score<<setw(10)<<i->num<<setw(15)<<i->name<<endl; } free(q); } void Sc_WomenSort() { Sch i,j,m,q,t; int sum=0,n; q=GetSchool(); cout<<"按女子团体总分排序输出为:"<<endl; for(i=q->next;i!=NULL;i=i->next) sum++; while(sum!=1) { m=q;i=q->next; j=i->next; n=sum; sum--; while(n!=1) { n--; if(i->women_score < j->women_score) { m->next=j; i->next=j->next; j->next=i; m=j; j=i->next; } else { m=i; i=j; j=j->next; } } } cout<<setiosflags(ios::left); cout<<setw(15)<<"女子团体总分"<<setw(15)<<"男子团体总分"<<setw(15)<<"学校总得分"<<setw(10)<<"学校编号"<<setw(15)<<"学校名"<<endl; for(i=q->next;i!=NULL;i=i->next) { cout<<setw(15)<<i->women_score<<setw(15)<<i->man_score<<setw(15)<<i->score<<setw(10)<<i->num<<setw(15)<<i->name<<endl; } free(q); } void Find_Scnum() { int n,flag=0; Sch q,i; q=GetSchool(); cout<<"请输入学校编号:"; cin>>n; cout<<setiosflags(ios::left); for(i=q->next;i!=NULL;i=i->next) { if(i->num==n) { flag=1; cout<<setw(15)<<"学校名"<<setw(10)<<"学校编号"<<setw(15)<<"学校总得分"<<setw(15)<<"男子团体总分"<<setw(15)<<"女子团体总分"<<endl; cout<<setw(15)<<i->name<<setw(10)<<i->num<<setw(15)<<i->score<<setw(15)<<i->man_score<<setw(15)<<i->women_score<<endl; } 20000 } if(flag==0) { cout<<"学校不存在,请重新输入"<<endl; Find_Scnum(); } free(q); } char* GetSch_Name(int n) { Sch q,i; q=GetSchool(); for(i=q->next;i!=NULL;i=i->next) { if(i->num==n) { return i->name; } } free(q); return NULL; } void Find_ProNum()//按项目编号 { cout<<"请输入项目编号:"; int n,flag=0; char *str1,*str2,*str3; Pro pro,i; Sch q,j; q=GetSchool(); cin>>n; pro=GetProject(); cout<<setiosflags(ios::left); for(i=pro->next;i!=NULL;i=i->next) { if(n==i->pnum)//找到项目编号 { flag=1; if(n%2==0)//偶数三个项目 { cout<<setw(10)<<"项目编号"<<setw(10)<<"项目名称"<<setw(10)<<"学校"<<setw(10)<<"成绩"<<endl; for(int l=1;l<=3;l++) { str1=GetSch_Name(i->top_r[l]); cout<<setw(10)<<i->pnum<<setw(10)<<i->name<<setw(10)<<str1<<setw(10)<<i->mark[l]<<endl; } } if(n%2!=0)//奇数5个项目 { cout<<setw(10)<<"项目编号"<<setw(10)<<"项目名称"<<setw(10)<<"学校"<<setw(10)<<"成绩"<<endl; for(int l=1;l<=5;l++) { str1=GetSch_Name(i->top_r[l]); cout<<setw(10)<<i->pnum<<setw(10)<<i->name<<setw(10)<<str1<<setw(10)<<i->mark[l]<<endl; } } } } if(flag==0) { cout<<"项目不存在,请重新输入:"<<endl; Find_ProNum(); } free(q); free(pro); }
相关文章推荐
- 数据结构课程设计(运动会成绩管理系统)
- 数据结构课程设计———运动会分数统计
- 数据结构课程设计---学生信息管理系统
- 数据结构课程设计【家庭财务管理系统】
- 数据结构课程设计之航空订票系统
- 数据结构课程设计 飞机订票系统
- 数据结构课程设计————校园导航系统
- 数据结构课程设计:学成成绩管理系统
- 数据结构课程设计—学生信息管理系统
- 数据结构课程设计 题目 1 (活期储蓄管理系统)
- 数据结构课程设计-图书管理系统
- 数据结构课程设计--“模拟图书管理系统的开发”
- 数据结构课程设计-图书管理系统
- 数据结构课程设计——学生成绩管理系统
- 数据结构课程设计——考试报名管理系统
- 数据结构课程设计——通讯录管理系统
- 单位员工通讯录管理系统(线性表的应用)中原工数据结构课程设计
- 数据结构课程设计、职工信息管理系统
- 数据结构课程设计--学生成绩管理系统
- 数据结构课程设计-ytu职工信息管理系统