




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 Java 的在线考试系统的设计和实现 I 大学 毕 业 论 文 设计 题 目 基于 JAVA 在线考试系统的设计与实现 姓 名 学 院 理学与信息科学学院 专 业 通信工程 班 级 学 号 指导教师 年 月 日 可编辑修改 目录 摘要 I ABSTRACT II 第一章引言 1 1 1 课题背景 1 1 2 课题的目的和意义 1 1 3 对于该项目的描述 1 1 4 系统设计思想 2 1 5 可行性分析 3 第二章 系统设计相关技术介绍及开发环境要求 3 2 1MVC 模式的介绍 4 2 1 1MVC 模式的概述 4 2 1 2MVC 的强势与劣势 4 2 2 JAVA 组件 JAVABEANS 4 2 2 1 什么是 JAVABEANS 4 2 3 JAVASE 概述 4 2 4 关于 STRUTS 5 2 4 1 STRUTS简介 5 2 4 2 STRUTS的主要功能 5 2 4 3 STRUTS工作原理 5 2 5 关于 SWING 6 2 5 1 SWING简介 6 2 5 2 为什么需要 SWING 6 2 5 3 SWING带给我们什么 7 2 6 关于开发环境的概述 7 2 6 1 操作系统 7 2 6 2 开发语言 7 2 6 3 开发环境 8 2 7 关于布局的概述 8 2 7 1BORDERLAYOUT 8 2 7 2FLOWLAYOUT 8 2 7 3GRIDLAYOUT和 GRIDBAGLAYOUT 8 2 8 小结 9 第三章系统需求分析和总体设计 9 3 1 系统功能需求 9 可编辑修改 3 2 系统设计的总体框架 10 3 2 1 软件层次结构 10 3 2 2 界面与控制器的关系 10 3 2 3 业务层介绍 10 3 2 4 数据层介绍 11 3 3 系统的用例图 11 3 3 1 总体用例分析 11 3 3 2 用户管理用例分析 12 3 3 3 考试管理用例分析 12 3 3 4 考试题目管理用例分析 13 3 3 5 成绩管理用例分析 13 3 4 小结 14 第四章系统的详细设计 14 4 1 客户机的类 14 4 2 服务器的类 15 4 3 实体类部分 15 4 4 工具类 16 4 5 读取配置文件类 16 4 6 系统运行的详细描述 16 4 7 系统运行图以及主要的实现代码 20 4 8 小结 28 第五章总结与展望 28 5 1 工作总结 28 5 2 后续工作展望 29 致谢 30 参考文献 31 基于 Java 的在线考试系统的设计和实现 I 基于基于 JAVAJAVA 的在线考试系统的设计与实现的在线考试系统的设计与实现 摘要摘要 当今节约已经成为一个命题 在线考试系统的设计意在响应这个话题 努力构建无纸化管理 所谓的在线考试就是将考试安排在网上进行 方便了考 试的组织安排工作 节省了大量的时间与资源 在线考试系统适合考生分布范 围广不容易集中的远程教育 本文通过对试题的导出 在线用户的登录 答题 以及考试结果的输出进行设计 完成一个简单的在线考试系统 本文基于 JAVA 通过 MVC 结构 swing 进行布局 综上技术 能够将系统功能实现 关键字 远程教育 在线考试 MVC JAVA Swing 可编辑修改 D Designesign andand implementationimplementation ofof onlineonline examinationexamination basedbased onon javajava AbstractAbstract Today s conservation has become a proposition online examination system design is intended to respond to this topic and build a paperless management The so called online exam is conducted online examination arrangements will facilitate the examination of the organizational arrangements saves a lot of time and resources Online examination system is suitable for a wide range of candidates is not easy to focus on the distribution of distance education Based on the examination of export online user s login answer and the output of test results to design to complete a simple online examination system Based on JAVA through the MVC structure swing the layout To sum up technology the ability to implement system functions KeywordsKeywords distance learning online examinations MVC JAVA Swing 基于 Java 的在线考试系统的设计和实现 1 第一章引言第一章引言 1 11 1 课题背景课题背景 随着近些年来网络的蓬勃发展使得网络教育也得到了一定的认可 代表了 现代教育的重要发展趋势 推动了教育的更新换代 在这种形式下 网络教育 所伴随的在线考试必定能在将来的教育事业上作用明显 到目前为止 包括教 育部在内的教育执行机构等都在积极的制定在线考试机制 使得教育事业更上 一层楼 所以 如今很多研发机构都在响应时代的命题对网络教育以及附属产 业进行探讨和研发 伴随着网页技术对日常生活的渗透 开发一个在线考试系 统已经势在必行 1 21 2 课题的目的和意义课题的目的和意义 根据现有情况 教育机构和学校都还是采用以往的考试方式 即纸质答卷 但是传统纸质考试步骤很繁琐 考试组织机构要组织人员更具自己的需求出试 题 安排考生在所在考场考试 安排监考人员监考 安排阅卷人员对试题进行 评阅 最后安排阅卷结束后的总结大会并对考试情况作出分析报告 不只是这 样 其工作也将会是十分繁琐并且非常容易出错 换句话说 传统的考试方式 已经在一定程度上不太适合现代考试的需求 在计算机应用的迅猛发展的前提 下 网络应用也伴随着蓬勃发展 所以 无论是考试机构还是考生都迫切需求 一个应用来减轻工作量 不仅减轻了考生的负担 而且也提高了考试的质量 从而使考试更接近公平 公正 客观 更能激发考生的学习积极性 现在这种 技术已经得到初步推广 得到了各种认证考试的认可 综上需求 我们做出这 个在线考试系统能够在考试和学习的过程中起到便捷 提高考试质量 减少阅 卷工作量的作用 可编辑修改 1 31 3 对于该项目的描述对于该项目的描述 对计算机的应用 使得生产效率得到了极大的提高 同时也使一部分生产 力得到了解放 在信息化飞速发展的今天 计算机的应用来解决实际生产生活 中的问题已经相当普遍 鉴于传统考试中使用纸质试卷带来的效率低下 信息 滞后等诟病 我们迫切需要一个应用解决这些问题 本文设计这个在线考试系 统 采用了 JAVA 编程语言实现考试系统 本文介绍的这个在线考试系统 考生通过系统许可 在用户登录界面输入 自己的账户和密码 进入考试系统 然后根据系统提示 完成考试作答并得到 自己的分数 上述这个过程全部都是在网络上进行并且解决了纸质答卷的繁琐 过程 本文论述的在线考试系统主要分成两个部分 即服务器部分与客户端部分 这两者之间是通过网络连接起来的 服务器的一个线程和客户端是连着的 首先 在服务器部分 这部分首先启动 然后 服务器开始读取系统所需 的配置文件 上述操作能够使考试所用到的试题提交到服务器 接着读取学生 的信息 学号 姓名 密码等都要出现在服务器中 将上述信息读取到服务器 中之后 将上述信息封装在某个类中 紧接着等待客户端发送请求 当客户端 有请求发送 然后服务器就会与客户端进行连接 然后等待请求结束 该连接 才会断开 在这个过程中 服务器不断监听客户端的请求 控制运行进程 其次 客户端部分 设计的比较简单 因为要给学生操作 所以为了方便 学生进行操作 这里用到了图形界面的操作 上边提到的图形界面总共有三个 界面构成 第一个就是用于学生考试的用户登录的界面 考生需要正确输入自 己的账号和密码才能登录该系统 第二个就是学生选择考试科目的界面 在这 个窗口出现之前先将前面一个窗口关闭 然后再创建新的窗口 第三个界面是 考生的考试界面的窗口 进入此界面也要关闭前一个窗口 紧接着当考生完成 考试 提交试题 分数自动显示 然后关闭窗口 在此同时 服务器同时要断 开连接 线程结束 综上所述 就是客户端的三个窗口 在这个在线考试系统中 本文涉及到两个主要的类 即试卷类和学生类 这两个类的信息 都是以配置文件的形式保存的 上述信息都可以用工具类读 可编辑修改 取 1 41 4 系统设计思想系统设计思想 本文所描述的在线考试系统是以服务器和客户端的连接为中心的 下述就 是该系统的设计思想 首先 服务器先启动 服务器然后读取配置文件 接着 将考试所需的考 题以及规定格式写入配置文件 然后 把考生的账号密码等信息写入另一个配 置文件中 服务器需要读取试题信息 所以在设计时要定义学生类 试卷类以 及题目类 当客户端与服务器之间连接时需要数据请求 这里包括多种请求类 型 这里包含的请求有连接请求 考生登录请求 试题发送请求 答题请求 为满足上述需求 我们要定义请求类 并且要求服务器不断读取请求信息 为 了减少代码量 我们这里需要几个工具类 一个是创建套接字的连接 另一个 就是用来读取配置文件的工具类 这样就出来了服务器的基本框架 在客户机这边 我们只需考虑一个线程就行了 并且涉及到四个类 这之 中有三个窗口类和一个客户机与服务器线程连接的类 这个连接类是上述三个 窗口类的一个属性 这个属性用来使三个窗口类与服务器进行数据通信 三个 窗口也只能通过上述连接类与服务器之间进行通信 这样这个客服器的整体设 计也就呈现出来了 此外还要说一下就是 客户机与服务器进行连接是通过 IP 和端口号数据通 信的 客户机与服务器对应关系如下 一个客户机对应一个服务器 而一个服 务器对应多个客户机 服务器与客户机通过线程连接 1 51 5 可行性分析可行性分析 鉴于在线考试系统的美好前景 本项目的设计目标是实现考试系统 并且 能够实现其相应的业务功能 例如登录功能 考试功能 管理员修改难度系数 考试时间 题目数 考试得分等 此项目需要实现如下功能 1 登录功能 用户能够准确无误的登录考试系统 二 考试功能 实现基 可编辑修改 本的业务逻辑 三 查看分数 在考试结束后 考生能够看到考试分数 四 管理员可以根据系统定义修改难度系数和题目数 五 题目切换 实现上一题 与下一题的切换 六 其他功能还有计时功能等 第二章第二章 系统设计相关技术介绍及开发环境要求系统设计相关技术介绍及开发环境要求 2 1MVC2 1MVC 模式的介绍模式的介绍 2 1 1MVC2 1 1MVC 模式的概述模式的概述 MVC 是 模型 Model 视图 View 和控制 Controller 的缩写 其中 Model 层用来实现系统中的业务逻辑 通常可以用 JavaBean 来实现 View 层用于与 用户的交互 Controller 层连接模块与视图 它可以是用户的请求得到恰当 的视图予以显示 同时它也可以是用户的输入得到解释并将它们映射为模型层 可执行的操作 1 2 1 2MVC2 1 2MVC 的强势与劣势的强势与劣势 优点 低耦合性 使得更改视图层代码就不用重新编译模型和控制器代码 高重用性和可适用性 允许你是用各种方式的视图来访问同一个服务器端的代 码 快速的部署 使用 MVC 模式是的开发时间得到相当大的缩减 2 缺点 MVC 的缺点是它没有明确的定义 不容易理解 2 22 2 J JAVAAVA组件组件 J JAVAAVAB BEANSEANS 2 2 12 2 1 什么是什么是 JavaBeansJavaBeans JavaBeans 是一种企业级开发中的技术规范 凡是遵循该规范的类都称为 JavaBeans 类 又叫做 pojo 类 该规范主要包含以下几点 1 所有的类都必须实现序列化接口 2 所有的属性尽量定义为私有属性 3 所有的方法定义为公有方法 4 提供属性的 get 和 set 方法 通过该方法可以访问属性 可编辑修改 2 32 3 JavaSEJavaSE 概述概述 JavaSE 是 java Standard edition 的缩写 JavaSE 就是 Java 的标准版 主要用于桌面应用软件的编程 JavaSE 包含那些构成 Java 语言核心的类 比 如 数据库连接 接口定义 输入 输出 网络编程 3 JavaSE 具有以下几个特点 第一 它比较容易开发 第二 它启动时间短 内存占用较少 第三 它还有元数据特性 2 42 4 关于关于 S STRUTSTRUTS 2 4 12 4 1 StrutsStruts 简介简介 Struts 是开源软件 使用 Struts 的目的是为了帮助我们减少在运用 MVC 设计模型应用的时间 Struts 已逐步越来越多运用于商业软件 是一种非常优 秀的 JavaSE MVC 实现方式 4 2 4 22 4 2 StrutsStruts 的主要功能的主要功能 1 Struts 包含一个 controller servlet 能够将客户端的请求发送给 Action 对象 2 它提供了一系列实用对象 通过 Java reflection 自动处理 JavaBeans 属性 提示和消息 Struts 提供了它自身的控制器组件 并且整合了其他技术 用来提供模型和视图 Struts 正逐步被运用 是性能良好的 MVC 实现方式 5 2 4 32 4 3 StrutsStruts 工作原理工作原理 这里我们先来介绍一下 MVC MVC 是 Model View Controller 的缩写 它作 为称用得设计模式得到了广泛的运用 MVC 使数据接口和逻辑接口连接减弱 并且使得视图更加富有变化性 MVC 使得程序逻辑清晰 更容易被人理解 MVC 的工作原理如下 2 1 所示 可编辑修改 2 1MVC2 1MVC 的工作原理的工作原理 接下来 我们说一下 Struts 它作为 MVC 的一种实现 Struts 继承了 MVC 的各项特性 具有 MVC 的特点 并根据 JavaSE 的特点 做出了相应的更改 Struts 的工作原理 如下图 2 2 所示 2 2Struts2 2Struts 的工作原理的工作原理 2 52 5 关于关于 S SWINGWING 2 5 12 5 1 S Swingwing 简介简介 Swing 是建立在 AWT 之上的组件集 除提供了 AWT 所缺少的 大量的附加 组件外 Swing 还提供了替代 AWT 重量组件的轻量组件 AWT 中文含义抽象窗口 工具包 Abstract Window Toolkit 功能是 Java 开发用户界面最初的工具包 Swing 还包括了一个用于实现插入式界面样式特性的图形用户界面的下层构件 因此 在不同的平台上 Swing 组件都能保持组件的界面样式特性 例如双缓 冲 调试图形和文本编辑包等 6 2 5 22 5 2 为什么需要为什么需要 S Swingwing 可编辑修改 Swing 设计者采用的设计模式 模型 视图 控制器 MVC 模式 该 设计模式遵循一个基本原则 它限制一个对象的功能的数量 防止一个按钮完 成所有的事情 而应该分配内容 比如说让一个对象负责组件的观感 另一个 对象负责存储内容 当程序员想要使用 Swing 组件来完成开发时 不需要考虑 MVC 体系结构 每个用户界面的元素都有一个包装器的类来保存模型和视图 当需要查询所需 要的内容时 包装器类会向模型询问并且返回所要的内容 当想要改变视图时 例如 在一个文本域中改变光标位置的时候 包装类会把此请求转发给视图 然而 有时候包装器转发命令并不得力 在这种情况下 就必须直接地与模型 进行交互 2 5 32 5 3 S Swingwing 带给我们什么带给我们什么 MVC 模式吸引广大 Swing 设计者原因是这种模式允许实现可插观感 每个 按钮或者文本域的模型是独立于观感的 当然可视化表明完全依赖于特殊观感 的用户界面的设计 并且控制器可以改变它 比如 在一个语音控制设备中 控制其需要处理的各种事件与使用键盘和鼠标的标准计算机完全不同 Swing 设计者通分离底层模型与用户界面 这样能够重用模型的代码 更甚于在程序 运行时对观感进行切换 7 对于绝大多数组件 模型类将实现一个以 Model 命名结尾的接口 比如 我们所知道的按钮就实现了 ButtonModel 接口 实现上述接口的类可以定义各 种按钮的状态 上述按钮并不是很复杂 在 Swing 组件库中就有个叫 DefaultButtonModel 的类就实现了这个接口 在试图对象中 每个 Swing 组件 都有一个相关的后缀 UI 的视图对象 8 2 62 6 关于关于开发环境的概述开发环境的概述 2 6 12 6 1 操作系统操作系统 此在线考试系统的开发环境是 Windows 系统 该系统安全系数比较高而且 方便 2 2 6 6 2 2 开发语言开发语言 可编辑修改 开发语言 jdk1 6 0 10 JDK Java Development Kit 是 Sun 公司针对 Java 开发员研发的产品 Java 的就是 JDK 它包括了 Java 运行环境 Java Runtime Envirnment 一堆 Java 工具和 Java 基础的类库 rt jar 所有的 Java 应用程序都有某个版 本的 JDK 与其相对应 所以 要学好 Java 首先要掌握 JDK 最能被程序员接 受的是 Sun 公司发布的 JDK 除了 Sun 之外 好多公司都开发了自己的 JDK 例 如 GNU 组织开发的 JDK IBM 公司开发的 JDK 等 9 2 2 6 6 3 3 开发环境开发环境 开发环境 Eclipse6 0 版 Eclipse 是一个基于 JAVA 的开发平台 它的 源代码是开放的 该软件本身是一个框架和一组服务 用于通过插件组件来构 建开发环境 其中 Eclipse 附带了一个标准的插件集 包括了 Java 开发工具 Java Development Kit JDK 10 2 72 7 关于布局的概述关于布局的概述 2 7 1BorderLayout2 7 1BorderLayout BorderLayout 用于边框布局的布置容器 它可以对容器内的组件等进行布 局设置 例如 调整大小 调整容器内组件的位置 该容器有以下五个区域 东 西 南 北 中 这五个位置 每个位置只允许包含一个组件 并且这些 位置都有自己的标志 EAST WEST SOUTH NORTH CENTER 11 2 7 2FlowLayout2 7 2FlowLayout FlowLayout 外观管理器的功能就是把系统程序中所用的的各个组件按照先 后顺序由上到下 由左及右依次排开 12 2 7 3GridLayout2 7 3GridLayout 和和 GridBagLayoutGridBagLayout GridLayout 的作用是将该窗口分成大小不等的均匀网格 然后使得组件能 够依次按格放入组件 GridBagLayout 的功能是根据设计者的想法 改变组件的大小 使它们能 够摆在想要的位置 13 可编辑修改 2 82 8 小结小结 本章主要介绍了该在线考试系统的关键技术和工具 对系统模式简介 MVC 以及串联的 Struts 使得模型 视图 控制器直接进行恰当的交互 完成各自的职能 用 Swing 布局器进行布局 使得用户界面的设计更加人性化 第三章第三章系统需求分析和总体设计系统需求分析和总体设计 3 13 1 系统功能需求系统功能需求 这个在线考试系统的设计目标是实现考试系统 让考生能够自主考试完成 答卷以及查分 并附带实现相应的业务功能 如登录功能 考试功能 查分功 能等 项目中的需实现的功能如下 1 登录功能 考生能够自主登录该考试系统 再输入考生的账号密码后能 够准确无误的进入考试系统 为考试完成做好充分的前提 2 考试功能 它主要业务逻辑就是考试功能 考试功能 顾名思义 考试 点击该按钮能够打开试题进行作答 进入考试后系统为考生自动分配考题 考 生只需对试卷中出现的考题进行作答即可 3 查看分数 考生能够在考试结束后查看考试分数 当考生对自己分配到 的试题做大完毕并确认无误后 提交试卷 系统会对考生对试题的作答准确与 否进行判断 进而对考生的作答给出得分 4 查看考试规则 该考试系统能够查阅考试规则 考试组织者根据具体情 况对考试规进行编写 考生在考试前能够阅读该规则 以免出现不该发生的失 误 5 题目切换 实现上一题 下一题的切换 是考生能够在做题的过程中进 行题目选择 或者切换题目进行答案纠正 题目检查 6 计时功能 考试科目都有规定一定的作答时间 该考试系统具有倒计时 功能 考生能够时刻看到自己的作答时间以及剩余时间 不至于因为时间问题 可编辑修改 影响自己的答题 计时功能能够督促考生快速完成试题的作答 除此之外 该系统下管理员还可以修改难度系数和倒计数时间修改设定以 及考题题目的增减来适应不同的情况 3 3 2 2 系统设计的总体框架系统设计的总体框架 3 2 13 2 1 软件层次结构软件层次结构 控制层 视图层 业务层 数据层 3 13 1 软件层结构软件层结构 在线考试系统软件层次结构大致以上述图片进行连接 首先 登陆窗体 菜单窗体 测试窗体共同构成了用户客户端 用户客户端连接业务层 业务层 连接数据层 三者共同构成了该考试系统的软件层结构 3 3 2 22 2 界面与控制器的关系界面与控制器的关系 3 23 2 界面与控制器的关系界面与控制器的关系 界面与控制器的关系大致由上图就能够表述出来 客户端就是这里的控制 器 它能够控制选择进入各个界面 它根据考生的信息输入请求 响应进入不 同的考试界面 例如 登陆界面 选择界面 和考试界面 综上 呈现出控制 器与界面的关系 3 2 33 2 3 业务层介绍业务层介绍 loginframe menuframe examfranme clientcontext ExamServiceImp lpl EntityContext 选择界面 MenuFrameMenuFra me Client Context 登陆界面 LoginFrame 考试界面 examframe 可编辑修改 在这个在线考试系统的开发中 业务层采用接口加实现的方式制作 其中 项目中的业务层主要有以下几个功能 1 验证用户信息的正确性 当用户来到登陆界面 用户需要输入本人的账 号和密码方能进入该考试系统完成考试作答 当输入的账号或者密码不准确时 系统会做出报错信息 以免考试出现问题 2 从数据层抽取试题 生成试卷 为表现层提高考试所需要的信息及试题 使考生能够得到考试试题并完成考试 3 验证用户的答案是否正确并且给出分数 在考生完成试题作答后能够获 取自己的得分 3 2 43 2 4 数据层介绍数据层介绍 在本次在线考试系统的开发中 数据层的主要实现的功能是读取用户信息 考题信息 考试信息等 读取用户信息 数据层接收到登录请求时 数据层要调出用户信息并且读 取 从而响应请求 进而用户能够顺利进入考试系统 考题信息 当用户登录考试系统成功 考生要进行考试 必须发送考试请 求 这时 数据层要调出考题信息 形成考题 这样 考生就能进入考试界面 并完成考试作答 考试信息 当考生开始答卷 数据层要不断地更新考试信息 并通过考生 的答案提交判断考生的得分 当考生提交试卷 数据层提交考生得分 3 33 3 系统的用例图系统的用例图 3 3 13 3 1 总体用例分析总体用例分析 在线考试系统 管理者 用户管理部分 考试管理部分 成绩管理部分 试题管理部分 可编辑修改 3 33 3 总体用例图总体用例图 由上图我们可以看出该考试系统分为以上五个部分即 用户管理部分 考 试管体部分 成绩管理部分以及试题管理部分 其中 用户管理部分是对用户 的个人信息进行统一管理 使用户能够登陆该在线考试系统 考试管理部分是 指考生再登陆考试系统后 对考试进行的所有操作 比如 查看考试规则 进 行考试 试卷提交等 都贵考试管理部分统一作出处理 成绩管理系统就是当 用户提交试卷 系统给出分数后 它要对数据进行处理并能够在用户界面呈现 出来 试题管理部分是管理者将试题导入该考试系统 并将试题进行分类 当 用户点击考试请求 试题管理部分自动分配考题供用户作答 上述的使用者分 为两部分 其中一部分是管理者 另一部分是用户 3 3 3 3 2 2 用户管理用例分析用户管理用例分析 通过下图我们能够看到用户管理分为以下四部分 当用户登陆考试系统后 可以进行以下五个操作即 考试开始 分数 考试规则 试题提交以及离开 当考生点击考试开始 系统就为用户分配好试题 当然在开始考试前最好看一 下考试规则 以免出现非受获性失误 当用户提交考题时要进行试卷提交操作 接着用户会得到考试结果即考试分数 最后用户进行离开操作 离开考试系统 这样 一次完整的在线考试就结束了 这就是用户所能体验的在线考试系统的 用户的所有操作 在线考试系统 3 43 4 用户管理用户管理 3 3 3 3 3 3 考试管理用例分析考试管理用例分析 用户 开始 分数 考试规则 离开 试题提交 可编辑修改 考试管理 3 53 5 考试管理考试管理 综上图 我们可以得到考试管理部分包括以下五个管理项目 就是考试规 则的修订填充 考试系统曾是正常时刻准备用户考试 开始考试 对考试进行 计时 以及监督用户进行考试操作 进行整错判断 用户提交试卷后 考试管 理自动判断用户所做出的答案并进行评分 最后考试管理提供用户分数 这些 都能被用户体验 3 3 3 3 4 4 考试题目管理用例分析考试题目管理用例分析 题目管理 3 63 6 题目管理题目管理 上图所描述的是管理者对题目进行的管理操作 它包含五部分 题目的增 加 题目的删除以及答案的设置 增加题目和删除题目是管理者对试题库的试 题进行数量的修订 以满足用户对该考试系统的需求 答案设置就是对试题的 正确结果作出明确标出 综上来实现管理者对题目的管理 3 3 3 3 5 5 成绩管理用例分析成绩管理用例分析 用户 考试规则 准备考试 开始考试 自动阅卷 查看成绩 增加题目 删除题目 答案设置 管理者 可编辑修改 成绩管理 3 73 7 成绩管理成绩管理 上图是该系统的成绩管理用例 管理者对用户的成绩进行管理 用户能够 查询自己的成绩 完成系统的成绩显示职能 3 43 4 小结小结 这一章通过对系统功能需求 设计框架以及总体用例图来分析系统需求和 总体设计 由系统的功能需求够做出系统的基本框架 通过框架让我们更能了 解考试系统的基本构造 最后通过系统的整体用例图来说明用户与管理者所需 的操作以及在此考试系统中起到的作用 为在线考试系统的构造做出更详细的 说明 为下边在线考试系统的具体编写做好坚实的铺垫 第四章第四章系统的详细设计系统的详细设计 前边几章我们已经介绍过 本文所描述的在线考试系统主要有两部分组成 客户机部分和服务器部分 此外 该系统还涉及到一些实体类和一些工具类 这些类在系统中都是以包的形式存在 下边我们来介绍一下考试系统的设计方 式 按照包的形式 4 14 1 客户机的类客户机的类 客户机的类包含 LginFrame 类 SelectSubjectFrame 类 ExamMainFrame 类 Client 类 各个类在此考试系统中都扮演着不同的角色 下面我就来介绍 一下 首先是登陆界面 该界面有登录窗口 学号输入框 密码输入框 确定进 用户 成绩查询 管理者 可编辑修改 入考试系统按钮 取消按钮等 这些都是都是使用的 LginFranme 类来编写的实 现的 而 SelectSubjectFrame 类用来编写选择科目的窗口 一个选择科目的标签 一个选择科目的下拉菜单和一个确定按钮以及一个取消按钮 下边这些都属于 ExamMainFrame 类 学生考试窗口 考试窗口的标题即在 线考试系统 显示题目的文本框 试题四个选项的可选项 显示题号的框和剩 余题目数的标签 上一题 下一题试题切换以及交卷按钮 显示剩余剩余时间 的标签 以上就是本次考试系统中客户机的类 4 4 2 2 服务器的类服务器的类 服务器中只用到了 ServeletMainClass 类 下边我们属性 方法和内部类 这个顺序来介绍一下 首先 ServelettMainClass 类的属性有以下内容 ss 是 ServerSocket 的 缩写 其表示服务器的套接字 stuDao 是由 StudentDao 缩写而来的 它表示 学生信息 pro 是 Properties 的缩写 其含义是一个键值对 通信时传输信息 用 pDao 由 PaperDao 缩写而来 它表示试卷信息 接着 我们介绍一下它的方法 其中 init void 表示初始化函数 而 main void 表示服务器启动入口函数 最后 我们来介绍一个内部类 ServerThread 它有以下属性 S 是 Socket 的缩写 它表示与客户机连接的套接字 oos 是由 ObjectOutputStream 缩写而 来的 它表示对象输出流 接着来描述一下它的方法 begin void 是表示开始 考试请求 login void 用来表示登陆请求 其中 send void 表示结束考试请 求发送 run void 来表示线程运行 4 34 3 实体类部分实体类部分 其中实体类包含四个类 一个学生类 一个试卷类 一个试题类 还有一 可编辑修改 个请求类 下面我们依次来看一下这些类的属性和方法 首先 来看一下学生类 Student 类 该类中有以下属性 id 是 int 整型 的 它表示学生学号 name 和 passwd 都是字符串型的 前一个表示学生学号 后一个表示学生的密码 接下来 介绍一下试卷类 该类有以下三个属性 subject String 来表示 考试科目 allQusstionList用来表示所有题目的集合 answers List 能够表示出学生选择的答案的集合 实现方法有如下 toString void是 将试卷转换成字符串格式 而 addQusetion void 是表示向试卷中添加题目 最后 来介绍一下试题类 此类包含以下属性和方法 Question 类 属性 如下 title 是 String 字符串类型的 它表示题目的标题 answer 是 char 字 符类型的 它表示题目的正确选项 items 是 List 只能存储字符 串类型的集合 一个集合 它表示题目选项 Question 类用到的方法如下 toString void 它表示将题目转换成字符串格式 4 44 4 工具类工具类 QuestionReader 类和 SocketUtil 类是该考试系统用到的工具类 前一个 是表示封装一些读取磁盘文件的方法 后一个是表示封装一些创建套接字连接 的基本格式 4 54 5 读取配置文件类读取配置文件类 配置文件有以下两个接口 StudentDao 接口和 PaperDao 接口 分别需要 运用方法 getStudent 和 getPaper 为了实现上述接口和方法 分别用 StudentDaoFromTextFile 类和 PaperDaoFromFile 类来实现上述接口和方法 最终能够读取配置文件 可编辑修改 4 64 6 系统运行的详细描述系统运行的详细描述 在 4 1 至 4 5 已经介绍了系统中各种类的属性以及方法 然而各种类之间 存在着调用和依赖的关系 下边就来分析一下这些关系 4 14 1 系统运行详细图系统运行详细图 上图是这个在线考试系统的整体框架图 从上边的例图我们可以看出 该 系统最关键的就是服务器通过服务器线程与 client 直接的连接关系 该在线考 试系统是在整个连接才使得客户机与服务器发生联系并完成整个在线考试过程 的 服务器与客户机之间的数据交换和通信都是以服务器与 client 之间的连接 作为铺垫的 系统在初始运行时需要将配置文件中的数据读取并传送到到服务 器中 然后 客户机才能收到服务器传送来的数据 客户机的每个窗口的数据 的传输都是以服务器与 client 的连接为前提的 那么 接下来要介绍一下几个重要类的具体的设计说明 1 服务器线程类 服务器线程类 它是服务器主类的一个内部类 因为它只是服务器的类 只作为内部类使用 因而它只被设计在服务器的内部 当服务器接收到来自客 户端的请求时该连接继续进行 服务是程序创建的一个服务进程与服务器连接 而成的 它适合运行 run 方法 该方法用来判断客户端发送的请求类型 并 PaperDaoFromFile 配置文件 StudentDaoFromTex tFile QuestionReader SocketUtil 服 务 器 服 务 器 线 程 client SelectSubjectFrame Lo gin Fra me ExamMainFrame 可编辑修改 且判断调用何种方法 服务器然后发送相应的数据 下面我们来详细了解一下 这个过程 首先 服务器在初始化 init 方法是个 while 死循环 此时 服务器不 断地监听客户机套接字的请求 当有请求到来时 系统继续往下运行 接着 服务器构建一个服务线程 这个服务线程源自线程类 它直接调用 start 方 法 让服务器继续往下运行 建立于 client 之间的连接 此时 客户端与该服 务器的线程就建立起了连接 然后 服务线程创建一个输出流 这个输出流是 用来给客户机发送信息的 紧接着又是一个 while 死循环 不断地从上述输 出流中读取数据 直到有判断请求道来 下面我们要介绍一下判断请求的类型 这个请求类型要使用到一个 Request 请求类 这里涉及到四个静态常量 这里要使用到一个 switch case 语法 来匹配所要调用的方法 如果调用的静态常量是 1 这里用到 login request 程序就调用 login 方法 如果是静态常量 2 就要调用 begin 方法 如果是静态常量 3 就会调用交卷信息的 send 方法 如果静态 常量 4 就表示学生要退出考试的界面 这时候 客户端关闭 服务器接收到 退出请求之后 就要直接跳出循环 然后关闭与之连接的流和套接字连接 综上所述 这就是考试系统运行的基本过程 这里简单描述一下上边提到的几个方法的作用 首先 login 就是发送用 户信息与考题给客户端程序 然后进入下一个进程 继续监听其他请求 begin 方法是根据用户反映的信息对用户进行分发试题 然后继续监听请求 send 是告诉服务器用户考试结束 2 客户端窗口类 客户类的窗口类 是实现用户由对这个系统进行第一步操作开始 到操作 结束为止所有的过程 从用户登录该系统开始 输入用户名密码进入考试界面 对考试规则等进行阅览 进入考试一直到考试结束 提交考卷并得到考试分数 离开考试系统结束 下面就来详细了解一下这个过程 首先 用户启动该考试系统程序 进入登陆界面 考生必须在登陆界面输 入正确的用户名和账号方能进入该考试系统 否则 系统会自动报错并提醒用 户输入正确的用户名和密码 可编辑修改 然后 当用户输入正确的用户名和密码 用户就成功登陆了该考试系统 接着就会出现几个选择项 开始 分数 考试规则 离开 考生应该首先阅览 以下考试规则 接着点击开始进入考试 当考试结束后 选择提交试卷 然后 点击分数就可以得到自己的考试分数了 然后就可以离开该考试系统了 之后 当用户进入考试 考试框的上边依次是考生姓名 编号 考试时间 等 中间是考试题目 先边有考试时间倒计时 还有几个选择钮 依次是上一 题 下一题以及提交试卷 考生可根据自己需求进行操作 最终提交试卷 如 果考生在倒计时时间之内未完成作答的 系统会自动提交试卷 考生在提交试卷后 系统会对用户的作答给出分数 用户提交试卷的同时 系统会将用户的分数呈现在该用户面前 考试完成 最后 考生点击离开 离开考试系统 以下是一流程图的形式进一步说明以上过程 4 24 2 服务器流程图服务器流程图 4 34 3 客户端流程图客户端流程图 可编辑修改 4 74 7 系统运行图以及主要的实现代码系统运行图以及主要的实现代码 4 44 4 登陆界面登陆界面 4 54 5 进入考试系统进入考试系统 4 64 6 考试界面考试界面 可编辑修改 4 74 7 点击交卷之后 成绩自动生成点击交卷之后 成绩自动生成 主要的实现代码如下 1 登录流程 publicpublic voidvoid login trytry 获取用户编号 intint id thisthis loginFrame getUserId 获取用户密码 String pwd thisthis loginFrame getUserPwd 返回登录用户 User user thisthis examService login id pwd 更新用户信息 thisthis menuFrame updateView user 显示菜单按钮 将登录按钮设置为不可见 thisthis loginFrame setVisible falsefalse thisthis menuFrame setVisible truetrue 编号和密码异常 catchcatch IdOrPwdException e e printStackTrace 显示登录异常信息 thisthis loginFrame showMessage e getMessage 数值类型异常 catchcatch NumberFormatException e e printStackTrace 确保用户编号是数字 将信息反馈给用户 thisthis loginFrame showMessage 编号必须是数字 2 考试流程 publicpublic voidvoid start trytry 调用业务层的start 方法开始考试 ExamInfo examInfo thisthis examService start 调用业务层的getQuestionInfo 方法来获得考题 QuestionInfo questionInfo thisthis examService getQuestionInfo 0 可编辑修改 调用ExamFrame类的updateView 更新考试面板信息 thisthis examFrame updateView examInfo questionInfo 隐藏菜单面板 进入考试面板 thisthis menuFrame setVisible falsefalse thisthis examFrame setVisible truetrue 重要 给属性赋值 获得当前考题内容和考试信息 thisthis currentQuestionInfo questionInfo thisthis examInfo examInfo 调用本类中的startTimer 方法 开始考试计时 thisthis startTimer catchcatch Exception e e printStackTrace 在menuFrame面板前显示错误信息 JOptionPane showMessageDialog thisthis menuFrame e getMessage 3 开始考试倒计时 privateprivate voidvoid startTimer 通过调用ExamInfo类中的getTimeLimit 方法 获得当前考试总时间 finalfinal longlong end System currentTimeMillis examInfo getTimeLimit 60L 1000 添加定时器 开始考试倒计时 每隔一秒执行一次 timer schedule newnew TimerTask publicpublic voidvoid run 获取当前时间 longlong now System currentTimeMillis 计算剩余时间 longlong show end now longlong s show show 1000 1000 60 longlong m s s 60 60 longlong h m m 60 60 s s 60 调用考试面板中的方法是是showTime 方法 当时间剩余5分 钟时以 时分秒的形式显示剩余时间 examFrame showTime h m s 0 1000 添加定时器 当考试到点时结束考试 timer schedule newnew TimerTask 可编辑修改 publicpublic voidvoid run 调用gameOver 结束考试 ClientContext thisthis gameOver newnew Date end 4 查询考分流程 publicpublic voidvoid result trytry 获得最终考试成绩 在菜单面板前显示 intint lastScore thisthis examService getScores JOptionPane showMessageDialog thisthis menuFrame 考试分数 lastScore catchcatch Exception e e printStackTrace 若有异常 则显示错误信息 JOptionPane showConfirmDialog thisthis menuFrame e getMessage 5 退出流程 publicpublic voidvoid exit JFrame parent 在当前面板中执行并退出 intint val JOptionPane showConfirmDialog parent 要离开吗 ifif val JOptionPane YES OPTION System exit 0 6 点击下一步按钮所执行的方法 publicpublic voidvoid next trytry 取出当前题号 intint index thisthis currentQuestionInfo getQuestionIndex 获取当前用户答案 List userAnswers
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汛期城市绿化保护方案
- 2025年自考专业(金融)常考点试卷含答案详解【能力提升】
- 2024-2025学年度工程硕士模考模拟试题含答案详解【新】
- 2024年银行岗位试题及参考答案详解(夺分金卷)
- 2025无人机资格证模考模拟试题及答案详解(基础+提升)
- 2025自考专业(公共关系)考前冲刺练习题及完整答案详解(有一套)
- 2024安全员考试综合提升测试卷含答案详解【新】
- 土木工程建筑施工题库带答案详解(基础题)
- 美容化妆人员通关题库及参考答案详解(夺分金卷)
- 法律职业资格考试题库试题含答案详解(突破训练)
- 生物质颗粒工人管理制度
- 【内蒙古】2024内蒙古事业单位联考考试笔试附带答案详解
- 生物医药公司采购管理制度
- 煤矿关联交易管理制度
- 器械UDI码管理制度
- 印章管理工作培训
- 园林养护班组管理制度
- 矿业公司股权转让与资源开发合作协议
- 司马懿的课件
- 2025年餐饮系统项目市场调查研究报告
- 2025年人教版高中物理必修3专项复习:电势差与电场强度的关系(解析版)
评论
0/150
提交评论