• SpringBoot+Vue实现前后端分离的大学生志愿者管理系统


    文末获取源码

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

    目录

    一、前言介绍

    二、系统功能 

    三、系统前台模块

    3.1系统登录页面

    3.2志愿者社团页面

    3.3社团详情页面 

    3.4志愿者活动详情页面 

    3.5个人中心页面 

    四、管理员功能模块 

    4.1用户管理页面 

    4.2新闻资讯管理页面 

    4.3志愿者社团管理页面 

    4.4加团记录管理页面 

    4.5报名记录管理页面 

    五、学生功能模块 

    5.1学生信誉值

    5.2报名记录 

    六、部分核心代码

    6.1站点管理关键代码 

    6.2用户管理关键代码

    6.3报名记录关键代码

    6.4登录系统主要代码


    一、前言介绍

    技术可行性指的是对于搭建框架的可行性,以及有更优秀的技术出现时系统的技术更新换代的纳新性如何,开发时间成本费用比如何。现有的Java技术能够迎合所有电子商务系统的搭建。开发这个大学生志愿者管理系统的时候我采用了Java+MYSQL用以运行整体程序。

    本设计主要实现集人性化、高效率、便捷等优点于一身的大学生志愿者管理系统,主要实现功能:学生信誉值、志愿者社团、志愿者活动、加团记录、报名记录、学校劳动、参加记录、等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。只需通过一台电脑,动动手指就可以操作系统,实现数据通信管理。整个系统的设计过程都充分考虑了数据的安全、稳定及可靠等问题,而且操作过程简单。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。

    二、系统功能 

    本大学生志愿者管理系统主要包括两大功能模块,即管理员、学生功能模块。

    (1)前台学生:首页、留言板、公告消息、新闻资讯、志愿者社团、志愿者活动、学校劳动、我的(我的账户、个人中心、退出)。 

    (2)学生后台: 学生信誉值、加团记录、报名记录、参加记录 

    (3)管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员来管理后台系统。主要功能有:站点管理(轮播图、公告栏),用户管理(管理员、学生用户),内容管理(留言板、留言板分类、新闻资讯、新闻分类),更多管理(学生信誉值、志愿者社团、志愿者活动、加团记录、报名记录、学校劳动、参加记录) 

    三、系统前台模块

    3.1系统登录页面

    3.2志愿者社团页面

    3.3社团详情页面 

    3.4志愿者活动详情页面 

    3.5个人中心页面 

    四、管理员功能模块 

    4.1用户管理页面 

    4.2新闻资讯管理页面 

    4.3志愿者社团管理页面 

    4.4加团记录管理页面 

    4.5报名记录管理页面 

    五、学生功能模块 

    5.1学生信誉值

    5.2报名记录 

    六、部分核心代码

    6.1站点管理关键代码 

    1. @RequestMapping(value = "/del")
    2. @Transactional
    3. public Map del(HttpServletRequest request) {
    4. service.delete(service.readQuery(request), service.readConfig(request));
    5. return success(1);
    6. }

    6.2用户管理关键代码

    1. public List selectBaseList(String select) {
    2. List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
    3. List<E> list = new ArrayList<>();
    4. for (Map<String,Object> map:mapList) {
    5. list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
    6. }
    7. return list;
    8. }

    6.3报名记录关键代码

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

    6.4登录系统主要代码

    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. QueryWrapper wrapper = new QueryWrapper<User>();
    16. Map<String, String> map = new HashMap<>();
    17. if(username != null && "".equals(username) == false){
    18. map.put("username", username);
    19. resultList = service.selectBaseList(service.select(map, new HashMap<>()));
    20. }
    21. else if(email != null && "".equals(email) == false){
    22. map.put("email", email);
    23. resultList = service.selectBaseList(service.select(map, new HashMap<>()));
    24. }
    25. else if(phone != null && "".equals(phone) == false){
    26. map.put("phone", phone);
    27. resultList = service.selectBaseList(service.select(map, new HashMap<>()));
    28. }else{
    29. return error(30000, "账号或密码不能为空");
    30. }
    31. if (resultList == null || password == null) {
    32. return error(30000, "账号或密码不能为空");
    33. }
    34. //判断是否有这个用户
    35. if (resultList.size()<=0){
    36. return error(30000,"用户不存在");
    37. }
    38. User byUsername = (User) resultList.get(0);
    39. Map<String, String> groupMap = new HashMap<>();
    40. groupMap.put("name",byUsername.getUserGroup());
    41. List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
    42. if (groupList.size()<1){
    43. return error(30000,"用户组不存在");
    44. }
    45. UserGroup userGroup = (UserGroup) groupList.get(0);
    46. //查询用户审核状态
    47. if (!StringUtils.isEmpty(userGroup.getSourceTable())){
    48. String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
    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. }
    77. public String select(Map<String,String> query,Map<String,String> config){
    78. StringBuffer sql = new StringBuffer("select ");
    79. sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
    80. sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
    81. if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
    82. sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
    83. }
    84. if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
    85. sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
    86. }
    87. if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
    88. int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
    89. int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
    90. sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
    91. }
    92. log.info("[{}] - 查询操作,sql: {}",table,sql);
    93. return sql.toString();
    94. }
    95. public List selectBaseList(String select) {
    96. List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
    97. List<E> list = new ArrayList<>();
    98. for (Map<String,Object> map:mapList) {
    99. list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
    100. }
    101. return list;
    102. }
  • 相关阅读:
    这是什么是
    C++求解一元一次方程——LeetCode 640
    2022-01-28-JQuery
    AWS考试认证学习
    Unity扩展UGUI组件多态按钮MultimodeButton
    Unittest单元自动化测试框架-知识点总结
    学会用数据分析汇报工作,升职加薪指日可待
    springboot中Configuration注解和Component注解功能的区别和联系?
    Cerebral Cortex:疼痛热刺激引起的脑功能网络分离与整合
    流程审批动作概述
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/128153734