• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 機(jī)票預(yù)訂系統(tǒng)(一)

        時間:2024-05-27 12:55:17 計(jì)算機(jī)畢業(yè)論文 我要投稿
        • 相關(guān)推薦

        機(jī)票預(yù)訂系統(tǒng)(一)

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

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

        2.2系統(tǒng)數(shù)據(jù)流圖
        2.2.1總體數(shù)據(jù)流圖
                 第三章 數(shù)據(jù)庫邏輯設(shè)計(jì)

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

        3.1.2表的功能
         本程序主要實(shí)現(xiàn)航班信息的輸入和查詢,包括航班號,航空公司,始發(fā)站,中轉(zhuǎn)站,終點(diǎn)站,起飛時間,到達(dá)時間,普通艙座位數(shù)量,普通機(jī)票單價,剩余座位數(shù)及備注信息等。

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


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

        第四章  軟件功能設(shè)計(jì)

        4.1  客戶機(jī)接受信息模塊結(jié)構(gòu)圖
        4.1.1系統(tǒng)管理員添加航班信息    
         
         圖9添加航班信息
        4.1.2客戶訂票信息錄入
         
         圖10 訂票信息錄入
        4.1.3客戶退票信息錄入
         
         圖11 退票信息錄入
        4.2客戶機(jī)輸出信息模塊
        4.2.1繳款取票
         
         圖12 繳費(fèi)取票
        4.3系統(tǒng)自動更新航班信息模塊
         
         圖13 更新航班信息
         
         第五章  界面設(shè)計(jì)

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

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

        附錄1:參考文獻(xiàn)

          《PowerBuilder9.0課程設(shè)計(jì)案例精編》 魏海,黃浩等編著 中國水利水電出版社
          《PowerBuilder9.0開發(fā)人員指南》     張長富,李勻等編著 北京希望電子出版社
          《PowerBuilder9.0信息管理系統(tǒng)開發(fā)實(shí)例導(dǎo)航》何旭洪,傅立宏編著 人民郵電出版社
          《oracle 9i數(shù)據(jù)庫應(yīng)用標(biāo)準(zhǔn)教程》 李欣主編 上海科學(xué)普及出版社
        附錄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..訂購機(jī)票界面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.訂購機(jī)票界面訂票成功按鈕 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("提示:","沒有此顧客訂購機(jī)票信息!")
         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選擇機(jī)票界面查詢?nèi)亢桨嘈畔粹o 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.選擇機(jī)票界面訂購按鈕 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.選擇機(jī)票界面按目的地查找按鈕 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("提示:","沒有到達(dá)此地的航班!")
         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.航班信息維護(hù)界面w_planeinfo open()
        dw_4.settransobject (SQLCA)
        dw_4.retrieve ()

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

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

        17機(jī)票信息登記界面確定插入按鈕 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+"終點(diǎn)站不能為空!~n"
        end if
        if takeofftime = "" then
         err=err+"起飛時間不能為空!~n"
        end if
        if landingtime = "" then
         err=err+"到達(dá)時間不能為空!~n"
        end if
        if price1<=0 then
         err=err+"單價應(yīng)該大于0!~n"
        end if
        if err<>"" then
         messagebox("警告!",err)
         return
        end if

        //查詢數(shù)據(jù)庫,是否有該航班號,如果有則不能重復(fù)添加

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

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

        //執(zhí)行添加記錄操作
        /*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("已經(jīng)成功添加航班信息!~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("提示:","沒有此顧客訂購機(jī)票信息!")
         return 1
        end if

        【機(jī)票預(yù)訂系統(tǒng)(一)】相關(guān)文章:

        ASP交友系統(tǒng)設(shè)計(jì)(一)03-07

        delphi題庫系統(tǒng)(一)03-07

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

        ASP網(wǎng)絡(luò)購物系統(tǒng)(一)03-07

        消防聯(lián)動控制系統(tǒng)(一)12-26

        考務(wù)和成績管理系統(tǒng)(一)03-26

        VB+教學(xué)輔助系統(tǒng)(一)11-22

        談機(jī)電一體化系統(tǒng)中的軟件系統(tǒng)設(shè)計(jì)03-12

        探究機(jī)電一體化系統(tǒng)中的軟件系統(tǒng)設(shè)計(jì)及討論03-14

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲免费视频免在线观看 | 伊人久久大杳蕉夜夜揉夜夜爽 | 一级日本大片免费观看视频 | 宅男宅女一区二区 | 亚洲欧美日韩国产综合一区 | 午夜国产欧美理论在线播放 |