C++设计计设大赛管理系统

使用C++语言,写一个计算机设计大赛管理系统。
要求如下:(1)能够管理各参赛队的基本信息(包含参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师),赛事类别共11项(参见大赛官网jsjds.blcu.edu.cn);包括增加、删除、修改参赛队伍的信息。
(2)从team.txt中读取参赛队伍的基本信息,实现基于二叉排序树的查找。根据提示输入参赛队编号,若查找成功,输出该赛事类别对应的基本信息(参赛作品名称、参赛学校、赛事类别、参赛者和指导老师信息),同时,输出查找成功时的平均查找长度ASL;否则,输出“查找失败!”。
(3)能够提供按参赛学校查询参赛团队(或根据赛事类别查询参赛团队),即,根据提示输入参赛学校名称(赛事类别),若查找成功,输出该学校参赛的(该赛事类别的)所有团队的基本信息,输出的参赛团队按赛事类别有序输出。(排序算法可从选择排序、插入排序、希尔排序、归并排序、堆排序中任意选择,并为选择算法的原因做出说明。)
(4)为省赛现场设计一个决赛叫号系统。所有参赛队按赛事组织文件中的赛事类别分到9个决赛室,决赛室按顺序叫号,被叫号参赛队进场,比赛结束后,下一参赛队才能进赛场。请模拟决赛叫号系统,演示省赛现场各决赛室的参赛队进场情况。(模拟时,要能直观展示叫号顺序与进场秩序一致)
(5)赛事系统为参赛者提供赛地的校园导游程序,为参赛者提供各种路径导航的查询服务。以我校长山校区提供比赛场地为例,(请为参赛者提供不少于10个目标地的导航。可为参赛者提供校园地图中任意目标地(建筑物)相关信息的查询;提供任意两个目标地(建筑物)的导航查询,即查询任意两个目的地(建筑物)之间的一条最短路径。
1)赛事数据要求存入文件(txt或excel)并能读入查询;
2)赛地目的地查询,需提供目的地(建筑物)名称、代号、简介、两地之间路径长度等信息;
3)输入数据形式和范围:赛事相关数据可从键盘输入,或自文件导入。
4)界面要求:交互设计要合理,每个功能可以设计菜单,用户根据提示,完成相关功能的要求。
文件链接如下:(文件格式是txt,但是这里不好上传所以改成了docx)
[](【腾讯文档】新建 DOCX 文档
https://docs.qq.com/doc/DTlRrSnBvdlJYT0lI
)
图片如下

img

img


可制作如下示意图:

img

img


参考一下

可以参考下,有问题可以说

int main()
{
    insertinformation();
    eventCate_separate(teamsall);
    while (true) {
        cout << "================== 赛事管理系统 ==================" << endl;
        cout << "1. 添加参赛队伍" << endl;
        cout << "2. 删除参赛队伍" << endl;
        cout << "3. 修改参赛队伍" << endl;
        cout << "4. 按参赛队编号查询参赛队伍" << endl;
        cout << "5. 按参赛学校查询参赛队伍" << endl;
        cout << "6. 决赛叫号功能" << endl;
        cout<<  "7. 地图导航功能" <<endl;
        cout << "0. 退出系统" << endl;
        cout << "=================================================" << endl;
        cout << "请输入操作选项:";
        int a;
        cin >>a;
        switch (a)
        {
         case 1:
         {
             string id, project, schoolname, event, participants, teacher;
             cout << "请输入参赛队编号:" << endl;
             cin >> id;
             cout << "请输入参赛作品名称:" << endl;
             cin >> project;
             cout << "请输入参赛参赛学校:" << endl;
             cin >> schoolname;
             cout << "请输入参赛的赛事类别:" << endl;
             cin >> event;
             cout << "请输入参赛者:" << endl;
             cin >> participants;
             cout << "请输入参赛的指导老师:" << endl;
             cin >> teacher;
             Team a;
             a.insertTeamID(id);
             a.insertworkname(project);
             a.insertschool(schoolname);
             a.inserteventCate(event);
             a.insertparticipants(participants);
             a.insertteachers(teacher);
             addteam(id, project, schoolname, event, participants, teacher);
             addteam2(teamsall, a);
             break;
         }
         case 2:
         {
             cout << "请输入你想删除的参赛队伍编号:" << endl;
             string l;
             cin >> l;
             deleteteam(teamsall, l);
             deletfile(l);
             break;
         }
         case 3:
         {
             cout << "请输入你想修改的参赛队伍编号:" << endl;
             string l;
             cin >> l;
             string id, project, schoolname, event, participants, teacher;
             cout << "请输入参赛队编号:" << endl;
             cin >> id;
             cout << "请输入参赛作品名称:" << endl;
             cin >> project;
             cout << "请输入参赛参赛学校:" << endl;
             cin >> schoolname;
             cout << "请输入参赛的赛事类别:" << endl;
             cin >> event;
             cout << "请输入参赛者:" << endl;
             cin >> participants;
             cout << "请输入参赛的指导老师:" << endl;
             cin >> teacher;
             revise(l, id, project, schoolname, event, participants, teacher);
             reworkteam(teamsall, l,id, project, schoolname, event, participants, teacher);
             break;
         }
         case 4:
         {
             cout << "请输入你想查询的参赛队伍编号:" << endl;
             string l;
             cin >> l;
             cout<<"*******查询结果如下:*******" << endl;
             searchid(root, l);
             break;
         }
         case 5:
         {
             cout << "请输入你想查询的参赛队伍的学校:" << endl;
             string l;
             cin >> l;
             sortprint(teamsall, l);
             break;
         }
         case 6:
         {
             cout << "请输入你想查询的赛区数字:" << endl;
             int l;
             cin >> l;
             cout<<"********你想查询" <<l<<"赛区!******" << endl;
             vector<Team> m = search_zone(l);
             Approach_sequence(m);
             Call_system(m);
             break;
         }
         case 7:
         {
             Mat image = imread("C:\\Users\\Lenovo\\Desktop\\无标题.png", IMREAD_GRAYSCALE);
             namedWindow("image window", WINDOW_NORMAL);
             imshow("image window", image);
             waitKey(0);
             cout << "  0->3号组团" << endl << "  1->西食堂" << endl << "  2->文体中心" << endl << "  3->足球场" << endl << "  4->文理大楼" << endl;
             cout << "  5->笃学楼" << endl << "  6->东食堂" << endl << "  7->9号组团" << endl << "  8->图书馆" << endl << "  9->计算机学院" << endl;
             string e;
             string f;
             cout << "请输入你的起始地址:" << endl;
             cin >> e;
             if (identifyposition(e) < 0)
             {
                 cout<<"输入错误!请重新输入!" << endl;
                 break;
             }
             cout << "请输入你要到达的地址:" << endl;
             cin >> f;
             if (identifyposition(f) < 0)
             {
                 cout << "输入错误!请重新输入!" << endl;
                 break;
             }
             searchposition(e, f);
             break;
         }
         case 0:
             cout << "感谢使用赛事管理系统!再见!" << endl;
             return 0;
         default:
             cout << "无效的操作选项!请重新输入。" << endl;
             break;
        }
        cout << endl;
    }
    std::system("PAUSE");
    return 0;
}


你好,你的这个问题有些复杂了,实现起来有点凡事,不过你可以参考一下网络上博客的文章,或许能从中得到一些启发,写代码这东西主要是一个灵感
https://blog.csdn.net/qq_52837311/article/details/125041468

https://blog.csdn.net/qq_56004086/article/details/124799979


#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;





class Project {
public:
    int projectCode;
    string Name;
    int teamnum;                    //参赛队伍数量
    int* jointeam = new int[10];    //参赛队伍编号
    int* score = new int[10];       //参赛队伍成绩
};

class School {
public:
    int schoolCode;                 //学校编码
    string schoolName;              //学校名称
    int Teamnum;                    //参加队伍数量
    int sum;                        //项目总分
};

int m;                                //项目数量
int n;                                //学校数量
vector<Project>project(10);         //项目信息
vector<School>school(10);           //学校信息




void add()

{

    string temp;
    for (int i = 0; i < m; i++) {
        project[i].projectCode = i + 1;
        cout << "         请输入第" << i + 1 << "个项目的名称:" << endl;
        cin >> temp;
        project[i].Name = temp;
        cout << "         添加成功!" << endl;
        cout << "        -------------------------------------------------------" << endl;
    }
    for (int i = 0; i < m; i++) {
        cout << "        项目编号" << project[i].projectCode << "项目名称" << project[i].Name << endl;
        cout << "        -------------------------------------------------------" << endl;
    }

    for (int i = 0; i < n; i++) {
        school[i].schoolCode = i + 1;
        cout << "       请输入第" << i + 1 << "个学校的名称" << endl;
        cin >> temp;
        school[i].schoolName = temp;
        cout << "       添加成功!" << endl;
        cout << "       =========================================================" << endl;
    }
    for (int i = 0; i < n; i++) {
        cout << "       学校编号    " << school[i].schoolCode << "   学校名称" << school[i].schoolName << endl;
    }
    for (int i = 0; i < m; i++) {

        int a;


        do
        {
            cout << "   请输入大于2的数" << endl;
            cout << "   请输入参加** " << project[i].Name << " **的学校数量:" << endl;
            cin >> a;
        } while (a <= 1);
        int b;
        project[i].teamnum = a;
        cout << "       请依次输入参加** " << project[i].Name << " **的学校编号:" << endl;
        for (int j = 0; j < project[i].teamnum; j++) {
            cin >> b;
            project[i].jointeam[j] = b;
            cout << "   输入成功" << endl;
            cout << "   ==================================================================" << endl;
        }
        cout << "       参加项目** " << project[i].Name << " **的学校有" << endl;
        for (int j = 0; j < project[i].teamnum; j++) {
            cout << project[i].jointeam[j] << " " << endl;

        }
        cout << "========" << endl;

        cout << "       请依次输入参加** " << project[i].Name << " **的学校的分数" << endl;
        for (int j = 0; j < project[i].teamnum; j++) {
            int score;
            cout << school[j].schoolName << endl;
            cin >> score;
            if (score >= 0 && score <= 100) {
                project[i].score[j] = score;
                cout << "输入成功!" << endl;
            }
            else {
                cout << "您的输入有误!" << endl;
                exit(0);
            }
        }
        cout << "========" << endl;
        cout << "显示如下:" << endl;
        for (int j = 0; j < project[i].teamnum; j++) {
            cout << "编号" << project[i].jointeam[j] << "的学校取得的成绩:" << project[i].score[j];
            cout << "----------------" << endl;
        }
        cout << "========" << endl;
    }
}
void save()
{
    fstream f;
    f.open("data.txt", ios::out);
    for (int i = 0; i < m; i++)
    {
        f << project[i].projectCode << ' ' << project[i].Name << ' ' << project[i].Name << endl;
    }
    f << endl;
    for (int i = 0; i < n; i++) {
        f << school[i].schoolCode << ' ' << school[i].schoolName << endl;
    }
    f.close();
}

void read()
{
    fstream f;
    f.open("data.txt", ios::in);
    for (int i = 0; i < m; i++)
    {
        f >> project[i].projectCode >> project[i].Name >> project[i].Name;
    }
    for (int i = 0; i < n; i++) {   //保存学校信息
        f >> school[i].schoolCode >> school[i].schoolName;
    }
    f.close();
}

void printByCodes() {               //学校编号输出

    int sum = 0;
    for (int i = 0; i < n; i++) {
        cout << "       ------------------------------------------------------" << endl;
        cout << "       学校编号" << school[i].schoolCode << endl;
        cout << "       学校名称" << school[i].schoolName << endl;
        cout << "       ------------------------------------------------------" << endl;
        for (int j = 0; j < m; j++) {
            for (int k = 0; k < project[j].jointeam[k]; k++) {
                if (project[j].jointeam[k] == school[i].schoolCode) {
                    cout << "参赛项目:" << project[j].Name << endl;
                    cout << "取得成绩:" << project[j].score[k] << endl;
                    cout << "=======" << endl;
                    sum += project[j].score[k];
                }
            }
        }
        cout << "学校的总分:" << sum << endl;
        school[i].sum = sum;
        sum = 0;
        cout << "       ================================================" << endl;
    }
}

void printByScore() {                  //排序

    int temp = 0;
    int* temps = new int[n];
    for (int i = 0; i < n; i++) {
        temps[i] = school[i].sum;
    }
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            if (temps[i] > temps[j]) {
                temp = temps[i];
                temps[i] = temps[j];
                temps[j] = temp;
            }
        }
    }
    cout << "按照总分排序如下:" << endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (temps[i] == school[j].sum) {
                cout << "总分第" << n - i << "名的学校是" << school[j].schoolName << endl;
                cout << "其总分是:" << school[j].sum << endl;
                cout << "===============" << endl;
            }
        }
    }
}

void search() {                 //按学校编号查询

    cout << "请输入查询的学校编号" << endl;
    cout << " ";
    int scode;
    cin >> scode;
    cout << "请输入查询的项目编号" << endl;
    int pcode;
    cin >> pcode;
    cout << "========" << endl;
    int* temps = new int[project[pcode - 1].teamnum];
    int len = sizeof(temps) / sizeof(int);
    for (int i = 0; i < len; i++) {
        temps[i] = project[pcode - 1].score[i];
    }
    int temp = 0;
    for (int i = 0; i < len; i++) {
        for (int j = i; j < len; j++) {
            if (temps[i] > temps[j]) {
                temp = temps[i];
                temps[i] = temps[j];
                temps[j] = temp;
            }
        }
    }
    cout << "========" << endl;
    for (int i = 0; i < len; i++) {
        for (int j = 0; j < len; j++) {
            if (project[pcode - 1].score[i] == temps[j]) {
                cout << "该学校在该项目中排第" << j << "名" << endl;
            }
        }
    }
}

void TopThree() {
    //按项目编号查询取得前三名的学校
    cout << "========" << endl;
    cout << "请输入您想要查询的项目的编号:" << endl;
    int code;
    cin >> code;
    int* temps = new int[project[code - 1].teamnum];
    int len = sizeof(temps) / sizeof(int);
    for (int i = 0; i < len; i++) {
        temps[i] = project[code - 1].score[i];
    }
    int temp = 0;
    for (int i = 0; i < len; i++) {
        for (int j = i; j < len; j++) {
            if (temps[i] > temps[j]) {
                temp = temps[i];
                temps[i] = temps[j];
                temps[j] = temp;
            }
        }
    }
    cout << "========" << endl;
    for (int i = 0; i < len; i++) {
        for (int j = 0; j < n; j++) {
            if (temps[len - 1] == project[code - 1].score[i]) {
                if (school[j].schoolCode == project[code - 1].jointeam[i]) {
                    cout << "第一名的学校是:" << school[j].schoolName << endl;
                    cout << "========" << endl;
                }
            }

            if (temps[len - 2] == project[code - 1].score[i]) {
                if (school[j].schoolCode == project[code - 1].jointeam[i]) {
                    cout << "第二名的学校是:" << school[j].schoolName << endl;
                    cout << "========" << endl;
                }
            }
            if (temps[len - 3] == project[code - 1].score[i]) {
                if (school[j].schoolCode == project[code - 1].jointeam[i]) {
                    cout << "第三名的学校是:" << school[j].schoolName << endl;
                    cout << "========" << endl;
                }
            }
        }
    }
}


int main()
{
    bool l = true;
    do {
        l = true;
        cout << "                    -------------------------------------------" << endl;
        cout << "                           * 欢迎使用计算机设计大赛管理系统V1.0" << endl;
        cout << "                           * 请输入项目的个数:";
        cin >> m;

        if (m <= 3 || m >= 10) {
            cout << "                           * 输入有误,重新输入" << endl;

            l = false;
        }
    } while (l == false);
    do {
        l = true;
        cout << "                           * 请输入学校的数目:";
        cin >> n;
        if (n <= 0) {
            cout << "                       * 输入有误,重新输入" << endl;
            cout << "            ============================================" << endl;
            l = false;
        }
    } while (l == false);
    read();
    while (true) {
        cout << "                ******************************************************                  " << endl;
        cout << "                *            计算机设计大赛管理系统                  * " << endl;
        cout << "                *           1.添加信息                               *    " << endl;
        cout << "                *           2.按学校编号排序输出                     *  " << endl;
        cout << "                *           3.按项目总分排序输出                     *    " << endl;
        cout << "                *           4.查询学校某个项目的获奖情况             *    " << endl;
        cout << "                *           5.查询取得前三名的学校                   *      " << endl;
        cout << "                *           0.退出                                   *    " << endl;
        cout << "                ******************************************************                      " << endl;
        cout << "                请输入选择:" << endl;
        int option = -1;
        cin >> option;
        if (option != 0 && option != 1 && option != 2 && option != 3 && option != 4 && option != 5) {
            cout << "            输入有误" << endl;
            cout << "            ======================================================" << endl;
            exit(0);
        }
        switch (option) {
        case 1:
            add();                  //添加信息
            save();
            break;
        case 2:
            printByCodes();         //输出信息
            break;
        case 3:
            printByScore();         //根据分数输出
            break;
        case 4:
            search();               //查询
            break;
        case 5:
            TopThree();             //前三名显示
            break;
        case 0:
            cout << "谢谢使用!" << endl;
            cout << "========" << endl;
            exit(0);
        }
    }

    return 0;
}


可以参考这个实现:https://blog.csdn.net/feng1790291543/article/details/131073588?spm=1001.2014.3001.5502

这题目可以当一个项目来做了~

这个功能太多了,都可以当项目干了

题目内容太多,连GPT都不干了,没个几百估计都没人写。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/354146
  • 除此之外, 这篇博客: C语言实现八大排序算法详解及其性能之间的中的 我们老师给我们花了100个星星的重要,那就是非常重要,快速排序。名字就很嚣张。。。言归正传,快排采用了分治算法。把大问题,分解成小问题。首先我们先找一个基准值,基准值的寻找法,有很多,这里我先用一个取边上值得方法,找到基准值以后呢拿着这个基准值和所有数组比较,使这个数组中比基准值小的都放左边,比基准值大的都放到右边,然后就把原来数组分成三块,中间基准值,左边都是比它小的,右边都是比它大的。然后这两个数组,继续分,一直分。直到他的终止条件,也就是小数组有序了就停止,那么什么时候有序停止呢?小区间长度为1或者长度为0的时候,就是有序了。所有小数组都有序了,那么就是整个数组有序了。只是原理,那么问题,又来了,怎么放左放右呢?我目前会三种。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 算法思想