民航訂票系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)論文_第1頁(yè)
已閱讀1頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  學(xué)生課程設(shè)計(jì)(論文)</p><p>  題 目: 民航訂票管理系統(tǒng)開發(fā) </p><p>  學(xué)生姓名: 學(xué) 號(hào): </p><p>  所在院(系): </p><p>  專

2、 業(yè): </p><p>  班 級(jí): </p><p>  指 導(dǎo) 教 師: 職稱: </p><p><b>  年 月 日</b></p><

3、p><b>  攀枝花學(xué)院教務(wù)處制</b></p><p>  本科學(xué)生課程設(shè)計(jì)任務(wù)書</p><p>  注:任務(wù)書由指導(dǎo)教師填寫。</p><p><b>  摘要</b></p><p>  隨著社會(huì)發(fā)展的不斷進(jìn)步,民航事業(yè)的壯大,人們消費(fèi)水平的提高,乘坐民航的消費(fèi)著也越來(lái)越多。預(yù)定查詢

4、系統(tǒng)因此在各機(jī)票預(yù)定網(wǎng)點(diǎn)中的作用也越顯重要 伴隨著人們更多的使用飛機(jī)作為交通工具,國(guó)內(nèi)機(jī)票票務(wù)市場(chǎng)也在快速發(fā)展。據(jù)預(yù)測(cè),我國(guó)2006年機(jī)票票務(wù)市場(chǎng)將比2005年增長(zhǎng)10.5%,達(dá)710億元人民幣。而與此同時(shí),人們希望機(jī)票銷售手段也能相應(yīng)地有所調(diào)整,并對(duì)如何能經(jīng)濟(jì)、方便和及時(shí)地購(gòu)買到自己所需要的機(jī)票表現(xiàn)出極大的關(guān)注,于是,傳統(tǒng)的購(gòu)票方式開始面臨變革。</p><p><b>  目 錄&l

5、t;/b></p><p>  一、概念結(jié)構(gòu)設(shè)計(jì)階段9</p><p>  1.1 概念結(jié)構(gòu)設(shè)計(jì)的目標(biāo)9</p><p>  1.2 具體任務(wù)10</p><p>  1.3 階段結(jié)果10</p><p>  二、邏輯結(jié)構(gòu)設(shè)計(jì)階段14</p><p>  2.1 邏輯結(jié)構(gòu)設(shè)計(jì)階

6、段的任務(wù)和目標(biāo)14</p><p>  2.2 數(shù)據(jù)組織15</p><p>  2.2.1將E-R圖轉(zhuǎn)換為關(guān)系模型15</p><p>  2.2.2 數(shù)據(jù)庫(kù)模式定義16</p><p>  2.2.3 用戶子模式定義16</p><p>  2.2.4 數(shù)據(jù)處理17</p><p&

7、gt;  三、物理設(shè)計(jì)階段18</p><p>  3.1物理階段設(shè)計(jì)的目標(biāo)18</p><p>  3.2 物理階段設(shè)計(jì)的任務(wù)18</p><p>  3.3 數(shù)據(jù)存儲(chǔ)方面20</p><p>  四、數(shù)據(jù)庫(kù)實(shí)施階段20</p><p>  4.1 數(shù)據(jù)庫(kù)實(shí)施階段的目標(biāo)20</p><

8、p>  4.2 數(shù)據(jù)庫(kù)實(shí)施階段的任務(wù)21</p><p>  4.3 數(shù)據(jù)庫(kù)實(shí)施階段結(jié)果23</p><p>  五、數(shù)據(jù)庫(kù)測(cè)試與調(diào)試24</p><p><b>  六、總結(jié)24</b></p><p>  附錄一、 數(shù)據(jù)操縱驗(yàn)證25</p><p>  一、定義視圖驗(yàn)證如下:

9、25</p><p>  二、相關(guān)的SQL語(yǔ)句測(cè)試27</p><p>  附錄二、 建立存儲(chǔ)過(guò)程32</p><p>  附錄三、 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)定義37</p><p>  附錄四、前臺(tái)程序設(shè)計(jì)………………………………………………………………………………..</p><p><b>  概念結(jié)構(gòu)設(shè)

10、計(jì)階段</b></p><p><b>  概念結(jié)構(gòu)設(shè)計(jì)的目標(biāo)</b></p><p>  概念設(shè)計(jì)階段是進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵階段,它是將需求階段得到的用戶需求抽象為信息世界的結(jié)構(gòu),并能更好的、更準(zhǔn)確的用某一DBMS實(shí)現(xiàn)這些需求,主要通過(guò)E-R模型來(lái)描述,將需求分析階段的設(shè)計(jì)真實(shí)的、充分的反應(yīng)出來(lái),包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)處理的要求,將現(xiàn)

11、實(shí)世界的需求通過(guò)一個(gè)個(gè)真實(shí)模型表現(xiàn)出來(lái)。</p><p><b>  具體任務(wù)</b></p><p>  1.選擇中層數(shù)據(jù)流為切入點(diǎn),通常選擇實(shí)際系統(tǒng)中的子系統(tǒng);</p><p>  2.設(shè)計(jì)分E-R圖,即各子模塊的E-R圖;</p><p>  3.生成初步E-R圖,通過(guò)合并方法,做到各子系統(tǒng)實(shí)體、屬性、聯(lián)系統(tǒng)一;&

12、lt;/p><p>  4.生成全局E-R圖,消除沖突。</p><p><b>  階段結(jié)果</b></p><p>  1. 各實(shí)體及屬性:實(shí)體是客觀存在并可相互區(qū)分的事物,它可以是具體的人、物、事,也可以是抽象的概念關(guān)系,屬性是某一實(shí)體所具有的某一特性,一個(gè)實(shí)體可以由若干個(gè)屬性來(lái)刻畫。本系統(tǒng)的實(shí)體及其屬性如下圖所述:</p>&

13、lt;p>  2. 各分E-R圖:E-R圖主要是能更清晰的表達(dá)現(xiàn)實(shí)世界的信息,它提供了表示實(shí)體型、屬性和聯(lián)系的方法。</p><p>  【分ER圖-航空公司業(yè)務(wù)】</p><p>  【分ER圖-制定航班業(yè)務(wù)】</p><p>  【分ER圖-航班提供票業(yè)務(wù)】</p><p>  【分ER圖-客戶訂閱機(jī)票業(yè)務(wù)】</p>

14、<p>  3. 各分E-R圖中每個(gè)實(shí)體的屬性。</p><p>  4. 合并各分E-R圖,消除各類沖突,得到初步E-R圖,再消除不必要冗余,得到的基本E-R圖。具體實(shí)現(xiàn)如下:</p><p><b>  1).消除沖突</b></p><p>  合并分E-R圖時(shí)并不能簡(jiǎn)單地將各個(gè)分E-R圖畫到一起,而是必須著力消除各個(gè)分E-R圖

15、中的不一致,以形成一個(gè)能為全系統(tǒng)中所有的用戶共同理解和接受的統(tǒng)一的概念模型。合并分E-R圖的主要工作與關(guān)鍵是合理消除各分E-R圖的沖突,沖突主要有三類:屬性沖突、命名沖突和結(jié)構(gòu)沖突。</p><p><b>  2).消除冗余</b></p><p>  在E-R 圖中,可能存在一些冗余的數(shù)據(jù)和實(shí)體間的聯(lián)系。冗余數(shù)據(jù)和冗余聯(lián)系容易破壞數(shù)據(jù)庫(kù)的完整性,給數(shù)據(jù)庫(kù)

16、的維護(hù)增加困難,應(yīng)予以消除。但并不是所有的冗余數(shù)據(jù)與冗余聯(lián)系都必須加以消除,有時(shí)為了提高效率,不得不以冗余信息作為代價(jià)。消除冗余主要采用分析法和規(guī)范化理論。</p><p>  經(jīng)過(guò)以上分析,將所有的分E-R圖綜合成一個(gè)系統(tǒng)的總E-R圖:</p><p><b>  【業(yè)務(wù)總ER圖】</b></p><p>  合并各分E-R圖,消除屬性沖突、

17、命名沖突、結(jié)構(gòu)沖突等三類沖突,得到初步E-R圖,再消除不必要冗余,得到的基本總E-R圖如下所示:</p><p><b>  【業(yè)務(wù)總ER圖】</b></p><p>  每個(gè)實(shí)體屬性解釋如下:</p><p>  航空公司: AC(ANO, ANAME,AAD,ACN)</p><p>  客戶: CU(CNO

18、,CNAME,CAD,CAG)</p><p>  飛機(jī): PL(PNO,PTNO,SNO)</p><p>  航線: LI(LNO,SP,EP,DIS)</p><p>  航班: FL(FNO,F(xiàn)T)</p><p>  機(jī)票: BT(BNO,SPAY)</p><p><b>  邏輯

19、結(jié)構(gòu)設(shè)計(jì)階段</b></p><p>  邏輯結(jié)構(gòu)設(shè)計(jì)階段的任務(wù)和目標(biāo)</p><p>  以上的概念設(shè)計(jì)階段是獨(dú)立于任何一種數(shù)據(jù)模型的,但是邏輯設(shè)計(jì)階段就與選用的DBMS產(chǎn)品發(fā)生關(guān)系了,系統(tǒng)邏輯設(shè)計(jì)的任務(wù)就是將概念設(shè)計(jì)階段設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。具體內(nèi)容包括數(shù)據(jù)組織(將E-R圖轉(zhuǎn)換成關(guān)系模型、模型優(yōu)化、數(shù)據(jù)庫(kù)模式定義、用戶子

20、模式設(shè)計(jì))、數(shù)據(jù)處理(畫出系統(tǒng)功能模塊圖)兩大任務(wù)。</p><p> ?。?)將ER圖轉(zhuǎn)化為關(guān)系。</p><p> ?。?)對(duì)關(guān)系進(jìn)行優(yōu)化組織。</p><p><b>  數(shù)據(jù)組織</b></p><p>  將E-R圖轉(zhuǎn)換為關(guān)系模型</p><p>  實(shí)體型轉(zhuǎn)換為關(guān)系模式。實(shí)體的屬性就是

21、關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼。對(duì)于實(shí)體間的聯(lián)系則有以下不同的情況:一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體碼的組合。</p><p>  一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為n端實(shí)體的碼。

22、 一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系可以轉(zhuǎn)換為一個(gè)關(guān)系模式。與該多元聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體碼的組合,具有相同碼的關(guān)系模式可合并。</p><p>  航空公司與飛機(jī),航空公司與航線都是一對(duì)多的關(guān)系,則與N端關(guān)系模式合并,所以飛機(jī),航線的表中都含有航空公司的信息,</p

23、><p>  機(jī)場(chǎng)根據(jù)飛機(jī)與航線制定航班,屬于多對(duì)多的關(guān)系,取個(gè)實(shí)體的碼以及聯(lián)系本身的屬性轉(zhuǎn)化為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體碼的組合。即航班的表中包含飛機(jī)的信息和航線的信息,共同構(gòu)成航班關(guān)系的外碼。</p><p>  客戶訂閱航班的關(guān)系同樣也是一對(duì)多的聯(lián)系,將其轉(zhuǎn)化為獨(dú)立的關(guān)系模式,關(guān)系的屬性包含兩端的主碼構(gòu)成外碼。</p><p>  對(duì)關(guān)系模式AC,CU,PL,

24、LI,FL,BT進(jìn)行優(yōu)化設(shè)計(jì),使之滿足3NF的要求,即不存在部分函數(shù)依賴和傳遞函數(shù)依賴,減少數(shù)據(jù)的冗余。所以根據(jù)ER圖,轉(zhuǎn)化的關(guān)系如下所示:</p><p>  航空公司:(公司編號(hào)、公司名稱、公司地址、公司聯(lián)系方式)</p><p>  客戶:(客戶編號(hào)、客戶姓名、家庭住址、客戶年齡)</p><p>  飛機(jī):(飛機(jī)編號(hào)、飛機(jī)型號(hào)、座位數(shù),公司編號(hào))</p

25、><p>  航線:(航線編號(hào)、起點(diǎn)、終點(diǎn)、里程,公司編號(hào))</p><p>  航班:(航班編號(hào)、航班時(shí)間、飛機(jī)編號(hào),航線編號(hào))</p><p>  訂票:(訂票編號(hào)、所付票價(jià),客戶編號(hào),航班編號(hào))</p><p><b>  【別名表示】</b></p><p>  航空公司: AC (ANO

26、, ANAME, AAD, ACN)</p><p>  客戶: CU (CNO, CNAME, CAD, CAG)</p><p>  飛機(jī): PL (PNO, PTNO,S NO, ANO)</p><p>  航線: LI (LNO, SP, EP, DIS, ANO)</p><p>  航班: FL (FNO, FT

27、, PNO, LNO)</p><p>  機(jī)票: BT (BNO, SPAY, CNO, FNO)</p><p><b>  數(shù)據(jù)庫(kù)模式定義</b></p><p>  數(shù)據(jù)庫(kù)模式定一主要包括各模式的邏輯結(jié)構(gòu)定義、關(guān)系的完整性和安全性等內(nèi)容。一個(gè)關(guān)系模式應(yīng)當(dāng)是一個(gè)五元組R< U, D, dom, F >,而一般只將其看

28、作一個(gè)三元組R<U, F>。(關(guān)系模式圖參考附錄1)</p><p>  表2-1 數(shù)據(jù)庫(kù)模式定義表</p><p><b>  用戶子模式定義 </b></p><p>  將概念模型轉(zhuǎn)換為全局邏輯模型后,還應(yīng)該根據(jù)用戶的習(xí)慣和需求設(shè)計(jì)符合局部用戶需要的外模式用戶子模式定義即就是視圖定義,可以利用視圖的設(shè)計(jì)定義符合局部用戶需要

29、的用戶外模式,本系統(tǒng)的用戶自模式定義如下表所示:</p><p>  表2-2 視圖定義表</p><p><b>  數(shù)據(jù)處理</b></p><p>  系統(tǒng)共分為以下幾個(gè)模塊:機(jī)場(chǎng)管理子系統(tǒng),客戶子系統(tǒng),客戶訂票子系統(tǒng),客戶查詢子系統(tǒng)。查詢子系統(tǒng)又分為查詢機(jī)票,查詢航班,查詢飛機(jī)等功能。所以系統(tǒng)功能模塊圖如下所示:</p>

30、<p>  2-3 民航訂票管理系統(tǒng)功能圖</p><p><b>  物理設(shè)計(jì)階段</b></p><p><b>  物理階段設(shè)計(jì)的目標(biāo)</b></p><p>  物理設(shè)計(jì)階段的目標(biāo)是根據(jù)SQL Server2000具體的功能,設(shè)計(jì)優(yōu)化的物理數(shù)據(jù)庫(kù)結(jié)構(gòu),使得在數(shù)據(jù)庫(kù)上運(yùn)行的各種事務(wù)響應(yīng)時(shí)間最小,存儲(chǔ)空間利用

31、率高,事務(wù)吞吐量大。</p><p><b>  物理階段設(shè)計(jì)的任務(wù)</b></p><p>  物理設(shè)計(jì)階段為邏輯數(shù)據(jù)模型選取得一個(gè)最合適應(yīng)有環(huán)境的物理結(jié)構(gòu)的過(guò)程,也就是數(shù)據(jù)庫(kù)的物理設(shè)計(jì)。數(shù)據(jù)庫(kù)的物理設(shè)計(jì)通常分為兩個(gè)步驟:</p><p>  1.確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫(kù)中主要指存取方法和存儲(chǔ)結(jié)構(gòu);</p><p

32、>  2.對(duì)物理結(jié)構(gòu)進(jìn)行評(píng)價(jià),評(píng)價(jià)的重點(diǎn)是時(shí)間和空間效率。</p><p> ?。?)數(shù)據(jù)存儲(chǔ)方面:在數(shù)據(jù)庫(kù)中為各表建立索引</p><p>  (2)系統(tǒng)功能模塊:本系統(tǒng)主要包括三個(gè)子系統(tǒng)模塊,分別為航空公司管理子系統(tǒng)模塊、客戶查詢信息子系統(tǒng)和訂票信息子系統(tǒng)模塊以及客戶信息子系統(tǒng)模塊。主要實(shí)現(xiàn)如下圖所示:</p><p>  圖4-1 機(jī)場(chǎng)管理信息子模塊圖&

33、lt;/p><p>  圖4-1表示航空公司主要對(duì)飛機(jī)和航線信息做出更新操作,包括增加飛機(jī)信息,刪除飛機(jī)信息和修改飛機(jī)信息以及相應(yīng)的更新航線信息,并將更新后的數(shù)據(jù)保存,以便查詢。 </p><p>  圖4-2 客戶查詢信息子系統(tǒng)模塊圖</p><p>  圖4-2 表示客戶查詢相關(guān)信息的功能模塊,根據(jù)客戶的要求,提供航班、飛機(jī)、機(jī)票信息供客戶查閱。</p>

34、<p>  圖4-3 訂票更新子功能模塊圖</p><p>  圖4-3 訂票信息更新模塊圖表示訂票處對(duì)訂票信息的更新操作,包括對(duì)其增</p><p>  加,刪除,修改等操作,并將更新后的結(jié)果保存,以便方便查詢。</p><p>  圖 4-4 客戶子系統(tǒng)功能模塊圖</p><p><b>  數(shù)據(jù)存儲(chǔ)方面</

35、b></p><p>  為數(shù)據(jù)庫(kù)中各基本表建立的索引如下:</p><p>  由于基本表CU的主碼CNO經(jīng)常在查詢條件和連接操作的連接條件中出現(xiàn),且它們的值唯一,考慮屬性上建立唯一性索引;</p><p>  FL的主碼FNO,在查詢條件和連接操作的連接條件中出現(xiàn),且它們的值唯一,考慮屬性上建立唯一性索引;</p><p>  基本

36、表AC的屬性值幾乎不會(huì)有什么變化,更新率很低,可考慮適當(dāng)建立索引;</p><p><b>  數(shù)據(jù)庫(kù)實(shí)施階段</b></p><p>  數(shù)據(jù)庫(kù)實(shí)施階段的目標(biāo)</p><p>  通過(guò)用DBMS所提供的數(shù)據(jù)定義語(yǔ)言和其他實(shí)用程序?qū)?shù)據(jù)庫(kù)邏輯設(shè)計(jì)和物理設(shè)計(jì)結(jié)果描述出來(lái),成為DBMS可以接受的源代碼,在經(jīng)過(guò)調(diào)試后生成目標(biāo)模式。</p>

37、<p>  數(shù)據(jù)庫(kù)實(shí)施階段的任務(wù)</p><p><b>  1.建立數(shù)據(jù)庫(kù)</b></p><p>  CREATE DATABASE MAB</p><p><b>  2.建立數(shù)據(jù)表</b></p><p>  (1)建立航空公司表</p><p>  C

38、REATE TABLE AC(</p><p>  ANO CHAR(10) PRIMARY KEY,</p><p>  ANAME CHAR(20) NOT NULL,</p><p>  AAD CHAR(20),</p><p>  ACN CHAR(20)</p><p><b>  )</b

39、></p><p><b>  (2)建立客戶表</b></p><p>  CREATE TABLE CU(</p><p>  CNO CHAR(10) PRIMARY KEY,</p><p>  CNAME CHAR(20) NOT NULL,</p><p>  CAD CHAR

40、(20),</p><p><b>  CAG INT</b></p><p><b>  )</b></p><p>  (3)建立飛機(jī)信息表</p><p>  CREATE TABLE PL(</p><p>  PNO CHAR(10) PRIMARY KEY,&l

41、t;/p><p>  PTNO CHAR(10),</p><p><b>  SNO INT,</b></p><p>  ANO CHAR(10), </p><p>  FOREIGN KEY(ANO) REFERENCES AC(ANO)</p><p><b>  )</b&

42、gt;</p><p><b>  (4)建立航線表</b></p><p>  CREATE TABLE LI(</p><p>  LNO CHAR(10) PRIMARY KEY,</p><p>  SP CHAR(20),</p><p>  EP CHAR(20),</p>

43、<p><b>  DIS INT,</b></p><p>  ANO CHAR(10),</p><p>  FOREIGN KEY(ANO) REFERENCES AC(ANO)</p><p><b>  )</b></p><p>  (5)建立航班信息表</p>

44、<p>  CREATE TABLE FL(</p><p>  FNO CHAR(10) PRIMARY KEY,</p><p>  FT DATETIME NOT NULL,</p><p>  PNO CHAR(10),</p><p>  LNO CHAR(10),</p><p>  FORE

45、IGN KEY (PNO) REFERENCES PL(PNO),</p><p>  FOREIGN KEY (LNO) REFERENCES LI(LNO)</p><p><b>  )</b></p><p><b>  (6)建立機(jī)票表</b></p><p>  CREATE TABLE

46、 BT(</p><p>  BNO CHAR(10) PRIMARY KEY,</p><p>  SPATY INT,</p><p>  CNO CHAR(10),</p><p>  FNO CHAR(10),</p><p>  FOREIGN KEY (CNO) REFERENCES CU(CNO),<

47、;/p><p>  FOREIGN KEY (FNO) FEFERENCES FL(FNO)</p><p><b>  )</b></p><p><b>  4、建立視圖</b></p><p>  CREATE VIEW A1(CNO,CNAME,BNO,SPAY)</p><

48、p><b>  AS</b></p><p>  SELECT CU.CNO,CNAME,BNO,SPAY</p><p>  FROM CU,BT</p><p>  WHERE CU.CNO=BT.CNO</p><p>  CREATE VIEW A2</p><p><b>

49、;  AS</b></p><p><b>  SELECT *</b></p><p><b>  FROM PL</b></p><p>  CREATE VIEW A3</p><p><b>  AS</b></p><p><

50、b>  SELECT *</b></p><p><b>  FROM LI</b></p><p>  CREATE VIEW A4(FNO,FT,SP,EP,DIS)</p><p><b>  AS</b></p><p>  SELECT FNO,FT,SP,EP,DIS&

51、lt;/p><p>  FROM LI,FL</p><p>  WHERE FL.LNO=LI.LNO</p><p>  CREATE VIEW A5(BNO,FNO,FT,SP,EP,DIS,SPAY)</p><p><b>  AS</b></p><p>  SELECT BNO,BT.F

52、NO,FT,SP,EP,DIS,SPAY</p><p>  FROM BT,LI,FL</p><p>  WHERE BT.FNO=FL.FNO AND</p><p>  LI.LNO=FL.LNO</p><p><b>  5、建立索引</b></p><p>  CREATE UNIQ

53、UE INDEX A ON AC(ANO DESC)</p><p>  CREATE UNIQUE INDEX C ON CU(CNO DESC)</p><p>  CREATE UNIQUE INDEX P ON PL(PNO)</p><p>  CREATE UNIQUE INDEX L ON LI(LNO)</p><p>  C

54、REATE UNIQUE INDEX F ON FL(FNO)</p><p>  CREATE UNIQUE INDEX B ON BT(BNO)</p><p><b>  6、數(shù)據(jù)入庫(kù)</b></p><p>  系統(tǒng)包括客戶信息管理、飛機(jī)信息管理、航線信息管理、訂票系統(tǒng)管理等四大功能模塊,共有6張基本表,牽涉到大量數(shù)據(jù)的錄入,又由于時(shí)間

55、限制,采用事先在Excel中錄入數(shù)據(jù),然后使用SQL Server 2000數(shù)據(jù)導(dǎo)入/導(dǎo)出向?qū)Чδ?直接將數(shù)據(jù)導(dǎo)入到相應(yīng)的基本表中。當(dāng)然,附錄中也給出了各個(gè)基</p><p>  本表插入元組的存儲(chǔ)功能。</p><p>  7、建立相關(guān)的存儲(chǔ)過(guò)程</p><p>  系統(tǒng)共建立了7個(gè)存儲(chǔ)過(guò)程相應(yīng)信息如下所示:</p><p>  表3.1

56、創(chuàng)建的存儲(chǔ)過(guò)程列表:</p><p>  4.3 數(shù)據(jù)庫(kù)實(shí)施階段結(jié)果</p><p><b>  1. 關(guān)系模式說(shuō)明</b></p><p>  2. 數(shù)據(jù)定義語(yǔ)句(見附錄1)</p><p><b>  數(shù)據(jù)庫(kù)測(cè)試與調(diào)試</b></p><p>  測(cè)試與調(diào)試主要是對(duì)數(shù)據(jù)庫(kù)

57、應(yīng)用程序的實(shí)際運(yùn)行,以及執(zhí)行對(duì)數(shù)據(jù)的各種操作,測(cè)試應(yīng)用程序功能是否滿足設(shè)計(jì)要求,如果不滿足,則要對(duì)應(yīng)用程序部分進(jìn)行修改和調(diào)整,直到達(dá)到設(shè)計(jì)要求為止。</p><p><b>  總結(jié)</b></p><p>  通過(guò)本次民航訂票系統(tǒng)開發(fā)與測(cè)試,從開始的系統(tǒng)需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì),再到數(shù)據(jù)庫(kù)實(shí)施、系統(tǒng)的測(cè)試和調(diào)試,都是自立完成,能做出的系統(tǒng)的大概框架,并

58、沒(méi)有開發(fā)出具體應(yīng)用的軟件和界面,但對(duì)于項(xiàng)目(系統(tǒng))開發(fā)的大致流程有了一定的了解,為以后的系統(tǒng)的開發(fā)打下了良好的基礎(chǔ)。同時(shí)加深了對(duì)SQL SERVER 2000 的了解,基本能夠在相應(yīng)的環(huán)境下組織SQL語(yǔ)句和存儲(chǔ)過(guò)程。</p><p>  附錄一、 數(shù)據(jù)操縱驗(yàn)證</p><p>  一、定義視圖驗(yàn)證如下:</p><p>  1.建立客戶訂票信息的視圖</p&g

59、t;<p>  CREATE VIEW A1(CNO,CNAME,BNO,SPAY)</p><p>  AS SELECT CU.CNO,CNAME,BNO,SPAY</p><p>  FROM CU,BT</p><p>  WHERE CU.CNO=BT.CNO</p><p>  2.建立飛機(jī)信息視圖</p>

60、;<p>  CREATE VIEW A2</p><p>  AS SELECT *</p><p><b>  FROM PL</b></p><p>  3.建立航線信息視圖</p><p>  CREATE VIEW A3</p><p>  AS SELECT *</

61、p><p><b>  FROM LI</b></p><p>  4.建立航班全程信息視圖</p><p>  CREATE VIEW A4(FNO,FT,SP,EP,DIS)</p><p>  AS SELECT FNO,FT,SP,EP,DIS</p><p>  FROM LI,FL<

62、/p><p>  WHERE FL.LNO=LI.LNO</p><p>  5.建立機(jī)票完整信息的視圖</p><p>  CREATE VIEW A5(BNO,FNO,FT,SP,EP,DIS,SPAY)</p><p>  AS SELECT BNO,BT.FNO,FT,SP,EP,DIS,SPAY</p><p>

63、  FROM BT,LI,FL</p><p>  WHERE BT.FNO=FL.FNO AND</p><p>  LI.LNO=FL.LNO</p><p>  6.每次航班的總機(jī)票數(shù)的視圖</p><p>  CREATE VIEW JS1</p><p><b>  AS</b><

64、/p><p>  SELECT FNO,SUM(BNO),CNO</p><p><b>  FROM BT</b></p><p>  GROUP BY FNO </p><p>  二、相關(guān)的SQL語(yǔ)句測(cè)試</p><p>  2.查詢訂票的客戶信息</p><p>  S

65、ELECT CU.CNO,CNAME,BNO,SPAY</p><p>  FROM CU,BT</p><p>  WHERE CU.CNO=BT.CNO</p><p>  3、查詢航班的座位數(shù)</p><p><b>  4、插入客戶信息</b></p><p>  INSERT INTO&

66、lt;/p><p><b>  CU</b></p><p>  VALUES (010,'李華','海昌路',23)</p><p><b>  5插入飛機(jī)信息</b></p><p>  INSERT INTO</p><p><b>

67、;  PL</b></p><p>  VALUES ('010','TY-76',280,'05')</p><p><b>  6、刪除飛機(jī)信息</b></p><p><b>  DELETE</b></p><p><b>

68、;  FROM PL</b></p><p>  WHERE PNO='010'</p><p><b>  7、修改航線信息</b></p><p><b>  UPDATE LI</b></p><p>  SET SP='???#39;,EP='泉州

69、',DIS=900</p><p>  WHERE LNO='003'</p><p><b>  8、統(tǒng)計(jì)平均票價(jià)</b></p><p>  SELECT AVG(SPAY)</p><p><b>  FROM BT</b></p><p>  

70、9、查詢從長(zhǎng)沙始發(fā)的航班號(hào)和時(shí)間</p><p>  SELECT FNO,FT</p><p>  FROM FL,LI</p><p>  WHERE FL.LNO=LI.LNO AND</p><p><b>  SP='長(zhǎng)沙'</b></p><p>  10、查看航空公司

71、的所有信息</p><p>  11、查詢以蘭州為始發(fā)點(diǎn)的航班信息</p><p>  附錄二、 建立存儲(chǔ)過(guò)程</p><p>  1. 在客戶表中插入一條客戶的信息</p><p>  CREATE PROCEDURE INCU</p><p>  @P_CNO CHAR(10),</p><p&

72、gt;  @P_CNAME CHAR(20),</p><p>  @P_CAD CHAR(20),</p><p>  @P_CAG INT</p><p><b>  AS</b></p><p>  INSERT INTO CU</p><p>  VALUES(@P_CNO,@P_CNAM

73、E,@P_CAD,@P_CAG)</p><p>  exec INCU '011','李艷','西固區(qū)',22</p><p>  2. 查詢?nèi)我饪蛻舻挠喥毙畔?lt;/p><p>  CREATE PROCEDURE CU_BT</p><p>  @CU_CNAME CHAR(20)</

74、p><p><b>  AS</b></p><p>  SELECT CNAME,BNO,SP,EP,FL</p><p>  FROM CU,BT,LI,FL</p><p>  WHERE CU.CNO=BT.CNO AND</p><p>  LI.LNO=FL.LNO AND</p&g

75、t;<p>  FL.FNO=BT.FNO</p><p>  exec CU_BT '趙晶'</p><p>  3、新插入一條飛機(jī)信息</p><p>  CREATE PROCEDURE PL_IN</p><p>  @P_PNO CHAR(10),</p><p>  @P_PT

76、NO CHAR(10),</p><p>  @P_SNO INT,</p><p>  @P_ANO CHAR(10)</p><p><b>  AS </b></p><p>  INSERT INTO PL</p><p>  VALUES (@P_PNO,@P_PTNO,@P_SNO,@

77、P_ANO)</p><p>  EXEC PL_IN '020','BOIN-707','300','05'</p><p>  4、查詢起點(diǎn)為蘭州的航線信息</p><p>  CREATE PROCEDURE LZ_LI</p><p><b>  AS</

78、b></p><p>  SELECT LNO,EP</p><p><b>  FROM LI</b></p><p>  WHERE SP=’蘭州’</p><p>  5、建立刪除客戶信息的存儲(chǔ)過(guò)程</p><p>  CREATE PROCEDURE DL_CU</p>

79、<p>  @P_ACNAME CHAR(20)</p><p><b>  AS</b></p><p><b>  DELETE</b></p><p><b>  FROM CU</b></p><p>  WHERE CNAME=@P_ACNAME <

80、/p><p>  6、查詢一由任意公司生產(chǎn)的任意飛機(jī)信息</p><p>  CREATE PROCEDURE PL_SE</p><p>  @P_ANO CHAR(20)</p><p><b>  AS</b></p><p><b>  SELECT *</b></

81、p><p><b>  FORM PL</b></p><p>  WHERE ANO=@P_ANAME</p><p>  exec pl_se '南航'</p><p>  7.輸入起點(diǎn)和終點(diǎn),顯示出相應(yīng)的票價(jià)</p><p>  CREATE PROCEDURE PRI</

82、p><p>  @P_SP CHAR(20),</p><p>  @P_EP CHAR(20)</p><p><b>  AS</b></p><p>  SELECT SP,EP,SPATY</p><p>  FROM BT,FL,LI</p><p>  WHERE

83、BT.FNO=FL.FNO AND</p><p>  FL.LNO=LI.LNO AND</p><p>  SP=@P_SP AND</p><p>  EP=@P_EP EXEC PRI '長(zhǎng)沙','北京'</p><p>  8、客戶輸入起點(diǎn)和終點(diǎn),顯示出相應(yīng)的航班</p><

84、;p>  例如客戶要查詢從長(zhǎng)沙飛往北京的航班信息,則輸入長(zhǎng)沙和北京,便輸出結(jié)果</p><p>  CREATE PROCEDURE CX</p><p>  @P_SP CHAR(20),</p><p>  @P_EP CHAR(20</p><p><b>  AS</b></p><p&

85、gt;  SELECT SP,EP,BT.FNO,FT,SPATY</p><p>  FROM LI,FL,BT</p><p>  WHERE LI.LNO=FL.LNO AND</p><p>  FL.FNO=BT.FNO AND</p><p>  SP=@P_SP AND</p><p><b>

86、  EP=@P_EP</b></p><p>  EXEC CX '長(zhǎng)沙','北京'</p><p>  附錄三、 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)定義</p><p>  1、客戶(CU)基本信息表, 用于記錄客戶的信息</p><p>  附表1-1 客戶基本信息表</p><p>  

87、2、航空公司(AC)基本信息表</p><p>  附表1-2 客戶基本信息表</p><p>  3、飛機(jī)(pl)基本信息表</p><p>  附表1-2 飛機(jī)基本信息表</p><p>  4、航線(LI)基本信息表</p><p>  附表1-2 航線基本信息表</p><p>  5、

88、航班(FL)基本信息表</p><p>  附表1-2 航班基本信息表</p><p>  6、機(jī)票(BT)信息表</p><p>  附表1-2 機(jī)票基本信息表</p><p>  附錄四、 前臺(tái)程序設(shè)計(jì)</p><p><b>  前臺(tái)程序</b></p><p>  

89、//民航訂票管理系統(tǒng)開發(fā)</p><p>  //10計(jì)本2班 201010801079 楊科</p><p>  #include<iostream.h></p><p>  #include<stdio.h></p><p>  #include<string.h></p><p&g

90、t;  #include<iomanip.h></p><p>  #include<stdlib.h></p><p><b>  //數(shù)據(jù)結(jié)構(gòu)//</b></p><p>  struct airticket</p><p>  {int IDcard;</p><p&g

91、t;<b>  int num;</b></p><p><b>  int day;</b></p><p>  char time[50];</p><p>  char count[50];</p><p>  char start[50];</p><p>  cha

92、r ends[50];</p><p>  airticket *next;</p><p>  };void main();</p><p><b>  FILE *fp;</b></p><p>  airticket * head=NULL;</p><p>  void fn();//輸出

93、函數(shù)</p><p>  airticket * Create()//創(chuàng)建鏈表</p><p>  {airticket * ps;</p><p>  airticket * pEnd;</p><p>  ps=new airticket;</p><p>  cout<<"航班號(hào):&qu

94、ot;;</p><p>  cin>>ps->num;</p><p>  cout<<"日期:";</p><p>  cin>>ps->day;</p><p>  cout<<"時(shí)間: ";</p><p>  

95、cin>>ps->time;</p><p>  cout<<"身份證號(hào):";</p><p>  cin>>ps->IDcard;</p><p>  cout<<"票數(shù): ";</p><p>  cin>>ps->cou

96、nt; </p><p>  cout<<"起點(diǎn):";</p><p>  cin>>ps->start;</p><p>  cout<<"終點(diǎn):";</p><p>  cin>>ps->ends;</p><p>

97、  cout<<endl<<endl;</p><p><b>  pEnd=ps;</b></p><p>  while(ps->num!=0)</p><p><b>  {</b></p><p>  if(head==NULL)</p><

98、p><b>  head=ps;</b></p><p><b>  else</b></p><p>  pEnd->next=ps;</p><p><b>  pEnd=ps;</b></p><p>  ps=new airticket;</p>

99、<p>  cout<<"航班號(hào)(航班號(hào)位0結(jié)束輸入):";</p><p>  cin>>ps->num;</p><p>  cout<<"日期: ";</p><p>  cin>>ps->day;</p><p>  co

100、ut<<"時(shí)間: ";</p><p>  cin>>ps->time;</p><p>  cout<<"身份證號(hào):";</p><p>  cin>>ps->IDcard;</p><p>  cout<<"票數(shù): &

101、quot;;</p><p>  cin>>ps->count;</p><p>  cout<<"起點(diǎn):";</p><p>  cin>>ps->start;</p><p>  cout<<"終點(diǎn):";</p><p&

102、gt;  cin>>ps->ends;</p><p>  cout<<endl<<endl;</p><p><b>  }</b></p><p>  pEnd->next=NULL;</p><p>  return head;</p><p>

103、;<b>  }</b></p><p>  void save(airticket * head1)//保存信息</p><p><b>  {</b></p><p>  if((fp=fopen("1.txt","ab"))==NULL)</p><p>

104、;<b>  {</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  for(;head1;head1=head1->next)</p><p>  fwrite(head1,sizeof(airtick

105、et),1,fp);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void dingpiao()//功能1:訂票</p><p><b>  {</b></p><p>  airticket * head1=Cr

106、eate();</p><p>  save(head1);</p><p><b>  }</b></p><p>  void tuipiao()//功能2:退票</p><p><b>  {</b></p><p>  airticket *tail, *temp=n

107、ew airticket;</p><p>  head=NULL;</p><p>  if((fp=fopen("1.txt","rb"))==NULL)</p><p><b>  {</b></p><p>  printf("出錯(cuò),請(qǐng)檢查文件是否存在,按任意鍵返

108、回住菜單");//出錯(cuò)提示</p><p>  getchar();</p><p><b>  fn();</b></p><p><b>  }</b></p><p>  while((fread(temp,sizeof(airticket),1,fp))==1)</p>

109、<p><b>  {</b></p><p>  if(head==NULL){head=tail=temp;head->next=NULL;}</p><p><b>  else</b></p><p><b>  {</b></p><p>  te

110、mp->next=NULL;</p><p>  tail->next=temp;</p><p>  tail=temp;</p><p><b>  }</b></p><p>  temp=new airticket;</p><p><b>  }</b>

111、</p><p>  fclose(fp);</p><p><b>  int num;</b></p><p><b>  if(!head)</b></p><p><b>  {</b></p><p>  cout<<"\

112、n數(shù)據(jù)為空!\n";return;</p><p><b>  }</b></p><p>  temp=tail=head;</p><p>  cout<<"請(qǐng)輸入想退機(jī)票的航班號(hào):";</p><p><b>  cin>>num;</b>

113、</p><p>  for(;tail;tail=tail->next)</p><p><b>  {</b></p><p>  if(head->num==num){head=tail->next;}</p><p>  else if(tail->num==num)</p>

114、<p><b>  {</b></p><p>  temp->next=tail->next;</p><p>  cout<<"你已經(jīng)成功完成退票"<<endl;</p><p><b>  }</b></p><p>  te

115、mp=tail;</p><p><b>  }</b></p><p>  if((fp=fopen("1.txt","wb"))==NULL)return;</p><p>  for(;head;head=head->next)</p><p>  fwrite(hea

116、d,sizeof(airticket),1,fp);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void watch()//功能3:查看信息</p><p><b>  {</b></p><p>  airtic

117、ket *tail, *temp=new airticket;</p><p>  head=tail=NULL;</p><p>  int flag=1;</p><p>  if((fp=fopen("1.txt","rb"))==NULL)</p><p><b>  {</b&

118、gt;</p><p>  printf("出錯(cuò),請(qǐng)檢查文件是否存在,按任意鍵返回住菜單\n");//出錯(cuò)提示</p><p><b>  main();</b></p><p><b>  }</b></p><p>  while((fread(temp,sizeof(str

119、uct airticket),1,fp))==1)</p><p><b>  {</b></p><p>  if(head==NULL){head=tail=temp;head->next=NULL;}</p><p><b>  else</b></p><p><b>  {

120、</b></p><p>  temp->next=NULL;</p><p>  tail->next=temp;</p><p>  tail=temp;</p><p><b>  }</b></p><p>  cout<<endl;</p>

121、<p>  cout<<"航班號(hào):"<<tail->num<<endl;</p><p>  cout<<"日期:"<<tail->day<<endl;</p><p>  cout<<"時(shí)間(星期):"<<t

122、ail->time<<endl;</p><p>  cout<<"身份證號(hào):"<<tail->IDcard<<endl;</p><p>  cout<<"票數(shù):"<<tail->count<<endl;</p><p> 

123、 cout<<"起點(diǎn)站:"<<tail->start<<endl;</p><p>  cout<<"終點(diǎn)站:"<<tail->ends<<endl;</p><p>  temp=new airticket;</p><p><b>

124、;  }</b></p><p>  delete tail,temp;</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void search_num()//查找航班號(hào)</p><p><b>  {</b&g

125、t;</p><p><b>  int num;</b></p><p><b>  int k=1;</b></p><p>  airticket *tail, *temp=new airticket;</p><p>  head=NULL;</p><p>  if

126、((fp=fopen("1.txt","rb"))==NULL)</p><p><b>  {</b></p><p>  printf("出錯(cuò),請(qǐng)檢查文件是否存在,按任意鍵返回住菜單");//出錯(cuò)提示</p><p>  getchar();</p><p>

127、;<b>  fn();</b></p><p><b>  }</b></p><p>  while((fread(temp,sizeof(airticket),1,fp))==1)</p><p><b>  {</b></p><p>  if(head==NULL){

128、head=tail=temp;head->next=NULL;}</p><p><b>  else</b></p><p><b>  {</b></p><p>  temp->next=NULL;</p><p>  tail->next=temp;</p>

129、<p>  tail=temp;</p><p><b>  }</b></p><p>  temp=new airticket;</p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入所要查找航班號(hào):"<<endl;

130、</p><p><b>  cin>>num;</b></p><p>  if(head==NULL)</p><p><b>  {</b></p><p>  printf("沒(méi)有你所查找的信息!");fn();</p><p><

131、;b>  }</b></p><p>  for(;head;head=head->next)</p><p>  if(head->num==num)</p><p><b>  {</b></p><p>  cout<<endl<<"找到相匹配的信息&

132、quot;<<endl;</p><p>  cout<<"航班號(hào)是:"<<head->num<<","<<"日期是:"<<head->day<<",";</p><p>  cout<<"時(shí)間

133、是(星期):"<<head->time<<",";</p><p>  cout<<"身份證號(hào)是:"<<head->IDcard<<","<<"票數(shù)是:"<<head->count<<",";

134、</p><p>  cout<<"起點(diǎn)站是:"<<head->start<<","<<"終點(diǎn)站是:"<<head->ends<<endl;</p><p><b>  }</b></p><p>  

135、delete tail,temp;</p><p>  fclose(fp);</p><p>  cout<<endl<<"是否繼續(xù)?是請(qǐng)按1,否請(qǐng)按2."<<endl;</p><p><b>  cin>>k;</b></p><p><b&

136、gt;  switch(k)</b></p><p><b>  { </b></p><p><b>  case 1:</b></p><p>  search_num();break;</p><p><b>  case 2:</b></p>

137、<p>  //fn();break;</p><p>  default:cout<<endl<<"按鍵錯(cuò)誤!請(qǐng)重新按鍵!"<<endl;</p><p><b>  } </b></p><p><b>  }</b></p>&l

138、t;p>  void search_day()//查找航班日期</p><p><b>  {</b></p><p>  int day,m;</p><p>  airticket *tail, *temp=new airticket;</p><p>  head=NULL;</p><p

139、>  if((fp=fopen("1.txt","rb"))==NULL)</p><p><b>  {</b></p><p>  cout<<"出錯(cuò),請(qǐng)檢查文件是否存在,按任意鍵返回住菜單"<<endl;//出錯(cuò)提示</p><p>  getcha

140、r();</p><p><b>  fn();</b></p><p><b>  }</b></p><p>  while((fread(temp,sizeof(airticket),1,fp))==1)</p><p><b>  {</b></p>&l

141、t;p>  if(head==NULL){head=tail=temp;head->next=NULL;}</p><p><b>  else</b></p><p><b>  {</b></p><p>  temp->next=NULL;</p><p>  tail-&g

142、t;next=temp;</p><p>  tail=temp;</p><p><b>  }</b></p><p>  temp=new airticket;</p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入所要查

143、找的飛行時(shí)間:"<<endl;</p><p><b>  cin>>day;</b></p><p>  if(head==NULL)</p><p><b>  {</b></p><p>  cout<<endl;</p><p

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論