飞道的博客

SpringBoot+Vue实现前后端分离的在线考试报名系统

319人阅读  评论(0)

文末获取源码

开发语言:Java

使用框架:spring boot

前端技术:JavaScript、Vue.js 、css3

开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code

数据库:MySQL 5.7/8.0

数据库管理工具:phpstudy/Navicat

JDK版本:Java jdk8

Maven:apache-maven 3.8.1-bin

目录

一、前言介绍 

二、功能需求分析

2.1前端用户需求

2.2管理员功能如下

三、前台用户功能

3.1用户首页模块

3.2考试资讯模块

3.3考试列表模块 

3.4个人信息模块 

四、管理员功能模块

 4.1用户管理模块

4.2考试资讯管理模块

4.3考试信息管理模块

4.4考试报名管理模块

4.5考试成绩管理模块 

五、部分核心代码 

5.1考试信息推荐列表的逻辑代码 

5.2考试安排界面逻辑代码

5.3考试报名管理界面关键代码

5.4用户登录的逻辑代码


一、前言介绍 

在线考试报名系统由用户网上报名模块、考试模块和系统管理模块等三大模块组成。其中系统管理模块是进行考试资讯发布、考试报名,是系统运行的基础;查询子模块实现了学生考试信息推荐。考生通过自己的姓名和密码登陆系统,考试报名,进入考试安排界面后按照管理员预先设置好考试题目,自动生成试卷参加考试,考试完成后可以查看自己的考试成绩。本系统采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用Spring Boot框架、Vue技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对在线考试报名系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现在线考试报名系统的部署运行使用它。

二、功能需求分析

2.1前端用户需求

(1)注册用户的功能如下:

(2)注册账号:用户填写个人信息,并验证手机号码。

(3)登录:根据账号密码进行登录操作。

(4)在线报名数据:用户可以在线进行报名提交。

(5)考试安排:用户可以根据考试时间进行考试安排。

(6)维护个人信息:用户因个人信息的变更可以随时修改自己注册信息。

(7)考试资讯:用户可以在系统浏览考试资讯信息。

(8)考试成绩:用户可以查看自己在线考试成绩数据。

2.2管理员功能如下

(1)修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。

(2)试题信息进行处理:办理试卷考试成绩审核等。

(3)考试报名管理:对学生提交的考试报名进行审核。

(4)考试信息管理:对考试信息进行维护,添加、删除、修改信息。

(5)考试列表管理:对试卷信息进行分类维护,添加、删除、修改信息。

(6)资讯数据信息管理:发布、删除相关的资讯数据信息。

(7)考试成绩管理:对学生在线考试试卷进行审核,考试成绩的发布。

三、前台用户功能

3.1用户首页模块

3.2考试资讯模块

3.3考试列表模块 

3.4个人信息模块 

四、管理员功能模块

 4.1用户管理模块

4.2考试资讯管理模块

4.3考试信息管理模块

4.4考试报名管理模块

4.5考试成绩管理模块 

五、部分核心代码 

5.1考试信息推荐列表的逻辑代码 


  
  1. @PostMapping( "/add")
  2. @Transactional
  3. public Map< String, Object> add( HttpServletRequest request) throws IOException {
  4. service. insert(service. readBody(request. getReader()));
  5. return success( 1);
  6. }
  7. @Transactional
  8. public Map< String, Object> addMap( Map<String,Object> map){
  9. service. insert(map);
  10. return success( 1);
  11. }
  12. public Map< String, Object> readBody( BufferedReader reader){
  13. BufferedReader br = null;
  14. StringBuilder sb = new StringBuilder( "");
  15. try{
  16. br = reader;
  17. String str;
  18. while ((str = br. readLine()) != null){
  19. sb. append(str);
  20. }
  21. br. close();
  22. String json = sb. toString();
  23. return JSON Object. parseObject(json, Map. class);
  24. } catch ( IOException e){
  25. e. printStackTrace();
  26. } finally{
  27. if ( null != br){
  28. try{
  29. br. close();
  30. } catch ( IOException e){
  31. e. printStackTrace();
  32. }
  33. }
  34. }
  35. return null;
  36. }
  37. public void insert( Map<String,Object> body){
  38. StringBuffer sql = new StringBuffer( "INSERT INTO ");
  39. sql. append( "`"). append(table). append( "`"). append( " (");
  40. for ( Map. Entry< String, Object> entry:body. entrySet()){
  41. sql. append( "`"+ humpToLine(entry. getKey())+ "`"). append( ",");
  42. }
  43. sql. deleteCharAt(sql. length()- 1);
  44. sql. append( ") VALUES (");
  45. for ( Map. Entry< String, Object> entry:body. entrySet()){
  46. Object value = entry. getValue();
  47. if (value instanceof String){
  48. sql. append( "'"). append(entry. getValue()). append( "'"). append( ",");
  49. } else {
  50. sql. append(entry. getValue()). append( ",");
  51. }
  52. }
  53. sql. deleteCharAt(sql. length() - 1);
  54. sql. append( ")");
  55. log. info( "[{}] - 插入操作:{}",table,sql);
  56. Query query = runCountSql(sql. toString());
  57. query. executeUpdate();
  58. }

5.2考试安排界面逻辑代码


  
  1. @RequestMapping(value = { "/avg_group", "/avg"})
  2. public Map< String, Object> avg( HttpServletRequest request) {
  3. Query count = service. avg(service. readQuery(request), service. readConfig(request));
  4. return success(count. getResultList());
  5. }

5.3考试报名管理界面关键代码


  
  1. @RestController
  2. @RequestMapping( "auth")
  3. public class AuthController extends BaseController<Auth, AuthService> {
  4. /**
  5. * 服务对象
  6. */
  7. @Autowired
  8. public AuthController( AuthService service) {
  9. setService(service);
  10. }
  11. }

5.4用户登录的逻辑代码


  
  1. /**
  2. * 登录
  3. * @param data
  4. * @param httpServletRequest
  5. * @return
  6. */
  7. @PostMapping( "login")
  8. public Map< String, Object> login( @RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
  9. log. info( "[执行登录接口]");
  10. String username = data. get( "username");
  11. String email = data. get( "email");
  12. String phone = data. get( "phone");
  13. String password = data. get( "password");
  14. List resultList = null;
  15. Map< String, String> map = new HashMap<>();
  16. if(username != null && "". equals(username) == false){
  17. map. put( "username", username);
  18. resultList = service. select(map, new HashMap<>()). getResultList();
  19. }
  20. else if(email != null && "". equals(email) == false){
  21. map. put( "email", email);
  22. resultList = service. select(map, new HashMap<>()). getResultList();
  23. }
  24. else if(phone != null && "". equals(phone) == false){
  25. map. put( "phone", phone);
  26. resultList = service. select(map, new HashMap<>()). getResultList();
  27. } else{
  28. return error( 30000, "账号或密码不能为空");
  29. }
  30. if (resultList == null || password == null) {
  31. return error( 30000, "账号或密码不能为空");
  32. }
  33. //判断是否有这个用户
  34. if (resultList. size()<= 0){
  35. return error( 30000, "用户不存在");
  36. }
  37. User byUsername = ( User) resultList. get( 0);
  38. Map< String, String> groupMap = new HashMap<>();
  39. groupMap. put( "name",byUsername. getUserGroup());
  40. List groupList = userGroupService. select(groupMap, new HashMap<>()). getResultList();
  41. if (groupList. size()< 1){
  42. return error( 30000, "用户组不存在");
  43. }
  44. UserGroup userGroup = ( UserGroup) groupList. get( 0);
  45. //查询用户审核状态
  46. if (! StringUtils. isEmpty(userGroup. getSourceTable())){
  47. String sql = "select examine_state from "+ userGroup. getSourceTable() + " WHERE user_id = " + byUsername. getUserId();
  48. String res = String. valueOf(service. runCountSql(sql). getSingleResult());
  49. if (res== null){
  50. return error( 30000, "用户不存在");
  51. }
  52. if (!res. equals( "已通过")){
  53. return error( 30000, "该用户审核未通过");
  54. }
  55. }
  56. //查询用户状态
  57. if (byUsername. getState()!= 1){
  58. return error( 30000, "用户非可用状态,不能登录");
  59. }
  60. String md5password = service. encryption(password);
  61. if (byUsername. getPassword(). equals(md5password)) {
  62. // 存储Token到数据库
  63. AccessToken accessToken = new AccessToken();
  64. accessToken. setToken( UUID. randomUUID(). toString(). replaceAll( "-", ""));
  65. accessToken. setUser_id(byUsername. getUserId());
  66. tokenService. save(accessToken);
  67. // 返回用户信息
  68. JSON Object user = JSON Object. parseObject( JSON Object. toJSONString(byUsername));
  69. user. put( "token", accessToken. getToken());
  70. JSON Object ret = new JSON Object();
  71. ret. put( "obj",user);
  72. return success(ret);
  73. } else {
  74. return error( 30000, "账号或密码不正确");
  75. }
  76. }

转载:https://blog.csdn.net/m0_49113107/article/details/127697647
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场