1、飞机订票系统分析与设计 长沙理工大学程序设计实践课程设计报告张 昭学 院 计通学院 专 业 运算机科学与技术 班 级 运算机03-05 学 号 28 学生姓名 张 昭 指导教师 卢曼莎 课程成绩 完成日期 2006年9月20号飞机订票系统分析与设计学生姓名:张昭 指导教师:卢曼莎摘要: 随着城市生活节拍的加速,飞机已经成为人们利用愈来愈频繁的交通工具,随之而来的问题是,如何能让旅客最快、最便利的订到机票。这就需要一个适合的订票系统来处置航班、机票、旅客等信息,方便售票人员查询,插入,删除各类信息。本课程设计结合实际的订票、售票制度,通过实际的需求分析,采纳功能壮大的VC作为开发工具、SQL作为
2、数据库开发出来的飞机订票治理系统。本文第一论述了飞机订票治理系统的需求分析,刻画了本飞机订票治理系统的大体模型图。通过对数据库技术的现状与进展、数据库系统的选择原那么、系统开发工具的选择一系列问题的分析,确信了系统的开发平台。详细给出了从飞机订票治理系统分析到整体设计详细设计与实现及测试的各个环节,最后对本系统做出了客观评判,指明了系统的现实意义、缺点和系统的升级方向。关键词:飞机订票系统;数据库;SQL1需求分析为了方便旅客,拟开发一个机票预订系统。旅行社工作人员把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时刻、旅行目的地等)输入系统,系统为旅客安排航班,印出取票通知和帐单,
3、旅客在飞机起飞前一天凭票通知和帐单交款取票,系统校对无误即印机票给旅客。用数据流图来刻画系统的逻辑模型:票预订系统的大体系统模型如下: 信息 取票信息 机票 旅行社工作人员是数据源点,旅客是数据终点。图1-1 大体模型1、进一步细化大体系统模型,“信息处置”、“订票处置”、“取票处置”是系统必需完成的要紧功能,将代替“订票系统”,可得 D1 订票信息 取票信息 旅客信息 信息 取票信息 机票 D2 取票信息图1-2 细化模型图增加“订票信息”和“取票信息”两个数据存储。2、再进一步细化可得 D1 订票信息 D3 订票清单 D2 取票信息 取票信息 订票信息 订票 清单 订票 清单 旅客信息 订
4、票信息 信息 信息 取票信息 取票信息 取票信息 取票信息 机票 D2 取票信息图1-3 最终模型图将、 和放在同一个边界内,那个系统将联机地接收信息、信息处置订票处置、更新订票清单处置及取票处置;将 、2 .4和放在同一边界内,以批量方式产生信息给旅客。 数据字典 表1-1数据字典1 为把客户的数据要求清楚明确的表达出来,成立一个ER模型。 图1-4 ER模型图2、IPO图能够方便地刻画输入数据。对数据的处置和输出数据之间的关系。下面用改良的IPO图表来描述 图1-5 IPO图表可采纳VB、VF、VC、PB等算法来完成上述模块2整体设计 通过需求分析时期的分析进程,已粗略的表现了整个设计进程
5、。整体设计时期的大体目的是用比较抽象归纳的方式确信系统如何完成预定的任务,也确实是说,应该确信系统的物理配置方案,而且进而确信组成系统的每一个程序的结构。因此,整体设计时期要完成两个小时期,第一要进行系统设计,从需求分析时期的数据流图假想完成系统功能的最正确物理方案,然后进行软件结构设计,确信软件有哪些模块组成和这些模块之间的动态挪用关系。用结构图来刻画软件结构将需求分析时期的数据流图进一步细化,经分析从而取得软件结构图,如下: 无票 退票或换票 D1订票信息 D3 订票清单 D2取票信息 订票信息 订票清单 取票信息 订票 旅客 订票 取票 信息 信息 清单 信息 信息 取票 取票信息 取票
6、 信息 信息 机票 取票信息 机票 取票信息 D2 取票信息 犯错图2-1 数据流图(二)由上面的数据流图可软件结构图 图2-2 软件结构图3详细设计详细设计时期的关键任务是确信如何具体地实现所需要的目标系统,也确实是要设计出程序的“蓝图”,除应该保证程序的靠得住行之外,使下一步即将要编的程序可读性好,容易明白得,容易测试和容易修改,保护是详细设计时期最重要的目标。1)选择PAD图作为完成详细设计的工具,依照整体设计中的数据流图可得PAD图为: p1 p2 c p3 def def p1:信息处置 p2:订票处置 p3:取票处置c:旅客信息 图3-1 PAD图2)在整体设计中得出了软件结构设计
7、以后,在详细设计时期,可与利用面向数据结构地址法来设计每一个模块的处置进程。选用Jackson方式来刻画数据结构。第一、取得数据结构的Jackson图: 输入数据结构 输出数据结构 由数据结构的Jackson图处处刻画程序结构的Jackson图4编码人和运算机通信仍然必需利用人工设计的语言,也既是程序设计语言。编码确实是把软件设计的结果翻译成运算性能够“明白得”的形式用某种程序设计语言书写的程序。机票预定系统采纳PB(Power Builder)语言来编写程序。大体界面:W_ messageW_ plane_ message图4-1 大体界面工作前的预备工作第一在power builder中创
8、建Adaptive server anywhere本地数据库第二将power builder与数据库连接即连库接着在power builder中操作Adaptive server anywhere数据库的表在利用数据库表之前第一要创建表。利用power builder的数据库画板创建表进入columns试图工作区Column nameData TypeWidthNullDefaultPassenger-nameChar12No(None)Passenger-sexChar12Yes(None)Passenger-numberInteger18No(None)Passenger-companyC
9、har20Yes(None)Passenger-timeTimestamp8No(None)Passenger-addressChar20No(None)Passenger-plane idChar12No(None)表4-1 passenger表在创建一个名为plane_ message的表如下Column nameData TypeWidthNullDefaultPassenger-nameChar12No(None)Passenger-sexChar12Yes(None)Passenger-numberInteger18No(None)Passenger-companyChar20Yes
10、(None)Passenger-timeTimestamp8No(None)Passenger-plane idChar12No(None)Passenger-start and endTime16No(None)Passenger-typeChar8No(None)Passenger-startChar20No(None)Passenger-endChar20No(None)Passenger-idInteger10No(None)Passenger-priceDouble8No(None)表4-1 plane_mesage 表(一)、创建界眼前的还要做的预备工作(1)第一建数据库,在连接数
11、据库。(2)建表(3)填入数据(4)成立数据窗(5)修改题目存盘dplane(6)成立窗口(Wman)主窗口(Wman)代码: dw- 1. Settrans Object ( SQLCA ) dw- 1. Retrieve ()(7)窗口open(打开)事件的代码:=Profile String (“”, “Database”, “DBMS ” ,“”)SQLCA. Database=Profile String (“”, “Database”, “Data Base”, “”)SQLCA. Log ID=Profile String (“”, “Database”, “Log ID”,“”
12、)SQLCA. Log Pass=Profile String (“”, “Database”, “Log Pass word”, “”)SQLCA. Server Name=Profile String (“”, “Database”, “Server Name”, “” )SQLCA. User ID=Profile String (“”, “Database”, “User ID ”, “”)SQLCA. DB Pass=Profile String (“”, “Database”, “Database Password”, “”)SQLCA. Lock=Profile String (
13、“”, “Database”, “Lock”, “”)SQLCA. Db Pam = Profile String (“”, “Database”, “Db Pam”, “”)CONNECT;W_ message:信息输入窗口创建选项:Title= “ 信息录入”;Window Type= “response!”; dw _ message. Data Object = “d_ message_ Input”; gb _ message. Text =“旅客信息”;gb _ condition. Text = “查询条件”;me _ passenger_ name. Text = “姓名”;s
14、le _ 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. Mask Data Type = “date mask!”;em_ time. Mask = “yy/mm/dd”;me_ addre
15、ss. Text = “旅行目的地”;sle_ address. Text = “”;me_ plane id. Text = “航班”;sle_ plane id. Text = “”;cd_ save. Text = “ 保留”;cd_ exit. Text = “退出”;cd_ delete. Text = “删除”;cd_ add . Text = “增加”;cd_ retrieve. Text = “检索”;cd_ =TRUE窗口的open事件代码为:dw_ message. Set Trans Object (SQLCA)dw_ message. Retrieve ()sle_ p
16、assenger. number . Set Focus ()Windows_ cen (this)“身份证号码”编辑框(sle_ passnger-number)的modified事件代码为:String ls_ passenger_ numberLong ll_ rowsls_ passenger_ number = Trim(sle _ passenger_ number. text)IF ls_ passenger_ number = “”THENdw_ message. Set Filter (“”)dw_ message. Filter ()sle_ passenger_ name
17、. Text = “”em_ credit. Text = “0”ELSEKw_ message. Set Filter (“passenger _number =”+ ls _ passenger _number +”)dw_ massage. Filter ()ll_ rows = dw _ message. Retrieve ()IF ll_ rowsO THENsle_ passenger_ name. Text =dw_ message. Object . Passenger _ name 1em_ credit. Text =string (dw_ message. object.
18、 Credit 1)sle_ passenger_ number . Set Focus ()ELSE sle _ passenger_ name. Set Focus ()END IFEND IF “姓名”编辑框(sle_ passenger_ name)的modified事件代码为:sle_ passenger_ name . Set Focus ()“性别”编辑框(sle_ passenger_ sex)的modified事件代码为:sle_ passenger_ sex. Set Focus ()“工作单位”编辑框(sle_ passenger_ company)的modified事件
19、代码为:sle_ passenger_ company . Set Focus ()“旅行时刻”编辑框(sle_ passenger_ time)的modified事件代码为:sle_ passenger_ time . Set Focus ()“旅行目的地”编辑框(sle_ passenger_ address)的modified事件代码为:sle_ passenger_ address . Set Focus ()“航班”编辑框(sle_ passenger_ plane id)的modified事件代码为:sle_ passenger_ plane id. Set Focus ()“增加
20、”编辑框(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 =“”OKsle_ passenger_ time. Text =“”OK sle_ passenger_ address .text =“”OK sle_ passenger_ plane Id. Text =“”OK messa
21、ge box (“提示”其输入姓名、性别、身份证号码、工作单位、旅行时刻、旅行目的地和航班!”) RETURN END IF sl_ row = dw_ message_ input. Inset Row (0) dw_ message .Input . Scroll To Row (sl_ row) dw_ message . Input. Set Row (sl_ row) dw_ message. Input. Set Focus ()“删除”按钮(cd_ delete)的clicked事件代码为: int li_ ret li_ ret = Message Box(“提示”, “确实要
22、删除吗?”Exclamation! Yes/No!) IF li_ret=1 THEN dw_ message. Delete Row (0) IF dw_ message . Update ()=1 THEN COMMIT;ELSE ROLLBACK; END IFEND IF“保留”按钮(cd_ save)的clicked事件代码为:string ls_ passenger_ name, ls_ passenger_ number, ls_ passenger_ company, ls_ passenger_ time, ls_ passenger_ address, ls_ passen
23、ger_ plane Idint li_ creditdecimal ldec _ messagels_ 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_
24、 passenger_ time. text)ls_ passenger_ address =Trim (ls_ passenger_ address. text)ls_ passenger_ plane id =Trim (ls_ passenger_ plane id. text)li_ credit=Integer(em_ credit. text)ldec_ message=Dec(en_ message. text)INSERT INTO “message” (“Passenger_ name”, “Passenger_ sex”, “Passenger_ number”, “Pas
25、senger_ company”, “Passenger_ time”, “Passenger_ address”, “Passenger_ plane Id”, “Credit”, “Message”)VALVES (: ls_ passenger_ name ,: ls_ passenger_ sex,: ls_ passenger _ number ,: ls_ passenger_ company ,: ls_ passenger_ time, : ls_ passenger_ address ,: ls_ passenger_ plane Id ,:ls_ Credit,:ldec
26、_ Message);IF SQLCA. SQL code0 THEN ROLLBACK; Message Box(“错误”, “存盘失败”, Stop sign!) RETURNEND IFCOMMIT; Message Box( “提示”, “存盘成功!”)sle_ passenger_ name. Text = “”sle_ passenger_ sex. Text = “”sle_ passenger_ number. Text = “”sle_ passenger_ company. Text = “”sle_ passenger_ time. Text = “”sle_ passe
27、nger_ address. Text = “”sle_ passenger_ plane Id . Text = “”sle_ passenger_ number. Set Focus ()dw_ message. Retrieve ()“检索”按钮(cd_ retrieve)的clicked事件代码为:Long ll_ rowsString ls_ passenger_ name , ls_ passenger_ numberIF Trim (sle_ passenger_ name. text)= “”and Trim (sle_ passenger_ number. text)= “”
28、THENMessage Box( “提示”, “请输入姓名或身份证好嘛!”)sle_ passenger_ number. Set Focus()RETURNEND IFls_ passenger_ number = Trim(sle_ passenger_ number. text)IF Len (ls_ passenger_ number)0 THEN dw_ message_ input. Set Filter (“passenger_ number =”+ ls_ passenger _ number +”)dw_ message_ input . Filter ()ll_ rows
29、= dw_ message_ input. Retrieve ()IF ll_rows=0,THEN Message Box( “提示”,“无记录!”) RETURNEND IF sle_ passenger_ name. Text = dw_ message_ Input. Object_ name1RETURNEND 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=0 THEN Message Box(“提示”, “无记录!”)END IF =dw_message_input_object_p
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1