想了解更多,欢迎关注我的微信公众号: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