1 概述
1.1 项目背景
随着计算机技术的迅猛发展,学校教学和管理的信息化发展也有长足的进步,这就 要求各个环节都均衡发展,从软硬件两方面把学校建设成一流的信息管理、教育教学的平台该系统本着减轻教师工作负担、提高工作效率,增强参加学生的身份识别,比传统的报名模式节省人力财力和时间。
网上报名系统可以分为前端和后端两种方式,前端用户进行信息注册和项目的报名,网上报名系统还增加了新闻和公告等信息,使得考生在进行网上报名的同时可以了解相关考试信息,考生可以根据相关信息对考试科目更加了解。后台管理员可以进行系统管理包括注册信息管理、用户登录、普通用户网上报名、管理员报名项目管理、系统管理模块、导出报名、用户管理、公告管理、新闻管理。
1.2 开发环境
本次设计的系统是基于 JDK11 的 Web 项目,使用的开发环境基于 Windows 10 操作系统,借助编译工具 IntelliJ IDEA 2019.1.3 x64,使用服务器为 Spring Boot 2.4.0 整合的 Tomcat,使用数据库 Oracle 11g,后台框架为 Spring Boot 整合的 MyBatis,后台接口测试文档使用的 Swagger2,还使用了一些 Lombok 和热部署等简化开发。前台框架采用的 React +ReactRouter,采用纯函数式组件开发,前端的 UI 库使用的 Antd,数据请求为 Axios。
1.3 系统制作简介
(1)IDEA 连接数据库:
1 打开 Oracle 数据库,先保证 Oracle 可以正常运行,然后在 Oracle 中建 ANNOUNCEMENT、APPLYINFORMATION、GENERALUSER、MANAGEUSER、NEWS 这 5 张表。
2 在 IDEA 中创建项目并构建路径:第一步创建一个基于 maven 的 Spring Boot 项目 dzu;第二步创建目录结构和改写 application.yml 配置文件;第三步将 Oracle 连接相关的依赖全部导入到 pom.xml 文件中等待 IDEA 下载好;第四步启动项目:找到 Spring Boot 的主启动类并将其启动,查看项目是否构建成功
3Oracle 数据库驱动
数据库驱动:jdbc.driverClass=oracle.jdbc.OracleDriver
URL:jdbc:oracle:thin:@192.168.137.136:1521:helowin
4 在 application.propertises 配置:
spring.datasource.username=User1
spring.datasource.password=123456
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
Mybatis.type-aliases-package=com.bxg.registration.mapper
Mybatis.configuration.map-underscore-to-camel-case=true
logging.level.com.lyc.dao=debug
spring.mvc.servlet.load-on-startup=1
注:User1 为数据库用户名,Password 为数据库密码
(2)实现前台显示页面上数据的增添、删除、修改、查询的操作
首先,前台页面转发一个请求,com.bxg.registration.controller 包里的类会接收请求,类里具体方法会调用相应的方法,然后调用相应的 mapper 接口,具体实现是在相应的 mapper.xml 配置文件中。最终,实现前台显示页面上数据的增添、删除、修改、查询的操作。
2 需求分析
2.1 信息要求
网上报名系统,前台网页上罗列各种考试信息,浏觉者可以浏览网页,如果看到感兴趣的,就点进去看详细信息,类似于网上的招聘信息,系统包括前端和后台两部分,前端主要有以下几个模块:
标题:网上报名系统。
注册:注册会员的信息,仅包含用户名和登录密码。
登录:这里要求以小窗口的形式显示。
导航部分,首页,在线报名,报名须知三部分组成。
广告部分:要有醒目广告语。
主要部分:显示考试信息。
在线报名:在线报名信息可以重复提交,以最后一次修改的准。
在实现以上前端设计以后,开始后台设计,后台主要以 WinForm 窗体的形式来展现给用户,它的对象,主要是各个院校,机构的招生部门,权限是管理员。用户下载这个客户端,并且有自己的管理员账号,登录成功后,可在主页面实现以下操作:
考生信息设置:主要包括考生信息查询,添加,删除。
2.2 处理要求
通过对用户需求和系统设计思想的分析,可以得出该网上报名系统主要可以分为普通用户管理模块、公告管理模块、新闻管理模块、报名信息管理模块、报名管理模块。系统结构功能图如图 1 所示。
图 1 系统结构功能图
2.3 安全性与完整性要求
数据处理的准确性和实时性:
在网上报名系统中,多个终端传回的处理信息是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据,并且确保信息在传输处理过程中不丢失。
数据的一致性与完整性:
由于系统的数据是共享的,在不同的用户终端和管理员终端中,系统信息是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。
数据的共享与独立性:
整个数据库系统的数据是共享的。然而,从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的强壮性。
3 概念结构设计
考生可以实现注册、登录、考试、修改信息、成绩查询功能,考生用例图如图 2 所示。
图 2 考生用例图
管理员可以实现处理报名信息、准考证信息、考试信考试成绩信息功能,管理员用例图如图 3 所示。
图 3 管理员用例图
考生具有访问权限,证件号码,用户名,密码四个属性,用户属性图如图 4 所示。
图 4 用户属性图
新闻信息包括:新闻编号、新闻类型、新闻标题和新闻内容等方面的信息。新闻信息属性如图 5 所示。
图 5 新闻信息属性图
考试报名信息包括身份证、报名者姓名、考试类型、考试信息四个属性,考试报名信息属性如图 6 所示。
图 6 考试报名信息属性图
全局 E-R 图包括整体的实例关系,如图 7、图 8 所示。
图 7 全局 E-R 图管理员部分
图 8 全局 E-R 图用户部分
4 数据库设计
通过学习过的数据库的知识,用 SQL 语句将用户信息、项目信息、报名信息等数据库 ER 图转换为数据库模式。基本表如下。
表 1 公告表
列名 | 数据类型 | 长度 | Null | 说明 |
---|---|---|---|---|
ANNOUNCEMENTID | NUMBER | 11 | Not Null | Primary Key |
MANAGENAME | NVARCHAR2 | 255 | Null | Foreign Key |
ANNOUNCEMENTTITLE | NVARCHAR2 | 255 | Null | |
ANNOUNCEMENTCONENT | NVARCHAR2 | 255 | Null |
表 2 报名项目表
列名 | 数据类型 | 长度 | Null | 说明 |
---|---|---|---|---|
APPLYINFORMATIONID | NUMBER | 11 | Not Null | Primary Key |
APPLYINFORMATIONNAME | NVARCHAR2 | 255 | Null | |
APPLYINFORMATIONLASTIP | NVARCHAR2 | 255 | Null | |
MANAGENAME | NVARCHAR2 | 255 | Null | Foreign Key |
表 3 一般用户表
列名 | 数据类型 | 长度 | Null | 说明 |
---|---|---|---|---|
GENERALUSERID | NUMBER | 11 | Not Null | Primary Key |
GENERALUSERNAME | NVARCHAR2 | 255 | Null | |
GENERALUSERPASSWORD | NVARCHAR2 | 255 | Null | |
GENERALUSERLASTIP | NVARCHAR2 | 255 | Null |
表 4 管理员
列名 | 数据类型 | 长度 | Null | 说明 |
---|---|---|---|---|
MANAGEUSERID | NUMBER | 11 | Not Null | Primary Key |
MANAGEUSERNAME | NVARCHAR2 | 255 | Null | |
MANAGEUSERSEX | NVARCHAR2 | 255 | Null | |
MANAGEUSERLASTIP | NVARCHAR2 | 255 | Null | |
MANAGEUSERGID | NVARCHAR2 | 255 | Null |
表 5 新闻咨询表
列名 | 数据类型 | 长度 | Null | 说明 |
---|---|---|---|---|
NEWSID | NUMBER | 11 | Not Null | Primary Key |
NEWSTITLE | NVARCHAR2 | 255 | Null | |
NEWSTYPE | NVARCHAR2 | 255 | Null | |
NEWSCONTENT | NVARCHAR2 | 255 | Null |
5 主要模块的设计以及代码
5.1 注册信息功能模块
没有账号的用户可通过登录页面的注册按钮跳转至注册页面进行账号的注册。首先,后端会检查此用户是否存在,如果存在则会返回该用户已存在的信息,如果不存在则进行进一步的操作。注册页面如图 9 所示:
图 9 注册页面
5.2 登录信息功能模块
用户登录需要用户输入账号、密码。如果对比结果正确则进行账号和密码的校验。用户登录页面如图 10 所示:
图 10 登录页面
5.3 用户查看公告和新闻功能
查看公告和新闻是用户登录成功后看到的主界面,用户可以通过此页面查看管理员发布的公告和新闻。用户查看公告和新闻界面如图 11 所示:
图 11 用户查看公告和新闻功能页面
5.4 网上报名功能
用户只需要填写报考地和所要报考的科目即可报名。用户报名成功后等到管理员通过即可进行考试。网上报名页面如图 12 所示:
图 12 网上报名页面
5.5 报考信息查询功能
该功能用户可以对已经报考科目进行删除和修改。如果该用户没有对任何科目进行报名则会显示“No Data”。报考信息查询页面如图 13 所示:
图 13 报考信息查询页面
5.6 管理员模块
管理员拥有用户的增删改查、报考科目的增删改查的功能。管理员登录成功后的主界面如图 14 所示:
图 14 管理员模块页面
6 系统部署
后台部署就比较简单了。因为我的 JDK 版本是 11,所以要在服务器中安装一个 11 版本的 JDK。但是当我在服务器上输入 Java 的时候,它提示我安装 jre11,所以我在服务器上通过 apt-get install openjdk-11-jre 安装 jre,将 maven 打的 jar 包上传到服务器之后,找到 jar 所在的目录通过 nohup Java -jar demo-0.0.1-SNAPSHOT.jar &命令后台启动。这样,我们的就在服务器上部署好了。