飛機訂票系統分析與設計_第1頁
飛機訂票系統分析與設計_第2頁
飛機訂票系統分析與設計_第3頁
飛機訂票系統分析與設計_第4頁
飛機訂票系統分析與設計_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 長沙理工大學程序設計實踐課程設計報告張 昭學 院 計通學院 專 業 計算機科學與技術 班 級 計算機03-05 學 號 28 學生姓名 張 昭 指導教師 盧曼莎 課程成績 完成日期 2006年9月20號飛機訂票系統分析與設計學生姓名:張昭 指導老師:盧曼莎摘要: 隨著城市生活節奏的加快,飛機已經成為人們使用越來越頻繁的交通工具,隨之而來的問題是,如何能讓旅客最快、最便捷的訂到機票。這就需要一個合適的訂票系統來處理航班、機票、旅客等信息,方便售票人員查詢,插入,刪除各種信息。本課程設計結合實際的訂票、售票制度,經過實際的需求分析,采用功能強大的VC作為開發工具、SQL作為數據庫開發出來的飛機訂

2、票管理系統。本文首先闡述了飛機訂票管理系統的需求分析,描繪了本飛機訂票管理系統的基本模型圖。通過對數據庫技術的現狀與發展、數據庫系統的選擇原則、系統開發工具的選擇一系列問題的分析,確定了系統的開發平臺。詳細給出了從飛機訂票管理系統分析到總體設計詳細設計與實現及測試的各個環節,最后對本系統做出了客觀評價,指明了系統的現實意義、缺點以及系統的升級方向。關鍵詞:飛機訂票系統;數據庫;SQL1需求分析為了方便旅客,擬開發一個機票預訂系統。旅行社工作人員把預訂機票的旅客信息(姓名、性別、工作單位、身份證號碼、旅行時間、旅行目的地等)輸入系統,系統為旅客安排航班,印出取票通知和帳單,旅客在飛機起飛前一天憑

3、票通知和帳單交款取票,系統校對無誤即印機票給旅客。1.1用數據流圖來描繪系統的邏輯模型:票預訂系統的基本系統模型如下:訂票系統旅行社工作人員旅客信息取票信息機票旅行社工作人員是數據源點,旅客是數據終點。圖1-1 基本模型1、 進一步細化基本系統模型,“信息處理”、“訂票處理”、“取票處理”是系統必須完成的主要功能,將代替“訂票系統”,可得 D1 訂票信息 2訂票處理 取票信息 1信息處理旅客旅客信息旅行社工作人員信息 3取票處理取票信息 機票 D2 取票信息圖1-2 細化模型圖增加“訂票信息”和“取票信息”兩個數據存儲。2、 再進一步細化可得 D1 訂票信息 D3 訂票清單 D2 取票信息 取

4、票信息2.3產生訂票信息處理 訂票信息 訂票 清單 2.2更新訂票清單處理2.1訂票處理 訂票 清單2.4打印機旅客信息訂票信息 1.2信息處理1.1接收信息 旅行社工作人員信息信息3.1取票信息3.2打印機取票信息 取票信息旅客 取票信息 取票信息 機票 D2 取票信息圖1-3 最終模型圖將1.1、1.2、2.2 和3.1放在同一個邊界內,這個系統將聯機地接收信息、信息處理訂票處理、更新訂票清單處理及取票處理;將2.3 、2 .4和3.2放在同一邊界內,以批量方式產生信息給旅客。1.2 數據字典 名字:旅客信息別名:描述:姓名、性別、工作單位、旅行時間、旅行目的地、身份證號碼定義:旅客信息=

5、姓名+性別+工作單位+身份證號碼+旅行時間+旅行目的地位置:接收信息 信息處理 訂票處理 更新訂票清單處理名字:身份證號碼別名:描述:在訂票清單中唯一被標志的關鍵城定義:身份證號碼=18個字符位置:訂票信息 訂票清單 取票信息 名字:取票通知別名:描述:取票證據之一定義:取票通知=姓名+身份證號碼+取票時間+航班位置:取票信息取票處理打印機名字:姓名別名:描述:在訂票清單中除身份證號碼外另一個被標識的城定義:姓名=10個字符位置:訂票清單 訂票信息 取票信息名字:機票別名:描述:旅客憑此來坐飛機定義:機票=日期+源地點+目的地點+航班+坐次+起飛時間位置:輸出到打印機 名字:帳單別名:描述:取

6、票憑證之一定義:帳單=姓名+身份證號碼+交款數額位置:取票信息 打印機名字:取票信息別名:取票證據描述:旅客憑此證據在飛機起飛前一天取票定義:取票信息=取票通知+賬單位置:取票信息 打印機表1-1數據字典1 為把客戶的數據要求清晰明確的表達出來,建立一個ER模型。工作單位旅行時間性別旅行社工作人員旅行目的地名字 旅客 信息處理 身份證號碼訂票/取票機票 起飛時間 坐次航班目的地點源地點日期 圖1-4 ER模型圖 IPO表系統:機票預訂系統 作者:丁霞模塊:訂票模塊 日期:編號:2 注釋:2、 IPO圖能夠方便地描繪輸入數據。對數據的處理和輸出數據之間的關系。下面用改進的IPO圖表來描述 IPO

7、表系統:機票預訂系統 作者:丁霞模塊:信息處理 日期:編號:1 注釋: 注釋: 調用:被調用:信息處理被調用:調用:訂票模塊和取票模塊輸出:取票信息輸入:姓名、性別、工作單位、身份證號碼、旅行時間、旅行目的地輸出:訂票信息取票信息輸入:訂票信息取票信息處理:盤但是訂票還是取票,并調用相應的功能模塊。處理:將旅客信息輸給本模塊,根據旅客要求安排航班,并給旅客在飛機起飛前一天取票的證據即取票通知和賬單局部數據元素;局部數據元素:系統:機票預訂系統 作者:丁霞模塊:取票模塊 日期:編號:3 注釋: 被調用:信息處理調用:輸入:姓名、身份證號碼、航班、日期輸入:機票處理:將輸入的信息傳給本模塊,校對無

8、誤后打印機票局部數據元素: 圖1-5 IPO圖表可采用VB、VF、VC、PB等算法來完成上述模塊2總體設計 經過需求分析階段的分析過程,已粗略的表現了整個設計過程。總體設計階段的基本目的是用比較抽象概括的方式確定系統如何完成預定的任務,也就是說,應該確定系統的物理配置方案,并且進而確定組成系統的每個程序的結構。因此,總體設計階段要完成兩個小階段,首先要進行系統設計,從需求分析階段的數據流圖設想完成系統功能的最佳物理方案,然后進行軟件結構設計,確定軟件有哪些模塊組成以及這些模塊之間的動態調用關系。用結構圖來描繪軟件結構將需求分析階段的數據流圖進一步細化,經分析從而得到軟件結構圖,如下: 無票 退

9、票或換票 D1訂票信息 D3 訂票清單 D2取票信息 訂票信息 訂票清單 取票信息2.4打印機2.3產生訂票信息處理2.2更新訂票清單處理2.1訂票處理 訂票 旅客 訂票 取票1.1接收信息旅行社工作人員1.2信息處理 信息 信息 清單 信息 信息 3.1取票處理 取票 取票信息3.2打印機 取票 信息 信息 機票旅客 取票信息 機票 取票信息 D2 取票信息 出錯圖2-1 數據流圖(二)由上面的數據流圖可軟件結構圖 機票預定系統 信息處理取票信息機票訂票處理系統接收信息取票處理系統 訂票信息旅客訂票信息旅客取票信息取票信息旅行目的地身份證號碼旅行時間性別姓名工作單位取票通知帳單圖2-2 軟件

10、結構圖3詳細設計詳細設計階段的關鍵任務是確定怎樣具體地實現所需要的目標系統,也就是要設計出程序的“藍圖”,除了應該保證程序的可靠行之外,使下一步即將要編的程序可讀性好,容易理解,容易測試和容易修改,維護是詳細設計階段最重要的目標。1)選擇PAD圖作為完成詳細設計的工具,根據總體設計中的數據流圖可得PAD圖為: p1.1P1 p1 p2 p1.2 cP3 p3p2.1 def p3.1 def p2.2P2p1:信息處理 p2:訂票處理 p2.3 p3.2p3:取票處理c:旅客信息 p2.4圖3-1 PAD圖2)在總體設計中得出了軟件結構設計之后,在詳細設計階段,可與使用面向數據結構地方法來設計

11、每個模塊的處理過程。選用Jackson方法來描繪數據結構。首先、得到數據結構的Jackson圖: 輸入數據結構 輸出數據結構機票訂票處理 取票處理信息處理取票信息接收信息旅客信息取票通知帳單取票信息 由數據結構的Jackson圖到處描繪程序結構的Jackson圖機票取票處理取票信息取票信息賬單訂票處理信息處理接收信息取票信息旅客信息4編碼人和計算機通信仍然必須使用人工設計的語言,也既是程序設計語言。編碼就是把軟件設計的結果翻譯成計算機可以“理解”的形式用某種程序設計語言書寫的程序。機票預定系統采用PB(Power Builder)語言來編寫程序。基本界面:W_ message 旅客信息 姓名性

12、別身份證號碼工作單位旅行時間旅行目的地航班 姓名性別身份證號碼工作單位旅行時間旅行目的地航班查詢條件姓名 身份證號碼退出檢索保存刪除增加W_ plane_ message姓名性別身份證號碼工作單位旅行時間航班起止時間機型源地點目的地坐次票價查詢條件姓名 身份證號碼退出刪除查詢圖4-1 基本界面工作前的準備工作首先在power builder中創建Adaptive server anywhere本地數據庫其次將power builder與數據庫連接即連庫接著在power builder中操作Adaptive server anywhere數據庫的表在使用數據庫表之前首先要創建表。使用power

13、builder的數據庫畫板創建表進入columns試圖工作區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表在創建

14、一個名為plane_ message的表如下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-typeChar8N

15、o(None)Passenger-startChar20No(None)Passenger-endChar20No(None)Passenger-idInteger10No(None)Passenger-priceDouble8No(None)表4-1 plane_mesage 表(一)、創建界面前的還要做的準備工作(1) 首先建數據庫,在連接數據庫。(2) 建表(3) 填入數據(4) 建立數據窗(5) 修改標題存盤dplane(6) 建立窗口(Wman)主窗口(Wman)代碼: dw- 1. Settrans Object ( SQLCA ) dw- 1. Retrieve ()(7) 窗口

16、open(打開)事件的代碼:SQLCA.DBMS=Profile String (“PB.INI”, “Database”, “DBMS ” ,“”)SQLCA. Database=Profile String (“PB.INI”, “Database”, “Data Base”, “”)SQLCA. Log ID=Profile String (“PB.INI”, “Database”, “Log ID”,“”)SQLCA. Log Pass=Profile String (“PB.INI”, “Database”, “Log Pass word”, “”)SQLCA. Server Nam

17、e=Profile String (“PB.INI”, “Database”, “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

18、.INI”, “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 = “姓名”;sle _ passenger_ name . Text = “”;me_ passenger _ number.

19、 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_ address. Text = “旅行目的地”;sle_ address. Text = “”;me_ plane id.

20、 Text = “航班”;sle_ plane id. Text = “”;cd_ save. 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

21、(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. Text = “”em_ credit. Text = “0”ELSEKw_ mes

22、sage. Set Filter (“passenger _number =”+ ls _ passenger _number +”)dw_ massage. Filter ()ll_ rows = dw _ message. Retrieve ()IF ll_ rows<>O THENsle_ passenger_ name. Text =dw_ message. Object . Passenger _ name 1em_ credit. Text =string (dw_ message. object. Credit 1)sle_ passenger_ number . S

23、et 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事件代碼為:sle_ passenger_ company . Set Fo

24、cus ()“旅行時間”編輯框(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 ()“增加”編輯框(cd_ add)的clicked事件代碼為:Open (w_

25、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 message box (“提示”其輸入姓名、性別、身份證號碼、工作單位、旅行時間

26、、旅行目的地和航班!”) 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(“提示”, “確實要刪除嗎?”Exclamation! Yes/No!) IF li_ret

27、=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_ passenger_ plane Idint li_ creditdecimal l

28、dec _ 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_ passenger_ time. text)ls_ passenger

29、_ 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”, “Passenger_ company”, “Passenger_ time”,

30、 “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 _ Message);IF SQLCA. SQL code<>

31、;0 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_ passenger_ address. Text = “”sle_

32、 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)= “”THENMessage Box( “提示”, “請輸入姓

33、名或身份證好嘛!”)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 = dw_ message_ input. Re

34、trieve ()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 . Filt

35、er () ll_ rows = dw_ message_ input. Retrieve ()IF ll_rows=0 THEN Message Box(“提示”, “無記錄!”)END IF sle_passenger_number.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 rowdw_ message_ input. Set Filter (“

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論