本文主要为广大网友提供“JSP试卷生成系统”,希望对需要JSP试卷生成系统网友有所帮助,学习一下!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
1 项目分析、设计、开发 在前面我们已经提到该系统主要由三个模块组成,即试题管理模块、在线考试模块、自动评分模块。试题管理模块包含上传试题、试题管理、试卷生成、成绩管理这些功能。如图所示: 图5-1 功能模块图 1.1 试题管理模块的设计 试题管理模块分为:上传试题、试题管理、试卷生成、成绩管理。 5.1.1上传试题 管理员登录后可以根据界面上的表格添加试题,这种方式一次只能添加一道试题。也可以在界面上下载Excel表格模版批量的上传试题。这种方式一次可以添加多道试题。上传的表格必须以文本的形式进行上传,否则会出错。通过Question upload action接收上传文件,然后在javabean里调用readquestionexcel方法解析Excel文,实现上传。上传成功后如果发现有错,还可以在题库管理页面进行修改。 图5-2 为试题上传流程图 5.1.2试题管理 在试题管理模块中可以对试题进行查看、删除、添加、修改。每条记录前都有一个复选框,选种你不需要的记录然后点击删除按钮。在每条记录后面都有一个编辑查看的链接,通过该链接可以进行查看和修改。修改完毕后对数据库中的数据进行updat即可。点击添加按钮,可以进入添加试题的页面。还可以通过我们前面所提到的批量上传进行试题的添加。 实现更新的代码如下: strSql = "update tiku set question=''" + question + "'',keya=''" + keya + "'',keyb=''" + keyb + "'',keyc=''" + keyc + "'',keyd=''" + keyd + "'',answer=''" + answer + "'',score=''" + score + "'',kind=''" + kind + "'' where id=''" + id + "''"; System.out.println(strSql); db.OpenSql("lock table tiku write"); // 如果插入成功就返回真否则返回假 if (db.ExecSql(strSql) == 0) { db.OpenSql("unlock tables"); return false; } else { db.OpenSql("unlock tables"); return true; } } 实现插入的代码如下: strSql = "insert into tiku values(null,''" + question + "'',''" + keya + "'',''" + keyb + "'',''" + keyc + "'',''" + keyd + "'',''" + answer + "'',''" + score + "'',''" + kind + "'')"; System.out.println(strSql); db.OpenSql("lock table tiku write"); try { // 如果插入成功就返回真否则返回假 if (db.ExecSql(strSql) == 0) { db.OpenSql("unlock tables"); return false; } else { db.OpenSql("unlock tables"); return true; } } catch (Exception e) { db.OpenSql("unlock tables"); return false; } } 5.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 + "'' order by rand() limit " + Number + ""; // System.out.println(strSql); // 执行sql查询 rs = db.OpenSql(strSql); while (rs.next()) { Questions qe = new Questions(); qe.setanswer(rs.getString("answer")); qe.setkeya(rs.getString("keya")); qe.setkeyb(rs.getString("keyb")); qe.setkeyc(rs.getString("keyc")); qe.setkeyd(rs.getString("keyd")); qe.setquestion(rs.getString("question")); qe.setscore(rs.getString("score")); list.add(qe); } // 如果ResultSet不为空就关闭它 if (rs != null) { rs.close(); } return list; } 通过调用该SQL语句从数据库里取出试题。然后通过session把值传到前台。实现试题的自动生成。本试题自动生成系统对每次生成的试卷没作保存处理。 5.1.4成绩管理 成绩管理主要是对学生考试成绩的查看和删除。还可以查看考试时的ip地址以及考试开始时间和结束时间。 1.2 在线考试模块的设计 在线考试模块分为:在线考试模块分为:鉴权考试、学生登陆、时间管理、意外避免。 5.2.1考试鉴权 每次系统都会判断该用户存不存在。防止一些不具有本次考试资格的学生登陆。 判断用户是否存在的实现代码如下: public static boolean checkUserAccount(DB db, String s_id) throws SQLException { String strSql; ResultSet rs; // 编写sql变量 strSql = "select * from student where s_id=''" + s_id + "''"; // 查询数据 rs = db.OpenSql(strSql); // 如果sql结果集中有数据表示当前用户是合法用户返回true后者返回false if (rs.next()) { // 如果ResultSet不为空就关闭它 if (rs != null) { rs.close(); } return true; } else { // 如果ResultSet不为空就关闭它 if (rs != null) { rs.close(); } return false; } } 5.2.2学生登录 通过用户名系统能直接判断出是管理员还是学生,管理员有且只有一个。所有学生的用户名、密码以及一些相关的信息都是管理员通过Web页面来添加、删除、修改。其中用户名为学生的学号,密码默认值为123。登陆成功后学生可以修改自己的密码。 检查用户名和密码是否正确的实现代码如下: public static boolean checkUser(DB db, String s_id, String psw) throws SQLException { String strSql; ResultSet rs; // 编写sql变量 strSql = "select * from student where s_id=''" + s_id + "'' and s_psw = password(''" + psw + "'')"; // 查询数据 rs = db.OpenSql(strSql); // 如果sql结果集中有数据表示当前用户是合法用户返回true后者返回false if (rs.next()) { // 如果ResultSet不为空就关闭它 if (rs != null) { rs.close(); } return true; } else { // 如果ResultSet不为空就关闭它 if (rs != null) { rs.close(); } return false; } } |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |