当前位置:   article > 正文

SpringBoot+Vue实现学生宿舍管理系统_学生宿舍管理系统springboot,vue

学生宿舍管理系统springboot,vue
目录

一、项目介绍

二、项目主要技术 

 三、系统功能分析

3.1管理员模块

3.2学生模块

3.3宿管员模块

3.4维修员模块

四、系统结构设计 

五、管理员功能模块

5.1管理员登录界面

5.2学生管理界面

5.3宿舍管理界面

5.4楼宇管理界面

5.5申请换寝界面

六、宿管员功能模块

6.1问题反馈界面

6.2缺寝登记界面

七、学生功能模块 

7.1个人信息管理界面

7.2请假报备界面

八、维修员功能模块

8.1报修通知管理界面

8.2报修记录界面

九、实现代码

十、获取源码

一、项目介绍

本文主要论述了如何使用springboot开发一个学生学生宿舍管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述学生宿舍管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。

学生宿舍管理系统的主要使用者分为管理员、宿管员、学生和维修员,实现功能包括管理员:首页、系统用户(管理员、学生、宿管员、维修员)、楼宇管理、宿舍管理、学生管理、申请换寝、请假报备、报修申请、问题反馈、缺寝登记、迁出记录、报修记录、公告管理等功能;宿管员:首页、学生信息、请假记录、报修申请、问题反馈、缺寝登记、报修记录、公告管理等功能;学生:首页、个人信息、申请换寝、请假报备、报修申请、问题反馈、公告管理等功能;维修员:首页、报修通知、报修记录等功能。由于本网站的功能模块设计比较全面,所以使得整个学生宿舍管理系统信息管理的过程得以实现。

二、项目主要技术 

  1. 开发语言:Java
  2. 使用框架:spring boot
  3. 前端技术:JavaScript、Vue 、css3
  4. 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
  5. 数据库:MySQL 5.7/8.0
  6. 数据库管理工具:phpstudy/Navicat
  7. JDK版本:jdk1.8
  8. Maven: apache-maven 3.8.1-bin

 三、系统功能分析

本学生宿舍管理系统主要包括四大功能模块,即管理员、宿管员、学生、维修员模块。

3.1管理员模块

系统中的核心用户是系统管理员,管理员登录后,通过管理员菜单来管理系统。主要功能有:首页、系统用户(管理员、学生、宿管员、维修员)、楼宇管理、宿舍管理、学生管理、申请换寝、请假报备、报修申请、问题反馈、缺寝登记、迁出记录、报修记录、公告管理等功能。管理员用例图如图所示。

3.2学生模块

首页、个人信息、申请换寝、请假报备、报修申请、问题反馈、公告管理等功能。学生用例如图所示。 

3.3宿管员模块

首页、学生信息、请假记录、报修申请、问题反馈、缺寝登记、报修记录、公告管理等功能。宿管员用例图如图所示。 

3.4维修员模块

首页、报修通知、报修记录等功能。宿管员用例图如图所示。 

四、系统结构设计 

整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。

本学生宿舍管理系统结构图如图所示。

五、管理员功能模块

5.1管理员登录界面

5.2学生管理界面

5.3宿舍管理界面

5.4楼宇管理界面

5.5申请换寝界面

六、宿管员功能模块

6.1问题反馈界面

6.2缺寝登记界面

七、学生功能模块 

7.1个人信息管理界面

7.2请假报备界面

八、维修员功能模块

8.1报修通知管理界面

8.2报修记录界面

九、实现代码

  1. /**
  2. * 用户账户:用于保存用户登录信息(User)表控制层
  3. */
  4. @Slf4j
  5. @RestController
  6. @RequestMapping("user")
  7. public class UserController extends BaseController<User, UserService> {
  8. /**
  9. * 服务对象
  10. */
  11. @Autowired
  12. public UserController(UserService service) {
  13. setService(service);
  14. }
  15. /**
  16. * Token服务
  17. */
  18. @Autowired
  19. private AccessTokenService tokenService;
  20. @Autowired
  21. private UserGroupService userGroupService;
  22. /**
  23. * 注册
  24. * @param user
  25. * @return
  26. */
  27. @PostMapping("register")
  28. public Map<String, Object> signUp(@RequestBody User user) {
  29. // 查询用户
  30. Map<String, String> query = new HashMap<>();
  31. query.put("username",user.getUsername());
  32. List list = service.select(query, new HashMap<>()).getResultList();
  33. if (list.size()>0){
  34. return error(30000, "用户已存在");
  35. }
  36. user.setUserId(null);
  37. user.setPassword(service.encryption(user.getPassword()));
  38. service.save(user);
  39. return success(1);
  40. }
  41. /**
  42. * 找回密码
  43. * @param form
  44. * @return
  45. */
  46. @PostMapping("forget_password")
  47. public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
  48. JSONObject ret = new JSONObject();
  49. String username = form.getUsername();
  50. String code = form.getCode();
  51. String password = form.getPassword();
  52. // 判断条件
  53. if(code == null || code.length() == 0){
  54. return error(30000, "验证码不能为空");
  55. }
  56. if(username == null || username.length() == 0){
  57. return error(30000, "用户名不能为空");
  58. }
  59. if(password == null || password.length() == 0){
  60. return error(30000, "密码不能为空");
  61. }
  62. // 查询用户
  63. Map<String, String> query = new HashMap<>();
  64. query.put("username",username);
  65. Query select = service.select(query, service.readConfig(request));
  66. List list = select.getResultList();
  67. if (list.size() > 0) {
  68. User o = (User) list.get(0);
  69. JSONObject query2 = new JSONObject();
  70. JSONObject form2 = new JSONObject();
  71. // 修改用户密码
  72. query2.put("user_id",o.getUserId());
  73. form2.put("password",service.encryption(password));
  74. service.update(query, service.readConfig(request), form2);
  75. return success(1);
  76. }
  77. return error(70000,"用户不存在");
  78. }
  79. /**
  80. * 登录
  81. * @param data
  82. * @param httpServletRequest
  83. * @return
  84. */
  85. @PostMapping("login")
  86. public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
  87. log.info("[执行登录接口]");
  88. String username = data.get("username");
  89. String email = data.get("email");
  90. String phone = data.get("phone");
  91. String password = data.get("password");
  92. List resultList = null;
  93. Map<String, String> map = new HashMap<>();
  94. if(username != null && "".equals(username) == false){
  95. map.put("username", username);
  96. resultList = service.select(map, new HashMap<>()).getResultList();
  97. }
  98. else if(email != null && "".equals(email) == false){
  99. map.put("email", email);
  100. resultList = service.select(map, new HashMap<>()).getResultList();
  101. }
  102. else if(phone != null && "".equals(phone) == false){
  103. map.put("phone", phone);
  104. resultList = service.select(map, new HashMap<>()).getResultList();
  105. }else{
  106. return error(30000, "账号或密码不能为空");
  107. }
  108. if (resultList == null || password == null) {
  109. return error(30000, "账号或密码不能为空");
  110. }
  111. //判断是否有这个用户
  112. if (resultList.size()<=0){
  113. return error(30000,"用户不存在");
  114. }
  115. User byUsername = (User) resultList.get(0);
  116. Map<String, String> groupMap = new HashMap<>();
  117. groupMap.put("name",byUsername.getUserGroup());
  118. List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
  119. if (groupList.size()<1){
  120. return error(30000,"用户组不存在");
  121. }
  122. UserGroup userGroup = (UserGroup) groupList.get(0);
  123. //查询用户审核状态
  124. if (!StringUtils.isEmpty(userGroup.getSourceTable())){
  125. String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
  126. String res = String.valueOf(service.runCountSql(sql).getSingleResult());
  127. if (res==null){
  128. return error(30000,"用户不存在");
  129. }
  130. if (!res.equals("已通过")){
  131. return error(30000,"该用户审核未通过");
  132. }
  133. }
  134. //查询用户状态
  135. if (byUsername.getState()!=1){
  136. return error(30000,"用户非可用状态,不能登录");
  137. }
  138. String md5password = service.encryption(password);
  139. if (byUsername.getPassword().equals(md5password)) {
  140. // 存储Token到数据库
  141. AccessToken accessToken = new AccessToken();
  142. accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
  143. accessToken.setUser_id(byUsername.getUserId());
  144. tokenService.save(accessToken);
  145. // 返回用户信息
  146. JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
  147. user.put("token", accessToken.getToken());
  148. JSONObject ret = new JSONObject();
  149. ret.put("obj",user);
  150. return success(ret);
  151. } else {
  152. return error(30000, "账号或密码不正确");
  153. }
  154. }
  155. /**
  156. * 修改密码
  157. * @param data
  158. * @param request
  159. * @return
  160. */
  161. @PostMapping("change_password")
  162. public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
  163. // 根据Token获取UserId
  164. String token = request.getHeader("x-auth-token");
  165. Integer userId = tokenGetUserId(token);
  166. // 根据UserId和旧密码获取用户
  167. Map<String, String> query = new HashMap<>();
  168. String o_password = data.get("o_password");
  169. query.put("user_id" ,String.valueOf(userId));
  170. query.put("password" ,service.encryption(o_password));
  171. Query ret = service.count(query, service.readConfig(request));
  172. List list = ret.getResultList();
  173. Object s = list.get(0);
  174. int count = Integer.parseInt(list.get(0).toString());
  175. if(count > 0){
  176. // 修改密码
  177. Map<String,Object> form = new HashMap<>();
  178. form.put("password",service.encryption(data.get("password")));
  179. service.update(query,service.readConfig(request),form);
  180. return success(1);
  181. }
  182. return error(10000,"密码修改失败!");
  183. }
  184. /**
  185. * 登录态
  186. * @param request
  187. * @return
  188. */
  189. @GetMapping("state")
  190. public Map<String, Object> state(HttpServletRequest request) {
  191. JSONObject ret = new JSONObject();
  192. // 获取状态
  193. String token = request.getHeader("x-auth-token");
  194. // 根据登录态获取用户ID
  195. Integer userId = tokenGetUserId(token);
  196. log.info("[返回userId] {}",userId);
  197. if(userId == null || userId == 0){
  198. return error(10000,"用户未登录!");
  199. }
  200. // 根据用户ID获取用户
  201. Map<String,String> query = new HashMap<>();
  202. query.put("user_id" ,String.valueOf(userId));
  203. // 根据用户ID获取
  204. Query select = service.select(query,service.readConfig(request));
  205. List resultList = select.getResultList();
  206. if (resultList.size() > 0) {
  207. JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));
  208. user.put("token",token);
  209. ret.put("obj",user);
  210. return success(ret);
  211. } else {
  212. return error(10000,"用户未登录!");
  213. }
  214. }
  215. /**
  216. * 获取登录用户ID
  217. * @param token
  218. * @return
  219. */
  220. public Integer tokenGetUserId(String token) {
  221. log.info("[获取的token] {}",token);
  222. // 根据登录态获取用户ID
  223. if(token == null || "".equals(token)){
  224. return 0;
  225. }
  226. Map<String, String> query = new HashMap<>(16);
  227. query.put("token", token);
  228. AccessToken byToken = tokenService.findOne(query);
  229. if(byToken == null){
  230. return 0;
  231. }
  232. return byToken.getUser_id();
  233. }
  234. /**
  235. * 重写add
  236. * @return
  237. */
  238. @PostMapping("/add")
  239. @Transactional
  240. public Map<String, Object> add(HttpServletRequest request) throws IOException {
  241. Map<String,Object> map = service.readBody(request.getReader());
  242. map.put("password",service.encryption(String.valueOf(map.get("password"))));
  243. service.insert(map);
  244. return success(1);
  245. }
  246. }

十、获取源码

此源码非开源,若需要此源码可扫码添加微信或者qq:2214904953进行咨询!

2600多套项目欢迎咨询

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/858031
推荐阅读
相关标签
  

闽ICP备14008679号