目录
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的理念缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的各类系统很难达到老师的要求。
为了大家能够顺利并以最少的精力通过毕设,学长分享优质毕业设计项目,需要的自取。
一.说明
当前,网络教学方兴未艾。网上考试已在其中扮演了重要的角色,传统试卷考试方式有待提高。网络教学已从其规范性、科学性及考试工作组织、管理的统一性,影响到教学质量的好坏。基于此,本系统开发实现了基于B/S模式的c试题生成与考试系统,其中数据库采用MYSQL,开发平台是jsp,开发工具是eclipse+myeclipse,服务器采用tomcat。本系统实现了三个功能模块即试题管理模块、在线考试模块、自动评分模块。试题管理模块包括上传试题、试题管理、试卷的自动生成。在线考试模块包括学生登录、考试鉴权、考试时间控制和一些简单的考试意外的避免。自动评分模块包括制定评分规则自动评分和答案的返回。 用户机则不需要安装任何应用程序直接通过浏览器就可以访问。本系统的实现有利于提高网络教学的质量同时大大拓展了考试的灵活性,阅卷效率,以及保证了考试的公平性、答案的安全性。
二.项目分析、设计、开发
该系统主要由三个模块组成,即试题管理模块、在线考试模块、自动评分模块。试题管理模块包含上传试题、试题管理、试卷生成、成绩管理这些功能。如图所示:
2.1.试题管理模块的设计
试题管理模块分为:上传试题、试题管理、试卷生成、成绩管理。
2.1.1.上传试题
管理员登录后可以根据界面上的表格添加试题,这种方式一次只能添加一道试题。也可以在界面上下载Excel表格模版批量的上传试题。这种方式一次可以添加多道试题。上传的表格必须以文本的形式进行上传,否则会出错。通过Question upload action接收上传文件,然后在javabean里调用readquestionexcel方法解析Excel文,实现上传。上传成功后如果发现有错,还可以在题库管理页面进行修改。
2.1.2.试题管理
在试题管理模块中可以对试题进行查看、删除、添加、修改。每条记录前都有一个复选框,选种你不需要的记录然后点击删除按钮。在每条记录后面都有一个编辑查看的链接,通过该链接可以进行查看和修改。修改完毕后对数据库中的数据进行updat即可。点击添加按钮,可以进入添加试题的页面。还可以通过我们前面所提到的批量上传进行试题的添加。
实现更新的代码(部分展示)如下:
strSql = "update tiku set question='" + question + "',keya='" + keya
+ "',keyb='" + keyb + "',keyc='" + keyc + "',keyd='" + keyd
+ "',answer='" + answer + "',score='" + score + "',kind='"
System.out.println(strSql);
db.OpenSql("lock table tiku write");
// 如果插入成功就返回真否则返回假
if (db.ExecSql(strSql) == 0) {
db.OpenSql("unlock tables");
实现插入的代码(部分展示)如下:
strSql = "insert into tiku values(null,'" + question + "','" + keya
+ "','" + keyb + "','" + keyc + "','" + keyd + "','" + answer
+ "','" + score + "','" + kind + "')";
db.OpenSql("lock table tiku write");
try {
// 如果插入成功就返回真否则返回假
if (db.ExecSql(strSql) == 0) {
2.1.3.试卷生成
管理员可以对考试的各个参数进行设置。每道试题的分值,各种题型的数量。考试的时间等等。设置的这些信息是通过session来传递信息的。按照sesion传递的信息在题库中随机的抽取试题。在Mysql中自带一个随机函数rand()利用这个函数产生一个随机数,然后根据这个随机数取出相应的试题。所以题库里面的试题越多,两张试卷出现相同试题的几率就越小。为了保证一张试卷不出现相同的试卷只有通过管理员在把试题输入到题库的时候不要输入相同的试题。这种情况本系统没有考虑。
实现代码(部分展示)如下:
public static ArrayList randomQuestions(DB db, String Number, String kind)
throws SQLException {
// 新建一个数组用来保存返回随机题目
ArrayList list = new ArrayList();
ResultSet rs;
// 查询数据库语句变量
String strSql;
strSql = " select * from tiku where kind='" + kind
通过调用该SQL语句从数据库里取出试题。然后通过session把值传到前台。实现试题的自动生成。本试题自动生成系统对每次生成的试卷没作保存处理。
2.1.4.成绩管理
成绩管理主要是对学生考试成绩的查看和删除。还可以查看考试时的ip地址以及考试开始时间和结束时间。
2.2.在线考试模块的设计
在线考试模块分为:在线考试模块分为:鉴权考试、学生登陆、时间管理、意外避免。
2.2.1.考试鉴权
每次系统都会判断该用户存不存在。防止一些不具有本次考试资格的学生登陆。
判断用户是否存在的实现代码(部分展示)如下:
public static boolean checkUserAccount(DB db, String s_id)
throws SQLException {
String strSql;
2.2.2.学生登录
通过用户名系统能直接判断出是管理员还是学生,管理员有且只有一个。所有学生的用户名、密码以及一些相关的信息都是管理员通过Web页面来添加、删除、修改。其中用户名为学生的学号,密码默认值为123。登陆成功后学生可以修改自己的密码。
检查用户名和密码是否正确的实现代码(部分展示)如下:
public static boolean checkUser(DB db, String s_id, String psw)
throws SQLException {
String strSql;
ResultSet rs;
2.2.3.时间管理
时间对考试来说是至关重要的。在c语言试题自动生成系统中,为学生设置了考试开始时间和考试剩余时间。使考生在考试过程中对时间好有个把握。显示剩余时间的时钟是一个动态时钟,这个时钟显示的时间是由服务器控制的,这样避免了考生因修改自己计算机的系统时间而出现的作弊现象。当服务器到达考试时间时候,系统会弹出一个对话框显示时间到。如果迟迟不点确定按钮,系统会自动向数据库插入一条零分记录。即作为作弊行为来处理。
2.2.4.意外避免
当考生登陆后点击准备好了按钮后开始考试,为了防止考生进行刷新或后退使生成的试题发生变化,这样会影响考试的结果。本系统在这方面进行了防止,使考生在考试时间段内后退也好刷新也好都不能是生成的试题发生变化。本系统还防止了学生通过多次登陆来生成不同试题然后提交多份考卷的现象。通过调用isuesrlogin这个方法来实现对用户多次登陆的侦听。
主要实现代码(部分展示)如下:
public static boolean isUserLogin(HttpSession session,String username){
boolean flag = false;
if(list != null && list.size() > 0){
for(int i=0;i<list.size();i++){
if(list.get(i).equals(username)){
flag = true;
break;
原理就是当你点击准备好了按钮之后产生一个随即数传到后台,后台根据这个随机数判断是否是刷新。
2.3.自动评分模块的设计
2.3.1.自动评分
本系统的自动评分的实现主要是通过从数据库取出正确答案与考生所选或填的答案进行比较,如果正确则把该试题的分值进行加发运算。
2.3.1.答案返回
当考生提交试题后,会把考生自己选择的答案和试题的正确答案反馈给考生。
其他内容就不一一展示了,如需对应相关资料,可以评论或者下方联系我,私信都可以。