版權(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)開(kāi)發(fā) </p><p> 學(xué)生姓名: </p><p> 學(xué) 號(hào): </p><p> 所在院(系): 數(shù)學(xué)與計(jì)算機(jī)學(xué)院 </p&g
2、t;<p> 專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 班 級(jí): </p><p> 指 導(dǎo) 教 師: 職稱(chēng): 講師 </p><p> 2015年 6 月 25 日</p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p&
3、gt;<p> 注:任務(wù)書(shū)由指導(dǎo)教師填寫(xiě)。</p><p> 課程設(shè)計(jì)(論文)指導(dǎo)教師成績(jī)?cè)u(píng)定表</p><p><b> 摘要</b></p><p> 隨著社會(huì)發(fā)展的不斷進(jìn)步,民航事業(yè)的壯大,人們消費(fèi)水平的提高,乘坐民航的消費(fèi)著也越來(lái)越多。預(yù)定查詢系統(tǒng)因此在各機(jī)票預(yù)定網(wǎng)點(diǎn)中的作用也越顯重要 伴隨著人們更多的使
4、用飛機(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ī)票銷(xiāo)售手段也能相應(yīng)地有所調(diào)整,并對(duì)如何能經(jīng)濟(jì)、方便和及時(shí)地購(gòu)買(mǎi)到自己所需要的機(jī)票表現(xiàn)出極大的關(guān)注,于是,傳統(tǒng)的購(gòu)票方式開(kāi)始面臨變革。</p><p><b> 目 錄</b></p><p> 1. 概念
5、結(jié)構(gòu)設(shè)計(jì)階段1</p><p> 1.1. 概念結(jié)構(gòu)設(shè)計(jì)的目標(biāo)1</p><p> 1.2. 具體任務(wù)1</p><p> 1.3. 階段結(jié)果1</p><p> 2. 邏輯結(jié)構(gòu)設(shè)計(jì)階段4</p><p> 2.1 邏輯結(jié)構(gòu)設(shè)計(jì)階段的任務(wù)和目標(biāo)4</p><p> 2.2
6、 數(shù)據(jù)組織4</p><p> 2.2.1將E-R圖轉(zhuǎn)換為關(guān)系模型4</p><p> 2.2.2數(shù)據(jù)庫(kù)模式定義5</p><p> 2.2.3數(shù)據(jù)處理5</p><p> 2.2.4算法的主要思路6</p><p> 3. 物理設(shè)計(jì)階段8</p><p> 3.1 物理
7、階段設(shè)計(jì)的目標(biāo)8</p><p> 3.2 物理階段設(shè)計(jì)的任務(wù)8</p><p> 3.3 數(shù)據(jù)存儲(chǔ)方面8</p><p> 4. 數(shù)據(jù)庫(kù)實(shí)施階段9</p><p> 4.1 數(shù)據(jù)庫(kù)實(shí)施階段的目標(biāo)9</p><p> 4.2 數(shù)據(jù)庫(kù)實(shí)施階段的任務(wù)9</p><p> 4.
8、2.1.建立數(shù)據(jù)庫(kù)9</p><p> 4.2.2.建立數(shù)據(jù)表9</p><p> 4.2.3.數(shù)據(jù)入庫(kù)9</p><p> 5. 數(shù)據(jù)庫(kù)測(cè)試與調(diào)試12</p><p><b> 6. 總結(jié)13</b></p><p> 附錄一、 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)定義14</p>
9、<p> 附錄二、 JAVA程序設(shè)計(jì)15</p><p> 參 考 文 獻(xiàn)32</p><p><b> 概念結(jié)構(gòu)設(shè)計(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)鍵階段,它是將需求階段得到的用戶需求
10、抽象為信息世界的結(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)實(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);<
11、/p><p> 2.設(shè)計(jì)分E-R圖,即各子模塊的E-R圖;</p><p> 3.生成初步E-R圖,通過(guò)合并方法,做到各子系統(tǒng)實(shí)體、屬性、聯(lián)系統(tǒng)一;</p><p> 4.生成全局E-R圖,消除沖突。</p><p><b> 階段結(jié)果</b></p><p> 1. 各實(shí)體及屬性:實(shí)體是客
12、觀存在并可相互區(qū)分的事物,它可以是具體的人、物、事,也可以是抽象的概念關(guān)系,屬性是某一實(shí)體所具有的某一特性,一個(gè)實(shí)體可以由若干個(gè)屬性來(lái)刻畫(huà)。本系統(tǒng)的實(shí)體及其屬性如下圖所述:</p><p> 每個(gè)實(shí)體屬性解釋如下:</p><p> 客戶: CU(CNAME,CNO,SEX,AGE)</p><p> 航班: FL(FNO,F(xiàn)T,SP,EP)</
13、p><p> 機(jī)票: BT(BNO,SPATY)</p><p> 4. 合并各分E-R圖,消除各類(lèi)沖突,得到初步E-R圖,再消除不必要冗余,得到的基本E-R圖。具體實(shí)現(xiàn)如下:</p><p><b> 1).消除沖突</b></p><p> 合并分E-R圖時(shí)并不能簡(jiǎn)單地將各個(gè)分E-R圖畫(huà)到一起,而是必須著力消
14、除各個(gè)分E-R圖中的不一致,以形成一個(gè)能為全系統(tǒng)中所有的用戶共同理解和接受的統(tǒng)一的概念模型。合并分E-R圖的主要工作與關(guān)鍵是合理消除各分E-R圖的沖突,沖突主要有三類(lèi):屬性沖突、命名沖突和結(jié)構(gòu)沖突。</p><p><b> 2).消除冗余</b></p><p> 在E-R 圖中,可能存在一些冗余的數(shù)據(jù)和實(shí)體間的聯(lián)系。冗余數(shù)據(jù)和冗余聯(lián)系容易破壞數(shù)據(jù)庫(kù)的
15、完整性,給數(shù)據(jù)庫(kù)的維護(hù)增加困難,應(yīng)予以消除。但并不是所有的冗余數(shù)據(jù)與冗余聯(lián)系都必須加以消除,有時(shí)為了提高效率,不得不以冗余信息作為代價(jià)。消除冗余主要采用分析法和規(guī)范化理論。</p><p> 經(jīng)過(guò)以上分析,將得到一個(gè)系統(tǒng)的總E-R圖:</p><p><b> 邏輯結(jié)構(gòu)設(shè)計(jì)階段</b></p><p> 邏輯結(jié)構(gòu)設(shè)計(jì)階段的任務(wù)和目標(biāo)<
16、;/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ù)模式定義、用戶子模式設(shè)計(jì))、數(shù)據(jù)處理(畫(huà)出系統(tǒng)功能模塊圖)兩大任務(wù)。</p><p> ?。?)將ER圖
17、轉(zhuǎn)化為關(guān)系模型。</p><p> ?。?)對(duì)關(guān)系進(jìn)行優(yōu)化組織。</p><p><b> 數(shù)據(jù)組織</b></p><p> 2.2.1將E-R圖轉(zhuǎn)換為關(guān)系模型</p><p> 實(shí)體型轉(zhuǎn)換為關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼。對(duì)于實(shí)體間的聯(lián)系則有以下不同的情況:一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)
18、關(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í)體的碼。 一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。三個(gè)或三
19、個(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ī)場(chǎng)根據(jù)飛機(jī)與航線制定航班,屬于多對(duì)多的關(guān)系,取個(gè)實(shí)體的碼以及聯(lián)系本身的屬性轉(zhuǎn)化為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體碼的組合。</p><p> 客戶訂閱航班的關(guān)系同樣也是一對(duì)多的聯(lián)系,將其轉(zhuǎn)化為獨(dú)立
20、的關(guān)系模式,關(guān)系的屬性包含兩端的主碼構(gòu)成外碼。</p><p> 對(duì)關(guān)系模式CU,FL,BT進(jìn)行優(yōu)化設(shè)計(jì),使之滿足3NF的要求,即不存在部分函數(shù)依賴(lài)和傳遞函數(shù)依賴(lài),減少數(shù)據(jù)的冗余。所以根據(jù)ER圖,轉(zhuǎn)化的關(guān)系如下所示:</p><p> 客戶:(客戶姓名、證件號(hào)、性別、年齡)</p><p> 航班:(航班編號(hào)、登機(jī)時(shí)間、起始地點(diǎn),目的地)</p>
21、<p> 訂票:(客戶姓名、訂票數(shù)量、所付票價(jià),航班編號(hào))</p><p><b> 【別名表示】</b></p><p> 客戶: CU ( CNAME,CNO, SEX, AGE)</p><p> 航班: FL (FNO, FT, SP, EP)</p><p> 機(jī)票: BT (
22、CNAME,BNUM, SPAIY,FNO)</p><p> 2.2.2數(shù)據(jù)庫(kù)模式定義</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 >,而一般只將其看作一個(gè)三元組R<U, F>。(關(guān)系模式圖參考附錄1)</p><p>
23、表2-1 數(shù)據(jù)庫(kù)模式定義表</p><p><b> 2.2.3數(shù)據(jù)處理</b></p><p> 系統(tǒng)共分為以下幾個(gè)模塊:機(jī)場(chǎng)管理員子系統(tǒng),客戶子系統(tǒng)。機(jī)場(chǎng)管理員子系統(tǒng)又分為查看航班信息,查看客戶信息功能,客戶子系統(tǒng)分為訂票、退票等功能。所以系統(tǒng)功能模塊圖如下所示:</p><p> 2-3 民航訂票管理系統(tǒng)功能圖</p>
24、<p> 2.2.4算法的主要思路</p><p> 1.首先對(duì)界面的設(shè)計(jì),可以對(duì)操作的人員來(lái)說(shuō)簡(jiǎn)單上手。對(duì)系統(tǒng)的應(yīng)用都能進(jìn)行相應(yīng)的操作。</p><p> ?。?)設(shè)置管理員的功能。</p><p> ?。?)設(shè)置客戶的功能</p><p> (3)管理員的主要操作界面</p><p> ?。?)
25、客戶的主要操作界面</p><p><b> ?。?)結(jié)束</b></p><p> 2.用來(lái)顯示客戶訂票的事件;</p><p><b> 基本思路如下:</b></p><p> ?。?) 客戶提交自己的詳細(xì)信息。</p><p> ?。?) 管理員處理相應(yīng)的內(nèi)容并給
26、票給客戶。</p><p><b> ?。?) 訂票結(jié)束</b></p><p> 3.將處客戶的退票的信息,釋放存儲(chǔ)空間,基本思路如下:</p><p> ?。?) 客戶提交自己的詳細(xì)信息。</p><p> ?。?) 管理員把客戶的票取出,</p><p><b> ?。?) 結(jié)
27、束</b></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ǔ)空間利用率高,事務(wù)吞吐量大。</
28、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> 2.對(duì)物理結(jié)構(gòu)進(jìn)行
29、評(píng)價(jià),評(píng)價(jià)的重點(diǎn)是時(shí)間和空間效率。</p><p> 系統(tǒng)功能模塊:本系統(tǒng)主要包括三個(gè)子系統(tǒng)模塊,分別為管理子系統(tǒng)模塊、客戶信息子系統(tǒng)模塊和訂票信息子系統(tǒng)模塊。</p><p><b> 數(shù)據(jù)存儲(chǔ)方面</b></p><p> 為數(shù)據(jù)庫(kù)中各基本表建立的索引如下:</p><p> 由于基本表CU的主碼CNO經(jīng)常在
30、查詢條件和連接操作的連接條件中出現(xiàn),且它們的值唯一,考慮屬性上建立唯一性索引;</p><p> FL的主碼FNO,在查詢條件和連接操作的連接條件中出現(xiàn),且它們的值唯一,考慮屬性上建立唯一性索引;</p><p><b> 數(shù)據(jù)庫(kù)實(shí)施階段</b></p><p> 數(shù)據(jù)庫(kù)實(shí)施階段的目標(biāo)</p><p> 通過(guò)用D
31、BMS所提供的數(shù)據(jù)定義語(yǔ)言和其他實(shí)用程序?qū)?shù)據(jù)庫(kù)邏輯設(shè)計(jì)和物理設(shè)計(jì)結(jié)果描述出來(lái),成為DBMS可以接受的源代碼,在經(jīng)過(guò)調(diào)試后生成目標(biāo)模式。</p><p> 數(shù)據(jù)庫(kù)實(shí)施階段的任務(wù)</p><p> 4.2.1.建立數(shù)據(jù)庫(kù)</p><p> CREATE DATABASE MA</p><p> 4.2.2.建立數(shù)據(jù)表</p>
32、<p><b> (1)建立客戶表</b></p><p> CREATE TABLE CU(</p><p> CNAME CHAR(20) NOT NULL,</p><p> CNO CHAR(10) PRIMARY KEY,</p><p> SEX CHAR(10),</p>
33、<p><b> AGE INT</b></p><p><b> ) </b></p><p> (2)建立航班信息表</p><p> CREATE TABLE FL(</p><p> FNO CHAR(10) PRIMARY KEY,</p><
34、;p> FT DATETIME NOT NULL,</p><p> SP CHAR(20),</p><p> EP CHAR(20),</p><p><b> )</b></p><p><b> (3)建立機(jī)票表</b></p><p> CREAT
35、E TABLE BT(</p><p> CNAME CHAR(10) PRIMARY KEY,</p><p><b> BNUM INT,</b></p><p> SPATY INT,</p><p> FNO CHAR(10),</p><p> constraint fkr f
36、oreign key(FNO) references FL(FNO)</p><p> 4.2.3.數(shù)據(jù)入庫(kù)</p><p> insert into CU values('張三','110','男','23');</p><p> insert into CU values('李四
37、9;,'111','男','25');</p><p> insert into CU values('王五','112','男','63');</p><p> insert into CU values('李麗','113','女&
38、#39;,'54');</p><p> insert into CU values('張雪','114','女','32');</p><p> insert into CU values('王浩','115','男','35');</
39、p><p> insert into CU values('何夕','116','女','26');</p><p> insert into CU values('香菌柯','117','女','36');</p><p> inser
40、t into CU values('梵蒂岡','118','男','33');</p><p> insert into CU values('華國(guó)鋒','119','男','31');</p><p> SELECT * FROM CU </p>
41、;<p> insert into FL values('3U8881','12:30','天津','三亞');</p><p> insert into FL values('3Z3453','12:45','成都','上海');</p><p&g
42、t; insert into FL values('FR3456','7:45','重慶','上海');</p><p> insert into FL values('4R5677','6:43','成都','北京');</p><p> insert i
43、nto FL values('5H6784','20:56','昆明','長(zhǎng)沙');</p><p> insert into FL values('HJ6897','23:45','長(zhǎng)春','???#39;);</p><p> insert into FL val
44、ues('23ET67','21:56','長(zhǎng)沙','北京');</p><p> insert into FL values('RG5657','11:34','廈門(mén)','桂林');</p><p> insert into FL values('D
45、FH346','11:53','南京','南寧');</p><p> insert into FL values('346DF5','9:45','沈陽(yáng)','青島');</p><p> SELECT * FROM FL</p><p>
46、insert into BT values('張三','1','1460','3U8881');</p><p> insert into BT values('李四','11','1230','3Z3453');</p><p> insert into B
47、T values('王五','2','1220','FR3456');</p><p> insert into BT values('李麗','3','1500','4R5677');</p><p> insert into BT values('
48、張雪','4','1400','5H6784');</p><p> insert into BT values('王浩','5','1349','HJ6897');</p><p> insert into BT values('何夕','6
49、','1190','23ET67');</p><p> insert into BT values('香菌柯','7','980','RG5657');</p><p> insert into BT values('梵蒂岡','8','16
50、89','DFH346');</p><p> insert into BT values('華國(guó)鋒','9','1789','346DF5');</p><p> SELECT *FROM BT</p><p><b> 數(shù)據(jù)庫(kù)測(cè)試與調(diào)試</b>&l
51、t;/p><p> 測(cè)試與調(diào)試主要是對(duì)數(shù)據(jù)庫(kù)應(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)開(kāi)發(fā)與測(cè)試,從開(kāi)始的系統(tǒng)需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì),再到數(shù)據(jù)
52、庫(kù)實(shí)施、系統(tǒng)的測(cè)試和調(diào)試,都是借助網(wǎng)絡(luò)、書(shū)籍和同學(xué)共同完成,能做出的系統(tǒng)的大概框架,并沒(méi)有開(kāi)發(fā)出具體應(yīng)用的軟件和界面,但對(duì)于項(xiàng)目(系統(tǒng))開(kāi)發(fā)的大致流程有了一定的了解,為以后的系統(tǒng)的開(kāi)發(fā)打下了良好的基礎(chǔ)。同時(shí)加深了對(duì)SQL SERVER 2008 的了解,基本能夠在相應(yīng)的環(huán)境下組織SQL語(yǔ)句,完成java與sql sever數(shù)據(jù)庫(kù)的連接,在java界面下完成數(shù)據(jù)庫(kù)的操作,這是一個(gè)很大的進(jìn)步。</p><p> 附
53、錄一、 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)定義</p><p> 1、客戶(CU)基本信息表, 用于記錄客戶的信息</p><p> 附表1-1 客戶基本信息表</p><p> 2、航班(FL)基本信息表</p><p> 附表1-2 航班基本信息表</p><p> 3、機(jī)票(BT)信息表</p><p
54、> 附表1-3 機(jī)票基本信息表</p><p> 附錄二、 JAVA程序設(shè)計(jì)</p><p> Java與SQL Sever數(shù)據(jù)庫(kù)連接程序:</p><p> package JDBCtool;</p><p> import java.sql.Connection;</p><p> import
55、java.sql.DriverManager;</p><p> import java.sql.ResultSet;</p><p> import java.sql.SQLException;</p><p> import java.sql.Statement;</p><p> import javax.swing.JOpti
56、onPane;</p><p> public class JDBCTools {</p><p><b> //連接數(shù)據(jù)庫(kù)</b></p><p> public static Connection getConnection(String user,String password){</p><p> Con
57、nection conn=null;</p><p> String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";</p><p> String connectDB = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=MA";<
58、;/p><p><b> try {</b></p><p> Class.forName(JDriver);</p><p> System.out.println("加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)成功!");</p><p> conn = DriverManager.getConnection(connec
59、tDB,</p><p> user, password);</p><p> } catch (ClassNotFoundException e) {</p><p> // TODO Auto-generated catch block</p><p> // e.printStackTrace();</p><
60、;p> JOptionPane.showMessageDialog(null, "加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)失敗!", "警告對(duì)話框",</p><p> JOptionPane.WARNING_MESSAGE);</p><p> }catch(SQLException e){</p><p> e.printStackT
61、race();</p><p> JOptionPane.showMessageDialog(null, "用戶名或者密碼不正確,登陸失敗!",</p><p> "警告對(duì)話框", JOptionPane.WARNING_MESSAGE);</p><p><b> }</b></p>
62、<p> return conn;</p><p><b> }</b></p><p><b> //斷開(kāi)數(shù)據(jù)庫(kù)連接</b></p><p> public static void releaseDB(ResultSet resultSet, Statement statement,</p>
63、;<p> Connection connection) {</p><p> if (resultSet != null) {</p><p><b> try {</b></p><p> resultSet.close();</p><p> } catch (SQLException e)
64、 {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p><p> if (statement != null) {</p><p><b> try {</
65、b></p><p> statement.close();</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b
66、></p><p> if (connection != null) {</p><p><b> try {</b></p><p> connection.close();</p><p> } catch (SQLException e) {</p><p> e.print
67、StackTrace();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 登錄界
68、面程序:</b></p><p> package Mainview;</p><p> import java.awt.*;</p><p> import java.awt.event.ActionEvent;</p><p> import java.awt.event.ActionListener;</p&g
69、t;<p> import javax.swing.*;</p><p> public class Logview extends JFrame implements ActionListener{</p><p> private static final long serialVersionUID = 1L;</p><p> publ
70、ic static final String Flight = null;</p><p> //聲明JButton組件對(duì)象</p><p> JButton jbutton1,jbutton2,jbutton3,jbutton4;</p><p> public Logview()</p><p><b> {</b
71、></p><p> super("歡迎進(jìn)入民航訂票系統(tǒng)!");</p><p> //設(shè)置內(nèi)容面板的布局模式為:流動(dòng)布局</p><p> getContentPane().setLayout(new FlowLayout());</p><p> jbutton1=new JButton("管理
72、系統(tǒng)");</p><p> jbutton2=new JButton("訂票系統(tǒng)");</p><p> jbutton3=new JButton("退票系統(tǒng)");</p><p> jbutton4=new JButton("退出系統(tǒng)");</p><p> g
73、etContentPane().add(jbutton1);</p><p> getContentPane().add(jbutton2);</p><p> getContentPane().add(jbutton3);</p><p> getContentPane().add(jbutton4);</p><p> this.
74、setBounds(300,200,240,120);</p><p> this.setVisible(true);</p><p> this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> this.setResizable(false);</p><p><
75、b> //注冊(cè)監(jiān)聽(tīng)器</b></p><p> jbutton1.addActionListener(this);</p><p> jbutton2.addActionListener(this);</p><p> jbutton3.addActionListener(this);</p><p> jbutt
76、on4.addActionListener(this);</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.getSource()==jbutton1)</p><p><b> {
77、</b></p><p> LoginOfManager s=new LoginOfManager();</p><p> this.dispose();</p><p><b> }</b></p><p> if(e.getSource()==jbutton2)</p><p&
78、gt;<b> {</b></p><p><b> try {</b></p><p> new Book();</p><p> } catch (Exception e1) {</p><p> // TODO Auto-generated catch block</p>
79、<p> e1.printStackTrace();</p><p><b> }</b></p><p> this.dispose();</p><p><b> }</b></p><p> if(e.getSource()==jbutton3)</p>
80、<p><b> {</b></p><p><b> try {</b></p><p> new Return();</p><p> } catch (Exception e1) {</p><p> // TODO Auto-generated catch block&l
81、t;/p><p> e1.printStackTrace();</p><p><b> }</b></p><p> this.dispose();</p><p><b> }</b></p><p> if(e.getSource()==jbutton4){<
82、;/p><p> System.exit(0);</p><p><b> }</b></p><p><b> }</b></p><p> public void airportInformation(){</p><p> System.out.println(&
83、quot;謝謝光臨!");</p><p><b> }</b></p><p> public static void main(String[] args){</p><p> @SuppressWarnings("unused")</p><p> Logview welcom
84、e=new Logview();</p><p><b> }</b></p><p><b> }</b></p><p> 管理員系統(tǒng)界面程序:</p><p> package Mainview;</p><p> import java.awt.*;&l
85、t;/p><p> import java.awt.event.ActionEvent;</p><p> import java.awt.event.ActionListener;</p><p> import java.sql.Connection;</p><p> import java.sql.DriverManager;&l
86、t;/p><p> import java.sql.ResultSet;</p><p> import javax.swing.*;</p><p> public class LoginOfManager extends JFrame implements ActionListener{</p><p> //聲明JButton組件對(duì)
87、象</p><p> JButton jbutton1,jbutton2,jbutton3;</p><p> public LoginOfManager()</p><p><b> {</b></p><p> super("歡迎進(jìn)入管理系統(tǒng)!");</p><p>
88、; //設(shè)置內(nèi)容面板的布局模式為:流動(dòng)布局</p><p> getContentPane().setLayout(new FlowLayout());</p><p> jbutton1=new JButton("查看航班信息");</p><p> jbutton2=new JButton("查看客戶信息");&l
89、t;/p><p> jbutton3=new JButton(" 返 回 ");</p><p> getContentPane().add(jbutton1);</p><p> getContentPane().add(jbutton2);</p><p> getContentPane()
90、.add(jbutton3);</p><p> this.setBounds(300,200,360,130);</p><p> this.setVisible(true);</p><p> this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p><b>
91、 //注冊(cè)監(jiān)聽(tīng)器</b></p><p> jbutton1.addActionListener(this);</p><p> jbutton2.addActionListener(this);</p><p> jbutton3.addActionListener(this);</p><p><b> }
92、</b></p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.getSource()==jbutton1)</p><p><b> {</b></p><p> new QueryFilght();</p>
93、<p> this.dispose();</p><p><b> }</b></p><p> if(e.getSource()==jbutton2){</p><p> new Queryclient();</p><p> this.dispose();</p><p&g
94、t;<b> }</b></p><p> if(e.getSource()==jbutton3){</p><p> new Logview();</p><p> this.dispose();</p><p><b> }</b></p><p><
95、b> }</b></p><p> public static void main(String[] args){</p><p> new LoginOfManager();</p><p><b> }</b></p><p><b> }</b></p>
96、;<p><b> 訂票界面程序:</b></p><p> package Mainview;</p><p> import java.awt.GridLayout;</p><p> import java.awt.event.ActionEvent;</p><p> import jav
97、a.awt.event.ActionListener;</p><p> import java.sql.*;</p><p> import javax.swing.*;</p><p> import JDBCtool.JDBCTools;</p><p> public class Book extends JFrame imp
98、lements ActionListener{</p><p> int dingdannum=10000000; //設(shè)置初始訂單號(hào);</p><p> JLabel l4 = new JLabel("訂票數(shù)量 :");</p><p> JLabel l2 = new JLabel(" 航 班
99、 號(hào) : ");</p><p> JLabel l3 = new JLabel("請(qǐng)輸入您要訂票的航班號(hào)和機(jī)票數(shù)量!一次不能超過(guò)5張票!");</p><p> JLabel l1 = new JLabel(" 姓 名 : ");</p><p> JLabel l5=new JLab
100、el(" 證件號(hào) :");</p><p> JLabel l6=new JLabel(" 性 別 :");</p><p> JLabel l7=new JLabel(" 年 齡 :");</p><p> JTextField t1 =
101、new JTextField("", 12);</p><p> JTextField t2 = new JTextField("", 12);</p><p> JTextField t3 = new JTextField("", 12);</p><p> JTextField t4=new JT
102、extField("",12);</p><p> JTextField t5=new JTextField("",12);</p><p> JTextField t6=new JTextField("",12);</p><p> JButton b1 = new JButton("確認(rèn)
103、訂票");</p><p> JButton b2 = new JButton(" 返 回 ");</p><p> JPanel p1 = new JPanel();</p><p> JPanel p2 = new JPanel();</p><p> JPanel p3 = new JPa
104、nel();</p><p> JPanel p4 = new JPanel();</p><p> JPanel p5 = new JPanel();</p><p> JPanel p6=new JPanel();</p><p> JPanel p7=new JPanel();</p><p> JPa
105、nel p8=new JPanel();</p><p> String flight;</p><p> Connection con;</p><p> Statement stmt=null; </p><p> ResultSet rs;</p><p> Book()throws Except
106、ion{</p><p> super("歡迎進(jìn)入訂票界面!");</p><p> p1.add(l3); </p><p> p2.add(l1); p2.add(t1);</p><p> p6.add(l5);p6.add(t4);</p><p> p7.add(l6);p7
107、.add(t5);</p><p> p8.add(l7);p8.add(t6);</p><p> p3.add(l2); p3.add(t2);</p><p> p4.add(l4); p4.add(t3);</p><p> p5.add(b1); p5.add(b2);</p><p> b1.ad
108、dActionListener(this);</p><p> b2.addActionListener(this);</p><p> setLayout(new GridLayout(8,1));</p><p> this.add(p1); </p><p> this.add(p2);</p><p&
109、gt; this.add(p6);</p><p> this.add(p7);</p><p> this.add(p8);</p><p> this.add(p3);</p><p> this.add(p4);</p><p> this.add(p5);</p><p>
110、 setBounds(300, 200, 320, 380);</p><p> setResizable(false);</p><p> setVisible(true);</p><p> this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p><b>
111、 }</b></p><p> @SuppressWarnings("null")</p><p> public void actionPerformed(ActionEvent e) {</p><p> if(e.getSource() == b2){</p><p> new Logview()
112、; </p><p> this.dispose();</p><p><b> }</b></p><p> if(e.getSource() == b1){</p><p> //獲取用戶輸入的信息</p><p> String jt1=t1.
113、getText();</p><p> String jt2=t2.getText();</p><p> String jt3=t3.getText();</p><p> int tt=Integer.parseInt(jt3);</p><p> if(tt>5){l3.setText("請(qǐng)減少購(gòu)票數(shù)量!&quo
114、t;);}</p><p><b> else{</b></p><p> if(jt1.equals("")|| jt2.equals("")||jt3.equals("")){</p><p> l3.setText("所填信息不能為空!");</p
115、><p><b> }</b></p><p><b> else{</b></p><p><b> try{</b></p><p> con = JDBCTools.getConnection("king", "1230");&
116、lt;/p><p> stmt = con.createStatement();</p><p> int price=tt*420;</p><p> String sql="insert into BT values('"+jt1+"','"+tt+"','"+
117、price</p><p> +"','"+jt2+"')";</p><p> stmt.executeUpdate(sql);</p><p> JDBCTools.releaseDB(rs, stmt, con);</p><p> con=JDBCTools.ge
118、tConnection("king", "1230");</p><p> stmt=con.createStatement();</p><p> String sql2="insert into CU values('"+jt1+"','"+t4.getText()+</p
119、><p> "','"+t5.getText()+"','"+t6.getText()+"')";</p><p> stmt.executeUpdate(sql2);</p><p> JDBCTools.releaseDB(rs, stmt, con);<
120、/p><p> l3.setText("訂票成功!");</p><p> }catch(Exception e2){e2.printStackTrace();}</p><p><b> }</b></p><p><b> }</b></p><p&
121、gt;<b> } </b></p><p><b> }</b></p><p> public static void main(String[] args) throws Exception {</p><p> new Book(); </p><p><b> } &
122、lt;/b></p><p><b> }</b></p><p> 查詢航班信息界面程序:</p><p> package Mainview;</p><p> import java.awt.*;</p><p> import java.awt.event.ActionEv
123、ent;</p><p> import java.awt.event.ActionListener;</p><p> import java.sql.Connection;</p><p> import java.sql.DriverManager;</p><p> import java.sql.ResultSet;<
124、/p><p> import java.sql.Statement;</p><p> import javax.swing.*;</p><p> import JDBCtool.JDBCTools;</p><p> public class QueryFilght extends JFrame implements ActionL
125、istener{</p><p> JLabel jl1=new JLabel(" 航班號(hào) :");</p><p> JLabel jl2=new JLabel("登機(jī)時(shí)間:");</p><p> JLabel jl3=new JLabel("出發(fā)地點(diǎn): ");</p><
126、;p> JLabel jl4=new JLabel("目的地點(diǎn):");</p><p> private JTextField jd1=new JTextField(15);</p><p> private JTextField jd2=new JTextField(15);</p><p> private JTextField
127、 jd3=new JTextField(15);</p><p> private JTextField jd4=new JTextField(15);</p><p> JButton query=new JButton(" 查 詢 ");</p><p> JButton outuran=new JButton(" 返 回
128、 ");</p><p> JLabel[] jl={jl1,jl2,jl3,jl4};</p><p> private JTextField[] jt={jd1,jd2,jd3,jd4};</p><p> Box box1=Box.createVerticalBox(); //創(chuàng)建縱向Box容器</p><p&g
129、t; private Box box2=Box.createVerticalBox();</p><p> Box box3=Box.createHorizontalBox(); //創(chuàng)建橫向Box容器</p><p> Connection con;</p><p> Statement stmt;</p><p> Re
130、sultSet rs;</p><p> public QueryFilght(){</p><p> this.setTitle("查詢航班信息");</p><p> this.setBounds(300,200,260,215);</p><p> this.setVisible(true);</p&
131、gt;<p> this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> this.setResizable(false);</p><p> query.addActionListener(this);</p><p> outuran.addActionListener(th
132、is);</p><p> for(int i=0;i<4;i++)</p><p><b> {</b></p><p> box1.add(jl[i]);</p><p> box1.add(Box.createVerticalStrut(20));</p><p><b&
133、gt; }</b></p><p> box1.add(query);</p><p> for(int i=0;i<4;i++)</p><p><b> {</b></p><p> box2.add(jt[i]);</p><p> box2.add(Box.c
134、reateVerticalStrut(16));</p><p><b> }</b></p><p> box2.add(outuran);</p><p> this.add(box3); //將橫向Box容器box3添加到窗體中</p><p> box3.add(B
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 民航訂票系統(tǒng)數(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ì)飛機(jī)訂票系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)-- 航空訂票管理系統(tǒng)
- 民航售票系統(tǒng)(數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告)
- 課程設(shè)計(jì)報(bào)告-民航訂票系統(tǒng)
- 民航訂票系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--bbs系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---數(shù)據(jù)庫(kù)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--快餐訂餐系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)系統(tǒng)原理
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)設(shè)計(jì)—公司管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)快餐訂餐系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)原理及應(yīng)用課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---機(jī)房管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- oracle數(shù)據(jù)庫(kù)課程設(shè)計(jì)---在線考試系統(tǒng)數(shù)據(jù)庫(kù)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--購(gòu)物系統(tǒng)
評(píng)論
0/150
提交評(píng)論