飞机订票系统分析与设计Word格式.docx
《飞机订票系统分析与设计Word格式.docx》由会员分享,可在线阅读,更多相关《飞机订票系统分析与设计Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
![飞机订票系统分析与设计Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/22/7c48b6f6-7ddb-4575-b1c9-e5814a1579a2/7c48b6f6-7ddb-4575-b1c9-e5814a1579a21.gif)
1
信息
处理
旅客信息
旅行社
工作人员
信息
3
取票处理
取票信息机票
D2取票信息
图1-2细化模型图
增加“订票信息”和“取票信息”两个数据存储。
2、再进一步细化可得
D1订票信息D3订票清单D2取票信息
2.3
产生订票信息处理
订票信息订票清单
2.2
更新订票清单处理
2.1
订票
清单
2.4
打印机
旅客信息订票信息
1.2
1.1
接收
信息信息
3.1
取票信息
3.2
取票信息取票信息
机票
图1-3最终模型图
将1.1、1.2、2.2和3.1放在同一个边界内,这个系统将联机地接收信息、信息处理订票处理、更新订票清单处理及取票处理;
将2.3、2.4和3.2放在同一边界内,以批量方式产生信息给旅客。
1.2数据字典
名字:
旅客信息
别名:
描述:
姓名、性别、工作单位、旅行时间、旅行目的地、身份证号码
定义:
旅客信息=姓名+性别+工作单位+身份证号码+旅行时间+旅行目的地
位置:
接收信息
信息处理
订票处理
更新订票清单处理
身份证号码
在订票清单中唯一被标志的关键城
身份证号码=18个字符
订票信息
订票清单
取票通知
取票证据之一
取票通知=姓名+身份证号码+取票时间+航班
姓名
在订票清单中除身份证号码外另一个被标识的城
姓名=10个字符
订票清单
订票信息
机票
旅客凭此来坐飞机
机票=日期+源地点+目的地点+航班+坐次+起飞时间
输出到打印机
帐单
取票凭证之一
帐单=姓名+身份证号码+交款数额
打印机
取票证据
旅客凭此证据在飞机起飞前一天取票
取票信息=取票通知+账单
表1-1数据字典
1为把客户的数据要求清晰明确的表达出来,建立一个ER模型。
工作单位
旅行时间
性别
旅行目的地
名字
信息处理
订票/取票
起飞时间
坐次
航班
目的地点
源地点
日期
图1-4ER模型图
2、
IPO表
系统:
机票预订系统作者:
丁霞
模块:
订票模块日期:
编号:
2
注释:
IPO图能够方便地描绘输入数据。
对数据的处理和输出数据之间的关系。
下面用改进的IPO图表来描述
信息处理日期:
1
注释:
调用:
被调用:
订票模块和取票模块
输出:
输入:
姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地
订票信息取票信息
处理:
盘但是订票还是取票,并调用相应的功能模块。
将旅客信息输给本模块,根据旅客要求安排航班,并给旅客在飞机起飞前一天取票的证据即取票通知和账单
局部数据元素;
局部数据元素:
取票模块日期:
3
姓名、身份证号码、航班、日期
将输入的信息传给本模块,校对无误后打印机票
图1-5IPO图表
可采用VB、VF、VC、PB等算法来完成上述模块
2总体设计
经过需求分析阶段的分析过程,已粗略的表现了整个设计过程。
总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务,也就是说,应该确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构。
因此,总体设计阶段要完成两个小阶段,首先要进行系统设计,从需求分析阶段的数据流图设想完成系统功能的最佳物理方案,然后进行软件结构设计,确定软件有哪些模块组成以及这些模块之间的动态调用关系。
用结构图来描绘软件结构
将需求分析阶段的数据流图进一步细化,经分析从而得到软件结构图,
如下:
无票
退票或换票
D1订票信息D3订票清单D2取票信息
订票信息订票清单取票信息
订票
旅客订票取票
信息信息清单信息
信息
取票取票信息
取票
信息信息机票
出错
图2-1数据流图
(二)由上面的数据流图可软件结构图
机票预定系统
订票处理系统
取票处理系统
旅客订票信息
旅客取票信息
取
票
通
知
帐
单
图2-2软件结构图
3详细设计
详细设计阶段的关键任务是确定怎样具体地实现所需要的目标系统,也就是要设计出程序的“蓝图”,除了应该保证程序的可靠行之外,使下一步即将要编的程序可读性好,容易理解,容易测试和容易修改,维护是详细设计阶段最重要的目标。
1)选择PAD图作为完成详细设计的工具,根据总体设计中的数据流图可得PAD图为:
p1.1
P1
p1
p2
p1.2
c
P3
p3p2.1defp3.1
defp2.2
P2
p1:
信息处理
p2:
订票处理p2.3p3.2
p3:
c:
旅客信息p2.4
图3-1PAD图
2)在总体设计中得出了软件结构设计之后,在详细设计阶段,可与使用面向数据结构地方法来设计每个模块的处理过程。
选用Jackson方法来描绘数据结构。
首先、得到数据结构的Jackson图:
输入数据结构输出数据结构
由数据结构的Jackson图到处描绘程序结构的Jackson图
账单
4编码
人和计算机通信仍然必须使用人工设计的语言,也既是程序设计语言。
编码就是把软件设计的结果翻译成计算机可以“理解”的形式——用某种程序设计语言书写的程序。
机票预定系统采用PB(PowerBuilder)语言来编写程序。
基本界面:
W_message
旅客信息
查询条件
姓名身份证号码
退出
检索
保存
删除
增加
W_plane_message
起止时间
机型
目的地
票价
查询
图4-1基本界面
工作前的准备工作
首先在powerbuilder中创建Adaptiveserveranywhere本地数据库
其次将powerbuilder与数据库连接即连库
接着在powerbuilder中操作Adaptiveserveranywhere数据库的表
在使用数据库表之前首先要创建表。
使用powerbuilder的数据库画板创建表
进入columns试图工作区
Columnname
DataType
Width
Null
Default
Passenger-name
Char
12
No
(None)
Passenger-sex
Yes
Passenger-number
Integer
18
Passenger-company
20
Passenger-time
Timestamp
8
Passenger-address
Passenger-planeid
表4-1passenger表
在创建一个名为plane_message的表如下
Passenger-startandend
Time
16
Passenger-type
Passenger-start
Passenger-end
Passenger-id
10
Passenger-price
Double
表4-1plane_mesage表
(一)、创建界面前的还要做的准备工作
(1)首先建数据库,在连接数据库。
(2)建表
(3)填入数据
(4)建立数据窗
(5)修改标题存盘d—plane
(6)建立窗口(W—man)
主窗口(W—man)代码:
dw-1.SettransObject(SQLCA)
dw-1.Retrieve()
(7)窗口open(打开)事件的代码:
SQLCA.DBMS=ProfileString(“PB.INI”,“Database”,“DBMS”,“”)
SQLCA.Database=ProfileString(“PB.INI”,“Database”,“DataBase”,“”)
SQLCA.LogID=ProfileString(“PB.INI”,“Database”,“LogID”,“”)
SQLCA.LogPass=ProfileString(“PB.INI”,“Database”,“LogPassword”,“”)
SQLCA.ServerName=ProfileString(“PB.INI”,“Database”,“ServerName”,“”)
SQLCA.UserID=ProfileString(“PB.INI”,“Database”,“UserID”,“”)
SQLCA.DBPass=ProfileString(“PB.INI”,“Database”,“DatabasePassword”,“”)
SQLCA.Lock=ProfileString(“PB.INI”,“Database”,“Lock”,“”)
SQLCA.DbPam=ProfileString(“PB.INI”,“Database”,“DbPam”,“”)
CONNECT;
W_message:
信息输入窗口
创建选项:
Title=“信息录入”;
WindowType=“response!
”;
dw_message.DataObject=“d_message_Input”;
gb_message.Text=“旅客信息”;
gb_condition.Text=“查询条件”;
me_passenger_name.Text=“姓名”;
sle_passenger_name.Text=“”;
me_passenger_number.Text=“身份证号码”;
sle_passenger_number.Text=“”;
me_sex.Text=“性别”;
sle_sex.Text=“”;
me_company.Text=“工作单位”;
sle_company.Text=“”;
me_time.Text=“旅行时间”;
em_time.MaskDataType=“datemask!
em_time.Mask=“yy/mm/dd”;
me_address.Text=“旅行目的地”;
sle_address.Text=“”;
me_planeid.Text=“航班”;
sle_planeid.Text=“”;
cd_save.Text=“保存”;
cd_exit.Text=“退出”;
cd_delete.Text=“删除”;
cd_add.Text=“增加”;
cd_retrieve.Text=“检索”;
cd_exit.Cancel=TRUE
窗口的open事件代码为:
dw_message.SetTransObject(SQLCA)
dw_message.Retrieve()
sle_passenger.number.SetFocus()
Windows_cen(this)
“身份证号码”编辑框(sle_passnger-number)的modified事件代码为:
Stringls_passenger_number
Longll_rows
ls_passenger_number=Trim(sle_passenger_number.text)
IFls_passenger_number=“”THEN
dw_message.SetFilter(“”)
dw_message.Filter()
sle_passenger_name.Text=“”
em_credit.Text=“0”
ELSE
Kw_message.SetFilter(“passenger_number=”’+ls_passenger_number+”’”)
dw_massage.Filter()
ll_rows=dw_message.Retrieve()
IFll_rows<
>
OTHEN
sle_passenger_name.Text=dw_message.Object.Passenger_name[1]
em_credit.Text=string(dw_message.object.Credit[1])
sle_passenger_number.SetFocus()
sle_passenger_name.SetFocus()
ENDIF
“姓名”编辑框(sle_passenger_name)的modified事件代码为:
sle_passenger_name.SetFocus()
“性别”编辑框(sle_passenger_sex)的modified事件代码为:
sle_passenger_sex.SetFocus()
“工作单位”编辑框(sle_passenger_company)的modified事件代码为:
sle_passenger_company.SetFocus()
“旅行时间”编辑框(sle_passenger_time)的modified事件代码为:
sle_passenger_time.SetFocus()
“旅行目的地”编辑框(sle_passenger_address)的modified事件代码为:
sle_passenger_address.SetFocus()
“航班”编辑框(sle_passenger_planeid)的modified事件代码为:
sle_passenger_planeid.SetFocus()
“增加”编辑框(cd_add)的clicked事件代码为:
Open(w_message_add)
IF
sle_passenger_name.Text=“”OK
sle_passenger_sex.Text=“”OK
sle_passenger_number.Text=“”OK
sle_passenger_company.Text=“”OK
sle_passenger_time.Text=“”OK
sle_passenger_address.text=“”OK
sle_passenger_planeId.Text=“”OK
messagebox(“提示”其输入姓名、性别、身份证号码、工作单位、旅行时间、旅行目的地和航班!
”)
RETURN
ENDIF
sl_row=dw_message_input.InsetRow(0)
dw_message.Input.ScrollToRow(sl_row)
dw_message.Input.SetRow(sl_row)
dw_message.Input.SetFocus()
“删除”按钮(cd_delete)的clicked事件代码为:
intli_ret
li_ret=MessageBox(“提示”,“确实要删除吗?
”Exclamation!
Yes/No!
)
IFli_ret=1THEN
dw_message.DeleteRow(0)
IFdw_message.Update()=1THEN
COMMIT;
ROLLBACK;
“保存”按钮(cd_save)的clicked事件代码为:
stringls_passenger_name,ls_passenger_number,ls_passenger_company,
ls_passenger_time,ls_passenger_address,ls_passenger_planeId
intli_credit
decimalldec_message
ls_passenger_name=Trim(ls_passenger_name.text)
ls_passenger_sex=Trim(ls_passenger_sex.text)
ls_passenger_number=Trim(ls_passenger_number.text)
ls_passenger_company=Trim(ls_passenger_company.text)
ls_