基于java+ssm+vue的云上考场微信小程序

项目介绍

随着互联网技术和通讯技术的快速发展、成熟,两者最终结合到了一起,即移动互联网。移动互联网时代的到来,微信的普及,致使基于微信小程序的系统越来越多,因此,针对用户对各类考试信息查询、模拟考试练习以及交流方面的需求,特开发了本云上考场微信小程序。

本文重点阐述了云上考场微信小程序的开发过程,以实际运用为开发背景,基于微信平台,运用了Java技术和MYSQL作为系统数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,满足了不同权限用户的功能需求,包括管理员和用户。

本云上考场微信小程序运行效果稳定,操作方便、快捷,界面友好,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的云上考场综合平台。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,微信开发者工具,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net

系统实现

5.1 用户功能模块的实现
5.1.1 用户注册界面
未有账号的用户可进入注册界面进行注册操作,注册信息包括用户名、密码、姓名、手机以及邮箱,用户注册界面展示如图5-1所示。
在这里插入图片描述

图5-1 用户注册界面

5.1.2 用户登录界面
用户在登录界面输入正确的账号和密码,点击登录按钮进行登录操作,用户登录界面展示如图5-2所示。
在这里插入图片描述

图5-2 用户登录界面

5.1.3首页界面
用户在首页界面可根据自己需求查看相关信息,首页界面展示如图5-3所示。
在这里插入图片描述

图5-3 首页界面

5.1.4 试卷列表界面
用户在试卷列表界面可查看已有试卷信息,并可选择进行考试,试卷列表界面展示如图5-4所示。
在这里插入图片描述在这里插入图片描述

图 5-4 试卷列表界面

5.1.5考试记录界面
用户可查看个人考试记录信息,考试记录界面展示如图5-5所示。
在这里插入图片描述

图 5-5 考试记录界面

5.1.6社区界面
用户在社区界面可查看已有帖子信息,并可查看帖子详情,社区界面展示如图5-6所示。
在这里插入图片描述
在这里插入图片描述

图 5-6 社区界面

5.1.7我的界面
用户在我的界面可选择进行查看面试讲解、错题本、试卷列表、考试记录、客服中心、我要发帖以及我的发帖等,我的界面展示如图5-7所示。
在这里插入图片描述

图 5-7 我的界面

5.1.8面试讲解界面
用户在面试讲解界面可查看所有面试讲解信息,并可选择查看详情,面试讲解界面展示如图5-8所示。
在这里插入图片描述

图 5-8 面试讲解界面

5.2 管理员功能模块的实现
5.2.1管理员登录界面
管理员要想进入系统后台进行管理操作,必须登录系统后台,管理员登录界面展示如图5-9所示。
在这里插入图片描述

图5-9 管理员登录界面

5.2.2用户管理界面
管理员在用户管理界面可查看已有用户信息,对已有用户信息可进行修改和删除操作,同时管理员也可添加用户信息,用户管理界面展示如图5-10所示。
在这里插入图片描述

图5-10 用户管理界面

5.2.3试卷管理界面
管理员可添加、修改和删除试卷信息,试卷管理界面展示如图5-11所示。
在这里插入图片描述

图5-11 试卷管理界面

5.2.4面试讲解管理界面
管理员可进行面试讲解管理操作,对已有面试讲解信息可进行修改和删除操作,同时管理员也可添加面试讲解信息,面试讲解管理界面展示如图5-12所示。
在这里插入图片描述

图5-12 面试讲解管理界面

5.2.5试题管理界面
管理员可增删改查试题信息,试题管理界面展示如图5-13所示。
在这里插入图片描述

图5-13 试题管理界面

5.2.6社区管理界面
管理员可查看所有帖子信息,并可对其进行修改和删除操作,也可添加帖子,社区管理界面展示如图5-14所示。
在这里插入图片描述

图5-14 社区管理界面

5.2.7考试记录界面
管理员可查看所有考试记录信息,考试记录界面展示如图5-15所示。
在这里插入图片描述

图5-15 考试记录界面

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.JiaoshizigezhengEntity;
import com.entity.view.JiaoshizigezhengView;

import com.service.JiaoshizigezhengService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 教师资格证
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/jiaoshizigezheng")
public class JiaoshizigezhengController {
    @Autowired
    private JiaoshizigezhengService jiaoshizigezhengService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,JiaoshizigezhengEntity jiaoshizigezheng, 
		HttpServletRequest request){

        EntityWrapper<JiaoshizigezhengEntity> ew = new EntityWrapper<JiaoshizigezhengEntity>();
		PageUtils page = jiaoshizigezhengService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaoshizigezheng), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,JiaoshizigezhengEntity jiaoshizigezheng, HttpServletRequest request){
        EntityWrapper<JiaoshizigezhengEntity> ew = new EntityWrapper<JiaoshizigezhengEntity>();
		PageUtils page = jiaoshizigezhengService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaoshizigezheng), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( JiaoshizigezhengEntity jiaoshizigezheng){
       	EntityWrapper<JiaoshizigezhengEntity> ew = new EntityWrapper<JiaoshizigezhengEntity>();
      	ew.allEq(MPUtil.allEQMapPre( jiaoshizigezheng, "jiaoshizigezheng")); 
        return R.ok().put("data", jiaoshizigezhengService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(JiaoshizigezhengEntity jiaoshizigezheng){
        EntityWrapper< JiaoshizigezhengEntity> ew = new EntityWrapper< JiaoshizigezhengEntity>();
 		ew.allEq(MPUtil.allEQMapPre( jiaoshizigezheng, "jiaoshizigezheng")); 
		JiaoshizigezhengView jiaoshizigezhengView =  jiaoshizigezhengService.selectView(ew);
		return R.ok("查询教师资格证成功").put("data", jiaoshizigezhengView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        JiaoshizigezhengEntity jiaoshizigezheng = jiaoshizigezhengService.selectById(id);
        return R.ok().put("data", jiaoshizigezheng);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        JiaoshizigezhengEntity jiaoshizigezheng = jiaoshizigezhengService.selectById(id);
        return R.ok().put("data", jiaoshizigezheng);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody JiaoshizigezhengEntity jiaoshizigezheng, HttpServletRequest request){
    	jiaoshizigezheng.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiaoshizigezheng);

        jiaoshizigezhengService.insert(jiaoshizigezheng);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody JiaoshizigezhengEntity jiaoshizigezheng, HttpServletRequest request){
    	jiaoshizigezheng.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiaoshizigezheng);

        jiaoshizigezhengService.insert(jiaoshizigezheng);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody JiaoshizigezhengEntity jiaoshizigezheng, HttpServletRequest request){
        //ValidatorUtils.validateEntity(jiaoshizigezheng);
        jiaoshizigezhengService.updateById(jiaoshizigezheng);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        jiaoshizigezhengService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<JiaoshizigezhengEntity> wrapper = new EntityWrapper<JiaoshizigezhengEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = jiaoshizigezhengService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

 

论文参考

在这里插入图片描述

目 录
1 绪论 1
1.1 研究背景 1
1.2 设计原则 1
1.3 论文组织结构 2
2 关键技术简介 3
2.1 微信小程序 3
2.2微信Web开发者工具 3
2.3微信小程序API接口 3
2.4 WXML 、WXS、JS小程序编写语言 4
2.5 MYSQL数据库 4
3 系统分析 5
3.1 可行性分析 5
3.1.1 技术可行性 5
3.1.2 经济可行性 5
3.1.3操作可行性 5
3.1.4法律可行性 5
3.2 用户体验需求分析 5
3.3 系统功能分析 6
3.3.1用户功能分析 6
3.3.2管理员功能分析 7
3.4 系统流程分析 7
3.4.1登录流程 7
3.4.2注册流程 8
3.5 系统界面分析 8
4 系统设计 10
4.1 系统结构设计 10
4.2 系统顺序图设计 10
4.3 系统数据库设计 12
4.3.1 数据库E-R图设计 12
4.3.2 数据库表设计 13
5 系统的实现 16
5.1 用户功能模块的实现 16
5.1.1 用户注册界面 16
5.1.2 用户登录界面 16
5.1.3首页界面 17
5.1.4 试卷列表界面 18
5.1.5考试记录界面 19
5.1.6社区界面 20
5.1.7我的界面 21
5.1.8面试讲解界面 22
5.2 管理员功能模块的实现 23
5.2.1管理员登录界面 23
5.2.2用户管理界面 24
5.2.3试卷管理界面 24
5.2.4面试讲解管理界面 25
5.2.5试题管理界面 25
5.2.6社区管理界面 26
5.2.7考试记录界面 26
6 系统测试 28
6.1 测试定义 28
6.2 测试方法 28
6.3测试原则 29
6.4测试结果 29
7 结论 30
参 考 文 献 31
致 谢 32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

q_2781179521

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

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

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

打赏作者

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

抵扣说明:

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

余额充值