• 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课程选课详细模块

    四、管理员功能模块

    4.1学生用户管理模块

    4.2课程资讯管理模块 

    4.3教室信息管理模块

    五、学生用户功能模块

    5.1课程选课模块

    5.2课程打分模块

    六、部分核心代码 

    6.1首页界面的关键代码 

    6.2选课添加关键代码

    6.3课程打分管理关键代码

    6.4课程资讯关键代码

    6.5用户登录的逻辑代码


    一、前言介绍

    多元化智能选课系统的主要使用者分为学生、教师、管理员,实现功能包括,管理员:个人中心、课程管理、教室信息管理、课程选课、班级管理、通知公告管理、课程评价管理、管理员管理。学生:个人资料修改、学生选课管理、课程查询、课程打分、课程资讯等。教师:个人资料修改、课程管理、学生选课管理、学生成绩管理、课程打分、资讯分类等功能。由于本网站的功能模块设计比较全面,所以使得整个多元化智能选课系统信息管理的过程得以实现。本系统的使用可以实现学生选课系统管理的信息化,可以方便管理员进行更加方便快捷的管理,可以提高学生选课系统的管理效率。

    多元化智能选课系统使用Java语言的Springboot框架,采用MVVM模式进行开发,数据方面主要采用的是微软的Mysql关系型数据库来作为数据存储媒介,配合前台技术完成系统的开发。 

    二、功能需求分析

    多元化智能选课系统在对需求做解析后,整个系统主要分为两个部分:管理员和教师、学生,每个模块下的分支功能不一样。对功能做出如下说明:

    2.1学生模块

    账号登录认证。

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

    课程选课,同时查看历史已选课的记录。

    查看通知公告。

    查看课程信息。

    发布课程打分。

    2.2教师模块

    查看课程信息。

    查看学生选课情况。

    查看学生提交的课程评价。

    查看通知公告。

    2.3管理员模块

    用户管理,可以冻结用户的登录权限,或者删除用户账号。

    管理课程,对课程数进行增删改查的操作,包括课程编号,课程名称,上课时间,上课地点,教师等。

    管理学生选课。

    发布通知公告以及公告的维护。

    管理课程评价等模块。

    三、前台学生功能

    3.1学生首页模块

    3.2课程资讯模块

    3.3课程信息模块 

    3.4课程选课详细模块

    四、管理员功能模块

    4.1学生用户管理模块

    4.2课程资讯管理模块 

    4.3教室信息管理模块

    五、学生用户功能模块

    5.1课程选课模块

    5.2课程打分模块

    六、部分核心代码 

    6.1首页界面的关键代码 

    1. server:
    2. port: 5000
    3. servlet:
    4. context-path: /api
    5. spring:
    6. datasource:
    7. url: jdbc:mysql://127.0.0.1:3306/CS725260_20211101091736?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
    8. username: root
    9. password: root
    10. driver-class-name: com.mysql.cj.jdbc.Driver
    11. jackson:
    12. property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
    13. default-property-inclusion: ALWAYS
    14. time-zone: GMT+8
    15. date-format: yyyy-MM-dd HH:mm:ss
    16. servlet:
    17. multipart:
    18. max-file-size: 100MB
    19. max-request-size: 100MB

    6.2选课添加关键代码

    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. }
    12. public Map<String,Object> readBody(BufferedReader reader){
    13. BufferedReader br = null;
    14. StringBuilder sb = new StringBuilder("");
    15. try{
    16. br = reader;
    17. String str;
    18. while ((str = br.readLine()) != null){
    19. sb.append(str);
    20. }
    21. br.close();
    22. String json = sb.toString();
    23. return JSONObject.parseObject(json, Map.class);
    24. }catch (IOException e){
    25. e.printStackTrace();
    26. }finally{
    27. if (null != br){
    28. try{
    29. br.close();
    30. }catch (IOException e){
    31. e.printStackTrace();
    32. }
    33. }
    34. }
    35. return null;
    36. }
    37. public void insert(Map<String,Object> body){
    38. StringBuffer sql = new StringBuffer("INSERT INTO ");
    39. sql.append("`").append(table).append("`").append(" (");
    40. for (Map.Entry<String,Object> entry:body.entrySet()){
    41. sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
    42. }
    43. sql.deleteCharAt(sql.length()-1);
    44. sql.append(") VALUES (");
    45. for (Map.Entry<String,Object> entry:body.entrySet()){
    46. Object value = entry.getValue();
    47. if (value instanceof String){
    48. sql.append("'").append(entry.getValue()).append("'").append(",");
    49. }else {
    50. sql.append(entry.getValue()).append(",");
    51. }
    52. }
    53. sql.deleteCharAt(sql.length() - 1);
    54. sql.append(")");
    55. log.info("[{}] - 插入操作:{}",table,sql);
    56. Query query = runCountSql(sql.toString());
    57. query.executeUpdate();
    58. }

    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. @RequestMapping(value = {"/avg_group", "/avg"})
    2. public Map<String, Object> avg(HttpServletRequest request) {
    3. Query count = service.avg(service.readQuery(request), service.readConfig(request));
    4. return success(count.getResultList());
    5. }

    6.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. }
  • 相关阅读:
    【Mybatis】Mybatis的工作原理
    【Presto Profile系列】Timeline使用
    Ubuntu系统设置
    Win10 ping 虚拟机kali 请求超时解决办法
    ReadingTime-十一月
    SAP-MM-销售订单库存转移到普通库存
    【NGINX--3】流量管理
    产品经理的秘密武器:提高效率的 6 种软件工具
    【开源电路】ST-LINK/V2、ST-LINK/V2-1、DAP-LINK烧录器(已验证)
    【前端知识之JS】关于数据处理的手写代码汇总
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/127804376