基于Java實現(xiàn)考試管理系統(tǒng)
項目簡述
本系統(tǒng)功能包括:
支持單選題、多選題、判斷題支持學(xué)生(student)、教師(teacher)、管理員(admin)三種角色學(xué)生:參加考試和查看我的考試教師:學(xué)生的所有權(quán)限+創(chuàng)建/編輯題目+創(chuàng)建/編輯考試管理員:教師的所有權(quán)限+管理用戶。
項目運行
環(huán)境配置:
Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
項目技術(shù)
Springboot + Maven + Jpa+ Vue 等等組成,B/S模式 + Maven管理等等。
效果圖展示
主要代碼
登錄控制層:
@RestController public class LoginController { @Resource(name = "loginService") private ILoginService loginService; /** * 用戶登錄調(diào)用 在登陸成功生成兩個token 同時返回各自首頁 * * 學(xué)生 student/student * * 老師 teacher/teacher * * 管理員 admin/admin */ @RequestMapping(value = "/login/login", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public Result<Token> login(HttpRequest request) { return loginService.login(request.getString("login_name"), request.getString("pwd")); } /** * 登錄檢查 */ @RequestMapping(value = "/login/check", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public Result<Token> check() { return new Result<>(); } /** * token 續(xù)約 */ @RequestMapping(value = "/login/refresh", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public Result<Token> refresh(HttpRequest request) { String refreshToken = request.getString("refresh_token"); String urlId = request.getString("url_id"); Token token = TokenCache.getInstance().get(urlId); if(token == null){ ExceptionHelper.error(ErrorCode.ERROR_CODE_0003); } try { Claims claims = TokenUtils.parseToken(refreshToken); if (StringUtils.isNotEmpty((String.valueOf(claims.getOrDefault("student_id", ""))))) { claims.put("student_id", SessionContext.get("student_id")); } if (StringUtils.isNotEmpty((String.valueOf(claims.getOrDefault("teacher_id", ""))))) { claims.put("teacher_id", SessionContext.get("teacher_id")); } if (StringUtils.isNotEmpty((String.valueOf(claims.getOrDefault("login_name", ""))))) { claims.put("login_name", SessionContext.get("login_name")); } claims.put("name", claims.get("name")); token.setToken(TokenUtils.createToken(claims, TokenUtils.expireTime)); token.setRefreshToken(TokenUtils.createToken(claims, TokenUtils.long_expireTime)); TokenCache.getInstance().add(token); } catch (Exception e) { ExceptionHelper.error(ErrorCode.ERROR_CODE_0003); } return new Result<>(token); } /** * 退出系統(tǒng) */ @RequestMapping(value = "/login/exit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public Result<Token> exit(HttpRequest request) { String urlId = request.getString("url_id"); if (StringUtils.isNotEmpty(urlId)) { TokenCache.getInstance().remove(urlId); } return new Result<>(); } }
統(tǒng)一管理學(xué)生 教師 管理員信息:
/** * 統(tǒng)一管理學(xué)生 教師 管理員信息 */ @RestController public class UserController { @Resource(name = "userService") private IUserService userService; /** * 查詢用戶信息 * 先判斷用戶類型 在查詢用戶信息 */ @RequestMapping(value = "/user/qryUserInfo", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public Result<User> qryUserInfo() { return userService.qryUserInfo(); } /** * 更新用戶信息 */ @RequestMapping(value = "/user/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public Result<User> update(HttpRequest request) { User user = new User(); user.setUserId(request.getString("user_id")); user.setName(request.getString("name")); user.setSex(request.getInteger("sex")); user.setType(User.UserType.get(request.getInteger("type"))); return userService.update(user, ImageUtil.stringToBytes(request.getString("user_image"))); } /** * 更新用戶密碼 */ @RequestMapping(value = "/user/updatePwd", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public Result<User> updatePwd(HttpRequest request) { return userService.updatePwd(request.getString("old_pwd"), request.getString("pwd")); } }
學(xué)生管理控制器:
/** * 學(xué)生控制器 */ @RestController public class StudentController { @Resource(name = "studentService") private IStudentService studentService; /** * 管理員 查詢學(xué)生列表 */ @RequestMapping(value = "/student/qryPage", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RoleAnnotation(types = {RoleEnum.admin}) public ListResult<Student> qryPage(HttpRequest request) { Map<String, Object> param = new HashMap<>(); int pageNo = request.containsKey("page_no") ? request.getInteger("page_no") : 1; int pageSize = request.containsKey("page_size") ? request.getInteger("page_size") : 20; if (request.containsKey("student_id")) { param.put("student_id", request.getString("student_id")); } if (request.containsKey("name")) { param.put("name", request.getString("name")); } return studentService.qryPage(param, pageNo, pageSize); } @RequestMapping(value = "/student/add", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RoleAnnotation(types = {RoleEnum.admin}) public Result<Student> insert(HttpRequest request) { Student student = new Student(); student.setStudentId(request.getString("student_id")); student.setName(request.getString("student_name")); student.setPwd(request.getString("student_id")); student.setSex(request.getInteger("sex")); student.setClassId(request.getString("class_id")); student.setUpdateTime(new Date()); return studentService.insert(student, ImageUtil.stringToBytes(request.getString("student_image"))); } @RequestMapping(value = "/student/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RoleAnnotation(types = {RoleEnum.admin}) public Result<Student> update(HttpRequest request) { Student student = new Student(); student.setStudentId(request.getString("student_id")); student.setName(request.getString("student_name")); student.setPwd(request.getString("student_id")); student.setSex(request.getInteger("sex")); student.setClassId(request.getString("class_id")); student.setUpdateTime(new Date()); return studentService.update(student, ImageUtil.stringToBytes(request.getString("student_image"))); } @RequestMapping(value = "/student/del", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RoleAnnotation(types = {RoleEnum.admin}) public Result<Student> del(HttpRequest request) { List<String> studentIdList = new ArrayList<>(); JSONArray array = request.getJSONArray("student_id_list"); for (int i = 0; i < array.size(); i++) { studentIdList.add(array.getString(i)); } return studentService.del(studentIdList); } }
到此這篇關(guān)于基于Java實現(xiàn)考試管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Java考試管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java 輸入一個數(shù)字組成的數(shù)組(輸出該數(shù)組的最大值和最小值)
這篇文章主要介紹了java 輸入一個數(shù)字組成的數(shù)組,輸出該數(shù)組的最大值和最小值,需要的朋友可以參考下2017-02-02Sharding-JDBC自動實現(xiàn)MySQL讀寫分離的示例代碼
本文主要介紹了Sharding-JDBC自動實現(xiàn)MySQL讀寫分離,優(yōu)點在于數(shù)據(jù)源完全有Sharding-JDBC托管,寫操作自動執(zhí)行master庫,讀操作自動執(zhí)行slave庫,感興趣的可以了解一下2021-11-11Java中的布隆過濾器原理實現(xiàn)和應(yīng)用
Java中的布隆過濾器是一種基于哈希函數(shù)的數(shù)據(jù)結(jié)構(gòu),能夠高效地判斷元素是否存在于一個集合中。它廣泛應(yīng)用于緩存、網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)查詢等領(lǐng)域,在提高程序性能和減少資源消耗方面具有顯著優(yōu)勢2023-04-04java學(xué)習(xí)之利用TCP實現(xiàn)的簡單聊天示例代碼
這篇文章主要給大家介紹了關(guān)于java學(xué)習(xí)筆記之利用TCP實現(xiàn)的簡單聊天的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12