2021【3 】3
ISSN:2661-3719(Print); 2661-3727 (Online) 计算机系统网络和电信 73
基于 QT 的比赛流程管理系统设计与实现
张小龙 白俊鸽
成都锦城学院计算机与软件学院 四川 成都 611731
【摘要】在生活中,比赛活动随处可见,采用传统手工方式对比赛进行管理效率较低,本文以 QT 为框架,使用 MySQL 作为 后台数据库,结合比赛流程管理的基本需求设计并实现的比赛流程管理系统可为管理者提供赛前、赛中以及赛后管理功能,
可极大地提高管理效率。
【关键词】比赛流程管理系统; QT;MySQL
1 引言
在实际社会生活中,比赛评分活动随处可见,比如:
歌手比赛、论文答辩、人员选举、评分表决等活动[1]。 传统手工进行信息处理,完成如此多的数据处理,十分 耗费人力物力,并且准确性不高,极易出错。而且时效 性也很低,从而直接影响工作质量与效率,与当今信息 时代的信息管理要求相差甚远[2]。本文设计并实现的这 款比赛流程管理系统可让比赛管理者比较方便且高效地 对比赛进行管理。
2 开发环境介绍
本系统以作为 QT 框架进行开发,使用 MySQL 作为后 台数据库保存比赛数据。
2.1QT 概述
QT 是一个跨平台的 C++ 图形用户界面应用程序框架,
为应用程序开发者提供建立图形用户界面的所需功能。
QT 易于扩展,并且允许真正地组件编程。此外,QT 还具 有优良的跨平台特性、面向对象以及丰富的 API 等优势。
2.2MySQL 数据库概述
MySQL 是一个关系型数据库管理系统,关系型数据 库是将数据存储在不同的数据表中,而不是将所有的数 据放在一个大的存储库中,这样可以提高速度并改善灵 活性。作为一款关系型数据库管理系统,拥有良好的适 应性,且由于其多线程的特点,可以最大化地使用中央 处理器的资源,减少服务器的负荷[3]。MySQL 使用 C 和 C++ 编写,并使用了多种编译器进行测试,保证源代码 的可移植性。
3 系统分析与设计
3.1 需求分析本比赛流程管理系统的主要功能基于比赛流程而实 现,在一般情况下可将比赛分为赛前、赛中和赛后 3 个 阶段进行管理。赛前管理包括导入选手和评委名单、选 手分组和抽签,赛中管理包括评委打分、统计选手成绩 和选出晋级选手 / 获胜选手,赛后管理包括保存 / 导出 选手成绩、查看历届比赛记录和清除比赛记录。
如图 1 所示:
图 1 系统功能结构图 3.2MySQL 数据库设计
3.2.1 数据表设计
本系统使用 MySQL8.0 数据库,应用的数据库中包含 选手姓名、评委姓名和选手成绩 3 类数据表,其中选手 和评委信息数据表仅包含姓名字段。赛前需将选手和评 委信息导入数据库,赛后在数据库中创建选手成绩表。
3.2.2 数据库功能设计
在整个系统中,对数据库的操作通过所创建的数据 库类进行设计实现,由于在整个系统中的多个界面中都 会涉及到对数据库的操作,所以对该数据库类采用单例 设计模式以减少其频繁创建销毁。操作数据库的场景主 要包含导入选手和评委名单、保存选手成绩、查看历届 选手成绩以及清除比赛记录。根据这些功能,对数据库 的操作可总结为创建数据表、查询数据库中的数据表、
查询表数据、增加表数据以及删除表数据。
查询数据库中的数据表和查询表数据功能主要通过 执行相应的查询语句,创建数据表功能通过执行创建表 语句,增加表数据功能通过执行插入数据语句,删除表 数据功能通过执行删除语句。
3.3 界面设计
本系统的界面主要包含 4 个界面,分别为系统开始 界面、赛前管理界面、赛中管理界面、历届比赛记录界面。
74 Computer system network and elecommunications 如图 2 所示:
图 2:系统界面图 3.3.1 系统 开始界面设计
系统开始界面主要包括 3 个按钮,分别是进入系统,
退出系统以及往届记录。3 个按钮均使用普通按钮控件,
点击进入系统按钮进入赛前管理界面,点击往届记录按 钮查看历届比赛数据,点击退出系统后退出系统。
3.3.2 赛前管理界面设计
赛前管理界面主要包括 5 个输入框,4 个按钮。5 个 输入框分别用于输入比赛名称、显示选手人数、显示评 委人数、输入每组选手人数以及输入每组晋级人数,均 使用单行文本编辑控件。4 个按钮分别用于导入选手名 单、导入评委名单、返回系统开始界面以及开始比赛,
其中导入选手名单和导入评委名单按钮使用工具按钮控 件,返回系统开始界面和开始比赛按钮使用普通按钮控 件。
3.3.3 赛中管理界面设计
赛中管理界面主要包括 4 个表格和 5 个按钮。4 个 表格分别用于显示选手信息、抽签顺序、选手成绩、选 手最终排名 / 晋级选手,均使用表格控件。分别用于显 示选手编号和分组前的信息,显示选手抽签后的出场顺 序,显示评委打分完成后的各个选手的成绩以及用于显 示选手排名 / 晋级选手 / 获奖选手。5 个按钮分别为创 建选手、抽签、评委打分、保存、进入下一轮 / 返回按钮,
保存按钮只在比赛的最后一轮显示,进入下一轮按钮在 比赛的最后一轮显示为返回按钮,其中保存按钮使用工 具按钮控件,其余均使用普通按钮控件。
3.3.4 历届比赛记录界面设计
历届比赛记录界面包括 2 个表格、2 个按钮。2 个表 格分别显示数据库中历届比赛的数据表名和对应数据表 的数据,均使用表格控件。2 个按钮分别为返回开始界 面和清空所选择数据表的数据,均使用普通按钮控件。
4 功能实现
4.1 导入选手和评委名单功能
导入选手和评委名单分为 3 种方式,分别为从数据 库中导入、从工作表导入和手动输入,通过点击导入选 手 / 评委按钮显示出下拉菜单,点击下拉菜单中的选项 进行选择名单导入的方式。
从数据库中导入功能实现:选择从数据库中导入选 项后,通过显示数据表方法将数据库中的选手 / 评委表
显示到表格中,选择打开相应表格后调用读取表数据方 法,读取数据表中的数据。
从工作表导入功能实现:选择从工作表导入选项后,
调用导入工作表方法,在文件对话框以选择相应的工作 表,再通过 xlsx 库中的读取方法读取工作表中的选手 / 评委姓名。
4.2 选手编号和分组功能
选手编号功能的实现是于创建选手方法中实现。首 先创建一个编号容器,用于保存根据选手数量所创建的 编号,随后使用随机打乱方法,将编号容器打乱,再将 编号赋值给每位选手。
选手分组功能于分组方法中实现。首先所有选手根 据导入选手 / 评委界面输入的每组人数进行随机分组,
分组完成后将每个组的信息显示到相应表格中。
4.3 选手抽签功能
选手编号功能于抽签方法中实现。首先使用随机打 乱方法,打乱每组选手,随后将每组打乱后的选手信息 显示到相应表格中。
4.4 评委打分和统计选手成绩功能
评委打分和统计选手成绩功能于打分方法中实现。
首先创建 map 容器,以选手成绩为关键字,选手为值,
并按照分数降序排列,评委打分完成后,通过累加求和 方法计算出该选手的总成绩,再将总成绩除以评委数得 出平均成绩,最后依次将每位选手以及其平均成绩放入 所创建的容器。
4.5 选出晋级选手 / 获胜选手功能
选出晋级选手 / 获胜选手功能的实现主要通过按照 在设置赛前管理界面设置的选手获胜规则,选出中分数 排名靠前的选手,晋级下一轮,若为决赛,则选出的选 手直接成为本届比赛获胜者。
4.6 保存 / 导出选手成绩功能
保存比赛数据到数据库的功能主要于保存数据方法 中实现,在此方法中主要包括根据比赛名称创建本届比 赛的数据表,再将比赛的每轮选手成绩以及最终获胜选 手成绩保存到数据库中。
导出比赛数据的功能于保存数据到工作表方法中实 现。此方法主要包括创建工作表,再通过 xlsx 库中的写 入方法,将每轮比赛的选手成绩以及最终获胜选手成绩 写入工作表。
4.7 查看历届比赛记录和清除比赛记录功能
查看历届比赛记录功能主要分为显示数据库中的历 届比赛数据表和查看数据表中的数据两部分。显示历届 比赛数据表功能首先通过显示数据表方法获取数据库中 的历届比赛数据表,再调用设置数据模型方法将所获取 到的数据表显示到相应表格中。查看历届比赛数据表通 过双击表格中的历届比赛数据表名,通过读取表数据方 法获取选中数据表中的数据,再调用设置数据模型方法 将数据显示到相应表格中。
清除比赛记录功能的主要于清除表数据方法中实现,
选中所要清除的数据表后,点击清除按钮后可完成清除。
5 结束语
本文介绍了如何使用 QT 开发一款比赛流程管理系 统,该比赛流程管理系统功能较为齐全,操作简单,结
2021【3 】3
ISSN:2661-3719(Print); 2661-3727 (Online) 计算机系统网络和电信 75
构比较清晰,适合于比赛规则和流程相对较简单的比赛,
但相对于一些规则较为复杂的比赛还存在许多不足。在 后期的改进方面,将着重于根据更加完整的比赛流程以 完善系统功能,以适用于规则复杂的比赛。
【参考文献】
[ 1] 刘冶 , 李娟 , 白兰 , 等 . 基于 Android 平台的评 委打分系统设计与实现 [J]. 福建电脑 ,2017,33(4):47- 48.
[2] 刘宇君 . 基于 B/S 模式的高校运动会综合管理 系统设计与实现 [J]. 电子商务 ,2016(No.199):95-96.
[3] 董 尊 骅 . 基 于 SSM 框 架 的 大 米 原 料 品 质 指 标 数 据 库 平 台 的 设 计 与 实 现 [J]. 南 方 农 机 ,2021(v.52;No.375):9-10.