文末获取源码
开发语言: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考试信息推荐列表的逻辑代码
@PostMapping("/add") @Transactional public Map add(HttpServletRequest request) throws IOException { service.insert(service.readBody(request.getReader())); return success(1); } @Transactional public Map addMap(Map map){ service.insert(map); return success(1);} public Map readBody(BufferedReader reader){ BufferedReader br = null; StringBuilder sb = new StringBuilder(""); try{ br = reader; String str; while ((str = br.readLine()) != null){ sb.append(str); } br.close(); String json = sb.toString(); return JSONObject.parseObject(json, Map.class); }catch (IOException e){ e.printStackTrace(); }finally{ if (null != br){ try{ br.close(); }catch (IOException e){ e.printStackTrace(); } } } return null;} public void insert(Map body){ StringBuffer sql = new StringBuffer("INSERT INTO "); sql.append("`").append(table).append("`").append(" ("); for (Map.Entry entry:body.entrySet()){ sql.append("`"+humpToLine(entry.getKey())+"`").append(","); } sql.deleteCharAt(sql.length()-1); sql.append(") VALUES ("); for (Map.Entry entry:body.entrySet()){ Object value = entry.getValue(); if (value instanceof String){ sql.append("'").append(entry.getValue()).append("'").append(","); }else { sql.append(entry.getValue()).append(","); } } sql.deleteCharAt(sql.length() - 1); sql.append(")"); log.info("[{}] - 插入操作:{}",table,sql); Query query = runCountSql(sql.toString()); query.executeUpdate(); }
5.2考试安排界面逻辑代码
@RequestMapping(value = {"/avg_group", "/avg"})public Map avg(HttpServletRequest request) { Query count = service.avg(service.readQuery(request), service.readConfig(request)); return success(count.getResultList());}
5.3考试报名管理界面关键代码
@RestController@RequestMapping("auth")public class AuthController extends BaseController { /** * 服务对象 */ @Autowired public AuthController(AuthService service) { setService(service); }}
5.4用户登录的逻辑代码
/** * 登录 * @param data * @param httpServletRequest * @return */ @PostMapping("login") public Map login(@RequestBody Map data, HttpServletRequest httpServletRequest) { log.info("[执行登录接口]"); String username = data.get("username"); String email = data.get("email"); String phone = data.get("phone"); String password = data.get("password"); List resultList = null; Map map = new HashMap(); if(username != null && "".equals(username) == false){ map.put("username", username); resultList = service.select(map, new HashMap()).getResultList(); } else if(email != null && "".equals(email) == false){ map.put("email", email); resultList = service.select(map, new HashMap()).getResultList(); } else if(phone != null && "".equals(phone) == false){ map.put("phone", phone); resultList = service.select(map, new HashMap()).getResultList(); }else{ return error(30000, "账号或密码不能为空"); } if (resultList == null || password == null) { return error(30000, "账号或密码不能为空"); } //判断是否有这个用户 if (resultList.size()<=0){ return error(30000,"用户不存在"); } User byUsername = (User) resultList.get(0); Map groupMap = new HashMap(); groupMap.put("name",byUsername.getUserGroup()); List groupList = userGroupService.select(groupMap, new HashMap()).getResultList(); if (groupList.size()<1){ return error(30000,"用户组不存在"); } UserGroup userGroup = (UserGroup) groupList.get(0); //查询用户审核状态 if (!StringUtils.isEmpty(userGroup.getSourceTable())){ String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId(); String res = String.valueOf(service.runCountSql(sql).getSingleResult()); if (res==null){ return error(30000,"用户不存在"); } if (!res.equals("已通过")){ return error(30000,"该用户审核未通过"); } } //查询用户状态 if (byUsername.getState()!=1){ return error(30000,"用户非可用状态,不能登录"); } String md5password = service.encryption(password); if (byUsername.getPassword().equals(md5password)) { // 存储Token到数据库 AccessToken accessToken = new AccessToken(); accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", "")); accessToken.setUser_id(byUsername.getUserId()); tokenService.save(accessToken); // 返回用户信息 JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername)); user.put("token", accessToken.getToken()); JSONObject ret = new JSONObject(); ret.put("obj",user); return success(ret); } else { return error(30000, "账号或密码不正确"); }}