• SpringBoot+Vue项目大学校园防疫与服务系统的设计与实现


    文末获取源码

    开发语言: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

    目录

    一、前言介绍 

    二、功能需求分析

    2.1学生模块

    2.2教师模块

    2.3管理员模块

    三、前台学生功能

    3.1学生首页模块

    3.2社区互动模块

    3.3新闻资讯模块

    3.4疫苗信息模块 

    3.5学生接种预约模块 

    四、学生后台功能模块

    4.1出行报备管理模块 

    4.2学生接种预约管理模块

    4.3请假管理模块 

    五、教师后台功能模块

    5.1请假管理审核页面 

    六、管理员功能模块

    6.1轮播图管理模块 

    6.2教师管理模块 

    6.3新闻资讯管理模块

    七、部分核心代码

    7.1疫苗信息的关键代码 

    7.2接种预约关键代码

    7.3出行报备关键代码

    7.4学生注册的关键代码 

    7.5学生登录的关键代码


    一、前言介绍 

    系统采用了Java技术,将所有业务模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具选择IDEA来进行系统的设计。基本实现了大学校园防疫与服务系统 应有的主要功能模块,本系统有管理员、教师、学生。管理员:后台首页、轮播图、公告栏、用户管理、社区互动、新闻资讯、出行报备、疫苗信息、学生接种预约、教师接种预约、请假管理、销假申请。教师;后台首页、社区互动、出行报备、教师接种预约、请假管理、销假申请。学生;后台首页、社区互动、出行报备、教师接种预约、请假管理、销假申请管理等。

    对系统进行测试后,改善了程序逻辑和代码。同时确保系统中所有的程序都能正常运行,所有的功能都能操作,并且该系统有很好的操作体验,实现了对于大学校园防疫与服务系统 对学生管理、教师管理、政府部门双赢。

    二、功能需求分析

    大学校园防疫与服务系统 在对需求做解析后,整个系统主要分为三个部分:管理员、教师和学生,每个模块下的分支功能不一样。对功能做出如下说明:

    2.1学生模块

    账号登录认证。

    管理个人资料信息,修改可修改的信息项。

    出行报备,添加和查询已有出行的记录。

    2.2教师模块

    个人资料管理,修改删除自己的信息。

    学生的添加与查询、出行报备的查询、疫苗接种预约的查询、请假管理的查询与审核请假、销假申请的查询及删除、通知公告的查询。

    2.3管理员模块

    系统用户的管理,管理和添加删除管理员,可以设置登录权限,或者删除所有用户账号。

    教师管理,添加教师的具体信息与查询教师同时也具备删除教师。

    通知公告管理,添加发布公告查询公告和删除公告的功能。

    学生管理,查询学生的信息,也具备修改和删除功能。

    出行报备管理,查询学生出行报备的信息,也具备修改和删除功能。

    疫苗接种预约管理,查询学生疫苗接种的信息,也具备修改和删除功能。

    请假管理,查询学生请假的信息,也具备修改和删除功能。

    销假管理,查询学生销假的信息,也具备修改和删除功能。

    系统管理,系统的备份功能。

    三、前台学生功能

    3.1学生首页模块

    3.2社区互动模块

    3.3新闻资讯模块

    3.4疫苗信息模块 

    3.5学生接种预约模块 

    四、学生后台功能模块

    4.1出行报备管理模块 

    4.2学生接种预约管理模块

    4.3请假管理模块 

    五、教师后台功能模块

    5.1请假管理审核页面 

    六、管理员功能模块

    6.1轮播图管理模块 

    6.2教师管理模块 

    6.3新闻资讯管理模块

    七、部分核心代码

    7.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. }

    7.2接种预约关键代码

    1. @RequestMapping("/get_list")
    2. public Map<String, Object> getList(HttpServletRequest request) {
    3. Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
    4. return success(map);
    5. }

    7.3出行报备关键代码

    1. @RequestMapping("/get_obj")
    2. public Map<String, Object> obj(HttpServletRequest request) {
    3. Query select = service.select(service.readQuery(request), service.readConfig(request));
    4. List resultList = select.getResultList();
    5. if (resultList.size() > 0) {
    6. JSONObject jsonObject = new JSONObject();
    7. jsonObject.put("obj",resultList.get(0));
    8. return success(jsonObject);
    9. } else {
    10. return success(null);
    11. }
    12. }
    13. public Query select(Map<String,String> query,Map<String,String> config){
    14. StringBuffer sql = new StringBuffer("select ");
    15. sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
    16. sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
    17. if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
    18. sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
    19. }
    20. if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
    21. sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
    22. }
    23. if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
    24. int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
    25. int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
    26. sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
    27. }
    28. log.info("[{}] - 查询操作,sql: {}",table,sql);
    29. return runEntitySql(sql.toString());
    30. }

    7.4学生注册的关键代码 

    1. /**
    2. * 注册
    3. * @param user
    4. * @return
    5. */
    6. @PostMapping("register")
    7. public Map<String, Object> signUp(@RequestBody User user) {
    8. // 查询用户
    9. Map<String, String> query = new HashMap<>();
    10. query.put("username",user.getUsername());
    11. List list = service.select(query, new HashMap<>()).getResultList();
    12. if (list.size()>0){
    13. return error(30000, "用户已存在");
    14. }
    15. user.setUserId(null);
    16. user.setPassword(service.encryption(user.getPassword()));
    17. service.save(user);
    18. return success(1);
    19. }
    20. /**
    21. * 用户ID:[0,8388607]用户获取其他与用户相关的数据
    22. */
    23. @Id
    24. @GeneratedValue(strategy = GenerationType.IDENTITY)
    25. @Column(name = "user_id")
    26. private Integer userId;
    27. /**
    28. * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
    29. */
    30. @Basic
    31. @Column(name = "state")
    32. private Integer state;
    33. /**
    34. * 所在用户组:[0,32767]决定用户身份和权限
    35. */
    36. @Basic
    37. @Column(name = "user_group")
    38. private String userGroup;
    39. /**
    40. * 上次登录时间:
    41. */
    42. @Basic
    43. @Column(name = "login_time")
    44. private Timestamp loginTime;
    45. /**
    46. * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
    47. */
    48. @Basic
    49. @Column(name = "phone")
    50. private String phone;
    51. /**
    52. * 手机认证:[0,1](0未认证|1审核中|2已认证)
    53. */
    54. @Basic
    55. @Column(name = "phone_state")
    56. private Integer phoneState;
    57. /**
    58. * 用户名:[0,16]用户登录时所用的账户名称
    59. */
    60. @Basic
    61. @Column(name = "username")
    62. private String username;
    63. /**
    64. * 昵称:[0,16]
    65. */
    66. @Basic
    67. @Column(name = "nickname")
    68. private String nickname;
    69. /**
    70. * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
    71. */
    72. @Basic
    73. @Column(name = "password")
    74. private String password;
    75. /**
    76. * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
    77. */
    78. @Basic
    79. @Column(name = "email")
    80. private String email;
    81. /**
    82. * 邮箱认证:[0,1](0未认证|1审核中|2已认证)
    83. */
    84. @Basic
    85. @Column(name = "email_state")
    86. private Integer emailState;
    87. /**
    88. * 头像地址:[0,255]
    89. */
    90. @Basic
    91. @Column(name = "avatar")
    92. private String avatar;
    93. /**
    94. * 创建时间:
    95. */
    96. @Basic
    97. @Column(name = "create_time")
    98. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    99. private Timestamp createTime;
    100. @Basic
    101. @Transient
    102. private String code;
    103. }

    7.5学生登录的关键代码

    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. JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
    69. user.put("token", accessToken.getToken());
    70. JSONObject ret = new JSONObject();
    71. ret.put("obj",user);
    72. return success(ret);
    73. } else {
    74. return error(30000, "账号或密码不正确");
    75. }
    76. }
  • 相关阅读:
    vba 保存word里面的图片_1分钟批量处理100张图片,有Word在
    阿里面试分享,4面技术5面HR附加笔试面,庆幸已经拿到offer了~
    阿里云海外云服务器5折起,新老用户均可选购(免备案)
    Apipost:API研发团队的协同利器
    在pycharm中创建python模板文件
    KES服务管理和环境变量配置(Kylin)
    关于读者阅读“改良版雪花算法”后提出的几个共性问题的回复
    PLC学习笔记(一):概述
    这几个数据分析项目,让我看到了什么才叫专业!!
    SpringBoot热部署
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/127875711