中国计算机设计大赛赛事统计预习报告
文章目录
- 一、问题描述和基本要求
- 二、问题分析和任务定义
- 1.数据结构的选取
- 2.问题分析
- 3.功能分析
- 三、逻辑设计
- 1.变量的类型说明:
- 2.变量说明
- 3.函数说明
- 4.抽象数据结构
- 四、物理结构
- 1.存储结构
- 2.模块设计
- 3.函数设计
- 4.算法流程图
- 五、测试数据
- 六、具体函数实现
一、问题描述和基本要求
【问题描述】
参加计算机设计大赛的n个学校编号为1n,赛事分成m个项目,项目的编号为1m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。
【基本要求】
1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;
5)数据存入文件并能随时查询
【设计要求】
1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,可以完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。
【测试数据】
要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的稳定。
【实现提示】
假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩.
二、问题分析和任务定义
1.数据结构的选取
本项目使用结构体作为数据结构,分别用学校(school)、团队(team)、项目(project)来表示比赛的相关信息。
2.问题分析
本题目中,并没有给我们相关的比赛信息,所以需要我们自己去输入或用随机数生成,但要能保存在数据里,留待下一次的取用,同时要注意题目对相关数量的要求。
项目project尽量在3-10个左右
学校school要能保证使每个项目至少10只队伍
团队team要保证每个学校不能超过六个
注意每个team只能选一个项目
3.功能分析
(1)能够随时添加相关信息;
(2)照学校编号或名称查询,学校的总分输出;
(3)按学校编号查询学校某个项目的获奖情况;
(4)可以按项目编号查询取得前三名的学校(注意并列的情况);
(5)可以查询任意项目的总分;
三、逻辑设计
1.变量的类型说明:
school类 | name(名字)、length(参赛队伍数量)、sum(学校总分) |
---|---|
team类 | score(团队得分)、jud(参加的项目) |
project类 | score(项目得分)、sum(项目总分) |
2.变量说明
sch[n] | 参加比赛的学校(School类型) |
---|---|
te[i] | 参加的队伍(Team类型) |
pro[m] | 赛事项目(project类型) |
3.函数说明
readdata() | 读取文件里的比赛信息 |
---|---|
input() | 添加新的参赛学校和队伍 |
readdata() | 读取文件里的比赛信息,通过fstream来完成 |
schoolsum() | 计算学校总分排名 |
evschoolsum() | 按照学校编码查询总分 |
prothree() | 按项目编号查询取得前三名的学校 |
evprosum() | 计算项目总分 |
schoolaw() | 按学校编号查询学校某个项目的获奖情况 |
4.抽象数据结构
ADT 计算机设计大赛赛事统计Data学校列表schools<School>项目列表projects<Project>队伍列表teams<Team>Operation界面设计输入:无功能:输出主菜单交互界面输出:主菜单交互界面读取数据输入:无功能:读取文件中的比赛信息输出:无添加学校/队伍输入:学校/队伍信息功能:将输入的信息存入对应的结构体数组中输出:无输出学校/项目总分输入:无功能:输出学校/项目总分输出:学校/项目总分输出任意学校的总分 输入:学校编号功能:根据编号输出学校总分输出:学校总分输出所有学校总分,总分降序输出输入:无功能:降序输出所有学校总分输出:所有学校总分通过学校编号查询各项目总分降序输出输入:学校编号功能:查询该学校所有项目分数,并且降序输出输出:学校所有项目分数 按学校编号查询学校某个项目的获奖情况输入:学校编号和项目编号功能:查询该学校对应项目的获奖情况输出:该学校对应项目的获奖情况按项目编号查询取得前三名的学校 输入:项目编号功能:查询该项目取得前三名的学校输出:该项目取得前三名的学校编号退出程序输入:N功能:退出程序输出:无
end ADT
四、物理结构
1.存储结构
1.定义结构体school类和team类,并在school类中存放team类数组
2.定义结构体project类表示项目
2.模块设计
1.主函数模块
2.读取数据和输入模块
3.计算总分降序输出模块
4.获得项目排名模块
3.函数设计
伪代码:
1.school类:name(名字)、length(参赛队伍数量)、sum(学校总分);
2.team类: score(团队得分)、jud(参加的项目);
3.project类:score(项目得分)、sum(项目总分);
4.sch[n];
5.te[i];
6.pro[m];
7.readdata(){读取文件里的比赛信息,通过fstream来完成}
8.input(){添加比赛信息}
9.evschoolsum(){查询各个学校的总分,并降序输出}
10.schoolsum(){按编号查询学校总分}
11.prothree(){按项目编号查询取得前三名的学校}
12.evprosum() {计算项目总分 }
13.schoolaw(){按学校编号查询学校某个项目的获奖情况}
4.算法流程图
五、测试数据
六、具体函数实现
1.schoolsum()
void schoolsum() //根据编号查询学校总分
{int a;cout << "目前共有" << n << "个学校参赛" << endl;cout << "请输入需要查询总分的学校编号(1-" << n << ")" << endl;while (true){cin >> a;if (!cin.good()||a<1 || a>n)cout << "输入编号有误,请重新输入" << endl;else break;cin.clear();cin.ignore(1024, '\n');}cout << "该学校的总分为" << sch[a - 1].sum << endl;
}
2.evschoolsum()
void evschoolsum() //各学校总分,降序输出
{int a[100];int b[100];for (int i = 0; i < n; i++)a[i] = sch[i].sum;sort(a, a + n); //对数组排序for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (sch[j].sum == a[i])b[i] = j;}}cout << "学校编号" <<" " << "学校名称" << " " << "总分" << endl;for (int i = 0; i < n; i++) //降序输出{cout << " " << b[n-i-1]+1 <<" " <<sch[b[n-i-1]].name<< " " << a[n - i - 1] << endl;}
}
3.evprosum()
void evprosum() //项目总分
{cout << "项目" << " " << "总分" << endl;for (int i = 0; i < 6; i++){cout << " " << i+1 << " " << pro[i].sum << endl;}
}
4.scevprosum()
void scevprosum() //根据学校编号查询各个项目得分
{int x;cout << "请输入所需要查询的学校编号(1-" << n << ")" << endl;while (true){cin >> x;if (!cin.good()||x<1 || x>n)cout << "输入编号有误,请重新输入" << endl;else break;cin.clear();cin.ignore(1024, '\n');}int a[20];int b[20];for (int i = 0; i < sch[x - 1].length; i++)a[i] = sch[x - 1].te[i].sc;sort(a, a + sch[x - 1].length); //对数组排序for (int i = 0; i < sch[x - 1].length; i++){for (int j = 0; j < sch[x - 1].length; j++){if (sch[x-1].te[j].sc == a[i])b[i] = sch[x - 1].te[j].jud;}}cout << "项目编号" << " " << "总分" << endl;for (int i = 0; i < sch[x - 1].length; i++) //降序输出{cout << " " << b[sch[x - 1].length - i - 1] <<" " << a[sch[x - 1].length - i - 1] << endl;}
}
5.prothree()
void prothree() //根据编号查询项目的前三名
{int x;int y = 0;int a[100];int b[3];cout << "请输入需要查询排名的项目编号(1-6)" << endl;while (true){cin >> x;if (!cin.good()||x < 1 || x>6)cout << "输入编号有误,请重新输入" << endl;else break;cin.clear();cin.ignore(1024, '\n');}for (int i = 0; i < n; i++)a[i] = pro[x-1].score[i];sort(a, a + n);for (int i = n-1; i > n-4; i--){for (int j = 0; j < n; j++){if (pro[x-1].score[j] == a[i])b[y++] = j+1;}}if (b[0] == b[1]){cout << "该项目的第一名为: 学校" << b[0] <<"和学校"<<b[1]<< endl;cout << "该项目的第二名为: 学校" << b[1] << endl;}else if (b[1] == b[2]){cout << "该项目的第一名为: 学校" << b[0] << endl;cout << "该项目的第二名为: 学校" << b[1] << "和学校" << b[2] << endl;}else if(b[0]==b[1]==b[2]){cout << "该项目的第一名为: 学校" << b[0] << "和学校" << b[1] <<"和学校"<<b[2]<< endl;}else{cout << "该项目的第一名为: 学校" << b[0] << endl;cout << "该项目的第二名为: 学校" << b[1] << endl;cout << "该项目的第三名为: 学校" << b[2] << endl;}
}
6.schoolaw()
void schoolaw() //查询任意学校任意项目获奖情况
{int a;int b;int jud = 0;cout << "请输入所需要查询的学校编号(1-" <<n <<")" << endl;while (true){cin >> a;if (!cin.good()||a<1 || a>n)cout << "输入编号有误,请重新输入" << endl;else break;cin.clear();cin.ignore(1024, '\n');}cout << "请输入需要查询的项目编号(1-6)" << endl;while (true){cin >> b;if (!cin.good()||b < 1 || b>6)cout << "暂无该编号项目,请重新输入" << endl;else break;cin.clear();cin.ignore(1024, '\n');}int c[100];for (int i = 0; i < n; i++)c[i] = pro[b-1].score[i];sort(c, c + n);for (int i = n - 1; i > n - 4; i--){if(pro[b-1].score[a-1]==c[i]){cout<<"该学校在该项目中获得第"<<abs(i-n)<<"名"<<endl;jud = 1;break;}}if (jud == 0)cout << "该学校在该项目中没有获奖" << endl;
}
以上代码均能ac。
中国计算机设计大赛赛事统计预习报告相关推荐
- 数据结构课程设计预习——项目1:中国计算机设计大赛赛事统计
项目1: 中国计算机设计大赛赛事统计 问题描述 参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项,项目的编号为1-m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表.( ...
- 预习:中国计算机设计大赛赛事统计
项目: 中国计算机设计大赛赛事统计 一.问题描述 参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项,项目的编号为1-m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表. ...
- 数据结构课程设计:中国计算机设计大赛赛事统计
目录 项目1:计算机大赛赛事统计 一.问题分析和任务定义 二.逻辑设计 数据结构定义 抽象数据类型 三.物理设计 存储结构 结构框架 项目1:计算机大赛赛事统计 一.问题分析和任务定义 (1)每个项目 ...
- 项目一:中国计算机设计大赛赛事统计
目录 一.问题分析和任务定义 [问题描述] [基本要求] [设计要求] [测试数据] [实现提示] 二.数据结构的选择和概要设计 [所需数据] [约束条件] [实现功能] [数据结构的选择] 三.详细 ...
- 数据结构课程设计——中国计算机设计大赛赛事统计
[问题描述] 参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表. [基本要求] 1)每个比赛项目至 ...
- 数据结构课程设计——项目1:中国计算机设计大赛赛事统计
1.问题描述 参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表. 2.基本要求 1)每个比赛项目至 ...
- 项目1:中国计算机设计大赛赛事统计
[问题描述] 参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表. [基本要求] 1)每个比赛项目至 ...
- 中国大学生计算机设计大赛赛事管理系统——预习
一.问题定义描述及要求 1. 问题描述 实现赛务相关的数据管理及信息服务,该系统能够为省级赛事管理解决以下问题: 1)能够管理各参赛队的基本信息(包含参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛 ...
- 中国计算机设计大赛来啦!用飞桨驱动智慧救援机器狗
中国大学生计算机设计大赛是我国高校面向本科生最早的赛事之一,自2008年开赛至今,一直由教育部高校与计算机相关教指委等或独立或联合主办.大赛的目的是以赛促学.以赛促教.以赛促创,为国家培养德智体美 ...
最新文章
- 给Linux系统/网络管理员的nmap的29个实用例子
- element-ui介绍
- POJ - 3294 Life Forms(二分+后缀数组)
- 移动开发者选项手机如何打开真机调试模式
- 使用ASP.NET Core 3.x 构建 RESTful API - 4.1 面向外部的Model
- java的集合应用_Java之集合类应用总结
- eclipse maven打包_maven的通俗易懂的用法
- 阿里巴巴在宁成立江苏总部
- C#不同窗体间通信,数据传递
- mathematica 如何在数组中等间隔插入元素
- Openbox自定义键盘(lxde-rc)
- ISO27001(BS7799/ISO17799)国标
- php ueditor mysql_PHP Ueditor 富文本编辑器
- [论文笔记] 视频广告理解的多模态框架
- 嵌入式开发中三种操作系统的分析与比较
- 国内科技巨头的区块链布局:BAT多领域布局,迅雷领跑主链
- HiveSQL percentile和percentile_approx 函数计算千分数
- 【python】文件读取写 open的方式with的方式 异常报错处理
- 系统动力学专拓考试重点总结
- keil出现no source“: Error: command-line: #564: cannot open解决方法
热门文章
- word 章节、图片(带章节)、公式自动编号
- 云计算学习 - 基本概念
- 人工智能、数据挖掘、机器学习和深度学习之间,主要有什么关系?
- 每天巧得支付宝大额红包,以后再也不用天天“褥羊毛”了,可以天天“吃羊肉”了哦!
- 这位新同事又矮又重,凭啥是阿里P8?
- eclipse光标变成黑色闪烁方块解决方案
- cfg桩设备型号_cfg桩 锚杆钻机型号大全
- 深度学习-07(图像分类、常用数据集、利用CNN实现图像分类、图像分类优化)
- 机器学习算法(十三):word2vec
- LaTex 之 TexLive 2020 + TexStudio 的安装及其他软件推荐