基于java+ssm+vue的模拟考试系统微信小程序

本文介绍了在快速发展的经济背景下,针对手机用户需求,开发了一款基于模拟考试的管理系统,详细阐述了系统设计、功能实现(包括用户注册、登录、信息管理、管理员权限操作等)、开发工具和技术(如Java、Mysql、SSM框架等),并讨论了测试策略和系统实现过程。
摘要由CSDN通过智能技术生成

项目介绍

随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,模拟考试被用户普遍使用,为方便用户能够可以随时进行模拟考试的数据信息管理,特开发了基于模拟考试的管理系统。

模拟考试的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要的信息,还有系统平台后期的可操作性,通过对信息内容的详细了解进行技术的开发。

模拟考试的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与模拟考试的实际需求相结合,讨论了基于模拟考试的使用。
在这里插入图片描述
在这里插入图片描述

开发环境

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

系统实现

5.1用户前台功能实现
注册用户通过注册窗口,进行在线填写自己的用户名、密码、姓名、手机、邮箱等,信息编辑完成后核对信息无误后进行选择注册,系统核对用户所输入的账号信息是否准确,核对信息准确无误后系统进入到操作界面。
用户通过登录进入到系统操作界面后,可以根据需求对首页、复习资料、参考文献、论坛中心、我的等模块进行管理维护操作。
如图5-1所示。
在这里插入图片描述

图5-1注册用户界面图

用户登录通过账号、密码行页面,进入到模拟考试主界面,进入到操作界面,进行相对应操作,如图5-2所示。
在这里插入图片描述

图5-2用户登录界面图

用户首页页面可以查看首页、复习资料、参考文献、论坛中心、我的等信息,进行提交操作,如图5-3所示。

在这里插入图片描述

图5-3首页界面图

用户进入用户信息页面可以填写用户名、密码、姓名、性别、头像、手机、邮箱等信息,进行保存、退出登录操作,如图5-4所示。
在这里插入图片描述

图5-4用户信息界面图

用户进入复习资料页面可以填写资料名称、科目、图片、资料视频、发布日期等信息,进行提交操作,如图5-5-所示。

在这里插入图片描述

图5-5复习资料界面图

用户进入参考文献页面可以填写文献名称、文献分类、图片、文献附件、发布日期等信息,进行提交操作,如图5-6-所示。

在这里插入图片描述

图5-6参考文献界面图

用户进入试卷列表页面可以填写内容等信息,进行提交答案操作,如图5-7-所示。

在这里插入图片描述

图5-7试卷列表界面图

用户进入考试记录页面可以填写试卷、试题、答案、我的答案等信息,进行提交操作,如图5-8-所示。
在这里插入图片描述

图5-8考试记录界面图

5.2 管理员后台功能实现
管理员通过模拟考试进行确认,管理员进入到模拟考试主界面,管理员进入到操作界面,通过登录窗口进行在线填写自己的用户名和密码、角色进行登录,登录成功后进入到系统操作界面进行相应信息的获取,如图5-9所示。
在这里插入图片描述

图5-9管理员登录主界面图

管理员进入到界面,通过界面的任务大厅,登录成功后进入到系统可以进行查看首页、个人中心、科目管理、复习资料管理、参考文献管理、用户管理、留言板管理、试题管理、论坛管理、试卷管理、系统管理、考试管理等功能模块,进行相对应操作,如图5-10所示。
在这里插入图片描述

图5-10管理员功能界面图

管理员点击复习资料管理进入页面可以查看资料名称、科目、图片、资料视频、发布日期等信息,进行详情、修改、删除操作,如图5-11示。

在这里插入图片描述

图5-11复习资料管理界面图

管理员进入参考文献管理界面,通过界面的任务大厅,登录成功后进入到系统可以查看文献名称、文献分类、图片、文献附件、发布日期等信息,进行相对应操作,如图5-12所示。
在这里插入图片描述

图5-12参考文献管理界面图

管理员进入到用户管理界面,通过界面的任务大厅,登录成功后进入到系统可以查看用户名、密码、姓名、性别、头像、手机、邮箱等信息,进行相对应操作,如图5-13所示。
在这里插入图片描述

图5-13用户管理界面图

管理员进入到留言板管理界面,通过界面的任务大厅,登录成功后进入到系统可以查看用户名、留言内容、回复内容等信息,进行相对应操作,如图5-14所示。
在这里插入图片描述

图5-14留言板管理界面图

管理员进入到论坛管理界面,通过界面的任务大厅,登录成功后进入到系统可以查看帖子标题、用户名、状态等信息,进行相对应操作,如图5-15所示。
在这里插入图片描述

图5-15论坛管理界面图

管理员进入试题管理界面,通过界面的任务大厅,登录成功后进入到系统可以查看试卷、试题名称、分值、答案、类型等信息,进行相对应操作,如图5-16所示。
在这里插入图片描述

图5-16试题管理界面图

轮播图;该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作,如图5-17所示。
在这里插入图片描述

图5-17轮播图管理界面图

管理员进入考试记录界面,通过界面的任务大厅,登录成功后进入到系统可以查看用户ID、试卷、考试得分等信息,进行相对应操作,如图5-18所示。
在这里插入图片描述

图5-18考试记录界面图

核心代码

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.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.KemuEntity;
import com.entity.view.KemuView;

import com.service.KemuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 科目
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/kemu")
public class KemuController {
    @Autowired
    private KemuService kemuService;
    


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

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

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( KemuEntity kemu){
       	EntityWrapper<KemuEntity> ew = new EntityWrapper<KemuEntity>();
      	ew.allEq(MPUtil.allEQMapPre( kemu, "kemu")); 
        return R.ok().put("data", kemuService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KemuEntity kemu){
        EntityWrapper< KemuEntity> ew = new EntityWrapper< KemuEntity>();
 		ew.allEq(MPUtil.allEQMapPre( kemu, "kemu")); 
		KemuView kemuView =  kemuService.selectView(ew);
		return R.ok("查询科目成功").put("data", kemuView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        KemuEntity kemu = kemuService.selectById(id);
        return R.ok().put("data", kemu);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        KemuEntity kemu = kemuService.selectById(id);
        return R.ok().put("data", kemu);
    }
    



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

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

        kemuService.insert(kemu);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        kemuService.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<KemuEntity> wrapper = new EntityWrapper<KemuEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


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


}

论文参考

在这里插入图片描述

目 录
摘 要 I
Abstract II
第一章 绪 论 1
1.1选题背景 2
1.2研究现状 3
1.3研究内容 4
第二章 开发工具及关键技术介绍 6
2.1微信开发者工具 7
2.2小程序框架以及目录结构介绍 8
2.3 JAVA技术 8
2.4 Mysql数据库 8
2.5 SSM框架 8
第三章 系统分析 10
3.1需求分析 10
3.2可行性分析 10
3.2.1技术可行性:技术背景 10
3.2.2经济可行性 11
3.2.3操作可行性: 11
3.3性能分析 11
3.4系统操作流程 12
3.4.1管理员登录流程 12
3.4.2信息添加流程 12
3.4.3信息删除流程 13
第四章 系统设计与实现 15
4.1系统架构设计 15
4.2开发流程设计 15
4.3数据库设计 16
4.3.1实体ER图 16
4.3.2数据表 18
第五章 系统实现 21
5.1 用户前台功能实现 24
5.2 管理员后台功能实现 24
第六章 系统的测试 27
6.1 测试目的 27
6.2 测试方案设计 27
6.2.1 测试策略 27
6.2.2 测试分析 28
6.3 测试结果 28
结 论 29
参考文献 30
致 谢 31

该系统主要实现了模拟在线考试功能,其使用方法如下 软件安装 1、 安装Oracle9.0.2 (1) 创建数据库: 操作方法:根据提示安装,一般的步骤点击下一步即可,在创建数据库时输入数据库名称,例如dbhouse; (2) 创建用户: 操作方法:安装结束后进入OEM,数据用户名system,使用安装时设定的密码登陆数据库,在安全设置节点建立用户,例如quiz,设定密码quiz,为本数据库的使用密码,在右边的选项页面中选择角色为resourse,connect,dba; (3) 导入数据: 操作方法:倒入数据库quiz\ databases\quiz.dmp:在cmd中数据imp,输入刚才数据库的登录身份,quiz/quiz@dbhouse,在忽略创建错误选项时输入yes,倒入成功; 2、 安装JDK1.4.0 (1) 安装软件: 操作方法:一路点击下一步直至安装结束; (2) 设置环境变量: 操作方法:在我的电脑属性中设置环境变量为:JAVA_HOME=C:\j2sdk1.4.0; 3、 安装Tomcat4.1.24 (1) 安装软件: 操作方法:一路点击下一步直至安装结束,在选择安装路径时推荐安装在根目录,例如C:\Tomcat 4.1; (2) 设置环境变量: 操作方法:在我的电脑属性中设置环境变量为:TOMCAT_HOME= C:\Tomcat 4.1; (3) 建立站点: 操作方法:修改C:\Tomcat 4.1\conf\server.xml,在</Host>上一行添加如下代码来建立站点: <Context path=”/quiz” docBase=”D:\ quiz\web” reloadable=”false” debug=”0”/> 此步骤应该对应程序安装的目录; 4、 部署源程序 (1) 解压源程序 操作方法:解压缩拷贝目录quiz到安装目录,例如D:\,解压后的目录应该满足D:\ quiz\ WEB-INF; 5、 访问系统 启动Oracle、Tomcat,输入地址http://localhost:[port]/quiz/即可访问,输入用户名admin,密码admin。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_3306428634

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

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

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

打赏作者

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

抵扣说明:

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

余额充值