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

目录

一、前言介绍 

二、系统功能分析 

2.1学生用户管理模块

2.2教师用户管理模块

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站点管理关键代码

5.3更多管理关键代码

5.4注册关键代码


一、前言介绍 

随着高校的发展,传统的教学管理模式已不能满足现代社会对人才的需求。因此,各院校纷纷开始建设自己的教学管理系统来提高教学质量和管理效率。然而在实际应用中发现:现有系统存在着许多缺陷,如开发时间长,维护困难等。为了解决这些问题,本文提出了一个基于B/S模式的网络教学系统设计方案,该方案利用Java语言实现了一个具有良好可扩展性和可维护性的教学管理信息系统。 

本系统以java为开发技术,实现了一个教学管理平台。教学管理平台的主要使用者分为管理员、学生和辅导员;管理员功能分为:首页、站点管理(公告栏、轮播图)用户管理(管理员、学生用户、教师用户)内容管理(论坛列表、论坛分类列表、校园资讯、校园资讯分类、随堂测试)更多管理(作业发布、作业提交、成绩信息、留言反馈)等功能。通过这些功能模块的设计,基本上实现了整个教学管理平台管理的过程。具体在系统设计上,采用了B/S的结构,同时,也使用java技术在动态页面上进行了设计,后台上采用Mysql数据库,是一个非常优秀的教学管理平台 。

二、系统功能分析 

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

2.1学生用户管理模块

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

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

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

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

2.2教师用户管理模块

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

(2)内容管理:管理员可以对教学管理平台中现有的论坛列表、论坛分类列表、校园资讯、校园资讯分类、随堂测试进行增删改查。

(3)更多管理:在“更多管理”这一菜单下,可以对教师人员用户操作的作业发布、作业提交、成绩信息、留言反馈等增删改查。

2.3管理员管理模块

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

(2)交流论坛管理:管理员在后台可以对教学管理平台中显示的交流论坛进行增删改查。

(3)内容管理:管理员可以对教学管理平台前台展示的论坛分类、论坛分类列表、校园资讯及校园资讯分类、随堂测试的分类进行管控。

(4)更多管理:在“更多管理”这一菜单下,可以对管理人员用户操作的作业发布、作业提交、成绩信息、留言反馈以及在前台用户提交的交流论坛、随堂测试、公告消息、校园资讯、作业发布等进行管控。

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

三、前台用户功能

3.1用户首页模块

3.2随堂测试模块 

3.3校园资讯模块

3.4作业发布模块

3.5作业发布信息模块 

四、管理员功能模块 

4.1教师用户管理模块

4.2校园资讯管理模块

4.3随堂测试管理模块

4.4作业发布管理模块 

4.5成绩信息管理模块

 

五、部分核心代码 

5.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;

    }

5.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();

    }

5.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();

    }

5.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;

}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一季春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值