项目描述
临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给在家介绍一篇在线考试系统的设计与实现 。
功能需求
在线考试系统现在应用非常广泛,能适用于大、中、小学的学生考试以及试卷的批改和成绩的统计分析中,相对于计算机和外语学科非常实用。但是现在普遍学校还是以笔试为考量学生学习情况的方式,不能借助在线考试系统便利教学,以此提高教育质量。
我们坚信在以后这一系列的学校考试将会走向网络化考试的。这样才是符合信息技术发展的方向。我们要给不同的考试同一个好的解决方案。这个方案在技术上来讲我们是采用B/S模式。 在windows/Linux平台上,使用IE浏览器,完成抽题、考试、交卷等考试任务。方便,简单的完成各科不同形式的考试,这也是我们的目的所在。
考点模块通过网络获取题库,按照题库中的抽题策略,自动给每个考生生成一份试卷,考生在线作答,考试结果数据通过网络回收,系统自动进行判分,生成考试成绩和统计数据。“在线考试系统”是集合现代考试理论、方法和现代信息技术手段的智能化网上考试系统,为学生个性化学习提供“灵活、方便、科学、公平”的“个别化考试服务”,是终结性评价系统。学生可以随时、随地进行课程结业考试。
具备以下功能:
本文内文研究的是通过构建在线考试系统利用学校的教师笔试进行管理化,通过调查和分析现在系统考试相关信息,综合评价了我国考试现状和以及今后的发展趋势,进而提出了比较好的在线考试系统策略和方案。
学生模块:
(1)登录注册:实现学生可以在本系统进行实名注册并且能直接登录。
(2)答题考试:历史考试查看、在线考试、考试科目查看选择。
(3)个人信息:重置密码、个人基本信息修改。
管理员模块:
(1)登录注册:实现管理老师可以在本系统进行实名注册并且能直接登录。
(2)系统设置:角色管理、系统日志、系统信息查看。
(3)考试管理:管理员可以增加考试增加、删除、编辑、查看等
(4)学科管理:对学科信息增加、删除、修改等。
(5)学生管理:对学生账号管理、考生可以随时查看成绩、信息查看等。
(6)成绩管理:学生成绩查看、试卷的批阅、成绩统计分析。
系统功能模块框架图
部分效果图
登录注册界面:
数据库设计
系统中用到了5张表,针对每个表都进行了设计,下面对部分核心表进行汇总罗列展示。
(1)用户信息表
(2)学科信息表
(3)购物信息表
(4)试卷信息表
(5)成绩数据表
部分代码
//登录后台系统就行操作
@RequestMapping("/admin/exam")
@Controller
public class ExamController {
@RequestMapping(value="/list",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> list(
@RequestParam(name="name",defaultValue="") String name,
@RequestParam(name="subjectId",required=false) Long subjectId,
@RequestParam(name="startTime",required=false) String startTime,
@RequestParam(name="endTime",required=false) String endTime,
Page page
){
Map<String, Object> ret = new HashMap<String, Object>();
Map<String, Object> queryMap = new HashMap<String, Object>();
queryMap.put("name", name);
if(subjectId != null){
queryMap.put("subjectId", subjectId);
}
if(!StringUtils.isEmpty(startTime)){
queryMap.put("startTime", startTime);
}
if(!StringUtils.isEmpty(endTime)){
queryMap.put("endTime", endTime);
}
queryMap.put("offset", page.getOffset());
queryMap.put("pageSize", page.getRows());
ret.put("rows", examService.findList(queryMap));
ret.put("total", examService.getTotal(queryMap));
return ret;
}
){
Map<String, Object> ret = new HashMap<String, Object>();
Map<String, Object> queryMap = new HashMap<String, Object>();
queryMap.put("name", name);
if(subjectId != null){
queryMap.put("subjectId", subjectId);
}
if(!StringUtils.isEmpty(startTime)){
queryMap.put("startTime", startTime);
}
if(!StringUtils.isEmpty(endTime)){
queryMap.put("endTime", endTime);
}
package com.ischoolbar.programmer.service.admin.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ischoolbar.programmer.dao.admin.AuthorityDao;
import com.ischoolbar.programmer.entity.admin.Authority;
import com.ischoolbar.programmer.service.admin.AuthorityService;
@Service
public class AuthorityServiceImpl implements AuthorityService {
@Autowired
private AuthorityDao authorityDao;
@Override
public int add(Authority authority) {
// TODO Auto-generated method stub
return authorityDao.add(authority);
}
@Override
public int deleteByRoleId(Long roleId) {
// TODO Auto-generated method stub
return authorityDao.deleteByRoleId(roleId);
}
@Override
public List<Authority> findListByRoleId(Long roleId) {
// TODO Auto-generated method stub
return authorityDao.findListByRoleId(roleId);
}
public String imgAdvAdd()
{
Imgadv imgadv=new Imgadv();
String hz = upFileFileName.substring(upFileFileName.lastIndexOf(".")+1);
String imgurl = Info.getAutoId()+"."+hz;
String filePath=ServletActionContext.getServletContext().getRealPath("upfile")+"/"+imgurl;
File targetFile=new File(filePath);
upLoadFile(upFile,targetFile);
System.out.println("type=="+type);
if(type.equals("HEAD")){
ArrayList<Imgadv> ilist = (ArrayList<Imgadv>)commonDAO.findByHql(" from Imgadv where type='HEAD' ");
if(ilist.size()==0){
imgadv.setImgurl(imgurl);
imgadv.setType(type);
commonDAO.save(imgadv);
suc="";
return "success";
}else{
no="";
return "erro";
}
}else{
imgadv.setImgurl(imgurl);
imgadv.setType(type);
commonDAO.save(imgadv);
suc="";
return "success";
}
}
Imgadv imgadv=new Imgadv();
String hz = upFileFileName.substring(upFileFileName.lastIndexOf(".")+1);
String imgurl = Info.getAutoId()+"."+hz;
String filePath=ServletActionContext.getServletContext().getRealPath("upfile")+"/"+imgurl;
File targetFile=new File(filePath);
upLoadFile(upFile,targetFile);
System.out.println("type=="+type);
if(type.equals("HEAD")){
ArrayList<Imgadv> ilist = (ArrayList<Imgadv>)commonDAO.findByHql(" from Imgadv where type='HEAD' ");
if(ilist.size()==0){
imgadv.setImgurl(imgurl);
imgadv.setType(type);
commonDAO.save(imgadv);
suc="";
return "success";
}else{
no="";
return "erro";
}
}else{
imgadv.setImgurl(imgurl);
imgadv.setType(type);
commonDAO.save(imgadv);
//
public String imgAdvEdit(){
Imgadv imgadv = (Imgadv)commonDAO.findById(id, "Imgadv");
if(!upFileFileName.equals("")){
String hz = upFileFileName.substring(upFileFileName.lastIndexOf(".")+1);
String imgurl = Info.getAutoId()+"."+hz;
String filePath=ServletActionContext.getServletContext().getRealPath("upfile")+"/"+imgurl;
File targetFile=new File(filePath);
upLoadFile(upFile,targetFile);
imgadv.setImgurl(imgurl);
}
commonDAO.update(imgadv);
suc="";
return "success";
}
//删除图片
public String imgAdvDel(){
commonDAO.delete(id, "Imgadv");
suc="";
return "success";
}
安装部署需求
eclipse、idea运行启动
系统部署
系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在IDEA中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件
本项目用到的技术和框架
1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:jsp+SSM
本项目中的关键点
此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。
环境工具
开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、CSS、SSM
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
需要源码点击这里