计算机毕业设计java数学辅导微信小程序ssmvue毕设

第五章系统功能实现及主要代码

一、技术路线:

开发语言:Java

前端技术:JavaScript、VUE.js(2.X)、css3

数据库:MySQL 5.7

数据库管理工具:Navicat或sqlyog开发工具:IDEA或Ecplise


二、项目介绍:

https://www.bilibili.com/video/BV1LM411Q7ty/三、运行截图:



3.1小程序端

登录,用户通过输入账号和密码,选择角色并点击登录进入系统进行操作,如图3-1所示。

a8a3415896dc353bf3426a4c50265bc8.jpeg

图3-1登录界面图

实现的代码如下:

form.on('submit(login)', function(data) {

                data = data.field;

                if (vue.roles.length!=1) {

if (!data.role) {

    layer.msg('请选择登录用户类型', {

time: 2000,

icon: 5

    });

    return false;

}

                } else {

                        data.role = vue.roles[0].tableName;

                }

                http.request(data.role + '/login', 'get', data, function(res) {

                    layer.msg('登录成功', {

                        time: 2000,

                        icon: 6

                    });

                    // 登录凭证

                    localStorage.setItem('Token', res.token);

                    var roleName = "";

                    if(typeof(jquery('#role:checked').attr('title')) == "undefined") {

roleName = vue.roles[0].roleName;

                    } else {

roleName = jquery('#role:checked').attr('title');

                    }

                    localStorage.setItem('role', roleName);

                    // 当前登录用户角色

                    localStorage.setItem('userTable', data.role);

                    localStorage.setItem('sessionTable', data.role);

                    // 用户名称

                    localStorage.setItem('adminName', data.username);

                    http.request(data.role + '/session', 'get', {}, function(res) {

                        // 用户id

                        localStorage.setItem('userid', res.data.id);

if(res.data.vip) {

localStorage.setItem('vip', res.data.vip);

}

                        // 路径访问设置

                        window.location.href = '../../index.html';

                    })

                });

                return false

            });

        });

        /**

         * 跳转登录

         * @param {Object} tablename

         */

        function registerClick(tablename) {

            window.location.href = '../' + tablename + '/register.html?tablename=' + tablename;

        }

用户注册,在注册页面通过填写账号、密码、确认密码、姓名、性别、年龄、手机等信息进行用户注册操作;如图3-2所示。

a5d680a647a930828bd0dac9c49a2a3b.jpeg

图3-2用户注册界面图

实现的代码如下:

*/

@IgnoreAuth

    @RequestMapping("/register")

    public R register(@RequestBody YonghuEntity yonghu){

//ValidatorUtils.validateEntity(yonghu);

YonghuEntity user = yonghuService.selectOne(new EntityWrapper().eq("yonghuming", yonghu.getYonghuming()));

if(user!=null) {

return R.error("注册用户已存在");

}

Long uId = new Date().getTime();

yonghu.setId(uId);

        yonghuService.insert(yonghu);

        return R.ok();

    }

用户登陆小程序端,可以对首页、学习中心、考试、我的等功能进行详细操作,如图3-3所示。

5b668fe98dbc330bcb5e55b41e41985b.jpeg

图3-3小程序端首页界面图

实现的代码如下:

methods: {

        jump(url) {

if (this.queryIndex == 0) {

localStorage.setItem('indexQueryCondition', document.getElementById("dianyingxinxidianyingmingcheng").value);

}

jump(url)

        },

queryChange(event) {

this.queryIndex = event.target.value;

if (this.queryIndex == 0) {

this.dianyingxinxidianyingmingcheng = this.queryList[event.target.value].queryName;

}

}

      }

    });

    layui.use(['layer', 'form', 'element', 'carousel', 'http', 'jquery'], function() {

var layer = layui.layer;

var element = layui.element;

var form = layui.form;

var carousel = layui.carousel;

var http = layui.http;

var jquery = layui.jquery;

vue.baseurl=http.baseurl;

      // 获取轮播图 数据

      http.request('config/list', 'get', {

        page: 1,

        limit: 5

      }, function(res) {

        if (res.data.list.length > 0) {

          let swiperList = [];

          res.data.list.forEach(element => {

            if (element.value != null) {

              swiperList.push({

                img: http.baseurl + element.value

              });

            }

          });

  vue.swiperList = swiperList;

  vue.$nextTick(() => {

    carousel.render({

elem: '#test1',

width: '89.6%',

height: '500px',

arrow: 'hover',

anim: 'default',

autoplay: 'true',

interval: '3000',

indicator: 'inside'

    });

  })

          // vue.$nextTick(()=>{

          // window.xznSlide();

          // });

        }

      });

      http.request('news/list', 'get', {

        page: 1,

        order: 'desc'

      }, function(res) {

        var newsList = res.data.list;

for(var i = 0; i

let d = newsList[i].addtime.split(' ')

d = d[0].split('-')

newsList[i].year = d[0]

newsList[i].month = d[1] + '-' + d[2]

}

        vue.newsList = newsList;

        if (newsList.length > 0 && newsList.length

          vue.leftNewsList = res.data.list

        } else {

          var leftNewsList = []

          for (let i = 0; i

            leftNewsList.push(newsList[i]);

          }

          vue.leftNewsList = leftNewsList

        }

        if (newsList.length > 2 && newsList.length

          var rightNewsList = []

          for (let i = 3; i

            rightNewsList.push(newsList[i]);

          }

          vue.rightNewsList = rightNewsList

        }

let flag = 10;

let options = {"navigation":{"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},"slidesPerView":5,"loop":true,"spaceBetween":20,"autoplay":{"delay":3000,"disableOnInteraction":false}}

options.pagination = {el:'null'}

if(flag == 3) {

vue.$nextTick(() => {

new Swiper('#newsnews', options)

})

}

if(flag == 6) {

let sixSwiper = {

loop: true,

speed: 2500,

slidesPerView: 3,

spaceBetween: 10,

centeredSlides: true,

watchSlidesProgress: true,

autoplay: {

  delay: 0,

  stopOnLastSlide: false,

  disableOnInteraction: false

}

}

vue.$nextTick(() => {

new Swiper('#new-list-6', sixSwiper)

})

}

      });

      // 获取推荐信息

      var autoSortUrl = "dianyingxinxi/autoSort";

      if(localStorage.getItem('userid')!=null) {

  autoSortUrl = "dianyingxinxi/autoSort2";

      }

      http.request(autoSortUrl, 'get', {

        page: 1,

limit: 3 * 1

}, function(res) {

vue.dianyingxinxiRecommend = res.data.list

let flag = 1;

let options = {"navigation":{"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},"slidesPerView":5,"loop":true,"spaceBetween":20,"autoplay":{"delay":3000,"disableOnInteraction":false}}

options.pagination = {el:'null'}

if(flag == 3) {

vue.$nextTick(() => {

new Swiper('#recommenddianyingxinxi', options)

})

}

if(flag == 5) {

vue.$nextTick(() => {

var swiper = new Swiper('#recommend-five-swiperdianyingxinxi', {

loop: true,

speed: 500,

slidesPerView: 5,

spaceBetween: 10,

autoplay: {"delay":3000,"disableOnInteraction":false},

centeredSlides: true,

watchSlidesProgress: true,

on: {

setTranslate: function() {

slides = this.slides

for (i = 0; i < slides.length; i++) {

slide = slides.eq(i)

progress = slides[i].progress

// slide.html(progress.toFixed(2)); //看清楚progress是怎么变化的

slide.css({

'opacity': '',

'background': ''

});

slide.transform(''); //清除样式

slide.transform('scale(' + (1.5 - Math.abs(progress) / 4) + ')');

}

},

setTransition: function(transition) {

for (var i = 0; i < this.slides.length; i++) {

var slide = this.slides.eq(i)

slide.transition(transition);

}

},

},

navigation: {"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},

pagination: {"el":".swiper-pagination","clickable":true},

});

})

}

});

&nbsp;&nbsp;});

学习中心,在学习中心页面可以查看知识名称、知识类型、封面、所属年级、上传日期、点击次数、知识简介等信息,并根据需要进行评论或收藏操作;如图3-4所示。

316d89aff78ce2ad7325c68ca776b1ae.jpeg

图3-4学习中心界面图

用户,在我的页面可以对个人中心、学习周报、我的收藏管理、考试记录、错题本等详细信息进行操作,如图3-5所示。

f686ea4f85721ea62b8bec72cb6f155f.jpeg

图3-5用户功能界面图

用户信息,在用户信息页面通过填写账号、密码、姓名、性别、年龄、手机、头像等详细信息进行保存或退出登录操作,如图3-6所示。

4d9f3838d99f0e657bec8b5e0e7491b0.jpeg

图3-6用户信息界面图

3.2管理员功能模块

管理员登录,管理员通过输入账号、密码,选择角色并点击登录进行系统登录操作,如图3-7所示。

708bd89be6bf7542bade825b109451d5.jpeg

图3-7管理员登录界面图

实现的代码如下:

mounted() {

let menus = menu.list();

this.menus = menus;

&nbsp;&nbsp;},

&nbsp;&nbsp;created() {

&nbsp;&nbsp;&nbsp;&nbsp;this.getRandCode()

&nbsp;&nbsp;},

&nbsp;&nbsp;methods: {

&nbsp;&nbsp;&nbsp;&nbsp;register(tableName){

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$storage.set("loginTable", tableName);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$router.push({path:'/register'})

&nbsp;&nbsp;&nbsp;&nbsp;},

&nbsp;&nbsp;&nbsp;&nbsp;// 登陆

&nbsp;&nbsp;&nbsp;&nbsp;login() {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!this.rulesForm.username) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$message.error("请输入用户名");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!this.rulesForm.password) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$message.error("请输入密码");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!this.rulesForm.role) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$message.error("请选择角色");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let menus = this.menus;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (let i = 0; i < menus.length; i++) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (menus[i].roleName == this.rulesForm.role) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.tableName = menus[i].tableName;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$http({

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url: `${this.tableName}/login?username=${this.rulesForm.username}&password=${this.rulesForm.password}`,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: "post"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}).then(({ data }) => {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (data && data.code === 0) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$storage.set("Token", data.token);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$storage.set("role", this.rulesForm.role);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$storage.set("sessionTable", this.tableName);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$storage.set("adminName", this.rulesForm.username);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$router.replace({ path: "/index/" });

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$message.error(data.msg);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});

},

管理员登陆系统后,可以对首页、个人中心、用户管理、学习中心管理、知识分类管理、学习周报管理、口算练习管理、试题管理、系统管理、考试管理等功能进行相应操作,如图3-8所示。

bba6800f70e52878f45d12f0f2dd189f.jpeg

图3-8管理员功能界面图

用户管理,在用户管理页面可以对索引、账号、姓名、性别、年龄、手机、头像等内容进行详情、修改或删除等操作,如图3-9所示。

21ee94bf0764de767257095656b21e09.jpeg

图3-9用户管理界面图

学习中心管理,在学习中心管理页面可以对索引、知识名称、知识类型、所属年级、分析视频、上传日期、知识图片等内容进行详情,修改,查看评论或删除操作,如图3-10所示。

8c517476de26e26c1d90475165613ced.jpeg

图3-10学习中心管理界面图

知识分类管理,在知识分类管理页面可以对索引、类型等内容进行修改和删除操作,如图3-11所示。

bba97394548a7dbffa9637fb6640a2b9.jpeg

图3-11知识分类管理界面图

学习周报管理,在学习周报管理页面可以对索引、周报标题、周报日期、周报图片、账号、姓名等内容进行详情或删除操作,如图3-12所示。

7387476d04b9fd7accd13e3e5573a487.jpeg

图3-12学习周报管理界面图

口算练习管理,在口算练习管理页面可以对索引、口算练习名称、考试时长(分钟)、口算练习状态等内容进行详情,修改或删除等操作,如图3-13所示。

e81d2bbc91f6786c1fb8017c03b6e743.jpeg

图3-13口算练习管理界面图

试题管理,在试题管理页面可以对口算练习、试题名称、分值、答案、类型等内容进行修改和删除操作,如图3-14所示。

f1998ce1a9643c919ff011726fd221c0.jpeg

图3-14试题管理界面图

系统管理,在公告信息页面可以对索引、标题、图片等内容进行详情,修改或删除操作;还可以对轮播图管理进行详细操作;如图3-15所示。

5cc4bf1a71612cc1f979b3b0ad1f6b53.jpeg

图3-15系统管理界面图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值