计算机设计大赛省级赛事管理系统

任务描述

(1)赛事信息管理:从team.txt中读取参赛队伍的基本信息,用二叉排序树查找参赛队伍的基本信息,能实现对参赛队伍的增加、修改和浏览。为参赛队伍分配一个分数为60~100之间的初赛成绩,并能实现参赛队伍的成绩查询(实现基于二叉排序树的查找)。设计合适的输入输出,根据提示输入参赛队编号,查询队伍的初赛成绩,若查找成功,输出该赛事类别对应的基本信息(参赛作品名称、参赛学校、赛事类别、参赛者和初赛成绩信息)。另外,输出全部参赛队的平均查找长度ASL。

(2)决赛现场模拟:首先进行决赛分组,生成决赛秩序册,供参赛队查询。根据赛事类别将参赛队伍分配到17个决赛室(编号为1~17)。秩序册中每个决赛室的进场顺序为初赛成绩降序排列。(排序算法从选择排序、插入排序、希尔排序、归并排序、堆排序中选择一种,并为选择该算法的原因做出说明)然后,模拟决赛秩序。比赛现场会设置大型候赛区,场地中有大屏以时间线动态展示各决赛室中正在决赛的队伍,侯赛的队伍及比赛结束的队伍信息。请编写程序模拟候赛区大屏上动态展示各参赛队候场、比赛中、比赛结束的状态。

(3)决赛地图导览:为参赛者提供决赛主办地的各种路径导航的查询服务,以我校长山校区提供比赛场地为例,为参赛者提供不少于12个目标地的导航。为参赛者提供校园地图中任意目标地(建筑物)相关信息的查询;提供图中任意目标地(建筑物)的问路查询。


 

定义一个class对象Team来定义参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师等基本信息

class Team {
private:
    //基本信息
    string TeamID;  //参赛队编号
    string workname;    //参赛作品名称
    string school;  //参赛学校
    string eventCate;   //赛事类别    赛事类别共11项
    string participants;  //参赛者
    string teachers;  //指导老师
public:
    //构造Team
    Team() = default;
    Team(string id, string Workname, string schoolname, string eventcatename, string Participant, string Teacher)
    进行对参赛队伍的删减

void addteam(string id, string project,string schoolname,string event,string participants,string teacher)
{
    ofstream file("F:\\team.txt", ios::app);
    file << id <<"      #" <<project<<"     #" << "     #" <<schoolname<< "     #" <<event<< "     #"<<participants<< "     #" <<teacher<<endl;
    file.close();
}
 
void addteam2(vector<Team>& team, Team a)
{
    team.push_back(a);
}
 
//删除参赛队伍
void deleteteam(vector<Team>& team, string id)
{
    for (int i = 0; i < team.size(); i++)
    {
        if (team[i].getTeamID() == id)
        {
            team.erase(team.begin() + i);
 
            cout << "删除成功!" << endl;

根据提示输入参赛编号

插入排序的查询输出(根据学校名称查询)对于按参赛学校查询,我们需要遍历完整容器来寻找符合条件的参赛团队;对于按赛事类别查询,我们可以直接使用teamID容器根据键值查找符合条件的参赛团队,我们按赛事类别有序输出结果,可以使用插入排序算法将参赛团队按赛事类别排序后输出结果。

读取赛事组织文件中的参赛队信息,将其按照赛事类别分到各个决赛室的待叫号队列中。

先选择赛区,看看是要拿输出哪个赛区。

此时输出赛区的数字,然后输出赛区的叫号顺序,然后开始叫号后,一秒一秒地输出赛区的参赛队伍编号。

先在函数外面创建17个决赛区

把31个项目分别分成17个决赛区

先输出进场顺序

.最后模拟叫号,一秒一秒地输出赛区的参赛队伍编号,只到最后输出完毕为止。然后返回系统界面。


void eventCate_separate(vector<Team> team)
{
    vector<string> teameventCate;
    for (int i = 0; i < team.size(); i++)
    {
        if (std::find(teameventCate.begin(), teameventCate.end(), team[i].geteventCate()) == teameventCate.end())
        {
            teameventCate.push_back(team[i].geteventCate());
        }

校园导游系统
        
 

class Floyd {
private:
    unsigned n; // 结点数
    vector<vector<double>> mat; // 邻接矩阵
    vector<vector<unsigned>> pre; // 前驱结点表
    void floyd() { // Floyd算法具体实现
        for (unsigned k = 0; k < n; ++k) // 依次作为中继结点
            for (unsigned i = 0; i < n; ++i)
                for (unsigned j = 0; j < n; ++j)
                    if (mat[i][j] > mat[i][k] + mat[k][j]) { // 以中继更新其他点
                        mat[i][j] = mat[i][k] + mat[k][j];
                        pre[i][j] = k;
                    }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值