2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課 程 設 計</b></p><p>  課程名稱 數(shù)據(jù)庫系統(tǒng)課程設計 </p><p>  題目名稱 </p><p>  學生學院 </p><p>  專業(yè)班級

2、 </p><p>  學 號 </p><p>  學生姓名 </p><p>  指導教師 </p><p>  2013 年 1 月</p><p>

3、;<b>  目 錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 課題背景及現(xiàn)實意義1</p><p>  1.2 航空票務管理系統(tǒng)簡介1</p><p>  1.2.1 定義1</p><p>  1.2.2 主要功能1

4、</p><p>  1.2.3 重要性1</p><p>  1.3 開發(fā)技術介紹2</p><p>  2 系統(tǒng)需求分析設計4</p><p>  2.1 需求分析的目的4</p><p>  2.2 系統(tǒng)需求分析4</p><p>  2.2.1 系統(tǒng)功能需求4</p&

5、gt;<p>  2.2.2 軟件運行環(huán)境4</p><p>  2.3數(shù)據(jù)流圖5</p><p>  2.3.1 數(shù)據(jù)流圖介紹5</p><p>  2.3.2 系統(tǒng)數(shù)據(jù)流圖5</p><p>  3 系統(tǒng)整體設計7</p><p>  3.1 系統(tǒng)分析與設計7</p>&

6、lt;p>  3.2 系統(tǒng)功能模塊設計圖7</p><p>  3.3 數(shù)據(jù)庫設計7</p><p><b>  4詳細設計15</b></p><p>  4.1 數(shù)據(jù)庫連接15</p><p>  4.2舉例航班管理代碼17</p><p>  4.2.1 航班管理界面初始

7、化17</p><p>  4.2.3新增航班的實現(xiàn)21</p><p>  4.2.4撤銷航班的實現(xiàn)23</p><p>  4.2.5修改航班的實現(xiàn)26</p><p>  4.3 購買機票28</p><p>  4.3.1 選擇機票并確認購買28</p><p>  4.3.

8、2 填寫客戶信息29</p><p>  4.4 其他界面與功能30</p><p>  5 課程設計小結33</p><p>  參 考 文 獻34</p><p><b>  1 緒論</b></p><p>  1.1 課題背景及現(xiàn)實意義</p><p>

9、  隨著科技的發(fā)展和人們生活水平的日益提高,人們在不斷追求更加快捷的交通方式以滿足人們快節(jié)奏的生活方式,航空系統(tǒng)在交通系統(tǒng)中已扮演著一個越來越重要的角色。然而,交通的快捷離不開信息的快捷。</p><p>  隨著隨著計算機的發(fā)展和普及,人們的生活方式發(fā)生了巨大的改變,計算機在代替和延伸腦力勞動方面發(fā)揮著越來越重要的作用。在交通系統(tǒng)中,有大量的數(shù)據(jù)需要被處理,而這些工作有人來完成幾乎是不可能的,而交給計算機處理,

10、就可以很好地滿足我們的需求。</p><p>  航空售票管理系統(tǒng)可以根據(jù)乘客和管理人員的要求,進行方便快速的查詢、購票、退票和管理等工作。本文介紹了簡易航空售票管理系統(tǒng)的實現(xiàn)過程。</p><p>  1.2 航空票務管理系統(tǒng)簡介</p><p><b>  1.2.1 定義</b></p><p>  航空票務管理系

11、統(tǒng)中主要包括了用戶的基本信息(用戶名、密碼、權限),客戶信息(姓名、性別、身份證號、聯(lián)系電話、備注等),航班信息(航班編號、出發(fā)城市、到達城市等)??梢蕴砑印⒉樵?、修改、刪除各表的基本信息,滿足客戶購買機票、退票等多種需求。一切的統(tǒng)計和計算都計算機代為管理了,航空票務管理系統(tǒng)對企業(yè)的合理化管理起到了很大的作用,它為企業(yè)信息化的建設打響了頭炮,企業(yè)的信息化建設已成為現(xiàn)代各個企業(yè)發(fā)展的需要。</p><p>  1.

12、2.2 主要功能</p><p><b>  本系統(tǒng)主要功能有:</b></p><p>  (1)系統(tǒng)登錄(用戶名與密碼)</p><p>  (2)客戶信息(客戶信息修改與添加、查詢、刪除)</p><p>  (3)航班信息(航班信息的增加、撤銷、修改)</p><p>  (4)訂單信息(

13、查看訂單的情況,退票) </p><p>  (5)購買機票(選擇對應的機票并且購買)</p><p>  (6) 關于(顯示版權信息) </p><p><b>  1.2.3 重要性</b></p><p>  實踐證明,一個企業(yè)中管理與效益是息息相關的,實現(xiàn)數(shù)據(jù)規(guī)范化、自動化的電腦管理,是一個管理規(guī)范、運作高效的企

14、事業(yè)單位的必然要求。隨著現(xiàn)代科技的進步,用計算機來進行票務管理也成為現(xiàn)代化企業(yè)運作必不可少的一部分。</p><p>  使用計算機來進行票務的管理的主要有以下幾個方面好處:</p><p>  (1)大大降低了工作人員的工作量,提高了工作效率;</p><p>  (2)節(jié)省成本,包括人力資源;</p><p>  (3)安全準確的購票、管

15、理航班的作用;</p><p>  1.3 開發(fā)技術介紹</p><p>  《航空票務管理系統(tǒng)》的開發(fā)平臺和工具為:后臺數(shù)據(jù)庫使用SQL Server 2008,前臺開發(fā)工具使用VS2010。</p><p>  1、VS2010是一個功能強大的可視化應用程序開發(fā)工具,用于Windows環(huán)境下32位的應用程序的開發(fā),是計算機界公認的最優(yōu)秀的應用開發(fā)工具之一。在提供

16、可視化的編程方式的同時,VS2010也適用于編寫直接對系統(tǒng)底層操作的程序,生成代碼的質(zhì)量也優(yōu)于其它的開發(fā)工具。在VS2010環(huán)境下,利用Microsoft的基本類庫MFC(Microsoft Foundation Class Library),可以使用完全的面向?qū)ο蟮姆椒▉磉M行Windows應用程序的開發(fā),使得Windows程序員從大量的復雜勞動中解救出來,體會到真正的程序語言的強大功能和良好的靈活性[2]。</p>&l

17、t;p>  VS2010編程是一個面向?qū)ο蟮某绦蛟O計方法。同傳統(tǒng)的結構化程序設計方法相比,它縮短軟件的研制時間,提高軟件的開發(fā)效率,使程序員可以更好地理解和管理龐大而復雜的程序。</p><p>  面向?qū)ο蟮某绦蛟O計吸取了結構化程序設計的精華,它利用了人們根據(jù)對事物分類和抽象的傾向,引入了類和對象的概念,具有封裝性(數(shù)據(jù)抽象)、繼承和多態(tài)的特點。與結構化程序設計不同的是,面向?qū)ο蟪绦蛟O計是用類抽象代表現(xiàn)實

18、的實體,用類之間的繼承關系表示程序設計的抽象過程。函數(shù)只是對數(shù)據(jù)的操作,沒有數(shù)據(jù)的概念,而類是數(shù)據(jù)和數(shù)據(jù)操作的集合,由于面向?qū)ο蟮某绦蛟O計方法非常近現(xiàn)實,所以越來越流行。</p><p>  VS2010中集成了大量的最新技術,如ActiveX、COM等技術,程序開發(fā)人員可以緊緊地把握住軟件開發(fā)技術發(fā)展的方向,開發(fā)出功能強大的應用程序。</p><p>  VS2010還提供了豐富的技術資

19、源,MSDN(Microsoft Develop Network)提供了強大的聯(lián)機幫助支持,同時還可以通過訪問Microsoft的網(wǎng)上站點來獲得最新的技術文檔。</p><p>  2、SQL Server是一個關系數(shù)據(jù)庫管理系統(tǒng),SQL Server是一個全面的數(shù)據(jù)庫平臺,使用集成的商業(yè)智能(BI)工具提供了企業(yè)級的數(shù)據(jù)管理。SQL Server數(shù)據(jù)庫引擎為關系型數(shù)據(jù)和結構化數(shù)據(jù)提供了更安全可靠的存儲功能,方便

20、安全可靠地構建和管理用于業(yè)務的高可用和高性能的數(shù)據(jù)應用程序。</p><p>  SQL Server特點[5]:</p><p>  (1)真正的客戶機/服務器體系結構。 </p><p>  (2)圖形化用戶界面,使系統(tǒng)管理和數(shù)據(jù)庫管理更加直觀、簡單。 </p><p>  (3)豐富的編程接口工具,為用戶進行程序設計提供了更大的選擇余地

21、。 </p><p>  (4)SQL Server與Windows NT完全集成,利用了NT的許多功能,如發(fā)送和接受消息,管理登錄安全性等。SQL Server也可以很好地與Microsoft BackOffice產(chǎn)品集成。 </p><p>  (5)具有很好的伸縮性,可跨越多種平臺使用。 </p><p>  2 系統(tǒng)需求分析設計</p>&l

22、t;p>  2.1 需求分析的目的</p><p>  軟件的需求分析必須要有對原業(yè)務的一個深入了解、提取、抽象、升華的過程,管理軟件需求分析尤其如此。   軟件的需求分析是從用戶的業(yè)務中提取出軟件系統(tǒng)能夠幫助用戶解決的業(yè)務問題,通過對用戶業(yè)務問題的分析,規(guī)劃出我們的軟件產(chǎn)品。這個步驟是對用戶業(yè)務需求的一個升華,是一個把用戶業(yè)務管理流程優(yōu)化,轉化為軟件產(chǎn)品,從而提升管理而實現(xiàn)的質(zhì)的飛躍,這一步是否成功,直

23、接關系到開發(fā)出來的軟件產(chǎn)品能否得到用戶認可,順利交付給客戶,客戶能否真正運用我們的產(chǎn)品幫助他解決業(yè)務或管理問題。   按照軟件工程對軟件開發(fā)過程的描述,需求階段細分為需求調(diào)研和需求分析兩個小階段,需求調(diào)研需要充分細致的了解客戶目標,用戶業(yè)務內(nèi)容、流程等,這是一個對需求的采集過程,是進行需求分析的基礎準備。</p><p>  2.2 系統(tǒng)需求分析</p><p>  2.2.1 系統(tǒng)功能

24、需求</p><p>  航空票務管理系統(tǒng)中主要要解決的是:</p><p>  1、用戶在登錄應用程序界面時,檢查用戶的合法性,并根據(jù)用戶的權限為其分配功能。</p><p>  2、本系統(tǒng)可以由售票員、經(jīng)理、總經(jīng)理幾個身份進入,不同身份擁有不同權限。例如,只有總經(jīng)理可以在航班管理中修改和撤銷航班,只有經(jīng)理以上才能退票。而售票員只能售票。</p>

25、<p>  3、系統(tǒng)管理員可以通過應用程序?qū)τ脩粜畔⑦M行統(tǒng)一管理,進行各種信息的修改與操作。</p><p>  4、應用程序內(nèi)部要可以通過SQL語句對數(shù)據(jù)庫內(nèi)的數(shù)據(jù)進行更新、插入(增加)、修改和刪除等操作。</p><p>  5、當系統(tǒng)管理員對相關信息進行操作時,系統(tǒng)要自動檢測輸入的數(shù)據(jù)是否合理,并彈出相應的提示信息。</p><p>  6、

26、應用程序中要有該程序的相關簡介和使用說明,幫助系統(tǒng)管理員和用戶更好地使用該程序。</p><p>  2.2.2 軟件運行環(huán)境</p><p>  操作系統(tǒng):Windows Xp 、Windows 7</p><p>  Cpu: Intel Celeron 448MHz或更高配置</p><p>  內(nèi)存: 256M或更大</p&g

27、t;<p>  硬盤: 100M或更大空間</p><p><b>  數(shù)據(jù)流圖</b></p><p>  2.3.1 數(shù)據(jù)流圖介紹</p><p>  數(shù)據(jù)流圖也稱為數(shù)據(jù)流程圖date flow diagram , DFD,是一種便于用戶理解和分析系統(tǒng)數(shù)據(jù)流程的圖形工具,擺脫了系統(tǒng)和具體內(nèi)容,精確的在邏輯上描述系統(tǒng)的功能、輸入

28、、輸出和數(shù)據(jù)存儲等,是系統(tǒng)邏輯模型的重要組成部分。</p><p>  數(shù)據(jù)流圖的基本組成成分:</p><p>  (1)數(shù)據(jù)流:是由一組固定成分的數(shù)據(jù)組成,表示數(shù)據(jù)的流向。值得注意的是,數(shù)據(jù)流圖中描述的是數(shù)據(jù)流,而不是控制流。除了流向數(shù)據(jù)存儲或從數(shù)據(jù)存儲流出的數(shù)據(jù)不必命名外,每個數(shù)據(jù)流必須要有一個合適的名字,以反映該數(shù)據(jù)流的含義。</p><p>  (2)加工

29、:加工描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)之間的變換,也就是輸入數(shù)據(jù)流經(jīng)過什么處理后變成了輸出數(shù)據(jù)。每個加工都有一個名字和編號。編號能反映該加工位于分層的數(shù)據(jù)流圖的哪個層次和哪張圖中,能夠看出它是由哪個加工分解出來的子加工。</p><p>  (3)數(shù)據(jù)存儲:數(shù)據(jù)存儲表示暫時存儲的數(shù)據(jù)。每個數(shù)據(jù)存儲都有一個名字。</p><p>  (4)外部實體:外部實體是存在于軟件系統(tǒng)之外的人員或組織,指出數(shù)

30、據(jù)所需要的發(fā)源地或系統(tǒng)所產(chǎn)生的數(shù)據(jù)的歸屬地。</p><p>  2.3.2 系統(tǒng)數(shù)據(jù)流圖</p><p><b>  管理信息</b></p><p><b>  數(shù)</b></p><p><b>  存取 據(jù)</b></p><p><

31、;b>  獲取 庫</b></p><p>  客戶訂購信息 文</p><p><b>  件</b></p><p><b>  圖2.1 數(shù)據(jù)流圖</b></p><p><b>  圖2.2 數(shù)據(jù)流圖<

32、/b></p><p><b>  3 系統(tǒng)整體設計</b></p><p>  3.1 系統(tǒng)分析與設計</p><p>  基于上面的分析,按照軟件工程的思想,對航空票務管理系統(tǒng)進行功能分析:</p><p>  (1)實現(xiàn)系統(tǒng)登錄功能;</p><p>  (2)輸入客戶基本信息,包括

33、姓名、性別、身份證等;</p><p>  (3)瀏覽和修改航班信息;</p><p><b>  (4)購買機票;</b></p><p>  (5)查詢訂單和退票;</p><p><b>  (6)查詢航班信息</b></p><p>  3.2 系統(tǒng)功能模塊設計圖&l

34、t;/p><p>  通過各種系統(tǒng)的分析,得到了航空票務管理系統(tǒng)的主要功能模塊及其關系,如圖3.1所示:</p><p>  圖3.1 系統(tǒng)功能模塊設計圖</p><p><b>  3.3 數(shù)據(jù)庫設計</b></p><p>  一個成功的管理系統(tǒng),是由:[50% 的業(yè)務 + 50% 的軟件] 所組成,而 50% 的成功軟

35、件又有 [25% 的數(shù)據(jù)庫 + 25% 的程序] 所組成,數(shù)據(jù)庫設計的好壞是一個關鍵。如果把企業(yè)的數(shù)據(jù)比做生命所必需的血液,那么數(shù)據(jù)庫的設計就是應用中最重要的一部分。基于上述原因,系統(tǒng)的數(shù)據(jù)庫采用熟悉的MS SQL 2008,并以簡單、高效為基本原則對系統(tǒng)數(shù)據(jù)庫進行了分析和設計。</p><p>  3.3.1 數(shù)據(jù)庫概念設計</p><p>  由于E-R模型與人們認識現(xiàn)實世界的相似形,

36、因此在描述數(shù)據(jù)庫的概念結構或全局邏輯結構時,采用E-R圖這種圖形化的表示有非常大的好處,一是圖形化表示的簡單性;二是圖形化表示的清晰性[6]。通過詳細的研究和分析,按照企業(yè)的一般的要求和運作程序,得到基本的實體關系圖如圖3.2所示.</p><p><b>  圖3.2 E-R圖</b></p><p>  3.3.2 數(shù)據(jù)庫邏輯設計</p><p

37、>  基于之前的詳細模塊及功能設計,系統(tǒng)需要設計到下列各表,這些表共同存儲著系統(tǒng)所需要的數(shù)據(jù)。在設計數(shù)據(jù)庫表的過程中,主要遵循以下幾條原則:1、數(shù)據(jù)庫設計一個表只存儲一個實體或?qū)ο蟮南嚓P信息,不同的實體存儲在不同的數(shù)據(jù)表中;2、擴充信息和動態(tài)變化的信息一定要分開在不同的表里;3、盡量避免出現(xiàn)多對多這樣的表關系系統(tǒng)。</p><p>  因此需要建立以下幾個數(shù)據(jù)庫:員工信息表、出勤信息表、工資信息表、用戶表。

38、由于開發(fā)時使用的數(shù)據(jù)量較小,因此這些表都集中在同一個數(shù)據(jù)庫中。</p><p>  (1)用戶信息表中包括用戶名、密碼、權限字段。具體設置如表3.1所示。</p><p>  表3.1 用戶信息表</p><p>  圖3.3 用戶表設計</p><p>  (2)客戶信息表中包括姓名、性別、身份證號、客戶電話、備注等字段。具體設置如表3.

39、2所示。</p><p>  表3.2 客戶信息表</p><p>  圖3.4 客戶信息設計</p><p>  (3)航班信息表中包括航班編號、出發(fā)城市、到達城市、出發(fā)日期、機票價格、備注等字段。具體設置如表3.3所示。</p><p>  表3.3 工資信息表</p><p>  圖3.5 航班信息設計</

40、p><p>  (4)訂單信息表中包括訂單號、航班編號、身份證號等字段。具體設置如表3.4所示。</p><p>  表3.4 訂單信息表</p><p>  圖3.6 訂單信息設計</p><p>  圖3.7 數(shù)據(jù)庫關系圖</p><p><b>  (5)外鍵設置</b></p>

41、<p><b>  圖3.8 外鍵設置</b></p><p>  圖3.9 航班編號外鍵設置</p><p>  圖3.10 身份證號外鍵設置</p><p>  圖3.11 用戶外鍵設置</p><p><b>  詳細設計</b></p><p><b&

42、gt;  4.1 數(shù)據(jù)庫連接</b></p><p>  采用ADO方式,應用程序可通過ADO直接與數(shù)據(jù)庫連接;</p><p>  在創(chuàng)建應用程序?qū)嵗跏蓟瘯r,進行數(shù)據(jù)庫連接。在登陸框初始化時,執(zhí)行sql查詢。</p><p>  相關的連接程序如下:</p><p>  BOOL CADOtestApp::InitInstan

43、ce()</p><p><b>  {</b></p><p>  AfxEnableControlContainer();</p><p>  AfxOleInit();</p><p>  m_pConnection.CreateInstance(__uuidof(Connection));</p>

44、<p>  //在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,</p><p>  //因為它有時會經(jīng)常出現(xiàn)一些想不到的錯誤</p><p><b>  try</b></p><p><b>  {</b></p><p>  m_pConnection->

45、;Open("driver={SQL Server};Server=.;Database=SL;UID=;PWD=",</p><p>  "","",adModeUnknown);</p><p>  //Server后是服務器的計算機名,可以用.表示本地,Database后是數(shù)據(jù)庫名,</p><p>

46、  //這里使用的windows驗證,沒有設置用戶名和密碼,</p><p><b>  }</b></p><p>  catch(_com_error e)</p><p><b>  {</b></p><p>  AfxMessageBox("數(shù)據(jù)庫連接失敗!");<

47、;/p><p>  return FALSE;</p><p><b>  }</b></p><p>  連接成功后應在相應的對話框中完成初始化工作(以登錄界面為例):</p><p>  BOOL CAirHoldingSystemDlg::OnInitDialog()</p><p><b

48、>  {</b></p><p>  CDialogEx::OnInitDialog();</p><p>  SkinH_Attach();// 調(diào)用dll皮膚文件,換一層皮膚</p><p>  //SetCursor((HCURSOR)GetDlgItem(IDC_PWD));</p><p>  //GetDlg

49、Item(IDC_PWD)->SetFocus();</p><p>  //MessageBox("a");</p><p>  m_User = "李錦樑";// 初始化用戶名是為了方便調(diào)試</p><p>  m_Password = "123";</p><p>  

50、UpdateData(FALSE);</p><p>  // 將“關于...”菜單項添加到系統(tǒng)菜單中。</p><p>  // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。</p><p>  ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);</p><p>  ASSERT(I

51、DM_ABOUTBOX < 0xF000);</p><p>  CMenu* pSysMenu = GetSystemMenu(FALSE);</p><p>  if (pSysMenu != NULL)</p><p><b>  {</b></p><p>  BOOL bNameValid;</p&

52、gt;<p>  CString strAboutMenu;</p><p>  bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);</p><p>  ASSERT(bNameValid);</p><p>  if (!strAboutMenu.IsEmpty())</p><

53、p><b>  {</b></p><p>  pSysMenu->AppendMenu(MF_SEPARATOR);</p><p>  pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);</p><p><b>  }</b><

54、;/p><p><b>  }</b></p><p>  // 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動</p><p><b>  // 執(zhí)行此操作</b></p><p>  SetIcon(m_hIcon, TRUE);// 設置大圖標</p><

55、p>  SetIcon(m_hIcon, FALSE);// 設置小圖標</p><p>  // TODO: 在此添加額外的初始化代碼</p><p>  return TRUE; // 除非將焦點設置到控件,否則返回 TRUE</p><p><b>  }</b></p><p>  初始化后,便可進行

56、登陸操作</p><p><b>  圖4.1</b></p><p><b>  舉例航班管理代碼</b></p><p>  4.2.1 航班管理界面初始化</p><p>  初始化ListCtrl控件,顯示相關航班信息</p><p>  找到初始化函數(shù),并寫入相關代

57、碼</p><p>  圖4.2 MFC類向?qū)д页跏蓟瘮?shù)</p><p>  BOOL CFlight::OnInitDialog()</p><p><b>  {</b></p><p>  CDialogEx::OnInitDialog();</p><p>  if(root <

58、MANAGER1)</p><p><b>  {</b></p><p>  GetDlgItem(IDC_NEW)->ShowWindow(SW_HIDE);</p><p>  GetDlgItem(IDC_REMOVE)->ShowWindow(SW_HIDE);</p><p><b> 

59、 }</b></p><p>  m_List.InsertColumn(0,"航班編號",LVCFMT_CENTER,85);</p><p>  m_List.InsertColumn(1,"出發(fā)城市",LVCFMT_CENTER,85);</p><p>  m_List.InsertColumn(2,&qu

60、ot;到達城市",LVCFMT_CENTER,85);</p><p>  m_List.InsertColumn(3,"機票價格",LVCFMT_CENTER,85);</p><p>  m_List.InsertColumn(4,"出發(fā)日期",LVCFMT_CENTER,85);</p><p>  m_Lis

61、t.InsertColumn(5,"備注",LVCFMT_CENTER,85);</p><p>  UpdateData(false);</p><p>  m_pConnection.CreateInstance(__uuidof(Connection));</p><p>  m_pRecordset.CreateInstance(__uu

62、idof(Recordset));</p><p>  //在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,</p><p>  //因為它有時會經(jīng)常出現(xiàn)一些想不到的錯誤</p><p>  try </p><p><b>  {</b></p>

63、<p>  //打開本地 Sql Server庫student</p><p>  m_pConnection->Open("driver={SQL Server}; Server=.;Database=AirHolding;UID="";PWD=""",</p><p>  "","

64、",adModeUnknown);</p><p>  //Server后是服務器的計算機名,Database后是數(shù)據(jù)庫名</p><p>  //這里使用的windows驗證,沒有設置用戶名和密碼,</p><p>  //如果是windows和SQL server混合驗證,UID="";PWD=""要寫入相應的用

65、戶名和密碼</p><p><b>  }</b></p><p>  catch(_com_error e)</p><p><b>  {</b></p><p>  AfxMessageBox("數(shù)據(jù)庫連接失敗!");</p><p>  retur

66、n FALSE;</p><p><b>  } </b></p><p>  // TODO: Add your control notification handler code here</p><p><b>  try</b></p><p><b>  {</b>&

67、lt;/p><p>  m_pRecordset->Open("SELECT * FROM 航班信息", // 查詢Good表中所有字段</p><p>  theApp.m_pConnection.GetInterfacePtr(), // 獲取庫接庫的IDispatch指針</p><p>  adOpenD

68、ynamic,</p><p>  adLockOptimistic,</p><p>  adCmdText);</p><p><b>  }</b></p><p>  catch(_com_error *e)</p><p><b>  {</b></p>

69、<p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p>  //m_List.InsertItem(4,"ab");</p><p>  //m_List.InsertItem(5,"ab");<

70、/p><p>  if(!m_pRecordset->adoEOF)</p><p>  m_pRecordset->MoveFirst();</p><p>  while(!m_pRecordset->adoEOF)</p><p><b>  {</b></p><p>  _

71、variant_t price = m_pRecordset->GetCollect("機票價格");</p><p>  price.bstrVal;</p><p>  int line=m_List.GetItemCount();</p><p>  m_List.InsertItem(line,(char *)(_bstr_t)(m

72、_pRecordset->GetCollect("航班編號")));</p><p>  m_List.SetItemText(line,1,(char *)(_bstr_t)(m_pRecordset->GetCollect("出發(fā)城市")));</p><p>  m_List.SetItemText(line,2,(char *)(

73、_bstr_t)(m_pRecordset->GetCollect("到達城市")));</p><p>  m_List.SetItemText(line,3,(char *)(_bstr_t)(m_pRecordset->GetCollect("機票價格")));</p><p>  m_List.SetItemText(line,4

74、,(char *)(_bstr_t)(m_pRecordset->GetCollect("出發(fā)日期")));</p><p>  _variant_t str = m_pRecordset->GetCollect("備注");</p><p>  if(str.vt == VT_NULL)</p><p>  m_

75、List.SetItemText(line,5,"無"); </p><p><b>  else</b></p><p>  m_List.SetItemText(line,5,(char *)(_bstr_t)str);</p><p>  m_pRecordset->MoveNext();</p>

76、<p><b>  }</b></p><p>  // TODO: 在此添加額外的初始化</p><p>  return TRUE; // return TRUE unless you set the focus to a control</p><p>  // 異常: OCX 屬性頁應返回 FALSE</p>

77、<p><b>  }</b></p><p>  初始化成功后,得如下界面:</p><p>  圖4.3 航班管理界面</p><p>  4.2.3新增航班的實現(xiàn)</p><p>  對多用戶數(shù)據(jù)庫程序來說,不同的用戶應有不同的權限。比如管理員可以無任何限制,有的用戶只有查詢的權限沒有修改的權限,有的用

78、戶只可以輸入數(shù)據(jù)不能查詢等等。所以新增航班這一功能只有擁有總經(jīng)理的權限才能使用,否則此按鈕將被隱藏起來,如圖4.4,與4.3形成對比。</p><p>  圖4.4 售票員航班管理界面</p><p>  圖4.5新增航班信息界面</p><p><b>  //新增航班</b></p><p>  void CFlig

79、ht::OnBnClickedNew()</p><p>  {// 彈出新增航班對話框</p><p>  CAddFlight addFlight;</p><p>  addFlight.DoModal();</p><p>  Refresh();// 這是用戶刷新listCtrl列表的,下面有代碼</p><p&

80、gt;  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p>  圖4.6 新增航班編號111</p><p>  4.2.4撤銷航班的實現(xiàn)</p><p>  同樣地,撤銷航班只有總經(jīng)理權限才能使用。</p><p><b>  //

81、撤銷航班</b></p><p>  void CFlight::OnBnClickedRemove()</p><p><b>  {</b></p><p>  int i = (int)m_List.GetFirstSelectedItemPosition() - 1;</p><p>  if(i =

82、= -1)</p><p><b>  {</b></p><p>  ::MessageBox(NULL,"請先選中要撤銷的航班。","提示",0);</p><p>  //MessageBox("請先選中要撤銷的航班","提示",MB_OK);</p&

83、gt;<p><b>  return;</b></p><p><b>  }</b></p><p>  if(MessageBox("是否撤銷該航班?","確認",MB_YESNO) != IDYES)</p><p><b>  {</b>

84、</p><p><b>  return;</b></p><p><b>  }</b></p><p>  m_pRecordset->MoveFirst();</p><p>  while(!m_pRecordset->adoEOF)</p><p>&

85、lt;b>  {</b></p><p>  _variant_t str1 = m_List.GetItemText(i,0);</p><p>  _variant_t str = m_pRecordset->GetCollect("航班編號");</p><p>  if(str == str1)</p>

86、<p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  m_pRecordset->Delete(adAffectCurrent);</p><p>  m_pRecordset

87、->Update();</p><p>  ::MessageBox(NULL,"撤銷航班成功!","提示",0);</p><p>  //MessageBox("撤銷航班成功!");</p><p>  Refresh();</p><p>  UpdateData(f

88、alse);</p><p><b>  }</b></p><p>  catch (_com_error& e)</p><p><b>  {</b></p><p>  AfxMessageBox(e.Description());</p><p><

89、;b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  m_pRecordset->MoveNext();</p><p><b>  }</b></p><

90、;p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p>  //Refresh()</p><p>  void CFlight::Refresh(void)</p><p><b>  {</b></p><p&g

91、t;  m_List.DeleteAllItems();</p><p>  // m_List.InsertColumn(0,"航班編號",LVCFMT_CENTER,85);</p><p>  // m_List.InsertColumn(1,"出發(fā)城市",LVCFMT_CENTER,85);</p><p>  /

92、/ m_List.InsertColumn(2,"到達城市",LVCFMT_CENTER,85);</p><p>  // m_List.InsertColumn(3,"機票價格",LVCFMT_CENTER,85);</p><p>  // m_List.InsertColumn(4,"出發(fā)日期",LVCFMT_CEN

93、TER,85);</p><p>  // m_List.InsertColumn(5,"備注",LVCFMT_CENTER,85);</p><p>  UpdateData(false);</p><p>  //m_pRecordset->Requery();</p><p>  m_pRecordset-

94、>MoveFirst();</p><p>  while(!m_pRecordset->adoEOF)</p><p><b>  {</b></p><p>  _variant_t price = m_pRecordset->GetCollect("機票價格");</p><p&g

95、t;  price.bstrVal;</p><p>  int line=m_List.GetItemCount();</p><p>  m_List.InsertItem(line,(char *)(_bstr_t)(m_pRecordset->GetCollect("航班編號")));</p><p>  m_List.SetIte

96、mText(line,1,(char *)(_bstr_t)(m_pRecordset->GetCollect("出發(fā)城市")));</p><p>  m_List.SetItemText(line,2,(char *)(_bstr_t)(m_pRecordset->GetCollect("到達城市")));</p><p>  m_L

97、ist.SetItemText(line,3,(char *)(_bstr_t)(m_pRecordset->GetCollect("機票價格")));</p><p>  m_List.SetItemText(line,4,(char *)(_bstr_t)(m_pRecordset->GetCollect("出發(fā)日期")));</p><

98、p>  _variant_t str = m_pRecordset->GetCollect("備注");</p><p>  if(str.vt == VT_NULL)</p><p>  m_List.SetItemText(line,5,"無"); </p><p><b>  else</b&

99、gt;</p><p>  m_List.SetItemText(line,5,(char *)(_bstr_t)str);</p><p>  m_pRecordset->MoveNext();</p><p><b>  }</b></p><p><b>  }</b></p>

100、;<p>  4.2.5修改航班的實現(xiàn)</p><p><b>  圖4.7.修改航班</b></p><p><b>  //修改航班</b></p><p>  void CFlight::OnBnClickedUpdate()</p><p><b>  {</b

101、></p><p>  int i = (int)m_List.GetFirstSelectedItemPosition() - 1;</p><p>  if(i == -1)</p><p><b>  {</b></p><p>  ::MessageBox(NULL,"請先選中要修改的航班&quo

102、t;,"提示",0);</p><p><b>  return;</b></p><p><b>  }</b></p><p>  m_pRecordset->MoveFirst();</p><p>  while(!m_pRecordset->adoEOF)&

103、lt;/p><p><b>  {</b></p><p>  _variant_t str1 = m_List.GetItemText(i,0);</p><p>  _variant_t str = m_pRecordset->GetCollect("航班編號");</p><p>  if(s

104、tr == str1)</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  // 修改航班對話框</p><p>  CUpdateFlight updateFl

105、ight;</p><p>  updateFlight.flightID = m_pRecordset->GetCollect("航班編號");</p><p>  updateFlight.origin = m_pRecordset->GetCollect("出發(fā)城市");</p><p>  updateFl

106、ight.arrival = m_pRecordset->GetCollect("到達城市");</p><p>  updateFlight.date = m_pRecordset->GetCollect("出發(fā)日期");</p><p>  _variant_t t = m_pRecordset->GetCollect(&quo

107、t;機票價格");</p><p>  updateFlight.price = t.intVal;</p><p>  _variant_t temp = m_pRecordset->GetCollect("備注");</p><p>  if(temp.vt == VT_NULL)</p><p>  

108、updateFlight.noteInfo = "無";</p><p><b>  else</b></p><p>  updateFlight.noteInfo = m_pRecordset->GetCollect("備注");</p><p>  updateFlight.DoModal(

109、);</p><p>  Refresh();</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  catch (_com_error& e)</p><p><b>  {</b></p&g

110、t;<p>  AfxMessageBox(e.Description());</p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  m_pRecordset->

111、;MoveNext();</p><p><b>  }</b></p><p>  //updateFlight</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p>  圖4.8 修改航班111的價

112、格為588</p><p><b>  4.3 購買機票</b></p><p>  4.3.1 選擇機票并確認購買</p><p><b>  圖4.9 選擇機票</b></p><p>  4.3.2 填寫客戶信息</p><p>  圖4.10 填寫客戶信息并購買機票&

113、lt;/p><p>  4.4 其他界面與功能</p><p>  購票后,可以到訂單查詢中查詢以及退票等操作,退票要求有經(jīng)理以上的權限,按鈕才會顯示出來:</p><p>  圖4.11訂單信息</p><p><b>  查詢訂單號158</b></p><p><b>  圖4.12

114、訂單查詢</b></p><p>  如果是總經(jīng)理,可以對此退票:</p><p><b>  圖4.13</b></p><p>  點擊顯示所有,發(fā)現(xiàn)訂單已經(jīng)被取消</p><p><b>  圖4.14</b></p><p><b>  關于界面

115、:</b></p><p><b>  圖4.15</b></p><p><b>  5 課程設計小結</b></p><p>  這次課程設計我寫的是航空票務管理系統(tǒng),因為時間安排不合理,還有好多想到的功能都沒來得及增加,這是我感覺最遺憾的。</p><p>  曾經(jīng)我寫過一個管理

116、系統(tǒng)是基于ODBC的,但是這次用的是ADO編程,我感覺ADO比ODBC方便多了,但是還是在連接數(shù)據(jù)庫上花了一整天的時間。</p><p>  數(shù)據(jù)庫設計的比較簡單,只有四個表,因為時間倉促,我不敢把表寫的太復雜,但是這個表是我經(jīng)過反復修改琢磨寫出來的,一開始訂票信息表是由身份證號和航班編號一齊作為主碼的,原以為是可行的,但實際開發(fā)時發(fā)現(xiàn)如果這樣的話,會導致同一個人,不能買同一航班的票兩次,這明顯與顯示不符合,因此

117、又增加了訂單號,并單獨以此為主碼。此數(shù)據(jù)庫設計起碼滿足BCNF范式以上。</p><p>  通過這次數(shù)據(jù)庫課程設計,雖然只有短短的一周不到的時間,我掌握了連接數(shù)據(jù)庫的方法,這是我學到的最大的東西。不足的地方是對ADO的函數(shù)認識還不是很多,只有簡單的幾個,有些感覺能用函數(shù)實現(xiàn)的,也是要我自己編寫找出來,比較死板。_CommandPtr也沒有用,總感覺可以使用它的execute指令來查詢sql,但我卻沒有去用,反而

118、是自己編寫了一個Select函數(shù),通過每次關閉_Recordset對象再打開的時候查詢,這是我感覺最死板的地方。</p><p>  另外就是這個是MFC基于對話框的工程,如果再給我寫一次,我就絕對不會用基于對話框了,因為我感覺基于對話框的不夠美觀(當然,這個程序我調(diào)用了一個皮膚dll文件,因此界面是偏天藍色調(diào)的),也不太適合做比較好的管理系統(tǒng)(個人感覺)。</p><p>  對于sql

119、查詢,我也有比較復雜的功能沒有實現(xiàn),最多的就是在購票過程中三表查詢和寫入了,訂票管理是我認為做這個系統(tǒng)最復雜的一個地方了。</p><p>  通過這次課程設計,我的收獲還是挺大的,這一次讓我更加深入的學習到數(shù)據(jù)庫編程,讓我對數(shù)據(jù)庫編程變得不那么陌生。同時也讓我深刻體會到,一個好的數(shù)據(jù)庫設計對于一個管理系統(tǒng)好壞的重要性。</p><p><b>  參 考 文 獻</b&g

溫馨提示

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

評論

0/150

提交評論