




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目题目 在线考试系统在线考试系统 1 1 实验目的实验目的 熟练运用 JAVA 开发环境及工具 并用 JAVA 语言编写程序 掌握面向对象的概念 掌握系统功能模块的合理划分 并实现各模块接口的连接 掌握 C S 结构的编程方法 设计数据库模型 2 2 实验内容实验内容 编辑生成试题库 随机生成本次考试试题 同时提供在线评分并保存结果 选择 ACCESS 作为后台的数据库 3 3 实验过程实验过程 3 1 系统模块部分设计 题库管理 用于对单个试题的增 删 改 查等基本维护 还可对题库进行数 据备份和数据还原 我们针对不同题型 不同应用范围及不同科目对试题进行 维护 试卷管理 可进行三种组卷方式的维护 随机组卷 人工组卷 综合组卷 还 可对考生的基本信息进行维护 考试管理 对考试分配试卷 并对考试的基本信息进行维护 相当于人工安排 考试的过程 评卷管理 对试卷的客观题分配评卷人 并对评卷人基本信息进行管理 成绩管理 对每次考试的学生成绩的基本信息进行维护 并提供学生成绩的统 计管理 用户管理 对使用本系统的用户基本信息进行维护 用户多数为 系统管理员 老师 教务处人员 其他 权限管理 对系统的访问权限进行管理 并对用户可进行权限的分配 系统应该具备的基本功能 各模块需完成以下功能 在线考试系统 信 息 管 理 评 卷 管 理 试 卷 管 理 题 库 管 理 成 绩 管 理 考 试 管 理 用 户 管 理 权 限 管 理 题型维护 对试题的题型进行增 删 改 查操作 在操作之后会自动刷新主 页 以使信息更新 范围维护 对试题的应用范围进行增 删 改 查操作 在操作之后会自动刷 新主页 以使信息更新 科目维护 对试题的科目进行增 删 改 查操作 在操作之后会自动刷新主 页 以使信息更新 试题维护 对试题的基本信息进行增 删 改 查操作 在操作之后会自动刷 新主页 以使信息更新 其他维护 对试题信息的批量查询 并可进行数据导出 数据备份 数据恢复 随机组卷 用户只需对试卷题型进行设置就可组卷的方式 人工组卷 可使用户选择试卷的题型中的试题的组卷方式 综合组卷 是随机组卷与人工组卷的混合组卷方式 即用户对某一类型的试题 可进行选择 也可对试题不进行选择 试卷其他维护 对试卷信息的批量查询 对试题的数据备份与还原 考试管理 考试信 息维护 分配评 卷人 评卷管理成绩管理 评卷人 评卷 考生信 息维护 考生成 绩维护 成绩其 他维护 考试信息维护 对考试的时间 地点 监考人 考试用的试卷 试卷总分数及 答卷总时间等考试的基本要素进行设置 考生信息维护 对考试的学生的基本信息进行增 删 改 查操作 在操作之 后会自动刷新主页 以使信息更新 分配评卷人 对考试所用试卷的客观题分配评卷人 并对评卷的基本信息进行 维护 题库管理试卷管理 试卷其 他维护 试卷信 息维护 其它 维护 试题 维护 基本 维护 综 合 组 卷 人 工 组 卷 随 机 组 卷 题 型 维 护 科 目 维 护 范 围 维 护 评卷人评卷 对分配试卷的评卷人可以在此进行评卷 考生成绩维护 对考试的考生成绩信息进行统计与汇总 对有权限的人可进行 成绩的增 删 改 查操作 成绩其他维护 对考生成绩信息的批量查询 并可进行数据导出 数据备份 数据恢复 用户管理权限管理信息管理 权限信 息维护 用户基 本信息 信息基 本维护 用户分 配权限 用户基本信息维护 对使用本系统的用户进行维护 而用户的权限由权限管理 进行维护 并分配给用户 使用户只能访问自己拥有的权限内 权限信息维护 对基本的权限进行维护 用户可自定义维护权限 用户分配权限 对未分配权限的用户进行权限的分配 即对 分配权限的增 删 改 查操作 信息基本维护 我们的信息除了有关考试的信息外 还有公告 新闻 留言信 息需要我们维护 其中公告 新闻由后台有权限的人进行增 删 改 查操作 而留言是由前台的用户 学生 或游客录入的 我们要防止垃圾数据显示 即 对留言有权更改等操作 3 2 系统结构图 本系统分为学生前台子系统和考试管理子系统 整个系统的结构图如下 1 在 线 考 试 系 统 考生 前 台 后台 管 理题库管理 评卷管理 考试管理 试卷管理 成绩管理 用户管理 权限管理 学生登陆 3 3 数据库设计 试题类型表 questionType table 其中包括了试题的类型的基本信息 如类 型名称 答题方式 说明信息等字段 录入时 我们将答题方式确定为大概几 种类型 填空方式 选择方式 问答方式 判断方式 综合方式 试题范围表 questionBound table 用于控制试题应用的范围 如同样的科目 语文 在小学 初中 高中 大学都有 由此我们设定了此表 此表中有范围 名称 范围说明等基本信息 所属科目表 questionSubject table 用于录入试题相关的科目应用 它可以 有不同的应用范围 如上所述 我们只需录入一次的科目 就可方便我们在录 入试题时每次都录 各种题库表 我们采用一种类型的题存储在一个表中 由 此我们会有填空题表 question blanc table 单选题表 question selectone table 多选题表 question selectMany tabel 一 题多问表 question askone table 一题多问表 question askMany table 判断题表 question judge table 等试题表 试卷表 exam table 用于报存考试中试卷的基本信息 如出卷方式 有随机 出卷 人工出卷 综合出卷 试卷名称 试卷应用范围 与试题范围相对应 试卷所属科目 与试题科目相对应 试题标题级别 试题标题内容 试题 总类型 试题个数 试题总 ID 等基本信息 学生表 student table 用于保存学生的考试的用户名及登陆密码 成绩表 grade table 用于存储学生的考试成绩 评题表 appraiser question table 对于主观题的答案我们须要评卷人 有 权限的用户 进行手工评卷 本表用来存储评卷人评卷的一些信息 答案表 student answer table 用于存储学生问答题的答案 如试卷 ID 学 生 ID 及各种试题类型的答案字段 用户表 user table 用于保存用户的登陆的基本信息及分配的权限 权限表 purview table 用于存储用户组织的的权限 通过分配操作模块的权 限组织权限 4 4 关关键键代代码码及及其其分分析析 4 4 1 1 S Se er rv ve er rG Gu ui i j ja av va a public void actionPerformed ActionEvent e if e getSource log boolean b login String username JOptionPane showInputDialog this 请 输入用户名 输入用户名 JOptionPane QUESTION MESSAGE trim String password JOptionPane showInputDialog this 请 输入密码 输入密码 JOptionPane QUESTION MESSAGE trim if username null password null username temp password temp return adminCheck username password 验证管理员 if tf true JOptionPane showMessageDialog thi s 登陆成功 成功 JOptionPane INFORMATION MESSAGE toolBar1 setVisible true split one setVisible true else JOptionPane showMessageDialog thi s 登陆失败 失败 JOptionPane ERROR MESSAGE return else if e getSource setCount userCount JOptionPane showInputDialog this 请 输入本次考试的人数 inittest 数据库信息初始化 else if e getSource startSer if settime true serArea append 服务 器已启动 n 预设考试人数为 userCount n 考试时间为 timeCount n start true else JOptionPane showMessageDialog thi s 你还没有设置考试信息 警告信息 JOptionPane INFORMATION MESSAGE if start true linkArea append ServerManager linkShow ServerManager linkstatu s n else JOptionPane showMessageDialog thi s 服务器还没有启动不能进行操作 警告信息 JOptionPane INFORMATION MESSAGE else if e getSource userButton if start true userArea append ServerManager userShow ServerManager userstatu s n userArea append ServerManager cou ntShow ServerManager ucount else public void adminCheck String s1 String s2 ConnectBean cb new ConnectBean if cb openConnection System out println 连接 数据失败 System exit 1 return 4 2 Server login java 定义一个接收用户登陆的类 public void run String s null try s in readUTF 接收 考试号和密码 然后分别取出 StringTokenizer st new StringTokenizer s if st hasMoreTokens str1 st nextToken str2 st nextToken System out println username str1 System out println password str2 catch IOException e e printStackTrace 读取数据库里的用户信息 并 进行验证 try ConnectBean cb new ConnectBean if cb openConnection System out println 连接数据失败 System exit 1 return cb createPreparedStatement selec t flag from stuinfo where sno str1 ResultSet r cb executeQuery String m while r next m r getString flag System out println 标识 m if m equals 0 out writeUTF 用户已 经完成考试 不能再考试 else cb createPreparedStatement select sname spass from stuinfo where sno str1 false ResultSet rs cb executeQuery while rs next dbn rs getString sname dbp rs getString spass System out println 用户 str1 你的用户名为 dbn 你 的密码为 dbp 验证用户密码 如果 登录成功将登录标志设为 1 if str2 equals dbp trim out writeUTF 用 户 dbn 登陆成功 System out println 用户 dbn 登陆成功 out close String sql1 update stuinfo set flag 1 where sno str1 PreparedStatement ps cb createPreparedStatement sql1 ps executeUpdate System out println 用户成功登录 else out writeUTF 密 码错误 System out println 登陆密码错误 out close cb close 4 3 ServerManager java public ServerManager Thread td1 new Thread public void run serstatus login thread start n serShow serstatus ServerSocket ss1 null Socket you null int port1 8001 try ss1 new ServerSocket port1 serstatus listener the port port1 serShow serstatus catch IOException e e printStackTrace while true try you ss1 accept catch IOException e e printStackTrace if you null counter ucount 现 在参加考试的人数为 counter countShow ucount if counter Maxcount userstatus user s IP you getInetAddress connected port1 进行登陆 userShow userstatus 第一个 线程启动 new Server login you start else userstatus user s IP you getInetAddress connected port1 中断线程启动 userShow userstatus 中断线 程启动 new Maxcounter you td1 start 启动一个响应客户端读取试题 的线程 Thread td2 new Thread two public void run serstatus thread 2 start serShow linkstatus ServerSocket ss2 null int port2 8002 try ss2 new ServerSocket port2 linkstatus listener the port port2 linkShow serstatus catch IOException e e printStackTrace while true Socket you2 null try you2 ss2 accept catch IOException e e printStackTrace if you2 null userstatus user s IP you2 getInetAddress connected port2 进行读题 userShow userstatus new Server readTest you2 start td2 start 启动一个接收用户答应并存储 的线程 Thread td3 new Thread three ServerSocket ss3 null int port3 8003 public void run serstatus thread 3 start serShow serstatus try ss3 new ServerSocket port3 linkstatus listener the port port3 linkShow linkstatus catch IOException e e printStackTrace while true Socket you3 null try you3 ss3 accept catch IOException e e printStackTrace if you3 null userstatus user s IP you3 getInetAddress connected port3 提交答案 userShow userstatus 第 3 个线程 启动 new Server readScore you3 start td3 start 启动一个用户查询的线程 Thread td4 new Thread four ServerSocket ss4 null int port4 8004 public void run serstatus thread 4 start serShow serstatus try ss4 new ServerSocket port4 linkstatus listener the port port4 linkShow linkstatus catch IOException e e printStackTrace while true Socket you4 null try you4 ss4 accept catch IOException e e printStackTrace if you4 null userstatus user s IP you4 getInetAddress connected port4 进行查询 userShow userstatus 4 4 Server readTest java public void run String sql2 定义查询语句 String dbt 以下为试题 试题 String ts null 接收用户 发送的考试科目 int tcount 0 试题的数目 try 网络连接部分 out writeUTF 你连接成功 ts in readUTF System out println ts 数据库连接部分 查询客户端所选试题 ConnectBean cb new ConnectBean if cb openConnection System out println 连接数据失败 System exit 1 return 在数据库选题 sql2 select from exam where eid ts cb createPreparedStatement sql2 false ResultSet rs cb executeQuery while rs next dbt n rs getString 2 t n rs getString 3 tcount cb close System out println dbt System out println tcount out writeUTF Integer toString tco unt out writeUTF dbt 将 读到的试题返回到客户端 传送考试时间 out writeUTF Timecount out flush out close System out println 读取 试题成功 catch SQLException e e printStackTrace System out println not connect db catch IOException e1 System out println not read client select 4 5 Server readScore java 定义一个接收用户答案的类 判断对错 将分数返回到用户端 并将成绩存入数据库 public Server readScore Socket socket 创建 网络连接 this socket socket public void run 接收用户提交的答案 try readkey in readUTF System out println readkey catch IOException e1 e1 printStackTrace StringTokenizer stc new StringTokenizer readkey if stc hasMoreTokens 客户传来答案的第一个字 符为用户名 第二个字符为考试科目 str1 stc nextToken trim System out println 用户 为 str1 uno Integer parseInt str1 if stc hasMoreTokens 第二个字符为考试科目 str2 stc nextToken trim System out println 试题 类型为 str2 在数据库获取正确答案 try ConnectBean cb new ConnectBean if cb openConnection System out println 连接数据失败 System exit 1 return 判断分数 for int i 0 i Integer parseInt str4 i if userAnswer i equals crreAnswer i count 10 System out println 用户 str1 你的得分为 count 将分数返回到客户端 try out writeUTF Integer toString cou nt System out println 将分 数返回到客户端 out flush out close catch IOException e e printStackTrace 将 分数存到数据库 try ConnectBean cb new ConnectBean if cb openConnection System out println 连接数据失败 System exit 1 return PreparedStatement ps cb createPreparedStatement subject ps setInt 1 count ps setInt 2 uno ps executeUpdate System out println 更新 成功 mit cb close catch SQLException e TODO 自动生成 catch 块 System out println 写入 数据发生错误 n e 4 6 Server java public static void main String args new Server 4 7 TestGui java public void actionPerformed ActionEvent e if e getSource callIP 呼叫服务器 if socket null in close out close catch Exception ee String login user pass int port1 8001 try 建立网络连接 socket new Socket ip port1 in new DataInputStream socket getInputStream out new DataOutputStream socket getOutputStre am out writeUTF login catch IOException ee 如果连接失败 ipField setText 呼叫 失败 stateField setText 你呼叫没有成功 int port4 8004 try socket new Socket ip port4 in new DataInputStream socket getInputStream out new DataOutputStream socket getOutputStre am out writeUTF user stuinfo setText 请求 信息已发送 catch IOException ee 如果连接失败 ipField setText 呼叫 失败 stateField setText 你呼叫没有成功 stuinfo setText 你呼 叫没有成功 if socket null 如 果连接成功 try String queryInfo in readUTF 得 到查询结果 stuinfo setText queryInfo out flush out close catch IOException e1 出现 异常 otherinfo setText 数据传输错误 else if e getSource beginExe 生成试题 String mgr S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海门前三包管理办法
- 餐厅新员工管理办法
- 家庭农场畜牧饲养服务协议
- 定制家具设计制造合同
- 大型企业与小型企业合作投资协议
- 2025山东济宁汽车工程职业学院招聘工作人员5人(三)考试模拟试题及答案解析
- 2025河北承德护理职业学院选聘专业技术人员补充工作备考考试题库附答案解析
- 2025辽宁中国医科大学附属盛京医院招聘40人考试模拟试题及答案解析
- 石场捡石头合同(标准版)
- 2025中国农业科学院西部农业研究中心(科技援疆指挥部)招聘合同制工作人员备考模拟试题及答案解析
- 麻黄现行管理办法
- 市级防汛物资管理办法
- 试油操作规程详解
- 《研学旅行指导师实务》课件-第6章 基(营)地研学课程操作
- 2025年心理辅导员职业资格考试试卷及答案
- 肺炎护理考试试题及答案
- 2025届安徽省蒙城县英语七下期末考试试题含答案
- 肩关节脱位的治疗讲课件
- 极地车辆轻量化复合材料结构-洞察阐释
- 包包子PK大赛活动方案
- 婴幼儿托育专业教学标准(中等职业教育)2025修订
评论
0/150
提交评论