铁路售票管理系统软件设计方案

铁路售票管理系统软件设计方案

2023年7月6日发(作者:)

铁路售票管理系统软件设计方案

1.1 编写目的

本文档的编制的目的是说明对程序系统的设计考虑。本文档的使用者包括项目管理

人员、软件设计人员、软件质量控制人员以及软件维护人员。

1.2背景

软件系统的名称:铁路售票管理系统

本软件产品是一项独立的软件,而且全部内容自含。实现网络化铁路售票管理。一般用户、售票员、系统管理员等用户都可以通过上网来进行铁路车票业务的管理,实现网络化售票业务。构建标准的铁路车票,火车管理基础数据库。构建起火车信息,车票信息,特殊用户信息等基础数据库。

实现列车及车票信息查询、登录系统及信息管理、车票的销售与退票列车及车票管理等子系统的流程化管理。

开发者:哈工大计算机学院05级2班开发小组;

用户:一般用户(旅客等),售票员,系统管理员

设计说明书的书写者: 哈工大计算机学院05级2班开发小组

1.3定义

术语名称(缩写)

C/S

最终用户

一般用户

售票员

系统管理员

术语全称

Client/service

最终用户

一般用户

售票员

系统管理员

含义

客户端/服务端结构

系统开发后的最终使用者

需购买火车票进行业务的人群即旅客

车站及代售点的所有售票员

具有对不同用户进行管理,输入用户的各种信息、管理用户权限、

维护数据库等权限的用户

1 2系统需求概述

2.1业务目标

实现网络化铁路售票管理。一般用户、售票员、系统管理员等用户都可以通过上网来进行铁路车票业务的管理,实现网络化售票业务。构建标准的铁路车票,火车管理基础数据库。构建起火车信息,车票信息,特殊用户信息等基础数据库。

实现列车及车票信息查询、登录系统及信息管理、车票的销售与退票列车及车票管理等子系统的流程化管理。

2.2运行环境及设计约束

设备:

采用Intel 应用服务器

运行时内存要求:1MB;

安装所需硬盘:5MB;

操作系统:

Windows 2000/XP/Vista

支持软件:

SQL Server2008,Eclipse

设计约束:

(1) 系统的开发必需采用B/S 的体系结构

(2) 能够在 intel X86 系统芯片组正常使用,保证双核CPU 下同样能够正常使用。

(3) 提供与售票站点(包括火车站及代售点)的铁路售票系统接口

(4) 使用JAVA编程语言及SQL数据库来进行系统实现

(5) 遵循GB8566 计算机软件开发规范

(6) 遵循GB8567 计算机软件产品开发文件编制指南

(7) 遵循GB/T11457 软件工程术语

2.3功能需求

铁路售票管理系统包括四个子系统:列车信息及车票信息查询系统,登录系统及信息管理系统,火车票销售及退票系统,列车及车票管理系统。

 列车信息及车票查询系统

➢ 列车查询 按车次或目的站信息来查询列车的静态信息

➢ 车票查询 按车次或目的站信息来查询车票的静态信息

➢ 车次查询 按已知车次来查询列车及车票信息

➢ 目的站查询 按已知目的站来查询需要的列车及车票信息

2

 登录系统及信息管理子系统

➢ 一般用户登录 一般用户进行登录系统界面

➢ 售票员登录 售票员输入用户名与密码进行登录系统,获得售票员应有的售票系统相关的权限

➢ 系统管理员登陆 系统管理员输入用户名与密码进行登录系统,获得系统管理员应有的售票系统相关的权限

➢ 信息管理 售票员及系统管理员对自己的个人信息如密码,工作单位等进行修改,管理

➢ 增加售票员 系统管理员对售票员进行增加,赋予其售票权限

➢ 删除售票员 系统管理员对售票员进行删除,取消其售票权限

 车票的销售与退票子系统

➢ 车票销售 根据旅客要求的车次及日期进行车票的销售

➢ 车票退票 根据旅客退票要求进行退票

 列车及车票管理子系统

➢ 列车增加 系统管理员向整个铁道部增加火车线路,增加火车

➢ 列车删除 系统管理员对已存在路线进行取消,删除列车

➢ 车票填充 将某一日期的可销售的火车票数量增加

➢ 车票删除 将某一日期过期的可销售的火车票数减少,清0

2.4非功能性需求

(1)系统应具有开放性:考虑到铁路部门的运行不仅与各区域相关,受区域管辖,调配,而且它必须受国家铁路中心集中管辖,在特定的时期国家需采取特殊措施,对整个国家内的各子区域进行宏观调控,对整个铁路运输进行合理调度,尽量使旅客达到满意程度。

本系统必须具有良好的开放性,既要满足现有集成需求,又要为将来系统的扩展预留接口。

(2)应随着铁路售票部门业务的不断完善,系统的更新势在难免,因此系统应该具有

很好的跨平台性、可维护性、可扩充性、易使用性。当用户需求,如操作方式、运行环境、

数据结构以及其他软件接口等发生变化时,设计的软件要求能做适当的调整。

(3)系统应具有高可靠性:系统在功能完整的同时,应具有良好的可靠性。作为支持铁路售票部门的工作,有效调度区域的铁路客运,系统必须具有高效可靠性,以保证数据的安全和系统的稳定运行。

(4)系统对用户操作的相应时间应小于1 秒,最终用户对时间具有较高的要求,如查询列车信息及车票信息时,需要较快的查询速度,否则会给最终用户带来不便。

(5)系统应易于操作和维护:系统应面向用户进行设计。系统的使用者对计算机了解

程度不同,因此系统的操作应该尽量简单、方便,用户界面友好,使用户能够易学易用。

(6)系统应具有较强的安全保密性:系统应提供安全可靠的数据存储服务,拒绝未被

授权的人员访问、篡改数据信息的企图,而只向被授权的用户提供与其权限一致的数据服务。

3 3系统设计

3.1 功能模块清单

铁路售票管理系统的设计类清单:

表1 设计类清单

层次名称

用户界面层

模块名称

trainTicketQueryInterface

模块类型

边界类

模块功能的简要描述

按车次或目的站方式来查询列车火车票信息的查询界面

最终用户登录界面

售票员界面

系统管理员界面

售票员票务管理界面

列车及车票管理界面

信息管理

车票管理

列车及车票管理

所有列车的总表信息

单车的列车相关信息

车票的相关信息

售票员的个人信息

系统管理员的个人信息

logInInterface

ticketSalerInterface

administratorInterface

ticketsManagingInterface

trainAndTicketsManagerInterface

业务逻辑层 informationManager

ticketsManager

TrainAndTicketsManager

数据层 AllTrainInfo

SingalTrainInfo

Tickets

ticketSaler

administrator

边界类

边界类

边界类

边界类

边界类

控制类

控制类

控制类

实体类

实体类

实体类

实体类

实体类

3.2 体系结构设计

通过对系统功能目标、用户群以及数据需求的分析,考虑到铁路售票管理系统流程涉及范围广泛、基本数据表现形式多样等特点,本系统采用C/S 方式的体系结构。

对于系统中的大多数用户如一般用户,主要以信息查询为主,主要利用该软件查询列车及车票信息。且售票员及系统管理员需要对列车及车票等信息进行处理,更改,故总体而言最终用户对软件的运行速度要求较高,故采用C/S方式来构架铁路管理系统,而且利用服务器实现信息查询与检索。保证了其应用的通用性和跨平台性。并且维护和升级工作都在服务器端进行,不许对客户端进行任何改变,故大大降低了开发和维护成本使用简单、界面友好,所有的用户界面都统一在用户界面端上消肿,客户端不再负责数据库的存取以及复杂数据的计算等任务,只负责显示,让中间业务逻辑层担负数据存储及复杂数据计算等任务,充分发挥了业务逻辑层服务器的强大作用,这样就大大降低了对客户端的要求。系统灵活,系统的三部分模块各自相对独立使得修改更容易,可以用不同厂家的产品来组成性能更加的系统保障系统的安全性适用于信息发布,这使得传统系统的功能有所扩展。

4 用户表示层 图1

用户界面包用户界面包列车及车票信息查询界登录界面售票员界面系统管理员售票员票务列车及车票面界面管理界面管理界面

业务逻辑层 图2

业务逻辑包业务逻辑包<><>informationManagerTrainAndTicketsManager<>ticketsManager

数据访问层 图3

5

数据访问包数据访问包类1::DBCommon+DBConnectionString()+getDataView()train类1::Tickets类1::Staff类1::ticketSaler类1::administrator

C/S 方式的三层结构它将应用程序结构划分三层独立的包,包括用户表示层、业务逻辑层、数据访问层。其中将实现人机界面的所有表单和组件放在表示层,将所有业务规则和逻辑的实现封装在负责业务逻辑组件中,将所有和数据库的交互封装在数据访问组件中。

表示层提供最终用户的的用户界面。包括窗体主要用于最终客户端应用程序和技术

主要用于一般用户(旅客),售票员及系统管理员与铁路售票系统交互的使用,进行列车及车票信息查询界面,及售票员售票,退票业务界面等功能。

业务层抽象出主要的业务逻辑有按车次或目的站进行列车及车票信息查询、最终用户登录、个人信息管理、售票员售票退票业务的管理、系统管理员对列车及车票的管理及系统维护。

数据层主要利用实现对数据的操作,负责将存储在这些数据库中的数据公开给业务层。

数据访问包中包含的类及其之间的关系如图2 所示(其他包中包含的类及其之间的关系略)。所有的数据访问类都定义了一个基类DBCommon,该基类包含属性DBConnectionString,通过该属性可以获得数据库连接字符串。还包括一个方法GetDataView,可以实现在数据库中执行查询获得一个DataView。这些属性和方法被所有的数据访问类继承,可以直接使用。

这些数据层的类包括员工类及其衍生的售票员类及系统管理员类,主要存储员工类子类的个人信息记录及一些权限信息,火车类主要存储列车的总体列表信息及单车的所有车次及车票的相关信息。

3.3 功能模块与需求之间的追溯关系

系统中各个功能模块与需求之间的追溯关系如表2—4所示。

表2 功能需求与功能模块之间的追溯关系

trainTicketQuery

Interface

login ticketSaler administratoInterface Interface rInterface

ticketsManaging

Interface

6 列车及车票信息查询

登录系统及信息管理

车票的销售与退票

列车及车票管理

tickets

Manager

表3 功能需求与功能模块之间的追溯关系

列车及车票信息查询

登录系统及信息管理

车票的销售与退票

列车及车票管理

trainAndTickets

ManagerInterface

information

Manager

trainAndTickets

Manager

train

administrator

表4 功能需求与功能模块之间的追溯关系

列车及车票信息查询

登录系统及信息管理

车票的销售与退票

列车及车票管理

tickets ticketSaler

3.4接口设计

3.4.1 用户接口

系统中用户及使用的功能如下:

(1) 一般用户(旅客):通过查询界面,来获得列车及车票信息。

(2)售票员:通过登录界面,进入到售票员界面,可以进行信息更新及进行售票员权限内的查询及售票,退票操作。

(3) 系统管理员:通过登录界面,进入系统管理员界面,可以进行信息更新,对列车进

7 行增删及对车票进行增删,及对售票员权限进行控制,添加或删除售票员操作及维护数据库等。

系统中用户及使用的功能模块清单如表5 所示。

表5 系统中用户及使用的功能模块清单

用户

一般用户

售票员

模块

列车及车票信息查询界面

列车及车票信息查询界面

登录界面

售票员界面

车票管理界面

系统管理员 列车及车票信息查询界面

登录界面

使用方式

图形化界面

图形化界面

图形化界面

图形化界面

图形化界面

图形化界面

图形化界面

输入信息

车次或目的站

车次或目的站

用户名,密码

个人信息

车次或目的站

车次或目的站

用户名,密码

个人信息及售票员工号

列车车次及列车与车票信息

反馈信息

最终反馈单车信息或车票信息

最终反馈单车信息或车票信息

售票员界面

更新后的个人信息

车票数目增加或减少相应数目

最终反馈单车信息或车票信息

系统管理员界面

更新后的个人信息及增加或删除售票员

增加或删除列车或车票,进行数据库更新

系统管理员界面 图形化界面

列车及车票管理界面

图形化界面

3.4.2 与其他软件、硬件的接口

本系统同外界的其他应用软件、硬件之间的接口:

(1)与铁路财务处的财务系统的接口。

 接口实现方式:web 服务

 接口数据传递:

铁路售票部门必须向当地铁路财务处的财务系统提供员工(售票员及系统管理员)的个人信息

具体数据结构:

售票员信息(用户ID 用户密码 用户姓名 工资 工号 工作表现等)

系统管理员信息(用户ID 用户密码 用户姓名 工资 工号 工作表现等)

当地铁路财务处的财务系统提供员工(售票员及系统管理员)工资信息及奖金信息

具体数据结构

员工工资信息(用户ID用户姓名 工号 工资 奖金等 )

 通讯协议:HTTP

(2)与全国的整个铁路部门的售票系统的接口。

 接口实现方式:web 服务

8  接口数据传递:

1)铁路售票管理系统须向全国整个铁路售票系统提供该地区的火车售票信息来让其宏观控制该地区的列车数量,调节整个客运流的情况。

具体数据结构:

列车的信息表(车次,终到时间,类别,空调,途经站,始发站,发车时间,硬座总数,软座总数 硬卧总数,软卧总数,途经发车时间,途经到达时间,硬座价格,软座价格硬卧价格,软卧价格,里程)

车票的信息表(车票编号 车次 发车时间 始发站 车厢号 车位号 类别 硬座当前票数 软座当前票数 硬卧当前票数 软卧当前票数 当前票总数 总金额)

当前火车站客流量(滞留人数,目的站)

2)全国整个铁路售票系统向该地区提供新增列车情况及增加目的站为该地的火车情况

具体数据结构:

列车的信息表(车次,终到时间,类别,空调,途经站,始发站,发车时间,硬座总数,软座总数 硬卧总数,软卧总数,途经发车时间,途经到达时间,硬座价格,软座价格硬卧价格,软卧价格,里程)

车票的信息表(车票编号 车次 发车时间 始发站 车厢号 车位号 类别 硬座当前票数 软座当前票数 硬卧当前票数 软卧当前票数 当前票总数 总金额)

 通讯协议:HTTP

本系统与各支持软件之间的接口。

 与操作系统之间:由于采用.Net Framework 所提供的类库为接口,因此不直接访问操作系统API。

 与中间件之间:采用web 服务和com 技术对组件进行封装。

 与数据库之间:采用的是SQL Server 2005 数据库,数据层利用 实现对数据的操作。

3.5 系统物理设计

系统的配置图如图 所示。用户界面包安装在Web 服务器,业务逻辑包安装在应用服务器,数据访问包安装在数据库服务器。数据库服务器与应用服务器通信,并向其提供数据库服务。应用服务器与Web 服务器通信,并向其提供应用服务。从而实现多级分布的部署方式,实现更好的可伸缩性和安全性,满足C/S 应用系统的需求。

铁路售票管理系统的配置图:

9 最终用户界面Web服务器应用服务器-WebService**数据库服务器-ADO**用户界面包业务逻辑包数据访问包最终用户界面 图4 铁路售票管理系统的配置图

4 对象设计

4.1 系统对象模型

根据整个铁路售票管理系统总的分析,将列车及车票信息查询子系统,登录系统及信息管理子系统,车票的销售与退票子系统,列车及车票管理子系统等子系统划分为如下几个实体类: 用户类,列车类,车票类,登录类及信息管理类等5大类,根据各系统的功能需求及实现要求,将各子系统中的操作函数划分到5大类中,来合理实现系统的要求,从而完成整个系统。

10 4.1.1铁路售票系统总类图:

administratorStaff+addTicketsSaler() : bool+deleteTicketsaler() : bool+findTicketsSaler() : bool+modifySalerInfo() : bool+addTrain() : bool+deleteTrain() : bool+addTickets() : bool+deleteTickets() : bool+setSalary()() : int-ID : string-password : string-username : string-salary : string+getID() : string+setID() : bool+getpassword() : string+setpassword() : bool+getUsername() : string+setUsername() : bool+getSalary() : string+trainQueryNumber() : bool+trainQueryDest() : bool+ticketQueryNumber() : bool+ticketQueryDest() : boolticket-bianhao : int-number : int-fachetime : string-shifazhan : string-chexiangnum : int-cheweinum : int-leibie : string-yznumber : int-rznumber : int-ywnumber : int-rwnumber : int-totalNumber : int-totalMoney : intticketSaler-workNumber : int+ticketsSell() : bool+ticketsRefund() : boollogIn-ID : string-password : string-zhongdianzhan : string-number : int+administratorLogIn() : bool+ticketsSalerLogIn() : bool+ticketsList() : bool+errorWarning()train-number : int-arriveTime : string-leibie : string-kongtiao : string-tujingzhan : string-shifazhan : string-fachetime : string-yzshu : int-rzshu : int-ywshu : int-rwshu : int-tjfachetime : string-tjdaodatime : string-yzprice : int-rzprice : int-ywprice : int-rwprice : int-licheng : int+getSingleTrainInfo() : bool 图5 铁路售票管理系统总类图

4.1.2 用户类及类图

系统中的用户类,可以划分为一般一般用户,售票员和系统管理人员类,它们都是人员类的子类,继承人员类的所有属性和方法。由于一般用户的信息无须记录,任何人都可以使用此软件,故一般用户信息无须存储。各用户类说明如下:

表 用户类说明

类名

Staff

属性概述

人员类,用于人员管理

属性

ID

password

username

方法

getID

setID

getpassword

setpassword

getUsername

11 setUsername

salary

ticketSaler

administrator

售票员

系统管理员

workNumber

getSalary

trainQueryNumber()

trainQueryDest()

ticketQueryNumber()

ticketQueryDest()

ticketsSell()

ticketsRefund()

addTicketsSaler()

deleteTicketsaler()

findTicketsSaler()

modifySalerInfo()

addTrain()

deleteTrain()

addTickets()

deleteTickets()

setSalary()

administratorStaff+addTicketsSaler() : bool+deleteTicketsaler() : bool+findTicketsSaler() : bool+modifySalerInfo() : bool+addTrain() : bool+deleteTrain() : bool+addTickets() : bool+deleteTickets() : bool+setSalary()() : int-ID : string-password : string-username : string-salary : string+getID() : string+setID() : bool+getpassword() : string+setpassword() : bool+getUsername() : string+setUsername() : bool+getSalary() : string+trainQueryNumber() : bool+trainQueryDest() : bool+ticketQueryNumber() : bool+ticketQueryDest() : boolticketSaler-workNumber : int+ticketsSell() : bool+ticketsRefund() : bool

图6 用户类及其子类类图

12 4.1.3 列车类、车票类及登陆类

类名

train

用途概述

火车的总体信息及单列火车的信息,及获得火车相关的一些信息

number

arriveTime

kongtiao

tujingzhan

shifazhan

fachetime

yzshu

rzshu

ywshu

rwshu

tjfachetime

tjdaodatime

yzprice

rzprice

ywprice

rwprice

licheng

type

ticket 单列火车车票的信息,及获得车票相关的一些信息

bianhao

number

fachetime

shifazhan

chexiangnum

cheweinum

yznumber

rznumber

ywnumber

rwnumber

totalNumber

totalMoney

type

属性

administratorLogIn()

ticketsSalerLogIn()

ticketsList()

errorWarning()

方法

getSingleTrainInfo()

logIn 软件主界面,包括ID

用户登录、最终用password

户查询功能

zhongdianzhan

number

13 4.2对象描述

4.2.1 火车类 train

名称:train

用途:火车类,火车各类信息存储及获取

持久性:需要永久存储;

属性描述:

属性名

number

arriveTime

属性作用

车次

终到时间

可见性

private

private

数据类型

int

time

缺省值

“”

“”

约束条件

不空,值唯一

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

不空,值唯一

不空,值唯一

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

>=0

>=0

>=0

>=0

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

14

kongtiao

tujingzhan

shifazhan

fachetime

空调

途经站

始发站

发车时间

private

private

private

private

string

string

string

time

“”

“”

“”

“”

yzshu

rzshu

ywshu

rwshu

tjfachetime

硬座总数

软座总数

硬卧总数

软卧总数

途经发车时间

private

private

private

private

private

int

int

int

int

time

“”

“”

“”

“”

“”

tjdaodatime 途经到达时间 private time “”

yzprice

rzprice

ywprice

rwprice

licheng

type

操作描述:

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

硬座价格

软座价格

硬卧价格

软卧价格

里程

车的类型

private

private

private

private

private

private

int

int

int

int

int

string

“”

“”

“”

“”

“”

“”

>=0

>=0

>=0

>=0

>=0

不空,值唯一

getSingleTrainInfo

通过车次在列车列表中获得单车信息

public

车次: number

bool

该车次在数据库中存在,即number对应列车信息在数据库中存在

显示出单车的信息

number jintingzhan leibie zhongdianzhan startzhan tjfachetime

tjdaodatime fachetime zhongdaotime yzprice rzprice ywprice

rwprice licheng

trainQueryNumber

通过number查询该单车数据库中是否存在,如果存在则返回火车的车次,始发站,终点站,及座位价格等信息,否则返回NULL。

修改的属性:

该操作调用的

其他操作

调用该类的

其他操作:

处理逻辑概

述:

4.2.2 车票类

名称:train

用途:火车类,火车各类信息存储及获取

持久性:需要永久存储;

属性描述:

属性名

bianhao

number

fachetime

属性作用

车票编号

车次

发车时间

可见性

private

private

private

数据类型

int

int

time

缺省值

“”

“”

“”

约束条件

不空,值唯一

不空,值唯一

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

15

shifazhan

chexiangnum

cheweinum

yznumber

rznumber

ywnumber

rwnumber

totalNumber

totalMoney

type

始发站

车厢号

车位号

硬座当前票数

硬卧当前票数

软卧当前票数

当前票总数

总金额

票的类型

private

private

private

private

private

private

private

private

private

string

int

int

int

int

int

int

int

int

string

“”

“”

“”

“”

“”

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

软座当前票数 private

4.2.3 staff类对象

名称:staff

用途:人员保存

持久性:需要永久存储;

属性描述:

属性名 属性作用

用户ID

ID

可见性

public

数据类型

string

缺省值

“”

password 用户密码 private string “”

username 用户姓名 public string “”

salary

workNumber

操作描述:

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

工资

工号

public

public

int

int

0

0

约束条件

长度在1到20之间,包括数字、字母、下划线

长度在6到20之间,包括数字、字母、下划线

长度不超过64的字符串

>0

>0

trainQueryNumber

通过车次来查询获得单车信息

public

车次: number

bool

该车次在数据库中存在,即number对应列车信息在数据库中存在

显示出单车的信息

16 读取的属性: number jintingzhan leibie zhongdianzhan startzhan tjfachetime

tjdaodatime fachetime zhongdaotime yzprice rzprice ywprice

rwprice licheng

通过number查询该单车数据库中是否存在,如果存在则返回火车的车次,始发站,终点站,及座位价格等信息,否则返回NULL。

trainQueryDest

通过目的站来查询获得列车信息

public

终点站 zhongdianzhan

bool

该终点站对应的列车在数据库中存在,即zhongdianzhan对应列车信息在数据库中存在

显示到达此终点站对应的列车列表

zhongdianzhan arriveTime leibie kongtiao tujingzhan shifazhan

fachetime yzshu rzshu ywshu rwshu

通过zhongdianzhan查询该列车总表数据库中是否存在,如果存在则返回列车信息列表,否则返回NULL。

ticketQueryNumber

通过车次在列车列表中获得车票信息

public

int number

bool

该车次在数据库中存在,即number对应列车信息在数据库中存在

显示该车次的车票信息

bianhao number arriveTime leibie kongtiao tujingzhan shifazhan

fachetime yzshu rzshu ywshu rwshu

ticketQueryDest

修改的属性:

该操作调用的

其他操作

调用该类的

其他操作:

处理逻辑概

述:

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作

调用该操作的

其他操作:

处理逻辑概

述:

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作

调用该类的

其他操作:

17 处理逻辑概

述:

通过number查询该单车数据库中是否存在,如果存在则返回该列火车的车票如发车时间,座位号相关信息,否则返回NULL。

ticketQueryDest

通过目的站来获得列车列表

public

终点站 zhongdianzhan

bool

该终点站对应的列车在数据库中存在,即zhongdianzhan对应列车信息在数据库中存在

显示到达此终点站对应的列车列表

zhongdianzhan arriveTime leibie kongtiao tujingzhan shifazhan

fachetime yzshu rzshu ywshu rwshu

通过zhongdianzhan查询该列车总表数据库中是否存在,如果存在则返回列车信息列表,否则返回NULL。

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作

调用该类的

其他操作:

处理逻辑概

述:

操作名:

操作用途:

可见性:

参数列表:

modifySalerInfo

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作:

调用该操作的

其他操作:

处理逻辑概述:

修改售票员信息

private

ID:string

password:string

username:string

salary:int

workNumber:int

bool

该售票员在数据库中已存在

将该售票员的新信息写回到数据库

ID、password、username、salary、workNumber

ID、password、username、salary、workNumber

modifyTicketsSaler的伪码描述如下:

if(该售票员在数据库中已存在)

{

读取售票员原有信息

18 将新的售票员信息保存到数据库

return true;

}

else return false;

4.2.4 ticketsSaler类对象

名称:ticketsSaler

用途:人员保存

持久性:需要永久存储;

操作描述:

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作:

调用该操作的

其他操作:

处理逻辑概述:

ticketsSell

售票,修改售票后的票数

private

车次:int

购买的车票数目:int

bool

该车次存在而且车票剩余数不小于购买数

将售票后车票信息写回到数据库

ticketsNumber

ticketsNumber

ticketsSell的伪码描述如下:

if(剩余车票数>=购买车票数)

{

修改车票信息

将修改后的车票信息保存到数据库

return true;

}

else return false;

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

ticketRefund

回退火车票

public

bool

退票时间在该火车开车时间前6小时

19 后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作

调用该类的

其他操作:

处理逻辑概

述:

totalMoney

totalMoney

票进行回退时,将yznumber rznumber ywnumber rwnumber

totalNumber进行相应修改,加上销售的车票张数,并回退给退票者车票费用,将当前总金额更新

4.2.5 administrator类对象

名称:administrator

用途:人员保存

持久性:需要永久存储;

操作描述:

操作名:

操作用途:

可见性:

参数列表:

addTicketsSeller

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作:

调用该操作的

其他操作:

处理逻辑概述:

添加售票员

private

ID:string

password:string

username:string

salary:int

(workNumber:int)(仅限于售票员)

bool

该工号在数据库中不存在

将新添加的售票员信息写回到数据库

ID、password、username、salary、workNumber

ID、password、username、salary、workNumber

addTicketsSeller的伪码描述如下:

if(该工号在数据库中不存在)

{

将新添加的售票员信息保存到数据库

return true;

}

else return false;

20

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作

调用该类的

其他操作:

处理逻辑概

述:

deleteTicketsaler

删除指定的售票员

private

工号: worknumber

bool

该工号的售票员存在

将数据库中该售票员信息删除

worknumber

查找指定工号的售票员,如果找到,则删除,返回true;否则返回false。

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作:

调用该操作的

其他操作:

处理逻辑概述:

addTrain

添加列车信息

private

车次、始发站、终点站、票价等列车信息

bool

该车次在数据库中不存在

将该车次的新信息写回到数据库

车次、始发站、终点站、票价等列车信息

车次、始发站、终点站、票价等列车信息

addTrain的伪码描述如下:

if(该车次在数据库中不存在)

{

将新车次的信息保存到数据库

return true;

}

else return false;

操作名:

操作用途:

deleteTrain

删除某一车次的列车

21 可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作

调用该操作的

其他操作:

处理逻辑概

述:

private

车次:number

bool

该车次的列车在数据库中存在

将该车次的列车从数据库中删除

number

通过车次number在数据库中查找,如果找到则删除,返回true,否则返回false。

4.2.6 login类对象

名称:login

用途:软件主界面

持久性:需要永久存储;

属性描述:

属性名 属性作用

用户ID

ID

可见性

private

数据类型

string

缺省值

“”

password 用户密码 private string “”

zhongdianzhan 终点站 public string “”

number

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

车次 public int

ticketsSalerLogIn

0

约束条件

长度在1到20之间,包括数字、字母、下划线

长度在6到20之间,包括数字、字母、下划线

长度不超过64的字符串

>0

系统管理员登录

public

ID:string

password:string

bool

22 前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作:

调用该操作的

其他操作:

处理逻辑概述:

用户名、密码正确

登录进入售票员界面

ID、password

ticketsSalerLogIn的伪码描述如下:

if(用户名密码正确)

{

登录售票员界面

return true;

}

else return false;

操作名:

操作用途:

可见性:

参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作:

调用该操作的

其他操作:

处理逻辑概述:

administratorLogIn

系统管理员登录

public

ID:string

password:string

bool

用户名、密码正确

登录进入管理员界面

ID、password

administratorLogIn的伪码描述如下:

if(用户名密码正确)

{

登录管理员界面

return true;

}

else return false;

操作名:

操作用途:

可见性:

ticketsList

车票显示

public

23 参数列表:

返回值类型:

前置条件:

后置条件:

读取的属性:

修改的属性:

该操作调用的

其他操作:

调用该操作的

其他操作:

处理逻辑概述:

number、zhongdianzhan

bool

所查找的车票存在

正常显示

number、zhongdianzhan

ticketsList的伪码描述如下:

if(所查找的车票存在)

{

显示车票信息

return true;

}

else return false;

4.3 状态图

4.3.1 列车类状态图

/ 输入车次查得列车信息列车列表显示/ 终到站不存在输入终到站查询列车/ 车次不存在/ 终点站不存在查询态/ 输入终点站查询车票信息/ 输入车次查询列车查询态/ 返回单车信息/ 输入车次查询车票信息查询态列车列表显示/ 返回车票信息/ 输入车次查得车票信息/ 车次不存在

24

图7 列车类状态图

4.3.2 售票与退票状态图

LogIn登陆状态/ 登陆失败/ 登陆成功/ 销售车票享有售票权限状态/ 回退车票

图8 售票与退票状态图

4.3.3 铁路售票管理系统总体状态图

图9 铁路售票管理系统总体状态图

25 4.4 动态模型

4.4.1 列车及车票信息查询子系统顺序图

TrainTicketQueryInterfaceAllTrainInformationSingalTrainInformationTicketInformation最终用户1:LogIn2:trainInformationQueryNumber(number)4:getSingleTrainInformation(number)3:trainInformationQueryDestination (zhongdaozhan)5 ticketQueryNumber6 ticketQueryDest7 ticketQueryNumber

图10 列车及车票信息查询顺序图

26 4.4.2 登录系统及信息管理子系统次序图

:LogInInterFace:InformationManager:TicketsSellerInformation:TicketsInformation售票员1:ticketsSellerLogIn()3:modifyInformation()4:writeBack()2:errorWarning()5:sellTickets() 图11 登录系统及信息管理子系统次序图1

:LogInInterFace:InformationManager:AdministratorInformation:TicketsSellerInformation系统管理员1:administratorLogIn()3:modifyInformation()4:writeBack()2:errorWarning()5:addTicketsSeller()6:deleteTicketsSeller() 图12 登录系统及信息管理子系统次序图2

4.4.3 火车票的销售及退票子系统次序图

27 :TicketsManager:TicketsInformation售票员sSellerLogIn()sSell()sRefund()

图13 火车票的销售及退票子系统次序图

4.4.4 列车及车票管理子系统次序图

:TrainAndTicketsManager:TrainInformation:TicketsInformation系统管理员stratorLogIn()in()Train()kets()Tickets()

图14 列车及车票管理子系统次序图

28 5 用户界面设计

5.1 主界面

登录界面如图1所示

整体布局:主界面包括按车次及目的站查询列车及车票信息窗口,中间主题为列车或车票具体信息,最上面包含的是售票员及售票员的登录界面,主界面清晰地反映出系统的最终用户。

输入数据项及其输入方式:系统管理员和售票员可以从键盘向对文本框中输入用户名、密码易登录系统。系统管理员、售票员、一般用户可以向下面的文本框输入车次信息和终点站以查询列车信息。

操作及其实现方式:输入完毕后,点击登录按钮,进行登录。点击提交按钮,查询列车信息。

输出数据项及其输出方式:如果登录信息正确,则跳到对应人员的操作界面,如果登陆信息错误,则给出错误提示。如果是查询列车信息,则相应的信息会在文本区中显示。

图 15 主界面

29 5.2 系统管理员操作界面

系统管理员操作界面如图 — 图 所示

5.2.1 系统管理员的个人信息管理界面

整体布局: 包含四个任务栏,包含系统管理员的所有功能,个人信息管理,售票员管理,列车管理及售票管理四部分,下图中间主体框显示的是个人信息,下方包含个人信息的修改项。

输入数据项及其输入方式:系统管理员如果想修改个人信息,可以在下面的文本域中输入,然后点击修改按钮。

操作及其实现方式:输入完成后,点击修改按钮,进行修改。

输出数据项及其输出方式:当系统管理员登录以后,点击查看按钮,相应的个人信息会显示在文本区中。

图17 系统管理员的个人信息管理界面

30 5.2.2 系统管理员的售票员管理界面

整体布局:主要项目为添加或删除售票员,添加售票员的项目包括售票员ID,密码,姓名及工资项,而删除时只需要工号即可,主体框显示的是售票员的个人信息,下方有售票员信息修改项。

输入数据项及其输入方式:从键盘输入相应的信息到对应的文本域内。

操作及其实现方式:输入完成后,点击添加按钮,添加售票员;点击删除按钮,删除某个售票员;点击查看按钮,查看某个售票员的个人信息;点击修改按钮,修改某个售票员的信息。

输出数据项及其输出方式:当系统管理员输入某个工号并点击查看按钮,相应的售票员个人信息会显示在文本区中。

图18 系统管理员的售票员管理界面

31 5.2.3 系统管理员的列车管理界面

整体布局: 主要包括添加列车及删除列车项,主体框现实的是列车的信息

输入数据项及其输入方式:从键盘输入相应的信息到对应的文本域内。

操作及其实现方式:输入完成后,点击添加按钮,添加列车;点击删除按钮,删除某次列车;点击查看按钮,查看某次列车的信息。

输出数据项及其输出方式:当系统管理员输入某个车次并点击查看按钮,相应的列车信息会显示在文本区中。

图19 系统管理员的列车管理界面

32 5.2.4 系统管理员的车票管理界面

整体布局:主要包含添加车票及删除车票管理两项,主体框显示车票信息。

输入数据项及其输入方式:从键盘输入相应的信息到对应的文本域内。

操作及其实现方式:输入完成后,点击添加按钮,添加车票;点击删除按钮,删除某次列车的车票;点击查看按钮,查看某次列车车票的信息。

输出数据项及其输出方式:当系统管理员输入某个车次的车票并点击查看按钮,相应的车票信息会显示在文本区中。

图20 系统管理员的车票管理界面

33 5.3 售票员操作界面

售票员操作界面如下3个图所示

5.3.1 售票员的个人信息管理界面

整体布局:售票员界面,主要包含三个功能,个人信息管理及售票与退票功能,该图主体框显示的是个人信息。

输入数据项及其输入方式:售票员如果想修改个人信息,可以在下面的文本域中输入,然后点击修改按钮。

操作及其实现方式:输入完成后,点击修改按钮,进行修改。

输出数据项及其输出方式:当售票员登录以后,点击查看按钮,相应的个人信息会显示在文本区中。

图21 售票员的个人信息管理界面

34 5.3.2 售票员的售票界面

整体布局:主要实现车票的售票功能业务,主题框显示的是车票信息

输入数据项及其输入方式:售票员可以从键盘输入票次和购票数量。

操作及其实现方式:输入完成后,点击查看按钮,可以查看车票信息;点击确定按钮,可以售票。

输出数据项及其输出方式:当售票员输入以后,点击查看按钮,相应的车票信息会显示在文本区中。

图22 售票员的售票界面

35 5.3.3 售票员的退票界面

整体布局:主要实现退票功能,完成退票业务。

输入数据项及其输入方式:售票员可以从键盘输入票次和退票数量。

操作及其实现方式:输入完成后,点击退票按钮退票。

图23 售票员的退票界面

6 数据库设计

6.1 数据结构清单

铁路售票管理系统的数据结构清单,如表6 所示。

表6 数据结构清单

代码

1

2

3

4

名称

RailwayManagementDB

Dtrian

Ttrian

Ztrain

类型

数据库

数据表

数据表

数据表

用途

铁路管理系统数据库,存储列车及车票信息,售票员及系统管理员相关信息

存储动车组内列车相关信息

存储特快类列车相关信息

存储直达类列车相关信息

36 5

6

7

8

9

10

11

12

Ktrian

CommonTrain

DestTrain

adultTicket

stuTicket

childTicket

ticketSaler

administrator

数据表

数据表

数据表

数据表

数据表

数据表

数据表

数据表

存储快车类列车相关信息

存储普通列车类列车相关信息

存储按目的站分类存储列车相关信息

存储成人票相关信息

存储学生票相关信息

存储儿童票相关信息

存储售票员相关信息

存储系统管理员相关信息

6.2 数据结构与设计对象之间的关系

数据结构与各设计类之间的对应关系如表7所示。

表7 数据结构与各设计类之间的对应关系

数据结构

Dtrian

train类 ticket类

staff类 ticketSaler类 administrator类

Ttrian

Ztrain

Ktrian

CommonTrain

DestTrain

adultTicket

stuTicket

childTicket

ticketSaler

administrator

6.3 数据结构的逻辑设计

主要数据表格设计如下所示。

表8 动车组列车信息表Dtrain

数据项 ID

type

number

arriveTime

数据类型

varchar

String

time

是否关键字

10

30

动车组

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

37

长度 取值范围 缺省值

“”

“”

“”

合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一 0<=second<=59

kongtiao

tujingzhan

shifazhan

fachetime

string

string

string

time

10

10

10

10

30

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzshu

rzshu

ywshu

rwshu

tjfachetime

int

int

int

int

time

10

10

10

10

30

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

tjdaodatime time 否 30 2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzprice

rzprice

ywprice

rwprice

licheng

int

int

int

int

int

10

10

10

10

10

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于5000

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

zhongdaozhan string

表9 特快车类列车信息表Ttrain

数据项 ID

数据类型 是否关键长度 取值范围 缺省值 合法性验证条38 字

type

number

arriveTime

varchar

String

time

10

30

特快

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

kongtiao

tujingzhan

shifazhan

fachetime

string

string

string

time

10

10

10

10

30

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzshu

rzshu

ywshu

rwshu

tjfachetime

int

int

int

int

time

10

10

10

10

30

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

tjdaodatime time 否 30 2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzprice

rzprice

ywprice

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

zhongdaozhan string

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

“” 不空,值唯一

int

int

int

10

10

10

大于0并小于1000

大于0并小于1000

大于0并小于“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

39 1000

rwprice

licheng

int

int

10

10

大于0并小于1000

大于0并小于5000

“” 不空,值唯一

“” 不空,值唯一

表10 直达车类列车信息表Ztrain

数据项 ID

type

number

arriveTime

数据类型

varchar

String

time

是否关键字

10

30

直达

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

kongtiao

tujingzhan

shifazhan

fachetime

string

string

string

time

10

10

10

10

30

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzshu

rzshu

ywshu

rwshu

tjfachetime

int

int

int

int

time

10

10

10

10

30

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

tjdaodatime time 否 30 2008<=year

1<=month<=12

40

长度 取值范围 缺省值

“”

“”

“”

合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

zhongdaozhan string

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

“” 不空,值唯一 1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzprice

rzprice

ywprice

rwprice

licheng

int

int

int

int

int

10

10

10

10

10

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于5000

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

表11 快车类列车信息表Ktrain

数据项 ID

type

number

arriveTime

数据类型

varchar

String

time

是否关键字

10

30

快车

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

kongtiao

tujingzhan

shifazhan

fachetime

string

string

string

time

10

10

10

10

30

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzshu

rzshu

ywshu

rwshu

长度 取值范围 缺省值

“”

“”

“”

合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

zhongdaozhan string

int

int

int

int

10

10

10

10

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

41 1000

tjfachetime time 否 30 2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

tjdaodatime time 否 30 2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzprice

rzprice

ywprice

rwprice

licheng

int

int

int

int

int

10

10

10

10

10

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于5000

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

表12 普通车类列车信息表train

数据项 ID

type

number

arriveTime

数据类型

varchar

String

time

是否关键字

10

30

普通

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

kongtiao

tujingzhan

shifazhan

fachetime

string

string

string

time

10

10

10

10

30

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

42

长度 取值范围 缺省值

“”

“”

“”

合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

zhongdaozhan string 0<=minitue<=59

0<=second<=59

yzshu

rzshu

ywshu

rwshu

tjfachetime

int

int

int

int

time

10

10

10

10

30

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

tjdaodatime time 否 30 2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

yzprice

rzprice

ywprice

rwprice

licheng

int

int

int

int

int

10

10

10

10

10

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于5000

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

表13 按目的站分类类列车信息表DestTrain

数据项 ID

type

number

arriveTime

数据类型

varchar

String

time

是否关键字

10

10

30

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

43

长度 取值范围 缺省值

“”

“”

“”

合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一 kongtiao

tujingzhan

shifazhan

fachetime

string

string

string

time

10

10

10

10

30

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

zhongdaozhan string

yzshu

rzshu

ywshu

rwshu

tjfachetime

int

int

int

int

time

10

10

10

10

30

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

tjdaodatime time 否 30 2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

“” 不空,值唯一

yzprice

rzprice

ywprice

rwprice

licheng

int

int

int

int

int

10

10

10

10

10

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于5000

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

表14 成人票信息adultTicket

数据项 ID 数据类型 是否关键字

长度 取值范围 缺省值 合法性验证条件

44 type

bianhao

number

fachetime

string

string

string

time

10

10

30

adult

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

shifazhan

chexiangnum

cheweinum

yznumber

rznumber

ywnumber

rwnumber

totalNumber

totalMoney

string

int

int

int

int

int

int

int

int

10

大于0并小于100

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

“”

“”

“”

“”

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

表15 学生票信息stuTicket

数据项 ID

type

bianhao

number

fachetime

数据类型

string

string

string

time

是否关键字

10

10

30

student

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

shifazhan

chexiangnum

cheweinum

string

int

int

10

大于0并小于100

大于0并小于1000

45

长度 取值范围 缺省值

“”

“”

“”

“”

合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一 yznumber

rznumber

ywnumber

rwnumber

totalNumber

totalMoney

int

int

int

int

int

int

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

“”

“”

“”

“”

“”

“”

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

表16 儿童票信息childTicket

数据项 ID

type

bianhao

number

fachetime

数据类型

string

string

string

time

是否关键字

10

10

30

child

2008<=year

1<=month<=12

1<=day<=31

0<=hour<=23

0<=minitue<=59

0<=second<=59

shifazhan

chexiangnum

cheweinum

yznumber

rznumber

ywnumber

rwnumber

totalNumber

totalMoney

string

int

int

int

int

int

int

int

int

10

大于0并小于100

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

大于0并小于1000

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“” 不空,值唯一

“”

“”

不空,值唯一

不空,值唯一

“”

“”

“”

“”

长度 取值范围 缺省值 合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

46 表17 售票员信息ticketSaler

数据项 ID 数据类型

string

string

varchar

int

是否关键字

长度

10

10

10

10

10

取值范围

大于0小于10000

缺省值

“”

“”

“”

“”

“”

合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

ID

password

username

salary

workNumber

int

表18 系统管理员信息administrator

数据项 ID 数据类型

string

string

varchar

int

是否关键字

长度

10

10

10

10

取值范围

大于0小于10000

缺省值

“”

“”

“”

“”

合法性验证条件

不空,值唯一

不空,值唯一

不空,值唯一

不空,值唯一

ID

password

username

salary

7 非功能需求的设计

(1)系统应具有开放性:考虑到铁路部门的运行不仅与各区域相关,受区域管辖,调配,而且它必须受国家铁路中心集中管辖,在特定的时期国家需采取特殊措施,对整个国家内的各子区域进行宏观调控,对整个铁路运输进行合理调度,尽量使旅客达到满意程度。

本系统必须具有良好的开放性,既要满足现有集成需求,又要为将来系统的扩展预留接口。

技术手段:在铁路售票管理系统中采用了web 服务技术,使得其它相关信息系统能够很容易的与铁路售票管理系统集成。

(2)应随着铁路售票部门业务的不断完善,系统的更新势在难免,因此系统应该具有

很好的跨平台性、可维护性、可扩充性、易使用性。当用户需求,如操作方式、运行环境、

数据结构以及其他软件接口等发生变化时,设计的软件要求能做适当的调整。

技术手段:1)采用面向对象的分析与设计方法,把系统中那些很少变化的基本要素设计成面向对象的类,将其包含的信息和对这些信息的操作进行封装。在设计时把握好系统类的抽象程度和划分粒度的粗细,就可实现当系统的基本要素和工作流程变化时,只要对相关的系统类进行修改即可当系统的基本要素和功能增加时,只要在现有类的基础上派生出包含新增信息和操作的子类即可。这样由于修改只是在现有系统类的内部进行,增加只是对现有类的派生,因此系统变动被局部隔离,使之有较好的可扩展性和可维护性。

2)用模块化设计,组件封装了相关的系统操作,各个组件之间又是相互独立的,组件提供给外界的只是接口和方法,当组件内部发生变化,只要保持对外部的接口不变就不会影响到系统的其它部分,在功能上对应用程序实现了透明性,并将组件与数据存储细节或功能实现隔离开,方便了系统维护。

47

(3)系统应具有高可靠性:系统在功能完整的同时,应具有良好的可靠性。作为支持铁路售票部门的工作,有效调度区域的铁路客运,系统必须具有高效可靠性,以保证数据的安全和系统的稳定运行。

技术手段:系统构建于.Net Framework 三层构架之上,业务逻辑由web service、com+等组件实现,可以方便地利用等系列操作系统提供的组件服务,方便地使用负载平衡和对象缓冲池技术,增强了系统的弹性,保证了系统的健壮性和稳定性。

(4)系统对用户操作的相应时间应小于1 秒,最终用户对时间具有较高的要求,如查询列车信息及车票信息时,需要较快的查询速度,否则会给最终用户带来不便。

技术手段:在具体实现数据库的查询时,尽量使用效率较高,运行速度较高的查询算法来完成该实现工作,尽力较少最终用户查询等待的时间。

(5)系统应易于操作和维护:系统应面向用户进行设计。系统的使用者对计算机了解

程度不同,因此系统的操作应该尽量简单、方便,用户界面友好,使用户能够易学易用。

技术手段:采用图形画界面,并且提供标签导航结构,尽可能使用户仅通过首页面板就可以完成所有项目管理任务。标签导航结构采用上下两层导航条的设计,上层导航条放置本系统各主要模块的超链接,下层导航条放置对应主模块的各子功能模块的超链接。下层的导航条中列方便用户对记录进行操作,而上层导航条使用户可以随时切换到其它的主功能模块中。

(6)系统应具有较强的安全保密性:系统应提供安全可靠的数据存储服务,拒绝未被

授权的人员访问、篡改数据信息的企图,而只向被授权的用户提供与其权限一致的数据服务。

技术手段:数据库安全措施,为防止用户对数据库的数据非法访问造成信息泄露,运用数据库提供的安全机制,对应用系统用户分配数据库服务器角色和数据库角色,按数据库角色对数据库对象授权,用户对数据库对象的访问权限由系统管理员指定。

应用系统安全措施,为防止用户对应用系统的非法访问和越权访问,应用系统根据用户承担任务划分用户在应用系统中的角色,对不同角色的用户实行系统和项目级的层次管理,在各层次上分配不同权限,系统用户只能运行权限内的应用系统功能,访问控制通过数据库系统的安全机制实现,应用系统设计系统日志记录系统用户的所有行为,定期进行应用系统日志的审计和维护。

8 当前设计方案中存在的缺陷

非功能需求:系统对用户操作的相应时间应小于1 秒,可能没有满足,如果用户比较多、服务器忙时,响应时间稍长。

48

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688603064a154303.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信