SpringBoot+Vue项目智能选课系统

目录

一、前言介绍

二、功能需求分析

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首页界面的关键代码 

server:
 
  port: 5000
 
  servlet:
 
    context-path: /api
 
spring:
 
  datasource:
 
    url: jdbc:mysql://127.0.0.1:3306/CS725260_20211101091736?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
 
    username: root
 
    password: root
 
    driver-class-name: com.mysql.cj.jdbc.Driver
 
  jackson:
 
    property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
 
    default-property-inclusion: ALWAYS
 
    time-zone: GMT+8
 
    date-format: yyyy-MM-dd HH:mm:ss
 
  servlet:
 
    multipart:
 
      max-file-size: 100MB
 
      max-request-size: 100MB

6.2选课添加关键代码

  @PostMapping("/add")
 
    @Transactional
 
    public Map<String, Object> add(HttpServletRequest request) throws IOException {
 
        service.insert(service.readBody(request.getReader()));
 
        return success(1);
 
    }
 
    @Transactional
 
    public Map<String, Object> addMap(Map<String,Object> map){
 
        service.insert(map);
 
        return success(1);
 
}
 
    public Map<String,Object> readBody(BufferedReader reader){
 
        BufferedReader br = null;
 
        StringBuilder sb = new StringBuilder("");
 
        try{
 
            br = reader;
 
            String str;
 
            while ((str = br.readLine()) != null){
 
                sb.append(str);
 
            }
 
            br.close();
 
            String json = sb.toString();
 
            return JSONObject.parseObject(json, Map.class);
 
        }catch (IOException e){
 
            e.printStackTrace();
 
        }finally{
 
            if (null != br){
 
                try{
 
                    br.close();
 
                }catch (IOException e){
 
                    e.printStackTrace();
 
                }
 
            }
 
        }
 
        return null;
 
}
 
    public void insert(Map<String,Object> body){
 
        StringBuffer sql = new StringBuffer("INSERT INTO ");
 
        sql.append("`").append(table).append("`").append(" (");
 
        for (Map.Entry<String,Object> entry:body.entrySet()){
 
            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
 
        }
 
        sql.deleteCharAt(sql.length()-1);
 
        sql.append(") VALUES (");
 
        for (Map.Entry<String,Object> entry:body.entrySet()){
 
            Object value = entry.getValue();
 
            if (value instanceof String){
 
                sql.append("'").append(entry.getValue()).append("'").append(",");
 
            }else {
 
                sql.append(entry.getValue()).append(",");
 
            }
 
        }
 
        sql.deleteCharAt(sql.length() - 1);
 
        sql.append(")");
 
        log.info("[{}] - 插入操作:{}",table,sql);
 
        Query query = runCountSql(sql.toString());
 
        query.executeUpdate();
 
    }

6.3课程打分管理关键代码

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

6.4课程资讯关键代码

  @RequestMapping(value = {"/avg_group", "/avg"})
 
public Map<String, Object> avg(HttpServletRequest request) {
 
        Query count = service.avg(service.readQuery(request), service.readConfig(request));
 
        return success(count.getResultList());
 
}

6.5用户登录的逻辑代码

/**
 
     * 登录

     * @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, "账号或密码不正确");
 
        }
 
}

 

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

2600多套项目欢迎咨询

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
物流管理系统是一个集成了物流信息的处理、调度、跟踪和管理功能的应用系统SpringBoot是一个快速开发框架,提供了便捷的配置和快速构建应用程序的能力。Vue是一个流行的前端框架,用于构建用户界面。 为了实现物流管理系统,我们可以使用SpringBoot构建后端,使用Vue构建前端。在后端方面,我们可以使用SpringBoot提供的特性来管理用户账户、管理物流订单、管理配送人员等等。可以使用Spring Security进行身份验证和授权控制,保证系统的安全性。使用Spring Data JPA可以方便地与数据库交互,存储和查询物流信息。同时可以使用Spring Boot的集成测试功能进行测试,保证系统的稳定性。 在前端方面,使用Vue来构建用户界面,可以借助Vue Router实现路由管理,实现用户之间的页面跳转。同时使用Vue的组件化开发方式,可以将不同的功能模块拆分成独立的组件进行开发,提高代码的复用性和可维护性。同时,可以使用Vue的状态管理工具Vuex,实现不同组件之间的状态共享和管理。在用户界面设计方面,可以使用Vue的UI框架Element UI,提供美观、易用的UI组件。 总的来说,使用SpringBootVue来开发物流管理系统可以提高开发效率和系统性能。SpringBoot提供了稳定可靠的后端框架,Vue提供了灵活方便的前端框架,两者结合可以实现一个高效、功能完善的物流管理系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值