赞
踩
目录
本文主要论述了如何使用springboot开发一个学生学生宿舍管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述学生宿舍管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。
学生宿舍管理系统的主要使用者分为管理员、宿管员、学生和维修员,实现功能包括管理员:首页、系统用户(管理员、学生、宿管员、维修员)、楼宇管理、宿舍管理、学生管理、申请换寝、请假报备、报修申请、问题反馈、缺寝登记、迁出记录、报修记录、公告管理等功能;宿管员:首页、学生信息、请假记录、报修申请、问题反馈、缺寝登记、报修记录、公告管理等功能;学生:首页、个人信息、申请换寝、请假报备、报修申请、问题反馈、公告管理等功能;维修员:首页、报修通知、报修记录等功能。由于本网站的功能模块设计比较全面,所以使得整个学生宿舍管理系统信息管理的过程得以实现。
- 开发语言:Java
-
- 使用框架:spring boot
-
- 前端技术:JavaScript、Vue 、css3
-
- 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
-
- 数据库:MySQL 5.7/8.0
-
- 数据库管理工具:phpstudy/Navicat
-
- JDK版本:jdk1.8
-
- Maven: apache-maven 3.8.1-bin
本学生宿舍管理系统主要包括四大功能模块,即管理员、宿管员、学生、维修员模块。
系统中的核心用户是系统管理员,管理员登录后,通过管理员菜单来管理系统。主要功能有:首页、系统用户(管理员、学生、宿管员、维修员)、楼宇管理、宿舍管理、学生管理、申请换寝、请假报备、报修申请、问题反馈、缺寝登记、迁出记录、报修记录、公告管理等功能。管理员用例图如图所示。
首页、个人信息、申请换寝、请假报备、报修申请、问题反馈、公告管理等功能。学生用例如图所示。
首页、学生信息、请假记录、报修申请、问题反馈、缺寝登记、报修记录、公告管理等功能。宿管员用例图如图所示。
首页、报修通知、报修记录等功能。宿管员用例图如图所示。
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。
本学生宿舍管理系统结构图如图所示。
- /**
- * 用户账户:用于保存用户登录信息(User)表控制层
- */
- @Slf4j
- @RestController
- @RequestMapping("user")
- public class UserController extends BaseController<User, UserService> {
- /**
- * 服务对象
- */
- @Autowired
- public UserController(UserService service) {
- setService(service);
- }
-
- /**
- * Token服务
- */
- @Autowired
- private AccessTokenService tokenService;
-
- @Autowired
- private UserGroupService userGroupService;
-
- /**
- * 注册
- * @param user
- * @return
- */
- @PostMapping("register")
- public Map<String, Object> signUp(@RequestBody User user) {
- // 查询用户
- Map<String, String> query = new HashMap<>();
- query.put("username",user.getUsername());
- List list = service.select(query, new HashMap<>()).getResultList();
- if (list.size()>0){
- return error(30000, "用户已存在");
- }
- user.setUserId(null);
- user.setPassword(service.encryption(user.getPassword()));
- service.save(user);
- return success(1);
- }
-
- /**
- * 找回密码
- * @param form
- * @return
- */
- @PostMapping("forget_password")
- public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
- JSONObject ret = new JSONObject();
- String username = form.getUsername();
- String code = form.getCode();
- String password = form.getPassword();
- // 判断条件
- if(code == null || code.length() == 0){
- return error(30000, "验证码不能为空");
- }
- if(username == null || username.length() == 0){
- return error(30000, "用户名不能为空");
- }
- if(password == null || password.length() == 0){
- return error(30000, "密码不能为空");
- }
-
- // 查询用户
- Map<String, String> query = new HashMap<>();
- query.put("username",username);
- Query select = service.select(query, service.readConfig(request));
- List list = select.getResultList();
- if (list.size() > 0) {
- User o = (User) list.get(0);
- JSONObject query2 = new JSONObject();
- JSONObject form2 = new JSONObject();
- // 修改用户密码
- query2.put("user_id",o.getUserId());
- form2.put("password",service.encryption(password));
- service.update(query, service.readConfig(request), form2);
- return success(1);
- }
- return error(70000,"用户不存在");
- }
-
- /**
- * 登录
- * @param data
- * @param httpServletRequest
- * @return
- */
- @PostMapping("login")
- public Map<String, Object> login(@RequestBody Map<String, String> 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<String, String> 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<String, String> 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, "账号或密码不正确");
- }
- }
-
- /**
- * 修改密码
- * @param data
- * @param request
- * @return
- */
- @PostMapping("change_password")
- public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
- // 根据Token获取UserId
- String token = request.getHeader("x-auth-token");
- Integer userId = tokenGetUserId(token);
- // 根据UserId和旧密码获取用户
- Map<String, String> query = new HashMap<>();
- String o_password = data.get("o_password");
- query.put("user_id" ,String.valueOf(userId));
- query.put("password" ,service.encryption(o_password));
- Query ret = service.count(query, service.readConfig(request));
- List list = ret.getResultList();
- Object s = list.get(0);
- int count = Integer.parseInt(list.get(0).toString());
- if(count > 0){
- // 修改密码
- Map<String,Object> form = new HashMap<>();
- form.put("password",service.encryption(data.get("password")));
- service.update(query,service.readConfig(request),form);
- return success(1);
- }
- return error(10000,"密码修改失败!");
- }
-
- /**
- * 登录态
- * @param request
- * @return
- */
- @GetMapping("state")
- public Map<String, Object> state(HttpServletRequest request) {
- JSONObject ret = new JSONObject();
- // 获取状态
- String token = request.getHeader("x-auth-token");
-
- // 根据登录态获取用户ID
- Integer userId = tokenGetUserId(token);
-
- log.info("[返回userId] {}",userId);
- if(userId == null || userId == 0){
- return error(10000,"用户未登录!");
- }
-
- // 根据用户ID获取用户
- Map<String,String> query = new HashMap<>();
- query.put("user_id" ,String.valueOf(userId));
-
- // 根据用户ID获取
- Query select = service.select(query,service.readConfig(request));
- List resultList = select.getResultList();
- if (resultList.size() > 0) {
- JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));
- user.put("token",token);
- ret.put("obj",user);
- return success(ret);
- } else {
- return error(10000,"用户未登录!");
- }
- }
-
-
- /**
- * 获取登录用户ID
- * @param token
- * @return
- */
- public Integer tokenGetUserId(String token) {
- log.info("[获取的token] {}",token);
- // 根据登录态获取用户ID
- if(token == null || "".equals(token)){
- return 0;
- }
- Map<String, String> query = new HashMap<>(16);
- query.put("token", token);
- AccessToken byToken = tokenService.findOne(query);
- if(byToken == null){
- return 0;
- }
- return byToken.getUser_id();
- }
-
- /**
- * 重写add
- * @return
- */
- @PostMapping("/add")
- @Transactional
- public Map<String, Object> add(HttpServletRequest request) throws IOException {
- Map<String,Object> map = service.readBody(request.getReader());
- map.put("password",service.encryption(String.valueOf(map.get("password"))));
- service.insert(map);
- return success(1);
- }
-
- }

此源码非开源,若需要此源码可扫码添加微信或者qq:2214904953进行咨询!
2600多套项目欢迎咨询
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。