

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課 程 設(shè) 計(jì)</b></p><p> 課程名稱 數(shù)據(jù)庫(kù)系統(tǒng)課程設(shè)計(jì) </p><p> 題目名稱 </p><p> 學(xué)生學(xué)院 </p><p> 專業(yè)班級(jí)
2、 </p><p> 學(xué) 號(hào) </p><p> 學(xué)生姓名 </p><p> 指導(dǎo)教師 </p><p> 2013 年 1 月</p><p>
3、;<b> 目 錄</b></p><p><b> 1 緒論1</b></p><p> 1.1 課題背景及現(xiàn)實(shí)意義1</p><p> 1.2 航空票務(wù)管理系統(tǒng)簡(jiǎn)介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ā)技術(shù)介紹2</p><p> 2 系統(tǒng)需求分析設(shè)計(jì)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 軟件運(yùn)行環(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)整體設(shè)計(jì)7</p><p> 3.1 系統(tǒng)分析與設(shè)計(jì)7</p>&
6、lt;p> 3.2 系統(tǒng)功能模塊設(shè)計(jì)圖7</p><p> 3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)7</p><p><b> 4詳細(xì)設(shè)計(jì)15</b></p><p> 4.1 數(shù)據(jù)庫(kù)連接15</p><p> 4.2舉例航班管理代碼17</p><p> 4.2.1 航班管理界面初始
7、化17</p><p> 4.2.3新增航班的實(shí)現(xiàn)21</p><p> 4.2.4撤銷航班的實(shí)現(xiàn)23</p><p> 4.2.5修改航班的實(shí)現(xiàn)26</p><p> 4.3 購(gòu)買機(jī)票28</p><p> 4.3.1 選擇機(jī)票并確認(rèn)購(gòu)買28</p><p> 4.3.
8、2 填寫客戶信息29</p><p> 4.4 其他界面與功能30</p><p> 5 課程設(shè)計(jì)小結(jié)33</p><p> 參 考 文 獻(xiàn)34</p><p><b> 1 緒論</b></p><p> 1.1 課題背景及現(xiàn)實(shí)意義</p><p>
9、 隨著科技的發(fā)展和人們生活水平的日益提高,人們?cè)诓粩嘧非蟾涌旖莸慕煌ǚ绞揭詽M足人們快節(jié)奏的生活方式,航空系統(tǒng)在交通系統(tǒng)中已扮演著一個(gè)越來越重要的角色。然而,交通的快捷離不開信息的快捷。</p><p> 隨著隨著計(jì)算機(jī)的發(fā)展和普及,人們的生活方式發(fā)生了巨大的改變,計(jì)算機(jī)在代替和延伸腦力勞動(dòng)方面發(fā)揮著越來越重要的作用。在交通系統(tǒng)中,有大量的數(shù)據(jù)需要被處理,而這些工作有人來完成幾乎是不可能的,而交給計(jì)算機(jī)處理,
10、就可以很好地滿足我們的需求。</p><p> 航空售票管理系統(tǒng)可以根據(jù)乘客和管理人員的要求,進(jìn)行方便快速的查詢、購(gòu)票、退票和管理等工作。本文介紹了簡(jiǎn)易航空售票管理系統(tǒng)的實(shí)現(xiàn)過程。</p><p> 1.2 航空票務(wù)管理系統(tǒng)簡(jiǎn)介</p><p><b> 1.2.1 定義</b></p><p> 航空票務(wù)管理系
11、統(tǒng)中主要包括了用戶的基本信息(用戶名、密碼、權(quán)限),客戶信息(姓名、性別、身份證號(hào)、聯(lián)系電話、備注等),航班信息(航班編號(hào)、出發(fā)城市、到達(dá)城市等)??梢蕴砑?、查詢、修改、刪除各表的基本信息,滿足客戶購(gòu)買機(jī)票、退票等多種需求。一切的統(tǒng)計(jì)和計(jì)算都計(jì)算機(jī)代為管理了,航空票務(wù)管理系統(tǒng)對(duì)企業(yè)的合理化管理起到了很大的作用,它為企業(yè)信息化的建設(shè)打響了頭炮,企業(yè)的信息化建設(shè)已成為現(xiàn)代各個(gè)企業(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)購(gòu)買機(jī)票(選擇對(duì)應(yīng)的機(jī)票并且購(gòu)買)</p><p> (6) 關(guān)于(顯示版權(quán)信息) </p><p><b> 1.2.3 重要性</b></p><p> 實(shí)踐證明,一個(gè)企業(yè)中管理與效益是息息相關(guān)的,實(shí)現(xiàn)數(shù)據(jù)規(guī)范化、自動(dòng)化的電腦管理,是一個(gè)管理規(guī)范、運(yùn)作高效的企
14、事業(yè)單位的必然要求。隨著現(xiàn)代科技的進(jìn)步,用計(jì)算機(jī)來進(jìn)行票務(wù)管理也成為現(xiàn)代化企業(yè)運(yùn)作必不可少的一部分。</p><p> 使用計(jì)算機(jī)來進(jìn)行票務(wù)的管理的主要有以下幾個(gè)方面好處:</p><p> (1)大大降低了工作人員的工作量,提高了工作效率;</p><p> (2)節(jié)省成本,包括人力資源;</p><p> (3)安全準(zhǔn)確的購(gòu)票、管
15、理航班的作用;</p><p> 1.3 開發(fā)技術(shù)介紹</p><p> 《航空票務(wù)管理系統(tǒng)》的開發(fā)平臺(tái)和工具為:后臺(tái)數(shù)據(jù)庫(kù)使用SQL Server 2008,前臺(tái)開發(fā)工具使用VS2010。</p><p> 1、VS2010是一個(gè)功能強(qiáng)大的可視化應(yīng)用程序開發(fā)工具,用于Windows環(huán)境下32位的應(yīng)用程序的開發(fā),是計(jì)算機(jī)界公認(rèn)的最優(yōu)秀的應(yīng)用開發(fā)工具之一。在提供
16、可視化的編程方式的同時(shí),VS2010也適用于編寫直接對(duì)系統(tǒng)底層操作的程序,生成代碼的質(zhì)量也優(yōu)于其它的開發(fā)工具。在VS2010環(huán)境下,利用Microsoft的基本類庫(kù)MFC(Microsoft Foundation Class Library),可以使用完全的面向?qū)ο蟮姆椒▉磉M(jìn)行Windows應(yīng)用程序的開發(fā),使得Windows程序員從大量的復(fù)雜勞動(dòng)中解救出來,體會(huì)到真正的程序語言的強(qiáng)大功能和良好的靈活性[2]。</p>&l
17、t;p> VS2010編程是一個(gè)面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。同傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)方法相比,它縮短軟件的研制時(shí)間,提高軟件的開發(fā)效率,使程序員可以更好地理解和管理龐大而復(fù)雜的程序。</p><p> 面向?qū)ο蟮某绦蛟O(shè)計(jì)吸取了結(jié)構(gòu)化程序設(shè)計(jì)的精華,它利用了人們根據(jù)對(duì)事物分類和抽象的傾向,引入了類和對(duì)象的概念,具有封裝性(數(shù)據(jù)抽象)、繼承和多態(tài)的特點(diǎn)。與結(jié)構(gòu)化程序設(shè)計(jì)不同的是,面向?qū)ο蟪绦蛟O(shè)計(jì)是用類抽象代表現(xiàn)實(shí)
18、的實(shí)體,用類之間的繼承關(guān)系表示程序設(shè)計(jì)的抽象過程。函數(shù)只是對(duì)數(shù)據(jù)的操作,沒有數(shù)據(jù)的概念,而類是數(shù)據(jù)和數(shù)據(jù)操作的集合,由于面向?qū)ο蟮某绦蛟O(shè)計(jì)方法非常近現(xiàn)實(shí),所以越來越流行。</p><p> VS2010中集成了大量的最新技術(shù),如ActiveX、COM等技術(shù),程序開發(fā)人員可以緊緊地把握住軟件開發(fā)技術(shù)發(fā)展的方向,開發(fā)出功能強(qiáng)大的應(yīng)用程序。</p><p> VS2010還提供了豐富的技術(shù)資
19、源,MSDN(Microsoft Develop Network)提供了強(qiáng)大的聯(lián)機(jī)幫助支持,同時(shí)還可以通過訪問Microsoft的網(wǎng)上站點(diǎn)來獲得最新的技術(shù)文檔。</p><p> 2、SQL Server是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),SQL Server是一個(gè)全面的數(shù)據(jù)庫(kù)平臺(tái),使用集成的商業(yè)智能(BI)工具提供了企業(yè)級(jí)的數(shù)據(jù)管理。SQL Server數(shù)據(jù)庫(kù)引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲(chǔ)功能,方便
20、安全可靠地構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序。</p><p> SQL Server特點(diǎn)[5]:</p><p> (1)真正的客戶機(jī)/服務(wù)器體系結(jié)構(gòu)。 </p><p> (2)圖形化用戶界面,使系統(tǒng)管理和數(shù)據(jù)庫(kù)管理更加直觀、簡(jiǎn)單。 </p><p> (3)豐富的編程接口工具,為用戶進(jìn)行程序設(shè)計(jì)提供了更大的選擇余地
21、。 </p><p> (4)SQL Server與Windows NT完全集成,利用了NT的許多功能,如發(fā)送和接受消息,管理登錄安全性等。SQL Server也可以很好地與Microsoft BackOffice產(chǎn)品集成。 </p><p> (5)具有很好的伸縮性,可跨越多種平臺(tái)使用。 </p><p> 2 系統(tǒng)需求分析設(shè)計(jì)</p>&l
22、t;p> 2.1 需求分析的目的</p><p> 軟件的需求分析必須要有對(duì)原業(yè)務(wù)的一個(gè)深入了解、提取、抽象、升華的過程,管理軟件需求分析尤其如此。 軟件的需求分析是從用戶的業(yè)務(wù)中提取出軟件系統(tǒng)能夠幫助用戶解決的業(yè)務(wù)問題,通過對(duì)用戶業(yè)務(wù)問題的分析,規(guī)劃出我們的軟件產(chǎn)品。這個(gè)步驟是對(duì)用戶業(yè)務(wù)需求的一個(gè)升華,是一個(gè)把用戶業(yè)務(wù)管理流程優(yōu)化,轉(zhuǎn)化為軟件產(chǎn)品,從而提升管理而實(shí)現(xiàn)的質(zhì)的飛躍,這一步是否成功,直
23、接關(guān)系到開發(fā)出來的軟件產(chǎn)品能否得到用戶認(rèn)可,順利交付給客戶,客戶能否真正運(yùn)用我們的產(chǎn)品幫助他解決業(yè)務(wù)或管理問題。 按照軟件工程對(duì)軟件開發(fā)過程的描述,需求階段細(xì)分為需求調(diào)研和需求分析兩個(gè)小階段,需求調(diào)研需要充分細(xì)致的了解客戶目標(biāo),用戶業(yè)務(wù)內(nèi)容、流程等,這是一個(gè)對(duì)需求的采集過程,是進(jìn)行需求分析的基礎(chǔ)準(zhǔn)備。</p><p> 2.2 系統(tǒng)需求分析</p><p> 2.2.1 系統(tǒng)功能
24、需求</p><p> 航空票務(wù)管理系統(tǒng)中主要要解決的是:</p><p> 1、用戶在登錄應(yīng)用程序界面時(shí),檢查用戶的合法性,并根據(jù)用戶的權(quán)限為其分配功能。</p><p> 2、本系統(tǒng)可以由售票員、經(jīng)理、總經(jīng)理幾個(gè)身份進(jìn)入,不同身份擁有不同權(quán)限。例如,只有總經(jīng)理可以在航班管理中修改和撤銷航班,只有經(jīng)理以上才能退票。而售票員只能售票。</p>
25、<p> 3、系統(tǒng)管理員可以通過應(yīng)用程序?qū)τ脩粜畔⑦M(jìn)行統(tǒng)一管理,進(jìn)行各種信息的修改與操作。</p><p> 4、應(yīng)用程序內(nèi)部要可以通過SQL語句對(duì)數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)進(jìn)行更新、插入(增加)、修改和刪除等操作。</p><p> 5、當(dāng)系統(tǒng)管理員對(duì)相關(guān)信息進(jìn)行操作時(shí),系統(tǒng)要自動(dòng)檢測(cè)輸入的數(shù)據(jù)是否合理,并彈出相應(yīng)的提示信息。</p><p> 6、
26、應(yīng)用程序中要有該程序的相關(guān)簡(jiǎn)介和使用說明,幫助系統(tǒng)管理員和用戶更好地使用該程序。</p><p> 2.2.2 軟件運(yùn)行環(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ù)存儲(chǔ)等,是系統(tǒng)邏輯模型的重要組成部分。</p><p> 數(shù)據(jù)流圖的基本組成成分:</p><p> (1)數(shù)據(jù)流:是由一組固定成分的數(shù)據(jù)組成,表示數(shù)據(jù)的流向。值得注意的是,數(shù)據(jù)流圖中描述的是數(shù)據(jù)流,而不是控制流。除了流向數(shù)據(jù)存儲(chǔ)或從數(shù)據(jù)存儲(chǔ)流出的數(shù)據(jù)不必命名外,每個(gè)數(shù)據(jù)流必須要有一個(gè)合適的名字,以反映該數(shù)據(jù)流的含義。</p><p> (2)加工
29、:加工描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)之間的變換,也就是輸入數(shù)據(jù)流經(jīng)過什么處理后變成了輸出數(shù)據(jù)。每個(gè)加工都有一個(gè)名字和編號(hào)。編號(hào)能反映該加工位于分層的數(shù)據(jù)流圖的哪個(gè)層次和哪張圖中,能夠看出它是由哪個(gè)加工分解出來的子加工。</p><p> (3)數(shù)據(jù)存儲(chǔ):數(shù)據(jù)存儲(chǔ)表示暫時(shí)存儲(chǔ)的數(shù)據(jù)。每個(gè)數(shù)據(jù)存儲(chǔ)都有一個(gè)名字。</p><p> (4)外部實(shí)體:外部實(shí)體是存在于軟件系統(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> 獲取 庫(kù)</b></p><p> 客戶訂購(gòu)信息 文</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)整體設(shè)計(jì)</b></p><p> 3.1 系統(tǒng)分析與設(shè)計(jì)</p><p> 基于上面的分析,按照軟件工程的思想,對(duì)航空票務(wù)管理系統(tǒng)進(jìn)行功能分析:</p><p> (1)實(shí)現(xiàn)系統(tǒng)登錄功能;</p><p> (2)輸入客戶基本信息,包括
33、姓名、性別、身份證等;</p><p> (3)瀏覽和修改航班信息;</p><p><b> (4)購(gòu)買機(jī)票;</b></p><p> (5)查詢訂單和退票;</p><p><b> (6)查詢航班信息</b></p><p> 3.2 系統(tǒng)功能模塊設(shè)計(jì)圖&l
34、t;/p><p> 通過各種系統(tǒng)的分析,得到了航空票務(wù)管理系統(tǒng)的主要功能模塊及其關(guān)系,如圖3.1所示:</p><p> 圖3.1 系統(tǒng)功能模塊設(shè)計(jì)圖</p><p><b> 3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p> 一個(gè)成功的管理系統(tǒng),是由:[50% 的業(yè)務(wù) + 50% 的軟件] 所組成,而 50% 的成功軟
35、件又有 [25% 的數(shù)據(jù)庫(kù) + 25% 的程序] 所組成,數(shù)據(jù)庫(kù)設(shè)計(jì)的好壞是一個(gè)關(guān)鍵。如果把企業(yè)的數(shù)據(jù)比做生命所必需的血液,那么數(shù)據(jù)庫(kù)的設(shè)計(jì)就是應(yīng)用中最重要的一部分?;谏鲜鲈颍到y(tǒng)的數(shù)據(jù)庫(kù)采用熟悉的MS SQL 2008,并以簡(jiǎn)單、高效為基本原則對(duì)系統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行了分析和設(shè)計(jì)。</p><p> 3.3.1 數(shù)據(jù)庫(kù)概念設(shè)計(jì)</p><p> 由于E-R模型與人們認(rèn)識(shí)現(xiàn)實(shí)世界的相似形,
36、因此在描述數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)或全局邏輯結(jié)構(gòu)時(shí),采用E-R圖這種圖形化的表示有非常大的好處,一是圖形化表示的簡(jiǎn)單性;二是圖形化表示的清晰性[6]。通過詳細(xì)的研究和分析,按照企業(yè)的一般的要求和運(yùn)作程序,得到基本的實(shí)體關(guān)系圖如圖3.2所示.</p><p><b> 圖3.2 E-R圖</b></p><p> 3.3.2 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)</p><p
37、> 基于之前的詳細(xì)模塊及功能設(shè)計(jì),系統(tǒng)需要設(shè)計(jì)到下列各表,這些表共同存儲(chǔ)著系統(tǒng)所需要的數(shù)據(jù)。在設(shè)計(jì)數(shù)據(jù)庫(kù)表的過程中,主要遵循以下幾條原則:1、數(shù)據(jù)庫(kù)設(shè)計(jì)一個(gè)表只存儲(chǔ)一個(gè)實(shí)體或?qū)ο蟮南嚓P(guān)信息,不同的實(shí)體存儲(chǔ)在不同的數(shù)據(jù)表中;2、擴(kuò)充信息和動(dòng)態(tài)變化的信息一定要分開在不同的表里;3、盡量避免出現(xiàn)多對(duì)多這樣的表關(guān)系系統(tǒng)。</p><p> 因此需要建立以下幾個(gè)數(shù)據(jù)庫(kù):?jiǎn)T工信息表、出勤信息表、工資信息表、用戶表。
38、由于開發(fā)時(shí)使用的數(shù)據(jù)量較小,因此這些表都集中在同一個(gè)數(shù)據(jù)庫(kù)中。</p><p> (1)用戶信息表中包括用戶名、密碼、權(quán)限字段。具體設(shè)置如表3.1所示。</p><p> 表3.1 用戶信息表</p><p> 圖3.3 用戶表設(shè)計(jì)</p><p> (2)客戶信息表中包括姓名、性別、身份證號(hào)、客戶電話、備注等字段。具體設(shè)置如表3.
39、2所示。</p><p> 表3.2 客戶信息表</p><p> 圖3.4 客戶信息設(shè)計(jì)</p><p> (3)航班信息表中包括航班編號(hào)、出發(fā)城市、到達(dá)城市、出發(fā)日期、機(jī)票價(jià)格、備注等字段。具體設(shè)置如表3.3所示。</p><p> 表3.3 工資信息表</p><p> 圖3.5 航班信息設(shè)計(jì)</
40、p><p> (4)訂單信息表中包括訂單號(hào)、航班編號(hào)、身份證號(hào)等字段。具體設(shè)置如表3.4所示。</p><p> 表3.4 訂單信息表</p><p> 圖3.6 訂單信息設(shè)計(jì)</p><p> 圖3.7 數(shù)據(jù)庫(kù)關(guān)系圖</p><p><b> (5)外鍵設(shè)置</b></p>
41、<p><b> 圖3.8 外鍵設(shè)置</b></p><p> 圖3.9 航班編號(hào)外鍵設(shè)置</p><p> 圖3.10 身份證號(hào)外鍵設(shè)置</p><p> 圖3.11 用戶外鍵設(shè)置</p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p><b&
42、gt; 4.1 數(shù)據(jù)庫(kù)連接</b></p><p> 采用ADO方式,應(yīng)用程序可通過ADO直接與數(shù)據(jù)庫(kù)連接;</p><p> 在創(chuàng)建應(yīng)用程序?qū)嵗跏蓟瘯r(shí),進(jìn)行數(shù)據(jù)庫(kù)連接。在登陸框初始化時(shí),執(zhí)行sql查詢。</p><p> 相關(guān)的連接程序如下:</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()來捕獲錯(cuò)誤信息,</p><p> //因?yàn)樗袝r(shí)會(huì)經(jīng)常出現(xiàn)一些想不到的錯(cuò)誤</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后是服務(wù)器的計(jì)算機(jī)名,可以用.表示本地,Database后是數(shù)據(jù)庫(kù)名,</p><p>
46、 //這里使用的windows驗(yàn)證,沒有設(shè)置用戶名和密碼,</p><p><b> }</b></p><p> catch(_com_error e)</p><p><b> {</b></p><p> AfxMessageBox("數(shù)據(jù)庫(kù)連接失敗!");<
47、;/p><p> return FALSE;</p><p><b> }</b></p><p> 連接成功后應(yīng)在相應(yīng)的對(duì)話框中完成初始化工作(以登錄界面為例):</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> // 將“關(guān)于...”菜單項(xiàng)添加到系統(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> // 設(shè)置此對(duì)話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對(duì)話框時(shí),框架將自動(dòng)</p><p><b> // 執(zhí)行此操作</b></p><p> SetIcon(m_hIcon, TRUE);// 設(shè)置大圖標(biāo)</p><
55、p> SetIcon(m_hIcon, FALSE);// 設(shè)置小圖標(biāo)</p><p> // TODO: 在此添加額外的初始化代碼</p><p> return TRUE; // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE</p><p><b> }</b></p><p> 初始化后,便可進(jìn)行
56、登陸操作</p><p><b> 圖4.1</b></p><p><b> 舉例航班管理代碼</b></p><p> 4.2.1 航班管理界面初始化</p><p> 初始化ListCtrl控件,顯示相關(guān)航班信息</p><p> 找到初始化函數(shù),并寫入相關(guān)代
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,"航班編號(hào)",LVCFMT_CENTER,85);</p><p> m_List.InsertColumn(1,"出發(fā)城市",LVCFMT_CENTER,85);</p><p> m_List.InsertColumn(2,&qu
60、ot;到達(dá)城市",LVCFMT_CENTER,85);</p><p> m_List.InsertColumn(3,"機(jī)票價(jià)格",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()來捕獲錯(cuò)誤信息,</p><p> //因?yàn)樗袝r(shí)會(huì)經(jīng)常出現(xiàn)一些想不到的錯(cuò)誤</p><p> try </p><p><b> {</b></p>
63、<p> //打開本地 Sql Server庫(kù)student</p><p> m_pConnection->Open("driver={SQL Server}; Server=.;Database=AirHolding;UID="";PWD=""",</p><p> "","
64、",adModeUnknown);</p><p> //Server后是服務(wù)器的計(jì)算機(jī)名,Database后是數(shù)據(jù)庫(kù)名</p><p> //這里使用的windows驗(yàn)證,沒有設(shè)置用戶名和密碼,</p><p> //如果是windows和SQL server混合驗(yàn)證,UID="";PWD=""要寫入相應(yīng)的用
65、戶名和密碼</p><p><b> }</b></p><p> catch(_com_error e)</p><p><b> {</b></p><p> AfxMessageBox("數(shù)據(jù)庫(kù)連接失敗!");</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(), // 獲取庫(kù)接庫(kù)的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("機(jī)票價(jià)格");</p><p> price.bstrVal;</p><p> int line=m_List.GetItemCount();</p><p> m_List.InsertItem(line,(char *)(_bstr_t)(m
72、_pRecordset->GetCollect("航班編號(hào)")));</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("到達(dá)城市")));</p><p> m_List.SetItemText(line,3,(char *)(_bstr_t)(m_pRecordset->GetCollect("機(jī)票價(jià)格")));</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 屬性頁(yè)應(yīng)返回 FALSE</p>
77、<p><b> }</b></p><p> 初始化成功后,得如下界面:</p><p> 圖4.3 航班管理界面</p><p> 4.2.3新增航班的實(shí)現(xiàn)</p><p> 對(duì)多用戶數(shù)據(jù)庫(kù)程序來說,不同的用戶應(yīng)有不同的權(quán)限。比如管理員可以無任何限制,有的用戶只有查詢的權(quán)限沒有修改的權(quán)限,有的用
78、戶只可以輸入數(shù)據(jù)不能查詢等等。所以新增航班這一功能只有擁有總經(jīng)理的權(quán)限才能使用,否則此按鈕將被隱藏起來,如圖4.4,與4.3形成對(duì)比。</p><p> 圖4.4 售票員航班管理界面</p><p> 圖4.5新增航班信息界面</p><p><b> //新增航班</b></p><p> void CFlig
79、ht::OnBnClickedNew()</p><p> {// 彈出新增航班對(duì)話框</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 新增航班編號(hào)111</p><p> 4.2.4撤銷航班的實(shí)現(xiàn)</p><p> 同樣地,撤銷航班只有總經(jīng)理權(quán)限才能使用。</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,"請(qǐng)先選中要撤銷的航班。","提示",0);</p><p> //MessageBox("請(qǐng)先選中要撤銷的航班","提示",MB_OK);</p&
83、gt;<p><b> return;</b></p><p><b> }</b></p><p> if(MessageBox("是否撤銷該航班?","確認(rèn)",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("航班編號(hào)");</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,"航班編號(hào)",LVCFMT_CENTER,85);</p><p> // m_List.InsertColumn(1,"出發(fā)城市",LVCFMT_CENTER,85);</p><p> /
92、/ m_List.InsertColumn(2,"到達(dá)城市",LVCFMT_CENTER,85);</p><p> // m_List.InsertColumn(3,"機(jī)票價(jià)格",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("機(jī)票價(jià)格");</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("航班編號(hào)")));</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("到達(dá)城市")));</p><p> m_L
97、ist.SetItemText(line,3,(char *)(_bstr_t)(m_pRecordset->GetCollect("機(jī)票價(jià)格")));</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修改航班的實(shí)現(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,"請(qǐng)先選中要修改的航班&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("航班編號(hào)");</p><p> if(s
104、tr == str1)</p><p><b> {</b></p><p><b> try</b></p><p><b> {</b></p><p> // 修改航班對(duì)話框</p><p> CUpdateFlight updateFl
105、ight;</p><p> updateFlight.flightID = m_pRecordset->GetCollect("航班編號(hào)");</p><p> updateFlight.origin = m_pRecordset->GetCollect("出發(fā)城市");</p><p> updateFl
106、ight.arrival = m_pRecordset->GetCollect("到達(dá)城市");</p><p> updateFlight.date = m_pRecordset->GetCollect("出發(fā)日期");</p><p> _variant_t t = m_pRecordset->GetCollect(&quo
107、t;機(jī)票價(jià)格");</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的價(jià)
112、格為588</p><p><b> 4.3 購(gòu)買機(jī)票</b></p><p> 4.3.1 選擇機(jī)票并確認(rèn)購(gòu)買</p><p><b> 圖4.9 選擇機(jī)票</b></p><p> 4.3.2 填寫客戶信息</p><p> 圖4.10 填寫客戶信息并購(gòu)買機(jī)票&
113、lt;/p><p> 4.4 其他界面與功能</p><p> 購(gòu)票后,可以到訂單查詢中查詢以及退票等操作,退票要求有經(jīng)理以上的權(quán)限,按鈕才會(huì)顯示出來:</p><p> 圖4.11訂單信息</p><p><b> 查詢訂單號(hào)158</b></p><p><b> 圖4.12
114、訂單查詢</b></p><p> 如果是總經(jīng)理,可以對(duì)此退票:</p><p><b> 圖4.13</b></p><p> 點(diǎn)擊顯示所有,發(fā)現(xiàn)訂單已經(jīng)被取消</p><p><b> 圖4.14</b></p><p><b> 關(guān)于界面
115、:</b></p><p><b> 圖4.15</b></p><p><b> 5 課程設(shè)計(jì)小結(jié)</b></p><p> 這次課程設(shè)計(jì)我寫的是航空票務(wù)管理系統(tǒng),因?yàn)闀r(shí)間安排不合理,還有好多想到的功能都沒來得及增加,這是我感覺最遺憾的。</p><p> 曾經(jīng)我寫過一個(gè)管理
116、系統(tǒng)是基于ODBC的,但是這次用的是ADO編程,我感覺ADO比ODBC方便多了,但是還是在連接數(shù)據(jù)庫(kù)上花了一整天的時(shí)間。</p><p> 數(shù)據(jù)庫(kù)設(shè)計(jì)的比較簡(jiǎn)單,只有四個(gè)表,因?yàn)闀r(shí)間倉(cāng)促,我不敢把表寫的太復(fù)雜,但是這個(gè)表是我經(jīng)過反復(fù)修改琢磨寫出來的,一開始訂票信息表是由身份證號(hào)和航班編號(hào)一齊作為主碼的,原以為是可行的,但實(shí)際開發(fā)時(shí)發(fā)現(xiàn)如果這樣的話,會(huì)導(dǎo)致同一個(gè)人,不能買同一航班的票兩次,這明顯與顯示不符合,因此
117、又增加了訂單號(hào),并單獨(dú)以此為主碼。此數(shù)據(jù)庫(kù)設(shè)計(jì)起碼滿足BCNF范式以上。</p><p> 通過這次數(shù)據(jù)庫(kù)課程設(shè)計(jì),雖然只有短短的一周不到的時(shí)間,我掌握了連接數(shù)據(jù)庫(kù)的方法,這是我學(xué)到的最大的東西。不足的地方是對(duì)ADO的函數(shù)認(rèn)識(shí)還不是很多,只有簡(jiǎn)單的幾個(gè),有些感覺能用函數(shù)實(shí)現(xiàn)的,也是要我自己編寫找出來,比較死板。_CommandPtr也沒有用,總感覺可以使用它的execute指令來查詢sql,但我卻沒有去用,反而
118、是自己編寫了一個(gè)Select函數(shù),通過每次關(guān)閉_Recordset對(duì)象再打開的時(shí)候查詢,這是我感覺最死板的地方。</p><p> 另外就是這個(gè)是MFC基于對(duì)話框的工程,如果再給我寫一次,我就絕對(duì)不會(huì)用基于對(duì)話框了,因?yàn)槲腋杏X基于對(duì)話框的不夠美觀(當(dāng)然,這個(gè)程序我調(diào)用了一個(gè)皮膚dll文件,因此界面是偏天藍(lán)色調(diào)的),也不太適合做比較好的管理系統(tǒng)(個(gè)人感覺)。</p><p> 對(duì)于sql
119、查詢,我也有比較復(fù)雜的功能沒有實(shí)現(xiàn),最多的就是在購(gòu)票過程中三表查詢和寫入了,訂票管理是我認(rèn)為做這個(gè)系統(tǒng)最復(fù)雜的一個(gè)地方了。</p><p> 通過這次課程設(shè)計(jì),我的收獲還是挺大的,這一次讓我更加深入的學(xué)習(xí)到數(shù)據(jù)庫(kù)編程,讓我對(duì)數(shù)據(jù)庫(kù)編程變得不那么陌生。同時(shí)也讓我深刻體會(huì)到,一個(gè)好的數(shù)據(jù)庫(kù)設(shè)計(jì)對(duì)于一個(gè)管理系統(tǒng)好壞的重要性。</p><p><b> 參 考 文 獻(xiàn)</b&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空售票信息管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--車站售票系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告-車站售票管理系統(tǒng)
- 車站售票管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告---車站售票管理系統(tǒng)
- 民航售票系統(tǒng)(數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--火車票售票管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)-- 航空訂票管理系統(tǒng)
- 火車售票系數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 航空訂票系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告----火車票售票系統(tǒng)
- 火車站車票售票系統(tǒng)--數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)----火車站車票售票系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)設(shè)計(jì)—公司管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告-鐵路網(wǎng)上售票系統(tǒng)
- c 課程設(shè)計(jì)——航空售票管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-火車票售票管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-火車票售票管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---機(jī)房管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---圖書管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論