当前位置: 首页 > article >正文

计算机毕业设计 《计算机基础》网上考试系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
————————————————
计算机毕业设计《1000套》✌

目录

1、项目介绍及开发技术

1.1 项目介绍

1.2 开发技术

2、系统功能设计结构图

3、功能截图

3.1 前台功能

3.2 后台功能

4、数据库表结构设计

5、关键代码

5.1 教师Controller模块 

5.2 教师Service模块 

5.3 教师ServiceImpl模块

5.4  教师Dao模块

6、论文大纲参考

7、源码获取


1、项目介绍及开发技术

1.1 项目介绍

《计算机基础》网上考试系统是一个为教育机构和学生设计的在线评估工具,旨在提供一个高效、便捷的计算机基础知识测试平台。随着信息技术的快速发展,计算机已成为现代教育不可或缺的一部分,而掌握计算机基础知识对于学生来说尤为重要。

背景:
在传统的教学模式中,计算机基础课程的考试通常在教室内进行,这不仅限制了考试的时间和地点,也增加了组织和管理的难度。此外,纸质考试的评分过程繁琐且耗时,不利于快速反馈学生的学习情况。为了适应数字化时代的需求,开发一个网上考试系统成为了必然趋势。

目的意义:

  • 1. 提高考试效率:网上考试系统允许学生在任何时间、任何地点参加考试,极大地提高了考试的灵活性和便捷性。
  • 2. 节约资源:通过电子化考试,减少了纸张的使用,符合环保理念,同时也降低了印刷和物流成本。
  • 3. 即时反馈:系统能够自动评分,学生在提交答案后即可获得成绩和反馈,有助于他们及时了解自己的学习状况并作出相应的学习调整。
  • 4. 数据追踪:系统能够记录学生的考试数据,为教师提供学生学习进度和掌握情况的分析,有助于教师进行针对性的教学改进。
  • 5. 安全性:通过设置登录验证和考试监控,确保考试的公正性和安全性,防止作弊行为。

综上所述,《计算机基础》网上考试系统不仅能够提高考试的效率和质量,还能够为学生和教师提供更加丰富和便捷的教学体验,是现代教育技术发展的重要体现

1.2 开发技术

类别技术名称用途/描述
开发语言Java一种广泛使用的面向对象编程语言。
框架Spring Boot简化Spring应用的初始搭建以及开发过程。
ORM工具MyBatis PlusMyBatis的增强工具,简化CRUD操作。
数据库MySQL流行的关系型数据库管理系统。
构建工具Maven项目管理和理解工具。
开发工具IDEA集成开发环境,用于代码编写和调试。
JDK版本JDK 1.8+Java开发工具包,提供运行Java程序所需的环境。
前端框架Vue用于构建用户界面的渐进式JavaScript框架。
UI框架Element UI基于Vue的桌面端组件库。
前端技术HTML网页内容的标准标记语言。
前端技术CSS描述HTML文档的样式。
前端技术JS网页脚本语言,用于实现网页的动态效果。

2、系统功能设计结构图

功能模块结构图

├── 登录

├── 注册

├── 首页

├── 管理员
│   ├── 轮播图管理
│   ├── 管理员管理
│   ├── 新闻资讯管理
│   ├── 公告信息管理
│   ├── 试卷管理
│   │   ├── 试卷管理
│   │   ├── 试题管理
│   │   └── 试卷列表
│   ├── 考试记录
│   └── 错题本

├── 教师
│   ├── 新闻资讯
│   ├── 公告信息
│   ├── 试卷列表
│   └── 个人中心
│       ├── 个人信息
│       ├── 修改密码
│       └── 试卷管理
│           └── 考试记录

└── 学生
    ├── 新闻资讯
    ├── 公告信息
    ├── 试卷列表
    └── 个人中心
        ├── 个人信息
        ├── 修改密码
        └── 试卷管理
            └── 错题本

3、功能截图

3.1 前台功能

 

3.2 后台功能

 

4、数据库表结构设计

 

 

 

 

5、关键代码

5.1 教师Controller模块 


package com.cl.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
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.cl.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
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.cl.annotation.IgnoreAuth;

import com.cl.entity.JiaoshiEntity;
import com.cl.entity.view.JiaoshiView;

import com.cl.service.JiaoshiService;
import com.cl.service.TokenService;
import com.cl.utils.PageUtils;
import com.cl.utils.R;
import com.cl.utils.MPUtil;
import com.cl.utils.CommonUtil;
import java.io.IOException;

/**
 * 教师
 * 后端接口
 * @author 
 * @email 
 */
@RestController
@RequestMapping("/jiaoshi")
public class JiaoshiController {
    @Autowired
    private JiaoshiService jiaoshiService;



    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", username));
        if(u==null || !u.getMima().equals(password)) {
            return R.error("账号或密码不正确");
        }
		String token = tokenService.generateToken(u.getId(), username,"jiaoshi",  "管理员" );
		return R.ok().put("token", token);
	}


	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody JiaoshiEntity jiaoshi){
    	//ValidatorUtils.validateEntity(jiaoshi);
    	JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", jiaoshi.getJiaoshigonghao()));
		if(u!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		jiaoshi.setId(uId);
        jiaoshiService.insert(jiaoshi);
        return R.ok();
    }

	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        JiaoshiEntity u = jiaoshiService.selectById(id);
        return R.ok().put("data", u);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", username));
    	if(u==null) {
    		return R.error("账号不存在");
    	}
        u.setMima("123456");
        jiaoshiService.updateById(u);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,JiaoshiEntity jiaoshi,
		HttpServletRequest request){
        EntityWrapper<JiaoshiEntity> ew = new EntityWrapper<JiaoshiEntity>();

		PageUtils page = jiaoshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaoshi), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,JiaoshiEntity jiaoshi, 
		HttpServletRequest request){
        EntityWrapper<JiaoshiEntity> ew = new EntityWrapper<JiaoshiEntity>();

		PageUtils page = jiaoshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaoshi), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(JiaoshiEntity jiaoshi){
        EntityWrapper< JiaoshiEntity> ew = new EntityWrapper< JiaoshiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( jiaoshi, "jiaoshi")); 
		JiaoshiView jiaoshiView =  jiaoshiService.selectView(ew);
		return R.ok("查询教师成功").put("data", jiaoshiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        JiaoshiEntity jiaoshi = jiaoshiService.selectById(id);
		jiaoshi = jiaoshiService.selectView(new EntityWrapper<JiaoshiEntity>().eq("id", id));
        return R.ok().put("data", jiaoshi);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        JiaoshiEntity jiaoshi = jiaoshiService.selectById(id);
		jiaoshi = jiaoshiService.selectView(new EntityWrapper<JiaoshiEntity>().eq("id", id));
        return R.ok().put("data", jiaoshi);
    }
    

    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){
        if(jiaoshiService.selectCount(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", jiaoshi.getJiaoshigonghao()))>0) {
            return R.error("教师工号已存在");
        }
    	jiaoshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiaoshi);
    	JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", jiaoshi.getJiaoshigonghao()));
		if(u!=null) {
			return R.error("用户已存在");
		}
		jiaoshi.setId(new Date().getTime());
        jiaoshiService.insert(jiaoshi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){
        if(jiaoshiService.selectCount(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", jiaoshi.getJiaoshigonghao()))>0) {
            return R.error("教师工号已存在");
        }
    	jiaoshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiaoshi);
    	JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", jiaoshi.getJiaoshigonghao()));
		if(u!=null) {
			return R.error("用户已存在");
		}
		jiaoshi.setId(new Date().getTime());
        jiaoshiService.insert(jiaoshi);
        return R.ok();
    }


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


    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        jiaoshiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    

}

5.2 教师Service模块 

 package com.cl.service;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;
import com.cl.utils.PageUtils;
import com.cl.entity.JiaoshiEntity;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.cl.entity.view.JiaoshiView;


/**
 * 教师
 *
 * @author 
 * @email 
 */
public interface JiaoshiService extends IService<JiaoshiEntity> {

    PageUtils queryPage(Map<String, Object> params);
    
   	List<JiaoshiView> selectListView(Wrapper<JiaoshiEntity> wrapper);
   	
   	JiaoshiView selectView(@Param("ew") Wrapper<JiaoshiEntity> wrapper);
   	
   	PageUtils queryPage(Map<String, Object> params,Wrapper<JiaoshiEntity> wrapper);
   	
   	PageUtils queryPageGroupBy(Map<String, Object> params,Wrapper<JiaoshiEntity> wrapper);

}

5.3 教师ServiceImpl模块


package com.cl.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.cl.utils.PageUtils;
import com.cl.utils.Query;


import com.cl.dao.JiaoshiDao;
import com.cl.entity.JiaoshiEntity;
import com.cl.service.JiaoshiService;
import com.cl.entity.view.JiaoshiView;

@Service("jiaoshiService")
public class JiaoshiServiceImpl extends ServiceImpl<JiaoshiDao, JiaoshiEntity> implements JiaoshiService {
	
	@Override
	public PageUtils queryPageGroupBy(Map<String, Object> params, Wrapper<JiaoshiEntity> wrapper) {
		Page<JiaoshiView> page =new Query<JiaoshiView>(params).getPage();
        page.setRecords(baseMapper.selectGroupBy(page,wrapper));
    	PageUtils pageUtil = new PageUtils(page);
    	return pageUtil;
	}
	
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<JiaoshiEntity> page = this.selectPage(
                new Query<JiaoshiEntity>(params).getPage(),
                new EntityWrapper<JiaoshiEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<JiaoshiEntity> wrapper) {
		  Page<JiaoshiView> page =new Query<JiaoshiView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
	@Override
	public List<JiaoshiView> selectListView(Wrapper<JiaoshiEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public JiaoshiView selectView(Wrapper<JiaoshiEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}


}

5.4  教师Dao模块


package com.cl.dao;

import com.cl.entity.JiaoshiEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;

import org.apache.ibatis.annotations.Param;
import com.cl.entity.view.JiaoshiView;


/**
 * 教师
 * 
 * @author 
 * @email 
 */
public interface JiaoshiDao extends BaseMapper<JiaoshiEntity> {
	
	List<JiaoshiView> selectListView(@Param("ew") Wrapper<JiaoshiEntity> wrapper);

	List<JiaoshiView> selectListView(Pagination page,@Param("ew") Wrapper<JiaoshiEntity> wrapper);
	
	JiaoshiView selectView(@Param("ew") Wrapper<JiaoshiEntity> wrapper);
	
	List<JiaoshiView> selectGroupBy(Pagination page,@Param("ew") Wrapper<JiaoshiEntity> wrapper);

}

6、论文大纲参考

摘要... I

Abstract... II

1 绪论... 1
   1.1 项目简介... 1
   1.2 调查研究... 1
       1.2.1 研究背景及意义... 1
       1.2.2 国内外研究现状... 2
       1.2.3 研究主要内容... 2
   1.3 论文的章节安排... 3

2 系统相关技术介绍... 4
   2.1 Java语言... 4
   2.2 SpringBoot框架... 4
   2.3 Vue框架... 4
   2.4 MySQL数据库... 4

3 系统需求分析... 6
   3.1 可行性分析... 6
       3.1.1 技术可行性... 6
       3.1.2 经济可行性... 6
       3.1.3 操作可行性... 6
   3.2 系统功能需求... 6
       3.2.1 用户端功能需求... 6
       3.2.2 XX端功能需求... 6
       3.2.3 管理员端功能需求... 6
   3.3 系统性能需求... 6

4 系统总体设计... 7
   4.1 系统总体架构设计... 7
   4.2 系统的功能设计... 7
   4.3 数据库设计... 7
       4.3.1 概念设计E-R图... 7
       4.3.2 逻辑设计关系模式... 7
       4.3.3 数据库物理设计... 7

5 系统详细实现... 14
   5.1 系统实现环境... 14
   5.2 用户端... 14
       5.2.1 登录页面... 14
       5.2.2 注册页面... 14
       5.2.3 XXXX页面... 14
       5.2.4 XXXX页面... 14
       5.2.5 XXXX页面... 14
   5.3 XXXX端... 15
       5.3.1 XXXX页面... 15
       5.3.2 XXXX页面... 15
       5.3.3 XXXX页面... 15
       5.3.4 XXXX页面... 15
   5.4 管理端... 15
       5.4.1 用户管理页面... 15
       5.4.2 XXXX页面... 15
       5.4.3 XXXX页面... 16
       5.4.4 XXXX页面... 16

6 系统测试... 16
   6.1 测试目的... 16
   6.2 测试方法... 16
   6.3 测试用例... 16
       6.3.1 XXXX测试... 16
       6.3.2 XXXX测试... 16
   6.4 测试结果... 16

结论... 17

参考文献... 18

致谢... 19

更多源码:

计算机毕业设计选题1000套等你来!!!

7、源码获取

感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!

喜欢文章可以点赞、收藏、关注、评论

下方联系方式获取源码


http://www.kler.cn/a/309878.html

相关文章:

  • SpringBoot(七)使用mapper注解编写sql操作数据库
  • Django 的 ModelViewSet 中的 get_queryset 方法自定义查询集
  • 羊城杯2020Easyphp
  • 可编辑PPT | 指挥中心系统建设与应用方案
  • ManiSkill学习笔记
  • 【AI声音克隆整合包及教程】第二代GPT-SoVITS V2:技术、应用与伦理思考
  • Java入门程序-HelloWorld
  • 实习项目|苍穹外卖|day11
  • 【机器学习-监督学习】集成学习与梯度提升决策树
  • vue3+ant design vue实现可编辑表格弹出气泡弹出窗~
  • Day 72
  • 在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container
  • 【大数据】探索怎么从一段话中解析关键信息(寄件人相关信息)
  • 体感魂斗罗(一)
  • vue 数组转字符串以逗号分隔
  • 9.18 C++对C的扩充
  • AI逻辑推理入门
  • 钢材表面缺陷数据集以coco格式做好了数据集的划分,1200张训练集,600张验证集,对应的json文件也在里面
  • 腾讯 IEG 游戏前沿技术 二面复盘
  • python如何实现队列
  • 18063 圈中的游戏
  • 身份证阅读器API模式 VUE Dorado7
  • 计数服务怎么设计?
  • 【AI学习】AI绘画发展简史
  • nginx进阶篇(二)
  • C++ 常用设计模式