数据结构实验预习报告——计算机设计大赛赛事统计
目录
一、问题描述和基本要求
二、问题分析和任务定义
三、逻辑设计
四、物理设计
一、问题描述和基本要求
【问题描述】
参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。
【基本要求】
1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称查询,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;
5)数据存入文件并能随时查询
【设计要求】
1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。
【测试数据】
要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的稳定。
【实现提示】
假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩。
二、问题分析和任务定义
题目中没有给我们相应数据来处理,所以要自己生成。可以自己手动输入,也可以通过随机数生成。在生成时要注意以下两点:
队伍总数(teams)、学校总数(schools)和赛事项目总数(events)存在以下关系:
10*events<=teams<=6*schools
需要完成的功能:
1.照学校编号或名称查询,学校的总分输出;
2.照学校编号或名称查询,学校各项目的总分排序输出;
3.按学校编号查询学校某个项目的获奖情况;
4.可以按项目编号查询取得前三名的学校(注意并列的情况);
三、逻辑设计
1.变量的类型说明:
Team类 | 参加的项目(string) 所在学校(string)获得成绩(int) |
School类 | 学校的名称和编号(string)参赛队伍数量(int) |
2.变量说明:
schools[n] | 参加的学校数组(School类型) |
events[m] | 比赛项目(string) |
teams[i] | 参加的队伍(Team类型) |
total[m] | 各项目人数 |
rank[m][total[m]] | 每个项目的队伍排名(Team类型) |
3.函数说明:
prim() | 对处理的数据进行初始化 |
querySum(String str) | 照学校编号或名称查询,学校的总分输出 |
queryScore(String str) | 照学校编号或名称查询,学校各项目的总分排序输出 |
queryPrize(String str) | 按学校编号查询学校某个项目的获奖情况 |
queryRank(String str) | 按项目编号查询取得前三名的学校 |
main() | 主函数用于界面设计和各种函数调用 |
四、物理设计
伪代码:
- 类Team:String 项目,String学校,int 成绩,get/set;
- 类School:String 名字,String 编码,int 队伍数,get/set;
- schools[n];
- events[m];
- teams[i];
- total[m];
- rank[m][total[m]];
- prim(){初始化数据};
- querySum(String str){在teams[i]中查询本校的队伍,并加队伍的总分加起来并输出};
- queryScore(String str){从teams[i]挑选出各个项目的队伍,分别计算其总分,最后降序输出};
- queryPrize(String str){根据项目在rank[m][3]中查找获奖队伍,若不在,则未获奖};
- queryRank(String str){使用queryScore函数得到每个学校每个项目的总分,综合计算最后得出特定项目的前三学校};
- main(){设计交互界面,根据需要调用上述函数}。
开发者涨薪指南
48位大咖的思考法则、工作方式、逻辑体系杭州女装网