SpringBoot+Vue项目大学生网络教学平台的设计与实现

目录

一、前言介绍

二、系统功能分析

2.1学生用户管理模块

2.2教师用户管理模块

2.3管理员管理模块

三、前台学生功能

3.1学生首页模块

3.2在线考试模块

3.3校园资讯模块

3.4课程资料模块 

四、管理员功能模块

4.1系统首页模块

4.2教师管理模块 

4.3课程交流管理模块 

4.4在线考试管理模块 

4.5学习统计管理模块 

五、教师后台功能模块

5.1课程管理模块

5.2课程资料管理模块

六、部分核心代码

6.1用户管理关键代码 

6.2站点管理关键代码

6.3系统模块管理关键代码

6.4注册关键代码

6.5登录关键代码

一、前言介绍

系统采用了Java技术,将所有业务模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具选择IDEA来进行系统的设计。基本实现了大学生网络教学平台应有的主要功能模块

近年来,网络技术日新月异,互联网逐渐应用于教育领域,网络课件系统的发展已成为一个全球化的趋势。网络课件系线旨在通过网络共享资源实现帐号注期。用户管理、资料分类、课程资料、学习统计、在线考试、课程交流、论坛分类、校园资讯、新闻分类等功能。他利学生不受时间、空间的限制。进行自主学习。

本文在调查研究现代网络课程系统现状和发展趋势的基础,提出了本课件系统的研究和设计特点。采用Java技术与计算机数据库管理技术相结合的方法来实现本课件系规。在此论文中。阐述了网络课件系线的设计方案。展犹功能模块。本文探讨了本课件系线的多种测试方案,给出测试用例,表明本文提出的设计构想是具有切实的可行性的。

二、系统功能分析

按照大学生网络教学平台的角色,我划分为了学生用户管理模块、教师用户管理模块和管理员管理模块这三大部分。

2.1学生用户管理模块

(1)学生注册登录:学生注册为学生并登录大学生网络教学平台;学生对个人信息的增删改查,比如个人资料,密码修改。

(2)查看大学生网络教学平台的首页信息:大学生网络教学平台的首页信息包含了首页、交流论坛、随堂测试、公告消息、校园资讯、作业发布等。

(3)公告栏:用户在公告这一菜单下对用户提交的查看、同时也可以发布、评论。

(4)校园资讯:用户进行资讯的阅览,查看管理者发布的校园资讯信息。

(5)我的收藏:在“我的”下可以查看管理“我的收藏”信息,可以查看收藏,也可以对不喜欢的信息进行删除收藏;

(6)我的账户:当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料以及登录系统的密码进行设置;

2.2教师用户管理模块

(1)系统内容:管理员可以对大学生网络教学平台中现有的论坛列表、在线考试进行增删改查。

(2)系统模块:在“系统模块”这一菜单下,可以对教师操作的课程管理、课程资料等增删改查。

2.3管理员管理模块

(1)用户管理:管理员可以对前台上注册过的学生用户信息以及教师用户进行管控,也可以对管理员信息进行管控。

(2)系统内容:管理员可以对大学生网络教学平台前台展示的课程交流、论坛分类、校园资讯、新闻分类、在线考试等进行管控。

(3)系统模块:在“系统模块”这一菜单下,可以对管理人员用户操作的课程管理、资料分类、课程资料、学习统计等进行管控。

(4)公共管理:管理员可以对大学生网络教学平台中首页显示的轮播图以及系统中的一些公告发布到系统当中,让用户及时的查看到系统信息,进行合理安排。

三、前台学生功能

3.1学生首页模块

3.2在线考试模块

3.3校园资讯模块

3.4课程资料模块 

四、管理员功能模块

4.1系统首页模块

4.2教师管理模块 

4.3课程交流管理模块 

4.4在线考试管理模块 

4.5学习统计管理模块 

五、教师后台功能模块

5.1课程管理模块

5.2课程资料管理模块

六、部分核心代码

6.1用户管理关键代码 

public String encryption(String plainText) {
 
        String re_md5 = new String();
 
        try {
 
            MessageDigest md = MessageDigest.getInstance("MD5");
 
            md.update(plainText.getBytes());
 
            byte b[] = md.digest();
 
            int i;
 
            StringBuffer buf = new StringBuffer("");
 
            for (int offset = 0; offset < b.length; offset++) {
 
                i = b[offset];
 
                if (i < 0)
 
                    i += 256;
 
                if (i < 16)
 
                    buf.append("0");
 
                buf.append(Integer.toHexString(i));
 
            }
 
            re_md5 = buf.toString();
 
        } catch (Exception e) {
 
            e.printStackTrace();
 
        }
 
        return re_md5;
 
    }

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(value = "/del")
 
    @Transactional
 
    public Map<String, Object> del(HttpServletRequest request) {
 
        service.delete(service.readQuery(request), service.readConfig(request));
 
        return success(1);
 
}
 
    @Transactional
 
    public void delete(Map<String,String> query,Map<String,String> config){
 
        StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");
 
        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));
 
        log.info("[{}] - 删除操作:{}",table,sql);
 
        Query query1 = runCountSql(sql.toString());
 
        query1.executeUpdate();
 
    }

6.4注册关键代码

/**
 
     * 注册

     * @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);
 
}
 
/**
 
     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id
 
    @GeneratedValue(strategy = GenerationType.IDENTITY)
 
    @Column(name = "user_id")
 
    private Integer userId;
 
    /**
 
     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic
 
    @Column(name = "state")
 
    private Integer state;
 
    /**
 
     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic
 
    @Column(name = "user_group")
 
    private String userGroup;
 
    /**
 
     * 上次登录时间:

     */

    @Basic
 
    @Column(name = "login_time")
 
    private Timestamp loginTime;
 
    /**
 
     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic
 
    @Column(name = "phone")
 
    private String phone;
 
    /**
 
     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic
 
    @Column(name = "phone_state")
 
    private Integer phoneState;
 
    /**
 
     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic
 
    @Column(name = "username")
 
    private String username;
 
    /**
 
     * 昵称:[0,16]

     */

    @Basic
 
    @Column(name = "nickname")
 
    private String nickname;
 
    /**
 
     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic
 
    @Column(name = "password")
 
    private String password;
 
    /**
 
     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic
 
    @Column(name = "email")
 
    private String email;
 
    /**
 
     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic
 
    @Column(name = "email_state")
 
    private Integer emailState;
 
    /**
 
     * 头像地址:[0,255]

     */

    @Basic
 
    @Column(name = "avatar")
 
    private String avatar;
 
    /**
 
     * 创建时间:

     */

    @Basic
 
    @Column(name = "create_time")
 
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 
    private Timestamp createTime;
 
    @Basic
 
    @Transient
 
    private String code;
 
}

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多套项目欢迎咨询

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值