哔哩哔哩:在线考试系统_part-1

哔哩哔哩:在线考试系统_part-2

哔哩哔哩:在线考试系统_part-3

想了解更多,欢迎关注我的微信公众号:Renda_Zhang

 

软件开发的流程

需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级


 

软件的需求分析

视频讲解:在线考试系统小项目

 

在线考试系统

学员系统

  • 开始考试

  • 查询成绩

  • 导出成绩

  • 修改密码

  • 退出

管理员系统

  • 学员管理:

    • 增加学生

    • 删除学生

    • 修改学生

    • 查找学生

    • 遍历学生

    • 返回

  • 考题管理:

    • 增加考题

    • 删除考题

    • 修改考题

    • 查询考题

    • 导入考题

    • 返回

  • 退出


 

退出系统

 

软件的概要设计 - 部分示例

视频讲解:在线考试系统小项目

在线考试系统采用 C/S (Client 客户端 / Server服务器) 架构进行设计,具体如下:

  • 客户端 (Client) - 主要用于提供字符界面供用户选择并将处理结果显示出来。

  • 服务器 (Server) - 主要用于针对字符界面的选择实现真正业务功能的处理。

  • 数据库 (Database) - 主要用于进行数据的存取。


 

软件的详细设计 - 部分示例

视频讲解:在线考试系统小项目

  • 客户端和服务器之间采用基于 tcp 协议的编程模型进行通信。

  • 客户端的对象输出流连接服务器的对象输入流。

  • 服务器的对象输出流连接客户端的对象输入流。

  • 客户端采用消息的类型作为具体业务的代表,伴随着账户信息等一并发送给服务器。

  • 当客户端发来的消息类型为 "managerCheck" 时,则表示要实现管理员账户信息的校验功 能。

  • 当客户端发来的消息类型为 "userCheck" 时,则表示要实现学员账户信息的校验功能。

  • 服务器采用消息的类型作为是否校验成功的标志发送给客户端。

  • 当客户端收到的消息类型为 "success" 时,则表示账户信息正确。

  • 当客户端收到的消息类型为 "fail" 时,则表示账户信息错误。


 

软件的编码流程 - 部分示例

 

管理员登录功能

  • 编写基于 tcp 协议的服务器端,也就是初始化服务器;

  • 编写基于 tcp 协议的客户端,来连接服务器;

  • 编写客户端的字符界面并提示客户进行业务的选择;

  • 将客户的选择和输入的相关信息通过对象输出流发送给服务器;

  • 服务器通过对象输入流接收客户端发来的消息并进行功能处理,将处理结果发送给客户端;

  • 客户端通过对象输入流接收服务器的处理结果并给出提示;

 

学员管理系统的部分功能

  • 当项目启动时,将文件中的所有学员账户信息全部读取出来放到一个 List 集合中。

  • 客户端输入要增加学员的用户名和密码信息,通过对象输出流发送给服务器。

  • 服务器接收客户端发来的消息,判断集合中是否存在该学员账户信息并实现具体添加功能。

  • 服务器将增加学员功能的处理结果发送给客户端,客户端给出对应的提示。

  • 当项目退出时,将集合中的所有学员账户信息整体写入到文件中。


 

代码注意要点

  • 项目有三个模块:ExamSystemClient,ExamSystemServer,ExamSystemCommon。根据迪米特法则,对于代码,尽量提高了内聚,降低了耦合。

  • 在 IDEA 里面需要让 ExamSystemServer 和 ExamSystemClient 都加上对ExamSystemCommon 的依赖。

 

ExamSystemClient 模块 - 客户端模块

  • com.renda.client.ClientInitClose 类:实现客户端的初始化和关闭操作

  • com.renda.client.ClientView 类:实现客户端的主界面绘制和相应功能的实现

  • com.renda.test 包:有客户端测试类 ClientTest

  • MyQuizzes.txt:客户端导入考题功能的存放被导入考题的文件。

 

ExamSystemCommon 模块 - 通用模块

  • com.renda.model 包:有考题类 Quiz,考试成绩类 TestReport,用户类 User 和用户信息类 UserMessage,四个 Java Bean

  • com.renda.util 包:有实现扫描器的工具类 ClientScanner,通用的工具类 CommonUtil,和通用常量枚举类 ConstEnum

 

ExamSystemServer 模块 - 服务器模块

  • com.renda.server.ServerDao 类:实现数据的存取,模拟数据库访问层

  • com.renda.server.ServerInitClose 类:实现服务器的初始化和关闭

  • com.renda.server.ServerView 类:实现服务器的主要功能

  • com.renda.test 包:有服务器测试类 ServerTest

相关文章: