| 一、系统概述
“江苏省第三次中学生纵横码汉字输入大奖赛”于1999年10月在南通举行,为了适应比赛的需要,我们开发了一套基于Windows9X平台的纵横码汉字输入竞赛软件(简称ZCCICS)。ZCCICS具有以下基本功能:
1. 提供客户端界面,选手在此界面下,利用Windows9X内嵌的纵横码汉字输入法,输入汉字并完成比赛。
2. 提供用控制端界面,用以同时控制多位选手比赛进程,如开始比赛、结束比赛
等,以在比赛时进行控制和统一每位选手的比赛进程。
3. 提供对选手信息(包括比赛成绩)的存贮和管理,并能够输出指定的比赛息。
此外,考虑到训练的需要,ZCCICS的客户端软件同时也是一个单机训练软件,其主要界面和操作和正式比赛时完全相同。
ZCCICS运行的软件平台是Windows9X中文版,硬件平台是基于TCP/IP的局域网。开发工具采用Borland C++ Builder
4.0 Enterprise Edition。
二、 系统结构
由于纵横码比赛时,必须同时控制多位选手的比赛,因此ZCCICS是基于局域网的,根据应用层功能和通讯模式中的角色可以分为控制端和客户端两部分,所有客户端主动与控制端建立网络相连,即采用标准C/S模式。控制端的主要功能为:控制比赛进程、管理选手信息、处理成绩并输出结果;客户端的主要功能为:提供汉字输入界面,根据输入内容给出选手成绩。图1为ZCCICS的系统结构:

图1 ZCCICS系统结构图 |
当然,除此之外还可以有其他的结构,如将控制端拆分为:服务器和控制台两部分,客户端、控制台均直接和服务器相连,客户端与控制台之间的通讯通过服务器中转进行。
三、客户端的实现
1.工作流程
由于ZCCICS提供比赛和训练两种模式,比赛模式下,进程由控制端控制;训练模式下,进程由选手自己控制。在ZCCICS中,根据当前软件是否和控制端建立网络连接来判断,如果建立网络连接,则处于比赛模式下,否则处于训练模式下。图2是该工作流程的示意图:

图2 客户端工作流程 |
当客户端与控制端建立了联接后,就处于比赛模式。在比赛模式下,比赛形式、输入文本和输入时限等,均由控制端设定后发给客户端。何时开始、何时结束或中途中止等控制,也由控制端控制。比赛模式的工作流程为:
2.输入界面
汉字输入界面的具体表现取决于具体的比赛形式,ZCCICS提供了“范文”和“听写”两种比赛形式。“范文”方式需要显示出范文文本,并对正确和错误的输入内容分别予以不同的表示,ZCCICS用不同颜色表示各种汉字;“听写”方式只需显示选手的输入内容,并无须显示正误信息。如果需要,汉字输入界面还应该提供一定的文本编辑功能,如插入、删除、复制、粘帖、撤消等等。
汉字输入界面在接受汉字输入信息时,必须保证汉字信息是完整的。
3.状态控制
在软件运行过程中,客户端将处于若干个不同的状态,可分为:联机结束、登录结束、比赛进行、比赛结束等状态。在不同的状态,客户端可以接收的命令、进行的操作都是不同的,必须进行状态控制,即严格确定在每一个状态下所能够接收的命令及进行的操作,以及相应的后续状态。状态控制可以在控制端或客户端的任一方进行即可,但在比赛时,客户端的状态完全可能不一样,因此状态控制就应该在客户端进行。
ZCCICS客户端一旦接收到当前状态所不允许的命令或操作,则命令或操作立即作废,并向控制端报错。
四、控制端的实现
1.工作流程
图3是服务器的工作流程。

图3 服务器工作流程 |
2.控制机制
控制端对客户端的控制的实现机制是:控制端通过网络向客户端发送相应的数据信息,不同的数据信息对应了不同的控制命令;客户端收到数据信息后,先将其解析为对应的控制命令,然后根据不同的命令作出相应的处理。
根据其接收者的数量,控制端对客户端控制命令的发送方式可分为两种广播发送和点点发送两种。广播发送用于对所有客户端进行控制;点点发送用于对特定的客户端进行控制。
3.数据管理
在ZCCICS中,选手信息、试题信息、成绩处理结果等比赛信息都保存在磁盘文件中,这主要是处于实现的简练和软件发布的方便来考虑的,因为这些信息的规模是很有限的,因此采用磁盘文件来存贮,管理起来并不复杂,完全可以适应当前比赛的需要。在将来更高的版本中,可以考虑采用数据库来保存这些信息,以便更好的管理数据。
五、网络通讯的实现
ZCCICS运行于基于TCP/IP的局域网,所以底层网络通讯协议采用TCP/IP,通过Socket接口来进行编程。
在应用层上,还必须确定数据包的格式,才能使客户端和控制端实现讯。ZCCICS的数据包的格式为:
命令类型#参数一#参数二#参数三#…… …… 其中“#”为分隔符。命令类型字段标识不同的命令,其后跟若干该命令所需的参数。
在实际的数据包传送过程中,可能由于偶然因素导致数据包部分丢失,造成传送错误,因此在数据包的外层还应加上一个校验层,在ZCCICS中,由于考虑软件到局域网的数据传输正确率较高,因此采用了长度校验,其格式如下:
数据包长度#数据内容#
在收到数据包时,首先分离数据包长度和数据内容信息,并根据数据包长度进行长度校验,如果发生错误,则向数据发送方发出“传送错误”信息。
|