数据结构课设----运动会分数统计系统(C++版)

这篇具有很好参考价值的文章主要介绍了数据结构课设----运动会分数统计系统(C++版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.1② 运动会分数统计
【问题描述】
  参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5;3,2。写一个统计程序产生各种成绩单和得分报表。
【基本要求】
  产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。
【测试数据】
  对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。
【实现提示】
  可以假设n≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。
【选作内容】
允许用户指定某项目采取其他名次取法。

废话不多说,直接上代码!(欢迎私信和评论!)

#include<math.h>
#include<process.h>
#include <iostream>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;

#define N 20 //学校最大数目
#define M 30 //男子项目最大数
#define W 20 //女子项目最大数

//存放项目信息的结构体
typedef struct
{
    int inum;//项目编号
    int top;//取名次的数目
    int range[5];//名次
    int mark[5];//分数
}itemnode;

//存放学校信息的结构体
typedef struct
{
    int snum;//学校编号
    int score;//学校总分
    int mscore;//男子总分
    int wscore;//女子总分
    itemnode t[M + W];//项目数组
}snode;
snode a[N];//定义一个学校数组

//菜单函数
void menu(int n, int m, int w)
{//n代表学校数,m代表男子数,w代表女子数
    int c;
    void input(int n, int m, int w);//输入功能
    void output(int n, int m, int w);//输出功能
    void sortput(int n, int m, int w);//排序输出
    void search(int n, int m, int w);//查询功能
    cout<<"\t\t\t欢迎使用\t\t\t\t\t"<<endl;
    cout<<"运动会分数统计系统"<<endl;
    cout << endl;
    cout<<"1.信息输入"<<endl;
    cout<<"2.统计输出" << endl;
    cout <<"3.排序输出" << endl;
    cout<<"4.信息查询"<<endl;
    cout<<"5.退出系统"<<endl;
    cout << endl;
    cout<<"======================================================="<<endl;
    cout << endl;
    cout<<"请输入您想要实现的功能(0--4):"<<endl;
    cin >> c;
    switch (c) {
    case 1:
        input(n, m, w);
        break;
    case 2:
        output(n, m, w);
        break;
    case 3:
        sortput(n, m, w);
        break;
    case 4:
        search(n, m, w);
        break;
    case 5:
        cout<<"感谢使用,祝您天天开心!!"<<endl;
        exit(0);//正常退出
    default:
        cout<<"您输入有误,请重新输入!";
        menu(n, m, w);
    }
}

//将信息写入文件中
void savetofile()
{
    FILE* fp;//定义一个文件指针
    int i;
        if (NULL == (fp = fopen("file.txt", "w"))) {
        cout<<"打开文件失败!"<<endl;
        return;
    }
    for (i = 0; i < N; i++) {
        if ('\0' != a[i].snum)
            if (fwrite(&a[i], sizeof(snode), 1, fp) != 1) {
                cout << "存入信息失败!" << endl;
                return;
            }
    }
    fclose(fp);//关闭文件
}

//将信息从文件里取出
void readfromfile()
{
    int i;
    FILE* fp;
    if ((fp = fopen("file.txt", "rb")) == NULL) {
        cout<<"文件打开失败!"<<endl;
        return;
    }
    for (i = 0; i < N; i++) {
        fread(&a[i], sizeof(snode), 1, fp);
    }
    fclose(fp);
}

//信息输入功能
void input(int n, int m, int w)
{
    int i, j, s, k, q = 1;
    for (i = 0; i < n; i++) {
        cout<<"请输入学校的编号:"<<endl;
        cin >> a[i].snum;
        for (j = 0; j < m + w; j++) {//总的项目的输入
            cout << "请输入项目编号:";
            cin>> a[i].t[j].inum;
            /*
            cout << "请输入该项目取前3还是前5(输入3或5):";
            cin >> a[i].t[j].top;
            */
            if (a[i].t[j].inum % 2 == 0) {
            cout<<"编号为偶数取前三" << endl;
                    cout << "获得的名次的个数(1--5):";
                }
                else if (a[i].t[j].inum % 2 == 1) {
                cout <<"编号为奇数的项目取前五"<<endl;
                    cout << "获得的名次的个数(1--5):";
                }
                else {
                    cout << "输入有误!程序退出....";
                    return;
                }
            cin >> k;//输入获得名次的个数
            for (s = 0; s < k; s++) {
                //if (3 == a[i].t[j].top) {
                if(a[i].t[j].inum % 2 == 0){
                    cout<<"请输入获得的名次(1--3):";
                }
                else {
                    cout<<"请输入获得的名次(1--5):";
                }
                cin >> a[i].t[j].range[s];//输入所获得的名次的信息
            }
            cout << endl;
        }
    }
    for (i = 0; i < n; i++) {
        //初始化分数
        a[i].score = 0;//学校总分
        a[i].mscore = 0;//男子总分
        a[i].wscore = 0;//女子总分
    }
    for (i = 0; i < n; i++) {
        for (j = 0; j < m + w; j++) {
            cout << "项目" << j + 1 << "取得是前3还是前5(输入3或5) :";
            cin >> a[i].t[j].top;
            for (s = 0; s < 5; s++) {
                if (a[i].t[j].top == 3) {
                    switch (a[i].t[j].range[s]) {
                    case 0:
                        a[i].t[j].mark[s] = 0;
                        break;
                    case 1:
                        a[i].t[j].mark[s] = 5;
                        break;
                    case 2:
                        a[i].t[j].mark[s] = 3;
                        break;
                    case 3:
                        a[i].t[j].mark[s] = 2;
                        break;
                    }
                }
                else if (a[i].t[j].top == 5) {
                    switch (a[i].t[j].range[s]) {
                    case 0:
                        a[i].t[j].mark[s] = 0;
                        break;
                    case 1:
                        a[i].t[j].mark[s] = 7;
                        break;
                    case 2:
                        a[i].t[j].mark[s] = 5;
                        break;
                    case 3:
                        a[i].t[j].mark[s] = 3;
                        break;
                    case 4:
                        a[i].t[j].mark[s] = 2;
                        break;
                    case 5:
                        a[i].t[j].mark[s] = 1;
                        break;
                    }
                }
                /*else {
                    cout << "信息输入错误!程序退出" << endl;
                    cout << endl;
                    exit(0);
                }*/
                a[i].score = a[i].score + a[i].t[j].mark[s];//学校总分
                if (j < m) {
                    a[i].mscore = a[i].mscore + a[i].t[j].mark[s];
                }
                else {//女子总分
                    a[i].wscore = a[i].wscore + a[i].t[j].mark[s];
                }
            }
        }
    }
    cout<<"输入完毕!(返回菜单请输入1):";
    cin >> q;
    cout << endl;
    if (q != 1) {
        cout<<"不能再添加信息了!";
    }
    cout << endl;
    savetofile();//保存文件
    menu(n, m, w);
}

#if(1)
void output(int n, int m, int w)                                /*2.统计输出*/
{
    readfromfile();
    int i, j, s, q = 0;
    for (i = 0; i < n; i++)  /*显示结果*/
    {
        cout << "学校编号:" << a[i].snum << endl;
        cout << "学校总分:" << a[i].score << endl;
        cout << "男子总分" << a[i].mscore <<"  " << "女子总分" << a[i].wscore << endl;
        for (j = 0; j < m + w; j++)
        {
           // cout<<"项目编号:%d  所取名次数量:%d\n", a[i].t[j].inum, a[i].t[j].top;
            cout << "项目编号:" << a[i].t[j].inum <<"  " << "所取名次取前:" << a[i].t[j].top<<"名"<< endl;
            for (s = 0; s < 5; s++)
            {
                if (a[i].t[j].range[s] != 0)
                    cout<<"名次:"<< a[i].t[j].range[s] <<"  " << "分数:"<< a[i].t[j].mark[s]<<"  "<<endl;
            }
        }
        cout << endl;
    }
    cout<<"\n";
    cout<<"统计完毕!返回?  1是 2否";    /*返回菜单*/
    cin >> q;
    cout << endl;
    if (q != 1)
        cout<<"统计已经结束!";
    cout << endl;
    menu(n, m, w);
}
#endif

//排序输出
void sortput(int n, int m, int w)//n为学校数,m为男子数,w为女子数
{
    readfromfile();
    int c, i, j, k, q = 0;
    int temp[N]={};
    cout << "\t**************排序输出系统**************" << endl;
    cout << endl;
    cout << "\t\t****1.按学校编号输出****" << endl;
    cout<<"\t\t****2.按学校总分输出****"<<endl;
    cout<<"\t\t****3.按男子总分输出****"<<endl;
    cout<<"\t\t****4.按女子总分输出****"<<endl;
    cout<<"======================================================="<<endl;
    cout << endl;
    do {
        cout<<"请选择您想实现的功能的编号(1--4):";
        cin >> c;
        switch (c) {
        case 1:
            for (i = 0; i < n; i++) {
                temp[i] = i;
            }
            //用的是冒泡排序输出
            for (i = 0; i < n; i++) {
                for (j = i + 1; j < n; j++) {
                    if (a[temp[i]].snum > a[j].snum) {
                        k = temp[i];
                        temp[i] = temp[j];
                        temp[j] = k;
                    }
                }
            }
            for (i = 0; i < n; i++) {
                //cout<<"学校标号:%d  学校总分:%d  男子总分:%d   女子总分:%d\n", a[temp[i]].snum, a[temp[i]].score, a[temp[i]].mscore, a[temp[i]].wscore;
                cout << "学校标号:" << a[temp[i]].snum << "  " << "学校总分:" << a[temp[i]].score << endl;
                cout << "男子总分" << a[temp[i]].mscore << "  " << "女子总分:" << a[temp[i]].wscore << endl;
            }
            break;
        case 2:
            for (i = 0; i < n; i++) {
                temp[i] = i;
            }
            for (i = 0; i < n; i++) {
                for (j = i + 1; j < n; j++) {
                    if (a[temp[i]].score < a[j].score) {
                        k = temp[i];
                        temp[i] = temp[j];
                        temp[j] = k;
                    }
                }
            }
            for (i = 0; i < n; i++) {
               // cout<<"学校编号:%d  学校总分:%d   男子总分:%d   女子总分:%d\n", a[temp[i]].snum, a[temp[i]].score, a[temp[i]].mscore, a[temp[i]].wscore;
                cout << "学校标号:" << a[temp[i]].snum << "  " << "学校总分:" << a[temp[i]].score << endl;
                cout << "男子总分" << a[temp[i]].mscore << "  " << "女子总分:" << a[temp[i]].wscore << endl;
            }
            break;
        case 3:
            for (i = 0; i < n; i++) {
                temp[i] = i;
            }
            for (i = 0; i < n; i++) {
                for (j = i + 1; j < n; j++) {
                    if (a[temp[i]].mscore < a[j].mscore) {
                        k = temp[i];
                        temp[i] = temp[j];
                        temp[j] = k;
                    }
                }
            }
            for (i = 0; i < n; i++) {
                printf("学校编号:%d  学校总分:%d  男团总分:%d  女团总分:%d\n", a[temp[i]].snum, a[temp[i]].score, a[temp[i]].mscore, a[temp[i]].wscore);
            }
            break;
        case 4:
            for (i = 0; i < n; i++) {
                temp[i] = i;
            }
            for (i = 0; i < n; i++) {
                for (j = i + 1; j < n; j++) {
                    if (a[temp[i]].wscore < a[j].wscore) {
                        k = temp[i];
                        temp[i] = temp[j];
                        temp[j] = k;
                    }
                }
            }
            for (i = 0; i < n; i++) {
                printf("学校编号:%d  学校总分:%d  男团总分:%d  女团总分:%d\n", a[temp[i]].snum, a[temp[i]].score, a[temp[i]].mscore, a[temp[i]].wscore);
            }
            break;
        default:
            printf("您的输入有误!请从新输入...");
        }
        printf("请选择 1.返回主菜单  0.继续");
        scanf_s("%d", &q);
        printf("\n");
    }
    //=======================
    while (0 == q);
    printf("\n");
    //=======================
    if (q != 0) {
        menu(n, m, w);
    }
}

//查询功能
void search(int n, int m, int w)
{
    readfromfile();
    int c, i, j, k, d, l, q = 0;
    cout<<"\t****************查询系统****************"<<endl;
    cout << endl;
    cout << "\t\t****1.按学校编号查询****"<<endl;
    cout << "\t\t****2.按项目编号查询****" << endl;
    cout << "======================================================="<<endl;
    cout << endl;
    do
    {
        k = -1; d = -1; l = -1;
        cout<<"请选择要实现功能的编号(1--2):";
        //scanf_s("%d", &c);
        cin >> c;
        switch (c) {
        case 1:
            cout<<"要查询的学校编号:";       /*查找学校编号下标*/
           // scanf_s("%d", &c);
            cin >> c;
            for (i = 0; i < n; i++) {
                if (c == a[i].snum) {
                    k = i;
                }
            }
            if (-1 == k) {
                cout<<"错误:这个学校没有参加此次运动会!"<<endl;
            }
            else {
                cout<<"要查询的项目编号:";         /*查找项目编号下标*/
                //scanf_s("%d", &c);
                cin >> c;
                for (j = 0; j < m + w; j++) {
                    if (c == a[k].t[j].inum) {
                        d = j;
                    }
                }
                if (-1 == d) {
                  cout<<"此次运动会没有这个项目"<<endl;
                }
                else {
                    //cout<<"这个项目取前 %d名,该学校的成绩如下:\n", a[k].t[d].top);
                    cout << "这个项目取前" << a[k].t[d].top << "名,该学校的成绩如下:" << endl;
                    for (i = 0; i < 5; i++) {
                        if (a[k].t[d].range[i] != 0) {
                            //cout<<"名次:%d\n", a[k].t[d].range[i];
                            cout << "名次:" << a[k].t[d].range[i];
                        }
                    }
                }
            }
            break;
        case 2:
            cout<<"要查询的项目编号:";     /*查找项目编号下标*/
            //scanf_s("%d", &c);
            cin >> c;
            for (i = 0; i < n; i++) {
                for (j = 0; j < m + w; j++) {
                    if (c == a[i].t[j].inum) {
                        l = j;
                    }
                    if (-1 == l) {
                        cout<<"此次运动会没有该项目";
                    }
                    else {
                        //printf("该项目取前 %d名,取得名次的学校\n", a[0].t[l].top);
                        cout << "该项目取前a[0].t[l].top名,取得名次的学校" << endl;
                        for (i = 0; i < n; i++) {
                            for (j = 0; j < 5; j++) {
                                if (a[i].t[l].range[j] != 0) {
                                    //cout<<"学校编号:%d,名次:%d\n", a[i].snum, a[i].t[l].range[j]);
                                    cout << "学校编号:" << a[i].snum << "  " << ", 名次:" << a[i].t[l].range[j] << endl;
                                }
                            }
                        }
                    }
                }
            }
            break;
        default:
            cout << "输入错误,请重试!" << endl;
        }
        cout<<"请选择:1.返回主菜单 0.继续";
        //scanf_s("%d", &q);
        cin >> q;
        //printf("\n");
        cout << endl;
    } while (0 == q);
    //printf("\n");
    cout << endl;
    if (q != 0) {
        menu(n, m, w);
    }
}

//主函数
int main()
{
    int n, m, w;//n为学校个数,m为男子数,w为女子数
    cout<<"\t\t\t欢迎使用\t\t\t\t"<<endl;
    cout << endl;
    cout << "\t***********运动会分数统计系统***********" << endl;
    cout << endl;
    cout<<"请先输入运动会主要信息"<<endl;
   cout<<"输入学校个数:";
   cin >> n;
   cout<<"输入男子项目个数:";
   cin >> m;
   cout<<"输入女子项目个数:";
   cin >> w;
    menu(n, m, w);
 
}

结果截图 运动会分数统计系统代码,c++,数据结构,算法

运动会分数统计系统代码,c++,数据结构,算法

 运动会分数统计系统代码,c++,数据结构,算法文章来源地址https://www.toymoban.com/news/detail-775126.html

到了这里,关于数据结构课设----运动会分数统计系统(C++版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • (运动会模拟射靶)Python期末大作业(附完整文档)

    (运动会模拟射靶)Python期末大作业(附完整文档)

           python期末大作业,因为是数据分析与可视化,所以我在网上搜索的时候,找到了一篇关于大作业射靶的题目,原文写的很好,也提供了下载,本篇在其基础上增加了数据可视化-图表,并且增加了,方差,个人平均分在内的多个计算内容,并制作了完整的文档,可供提

    2024年02月09日
    浏览(43)
  • (N-137)基于springboot,vue运动会报名管理系统

    (N-137)基于springboot,vue运动会报名管理系统

    开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vue+Avue+ElementUI 服务端技术:springboot+mybatis 本项目分为用户和管理员两种角色 一、普通用户有登录、报名详情、比赛报名、学院积分排行、个人参赛项目、

    2024年01月22日
    浏览(19)
  • springboot学校学校运动会信息管理系统毕业设计-附源码

    springboot学校学校运动会信息管理系统毕业设计-附源码

    摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,

    2024年02月06日
    浏览(14)
  • 基于JSP微信小程序校园运动会报名系统设计与实现

    基于JSP微信小程序校园运动会报名系统设计与实现

    【后台管理员功能】 录入资讯:录入资讯标题、内容等信息 管理资讯:查看已录入资讯列表,支持删除和修改 会员列表:查看所有注册会员信息,支持删除 广告设置:上传图片和设置小程序首页轮播图广告地址 留言列表:所有用户留言信息列表,支持删除 录入比赛项目:

    2024年02月12日
    浏览(48)
  • 基于微信小程序的高校运动会管理系统设计与实现

    基于微信小程序的高校运动会管理系统设计与实现

    💗博主介绍:✌全网粉丝10W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者。 👇🏻 精彩专栏 推荐订阅👇🏻 计算机毕业设计精品项目案例(持续更新) 🌟 文末获取源码+数据库+文档 🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及

    2024年01月20日
    浏览(14)
  • C语言源码做的运动会管理系统课程设计(源码+课程设计报告)

    一、课程设计的目的: C语言程序设计课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编

    2023年04月13日
    浏览(10)
  • 基于java运动会报名系统系统 (springboot框架)开题答辩常规问题和如何回答

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月20日
    浏览(12)
  • 基于JAVA高校校园运动会报名系统设计与实现(springboot框架) 参考文献

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月23日
    浏览(19)
  • Java高校学校校园运动会报名管理系统设计与实现(Idea+Springboot+mysql)

    Java高校学校校园运动会报名管理系统设计与实现(Idea+Springboot+mysql)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年03月13日
    浏览(33)
  • 基于Java+SpringBoot+Vue的学校田径运动会管理系统【源码+论文+演示视频+包运行成功】

    基于Java+SpringBoot+Vue的学校田径运动会管理系统【源码+论文+演示视频+包运行成功】

    博主介绍 : ✌ csdn特邀作者、博客专家、java领域优质创作者、博客之星,擅长Java、微信小程序、Python、Android等技术,专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 Java项目精品实战案例(300套) Java微

    2024年02月12日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包