科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设学生竞赛管理系统。
本设计主要实现集人性化、高效率、便捷等优点于一身的学生竞赛管理系统,完成用户管理、竞赛帖子管理、老师管理、老师竞赛选择管理、竞赛公告管理、学生管理、学生竞赛竞赛选择管理等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。学生竞赛管理系统使用Java语言,采用基于 MVC模式的SSM技术进行开发,使用 Eclipse 2017 CI 10 编译器编写,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,配合前台HTML+CSS 技术完成系统的开发。
关键词:学生竞赛管理;Java语言;关系型数据库;数据存储
高等学校的竞赛推动了高校教学改革,对推动高等学校应用型、竞赛型人才的培养将起到重要作用。各校参加竞赛的学生越来越多,但现在竞赛还有高校仍然采用纯人工的方式来组织和管理,工作量大。这种非信息化、数据化的管理方式使得竞赛举办方难以掌握最新的竞赛情况,影响了竞赛的开展,而随着科学技术的发展,计算机科学日渐成熟,作为计算机应用的一部分,使用计算机对学生竞赛进行管理,具有传统手工单机管理方式所无法比拟的优点,如信息检索方便准确、实时互动性高、信息存储量大、保密性好、管理成本低等. 这些优点能够极大地提高竞赛管理的效率。因此研发全国大学生竞赛信息系统并探索竞赛新的管理方式,已成为竞赛活动举办方的迫切需求。
高校竞赛是增强学生动手实践能力和提高学生竞赛意识的重要体现与有效途径,也是高校培养高质量高素质人才的标志之一,有效促进良好学风的形成,为学生就业奠定基础。一方面,各高校越来越重视学生综合素质的培养,竞赛作为一种广普及、深受益的教学教育改革方式应运而生,这种群众性科技活动不仅能与高效课堂紧密结合,还能有效考查学生解决实际问题的能力;一方面,由于高校竞赛涉及专业广泛、参赛人数众多和赛程赛制区别较大等特点,导致高校在组织开展和信息监控的过程中面临许多管理方面的困难,低效率、难监控、易出错、难共享的传统人工管理模式已无法满足高校日益增长的竞赛管理需求。
随着高校越来越重视应用型教育,广大教师和科技竞赛工作者从教学向科技竞赛加大研究力度,从教学到科技竞赛的转变需要对教师进行必要的培训和深造。国内高校科技竞赛主要体现在论文(论著)、课题、知识产权和成果奖等方面,教师的科技竞赛业绩也围绕这方面进行统计。在系统开发技术方面主要体现在基于框架技术和非框架技术两个方面,在使用框架技术主要体现在SSH(Struts2,Spring,Hibernate,简称SSH)框架和SSM(Spring,SpringMVC,MyBatis,文中简称SSM)框架,而其他非框架技术主要体现在面向服务技术方面。
在其他框架技术使用方面,中国知网能搜索到一定量的文献,文献采用了CodeIgniter框架进行科技竞赛日常开发,解决了大量数据收集难的问题以及数据收集准确率不高的问题。文献采用EasyUI+ThinkPHP框架开发了科技竞赛平台,科技竞赛为领导决策提供科学依据,能及时和准确反映教师科技竞赛工作的状态,有良好的用户体验。文献采用统一建模语言UML和体系结构描述语言ADL相结合完成了科技竞赛项目申报系统的建模过程,设计出完整的科技竞赛系统,通过构件的组装实现了科技竞赛项目申报系统的各项功能。文献应用了科技竞赛管理学的三棵树模型框架PLM构建了科技竞赛项目申报系统。文献采用bootstrap、easy-UI和jfinal框架技术结合SSL通信协议开发的系统具有可扩展性,可以适应高并发需求,解决了密集访问请求数据处理问题。文献中考虑到科技竞赛主体特性有缺陷时可以对该数据进行降维处理,解决了传统向量空间建模时基于关键词匹配缺失的问题,另外,还采用信息推送方式解决了科技竞赛团队间的数据分享和协同工作问题。
第一章是绪论,本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章研究了学生竞赛管理系统的所采用的开发技术和开发工具。
第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
最后对系统进行了认真的总结,以此对未来有一个新的展望。
在系统开发设计前,应该对功能做初步设想,清楚这个管理系统有什么板块,每个板块有什么功能,整体的设计是否满足使用者的需求,接着对所开发的系统功能进行的详细分析总结,从而设计出完整的系统并将其实现。用户和开发人员的交流分析,使其达到最佳理解程度,使系统功能达到最佳。
学生用例图如下所示。
管理员用例图如下所示。
教师用例图如下所示。
学生竞赛管理系统在对需求做解析后,整个系统主要分为两个部分:管理员和学生、老师,每个模块下的分支功能不一样。对功能做出如下说明:
学生模块:
账号注册。
账号登录认证。
管理个人资料信息,修改可修改的信息项。
竞赛报名,同时查看历史已报名的记录。
老师竞赛选择查看,同时查看历史已竞赛选择的记录。
老师模块:
账号注册。
账号登录认证。
管理个人资料信息,修改可修改的信息项。
老师竞赛选择,同时查看历史已竞赛选择的记录。
管理员模块:
维护学生,审核学生的账号,可以冻结学生的登录权限,或者删除学生账号。
发布竞赛,并可以销毁某个竞赛,更新竞赛数据,模糊搜索竞赛数据等。
发布老师,并可以销毁某个老师,更新老师数据,模糊搜索老师数据等。
管理竞赛报名数据。
维护老师竞赛选择数据。
查看学生提交的竞赛报名数据,管理员有权利维护它。
系统设计的目的是分析系统包括的所有功能结构,为开发人员设计开发和实现系统做好准备工作。经过前期的需求调查、分析和整理之后,确定的总体需求主要包括多个模块,分别是:用户管理、竞赛帖子管理、老师管理、老师竞赛选择管理、竞赛公告管理、学生管理、学生竞赛报名管理。系统整体角色分为三个部分,一是教师、二是学生、最后是管理员。权限分布也是很明显,学生是在除去浏览信息之外还具有查询和管理自己账户信息、竞赛帖子、老师竞赛选择、竞赛公告、竞赛报名、竞赛报名查询、竞赛帖子查询、竞赛选择、学生竞赛报名审核等权限;管理员是最高权限拥有者。
系统功能结构图如下图所示。
用户管理模块
该模块是为所有用户登录设计的,如学生登录后只能进行自己的普通功能操作(如个人信息修改),管理员和超级管理员登录后有不同的权限,管理员不能超越权限。超级管理员能对整个系统的数据进行管理,主要是用户的登录权限以及用户登录后在系统里的操作权限。
竞赛报名模块
学生和竞赛存在报名关系,关系为一对多,根据竞赛编号来将竞赛数据传入到报名数据中,操作人为学生,然后生成报名列表,学生查看个人历史报名列表,可以进行数据销毁。
竞赛维护模块
操作人来录入竞赛数据,点击竞赛录入按钮,依次填写要录入的竞赛数据,点击提交按钮,将数据提交至数据库,然后刷新竞赛数据页面,每条数据右边有删除和编辑按钮,来完成相应的删除和更新功能。
老师维护模块
操作人来录入老师数据,点击老师录入按钮,依次填写要录入的老师数据,点击提交按钮,将数据提交至数据库,然后刷新老师数据页面,每条数据右边有删除和编辑按钮,来完成相应的删除和更新功能。
竞赛选择模块
操作人来录入竞赛选择数据,点击选择录入按钮,依次填写要录入的选择数据,点击提交按钮,将数据提交至数据库,然后刷新选择数据页面,每条数据右边有删除和编辑按钮,来完成相应的删除和更新功能。
打印和导出模块
系统多个页面可以进行打印功能,包括信息详细页,信息列表页,打印时调用外部打印机,完成打印设置即可打印,在信息列表页可以将该信息列表导出至excel中,用户选择保存excel文件的路径,既可以下载至本地,在excel中可以自由编辑。
系统登录界面如下所示。
用户登录的逻辑代码如下。
if(ac.equals("adminlogin"))
{
String username = request.getParameter("username");
String password = request.getParameter("pwd");
String utype = request.getParameter("cx");
request.setAttribute("random", "");
go("/login.jsp", request, response);
else{
String sql1 = "select * from allusers where username='"+username+"' and pwd='"+password+"' ";
List<HashMap> userlist1 = dao.select(sql1);
if(userlist1.size()==1)
{
request.getSession(). setAttribute("username", userlist1.get(0).get("username"));
request.getSession(). setAttribute("cx", userlist1.get(0).get("cx"));
gor("main.jsp", request, response);
}else{
request.setAttribute("error", "");
go("/login.jsp", request, response);
}
}
}
系统呈现出一种简洁大方的首页:界面简约、鳞次栉比,用户能轻车熟路的使用。出于对系统使用群体广泛的顾虑,应有良好性能的后台。
如下图所示为系统的首页界面。
报名管理界面如图所示。
竞赛报名关键代码如下所示。
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
老师竞赛选择界面如图所示。
老师竞赛选择关键代码如下所示。
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
添加竞赛信息时,输入必填字段后,表现层的JingsaiController接受传过来的竞赛信息参数,再调用JingsaiController类的addJingsai方法,经过JingsaiService业务层到JingsaiMapper持久层的处理,完成对整个添加竞赛信息的操作。addJingsai方法也和用户管理中的addUser方法类似,同时做添加和修改工作。
修改竞赛信息时,选择需要修改的竞赛进行修改,调用JingsaiController控制器的editJingsai方法,拿到该竞赛原本的信息并显示到页面,管理员再对需要修改的竞赛信息字段进行修改,完成后调用addJingsai方法,调用业务层的updateByKey方法,更新数据库的竞赛信息表的数据。
竞赛管理流程图如下所示。
竞赛信息添加关键代码如下所示。
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
《基于ssm的学生竞赛管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等
使用技术:
开发语言:Java
框架:ssm
技术:jsp
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器