飞机订票系统分析及设计

上传人:ta****u 文档编号:201401450 上传时间:2023-04-19 格式:DOCX 页数:21 大小:395.31KB
收藏 版权申诉 举报 下载
飞机订票系统分析及设计_第1页
第1页 / 共21页
飞机订票系统分析及设计_第2页
第2页 / 共21页
飞机订票系统分析及设计_第3页
第3页 / 共21页
资源描述:

《飞机订票系统分析及设计》由会员分享,可在线阅读,更多相关《飞机订票系统分析及设计(21页珍藏版)》请在装配图网上搜索。

1、目录1 需求规格说明书1.1 系统的逻辑模型 11.2 数据字典 51.2.1 ER 模型61.2.2 IPO图表62 设计规格说明书2.1 数据流图82.2 软件结构图82.3 详细设计2.3.1 PAD 图92.3.2 Jackson 图 102.4 编码2.4.1 基本界面102.4.2 准备工作112.4.3 程序源代码 123 测试174 致谢175 参考文献18附表118附表2 19机票预订系统分析与设计在社会高速发展,信息高速流通的今天,如果说时间就是金钱的话,那信息就是无价 之宝。随着城市生活节奏的加快,飞机已经成为人们使用越来越频繁的交通工具,随之 而来的问题是,如何能让旅客

2、最快、最便捷的订到机票。这就需要一个合适的订票系统 来处理航班、机票、旅客等信息,方便售票人员查询,插入,删除各种信息。本课程设计结合实际的订票、售票制度,经过实际的需求分析开发出来的机票预订系 统。阐述了机票预订系统的需求分析,描绘了本机票预订系统的基本模型图。详细给出 了从机票预订系统分析到总体设计详细设计与实现及测试的各个环节,最后对本系统做 出了客观评价,指明了系统的现实意义、缺点以及系统的升级方向。关键词:机票预订系统;数据库;SQL 开发工具:VC , SQL server需求规格说明书工作流程:为了方便旅客,拟开发一个机票预订系统。旅行社工作人员把预订机票的旅客信息(姓名、性别、

3、工作单位、身份证号码、旅行时间、旅行目的地等) 输入系统,系统为旅客安排航班,印出取票通知和帐单,旅客在飞机起飞前一天凭票通 知和帐单交款取票,系统校对无误即印机票给旅客。1.1用数据流图来描绘系统的逻辑模型:旅行社工作人员是数据源点,旅客是数据终点。图 1-1 基本模型1、进一步细化基本系统模型,“信息处理”、“订票处理”、“取票处理”是系统必须完成的主要功能,将代替“订票系统”,可得D1 订票信息旅行社 工作人员信息*图 1-2 细化模型图增加“订票信息”和“取票信息”两个数据存储。2、再进一步细化可得匚D1订票信息*D3斗票清单D2取票信息打亜Q白旅行社 工作人 员图 1-3 最终模型图

4、将 1.1 、1.2 、2.2 和 3.1 放在同一个边界内,这个系统将联机地接收信息、信息处理 订票处理、更新订票清单处理及取票处理;将 2.3 、2 .4 和3.2放在同一边界内,以批 量方式产生信息给旅客。1.2 数据字典名字:旅客信息别名:描述:姓名、性别、工作单 位、旅行时间、旅行目的 地、身份证号码定义:旅客信息=姓名+性别+ 工作单位+身份证号码+旅 行时间+旅行目的地位置:接收信息信息处理订票处理更新订票清单处理名字:姓名别名:描述:在订票清单中除身份证号码外另一个被标识的城定义:姓名=10个字符位置:订票清单订票信息取票信息名字:身份证号码别名:描述:在订票清单中唯一被 标志

5、的关键城定义:身份证号码=18个字 符位置:订票信息订票清单取票信息名字:取票通知别名:描述:取票证据之一定义:取票通知=姓名+身份证 号码+取票时间+航班位置:取票信息取票处理打印机名字:机票别名:描述:旅客凭此来坐飞机定义:机票=日期+源地点+目 的地点+航班+坐次+起飞时 间位置:输出到打印机名字:帐单别名:描述:取票凭证之一定义:帐单=姓名+身份证号码 +交款数额位置:取票信息打印机名字:取票信息别名:取票证据描述:旅客凭此证据在飞机起飞前一天取票定义:取票信息=取票通知+ 账单表1-1数据字典位置:1为把客户取票数据要求清晰明确的表达出来,建立一个ER模型。图1-4 ER模型图2、

6、IPO 图能够方便地描绘输入数据。对数据的处理和输出数据之间的关系。下面用改进的IPO图表来描述IPO表系统:机票预订系统负责人:黄伟模块:信息处理编号:1被调用:吴照例日期:IPO表系统:机票预订系统负责人:黄伟刘定模块:订票模块日期:编号:2被调用:信息处理调用:订票模 块和取票模块输入:订票信 息取票信息输出:订票信 息取票信息输入:姓名、性别、工作 单位、身份证号码、旅行 时间、旅行目的地处理:判断是订票还是取票, 并调用相应的功能模块。处理:将旅客信息输给本模块,根据旅客 要求安排航班,并给旅客在飞机起飞前一 天取票的证据即取票通知和账单系统:机票预订系统 模块:取票模块编号:3被调

7、用:信息处理负责人:蒋昕,魏斌日期注释:局部数据元素;调用:取票模块输入:姓名、身份证 输出:机票 号码、航班、日期处理:将输入的信息传给本模块,校对无 误后打印机票局部数据元素:注释:图1-5 IPO图表可采用 VB、VF、VC、PB 等算法来完成上述模块设计规格说明书经过需求分析阶段的分析过程,已粗略的表现了整个设计过程。总体设计阶段的基 本目的是用比较抽象概括的方式确定系统如何完成预定的任务,也就是说,应该确定系 统的物理配置方案,并且进而确定组成系统的每个程序的结构。因此,总体设计阶段要 完成两个小阶段,首先要进行系统设计,从需求分析阶段的数据流图设想完成系统功能 的最佳物理方案,然后

8、进行软件结构设计,确定软件有哪些模块组成以及这些模块之间 的动态调用关系。用结构图来描绘软件结构将需求分析阶段的数据流图进一步细化,经分析从而得到软件结构图,如下:无票图 2-1 数据流图二)由上面的数据流图可软件结构图设计出程序的“蓝图”,除了应该保证程序的可靠行之外,使下一步即将要编的程序可读性好,容易理解,容易测试和容易修改,维护是详细设计阶段最重要的目标。1)选择PAD图作为完成详细设计的工具,根据总体设计中的数据流图可得PAD图为:pl :信息处理p2: 订票 处理p3.2p3 :取票处理 c:旅客信息p3.1p2.3图 3-1 PAD 图2)在总体设计中得出了软件结构设计之后,在详

9、细设计阶段,可与使用面向数据结构地方法来设计每个模块的处理过程。选用 Jackson 方法来描绘数据结构。首先、得到数据结构的 Jackson 图:输入数据结构输出数据结构订票处理机票由数据结构的 Jackson 图到处描绘程序结构的 Jackson 图编码人和计算机通信仍然必须使用人工设计的语言,也既是程序设计语言。编码就是 把软件设计的结果翻译成计算机可以“理解”的形式用某种程序设计语言书写的程序。机票预定系统采用PB(Power Builder)语言来编写程序。基本界面:W message旅客信息姓名性别身份证号码工作单位姓名性别身份证 号码工作 单位旅行 时间旅行目 的地航 班旅行时间

10、查询条件姓名身份证号码身份证号码旅W目P的地e_ message查询删除I / V W7 , T八、姓名性别身份 证号 码工作 单位旅行 时间航班起止 时间机型源地 占八、目的 地坐次票价查询条件 姓图 4-1 基本界面工作前的准备工作首先在 power builder 中创建 Adaptive server anywhere 本地数据库其次将 power builder 与数据库连接即连库接着在 power builder 中操作 Adaptive server anywhere 数据库的表在使用数据库表之前首先要创建表。使用power builder的数据库画板创建表 进入 columns

11、 试图工作区Column nameData TypeWidthNullDefaultPassenger-nameChar12No(None)Passenger-sexChar12Yes(None)Passenger-numberInteger18No(None)Passenger-companyChar20Yes(None)Passenger-timeTimestamp8No(None)Passenger-addressChar20No(None)Passenger-plane idChar12No(None)表 4-1 passenger 表在仓U建一个名为 plane message 的表

12、如下Column nameData TypeWidthNullDefaultPassenger-nameChar12No(None)Passenger-sexChar12Yes(None)Passenger-numberInteger18No(None)Passenger-companyChar20Yes(None)Passenger-timeTimestamp8No(None)Passenger-plane idChar12No(None)Passenger-start and endTime16No(None)Passenger-typeChar8No(None)Passenger-sta

13、rtChar20No(None)Passenger-endChar20No(None)Passenger-idInteger10No(None)Passenger-priceDouble8No(None)表 4-1 plane_mesage 表(一)、仓建界面前的还要做的准备工作(1)首先建数据库,在连接数据库。(2)建表(3)填入数据(4)建立数据窗(5)修改标题存盘dplane(6)建立窗口( Wman) 主窗口( W一man)代码:dw- 1. Settrans Object ( SQLCA )dw- 1. Retrieve ()(7)窗口 open (打开)事件的代码:SQLCA.DB

14、MS=Profile String (“PB.INI”, “Database”, “DBMS ” ,“”)SQLCA.Database=Profile String(“PB.INI”,“Database”,“DataBase”, “”)SQLCA.Log ID=Profile String (“PB.INI”,“Database”,“LogID”,”)SQLCA.Log Pass=Profile String (“PB.INI”,“Database”,“LogPass word”, “”)SQLCA. Server Name=Profile String (“PB.INI”, “Databas

15、e”, “Server Name”, “” )SQLCA. User ID=Profile String (“PB.INI”, “Database”, “User ID ”, “”)SQLCA. DB Pass=Profile String (“PB.INI”, “Database”, “Database Password”, “”)SQLCA. Lock=Profile String (“PB.INI”, “Database”, “Lock”, “”)SQLCA. Db Pam = Profile String (“PB.INI”, “Database”, “Db Pam”, “”)CONN

16、ECT;W_ message:信息输入窗口创建选项:Tit le二“信息录入;Window Type二 “response!; dw _ message. Data Object = “d_ message_ Input”; gb _ message. Text =“旅客信息;gb _ condition. Text = “查询条件; me _ passenger_ name. Text = “姓名; sle _ passenger_ name . Text = “;me_ passenger _ number. Text = “身份证号码; sle_ passenger_ number .

17、Text = “;me_ sex. Text = “性别; sle_ sex. Text = “;me_ company. Text = “工作单位; sle_ company. Text = “;me_ time. Text = “旅行时间; em_ time. Mask Data Type = “date mask!; em_ time. Mask = “yy/mm/dd;me_ address. Text = “旅行目的地; sle_ address. Text = “;me_ plane id. Text = “航班; sle_ plane id. Text = “;cd_ save.

18、 Text = “ 保存; cd_ exit. Text = “退出; cd_ delete. Text = “删除; cd_ add . Text = “增加; cd_ retrieve. Text = “检索; cd_ exit.Cancel =TRUE 窗口的open事件代码为:dw_ message. Set Trans Object (SQLCA)dw_ message. Retrieve () sle_ passenger. number . Set Focus () Windows_ cen (this)“身份证号码编辑框(sle_ passnger-number)的modifi

19、ed事件代码为: String ls_ passenger_ numberLong ll_ rowsls_ passenger_ number = Trim(sle _ passenger_ number. text) IF ls_ passenger_ number = “THEN dw_ message. Set Filter (“) dw_ message. Filter () sle_ passenger_ name. Text = “ em_ credit. Text = “0ELSEKw_message.SetFilter(“passenger_number=+ls_passeng

20、er number +)dw_ massage. Filter () ll_ rows = dw _ message. Retrieve ()1码为:码为:IF ll_ rowsO THENsle_ passenger_ name. Text =dw_ message. Object . Passenger _ nameem_ credit. Text =string (dw_ message. object. Credit 1) sle_ passenger_ number . Set Focus ()ELSEsle _ passenger_ name. Set Focus ()END IF

21、END IF“姓名编辑框(sle_ passenger_ name)的modified事件代码为: sle_ passenger_ name . Set Focus ()“性别编辑框(sle_ passenger_ sex)的modified事件代码为: sle_ passenger_ sex. Set Focus ()“工作单位编辑框(sle_ passenger_ company)的modified事件代sle_ passenger_ company . Set Focus ()“旅行时间编辑框(sle_ passenger_ time)的modified事件代码为: sle_ passe

22、nger_ time . Set Focus ()“旅行目的地编辑框(sle_ passenger_ address)的modified事件代sle_ passenger_ address . Set Focus ()“航班编辑框(sle_ passenger_ plane id)的 modified 事件代码为: sle_ passenger_ plane id. Set Focus ()“增加”编辑框(cd_ add)的clicked事件代码为:Open (w_ message_ add)IFsle_ passenger_ name. Text =“”OKsle_ passenger_ s

23、ex .Text = “”OKsle_ passenger_ number . Text =“”OKsle_ passenger_ company. Text =“”OKsle_ passenger_ time. Text =“”OKsle_ passenger_ address .text =“”OKsle_ passenger_ plane Id. Text =“”OKmessage box (“提示”其输入姓名、性别、身份证号码、工作单位 旅行时间、旅行目的地和航班!”)RETURNEND IFsl_ row = dw_ message_ input. Inset Row (0)dw_

24、message .Input . Scroll To Row (sl_ row)dw_ message . Input. Set Row (sl_ row)dw_ message. Input. Set Focus ()“删除”按钮(cd_ delete)的clicked事件代码为:int li_ retli_ ret = Message Box( “提示”,“确实要删除吗? Exclamation!Yes/No!)IF li_ret=1 THENdw_ message. Delete Row (0)IF dw_ message . Update ()=1 THENCOMMIT;ELSEROL

25、LBACK;END IFEND IF“保存按钮(cd_ save)的clicked事件代码为:company, plane Idstring ls_ passenger_ name, ls_ passenger_ number, ls_ passengerls_ passenger_ time,ls_passenger_ address, ls_passenger_int li_ creditdecimal ldec _ messagels_ passenger_ name =Trim (ls _ passenger_ name. text)ls_ passenger_ sex =Trim (

26、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_ plane id =Trim (ls_ passenge

27、r_ plane id. text) li_ credit=Integer(em_ credit. text) ldec_ message=Dec(en_ message. text)INSERT INTO “message”(“Passenger_ name”,“Passenger_ sex”,“Passenger_ number”,“Passenger_ company”,“Passenger_ time”,“Passenger_ address”,“Passenger_ plane Id”,“Credit”,“Message”)VALVES (: ls_ passenger_ name

28、,: ls_ passenger_ sex,: ls_ passenger _ number ,: ls_ passenger_ company ,: ls_ passenger_ time,: ls_ passenger_ address ,: ls_ passenger_ plane Id ,:ls_ Credit,:ldec _ Message);IF SQLCA. SQL code0 THENROLLBACK;Message Box( “错误,“存盘失败,Stop sign!)RETURNEND IF COMMIT;Message Box( “提示”, “存盘成功!”) sle_ pa

29、ssenger_ name. Text = “” sle_ passenger_ sex. Text = “” sle_ passenger_ number. Text = “” sle_ passenger_ company. Text = “” sle_ passenger_ time. Text = “” sle_ passenger_ address. Text = “” sle_ passenger_ plane Id . Text = “” sle_ passenger_ number. Set Focus () dw_ message. Retrieve ()“检索按钮(cd_

30、retrieve)的clicked事件代码为: Long ll_ rowsString ls_ passenger_ name , ls_ passenger_ number IFTrim(sle_passenger_name.text)=“”andTrim(sle_passenger_ number. text)= “”THENMessage Box( “提示”, “请输入姓名或身份证好嘛!”) sle_ passenger_ number. Set Focus()RETURN END IF ls_ passenger_ number = Trim(sle_ passenger_ numbe

31、r. text) IF Len (ls_ passenger_ number)0THENdw_ message_ input. Set Filter(“passenger_ number =”+ ls_ passenger _ number +”)dw_ message_ input . Filter () ll_ rows = dw_ message_ input. Retrieve () IF ll_rows=0,THENMessage Box( “提示”,“无记录!”) RETURNEND IFsle_ passenger_ name. Text = dw_ message_ Input

32、. Object_ name1 RETURN END IFls_ passenger_ name = Trim (sle _ passenger_ name . text) dw_ message _ input. Set Filter (“passenger_ name =”+ ls_ passenger_ name +”)dw_ message_ input . Filter () ll_ rows = dw_ message_ input. Retrieve ()IF ll_rows=0THENMessage Box( “提示,“无记录! ”)END IFsle_passenger_nu

33、mber.text=dw_message_input_object_passenger_number1右边数据窗口控件(dw_ message _input)的clicked事件代码为: String ls_ passenger_ numberLong ll_ rowsIF row = 0 THEN row = 1ls_ passenger_ number = this. Object. Passenger_ number row dw_ message_ input. Set Filter (“passenger_ number =”+ ls passenger_ number +”)dw_

34、 message_ input . Filter ()ll_ rows = dw_ message_ input. Retrieve ()“退出按钮(cd_ exit)的clicked事件代码为:Close (parent)测试软件测试在软件生命周期中横跨两个阶段。通常在编写出每个模块之后就对他做必要 的测试(称为单元测试),相同模块的编写者和测试者是同一个人,编码和单元测试属 于软件生命周期的同一阶段。在这个阶段结束后,对软件系统还应该进行各种综合测试, 这是软件生命周期中另一独立的阶段,由非该模块编写者承担这项工作。我们要通过测试发现错误之后还必须诊断并改正错误,即调试。我们在测试阶段所能

35、做的,就是测试一个个模块,使之更完善。致谢通过这次课程设计,了解了设计一个数据库系统的复杂性和对综合知识要求较高。 因此在设计阶段我们查阅了很多资料,加深了对数据库知识的认识。在设计过程中,在 需求分析、数据库概念模型设计、数据库逻辑模型设计、数据库实施设计阶段和同学进 行了反复的讨论、研究逐渐完善了整个机票预订系统。在数据库逻辑模型设计阶段,将全局E-R图转换成关系模式,确定各关系模式的函数依赖关系,并且对依赖关系进行了规范化处理。同时为了更好满足不同用户的应用需 求进行了关系调整,优化了数据库的运用。建立了基本结构表,并且对基本表给出了主 键和外键,确定了其完整化约束。并确定了外模式和数据

36、视图。另外。经过这次的课程 设计,更好的体会到了团队精神。综上所述,我们小组设计的机票预订系统,符合关系数据库的基本体系结构,能够 基本达到设计目的和要求。但同时我们也深知,还有很多地方不足,希望老师指导和帮 助,一定会逐渐完善这个系统的。参考文献:1 黄平主编.数据库技术.北京:机械工业出版社,2002.2 蔡翠平 陈虎 数据库技术北方交通大学出版社 清华大学出版社3 卫海 PowerBuilder课程设计案例精编中国水利水电出版社4 美William B. Heys著PowerBuilder 6开发指南电子工业出版社5 郑人杰,殷人昆,陶永雷实用软件工程M,北京:清华大学出版社,1997,1.6 Jiawei han,Micheline Kamber著,范明,孟小峰等译.数据挖掘概念与技术M, 北京:机械工业出版社,2001,8.8Claude Seidman著,刘艺,王鲁军,蒋丹丹等译.SQL Server 2000数据挖掘 技术指南M,北京:机械工业出版社,2002,1.9Microsoft Corporation. Component Object Model TechnologiesEB/OL. 2005.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!