完整代码-计算机设计大赛赛事统计(竞赛管理系统)

juster数据结构实验1:中国计算机设计大赛赛事统计(附完整代码)

1、项目概述

1.1项目主要内容

参加计算机设计大赛的n个学校编号为1n,赛事分成m个项目,项目的编号为1m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。
1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;
5)数据存入文件并能随时查询
开发平台:Visual Studio 2022 x64
语言:C++

1.2项目需求分析

1、文件的存取
2、用户界面
3、赛事数据能新增、修改和删除
4、赛事统计和查询:

  1. 统计各学校总分;
  2. 按学校编号排序,按学校的总分排序;
  3. 按项目对参赛学校的分数进行降序排序;
  4. 可以按学校编号查询某个项目的获奖情况;

2、项目设计

2.1【设计要求】

1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,可以完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。

2.2【测试数据】

要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的稳定。

2.3【实现提示】

假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩。

2.4【设计功能函数】

void first_menu(); //一级菜单(主界面)
void Schoolmenu(); //二级菜单1:学校信息管理
void Contestmenu(); //二级菜单2:比赛项目管理
void Itemmenu(); //二级菜单3:赛事信息管理
void Prize_query(); //二级菜单4:查询学校获奖信息
void ScoreRank(); //二级菜单5:总分排行榜
void PrizeRank(); //二级菜单6:获奖排行
void printInfo (); //二级菜单7:程序信息

2.5【系统功能结构】

在这里插入图片描述
图1-1 系统框架设计图
在这里插入图片描述
图1-2 系统功能模块图

2.6 【系统业务流程图】

在这里插入图片描述

图1-3 程序流程图

2.6【数据结构设计】

typedef pair<int, double> id_pair;
struct Item
{
int item_id;
map<int, double> school_grade;
};
struct School
{
int school_id;
map<int, double> item_grade;
};
vector item_list;
vector school_list;
对于预先不知或不愿预先定义数组大小,并需频繁进行查找、插入和删除工作的情况,可以考虑使用动态数组。

3、测试结果

在这里插入图片描述
图1-4 进入系统

在这里插入图片描述
图1-5 添加项目

在这里插入图片描述
图1-6 添加学校

在这里插入图片描述
图1-7 添加分数

在这里插入图片描述
图1-8 添加分数

在这里插入图片描述
图1-9 按照学校查询分数

注:其他功能可以自己去实现,这里就不一一列出了。

4、项目小结

1.要思路清晰,分析需要哪些功能,要如何实现,才能更好的设计。
2.算法知识仍要巩固,即使是学过并进行实践,现在用的时候仍然不熟练,一定要深刻理解算法的每一步。
3.使用交互性的菜单栏方便,但是没有写入文件中,导致每一次都需要重新输入,可以在数据的存储方面进一步改进。

5、参考文献

参考文献

以及其他网络资源

6、项目源码

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值