飞机订票系统分析与设计.docx
- 文档编号:9308537
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:27
- 大小:340.94KB
飞机订票系统分析与设计.docx
《飞机订票系统分析与设计.docx》由会员分享,可在线阅读,更多相关《飞机订票系统分析与设计.docx(27页珍藏版)》请在冰点文库上搜索。
飞机订票系统分析与设计
飞机订票系统分析与设计
1需求规格说明书
1.1系统的逻辑模型………………………………………………………………………1
1.2数据字典………………………………………………………………………………5
1.2.1ER模型…………………………………………………………………………………6
1.2.2IPO图表…………………………………………………………………………………6
2设计规格说明书
2.1数据流图…………………………………………………………………………………8
2.2软件结构图………………………………………………………………………………8
2.3详细设计
2.3.1PAD图……………………………………………………………………………………9
2.3.2Jackson图………………………………………………………………………………10
2.4编码
2.4.1基本界面…………………………………………………………………………………10
2.4.2准备工作…………………………………………………………………………………11
2.4.3程序源代码……………………………………………………………………………12
3测试………………………………………………………………………………………17
4致谢………………………………………………………………………………………17
5参考文献…………………………………………………………………………………18
附表1………………………………………………………………………………………18
附表2……………………………………………………………………………………19
机票预订系统分析与设计
在社会高速发展,信息高速流通的今天,如果说时间就是金钱的话,那信息就是无价之宝。
随着城市生活节奏的加快,飞机已经成为人们使用越来越频繁的交通工具,随之而来的问题是,如何能让旅客最快、最便捷的订到机票。
这就需要一个合适的订票系统来处理航班、机票、旅客等信息,方便售票人员查询,插入,删除各种信息。
本课程设计结合实际的订票、售票制度,经过实际的需求分析开发出来的机票预订系统。
阐述了机票预订系统的需求分析,描绘了本机票预订系统的基本模型图。
详细给出了从机票预订系统分析到总体设计详细设计与实现及测试的各个环节,最后对本系统做出了客观评价,指明了系统的现实意义、缺点以及系统的升级方向。
关键词:
机票预订系统;数据库;SQL
开发工具:
VC,SQLserver
需求规格说明书
工作流程:
为了方便旅客,拟开发一个机票预订系统。
旅行社工作人员把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入系统,系统为旅客安排航班,印出取票通知和帐单,旅客在飞机起飞前一天凭票通知和帐单交款取票,系统校对无误即印机票给旅客。
1.1用数据流图来描绘系统的逻辑模型:
票预订系统的基本系统模型如下:
信息取票信息
机票
旅行社工作人员是数据源点,旅客是数据终点。
图1-1基本模型
1、进一步细化基本系统模型,“信息处理”、“订票处理”、“取票处理”是系统必须完成的主要功能,将代替“订票系统”,可得
取票信息
D1订票信息
旅客信息
信息
取票信息机票
D2取票信息
图1-2细化模型图
增加“订票信息”和“取票信息”两个数据存储。
2、
再进一步细化可得
D1订票信息D3订票清单D2取票信息
订票信息订票清单
清
旅客信息订票信息
信息信息
取票信息取票信
取票信息
取票信息
机
D2取票信息
图1-3最终模型图
将1.1、1.2、2.2和3.1放在同一个边界内,这个系统将联机地接收信息、信息处理订票处理、更新订票清单处理及取票处理;将2.3、2.4和3.2放在同一边界内,以批量方式产生信息给旅客。
1.2数据字典
表1-1数据字典
1为把客户的数据要求清晰明确的表达出来,建立一个ER模型。
图1-4ER模型图
2、IPO图能够方便地描绘输入数据。
对数据的处理和输出数据之间的关系。
下
面用改进的IPO图表来描述
图1-5IPO图表
可采用VB、VF、VC、PB等算法来完成上述模块
设计规格说明书
经过需求分析阶段的分析过程,已粗略的表现了整个设计过程。
总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务,也就是说,应该确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构。
因此,总体设计阶段要完成两个小阶段,首先要进行系统设计,从需求分析阶段的数据流图设想完成系统功能的最佳物理方案,然后进行软件结构设计,确定软件有哪些模块组成以及这些模块之间的动态调用关系。
用结构图来描绘软件结构
将需求分析阶段的数据流图进一步细化,经分析从而得到软件结构图,
如下:
无票
退票或换票
D1订票信息D3订票清单D2取票信息
订票信息订票清单取票信息
订票清单
旅客订票取票
信息信息信息
信息
取票信息取票信息
取票
信息机票
取票信息机票
取票信息
D2取票信息
出错
图2-1数据流图
(二)由上面的数据流图可软件结构图
图2-2
软件结构图
详细设计
详细设计阶段的关键任务是确定怎样具体地实现所需要的目标系统,也就是要设计出程序的“蓝图”,除了应该保证程序的可靠行之外,使下一步即将要编的程序可读性好,容易理解,容易测试和容易修改,维护是详细设计阶段最重要的目标。
1)选择PAD图作为完成详细设计的工具,根据总体设计中的数据流图可得PAD图为:
p1.1
p1
p2
p1.2
c
p3p2.1defp3.1
defp2.2
p1:
信息处理
p2:
订票处理p2.3p3.2
p3:
取票处理
c:
旅客信息p2.4
图3-1PAD图
2)在总体设计中得出了软件结构设计之后,在详细设计阶段,可与使用面向数据结构地方法来设计每个模块的处理过程。
选用Jackson方法来描绘数据结构。
首先、得到数据结构的Jackson图:
输入数据结构输出数据结构
由数据结构的Jackson图到处描绘程序结构的Jackson图
编码
人和计算机通信仍然必须使用人工设计的语言,也既是程序设计语言。
编码就是把软件设计的结果翻译成计算机可以“理解”的形式——用某种程序设计语言书写的程序。
机票预定系统采用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
Char
12
Yes
(None)
Passenger-number
Integer
18
No
(None)
Passenger-company
Char
20
Yes
(None)
Passenger-time
Timestamp
8
No
(None)
Passenger-address
Char
20
No
(None)
Passenger-planeid
Char
12
No
(None)
表4-1passenger表
在创建一个名为plane_message的表如下
Columnname
DataType
Width
Null
Default
Passenger-name
Char
12
No
(None)
Passenger-sex
Char
12
Yes
(None)
Passenger-number
Integer
18
No
(None)
Passenger-company
Char
20
Yes
(None)
Passenger-time
Timestamp
8
No
(None)
Passenger-planeid
Char
12
No
(None)
Passenger-startandend
Time
16
No
(None)
Passenger-type
Char
8
No
(None)
Passenger-start
Char
20
No
(None)
Passenger-end
Char
20
No
(None)
Passenger-id
Integer
10
No
(None)
Passenger-price
Double
8
No
(None)
表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()
ELSE
sle_passenger_name.SetFocus()
ENDIF
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;
ELSE
ROLLBACK;
ENDIF
ENDIF
“保存”按钮(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_passenger_time=Trim(ls_passenger_time.text)
ls_passenger_address=Trim(ls_passenger_address.text)
ls_passenger_planeid=Trim(ls_passenger_planeid.text)
li_credit=Integer(em_credit.text)
ldec_message=Dec(en_message.text)
INSERTINTO“message”
(“Passenger_name”,
“Passenger_sex”,
“Passenger_number”,
“Passenger_company”,
“Passenger_time”,
“Passenger_address”,
“Passenger_planeId”,
“Credit”,
“Message”)
VALVES(:
ls_passenger_name,
:
ls_passenger_sex,
:
ls_passenger_number,
:
ls_passenger_company,
:
ls_passenger_time,
:
ls_passenger_address,
:
ls_passenger_planeId,
:
ls_Credit,
:
ldec_Message);
IFSQLCA.SQLcode<>0THEN
ROLLBACK;
MessageBox(“错误”,“存盘失败”,Stopsign!
)
RETURN
ENDIF
COMMIT;
MessageBox(“提示”,“存盘成功!
”)
sle_passenger_name.Text=“”
sle_passenger_sex.Text=“”
sle_passenger_number.Text=“”
sle_passenger_company.Text=“”
sle_passenger_time.Text=“”
sle_passenger_address.Text=“”
sle_passenger_planeId.Text=“”
sle_passenger_number.SetFocus()
dw_message.Retrieve()
“检索”按钮(cd_retrieve)的clicked事件代码为:
Longll_rows
Stringls_passenger_name,ls_passenger_number
IFTrim(sle_passenger_name.text)=“”andTrim(sle_passenger_number.text)=“”
THEN
MessageBox(“提示”,“请输入姓名或身份证好嘛!
”)
sle_passenger_number.SetFocus()
RETURN
ENDIF
ls_passenger_number=Trim(sl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 飞机 订票 系统分析 设计