<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 機票預訂系統(一)

    時間:2024-05-27 12:55:17 計算機畢業論文 我要投稿
    • 相關推薦

    機票預訂系統(一)

    1.1項目背景
    1.1.1項目名稱    機票預訂系統
    1.1.2任務提出者 
    1.1.3開發者     
    1.1.4產品用戶.1.5機票預定系統的總目標
     在計算機網絡,數據庫和先進的開發平臺上,利用現有的軟件,配置一定的硬件,開發一個具有開放體系結構的、易擴充的、易維護的、具有良好人機交互界面的機票預定系統,實現航空公司的機票銷售的自動化的計算機系統,為企業的決策層提供準確、精細、迅速的機票銷售信息。1.2編寫目的
     一個正常營運的航空公司需要管理所擁有的飛機、航線的設置,客戶的信息等,更重要的還要提供票務管理。面對各種不同種類的信息,需要開發有效的程序結構來管理各種信息。
     而在前一階段(概要設計說明書)中,已解決了實現該系統需求的程序模塊設計問題。包括如何把該系統劃分成若干個模塊、決定各個模塊之間的接口、模塊之間傳遞的信息,以及數據結構、模塊結構的設計等。在以下的詳細設計報告中將對在本階段中對系統所做的所有詳細設計進行說明。
     在本階段中,確定應該如何具體地實現所要求的系統,從而在編碼階段可以把這個描述直接翻譯成用具體的程序語言書寫的程序。主要的工作有:根據在《需求分析說明書》中所描述的數據、功能、運行、性能需求,并依照《概要設計說明書》所確定的處理流程、總體結構和模塊外部設計,設計軟件系統的結構設計、逐個模塊的程序描述(包括各模塊的功能、性能、輸入、輸出、算法、程序邏輯、接口等等),解決如何
     
     1. 接受:航班信息,旅客信息及取票通知和賬單;
     2. 輸出:取票通知和賬單及機票;
     3. 網絡輸出和加密,輸入和解密;
     4. 分辨信息的種類并采取相應的處理步驟;
     5. 判斷信息的正誤并采取相應的處理步驟;
     6. 進行數據庫的查詢、修改工作;
     7. 接受并判斷錯誤,輸出相應的出錯消息;
     
     詳細設計文檔是進行系統編碼的依據,編寫本文檔的目的在于為程序員的編碼提供詳細的說明,使程序員能根據詳細設計的框圖進行正確的編碼。本文檔的讀者對象為程序員,系統設計人員,航空公司管理人員以及參加評審的專家們。
    1.3 軟件定義
     在數據庫建表中,其中:flightnumber為航班號,airlinecompany為航空公司,startstation為始發站,middlestation為中轉站,endstation為終點站,takeofftime為起飛時間,landingtime為到達時間,price1為普通機票單價,memo為備注,flag記為是否售出的標志符,no1為普通艙座位數量,rest為剩余座位數量,buyername為客戶姓名,buyertel為聯系電話,buyeridnum為身份證號碼,contractno為訂單號,bookdate為訂票日期,cancledate為退票日期,buyeremail為客戶郵箱。
    1.4 開發環境
    1.4.1 操作系統
     Windows 98,Windows Me,Windows Me,Windows NT,Windows 2000 Professional,Windows 2000 Sever,Windows XP
    1.4.2 硬件要求
     PC機,小型機,工作站,服務器,內存512M以上,硬盤10G以上
    1.4.3 軟件要求
     應配置SQL Sever,Oracle或其他數據庫
    1.4.5 開發工具
     PowerBuilder  9.0
      第二章  需求分析

    2.1功能要求
    班機基本信息的管理;
    航班信息的管理;
    旅客預定機票、取消預約、付款取票、退票的管理;
    查詢航班信息、航班預定情況、旅客信息,計算航班滿座率。
    統計營業收入。

    2.2系統數據流圖
    2.2.1總體數據流圖
             第三章 數據庫邏輯設計

    3.1 planeticket表設計說明及描述
    3.1.1 定義表及關鍵字
    表1 planeticket
    字段名 數據類型 含義說明 空值情況 
    flightnumber Varchar 航班號 主關鍵字 
     airlinecompany Varchar 航空公司 不能為空 
     startstation Varchar 起飛城市 不能為空 
     middlestation Varchar 中轉城市 可以為空 
     endstation Varchar 到達城市 不能為空 
    takeofftime Time 起飛時間 不能為空 
     landingtime Time 到達時間 不能為空 
     no1 Int 普通艙座位數量 不能為空 
    price1 Long 普通機票單價 不能為空 
    rest int 剩余座位數 不能為空 
    memo Varchar 備        注 可以為空 

    3.1.2表的功能
     本程序主要實現航班信息的輸入和查詢,包括航班號,航空公司,始發站,中轉站,終點站,起飛時間,到達時間,普通艙座位數量,普通機票單價,剩余座位數及備注信息等。

    3.2 buyticket表設計說明及描述
    3.2.1定義表及關鍵字
    表2 buyticket
    字段名 數據類型 含義說明 空值情況 
    flightnumber Varchar 航班號 主關鍵字 
     airlinecompany Varchar 航空公司 不能為空 
     startstation Varchar 起飛城市 不能為空 
     middlestation Varchar 中轉城市 可以為空 
    endstation Varchar 到達城市 不能為空 
    takeofftime Time 起飛時間 不能為空 
     landingtime Time 到達時間 不能為空 
     Number1 Int 普通艙座位數量 不能為空 
     Price1 Long 普通機票單價 不能為空 
    Rest Int 剩余座位數 不能為空 
    memo Varchar 備注 系統調入 
    buyername Varchar 客戶姓名 不能為空 
    buyertel Int 聯系電話 不能為空 
     buyeridnumber Int 身份證號碼 不能為空 
     buyeremail Varchar 郵箱 可以為空 
     contractno Varchar 訂單號 不能為空 
    bookdate Data 訂票日期 不能為空 
    cancledate data 退票日期 不能為空 


    3.2.2 表的功能
      本程序主要實現旅客信息的輸入和查詢,包括航班號,航空公司,始發站,中轉站,終點站,起飛時間,到達時間,普通艙座位數量,普通機票單價,剩余座位數,備注信息,客戶姓名,聯系電話,身份證號碼,郵箱,訂單號,訂票日期,退票日期等

    第四章  軟件功能設計

    4.1  客戶機接受信息模塊結構圖
    4.1.1系統管理員添加航班信息    
     
     圖9添加航班信息
    4.1.2客戶訂票信息錄入
     
     圖10 訂票信息錄入
    4.1.3客戶退票信息錄入
     
     圖11 退票信息錄入
    4.2客戶機輸出信息模塊
    4.2.1繳款取票
     
     圖12 繳費取票
    4.3系統自動更新航班信息模塊
     
     圖13 更新航班信息
     
     第五章  界面設計

    5.1登錄界面
     
     圖14 登錄界面
    5.2主菜單界面
     
     圖15 主菜單界面
    5.3登記航班信息界面
     
     圖16 登記航班信息界面
    5.4訂購機票界面
     
     圖17 訂票界面
    5.5取消訂票界面
     
     圖18 退票界面
    5.6 航班信息維護界面
     
     圖19 更新航班信息界面
    5.7 計算航班滿座率界面
     
     圖20 滿座率計算
    5.8 統計營業收入界面
     
     圖21 統計營業收入界面
     
     
     

     第六章 課程設計心得體會
     這次課程設計做的比較匆忙,也可以說是畢業設計的一個前瞻。
     我用的是PowerBuilder 9.0來設計的,對該軟件還不是很熟悉,尤其是Powerscript語言以及它所自帶的函數,不得甚解,尤其是當某些功能,譬如說刪除,插入我們可以直接用deleterow(0),insertrow()來實現,還比較方便。
     總的來說,數據庫設計與軟件設計有異曲同工之妙,唯一的不同之處就是軟件有一個生命周期。從另一方面講,數據庫設計是軟件設計的基礎,脫離了數據庫設計軟件設計是沒有意義的,而單純的數據庫設計并沒有什么實際意義。
     該軟件需要改進的地方還有很多,譬如說界面不是很友好,數據庫表的設計有點不符合BCNF范式,每次只能實現一次操作訂購一張票等等。

    附錄1:參考文獻

      《PowerBuilder9.0課程設計案例精編》 魏海,黃浩等編著 中國水利水電出版社
      《PowerBuilder9.0開發人員指南》     張長富,李勻等編著 北京希望電子出版社
      《PowerBuilder9.0信息管理系統開發實例導航》何旭洪,傅立宏編著 人民郵電出版社
      《oracle 9i數據庫應用標準教程》 李欣主編 上海科學普及出版社
    附錄2:代碼
    1.planeticket  open()
    /*SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
    SQLCA.LogPass ="manager"
    SQLCA.ServerName = "LAB_b14"
    SQLCA.LogId = "system"
    SQLCA.AutoCommit = false
    //SQLCA.DBParm = "PBCatalogOwner='scott'"*/


    // Profile fly
    SQLCA.DBMS = "ODBC"
    SQLCA.AutoCommit = False
    SQLCA.DBParm = "ConnectString='DSN=plane;UID=sa;PWD=sa'"

    connect Using SQLCA;
    //open (w_main1)
    //open(w_planeticket)
    //open(w_chooseplane)
    //open(w_buyticket)
    open(w_main)

    2..訂購機票界面W_buyticket  open()
    long rn
    string num
    dw_3.settransobject (sqlca)
    dw_3.retrieve()
    dw_3.insertrow(0)
    dw_3.ScrollToRow(rn)
    dw_3.object.bookdate[1]=today()

    String flightnumber,airlinecompany,startstation,middlestation,endstation
    int takeofftime,landingtime, price1,rest
    String memo
    num=message.stringparm
    select airlinecompany,startstation,middlestation,endstation,takeofftime,landingtime,memo,
     price1
    into :airlinecompany,:startstation,:middlestation,:endstation,:takeofftime,:landingtime,:memo,
    :price1
    from planeticket
    where flightnumber=:num
    Using sqlca;

    dw_3.object.flightnumber[1]=num
    dw_3.object.airlinecompany[1]=airlinecompany
    dw_3.object.startstation[1]=startstation
    dw_3.object.middlestation[1]=middlestation
    dw_3.object.endstation[1]=endstation
    dw_3.object.takeofftime[1]=takeofftime
    dw_3.object.landingtime[1]=landingtime
    dw_3.object.price1[1]=price1
    //dw_3.object.price2[1]=price2
    dw_3.object.memo[1]=memo

    3.訂購機票界面訂票成功按鈕 clicked()
    dw_3.update()

    string num
    num=dw_3.GetitemString(1,"flightnumber")
    Update buyticket
    set flag=1
    where flightnumber=:num
    using sqlca;

    update planeticket

    set rest=rest-1
    where flightnumber=:num

    using sqlca;
    close(parent)

    4.退票界面w_cancleticket  open()
    // Profile xuwei
    /*SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
    SQLCA.LogPass = 'manager'
    SQLCA.ServerName = "lab_b14"
    SQLCA.LogId = "system"
    SQLCA.AutoCommit = true
    //SQLCA.DBParm = "PBCatalogOwner='scott'"*/

    // Profile fly
    SQLCA.DBMS = "ODBC"
    SQLCA.AutoCommit = False
    SQLCA.DBParm = "ConnectString='DSN=plane;UID=sa;PWD=sa'"

    connect using sqlca;

    5.退票界面查詢按鈕 clicked()
    string filterStr
    string name
    integer rc
    name=sle_buyername.text
    filterStr="buyername='"+name+"'"
    dw_4.SetTransobject(sqlca)

    dw_4.setFilter(filterStr)

    dw_4.Filter()
    dw_4.Retrieve()

    rc=dw_4.getrow()

     if rc<=0 then
     messagebox("提示:","沒有此顧客訂購機票信息!")
     return 1
    end if
     
    6.退票界面退票按鈕 clicked()
    string num
          num=dw_4.GetitemString(1,"flightnumber")
      update planeticket

          set rest=rest+1
          where flightnumber=:num

          using sqlca;
      
      dw_4.deleterow(0)
      dw_4.update()
          dw_4.retrieve()
      
    messagebox("提示:","退票成功!")

    7選擇機票界面查詢全部航班信息按鈕 clicked()
    disconnect using sqlca;
    // Profile xuwei
    /*SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
    SQLCA.LogPass = 'manager'
    SQLCA.ServerName = "lab_b14"
    SQLCA.LogId = "system"
    SQLCA.AutoCommit = true*/

    // Profile fly
    SQLCA.DBMS = "ODBC"
    SQLCA.AutoCommit = False
    SQLCA.DBParm = "ConnectString='DSN=plane;UID=sa;PWD=sa'"


    connect using sqlca;

    string filterStr
    filterStr="flag=0"

    dw_1.settransobject(sqlca)
    dw_1.setfilter(filterStr)
    dw_1.filter()
    dw_1.retrieve ()

    8.選擇機票界面訂購按鈕 clicked()
    int i
    string selNum
    for i=1 to dw_1.getrow()
     if dw_1.GetItemNumber(i,"flag")=1 then
      selNum=dw_1.GetitemString(i,"flightnumber")
        openwithparm(w_buyticket,selNum)
    //  close(w_chooseplane)
      return
      end if
     next
     
    9.選擇機票界面按目的地查找按鈕 clicked()
    open(w_findplane)

    10.按目的地查找界面w_findplane open()
    // Profile xuwei
    SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
    SQLCA.LogPass = 'manager'
    SQLCA.ServerName = "lab_b14"
    SQLCA.LogId = "system"
    SQLCA.AutoCommit = true
    //SQLCA.DBParm = "PBCatalogOwner='scott'"

    connect using sqlca;

    11.按目的地查找界面查找按鈕 clicked()
    string filterStr
    string name
    integer rc
    name=sle_station.text
    filterStr="endstation='"+name+"'"
    dw_5.SetTransobject(sqlca)

    dw_5.setFilter(filterStr)

    dw_5.Filter()
    dw_5.Retrieve()

    rc=dw_5.getrow()

     if rc<=0 then
     messagebox("提示:","沒有到達此地的航班!")
     return 1
    end if

    12.登錄界面登錄按鈕 clicked()
    string pwd,username

    username=sle_name1.text
    pwd=sle_pwd.text

    SQLCA.LogId = username
    SQLCA.LogPass =pwd

    connect using sqlca;
    if sqlca.sqlcode=-1 then
     messageBox("口令錯誤,請重新輸入!",SQLCA.SQLErrText)
     close(parent)
    else
     open(w_main)
    end if

    13航班信息查詢界面w_plane1 open()
    disconnect using sqlca;
    // Profile xuwei
    /*SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
    SQLCA.LogPass = 'manager'
    SQLCA.ServerName = "lab_b14"
    SQLCA.LogId = "system"
    SQLCA.AutoCommit = true*/

    // Profile fly
    SQLCA.DBMS = "ODBC"
    SQLCA.AutoCommit = False
    SQLCA.DBParm = "ConnectString='DSN=plane;UID=sa;PWD=sa'"


    connect using sqlca;
    dw_7.settransobject(sqlca)
    dw_7.retrieve ()

    14.航班信息維護界面w_planeinfo open()
    dw_4.settransobject (SQLCA)
    dw_4.retrieve ()

    15.航班信息維護界面添加按鈕 clicked()
    long net
    net=dw_4.insertrow(0)
    dw_4.ScrollToRow(net)

    16.航班信息維護界面刪除按鈕 clicked()
    dw_4.deleterow(0)
    dw_4.update()
    dw_4.retrieve()

    17機票信息登記界面確定插入按鈕 clicked()
    int num
    String flightnumber,airlinecompany,startstation,middlestation,endstation,memo,takeofftime,landingtime,no1
    String err

    double price1
    string mysql

    /*SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
    SQLCA.LogPass ="manager"
    SQLCA.ServerName = "lab_b14"
    SQLCA.LogId = "system"
    SQLCA.AutoCommit = true
    //SQLCA.DBParm = "PBCatalogOwner='scott'"*/

    // Profile fly
    SQLCA.DBMS = "ODBC"
    SQLCA.AutoCommit = False
    SQLCA.DBParm = "ConnectString='DSN=plane;UID=sa;PWD=sa'"


    connect Using SQLCA;

     


    flightnumber = sle_number.text
    airlinecompany = sle_airlinecompany.text
    startstation = sle_startstation.text
    middlestation = sle_middlestation.text
    endstation = sle_endstation.text
    memo=mle_memo.text
    takeofftime = sle_takeofftime.text
    landingtime = sle_landingtime.text
    no1=sle_no1.text
    em_price1.getData(price1)


    err=""
    if flightnumber="" then
      err=err+"航班號不能為空!~n"
    end if
    if airlinecompany = "" then
     err=err+"航空公司不能為空!~n"
    end if
    if startstation = "" then
     err=err+"起始站不能為空!~n"
    end if
    if endstation = "" then
     err=err+"終點站不能為空!~n"
    end if
    if takeofftime = "" then
     err=err+"起飛時間不能為空!~n"
    end if
    if landingtime = "" then
     err=err+"到達時間不能為空!~n"
    end if
    if price1<=0 then
     err=err+"單價應該大于0!~n"
    end if
    if err<>"" then
     messagebox("警告!",err)
     return
    end if

    //查詢數據庫,是否有該航班號,如果有則不能重復添加

    select count(flightnumber)
    into :num
    from planeticket
    where flightnumber=:flightnumber
    using sqlca;

    if num>0 then
     messagebox("警告","航班號不能重復")
     return
    end if

    //執行添加記錄操作
    /*mysql = "INSERT INTO planeticket(flightnumber,airlinecompany,startstation,middlestation,endstation,takeofftime,landingtime,price1,price2,memo)  VALUES('"+flightnumber+"','"+airlinecompany+"','"+startstation+"','"+middlestation+"','"+endstation+"','"+takeofftime+"','"+landingtime+"','"+price1+"','"+price2+"','"+memo+"')"
    execute IMMEDIATE :mysql using sqlca;*/
    INSERT INTO planeticket
                (flightnumber,
         airlinecompany,
         startstation,
         middlestation,
         endstation,
         takeofftime,
         landingtime,
         price1,
         no1,
         memo
         )
    VALUES(      :flightnumber,
         :airlinecompany,
         :startstation,
         :middlestation,
         :endstation,
         :takeofftime,
         :landingtime,
         :price1,
         :no1,
         :memo 
        
         )
    USING SQLCA;
    if sqlca.sqlcode<>0 then
      messagebox("",sqlca.sqlerrtext)
    //else
    //    messagebox("已經成功添加航班信息!~n")
    //  return
    end if

    //disconnect using SQLCA;

    18.旅客訂票信息界面查詢按鈕 clicked()
    string filterStr
    string name
    integer rc
    name=sle_buyername.text
    filterStr="buyername='"+name+"'"
    dw_6.SetTransobject(sqlca)

    dw_6.setFilter(filterStr)

    dw_6.Filter()
    dw_6.Retrieve()

    rc=dw_6.getrow()

     if rc<=0 then
     messagebox("提示:","沒有此顧客訂購機票信息!")
     return 1
    end if

    【機票預訂系統(一)】相關文章:

    ASP交友系統設計(一)03-07

    delphi題庫系統(一)03-07

    ASP人才招聘系統(一)03-07

    ASP網絡購物系統(一)03-07

    消防聯動控制系統(一)12-26

    考務和成績管理系統(一)03-26

    VB+教學輔助系統(一)11-22

    談機電一體化系統中的軟件系統設計03-12

    探究機電一體化系統中的軟件系統設計及討論03-14

    主站蜘蛛池模板: 亚洲精品视频免费观看| 99精品国产在热久久无毒不卡| 亚洲国产精品无码av| 国产精品国产三级国产| 国产成人精品免费视频网页大全| 亚洲精品人成无码中文毛片| 国产精品无码不卡一区二区三区| 国产偷亚洲偷欧美偷精品| 国产在线精品一区二区中文| 无码久久精品国产亚洲Av影片| 亚洲av无码成人精品区| 国模和精品嫩模私拍视频| 国产99精品一区二区三区免费| 99久久免费国产精精品| 色欲精品国产一区二区三区AV | 国自产偷精品不卡在线| 亚洲精品成人片在线观看精品字幕 | 国产精品无码免费播放| 久久国产精品-国产精品| 69堂国产成人精品视频不卡 | 无码国产精品一区二区免费3p| 无码人妻一区二区三区精品视频| 精品久久久久久无码国产| 国产精品自产拍在线观看花钱看| 国产av无码专区亚洲国产精品| 影音先锋国产精品国语对白| 青青青青久久精品国产| 四虎永久在线精品国产免费 | 成人国内精品久久久久影院VR | 国产精品狼人久久久久影院| 国产99久久久国产精品~~牛| 国产成人精品无人区一区| 国产成人综合久久精品尤物| 国产福利电影一区二区三区久久久久成人精品综合 | 久久久91人妻无码精品蜜桃HD | 精品欧美一区二区在线看片| 精品国产一区二区三区久久蜜臀| 久久免费国产精品| 亚洲国产精品综合久久网络| 亚洲一区二区精品视频| 日韩人妻精品无码一区二区三区|