一、问题及要求
【问题描述】 参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。
【基本要求】 1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称查询,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;
5)数据存入文件并能随时查询
【设计要求】 1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。
【测试数据】 要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的稳定。
【实现提示】 假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩。
二、需求分析
1、所需功能
(1)数据保存
学校名称(ID)、队伍名称、参加项目、所得分数
(2)数据统计
- 学校名称(ID)、队伍名称、该队伍参加项目、该队伍在该项目所得分数
- 各个项目的获奖情况(4种情况:一等、二等、三等、未获奖)
(3)数据查询
- 输出学校总分
- 根据学校编号或名称输出学校的总分、各项目的总分排序(降序)
- 根据学校编号或名称查询学校某个项目的获奖情况
- 根据项目编号查询取得前三名的学校;
2.类的建立
- School类:含括学校ID,学校名称,学校参赛队伍个数,总分等字段
- Team类:含括所属学校ID,队伍名称,参加项目和所得分数等字段
- Event类:含括一个存储Team类对象的集合表示参加该项目的队伍以及项目
- Function类:其内容涉及一个存储所有参赛项目的集合events和一个存储所有参赛学校的集合 schools以及各项查询功能
3.算法函数
- 项目添加函数:用于添加相应的项目
- 学校添加函数:用于添加参赛学校
- 队伍添加函数:用于添加参赛队伍,该函数为主要添加函数,若在添加过程中发现不存在当前所要添加的项目或学校,则在执行结果命令行显示添加错误及原因,若学校参赛队伍达到上限,同上
- 学校总分计算函数:计算某学校的总分
- 学校总分排名的函数:按总分进行降序排序
- 学校的项目总分排名函数:返回一个字典集合,内含项目id和项目总分
- 单个项目获奖情况函数:对项目内的队伍按分数进行排名,索引为0,1,2,3; 0,1,2即为前三; 3则代表未获奖
- 学校各项目获奖情况函数、
4.主要流程
![](https://i-blog.csdnimg.cn/blog_migrate/5950401ccc9207796ea81007308ede24.png)
三、重难点
- 数据存储于文件中
- 数据从文件中调用
- 数据更新后重新写入另一个文件中
四、编程语言
java
五、开发工具
IDEA