项目开发文档:演讲比赛管理系统
项目要求
演讲比赛管理系统,管理演讲比赛流程;比赛分为两轮,每轮比赛选手分为两组,需要抽签,然后比赛后计算平均分,选出优胜者;第二轮的优胜者即为比赛的优胜者;
逻辑功能:开始比赛,查看往届记录,清空比赛记录,退出比赛;
系统功能:
- 界面交互:显示界面,退出界面,菜单选择
- 比赛功能:初始化比赛中的变量,创建选手,抽签,比赛,显示结果
- 数据库读写:保存记录,加载记录
- 其他功能:查看比赛记录,清空比赛记录
项目配置
开发环境:Windows + VS2019
语言:C++
开发流程
- 首先还是一样,设计系统,如果按照面向对象思想;我们直接创建一个系统管理类,然后将系统的功能封装在这个类里;
- 然后比赛需要选手,我们创建一个选手类,选手类的记录选手的编号,以及两轮比赛的分数,这里两轮比赛的分数,直接用一个size为2的int数组存储;
- 先考虑界面交互功能,我们还是一样设计一个显示界面和退出界面的函数,然后再利用switch结构实现菜单选择;
- 然后比赛功能是核心;系统管理类控制比赛,所以需要封装比赛的信息(包括选手容器,比赛轮数,map<id,score>);
- 之后就是要初始化这些比赛信息,然后创建选手,选手信息有两个(编号和分数),信息要存入相关的容器中
- 抽签功能,用到random_shuffle(),比赛进行打分的时候,利用deque容器来去掉最高分和最低分,然后利用map存储<分数,编号>来自动排序,选取前几名;
- 显示结果,直接遍历map<id, score>来输出结果;
- 数据库读写功能,就是之前的同步数据,和加载数据,根据文件情况的不同,加载数据的方式不同;
- 为了查看往届记录,我们在系统管理类 定义 map<round_num, data>这个data实际上是字符串数组,我们用vector
容器存储; - 系统和文件一定要时刻同步;清空比赛记录是直接删除文件,所以我们要把文件的信息同步到系统,利用加载函数;大部分函数都是系统操作,然后把信息同步到文件,利用保存函数;
版本1
官方代码:
- 利用STL里的容器 存储 数据,利用STL里封装好的算法,简单实现抽签,去掉最高分最低分,取前几名,清空的操作;节省代码量
- 利用构造函数初始化系统,里面包含了初始化系统的变量,创建选手,和加载数据(同步数据库)
项目开发文档:演讲比赛管理系统
https://vendestine.com/heima-speech-system