数据结构课程设计之运动会计分系统

    技术2025-08-05  11

    题目

    参加运动会,有n个学校,学校编号为1, 2, …, n,比赛分为m个男子项目和w个女子项目,项目编号为男子1, 2, …, n,女子m + 1, m + 2, ,…, m + w.不同的项目,取前五名或前三名积分与前五名的积分分为7,5, 3, 2, 1,前三名的积分分别5, 3, 2;
    #include<iostream> #include<string> #include<iomanip> #include<fstream> #include<conio.h> using namespace std; int n; //n 个学校 int m; //m 个男子项目 int w; //w 个女子项目 struct pro //表示项目的结构体 { string name; //项目名称 int snum[6];//前 5 名学校的编号 }p[21]; struct school //表示学校的结构体 { int num; string name; //学校名称 int score; //学校总分 int male; //男子总分 int female; //女子总分 int info; }sch[21]; int integral1[5]={7,5,3,2,1};//前五名得分 // 输入学校数目 void inputInfo() { int i,j,y,x; printf("输入学校数目:"); y=0; while(1) { scanf("%d",&n); if(n>=1&&n<=20) y=1; if(y) break; else printf("输入数据有误, 请重新输入:"); } for(i=1;i<=n;i++) { printf("输入第 %d 个学校的名称:", i); cin>>sch[i].name; sch[i].score=0; sch[i].female=0; sch[i].male=0; sch[i].info=0; sch[i].num=i; } printf("输入男子项目数和女子项目数:"); y=0; while(1){ scanf("%d%d",&m,&w); if(m <= 20 && m >= 1 && w <= 20 && w >= 1) y=1; if(y) break; else printf("输入数据有误, 请重新输入:"); } for(i=1;i<=m+w;i++){ printf("输入第 %d 个项目的名称:\n",i); cin>>p[i].name; printf("输入第 %d 个项目的前 5 名的学校编号:\n",i); for(j=1;j<=5;j++){ y=0; while(1){ scanf("%d",&x); if(x>=1&&x<=20) y=1; if(y) break; else printf("输入数据有误, 请重新输入:"); } p[i].snum[j]=x; sch[x].score+=integral1[j-1]; if(i<=m) sch[x].male+=integral1[j-1]; else sch[x].female+=integral1[j-1]; } } } // 按任意键返回主菜单 void order() { cout<<"请按任意键返回主菜单"<<endl; getch(); } //输出函数 void print(int i) { cout<<sch[i].num<<setw(10)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9) <<sch[i].male<<setw(10)<<sch[i].female<<endl; } //按编号排序 void Numbering() { int i; printf("\n 按编号排列:\n"); printf("编号 学校名称 总分 男子总分 女子总分\n"); for(i=1;i<=n;i++) print(i); order(); } //按学校总分排序 void totalScore() { int i,j,k,a; printf("\n 按学校总分排列:\n"); printf("编号 学校名称 总分 男子总分 女子总分\n"); for(i=1;i<=n;i++){ sch[i].info =0; } for(k=1;k<=n;k++){ for(i=1;i<=n;i++){ if(sch[i].info ==0) break; } { a=i; for(j=1;j<=n;j++){ if(sch[j].info ==0) { if(sch[i].score<sch[j].score){ a=j; } } } } print(a); sch[a].info=1; }; order(); } //按学校男总分排序 void malezf() { int k,i,j,a; printf("\n 按学校男子总分排列:\n"); printf("编号 学校名称 总分 男子总分 女子总分\n"); for(i=1;i<=n;i++){ sch[i].info =0; } for(k=1;k<=n;k++){ for(i=1;i<=n;i++){ if(sch[i].info ==0) break; } { a=i; for(j=1;j<=n;j++){ if(sch[j].info ==0){ if(sch[i].male<sch[j].male){ a=j; } } } } print(a); sch[a].info=1;cout<<""; } order(); } //按学校女总分排序 void femalezf(){ int i,j,a,k; printf("\n 按学校女子总分排列:\n"); printf("编号 学校名称 总分 男子总分 女子总分\n"); for(i=1;i<=n;i++){ sch[i].info =0; } for(k=1;k<=n;k++){ for(i=1;i<=n;i++){ if(sch[i].info ==0) break; } { a=i; for(j=1;j<=n;j++){ if(sch[j].info ==0){ if(sch[i].female<sch[j].female){ a=j; } } } } print(a); sch[a].info=1; } cout<<endl; order(); } //查询学校信息 void schScore() { int i,y,s; printf("输入需要查询的学校编号:"); y=0; while(1) { scanf("%d",&s); if(s>=1&&s<=n) y=1; if(y) break; else printf("输入数据有误, 请重新输入:"); } printf("该学校相关信息:\n"); printf("编号 学校名称 总分 男子总分 女子总分\n"); for(i=1;i<=n;i++){ if(sch[i].num==s){ print(i); break; } } cout<<endl; order(); } //查询项目信息 void project() { int i,y,s; printf("输入需要查询的项目编号:"); y=0; while(1){ scanf("%d",&s); if(s>=1&&s<=n)y=1; if(y) break; else printf("输入数据有误, 重新输入:"); } cout<<p[s].name<<"前 5 名学校编号及名称为:"<<endl; printf("名次 编号 学校名称\n"); for(i=1;i<=5;i++) cout<<" "<<i<<" "<<p[s].snum[i]<<setw(12)<<sch[ p[s].snum[i] ].name<<endl; cout<<endl; order(); } //菜单函数 void menu() { int num; while(1){ printf("\n运动会计分系统\n"); printf("1.学校编号排序输出结果\n"); printf("2.学校总分排序输出结果\n"); printf("3.学校男子总分排序输出结果\n"); printf("4.学校女子总分排序输出结果\n"); printf("5.查询某个学校成绩\n"); printf("6.查询某个项目成绩\n"); printf("7.结束\n\n"); printf("\n 选择需要的操作(选择序号):\n"); scanf("%d",&num); if(num==1) Numbering(); if(num==2) totalScore(); if(num==3) malezf(); if(num==4) femalezf(); if(num==5) schScore(); if(num==6) project(); if(num==7) break; } } //主函数 int main() { inputInfo(); menu(); return 0; }

    文档在这里,需要的小伙伴可以拿去参考一下 (里面有两个选题,因为我们老师当初就是让我们做两个选题的) 😛😛😛😛😛 链接:https://pan.baidu.com/s/1m83uA6DoLkxoF_H9947uJA 提取码:hb18

    Processed: 0.012, SQL: 10