版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《數(shù)據(jù)庫應(yīng)用課程設(shè)計》</p><p><b> 綜合實驗報告</b></p><p><b> 目錄</b></p><p> 《數(shù)據(jù)庫應(yīng)用課程設(shè)計》- 0 -</p><p> 1.概述- 3 -</p><p> 1.1 實驗?zāi)康?
2、 3 -</p><p> 1.2 實驗內(nèi)容- 3 -</p><p> 1.3 開發(fā)環(huán)境- 3 -</p><p> 1.4 經(jīng)濟(jì)方面- 4 -</p><p> 1.5 數(shù)據(jù)庫系統(tǒng)的總目標(biāo)- 4 -</p><p> 1.6 數(shù)據(jù)庫要求- 4 -</p><p> 1.
3、7 實驗報告要求- 5 -</p><p> 2.需求分析- 5 -</p><p> 2.1 分析用戶活動- 5 -</p><p> 2.2 確定系統(tǒng)范圍- 6 -</p><p> 3.概念結(jié)構(gòu)設(shè)計- 7 -</p><p> 3.1 系統(tǒng)主要功能- 7 -</p><p
4、> 3.2 設(shè)計流程圖- 8 -</p><p> 3.3 設(shè)計E-R圖- 8 -</p><p> 3.4 局部概念模型綜合成全局概念模型- 10 -</p><p> 4.邏輯結(jié)構(gòu)設(shè)計- 10 -</p><p> 4.1 概念模型轉(zhuǎn)換成邏輯模型- 10 -</p><p> 4.2 設(shè)
5、計應(yīng)用程序與數(shù)據(jù)的接口- 11 -</p><p> 4.3 評價模型- 11 -</p><p> 4.4 修正模型- 11 -</p><p> 5.物理設(shè)計- 12 -</p><p> 5.1 存儲記錄結(jié)構(gòu)設(shè)計- 12 -</p><p> 5.2 確定數(shù)據(jù)存放位置- 12 -</p
6、><p> 5.3 完整性約束- 12 -</p><p> 5.4 程序設(shè)計- 13 -</p><p> 5.5 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計- 13 -</p><p> 5.6 數(shù)據(jù)裝載- 13 -</p><p> 5.7數(shù)據(jù)庫試運行- 13 -</p><p> 6.數(shù)據(jù)庫實現(xiàn)
7、- 14 -</p><p> 7. 系統(tǒng)實現(xiàn)- 19 -</p><p> 7.1 數(shù)據(jù)庫操作語句- 19 -</p><p> DB.java(JavaBean)- 19 -</p><p> 7.2 用戶參數(shù)記錄- 21 -</p><p> UserInputInfo.java(JavaBea
8、n)- 21 -</p><p> 7.3 根據(jù)用戶身份登錄- 22 -</p><p> 7.4業(yè)務(wù)員系統(tǒng)- 23 -</p><p> 7.5管理員系統(tǒng)- 29 -</p><p> 8. 效果實現(xiàn)測試及結(jié)果- 29 -</p><p> 9.運行與維護(hù)- 37 -</p>
9、<p> 9.1 數(shù)據(jù)庫的轉(zhuǎn)載和恢復(fù)- 37 -</p><p> 9.2 數(shù)據(jù)庫安全性、完整性控制- 37 -</p><p> 9.3 數(shù)據(jù)庫性能的監(jiān)督、分析和改進(jìn)- 38 -</p><p> 9.4 數(shù)據(jù)庫的重組織和重構(gòu)造- 38 -</p><p> 10.分工情況- 38 -</p>&
10、lt;p> 11.進(jìn)度計劃與執(zhí)行情況- 39 -</p><p> 12.設(shè)計中遇到的問題及解決方案- 39 -</p><p> 13.項目總結(jié)- 40 -</p><p> 14.參考文獻(xiàn)- 41 -</p><p><b> 1.概述</b></p><p><
11、b> 1.1 實驗?zāi)康?lt;/b></p><p> ?。?)讓學(xué)生在掌握數(shù)據(jù)庫的相關(guān)理論知識后,將數(shù)據(jù)庫與軟件開發(fā)相結(jié)合,熟練掌握數(shù)據(jù)庫設(shè)計和基于數(shù)據(jù)庫的應(yīng)用程序開發(fā)。</p><p> ?。?)熟悉對數(shù)據(jù)庫的操作,包括數(shù)據(jù)庫連接、SQL語句、完整性約束、索引,以及視圖等數(shù)據(jù)庫對象的綜合運用。</p><p> ?。?)加深對理論基礎(chǔ)知識的理解:關(guān)
12、系數(shù)據(jù)庫、數(shù)據(jù)庫設(shè)計、事務(wù)等。</p><p> (4)熟練掌握一種流行的開發(fā)工具,培養(yǎng)綜合開發(fā)項目的經(jīng)驗和協(xié)作交流的能力。</p><p> (5)使學(xué)生了解使用MyEclipse開發(fā)平臺開發(fā)Java web應(yīng)用的過程和有關(guān)方法,掌握在Java程序中訪問數(shù)據(jù)庫特別是使用JavaBean訪問數(shù)據(jù)庫的程序開發(fā)過程。</p><p><b> 1.2 實
13、驗內(nèi)容</b></p><p> 項目 航空售票信息管理系統(tǒng)</p><p> 要求:能用于所有航空售票處(公司、中心,點)的客戶資料和購送票情況,以及乘機人明細(xì)資料管理,能對客戶累計購票情況進(jìn)行統(tǒng)計分析,具自動編號、快速查詢、任意組合條件查詢、客戶購票統(tǒng)計、送票員和業(yè)務(wù)員管理、操作員權(quán)限控制和密碼設(shè)置等功能,能根據(jù)任意電話號碼快速定位到某一客戶,并錄入購票明細(xì)數(shù)據(jù),其所屬
14、業(yè)務(wù)員功能可考核業(yè)務(wù)員的業(yè)績情況。能制作各種客戶資料報表和客戶購票統(tǒng)計報表等,表格制作具有較強的可擴充性。</p><p><b> 1.3 開發(fā)環(huán)境</b></p><p> 目前的技術(shù)可以支持開發(fā)的新系統(tǒng)</p><p> 操作系統(tǒng): Windows 7 系統(tǒng)</p><p> 開發(fā)工具:MyEclipse8
15、.5 + MYSQL5.1</p><p> 處理器:Intel(R) Core(TM) I5-2410M CPU @ 2.30GHz 2.30GHz</p><p> 安裝內(nèi)存(RAM):4.00GB</p><p> 系統(tǒng)類型:64位操作系統(tǒng)</p><p><b> 1.4 經(jīng)濟(jì)方面</b></
16、p><p><b> 人力成本:4人</b></p><p> 時間成本:8h*4d</p><p> 物力成本:計算機*4臺</p><p> 1.5 數(shù)據(jù)庫系統(tǒng)的總目標(biāo)</p><p> 根據(jù)項目需求搭建航空售票信息管理系統(tǒng),本系統(tǒng)主要用于所有航空售票處(公司、中心,點)內(nèi)部使用,使用對
17、象面向航空售票處的業(yè)務(wù)員與系統(tǒng)管理員,協(xié)助其進(jìn)行客戶明細(xì)資料,乘機人明細(xì)資料,員工明細(xì)資料以及航空售票信息相關(guān)的管理與處理。并且通過數(shù)據(jù)庫基本表信息,可建立相應(yīng)統(tǒng)計報表,并以可視化方式實時顯示在操作界面。</p><p> 本系統(tǒng)從分析項目需求,到建立對應(yīng)數(shù)據(jù)庫,最終搭建Web界面實現(xiàn)JSP數(shù)據(jù)庫系統(tǒng)使用。開發(fā)過程中考慮諸多現(xiàn)實因素,基于項目需求,通過MySQL軟件建立數(shù)據(jù)庫,在Web操作界面盡可能實現(xiàn)功能多元
18、化。同時本系統(tǒng)非常注重系統(tǒng)界面的設(shè)計與美化,為使用者提供舒適的用戶體驗。</p><p><b> 1.6 數(shù)據(jù)庫要求</b></p><p> 1.所有的系統(tǒng)都要包含系統(tǒng)用戶信息,有用戶登錄和添加用戶功能(管理員),另外至少包含7張相關(guān)表信息;</p><p> 2.完整的主外鍵信息;</p><p> 3.用
19、戶自定義的完整性約束;</p><p><b> 4.必要的視圖;</b></p><p> 5.每個查找都有相應(yīng)的索引;</p><p><b> 6.必要的觸發(fā)器;</b></p><p> 7.設(shè)計合理的數(shù)據(jù);</p><p> 1.7 實驗報告要求</
20、p><p> 1)完整的、規(guī)范的開題設(shè)計報告。</p><p> 2)包括目的、意義、內(nèi)容、系統(tǒng)方案、技術(shù)、具體功能和其它要求。</p><p> 3)完整的、規(guī)范的實驗報告</p><p> 4)包括目的、意義、內(nèi)容、系統(tǒng)方案、技術(shù)介紹、具體功能和其它要求。</p><p> 5)數(shù)據(jù)庫設(shè)計的各個步驟,實現(xiàn)方法
21、和效果,總結(jié)。</p><p><b> 2.需求分析</b></p><p> 2.1 分析用戶活動</p><p> 基于對航空售票信息系統(tǒng)的分析,以及項目需求實現(xiàn)需要。了解了該系統(tǒng)主要需要實現(xiàn)的功能,使用對象為業(yè)務(wù)員和系統(tǒng)管理員,故系統(tǒng)模塊由用戶登錄,業(yè)務(wù)員模塊和系統(tǒng)管理員模塊三部分組成。下面就系統(tǒng)模塊各組成部分進(jìn)行介紹。</
22、p><p><b> 用戶登錄</b></p><p> 通過登錄界面接受使用者輸入的賬號,密碼以及登錄職務(wù),系統(tǒng)在數(shù)據(jù)庫中進(jìn)行比對操作,若賬號,密碼以及職務(wù)不對應(yīng),系統(tǒng)智能提示錯誤信息,并返回登錄主界面;若登錄成功,則轉(zhuǎn)入相應(yīng)模塊界面等待使用者下一步操作。</p><p><b> 業(yè)務(wù)員模塊</b></p>
23、;<p> 業(yè)務(wù)員模塊分乘機人信息管理、客戶信息管理,客戶購票統(tǒng)計,登錄密碼修改四部分。業(yè)務(wù)員模塊主要實現(xiàn)業(yè)務(wù)員進(jìn)行乘機人資料明細(xì)管理,管理客戶資料的同時可實現(xiàn)自動編號、快速查詢、任意組合條件查詢;其中業(yè)務(wù)員可通過客戶電話號碼快速定位用戶,并錄入其購票明細(xì)數(shù)據(jù); </p><p> 另外業(yè)務(wù)員可根據(jù)客戶資料與購票信息制作各種客戶資料報表。</p><p> 乘機人信息管
24、理子模塊:實現(xiàn)對乘機人員資料的查詢、添加、修改及刪除操作;</p><p> 客戶信息管理子模塊:可通過快速查詢或任意組合條件查詢管理客戶信息;</p><p> 客戶購票統(tǒng)計子模塊:負(fù)責(zé)制作客戶購票統(tǒng)計報表,可實現(xiàn)對指定時間段內(nèi)客戶購票信息的統(tǒng)計分析;</p><p> 登錄密碼修改子模塊實現(xiàn)業(yè)務(wù)員對登錄密碼的修改操作。(注意:業(yè)務(wù)員無法進(jìn)行自主注冊,只可由
25、管理員添加并分配密碼)</p><p><b> 系統(tǒng)管理員模塊</b></p><p> 系統(tǒng)管理員模塊分員工信息管理、員工賬戶管理,員工業(yè)績報表三部分。系統(tǒng)管理員模塊主要實現(xiàn)對業(yè)務(wù)員或送票員的資料明細(xì)管理,操作員權(quán)限控制和密碼設(shè)置等功能,同時可通過制作員工業(yè)績報表考核業(yè)務(wù)員的業(yè)績情況。</p><p> 員工信息管理:系統(tǒng)管理員可通過
26、快速查詢或任意組合條件查詢管理員工信息;</p><p> 員工賬戶管理:系統(tǒng)管理員對員工賬戶進(jìn)行添加,修改其密碼,刪除操作。(注意:業(yè)務(wù)員無法進(jìn)行自主注冊,只可由管理員添加并分配密碼)</p><p> 員工業(yè)績報表:負(fù)責(zé)制作員工工作業(yè)績報表,可實現(xiàn)對指定時間段內(nèi)員工工作業(yè)績的統(tǒng)計分析;</p><p> 2.2 確定系統(tǒng)范圍</p><
27、p> 首先是主界面,用戶登錄;</p><p> ?。?)用戶登錄后,根據(jù)用戶職務(wù)(業(yè)務(wù)員或系統(tǒng)管理員),轉(zhuǎn)入相應(yīng)界面,進(jìn)行下一步操作。</p><p><b> ?。?)關(guān)聯(lián)圖如下:</b></p><p><b> 3.概念結(jié)構(gòu)設(shè)計</b></p><p> 3.1 系統(tǒng)主要功能&l
28、t;/p><p><b> 用戶登錄</b></p><p><b> 業(yè)務(wù)員功能</b></p><p><b> 乘機人資料明細(xì)管理</b></p><p><b> 客戶資料明細(xì)管理</b></p><p><b&g
29、t; 客戶購票統(tǒng)計</b></p><p><b> 業(yè)務(wù)員登錄密碼修改</b></p><p><b> 管理員功能</b></p><p><b> 員工資料明細(xì)管理</b></p><p><b> 員工賬戶管理</b><
30、/p><p><b> 員工業(yè)績報表</b></p><p><b> 3.2 設(shè)計流程圖</b></p><p><b> 流程圖同關(guān)聯(lián)圖</b></p><p> 3.3 設(shè)計E-R圖</p><p> Customer(客戶)</p&g
31、t;<p><b> Staff(員工)</b></p><p> Ticket(機票)</p><p> Flight(航班)</p><p><b> User(用戶)</b></p><p> 3.4 局部概念模型綜合成全局概念模型 </p><p&
32、gt;<b> 全局概念模型</b></p><p><b> 4.邏輯結(jié)構(gòu)設(shè)計</b></p><p> 主要是把概念模型轉(zhuǎn)換成DBMS能處理的邏輯模型,以便獲得更好的設(shè)計模型。</p><p> 4.1 概念模型轉(zhuǎn)換成邏輯模型</p><p> Customer(CNo,CName,T
33、el,ID);</p><p> Staff (SNo, SName, Job)</p><p> Ticket(TNo, Seat, Class, Price)</p><p> Flight(FNo, Gate, FromPlace, FromTime, ToPlace, ToTime, Capability)</p><p>
34、Service(Service#, ServiceTime, TNo, SNo, CNo)</p><p> TF(TNo, FNo)</p><p> USER(User, Password)</p><p> 4.2 設(shè)計應(yīng)用程序與數(shù)據(jù)的接口</p><p> 在設(shè)計完整的應(yīng)用程序之前,對應(yīng)用程序設(shè)計數(shù)據(jù)存取功能的梗概,提供應(yīng)
35、用程序與數(shù)據(jù)庫之間的邏輯接口,本系統(tǒng)所使用的是JDBC與數(shù)據(jù)庫進(jìn)行連接,間接利用javaBean來實現(xiàn)數(shù)據(jù)庫的相應(yīng)的操作,本系統(tǒng)是使用MySQL數(shù)據(jù)庫進(jìn)行操作,并通過在MyEclipse 8.5中寫入相應(yīng)的javaBean和JDBC的數(shù)據(jù)庫連接接口實現(xiàn)和MySQL數(shù)據(jù)庫的連接,從而實現(xiàn)數(shù)據(jù)庫中建立的表格進(jìn)行操作。</p><p><b> 4.3 評價模型</b></p>&
36、lt;p> 小組對于項目需求進(jìn)行了深入的討論,多次討論修正數(shù)據(jù)庫ER模型,并根據(jù)現(xiàn)實情況以及其他條件對ER模型進(jìn)行修正,實現(xiàn)了項目絕大部分需求,比較理想地表現(xiàn)了實體類型的屬性特征和不同實體間的聯(lián)系,并通過搭建數(shù)據(jù)庫和jsp界面設(shè)計實現(xiàn)邏輯構(gòu)想和項目需求操作的訴求。</p><p><b> 4.4 修正模型</b></p><p> 對于一個成熟的DBMS
37、,必須保證操作事務(wù)的一致性。事務(wù)的一致性指的是在一個事務(wù)執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫都必須處于一致性狀態(tài)。這種特性稱為事務(wù)的一致性。假如數(shù)據(jù)庫的狀態(tài)滿足所有的完整性約束,就說該數(shù)據(jù)庫是一致的。一致性處理數(shù)據(jù)庫中對所有語義約束的保護(hù)。故在系統(tǒng)實現(xiàn)中應(yīng)實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)“回滾”在操作事務(wù)未成功進(jìn)行,根據(jù)“回滾”機制保持?jǐn)?shù)據(jù)庫數(shù)據(jù)一致性。 以上要求鑒于時間緊迫,小組成員能力有限,雖有構(gòu)想,但未實現(xiàn)。</p><p><
38、b> 5.物理設(shè)計</b></p><p> 5.1 存儲記錄結(jié)構(gòu)設(shè)計</p><p> 對于數(shù)據(jù)庫中的數(shù)據(jù),為了便于系統(tǒng)JSP代碼的實現(xiàn),表格中變量基本上都是定義為字符類型,只不過對于不同的變量的字符長度可能不同,并且對于每個變量的命名可以使用中文的形式,本系統(tǒng)軟件支持中文格式的輸入輸出。強制所以字符編碼為“UTF-8”(包括中文)。</p><
39、;p> 5.2 確定數(shù)據(jù)存放位置</p><p> 本系統(tǒng)將屬于同一表格中的數(shù)據(jù)存放在一起,并且保證屬于同一學(xué)號同一同學(xué)的信息的確定性以及信息的準(zhǔn)確性。</p><p><b> 5.3 完整性約束</b></p><p> ?。?)該系統(tǒng)通過系統(tǒng)首頁登錄功能嚴(yán)格規(guī)定操作員權(quán)限,保證了功能的相對完整性。本系統(tǒng)提供了很多的提示錯誤信息
40、的界面出現(xiàn),并且在錯誤信息界面出現(xiàn)后,會在1秒內(nèi)返回原界面。</p><p> ?。?)本系統(tǒng)支持中文形式的輸入輸出,并且也可以以中文的形式將數(shù)據(jù)存放在數(shù)據(jù)庫中,同樣也可以將數(shù)據(jù)庫中的中文讀取出來進(jìn)行一定的操作。</p><p> 本系統(tǒng)遵循實體完整性約束,參照完整性約束,自定義完整性約束。其中自定義完整約束規(guī)定在TF表(航班機票)中,航班號與機票號值須有效;</p>&l
41、t;p> 系統(tǒng)管理員刪除員工賬號時,應(yīng)先解除User表(用戶)對于主鍵(同員工編號)的約束,即先刪除User表中待刪除員工的記錄,然后再進(jìn)行刪除員工信息操作。</p><p> 另外在系統(tǒng)對于數(shù)據(jù)庫的操作后臺層面,均體現(xiàn)了完整性約束規(guī)則。</p><p> 本系統(tǒng)對于每一個功能模塊都有相對應(yīng)的處理jsp文件以及顯示界面的jsp文件,jsp文件命遵循行業(yè)規(guī)則,可讀性強,從而達(dá)到顯
42、示與處理分開,使得代碼實現(xiàn)思路更加明確。</p><p><b> 5.4 程序設(shè)計</b></p><p> 本系統(tǒng)使用的開發(fā)工具是:MySql MyEclipse 8.5 </p><p> 本系統(tǒng)使用的技術(shù)有:JavaBean JSP JDBC Java HTML</p><p> 5.5 數(shù)
43、據(jù)庫結(jié)構(gòu)設(shè)計</p><p> 確定了數(shù)據(jù)庫邏輯結(jié)構(gòu)與物理結(jié)構(gòu)后,根據(jù)所選用的DBMS提供的數(shù)據(jù)定義語言來嚴(yán)格描述數(shù)據(jù)結(jié)構(gòu)。</p><p><b> 5.6 數(shù)據(jù)裝載</b></p><p> 本系統(tǒng)所需要的數(shù)據(jù)量并不是非常大,我們只要通過一定的數(shù)據(jù)量來驗證本系統(tǒng)運行是否能夠成功,是否能夠連接的上數(shù)據(jù)庫,所以本軟件在數(shù)據(jù)裝載的時候完全是
44、使用手工的形式載入,本軟件數(shù)據(jù)庫中在軟件運行之前載入了6組樣例數(shù)據(jù),用于檢測軟件使用的正確性,在軟件的使用過程中,同樣會對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢,刪除,修改,增添,所以在軟件使用的過程中數(shù)據(jù)庫中的數(shù)據(jù)是在不斷的更變的,數(shù)據(jù)變化率較高。</p><p><b> 5.7數(shù)據(jù)庫試運行</b></p><p> 應(yīng)用程序調(diào)試完成,并有一小部分?jǐn)?shù)據(jù)入庫后,就可以開始數(shù)據(jù)庫
45、的試運行。此時系統(tǒng)還不穩(wěn)定,要做好數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)工作。</p><p> ?。?)功能調(diào)試,即運行應(yīng)用程序,測試程序的各種功能。</p><p> ?。?)性能測試,測量系統(tǒng)的性能指標(biāo),分析是否符合設(shè)計目標(biāo)。</p><p><b> 6.數(shù)據(jù)庫實現(xiàn)</b></p><p> Customer(客戶)</p
46、><p><b> Staff(員工)</b></p><p> Flight(航班)</p><p> Ticket(機票)</p><p><b> TF(航班機票)</b></p><p> Service(服務(wù)表)</p><p><
47、;b> User(用戶)</b></p><p> customerstat視圖(客戶購票信息統(tǒng)計)</p><p> passengerinfoview視圖(乘機人信息統(tǒng)計)</p><p> staffstat視圖(員工業(yè)績報表)</p><p><b> 系統(tǒng)實現(xiàn)</b></p&g
48、t;<p> 本系統(tǒng)對數(shù)據(jù)庫中操作包括對數(shù)據(jù)庫中表的信息增添,刪除,查詢,修改。</p><p> 7.1 數(shù)據(jù)庫操作語句</p><p> DB.java(JavaBean)</p><p> package org.db.javabean;</p><p> import java.sql.*;</p>
49、<p> public class DB {</p><p> // 成員變量初始化</p><p> Connection conn = null; // 數(shù)據(jù)庫連接</p><p> Statement stmt =null;</p><p> ResultSet rs = null; // 記錄集</p&g
50、t;<p> String Username = ""; // 用戶名</p><p> String Password = ""; // 密碼</p><p> String email = ""; </p><p> String tel = ""; </
51、p><p> //String url = "jdbc:mysql://localhost:3306/airticket2";</p><p> String url = "jdbc:mysql://localhost:3306/airticket2?seUnicode=true&characterEncoding=utf-8";</p
52、><p> String user="root";</p><p> String password="zhoujinghua";</p><p> // db的構(gòu)建器 (數(shù)據(jù)庫的上下三個差別?。?lt;/p><p> public DB() {</p><p><b&g
53、t; try {</b></p><p> String name = "com.mysql.jdbc.Driver";</p><p> Class.forName(name);</p><p> conn = DriverManager.getConnection(url,user,password);</p&
54、gt;<p> System.out.println("connect success");</p><p> } catch (Exception e) {</p><p> // 這樣寫是為了方便調(diào)試程序,出錯打印mydb:就知道在什么地方出錯了</p><p> System.err.println("myd
55、b: " + e.getMessage());</p><p><b> }</b></p><p><b> }</b></p><p> //關(guān)閉所有的數(shù)據(jù)庫連接資源</p><p> public void closeResource(){</p><p&
56、gt;<b> try{</b></p><p> if(rs!=null)</p><p> rs.close();</p><p> if(stmt!=null)</p><p> stmt.close();</p><p> if(conn!=null);</p>
57、<p> conn.close();</p><p><b> }</b></p><p> catch(Exception e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p><
58、b> }</b></p><p> // executeQuery方法用于進(jìn)行記錄的查詢操作</p><p> // 入口參數(shù)為sql語句,返回ResultSet對象</p><p> public ResultSet executeQuery(String sql) {</p><p> rs = null;&l
59、t;/p><p><b> try {</b></p><p> Statement stmt = conn.createStatement();</p><p> // 執(zhí)行數(shù)據(jù)庫查詢操作</p><p> rs = stmt.executeQuery(sql);</p><p>
60、} catch (SQLException ex) {</p><p> System.err.println("db.executeQuery: " + ex.getMessage());</p><p><b> }</b></p><p> return rs;</p><p><b
61、> }</b></p><p> // executeUpdate方法用于進(jìn)行add或者update記錄的操作</p><p> // 入口參數(shù)為sql語句,成功返回true,否則為false</p><p> public boolean executeUpdate(String sql) {</p><p>
62、boolean bupdate = false;</p><p> rs = null;</p><p><b> try {</b></p><p> // 建立數(shù)據(jù)庫連接,其它參數(shù)說明同上面的一樣</p><p> stmt = conn.createStatement();</p><p
63、> int rowCount = stmt.executeUpdate(sql);</p><p> // 如果不成功,bupdate就會返回0</p><p> if (rowCount != 0)</p><p> bupdate = true;</p><p> } catch (SQLException ex) {&l
64、t;/p><p><b> // 打印出錯信息</b></p><p> System.err.println("db.executeUpdate:" + ex.getMessage());</p><p><b> }</b></p><p> return bupdate
65、;</p><p><b> }</b></p><p> // toChinese方法用于將一個字符串進(jìn)行中文處理</p><p> // 否則將會是???這樣的字符串</p><p> public static String toChinese(String strvalue) {</p>&
66、lt;p><b> try {</b></p><p> if (strvalue == null) {</p><p> return null;</p><p><b> } else {</b></p><p> strvalue = new String(strvalue.g
67、etBytes("ISO8859-1"), "UTF-8");</p><p> return strvalue;</p><p><b> }</b></p><p> } catch (Exception e) {</p><p> return null;</p
68、><p><b> }</b></p><p><b> }</b></p><p> 7.2 用戶參數(shù)記錄 </p><p> UserInputInfo.java(JavaBean)</p><p> package org.db.javabean;</p&g
69、t;<p> public class UserInputInfo{</p><p> private String Number, Name, Tel, Password, Status;</p><p> public void setNumber(String cn) {Number = cn;}</p><p> public voi
70、d setName(String nm) {Name = nm;}</p><p> public void setTel(String tl) {Tel = tl;}</p><p> public void setPsw(String psw) {Password = psw;}</p><p> public void setStatus(
71、String st){</p><p> if(st.equals("2")) Status = "Sellor";</p><p> if(st.equals("3")) Status = "Admin";</p><p><b> }</b></p&
72、gt;<p> public String getNumber() {return this.Number;}</p><p> public String getName() {return this.Name;}</p><p> public String getPsw() {return this.Password;}</p><p>
73、 public String getTel() {return this.Tel;}</p><p> public String getStatus(){return this.Status;}</p><p><b> }</b></p><p> 7.3 根據(jù)用戶身份登錄</p><p> 從前臺提取表單
74、數(shù)據(jù) -> 連接數(shù)據(jù)庫 ->查詢數(shù)據(jù)庫 -> 判斷用戶名密碼是否匹配 -> 判斷登錄模式與身份是否匹配 -> 提示相應(yīng)信息并跳轉(zhuǎn)</p><p><b> 具體實現(xiàn):</b></p><p><b> 數(shù)據(jù)庫連接:</b></p><p><b> 詳見7.1</b>
75、;</p><p> 從前臺獲取表單信息,放入指定變量中:</p><p> request.setCharacterEncoding("UTF-8");</p><p> String UserNumber = request.getParameter("id");</p><p> Stri
76、ng UserPsw = request.getParameter("password");</p><p> String UserStatus = request.getParameter("status");</p><p> User.setNumber(UserNumber);</p><p> User.se
77、tStatus(UserStatus);</p><p> 用戶名密碼查詢與匹配:</p><p><b> 查詢語句:</b></p><p> String sql = "</p><p> select * from student,employment where student.s# = em
78、ployment.s# and student.s# = ‘” + s+ “’;</p><p> 登錄模式查詢與匹配:</p><p><b> 查詢語句:</b></p><p> String sql2 = "SELECT SName FROM STAFF WHERE SNO = \"" + User
79、Number + "\";"</p><p><b> 提示相應(yīng)信息并跳轉(zhuǎn)</b></p><p> if(User.getStatus().equals("Sellor") && Tstatus.charAt(0) == 'Y'){</p><p> re
80、sponse.setHeader("Refresh","1;URL=/AirTicket/Sellor/Main.jsp");</p><p><b> }</b></p><p> else if(User.getStatus() == "Admin" && Tstatus.charAt
81、(0) == 'G'){</p><p> response.setHeader("Refresh","1;URL=/AirTicket/Admin/Main.jsp");</p><p><b> 業(yè)務(wù)員系統(tǒng)</b></p><p><b> 主頁面</b>&
82、lt;/p><p><b> 總頁面</b></p><p> <frameset rows="90, *"></p><p> <frame src="Top.jsp" cols="" scrolling="no"/></p>
83、<p> <frameset rows="*" cols="197,85%"></p><p> <frame src="Left.jsp" name="left" scrolling="no"/></p><p> <frame src=&
84、quot;Bottom.jsp" name = "main"/></p><p> </frameset> </p><p> </frameset><noframes></noframes></p><p><b> 頂部頁面</b></
85、p><p> <p align="right"></p><p> <script language=JavaScript> </p><p> today=new Date(); </p><p> function initArray(){ </p><p> th
86、is.length=initArray.arguments.length </p><p> for(var i=0;i<this.length;i++) </p><p> this[i+1]=initArray.arguments[i]} </p><p> var d=new initArray( </p><p><
87、b> "星期日", </b></p><p><b> "星期一", </b></p><p><b> "星期二", </b></p><p><b> "星期三", </b></p>
88、;<p><b> "星期四", </b></p><p><b> "星期五", </b></p><p><b> "星期六"); </b></p><p> document.write( </p>
89、<p> "<font color=#FF6600 style='font-size:10pt;font-family: 微軟雅黑'> ", </p><p> today.getYear(),"年", </p><p> today.getMonth()+1,"月", </p&g
90、t;<p> today.getDate(),"日 ", </p><p> d[today.getDay()+1], </p><p> "</font>" );</p><p> </script> </p><p> &n
91、bsp;</p><p> <a href="/AirTicket/index.jsp" target="_top" class="STYLE1" align="right" >注銷</a> </p></p><p><b> 左頁面</b><
92、;/p><p><b> <center></b></p><p> <span class="STYLE1">用戶 :</p><p> <% out.println(User.getName()); %> </p><p><b> 歡迎您!<
93、;br></b></p><p> </span><br></p><p> <strong><a href="Passenger/PassengerAdmin.jsp" target="main" class="STYLE3">乘機人員信息</a>
94、<br></p><p><b> <br></b></p><p><b> <br></b></p><p> <a href="Customer/CustomerAdmin.jsp" target="main" class=&qu
95、ot;STYLE3">客戶信息管理</a><br></p><p><b> <br></b></p><p><b> <br></b></p><p> <a href="CustomerStat/CustomerStat.jsp&q
96、uot; target="main" class="STYLE3">客戶購票統(tǒng)計</a><br></p><p><b> <br></b></p><p><b> <br></b></p><p> <a href
97、="MyAccount.jsp" target="main" class="STYLE3">登錄密碼修改</a></strong></p><p><b> </center></b></p><p><b> 右頁面</b></p&g
98、t;<p><b> 空</b></p><p><b> 乘機人員信息頁面</b></p><p> 設(shè)計思路:從前臺提取表單數(shù)據(jù) -> 連接數(shù)據(jù)庫 -> 操作數(shù)據(jù)庫 -> 判定表單信息 -> 獲取結(jié)果</p><p><b> 前臺提取表單數(shù)據(jù)</b>
99、</p><p><b> 查詢:</b></p><p> String FNO = request.getParameter("fno");</p><p><b> 刪除:</b></p><p> String FNO = request.getParameter
100、("fno");</p><p> String CNO = request.getParameter("cno");</p><p><b> 修改:</b></p><p> String CNO = request.getParameter("cno");</p>
101、;<p> String OFNO = request.getParameter("ofno");</p><p> String NFNO = request.getParameter("nfno");</p><p> String OTNO = request.getParameter("otno");&
102、lt;/p><p> String NTNO = request.getParameter("ntno");</p><p> String SEAT = request.getParameter("seat");</p><p> String CLASS = request.getParameter("clas
103、s");</p><p> String PRICE = request.getParameter("price");</p><p><b> 添加:</b></p><p> String CNO = request.getParameter("cno");</p>&l
104、t;p> String FNO = request.getParameter("fno");</p><p> String TNO = request.getParameter("tno");</p><p> String SEAT = request.getParameter("seat");</p>
105、<p> String CLASS = new String(request.getParameter("class").getBytes("ISO8859-1"),"UTF-8");</p><p> String PRICE = request.getParameter("price");</p>
106、<p><b> 連接數(shù)據(jù)庫</b></p><p><b> 見7.3</b></p><p><b> 操作數(shù)據(jù)庫</b></p><p> 查詢:String sql = "SELECT * FROM PASSENGERINFOVIEW WHERE FNO = \&q
107、uot;"+ FNO +"\";";</p><p> 刪除:String sql = "DELETE FROM SERVICE WHERE CNO = \""+CNO+"\" AND TNO IN(SELECT TNO FROM TF WHERE FNO = \""+FNO+"\"
108、);";</p><p> 修改:sql = "UPDATE SERVICE SET TNO = \""+NTNO+"\" WHERE CNO = \""+CNO+"\" AND TNO IN(SELECT TNO FROM TF WHERE FNO = \""+OFNO+"\&qu
109、ot;);";</p><p> 添加:sql = "INSERT INTO SERVICE(TNO,SNO,CNO) VALUES(\""+TNO+"\",\""+User.getNumber()+"\",\""+CNO+"\")";</p>&l
110、t;p><b> 判斷信息</b></p><p><b> 見7.3</b></p><p><b> 獲取結(jié)果</b></p><p><b> 查詢: </b></p><p> rs.last();</p>&l
111、t;p><b> %></b></p><p><b> <center></b></p><p> <table border="2" width="800"></p><p><b> <caption></
112、b></p><p> <span class="STYLE1">乘機人信息查詢結(jié)果</span></p><p> </caption></p><p> <tr bgcolor="CCCCCC" align="center"></p>
113、;<p> <th><span class="STYLE2">記錄條數(shù)</span></th></p><p> <th><span class="STYLE2">航班號</span></th></p><p> <th>&
114、lt;span class="STYLE2">客戶編號</span></th></p><p> <th><span class="STYLE2">客戶姓名</span></th></p><p> <th><span class="STYL
115、E2">客戶手機</span></th></p><p><b> </tr></b></p><p><b> <%</b></p><p> rs.beforeFirst();</p><p> while(rs.next()){
116、</p><p><b> %></b></p><p> <tr align="center"></p><p> <td><%=rs.getRow() %></td></p><p> <td><%=rs.getStr
117、ing("FNo") %></td></p><p> <td><%=rs.getString("CNo") %></td></p><p> <td><%=rs.getString("CName") %></td></p>
118、<p> <td><%=rs.getString("Tel") %></td></p><p><b> </tr></b></p><p> 刪除: if(rs){</p><p> out.println("刪除成功!");</
119、p><p><b> }</b></p><p><b> else{</b></p><p> out.println("刪除失??!");</p><p><b> }</b></p><p><b> 修改: &l
120、t;/b></p><p><b> if(rs){</b></p><p> out.println("修改SERVICE成功!<br>");</p><p><b> }</b></p><p><b> else{</b>&l
121、t;/p><p> out.println("修改SERVICE失?。?lt;br>");</p><p><b> } </b></p><p> sql = "DELETE FROM TF WHERE TNO = \""+OTNO+"\" AND FNO =
122、\""+OFNO+"\";";</p><p> //out.println(sql+"<br>");</p><p> rs = DB.executeUpdate(sql);</p><p><b> if(rs){</b></p><
123、p> out.println("刪除舊TF成功!<br>");</p><p><b> }</b></p><p><b> else{</b></p><p> out.println("刪除舊TF失敗!<br>");</p>
124、<p><b> }</b></p><p> sql = "INSERT INTO TICKET VALUES(\""+NTNO+"\",\""+SEAT+"\",\""+CLASS+"\",\""+PRICE+"\&
125、quot;);";</p><p> //out.println(sql+"<br>");</p><p> rs = DB.executeUpdate(sql);</p><p><b> if(rs){</b></p><p> out.println("插
126、入新TICKET成功!<br>");</p><p><b> }</b></p><p><b> else{</b></p><p> out.println("插入新TICKET失??!<br>");</p><p><b>
127、 } </b></p><p> sql = "DELETE FROM TICKET WHERE TNO = \""+OTNO+"\";";</p><p> //out.println(sql+"<br>");</p><p> rs = DB.exec
128、uteUpdate(sql);</p><p><b> if(rs){</b></p><p> out.println("刪除舊TICKET成功!<br>");</p><p><b> }</b></p><p><b> else{</
129、b></p><p> out.println("刪除舊TICKET失敗!<br>");</p><p><b> }</b></p><p> sql = "INSERT INTO TF VALUES(\""+NTNO+"\",\"&quo
130、t;+NFNO+"\");";</p><p> //out.println(sql+"<br>");</p><p> rs = DB.executeUpdate(sql);</p><p><b> if(rs){</b></p><p> out
131、.println("插入新TF成功!<br>");</p><p><b> }</b></p><p><b> else{</b></p><p> out.println("插入新TF失?。?lt;br>");</p><p>&
132、lt;b> }</b></p><p><b> 添加: </b></p><p><b> if(rs){</b></p><p> out.println("插入新SERVICE成功!<br>");</p><p><b>
133、; }</b></p><p><b> else{</b></p><p> out.println("插入新SERVICE失??!<br>");</p><p><b> } </b></p><p> sql = "INSERT I
134、NTO TICKET VALUES(\""+TNO+"\",\""+SEAT+"\",\""+CLASS+"\",\""+PRICE+"\");";</p><p> //out.println(sql+"<br>&quo
135、t;);</p><p> rs = DB.executeUpdate(sql);</p><p><b> if(rs){</b></p><p> out.println("插入新TICKET成功!<br>");</p><p><b> }</b><
136、;/p><p><b> else{</b></p><p> out.println("插入新TICKET失?。?lt;br>");</p><p><b> } </b></p><p> sql = "INSERT INTO TF VALUES(\&qu
137、ot;"+TNO+"\",\""+FNO+"\");";</p><p> //out.println(sql+"<br>");</p><p> rs = DB.executeUpdate(sql);</p><p><b> if(rs
138、){</b></p><p> out.println("插入新TF成功!<br>");</p><p><b> }</b></p><p><b> else{</b></p><p> out.println("插入新TF失??!&l
139、t;br>");</p><p><b> }</b></p><p><b> 客戶信息管理</b></p><p> 設(shè)計思路:從前臺提取表單數(shù)據(jù) -> 連接數(shù)據(jù)庫 -> 操作數(shù)據(jù)庫 -> 判定表單信息 -> 給出結(jié)果</p><p> 從前臺獲取
140、表單信息,放入指定變量中: </p><p><b> 詳見7.4.2</b></p><p><b> 數(shù)據(jù)庫連接:</b></p><p><b> 詳見7.4.2</b></p><p><b> 數(shù)據(jù)庫操作:</b></p>
141、<p><b> 詳見7.4.2</b></p><p><b> 判定表單信息:</b></p><p><b> 詳見7.4.2</b></p><p><b> 得出結(jié)果</b></p><p><b> 詳見7.4.2
142、</b></p><p><b> 客戶信息統(tǒng)計</b></p><p> 設(shè)計思路:從前臺提取表單數(shù)據(jù) -> 連接數(shù)據(jù)庫 -> 查詢數(shù)據(jù)庫 -> 判定表單信息 -> 給出相應(yīng)信息提示。</p><p> 具體實現(xiàn): 詳見7.4.2。</p><p><b> 登錄密
143、碼修改</b></p><p> 設(shè)計思路:從前臺提取表單數(shù)據(jù) -> 連接數(shù)據(jù)庫 -> 查詢數(shù)據(jù)庫 -> 判定表單信息 -> 給出相應(yīng)信息提示。</p><p> 具體實現(xiàn):詳見7.4.2。</p><p><b> 管理員系統(tǒng)</b></p><p> 員工信息管理 見
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計航空售票管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告-車站售票管理系統(tǒng)
- 車站售票管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計報告
- 數(shù)據(jù)庫課程設(shè)計報告---車站售票管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告--學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計報告
- 數(shù)據(jù)庫課程設(shè)計報告-宿舍信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告----賓館信息管理系統(tǒng)
- 民航售票系統(tǒng)(數(shù)據(jù)庫課程設(shè)計報告)
- 數(shù)據(jù)庫課程設(shè)計報告--教室信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---宿舍信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--教室信息管理系統(tǒng).
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生信息管理系統(tǒng)
- 圖書信息管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計報告
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計-員工信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--顧客信息管理系統(tǒng)
- sql數(shù)據(jù)庫(學(xué)生信息管理系統(tǒng))課程設(shè)計報告
- 數(shù)據(jù)庫課程設(shè)計課程設(shè)計論文-醫(yī)院信息管理數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計-客房信息管理系統(tǒng)
評論
0/150
提交評論