今天内容:

1.兄弟连在线考试系统

具体实现代码

去github看吧:https://github.com/victorfengming/xdl_exam_system

感觉有用的可以给小编点个star

1.1 软件开发的流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   需求分析文档 => 概要设计文档 => 详细设计文档  => 编码和测试  
```

### 1.2 编写目的
(1)复习JavaSE所学的所有内容。
(2)锻炼基本的编程能力。

### 1.3 功能分析
```
考试系统:
(1)学员系统
a.修改密码
b.开始考试
c.查询成绩
d.导出成绩
...
e.退出
(2)管理员系统
a.学员管理
增加、删除、修改、查找、...
b.试题管理
增加、删除、修改、查找、...
```

### 1.4 项目的架构
```angular2

项目采用C/S架构进行设计,分为3层分别处理,具体流程:
a.启动客户端让客户根据界面进行业务的选择并将相关信息发送给服务器;
b.服务器通过访问数据库的方式进行业务处理并将处理结果发送给客户端;
c.客户端将处理结果显示给客户;

1.5 实现方式

1
2
3
4
5
6
7
8
(1)客户端与服务器之间采用基于tcp协议的网络编程进行通信;  
(2)使用ObjectOutputStream和ObjectInputStream类进行对象的传输;
(3)使用字符串的类型作为客户端与服务器业务功能的标志;
如:
当客户端发送给服务器的类型是"userCheck"时,则服务器按照学员登录处理
当客户端发送给服务器的类型是"managerCheck"时,则服务器按照管理员处理
当服务器给客户端发送成功的结果时,服务器可以将类型改为"success"再回发
当服务器给客户端发送失败的结果时,服务器可以将类型改为"fail"再回发

1.6 学员管理功能的实现方式

1
2
3
4
5
6
7
8
   学员管理界面  => 选择增加学员 => 从键盘输入学员用户名和密码信息并发送服务器  
=> 服务器接收到学员信息后添加到集合中 => 将增加的结果回发给客户端 => 客户端接收到回发的处理结果后给出提示即可。

由于Java语言中不便于直接对文件内容增删改查,因此实现管理功能的思路如下:
a.当项目启动时,将文件中所有学员信息读取到List集合中;
b.在集合中对学员信息进行增删改查操作;
c.当项目退出时,将集合中所有学员信息写入到文件中;

1.7 试题管理功能的实现方式

1
2
3
4
这个与学员管理类似,只不过需要创建一个list集合来存储试题对象
每个试题对象中绑定对应的属性:
例如,试题的标题,试题的选项数组,试题的答案...
然后对这个存储试题对象的list进行相应的增删改查操作,最后将整个list写入文件即可

总结

1
2
3
4
5
6
7
8
9
10

这个项目主要用到的是IO流的操作,其中包括Socket在客户端和服务端收发的数据,还有对于服务端数据的保存和读取

所以,想要写好这个项目,需要有一定的javaSE的基础,以及面向对象思想的应用

其中在进行系统层级的进入的时候,多次用到了`try...catch`,`while(true)`,`if else if`等结构,所以

对于基础的流程控制也要掌握扎实

这个项目虽然说采用的是C/S架构,但是在客户端仅仅是在系统的控制台进行与用户的交互,这个地方需要加入图形化的界面才更加的万完整,才能给用户更加良好的交互体验.