免费预览已结束,剩余134页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在线考试系统的设计SHANDONG 毕业论文在线考试系统学 院: 计算机学院 专 业: 计算机科学与技术 学生姓名: 刘小东 学 号: 0812106647 指导教师: 贾茂盈 2012 年 4月 23号摘 要考试系统主要采用了JSP技术,Ajax技术,MySQl数据库技术,Servlet技术,Tomcat Web服务器技术,实现了在线自动组卷,计算成绩,成绩入库,成绩查询,个人信息修改等功能。关键词:JSP,Ajax,MySQL,Servlet,TomcatAbstractThis system mainly uses JSP technology, Ajax technology, MySQl database technology, Servlet technology, Tomcat Web server technology, realizing the online automatic generating test paper, calculation result, result storage, query results, modify personal information and other functions.Key words: JSP,Ajax,MySQL,Servlet,Tomcat目录摘 要IABSTRACT(英文摘要)目 录第一章 引 言11.1 课题的目的和意义41.2 本课题的研究对象、目标和方法41.3 系统功能描述5第二章 源代码及注释62.1 java源代码62.1.1 dao接口极其实现62.1.2 entity数据层192.1.3 servlet核心逻辑302.1.4 工具包442.2 jsp源代码462.3 css样式文件1042.4 js文件1172.5 XML文件1202.6数据库建表说明121参考文献128致谢及声明129 第一章 引 言1.1课题的目的和意义随着计算机技术的迅猛发展,学校教学与管理的信息化发展也有长足的进步,考试也是一样。与传统的考试方式相比,网络考试系统极大地提高了教学的灵活性,并在许多领域已经有了广泛的应用。网上考试系统的最大优点是可以动态地管理各种考试信息,这大大的降低了考生作弊的可能性,在各类考试中发挥高效、便捷的作用,能把老师从繁重的工作中解脱出来!随着社会的进步与商品经济的不断发展,社会对劳动者与技术人员的知识与能力水平的要求越来越高。考试作为衡量人的能力的重要手段,在现代生活的地位进一步提高,并深入到社会各个方面,各种各样的学历考试、资格证书考试层出不穷。同时,Internet技术的发展是得考试的技术手段与载体发生了革命性的变化。Internet的开放性与分布性的特点以及基于Internet的巨大计算能力使得考试突破了时间与空间的限制。网络应用不断扩大,如远程教育与虚拟高校的出现等;使得基于Web的在线考试系统成为现实。基于Web的在线考试系统可以发挥网络的优势,建立大型、高效、共享的题库与实现随时随地的考试,降低考试成本,减少人为的干扰。减轻教师的负担,节约人力,物力,与财力。1.2 本课题的研究对象、目标和方法在线考试系统以计算机为工具,把考试系统完善,通过对教务管理所需的信息管理,减轻行政人员的工作负担,使教学办公室对考试信息的管理更方便,把管理人员从繁琐的数据计算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量。计算机的资源是受到限制的,因此要充分利用JSP的功能,设计出功能强大的软件,同时要尽可能减少对系统资源的占用,同时对本系统要求有良好的保密。在线考试系统主要实现的是对学生的定期考试及成绩的管理。首先,对用户设置不同的权限,根据不同的权限进入不同的页面。其次,对于所输入的用户名和密码进行判断。最后,成功登录的话:1、如果是学生页面,登录到个人管理页面,其中包括在线考试、成绩查询、密码修改等。2、如果是管理员页面,管理员可以对数据库进行更新维护,主要是题库、学生信息、教师信息的逐条或批量的录入。3、如果是教师页面,教师可以查询本专业的所有学生成绩,并可修改个人密码等。1.3 网站功能整体规划图1 网站整体规划图1.4系统功能描述1.4.1 学生操作系统(1)完成考试操作 通过后台的自动组卷功能,在题库中按每个难度等级取题,并自动组成试卷显示给学生,具有倒计时以及到时自动交卷功能。交卷之后,自动计算学生考试成绩予以提示,并将本次考试信息以及学生成绩录入数据库;另外,学生不能重复提交答案,否则提示学生。(2)查询考试规则(3)查询成绩可以通过此功能查询所有自己已考科目的所有成绩,列表显示。(4)查询/修改个人信息通过此功能可以查询个人信息、修改个人登陆密码1.4.2 教师操作系统(1)查询/修改个人信息通过此功能可以查询个人信息、修改个人登陆密码(2)查询成绩通过此功能可以查询自己所教科目的所有学生的考试成绩1.4.3 管理员操作系统通过此功能可以完成对数据库的更新与维护,包括题库、学生、教师等信息的逐条或批量录入。1.5 MySQL数据库表格设计1.6 系统测试登陆网站登陆成功,转入主页面开始考试点击交卷,后台检测是否已经考试过了,如果已经考试过了如果没考过成绩查询查询/修改个人信息教师登陆成绩查询管理员登陆更新题库更新学生库更新教师库第二章 源代码及注释2.1 java源代码2.1.1 dao接口极其实现ExamDAO.javapackage dao;import java.util.List;import entity.Admin;import entity.ExamInfo;import entity.Question;import entity.Score;import entity.Student;import entity.Teacher;public interface ExamDAO /通过管理员登陆帐号在数据库查找获得该管理员信息Admin getAdminByAdminId(String userName)throws Exception;/通过教师登陆帐号在数据库查找获得该教师信息Teacher getTeaByTeaId(String userName)throws Exception;/通过学生登陆帐号在数据库查找获得该学生信息Student getStuByStuId(String userName)throws Exception;/通过试题的难度及科目查找数据库获得考题信息List getQuestionByRankSubject(int i, String subject)throws Exception;/向数据库增加考试成绩void insertScore(Student loginStu, int sum, ExamInfo examInfo)throws Exception;/通过学生学号及考试科目查找数据库获得该生的考试成绩Score getScoreByStuIdSubject(String stuId,String subject)throws Exception;/通过学生学号查找数据库获得该生的全部考试成绩List getAllScoresByStuId(String stuId)throws Exception;/通过考试科目查找数据库获得所有该科目的考试成绩List getScoreBySubject(String subject)throws Exception;/完成学生修改密码的操作void updateStu(int id, String newPwd)throws Exception;/完成教师修改密码的操作void updateTea(int id, String newPwd)throws Exception;/向数据库增加一条考题信息void insertQuestion(Question question)throws Exception;/向数据库增加一条学生信息void insertStudent(Student stu)throws Exception;/向数据库增加一条教师信息void insertTeacher(Teacher tea)throws Exception;/向数据库批量增加考题信息void insertQuestions(String fileName)throws Exception;/向数据库批量增加教师信息void insertTeachers(String url)throws Exception;/向数据库批量增加学生信息void insertStudents(String url)throws Exception;ExamDAOImpl.java package dao.impl;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import utils.Config;import utils.ConnectionUtils;import dao.ExamDAO;import entity.Admin;import entity.ExamInfo;import entity.Question;import entity.Score;import entity.Student;import entity.Teacher;public class ExamDAOImpl implements ExamDAO public Admin getAdminByAdminId(String userName) throws Exception String sql = select*from exam_admin where adminId=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, userName);ResultSet rs = stmt.executeQuery();Admin admin = null;if (rs.next() admin = new Admin();admin.setAdminId(userName);admin.setId(rs.getInt(id);admin.setPwd(rs.getString(pwd);ConnectionUtils.close(conn);return admin;public Teacher getTeaByTeaId(String userName) throws Exception String sql = select*from exam_teacher where teaId=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, userName);ResultSet rs = stmt.executeQuery();Teacher tea = null;if (rs.next() tea = new Teacher();tea.setGender(rs.getString(gender);tea.setId(rs.getInt(id);tea.setName(rs.getString(name);tea.setPwd(rs.getString(pwd);tea.setTeaId(userName);tea.setSubject(rs.getString(subject);ConnectionUtils.close(conn);return tea;public Student getStuByStuId(String userName) throws Exception String sql = select*from exam_student where stuId=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, userName);ResultSet rs = stmt.executeQuery();Student stu = null;if (rs.next() stu = new Student();stu.setEnterDate(rs.getString(enterDate);stu.setGender(rs.getString(gender);stu.setGrade(rs.getString(grade);stu.setId(rs.getInt(id);stu.setName(rs.getString(name);stu.setPwd(rs.getString(pwd);stu.setStuId(userName);ConnectionUtils.close(conn);return stu;public List getQuestionByRankSubject(int rank, String subject)throws Exception String sql = select*from exam_question where rank=? and subject=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setInt(1, rank);stmt.setString(2, subject);ResultSet rs = stmt.executeQuery();List list = new ArrayList();while (rs.next() Question question = new Question();question.setAnswer(rs.getString(answer);question.setId(rs.getInt(id);question.setMark(rs.getInt(mark);question.setOptionA(rs.getString(optionA);question.setOptionB(rs.getString(optionB);question.setOptionC(rs.getString(optionC);question.setOptionD(rs.getString(optionD);question.setRank(rank);question.setTitle(rs.getString(title);question.setSubject(subject);list.add(question);ConnectionUtils.close(conn);return list;public void insertScore(Student loginStu, int sum, ExamInfo examInfo)throws Exception String sql = insert into exam_score(stuId,name,subject,score,examTime)values(?,?,?,?,?);Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, loginStu.getStuId();stmt.setString(2, loginStu.getName();stmt.setString(3, examInfo.getSubject();stmt.setInt(4, sum);stmt.setString(5, examInfo.getExamTime();stmt.executeUpdate();ConnectionUtils.close(conn);public Score getScoreByStuIdSubject(String stuId, String subject)throws Exception String sql = select*from exam_score where stuId=? and subject=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, stuId);stmt.setString(2, subject);ResultSet rs = stmt.executeQuery();Score score = null;if (rs.next() score = new Score();score.setExamTime(rs.getString(examTime);score.setName(rs.getString(name);score.setScore(rs.getInt(score);score.setStuId(stuId);score.setSubject(subject);ConnectionUtils.close(conn);return score;public List getAllScoresByStuId(String stuId) throws Exception String sql = select*from exam_score where stuId=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, stuId);ResultSet rs = stmt.executeQuery();List list = new ArrayList();while (rs.next() Score score = new Score();score.setId(rs.getInt(id);score.setExamTime(rs.getString(examTime);score.setName(rs.getString(name);score.setScore(rs.getInt(score);score.setStuId(stuId);score.setSubject(rs.getString(subject);list.add(score);ConnectionUtils.close(conn);return list;public List getScoreBySubject(String subject) throws Exception String sql = select*from exam_score where subject=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, subject);ResultSet rs = stmt.executeQuery();List list = new ArrayList();while (rs.next() Score score = new Score();score.setExamTime(rs.getString(examTime);score.setId(rs.getInt(id);score.setName(rs.getString(name);score.setScore(rs.getInt(score);score.setStuId(rs.getString(stuId);score.setSubject(subject);list.add(score);ConnectionUtils.close(conn);return list;public void updateStu(int id, String newPwd) throws Exception String sql = update exam_student set pwd=? where id=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, newPwd);stmt.setInt(2, id);stmt.executeUpdate();ConnectionUtils.close(conn);public void updateTea(int id, String newPwd) throws Exception String sql = update exam_teacher set pwd=? where id=?;Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, newPwd);stmt.setInt(2, id);stmt.executeUpdate();ConnectionUtils.close(conn);public void insertQuestion(Question question) throws Exception String sql = insert into exam_question(title,optionA,optionB,optionC,optionD,answer,mark,rank,subject) values(?,?,?,?,?,?,?,?,?);Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, question.getTitle();stmt.setString(2, question.getOptionA();stmt.setString(3, question.getOptionB();stmt.setString(4, question.getOptionC();stmt.setString(5, question.getOptionD();stmt.setString(6, question.getAnswer();stmt.setInt(7, question.getMark();stmt.setInt(8, question.getRank();stmt.setString(9, question.getSubject();stmt.executeUpdate();ConnectionUtils.close(conn);public void insertStudent(Student stu) throws Exception String sql = insert into exam_student(stuId,name,grade,pwd,gender,enterDate)values(?,?,?,?,?,?);Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, stu.getStuId();stmt.setString(2, stu.getName();stmt.setString(3, stu.getGrade();stmt.setString(4, stu.getPwd();stmt.setString(5, stu.getGender();stmt.setString(6, stu.getEnterDate();stmt.executeUpdate();ConnectionUtils.close(conn);public void insertTeacher(Teacher tea) throws ExceptionString sql = insert into exam_teacher(teaId,name,pwd,gender,subject)values(?,?,?,?,?);Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, tea.getTeaId();stmt.setString(2, tea.getName();stmt.setString(3, tea.getPwd();stmt.setString(4, tea.getGender();stmt.setString(5, tea.getSubject();stmt.executeUpdate();ConnectionUtils.close(conn);public void insertQuestions(String fileName) throws Exception try BufferedReader in = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(fileName), gbk);String str;while (str = in.readLine() != null) str = str.trim();if (str.equals() | str.startsWith(#) continue;/ 解析流信息到 Question 对象Question q = parseQuestion(str, in);insertQuestion(q);in.close(); catch (Exception e) e.printStackTrace();throw new RuntimeException(e);private Question parseQuestion(String str, BufferedReader in) String data = str.split(,a-z+=);Question q = new Question();q.setAnswer(data1);q.setMark(Integer.parseInt(data2);q.setRank(Integer.parseInt(data3);q.setSubject(data4);try / 读取题干q.setTitle(in.readLine();/ 连续读取4个选项q.setOptionA(in.readLine();q.setOptionB(in.readLine();q.setOptionC(in.readLine();q.setOptionD(in.readLine(); catch (IOException e) e.printStackTrace();return q;public void insertStudents(String fileName) throws Exception try BufferedReader in = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(fileName), gbk);String str;while (str = in.readLine() != null) str = str.trim();if (str.equals() | str.startsWith(#) continue;Student stu = parseStudent(str, in);insertStudent(stu);in.close(); catch (Exception e) e.printStackTrace();throw new RuntimeException(e);private Student parseStudent(String str, BufferedReader in) String data = str.split(,a-z+=);Student stu = new Student();stu.setStuId(data1);stu.setName(data2);stu.setGrade(data3);stu.setPwd(data4);stu.setGender(data5);stu.setEnterDate(data6);return stu;public void insertTeachers(String fileName) throws Exception try BufferedReader in = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(fileName), gbk);String str;while (str = in.readLine() != null) str = str.trim();if (str.equals() | str.startsWith(#) continue;Teacher tea = parseTeacher(str, in);insertTeacher(tea);in.close(); catch (Exception e) e.printStackTrace();throw new RuntimeException(e);private Teacher parseTeacher(String str, BufferedReader in) String data = str.split(,a-z+=);Teacher tea = new Teacher();tea.setGender(data4);tea.setName(data2);tea.setPwd(data3);tea.setSubject(data5);tea.setTeaId(data1);return tea;2.1.2 entity数据层Admin.javapackage entity;import java.io.Serializable;public class Admin implements Serializable private static final long serialVersionUID = -5460259578181540777L;private int id;private String adminId;private String pwd;public int getId() return id;public void setId(int id) this.id = id;public String getAdminId() return adminId;public void setAdminId(String adminId) this.adminId = adminId;public String getPwd() return pwd;public void setPwd(String pwd) this.pwd = pwd;ExamInfo.java package entity;import java.io.Serializable;public class ExamInfo implements Serializable private static final long serialVersionUID = 834408843672190935L;private String subject;private String examTime;public String getSubject() return subject;public void setSubject(String subject) this.subject = subject;public String getExamTime() return examTime;public void setExamTime(String examTime) this.examTime = examTime;Overridepublic String toString() return 考试科目: + subject + 考试时间: + examTime;Question.javapackage entity;import java.io.Serializable;public class Question implements Serializableprivate static final long serialVersionUID = 8999142155137236323L;private int id;private String title;private String optionA;private String optionB;private String optionC;private String optionD;private String answer;private int mark;private int rank;private String subject;public String getTitle() return title;public void setTitle(String title) this.title = title;public String getAnswer() r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生 食品安全 主题班会课件
- 防暑安全课件
- 上海安全员C证考试(专职安全员)题及答案
- 人员的风险管理标准和管理措施规范(10篇)
- 小学生安全知识竞赛试题
- 国防知识竞赛题及其答案
- 单病种质量管理考试题库及答案
- 2024审计考试真题及答案
- 国开经济法形考任务1-4试题及答案
- 中班午睡安全教育课件
- 杭州萧山交通投资集团有限公司Ⅱ类岗位招聘7人笔试考试备考试题及答案解析
- 2026云南云天化石化有限公司校园招聘9人笔试考试备考试题及答案解析
- 资质转让售卖合同范本
- 保卫工作个人述职报告
- 电气元件符号知识培训课件
- 2025贵州贵安商业资产运营管理有限公司招聘11人考试笔试备考题库及答案解析
- 2025年人力资源公司猎头服务管理制度
- 2025年高校教师资格证之高等教育学测试卷附答案
- 工程项目质量管理体系标准模板
- 老年人血压自测
- 安全生产风险管控管理制度
评论
0/150
提交评论