杨友法 郭城 汪浩源 许孝整 黄银河 彭凯 章力成 林学志
关键词:SpringBoot;Vue;学科竞赛系统
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2023)10-0054-05
0 引言
学科竞赛不仅是提高大学生综合能力和专业技术的重要手段和方式,同时更能弥补传统日常教学中的许多缺点和不足。比如在日常的教学中通过教师长时间的课堂授课,容易影响大学生对学科知识的探索欲望。但通过竞赛这种新颖的第二课堂方式更能吸引学生的学习兴趣。近几年来,随着各高校开始推动学科竞赛的发展,学生报名人数越来越多,像这样线下的方式使得组织和管理变得尤为繁重,这就间接要求组织者在组织管理方面能够有一套解决这些不足的管理方案,所以,研发一个学科竞赛管理系统就变得尤为重要。本文提出了以MySQL为数据存储,Vue 和SpringBoot 为技术支撑设计并实现具有一体化、信息化的学科竞赛管理系统,管理者只需要通过线上对学科竞赛进行宣传,对学生的报名进行审核,对比赛结果进行通告,对竞赛资金报销进行核查,就可以很好地弥补传统竞赛方式中的缺点和不足,减轻工作人员的工作量,提高竞赛数据的准确性,推动国家人才教育机制的进一步改革,更能提高学生报名的积极性。让学科竞赛变得更加规范、更加信息化。
1 系统总体设计
参照学科竞赛管理系统软件的研发目标、项目可行性以及学科竞赛的具体运行流程,从中能够分析出学科竞赛管理系统的需求很是多样化。根据需求文档,竞赛管理系统软件总体可分为以下几大模块,五个主要的竞赛系统模块功能图如图1所示。
1.1 管理员及学生用户模块
自定义模块能否设计得合理、科学,从某种角度来看会阻碍整个管理系统的免费推广和更好的用户体验。超级管理员有权对注册后正在系统中的学生的相关信息进行管理,这里的相关信息涵盖了学生个人的基础信息,学生的比赛信息以及学生所涵盖的指导老师基础信息等。完善的数据管理能够为数据的统计分析结果给予更有力的内容支撑[1]。
高校学生在浏览器搜索该系统注册后,能够使用该学生在学校的账号密码登录该系统。管理人员如忘记密码,可参考管理系统登录界面忘记密码提示找回密码。学校学生注册后所有信息都将安全地保存在系统的数据库里。超级管理员开通管理系统后,学校学生可在线预报名学科竞赛。如不在指定时间范围内,可自行修改本校学生的基础信息和竞赛报名相关信息。学校的学生是管理系统选择的基本元素,自定义模块有更好的用户体验将决定管理系统的系统稳定性和免费推广的容易程度。
1.2 用户信息模块
用户模块分别涵盖了对学校和专业的相关数据管理。对学校的数据管理,其主要功能是对学校的相关信息进行管理。对后来管理系统中可能会有多所高校信息以及在它们之间的竞赛选拔情况,该系统都提供了较为强大了功能支持。对各高校的数据库数据进行分类管理和详细分析,从而分析得出精确的竞赛数据。对于专业的数据管理,主要内容是专业方面的信息管理。每个专业都有自己独有的特色,每个专业的具体情况也不完全相同。系统中对专业信息管理定制模块进行了针对性的设计和制作,能更好地让用户方便快捷地选出自己心仪的专业。
1.3 比赛处理模块
该模块涵盖了竞赛工程项目管理、学校学生报名后的考试信息管理和竞赛官网公告信息管理、竞赛工程项目管理。在学科竞赛的用户管理中,应当需要设置竞赛和管理考生的工程,竞赛工程项目管理还涵盖对公共信息的管理。学科竞赛借助這些相关信息的分级分类管理,有利于竞赛数据的分析和统计,更有利于学校学生在不同竞赛项目之间进行比较和分析。
学生学籍信息管理模块中能满足竞赛信息化管理的要求。如果本校学生在学科竞赛报名过程中仍存在遗漏,系统管理员可修改本校学生报名考试相关信息,在原有基础上进行完善、删除等操作方式。在赛事公告栏目中,可以快捷地对公告信息进增、删、改、查的操作,实现信息管理的高效化[2]。
1.4 赛事得分模块
此模块涵盖了对竞赛成绩的管理和对数据的精确分析。在对成绩数据的管理中包括增加、修改、删除、查询考生参赛后的成绩等操作。
2 项目设计目标及原则
2.1 关于大学生竞赛管理系统的基本要求
1)功能要求:分为系统首页、个人中心、学生、竞赛级别、指导老师、赛事预告、竞赛信息管理等。
2)性能要求:能够跨系统登录和操作管理系统,能够保证无差别、更方便的操作。
3)安全方面:用户必要通过注册然后登录系统,并且不同的用户给予不同的权限限定。
2.2 开发目标
1)实现管理系统的规范化和自动化
2)减少管理人员对系统的维护和管理
3)方便用户对比赛进行查询和修改操作
4)操作界面便捷高效,满足用户多样化的需求
3 系统数据库设计
3.1 体系研发应用环境
1)以JavaWeb技术为支撑的学科管理系统
2)采用B/S模式的架构模式
3)数据库技术采用MySQL存储技术
3.2 MySQL 数据库介绍
MySQL是一款关系型数据库,它有着自己独特的优势,这些优势使它成为目前最流行的关系型数据库之一。MySQL与其他关系型数据库相比有着体积小,速度快的特点,其次是它符合本次该系统开发的最好选择,成本低、开源这些特点,也是选择它的主要原因。
3.3 系统功能模块设计
1)管理员和学生模块
该软件涵盖了系统管理员和高校学生用户模块两部分,第一部分是系统管理员部分,第二部分是高校学生用户部分。
系统管理员,首先确认在登录界面,系统管理员能够借助输入账号和密码登录管理系统后台。如果忘记了账号和密码,能够选用管理员权限忘记密码功能,帮助找回密码。其中一种形式是在系统菜单中,密码找回功能非常强大。输入账号、出生日期、身份证号码等相关信息找回密码。系统管理员登录管理系统成功后,系统管理员能够在管理系统菜单中能够一目了然地看到系统管理员所拥有的权限和功能,系统管理员是整个管理系统功能权限最齐全的管理员,而对于不同的管理员则掌握着整个系统模块不同的权限。三级系统管理员管理权限最低,管理系统的权限最少。但有权管理来自其他系统管理员的信息,其中包含如何改进、修改和删除与系统管理员有所关联的信息。从某个角度说,他们的权限高于其他的任何功能,在整个管理系统后台,由不同的管理员拥有的不同权限一起维护整个系统后台和系统的可用性、可扩展性。
在校学生用户在登录界面可以进行注册、登录、找回密码等操作。在校学生在管理系统的登录界面进行注册。注册过程中,学生一定要填写学生账号、出生日期、身份证号、学生籍贯、学校位置等相关信息,以及与学生申请有所关联的信息。
以学生账号和密码的方式登录竞赛管理系统。在登录成功后,学生可以根据自己意愿修改个人的信息。学生可以自主选择适合自己的竞赛项目,在一定的时间内,学生也能够修改学科竞赛项目或取消。如果学生在登录找回系统时忘记了账号和密码,能够直接输入自己的账号、出生日期、身份证号等相关信息,借助系统在线找回密码。最后一个是学校信息管理,在学校计算机信息管理系统的通用菜单中,系统管理员添加学校相关信息,也可修改和删除学校信息[3]。
在专业信息管理中,管理员可以根据学生的专业增加相关的专业信息,学生可以使用查询操作,使得专业信息展示在当前页面中。在页面中展示的每一条记录,管理员都可以进行增删改查等操作。在之前管理员设置好的专业信息后使得学生在报名时只能根据自己专业来选择跟本专业相关联的不同的竞赛项目。
2)项目竞赛管理模块
该模块涵盖了学生竞赛项目信息、各高校学生参赛项目信息和公告信息管理三个部分。
在系统管理员系统运行的具体过程中,在管理学科赛事信息时,能够完善学科赛事的详细信息,所有学科赛事的对比能够借助公告展示出来。竞赛项目能够被相应地修改或删除。在竞赛项目信息管理的管理中,系统管理员能够随时查看各个竞赛项目的学校报名情况,也能够在后台中为学生报名学科比赛。在校生注册系统后,系统管理员也能够删除与在校生注册有所关联的信息。在学科竞赛管理系统软件的登录账号首页,充分予以了内容展示框,用于展示学科竞赛活动的宣传信息。系统管理员可以编辑学科竞赛的公告信息,其中包括官网公告中应展示的学科竞赛报名考试科目、学科竞赛报名时间等相关信息,系统公告相关管理员在将编辑好的公告发布到官網后,学生可以在官网查看相关的比赛的具体内容来进行比较以选择适合自己的竞赛项目,学生也可以通过公告官网来查看竞赛结果。
3)成绩管理模块
成绩管理模块涵盖了竞赛成绩数据和对成绩数据的分析结果展示两个部分。学科竞赛管理系统,将竞赛学生的成绩导入检索系统,在成绩管理系统模块中,可查询学生竞赛成绩,选择不同的专业,能够查看不同专业的竞赛数据。
3.4 数据库表的设计
数据库表存储了竞赛管理系统软件中的数据库数据,这是对学科竞赛数据进行数据库数据进行了可视化分析,以下就是对管理系统软件中存取数据库表的设计与制作[4]。
一般情况下,往往根据E-R图的基础知识,将具体的概念分析模型导出到三维图,然后对三维图进行标准化,得到数据库表。
1)学校学生相关信息表如图2所示,命名为“stu?dent”。一方面,该表用来存储学生学号、姓名、出生年月日、所在学校、考试科目、年级等信息。在表结构中,id的值是参照结合xkjs_stud表中stu_id的值,name 的值是xkjs_stu表中stu_name的值,project的值来自字段project_name 的值表名kj_project,年值来自xkjs_year表的years字段值,月值来自xkjs_month数据表中的month字段的值。
2)公告信息表具体情况表的基本结构如图3所示,并更名为“gonggao”。“gonggao”的含义是指一方面存储广告主题、官网广告具体内容等相关信息。
3)项目表的基本结构如图4所示,命名“xkjs_proj?ect”。xkjs_project表存储系统管理员名称、不同年份、月中、学科考试科目分数等信息。
4)学校信息表具体表结构如图5 所示,命名为“school”,school表主要存放学科竞赛管理系统所属的学校信息。
5)管理员信息表具体表结构如图6所示,命名为“user”,user表主要存放管理员用户名、密码等信息。
4系统设计
4.1 关键技术
本系统可以使用多种浏览器自行注册登录,在开发时采用了idea2022,以JDK8作为开发工具包,数据库采用的是市面上最流行的MySQL,服务器仍然使用的是tomcat,前端静态资源采用Nginx进行部署,将前后端分离的优势进行了最大化,项目开发环境部署简单且易行[5]。
该系统设计主要使用SpringBoot+Vue进行整合开发,后端主要利用了三层架构,包含业务逻辑层,实体层以及数据访问层。前端Web层用于静态资源的展现和支持,Spring负责实体bean的业务逻辑处理,My?Baits负责数据库和数据访问层的交接。通过Spring?Boot+Vue前后端分离的架构,可以完美地使前端和后端代码分离开来,对开发人员的门槛降低了很多,前端是前端,后端是后端招聘模式,服务端和客户端进行了分离,很好地解决了代码的耦合度,方便以后对系统进行维护和优化[6]。
4.2 部分模块实现
竞赛模块包括竞赛模块、新闻模块、通知模块、教学模块等四部分内容。竞赛管理主要是系统的竞赛模块的相关的管理操作,比如新增赛事、修改赛事、删除赛事等,便于以后发布赛事通知、新闻等内容。下面是核心设计代码:
@Service
@Slf4j
public class CompetitionItemServiceImpl imple?ments CompetitionItemService {
@Autowired
@Qualifier(value =“CompetitionItemDao”
private CompetitionItemDao CompetitionItemDao;//添加比赛项
public void addCompetitionItem( CompetitionIte?mEntity item){
if (checkField(item)){
item. setStauts(ItemStateType. ITEM_STATUS. get?Code()))
Integer result = CompetitionItemDao. addCompeti?tionItem(item);
if(result > 0 ){
log.info“( 添加赛事成功”,item.toString())
}else{
log.error“( 添加赛事失败,未知异常请仔细查看”);
}}}
//修改比赛项
public void alterCompetitionItem(CompetitionIte?mEntity entity, String itemId){
if (checkFields(entity)){
entity.setId(itemId);
int result = CompetitionItemDao. alterCompetition?Item(entity);
if(result > 0 ){
log.info“( 通过赛事id{}修改成功”,entity.to?String())
}else{
log.error“( 通过赛事id{}修改赛事失败,未知异常请仔细查看”);
}}}
//删除赛事
public void removeCompetitionItem(String[] item?Lists) {
for (String itemId : itemLists) {
CompetitionItemEntity entity = CompetitionItemEn?tity.getInstance();
CompetitionItemEntity item = entity. getItemBy?ItemId(itemId);
if (!StringUtils.isEmpty(item)) {
int result = CompetitionItemDao.remove(item);
if(result > 0 ){
log.info“( 通过赛事id{}删除成功”,entity.to?String())
}else{
log.error“( 通过赛事id{}删除新闻失败,未知异常请仔细查看”);
}
}
公告信息管理模块是指系统的用户可以自行查阅学科竞赛的相关竞赛资料,比如竞赛的组织,管理方式和竞赛的详细信息,让参赛选手得以准确、及时地掌握信息。掌握学科技能比赛的相关规定和要求。核心部分的代码如下[7]
@Slf4j
public class CompetitionAdviseServiceImpl imple?ments CompetitionAdviseService {
@Autowired
@Qualifier(value =“competitionAdviseDao”)
CompetitionAdviseDao competitionAdviseDao;
//添加通知
@Override
public void addCompetitionAdvise (CompetitionAd?vise advise) {
advise. setAdviseState(AdviseStateType. AD?VISE_ORDER.getCode());
int result = competitionAdviseDao. addAdvise(ad?vise);
if(result > 0 ){
log.info“( 通过通知id{}添加成功”,advise.to?String())
}else{
log.error“( 通过通知id{}添加失败,未知异常请仔细查看”);
}}
//删除通知
@Override
public void removeCompetitionAdvise(String[] advi?seIds) {
for (String adviseId: adviseIds) {
CompetitionAdviseEntity item = this. getNotice?ByNoticeId(adviseId);
if (!StringUtils.isEmpty(item)) {
int result = gameNoticeDao.removeAdvise(item);
if(result > 0 ){
log.info“( 通过通知id{}删除通知成功”,item.to?String())
}else{
log.error“( 通过通知id{}删除通知失败,未知异常请仔细查看”);
}
}
}
// 修改通知
@Override
public void changeCompetitionAdvise (String Advi?seId) {
CompetitionAdviseEntity item = new MatchNo?ticeEntity();
item.setId(AdviseId);
int result = matchNoticeDao.changeCompetitionAd?vise(item);
if(result > 0 ){
log.info“( 通过通知id{}修改通知成功”,item.to?String())
}else{
log.error“( 通过通知id{}修改通知失败,未知异常请仔细查看”);
}
}
}
5 结束语
本文采用前端Vue+后端SpringBoot的架构设计选型模式,使用MySQL数据库搭建赛事信息管理系统代理平台,同时设计了用户管理和赛事信息管理,解决了传统学科竞赛选拔模式中复杂和容易出错的问题,实践中获得了學校的好评。但在后期的完善开发中,还要继续深挖和扩展管理系统的功能和模块,使系统给学生和教师使用起来体验感更好,功能更丰富,为社会的信息化事业贡献一份微不足道的力量[8]。