民航訂票系統數據庫課程設計論文_第1頁
已閱讀1頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  學生課程設計(論文)</p><p>  題 目: 民航訂票系統開發(fā) </p><p>  學生姓名: </p><p>  學 號: </p><p>  所在院(系

2、): 數學與計算機學院 </p><p>  專 業(yè): 計算機科學與技術 </p><p>  班 級: 2013級計算機科學與技術 </p><p>  2015年 6 月 25 日</p><p>  本科學生課程設計任務書</p><p> 

3、 注:任務書由指導教師填寫。</p><p>  課程設計(論文)指導教師成績評定表</p><p><b>  摘要</b></p><p>  隨著社會發(fā)展的不斷進步,民航事業(yè)的壯大,人們消費水平的提高,乘坐民航的消費著也越來越多。預定查詢系統因此在各機票預定網點中的作用也越顯重要 伴隨著人們更多的使用飛機作為交通工具,國內機票票

4、務市場也在快速發(fā)展。據預測,我國2006年機票票務市場將比2005年增長10.5%,達710億元人民幣。而與此同時,人們希望機票銷售手段也能相應地有所調整,并對如何能經濟、方便和及時地購買到自己所需要的機票表現出極大的關注,于是,傳統的購票方式開始面臨變革。</p><p><b>  目 錄</b></p><p>  一、概念結構設計階段9</p&g

5、t;<p>  1.1 概念結構設計的目標9</p><p>  1.2 具體任務10</p><p>  1.3 階段結果10</p><p>  二、邏輯結構設計階段14</p><p>  2.1 邏輯結構設計階段的任務和目標14</p><p>  2.2 數據組織15</p&

6、gt;<p>  2.2.1將E-R圖轉換為關系模型15</p><p>  2.2.2 數據庫模式定義16</p><p>  2.2.3 用戶子模式定義16</p><p>  2.2.4 數據處理17</p><p>  三、物理設計階段18</p><p>  3.1物理階段設計的目標

7、18</p><p>  3.2 物理階段設計的任務18</p><p>  3.3 數據存儲方面20</p><p>  四、數據庫實施階段20</p><p>  4.1 數據庫實施階段的目標20</p><p>  4.2 數據庫實施階段的任務21</p><p>  4.3

8、數據庫實施階段結果23</p><p>  五、數據庫測試與調試24</p><p><b>  六、總結24</b></p><p>  附錄一、 數據操縱驗證25</p><p>  一、定義視圖驗證如下:25</p><p>  二、相關的SQL語句測試27</p>

9、<p>  附錄二、 建立存儲過程32</p><p>  附錄三、 數據庫邏輯結構定義37</p><p>  附錄四、前臺程序設計………………………………………………………………………………..</p><p><b>  概念結構設計階段</b></p><p><b>  概念結構設計

10、的目標</b></p><p>  概念設計階段是進行數據庫設計的關鍵階段,它是將需求階段得到的用戶需求抽象為信息世界的結構,并能更好的、更準確的用某一DBMS實現這些需求,主要通過E-R模型來描述,將需求分析階段的設計真實的、充分的反應出來,包括事物和事物之間的聯系,能滿足用戶對數據處理的要求,將現實世界的需求通過一個個真實模型表現出來。</p><p><b> 

11、 具體任務</b></p><p>  1.選擇中層數據流為切入點,通常選擇實際系統中的子系統;</p><p>  2.設計分E-R圖,即各子模塊的E-R圖;</p><p>  3.生成初步E-R圖,通過合并方法,做到各子系統實體、屬性、聯系統一;</p><p>  4.生成全局E-R圖,消除沖突。</p>&

12、lt;p><b>  階段結果</b></p><p>  1. 各實體及屬性:實體是客觀存在并可相互區(qū)分的事物,它可以是具體的人、物、事,也可以是抽象的概念關系,屬性是某一實體所具有的某一特性,一個實體可以由若干個屬性來刻畫。本系統的實體及其屬性如下圖所述:</p><p>  2. 各分E-R圖:E-R圖主要是能更清晰的表達現實世界的信息,它提供了表示實體型

13、、屬性和聯系的方法。</p><p>  【分ER圖-航空公司業(yè)務】</p><p>  【分ER圖-制定航班業(yè)務】</p><p>  【分ER圖-航班提供票業(yè)務】</p><p>  【分ER圖-客戶訂閱機票業(yè)務】</p><p>  3. 各分E-R圖中每個實體的屬性。</p><p> 

14、 4. 合并各分E-R圖,消除各類沖突,得到初步E-R圖,再消除不必要冗余,得到的基本E-R圖。具體實現如下:</p><p><b>  1).消除沖突</b></p><p>  合并分E-R圖時并不能簡單地將各個分E-R圖畫到一起,而是必須著力消除各個分E-R圖中的不一致,以形成一個能為全系統中所有的用戶共同理解和接受的統一的概念模型。合并分E-R圖的主要工作與

15、關鍵是合理消除各分E-R圖的沖突,沖突主要有三類:屬性沖突、命名沖突和結構沖突。</p><p><b>  2).消除冗余</b></p><p>  在E-R 圖中,可能存在一些冗余的數據和實體間的聯系。冗余數據和冗余聯系容易破壞數據庫的完整性,給數據庫的維護增加困難,應予以消除。但并不是所有的冗余數據與冗余聯系都必須加以消除,有時為了提高效率,不得不以

16、冗余信息作為代價。消除冗余主要采用分析法和規(guī)范化理論。</p><p>  經過以上分析,將所有的分E-R圖綜合成一個系統的總E-R圖:</p><p><b>  【業(yè)務總ER圖】</b></p><p>  合并各分E-R圖,消除屬性沖突、命名沖突、結構沖突等三類沖突,得到初步E-R圖,再消除不必要冗余,得到的基本總E-R圖如下所示:<

17、;/p><p><b>  【業(yè)務總ER圖】</b></p><p>  每個實體屬性解釋如下:</p><p>  航空公司:AC(ANO, ANAME,AAD,ACN)</p><p>  客戶: CU(CNO,CNAME,CAD,CAG)</p><p>  飛機: PL(PNO,PTN

18、O,SNO)</p><p>  航線: LI(LNO,SP,EP,DIS)</p><p>  航班: FL(FNO,FT)</p><p>  機票: BT(BNO,SPAY)</p><p><b>  邏輯結構設計階段</b></p><p>  邏輯結構設計階段的任務和目標&

19、lt;/p><p>  以上的概念設計階段是獨立于任何一種數據模型的,但是邏輯設計階段就與選用的DBMS產品發(fā)生關系了,系統邏輯設計的任務就是將概念設計階段設計好的基本E-R圖轉換為選用DBMS產品所支持的數據模型相符合的邏輯結構。具體內容包括數據組織(將E-R圖轉換成關系模型、模型優(yōu)化、數據庫模式定義、用戶子模式設計)、數據處理(畫出系統功能模塊圖)兩大任務。</p><p> ?。?)將E

20、R圖轉化為關系。</p><p>  (2)對關系進行優(yōu)化組織。</p><p><b>  數據組織</b></p><p>  2.2.1將E-R圖轉換為關系模型</p><p>  實體型轉換為關系模式。實體的屬性就是關系的屬性,實體的碼就是關系的碼。對于實體間的聯系則有以下不同的情況:一個m:n聯系轉換為一個

21、關系模式。與該聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,而關系的碼為各實體碼的組合。</p><p>  一個1:n聯系可以轉換為一個獨立的關系模式,也可以與n端對應的關系模式合并。如果轉換為一個獨立的關系模式,則與該聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,而關系的碼為n端實體的碼。 一個1:1聯系可以轉換為一個獨立的關系模式,也可以與任意一端對應的關系模式合并。三個或三

22、個以上實體間的一個多元聯系可以轉換為一個關系模式。與該多元聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,而關系的碼為各實體碼的組合,具有相同碼的關系模式可合并。</p><p>  航空公司與飛機,航空公司與航線都是一對多的關系,則與N端關系模式合并,所以飛機,航線的表中都含有航空公司的信息,</p><p>  機場根據飛機與航線制定航班,屬于多對多的關系,取個實體的碼以及聯

23、系本身的屬性轉化為關系的屬性,而關系的碼為各實體碼的組合。即航班的表中包含飛機的信息和航線的信息,共同構成航班關系的外碼。</p><p>  客戶訂閱航班的關系同樣也是一對多的聯系,將其轉化為獨立的關系模式,關系的屬性包含兩端的主碼構成外碼。</p><p>  對關系模式AC,CU,PL,LI,FL,BT進行優(yōu)化設計,使之滿足3NF的要求,即不存在部分函數依賴和傳遞函數依賴,減少數據的

24、冗余。所以根據ER圖,轉化的關系如下所示:</p><p>  航空公司:(公司編號、公司名稱、公司地址、公司聯系方式)</p><p>  客戶:(客戶編號、客戶姓名、家庭住址、客戶年齡)</p><p>  飛機:(飛機編號、飛機型號、座位數,公司編號)</p><p>  航線:(航線編號、起點、終點、里程,公司編號)</p>

25、;<p>  航班:(航班編號、航班時間、飛機編號,航線編號)</p><p>  訂票:(訂票編號、所付票價,客戶編號,航班編號)</p><p><b>  【別名表示】</b></p><p>  航空公司:AC (ANO, ANAME, AAD, ACN)</p><p>  客戶: CU (C

26、NO, CNAME, CAD, CAG)</p><p>  飛機: PL (PNO, PTNO, SNO, ANO)</p><p>  航線: LI (LNO, SP, EP, DIS, ANO)</p><p>  航班: FL (FNO, FT, PNO, LNO)</p><p>  機票: BT (BNO, SPA

27、Y, CNO, FNO)</p><p>  2.2.2數據庫模式定義</p><p>  數據庫模式定一主要包括各模式的邏輯結構定義、關系的完整性和安全性等內容。一個關系模式應當是一個五元組R< U, D, dom, F >,而一般只將其看作一個三元組R<U, F>。(關系模式圖參考附錄1)</p><p>  表2-1 數據庫模

28、式定義表</p><p>  2.2.3用戶子模式定義 </p><p>  將概念模型轉換為全局邏輯模型后,還應該根據用戶的習慣和需求設計符合局部用戶需要的外模式用戶子模式定義即就是視圖定義,可以利用視圖的設計定義符合局部用戶需要的用戶外模式,本系統的用戶自模式定義如下表所示:</p><p>  表2-2 視圖定義表</p><p>&l

29、t;b>  2.2.4數據處理</b></p><p>  系統共分為以下幾個模塊:機場管理子系統,客戶子系統,客戶訂票子系統,客戶查詢子系統。查詢子系統又分為查詢機票,查詢航班,查詢飛機等功能。所以系統功能模塊圖如下所示:</p><p>  2-3 民航訂票管理系統功能圖</p><p><b>  物理設計階段</b>&

30、lt;/p><p><b>  物理階段設計的目標</b></p><p>  物理設計階段的目標是根據SQL Server2000具體的功能,設計優(yōu)化的物理數據庫結構,使得在數據庫上運行的各種事務響應時間最小,存儲空間利用率高,事務吞吐量大。</p><p><b>  物理階段設計的任務</b></p>&l

31、t;p>  物理設計階段為邏輯數據模型選取得一個最合適應有環(huán)境的物理結構的過程,也就是數據庫的物理設計。數據庫的物理設計通常分為兩個步驟:</p><p>  1.確定數據庫的物理結構,在關系數據庫中主要指存取方法和存儲結構;</p><p>  2.對物理結構進行評價,評價的重點是時間和空間效率。</p><p>  (1)數據存儲方面:在數據庫中為各表建立

32、索引</p><p> ?。?)系統功能模塊:本系統主要包括三個子系統模塊,分別為航空公司管理子系統模塊、客戶查詢信息子系統和訂票信息子系統模塊以及客戶信息子系統模塊。主要實現如下圖所示:</p><p>  圖4-1 機場管理信息子模塊圖</p><p>  圖4-1表示航空公司主要對飛機和航線信息做出更新操作,包括增加飛機信息,刪除飛機信息和修改飛機信息以及相應

33、的更新航線信息,并將更新后的數據保存,以便查詢。 </p><p>  圖4-2 客戶查詢信息子系統模塊圖</p><p>  圖4-2 表示客戶查詢相關信息的功能模塊,根據客戶的要求,提供航班、飛機、機票信息供客戶查閱。</p><p>  圖4-3 訂票更新子功能模塊圖</p><p>  圖4-3 訂票信息更新模塊圖表示訂票處對訂票信息

34、的更新操作,包括對其增</p><p>  加,刪除,修改等操作,并將更新后的結果保存,以便方便查詢。</p><p>  圖 4-4 客戶子系統功能模塊圖</p><p><b>  數據存儲方面</b></p><p>  為數據庫中各基本表建立的索引如下:</p><p>  由于基本表CU

35、的主碼CNO經常在查詢條件和連接操作的連接條件中出現,且它們的值唯一,考慮屬性上建立唯一性索引;</p><p>  FL的主碼FNO,在查詢條件和連接操作的連接條件中出現,且它們的值唯一,考慮屬性上建立唯一性索引;</p><p>  基本表AC的屬性值幾乎不會有什么變化,更新率很低,可考慮適當建立索引;</p><p><b>  數據庫實施階段<

36、;/b></p><p>  數據庫實施階段的目標</p><p>  通過用DBMS所提供的數據定義語言和其他實用程序將數據庫邏輯設計和物理設計結果描述出來,成為DBMS可以接受的源代碼,在經過調試后生成目標模式。</p><p>  數據庫實施階段的任務</p><p><b>  1.建立數據庫</b><

37、;/p><p>  CREATE DATABASE MAB</p><p><b>  2.建立數據表</b></p><p>  (1)建立航空公司表</p><p>  CREATE TABLE AC(</p><p>  ANO CHAR(10) PRIMARY KEY,</p>

38、<p>  ANAME CHAR(20) NOT NULL,</p><p>  AAD CHAR(20),</p><p>  ACN CHAR(20)</p><p><b>  )</b></p><p><b>  (2)建立客戶表</b></p><p>

39、  CREATE TABLE CU(</p><p>  CNO CHAR(10) PRIMARY KEY,</p><p>  CNAME CHAR(20) NOT NULL,</p><p>  CAD CHAR(20),</p><p><b>  CAG INT</b></p><p>

40、;<b>  )</b></p><p>  (3)建立飛機信息表</p><p>  CREATE TABLE PL(</p><p>  PNO CHAR(10) PRIMARY KEY,</p><p>  PTNO CHAR(10),</p><p><b>  SNO INT,

41、</b></p><p>  ANO CHAR(10),</p><p>  FOREIGN KEY(ANO) REFERENCES AC(ANO)</p><p><b>  )</b></p><p><b>  (4)建立航線表</b></p><p>  

42、CREATE TABLE LI(</p><p>  LNO CHAR(10) PRIMARY KEY,</p><p>  SP CHAR(20),</p><p>  EP CHAR(20),</p><p><b>  DIS INT,</b></p><p>  ANO CHAR(10),

43、</p><p>  FOREIGN KEY(ANO) REFERENCES AC(ANO)</p><p><b>  )</b></p><p>  (5)建立航班信息表</p><p>  CREATE TABLE FL(</p><p>  FNO CHAR(10) PRIMARY KEY

44、,</p><p>  FT DATETIME NOT NULL,</p><p>  PNO CHAR(10),</p><p>  LNO CHAR(10),</p><p>  FOREIGN KEY (PNO) REFERENCES PL(PNO),</p><p>  FOREIGN KEY (LNO) RE

45、FERENCES LI(LNO)</p><p><b>  )</b></p><p><b>  (6)建立機票表</b></p><p>  CREATE TABLE BT(</p><p>  BNO CHAR(10) PRIMARY KEY,</p><p>  S

46、PATY INT,</p><p>  CNO CHAR(10),</p><p>  FNO CHAR(10),</p><p>  FOREIGN KEY (CNO) REFERENCES CU(CNO),</p><p>  FOREIGN KEY (FNO) REFERENCES FL(FNO)</p><p>

47、;<b>  )</b></p><p><b>  3、建立視圖</b></p><p><b>  go</b></p><p>  CREATE VIEW A1(CNO,CNAME,BNO,SPATY)</p><p><b>  AS</b><

48、;/p><p>  SELECT CU.CNO,CNAME,BNO,SPATY</p><p>  FROM CU,BT</p><p>  WHERE CU.CNO=BT.CNO</p><p><b>  go</b></p><p><b>  go</b></p&g

49、t;<p>  CREATE VIEW A2</p><p><b>  AS</b></p><p><b>  SELECT *</b></p><p><b>  FROM PL</b></p><p><b>  go</b><

50、/p><p><b>  go</b></p><p>  CREATE VIEW A3</p><p><b>  AS</b></p><p><b>  SELECT *</b></p><p><b>  FROM LI</b>

51、</p><p><b>  Go</b></p><p><b>  go</b></p><p>  CREATE VIEW A4(FNO,FT,SP,EP,DIS)</p><p><b>  AS</b></p><p>  SELECT FNO

52、,FT,SP,EP,DIS</p><p>  FROM LI,FL</p><p>  WHERE FL.LNO=LI.LNO</p><p><b>  Go</b></p><p><b>  go</b></p><p>  CREATE VIEW A5(BNO,FN

53、O,FT,SP,EP,DIS,SPATY)</p><p><b>  AS</b></p><p>  SELECT BNO,BT.FNO,FT,SP,EP,DIS,SPATY</p><p>  FROM BT,LI,FL</p><p>  WHERE BT.FNO=FL.FNO AND</p>&l

54、t;p>  LI.LNO=FL.LNO</p><p><b>  go</b></p><p><b>  4、建立索引</b></p><p>  CREATE UNIQUE INDEX A ON AC(ANO DESC) </p><p>  CREATE UNIQUE INDEX C

55、ON CU(CNO DESC)</p><p>  CREATE UNIQUE INDEX P ON PL(PNO)</p><p>  CREATE UNIQUE INDEX L ON LI(LNO)</p><p>  CREATE UNIQUE INDEX F ON FL(FNO)</p><p>  CREATE UNIQUE IND

56、EX B ON BT(BNO)</p><p><b>  數據庫入庫</b></p><p>  系統包括客戶信息管理、飛機信息管理、航線信息管理、訂票系統管理等四大功能模塊,共有6張基本表,牽涉到大量數據的錄入,又由于時間限制,采用事先在Excel中錄入數據,然后使用SQL Server 2000數據導入/導出向導功能,直接將數據導入到相應的基本表中。當然,附錄中

57、也給出了各個基</p><p>  本表插入元組的存儲功能。</p><p>  6、建立相關的存儲過程</p><p>  系統共建立了7個存儲過程相應信息如下所示:</p><p>  表3.1 創(chuàng)建的存儲過程列表:</p><p>  4.3 數據庫實施階段結果</p><p><b

58、>  1. 關系模式說明</b></p><p>  2. 數據定義語句(見附錄1)</p><p><b>  數據庫測試與調試</b></p><p>  測試與調試主要是對數據庫應用程序的實際運行,以及執(zhí)行對數據的各種操作,測試應用程序功能是否滿足設計要求,如果不滿足,則要對應用程序部分進行修改和調整,直到達到設計要求為

59、止。</p><p><b>  總結</b></p><p>  通過本次民航訂票系統開發(fā)與測試,從開始的系統需求分析、概念設計、邏輯設計、物理設計,再到數據庫實施、系統的測試和調試,都是自立完成,能做出的系統的大概框架,并沒有開發(fā)出具體應用的軟件和界面,但對于項目(系統)開發(fā)的大致流程有了一定的了解,為以后的系統的開發(fā)打下了良好的基礎。同時加深了對SQL SERV

60、ER 2000 的了解,基本能夠在相應的環(huán)境下組織SQL語句和存儲過程。</p><p>  附錄一、 數據操縱驗證</p><p>  一、定義視圖驗證如下:</p><p>  建立客戶訂票信息的視圖</p><p><b>  GO</b></p><p>  CREATE VIEW A1(

61、CNO,CNAME,BNO,SPATY)</p><p>  AS SELECT CU.CNO,CNAME,BNO,SPATY</p><p>  FROM CU,BT</p><p>  WHERE CU.CNO=BT.CNO</p><p><b>  GO</b></p><p><b

62、>  建立飛機信息視圖</b></p><p><b>  GO</b></p><p>  CREATE VIEW A2</p><p>  AS SELECT *</p><p><b>  FROM PL</b></p><p><b>  

63、GO</b></p><p><b>  建立航線信息視圖</b></p><p><b>  GO</b></p><p>  CREATE VIEW A3</p><p>  AS SELECT *</p><p><b>  FROM LI<

64、/b></p><p><b>  GO</b></p><p>  建立航班全程信息視圖</p><p><b>  GO</b></p><p>  CREATE VIEW A4(FNO,FT,SP,EP,DIS)</p><p>  AS SELECT FNO,F

65、T,SP,EP,DIS</p><p>  FROM LI,FL</p><p>  WHERE FL.LNO=LI.LNO</p><p><b>  GO</b></p><p>  建立機票完整信息的視圖</p><p><b>  GO</b></p>

66、<p>  CREATE VIEW A5(BNO,FNO,FT,SP,EP,DIS,SPATY)</p><p>  AS SELECT BNO,BT.FNO,FT,SP,EP,DIS,SPATY</p><p>  FROM BT,LI,FL</p><p>  WHERE BT.FNO=FL.FNO AND</p><p>  

67、LI.LNO=FL.LNO</p><p><b>  GO</b></p><p>  6.每次航班的總機票數的視圖</p><p>  SELECT FNO,COUNT(BNO)</p><p><b>  FROM BT</b></p><p>  GROUP BY F

68、NO </p><p>  二、相關的SQL語句測試</p><p>  1.查詢訂票的客戶信息</p><p>  SELECT CU.CNO,CNAME,BNO,SPATY</p><p>  FROM CU,BT</p><p>  WHERE CU.CNO=BT.CNO</p><p>

69、;  2、查詢航班的座位數</p><p>  SELECT FNO,SNO </p><p>  FROM FL,PL </p><p>  WHERE FL.PNO=PL,PNO</p><p><b>  3、插入客戶信息</b></p><p>  INSERT INTO</p>

70、;<p><b>  CU</b></p><p>  VALUES (010,'李華','四川內江',23)</p><p><b>  4.插入飛機信息</b></p><p>  INSERT INTO</p><p><b>  PL&

71、lt;/b></p><p>  VALUES ('010','TY-76',280,'5')</p><p><b>  5、刪除飛機信息</b></p><p><b>  DELETE</b></p><p><b>  FROM

72、 PL</b></p><p>  WHERE PNO='010'</p><p><b>  6、修改航線信息</b></p><p><b>  UPDATE LI</b></p><p>  SET SP='海口',EP='泉州',D

73、IS=900</p><p>  WHERE LNO='201'</p><p><b>  7、統計平均票價</b></p><p>  SELECT AVG(SPAY)</p><p><b>  FROM BT</b></p><p>  8、查詢從長沙

74、始發(fā)的航班號和時間</p><p>  SELECT FNO,FT</p><p>  FROM FL,LI</p><p>  WHERE FL.LNO=LI.LNO AND</p><p><b>  SP='長沙'</b></p><p>  查看航空公司的所有信息</

75、p><p>  SELECT *FROM AC</p><p>  10、查詢以蘭州為始發(fā)點的航班信息</p><p>  SELECT SP,EP,PTNO,FNO,FT</p><p>  FROM PL,FL,LI</p><p>  WHERE FL.PNO=PL.LNO AND LI.LNO=FL.LNO AND

76、 SP=’重慶’</p><p>  附錄二、 建立存儲過程</p><p>  1. 在客戶表中插入一條客戶的信息</p><p>  CREATE PROCEDURE INCU</p><p>  @P_CNO CHAR(10),</p><p>  @P_CNAME CHAR(20),</p>&l

77、t;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_CNAME,@P_CAD,@P_CAG)</p><p>

78、  exec INCU '011','李艷','西固區(qū)',22</p><p>  2. 查詢任意客戶的訂票信息</p><p>  CREATE PROCEDURE CU_BT</p><p>  @CU_CNAME CHAR(20)</p><p><b>  AS</b&g

79、t;</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><p>  FL.FNO=BT.FNO</p>

80、;<p>  exec CU_BT '趙晶'</p><p>  3、新插入一條飛機信息</p><p>  CREATE PROCEDURE PL_IN</p><p>  @P_PNO CHAR(10),</p><p>  @P_PTNO CHAR(10),</p><p>  @P

81、_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,@P_ANO)</p><p>  EXEC PL_

82、IN '020','BOIN-707','300','05'</p><p>  4、查詢起點為蘭州的航線信息</p><p>  CREATE PROCEDURE LZ_LI</p><p><b>  AS</b></p><p>  SELECT LN

83、O,EP</p><p><b>  FROM LI</b></p><p>  WHERE SP=’蘭州’</p><p>  5、建立刪除客戶信息的存儲過程</p><p>  CREATE PROCEDURE DL_CU</p><p>  @P_ACNAME CHAR(20)</p&

84、gt;<p><b>  AS</b></p><p><b>  DELETE</b></p><p><b>  FROM CU</b></p><p>  WHERE CNAME=@P_ACNAME </p><p>  6、查詢一由任意公司生產的任意飛機信

85、息</p><p>  CREATE PROCEDURE PL_SE</p><p>  @P_ANO CHAR(20)</p><p><b>  AS</b></p><p><b>  SELECT *</b></p><p><b>  FORM PL<

86、;/b></p><p>  WHERE ANO=@P_ANAME</p><p>  exec pl_se '南航'</p><p>  7.輸入起點和終點,顯示出相應的票價</p><p>  CREATE PROCEDURE PRI</p><p>  @P_SP CHAR(20),<

87、/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 BT.FNO=FL.FNO AND</p><p>

88、;  FL.LNO=LI.LNO AND</p><p>  SP=@P_SP AND</p><p>  EP=@P_EP EXEC PRI '長沙','北京'</p><p>  8、客戶輸入起點和終點,顯示出相應的航班</p><p>  例如客戶要查詢從長沙飛往北京的航班信息,則輸入長沙和北京,

89、便輸出結果</p><p>  CREATE PROCEDURE CX</p><p>  @P_SP CHAR(20),</p><p>  @P_EP CHAR(20</p><p><b>  AS</b></p><p>  SELECT SP,EP,BT.FNO,FT,SPATY<

90、/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>  EP=@P_EP</b></p><p

91、>  EXEC CX '長沙','北京'</p><p>  附錄三、 數據庫邏輯結構定義</p><p>  1、客戶(CU)基本信息表, 用于記錄客戶的信息</p><p>  附表1-1 客戶基本信息表</p><p>  2、航空公司(AC)基本信息表</p><p> 

92、 附表1-2 客戶基本信息表</p><p>  3、飛機(PL)基本信息表</p><p>  附表1-2 飛機基本信息表</p><p>  4、航線(LI)基本信息表</p><p>  附表1-2 航線基本信息表</p><p>  5、航班(FL)基本信息表</p><p>  附表1

93、-2 航班基本信息表</p><p>  6、機票(BT)信息表</p><p>  附表1-2 機票基本信息表</p><p>  附錄四、 前臺程序設計</p><p>  #include<iostream.h></p><p>  #include<stdio.h></p>

94、<p>  #include<string.h></p><p>  #include<iomanip.h></p><p>  #include<stdlib.h></p><p><b>  //數據結構//</b></p><p>  struct airticket

95、</p><p>  {int IDcard;</p><p><b>  int num;</b></p><p><b>  int day;</b></p><p>  char time[50];</p><p>  char count[50];</p>

96、;<p>  char start[50];</p><p>  char ends[50];</p><p>  airticket *next;</p><p>  };void main();</p><p><b>  FILE *fp;</b></p><p>  airt

97、icket * head=NULL;</p><p>  void fn();//輸出函數</p><p>  airticket * Create()//創(chuàng)建鏈表</p><p>  {airticket * ps;</p><p>  airticket * pEnd;</p><p>  ps=new air

98、ticket;</p><p>  cout<<"航班號:";</p><p>  cin>>ps->num;</p><p>  cout<<"日期:";</p><p>  cin>>ps->day;</p><p>

99、;  cout<<"時間: ";</p><p>  cin>>ps->time;</p><p>  cout<<"身份證號:";</p><p>  cin>>ps->IDcard;</p><p>  cout<<"

100、票數: ";</p><p>  cin>>ps->count; </p><p>  cout<<"起點:";</p><p>  cin>>ps->start;</p><p>  cout<<"終點:";</p>

101、<p>  cin>>ps->ends;</p><p>  cout<<endl<<endl;</p><p><b>  pEnd=ps;</b></p><p>  while(ps->num!=0)</p><p><b>  {</b&g

102、t;</p><p>  if(head==NULL)</p><p><b>  head=ps;</b></p><p><b>  else</b></p><p>  pEnd->next=ps;</p><p><b>  pEnd=ps;</

103、b></p><p>  ps=new airticket;</p><p>  cout<<"航班號(航班號位0結束輸入):";</p><p>  cin>>ps->num;</p><p>  cout<<"日期: ";</p><

104、;p>  cin>>ps->day;</p><p>  cout<<"時間: ";</p><p>  cin>>ps->time;</p><p>  cout<<"身份證號:";</p><p>  cin>>ps-&g

105、t;IDcard;</p><p>  cout<<"票數: ";</p><p>  cin>>ps->count;</p><p>  cout<<"起點:";</p><p>  cin>>ps->start;</p>&l

106、t;p>  cout<<"終點:";</p><p>  cin>>ps->ends;</p><p>  cout<<endl<<endl;</p><p><b>  }</b></p><p>  pEnd->next=NULL;

107、</p><p>  return head;</p><p><b>  }</b></p><p>  void save(airticket * head1)//保存信息</p><p><b>  {</b></p><p>  if((fp=fopen("

108、1.txt","ab"))==NULL)</p><p><b>  {</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  for(;head1;head1=head1->

109、next)</p><p>  fwrite(head1,sizeof(airticket),1,fp);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void dingpiao()//功能1:訂票</p><p><b> 

110、 {</b></p><p>  airticket * head1=Create();</p><p>  save(head1);</p><p><b>  }</b></p><p>  void tuipiao()//功能2:退票</p><p><b>  {&l

111、t;/b></p><p>  airticket *tail, *temp=new airticket;</p><p>  head=NULL;</p><p>  if((fp=fopen("1.txt","rb"))==NULL)</p><p><b>  {</b>

112、;</p><p>  printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");//出錯提示</p><p>  getchar();</p><p><b>  fn();</b></p><p><b>  }</b></p><p>  w

113、hile((fread(temp,sizeof(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>&

114、lt;p><b>  {</b></p><p>  temp->next=NULL;</p><p>  tail->next=temp;</p><p>  tail=temp;</p><p><b>  }</b></p><p>  temp=ne

115、w airticket;</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  int num;</b></p><p><b>  if(!head)</b></p><p><b>

116、  {</b></p><p>  cout<<"\n數據為空!\n";return;</p><p><b>  }</b></p><p>  temp=tail=head;</p><p>  cout<<"請輸入想退機票的航班號:";&l

117、t;/p><p><b>  cin>>num;</b></p><p>  for(;tail;tail=tail->next)</p><p><b>  {</b></p><p>  if(head->num==num){head=tail->next;}</

118、p><p>  else if(tail->num==num)</p><p><b>  {</b></p><p>  temp->next=tail->next;</p><p>  cout<<"你已經成功完成退票"<<endl;</p>&

119、lt;p><b>  }</b></p><p>  temp=tail;</p><p><b>  }</b></p><p>  if((fp=fopen("1.txt","wb"))==NULL)return;</p><p>  for(;he

120、ad;head=head->next)</p><p>  fwrite(head,sizeof(airticket),1,fp);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void watch()//功能3:查看信息</p><p

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

122、"))==NULL)</p><p><b>  {</b></p><p>  printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單\n");//出錯提示</p><p><b>  main();</b></p><p><b>  }</b

123、></p><p>  while((fread(temp,sizeof(struct airticket),1,fp))==1)</p><p><b>  {</b></p><p>  if(head==NULL){head=tail=temp;head->next=NULL;}</p><p><

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

125、b></p><p>  cout<<endl;</p><p>  cout<<"航班號:"<<tail->num<<endl;</p><p>  cout<<"日期:"<<tail->day<<endl;</p&g

126、t;<p>  cout<<"時間(星期):"<<tail->time<<endl;</p><p>  cout<<"身份證號:"<<tail->IDcard<<endl;</p><p>  cout<<"票數:"&l

127、t;<tail->count<<endl;</p><p>  cout<<"起點站:"<<tail->start<<endl;</p><p>  cout<<"終點站:"<<tail->ends<<endl;</p><

128、p>  temp=new airticket;</p><p><b>  }</b></p><p>  delete tail,temp;</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void searc

129、h_num()//查找航班號</p><p><b>  {</b></p><p><b>  int num;</b></p><p><b>  int k=1;</b></p><p>  airticket *tail, *temp=new airticket;<

130、;/p><p>  head=NULL;</p><p>  if((fp=fopen("1.txt","rb"))==NULL)</p><p><b>  {</b></p><p>  printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");//出錯

131、提示</p><p>  getchar();</p><p><b>  fn();</b></p><p><b>  }</b></p><p>  while((fread(temp,sizeof(airticket),1,fp))==1)</p><p><b

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

133、;</p><p>  tail->next=temp;</p><p>  tail=temp;</p><p><b>  }</b></p><p>  temp=new airticket;</p><p><b>  }</b></p><

134、p>  cout<<"請輸入所要查找航班號:"<<endl;</p><p><b>  cin>>num;</b></p><p>  if(head==NULL)</p><p><b>  {</b></p><p>  print

135、f("沒有你所查找的信息!");fn();</p><p><b>  }</b></p><p>  for(;head;head=head->next)</p><p>  if(head->num==num)</p><p><b>  {</b></p&

136、gt;<p>  cout<<endl<<"找到相匹配的信息"<<endl;</p><p>  cout<<"航班號是:"<<head->num<<","<<"日期是:"<<head->day<<&q

137、uot;,";</p><p>  cout<<"時間是(星期):"<<head->time<<",";</p><p>  cout<<"身份證號是:"<<head->IDcard<<","<<"

138、;票數是:"<<head->count<<",";</p><p>  cout<<"起點站是:"<<head->start<<","<<"終點站是:"<<head->ends<<endl;</p>

139、<p><b>  }</b></p><p>  delete tail,temp;</p><p>  fclose(fp);</p><p>  cout<<endl<<"是否繼續(xù)?是請按1,否請按2."<<endl;</p><p><b&

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

141、p><p><b>  case 2:</b></p><p>  //fn();break;</p><p>  default:cout<<endl<<"按鍵錯誤!請重新按鍵!"<<endl;</p><p><b>  } </b>&l

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

143、cket;</p><p>  head=NULL;</p><p>  if((fp=fopen("1.txt","rb"))==NULL)</p><p><b>  {</b></p><p>  cout<<"出錯,請檢查文件是否存在,按任意鍵返回住菜

144、單"<<endl;//出錯提示</p><p>  getchar();</p><p><b>  fn();</b></p><p><b>  }</b></p><p>  while((fread(temp,sizeof(airticket),1,fp))==1)&l

溫馨提示

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

評論

0/150

提交評論