數(shù)據(jù)庫課程設(shè)計(jì)-機(jī)票預(yù)訂系統(tǒng)_第1頁
數(shù)據(jù)庫課程設(shè)計(jì)-機(jī)票預(yù)訂系統(tǒng)_第2頁
數(shù)據(jù)庫課程設(shè)計(jì)-機(jī)票預(yù)訂系統(tǒng)_第3頁
數(shù)據(jù)庫課程設(shè)計(jì)-機(jī)票預(yù)訂系統(tǒng)_第4頁
數(shù)據(jù)庫課程設(shè)計(jì)-機(jī)票預(yù)訂系統(tǒng)_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、數(shù)據(jù)庫原理課程設(shè)計(jì)機(jī)票預(yù)訂管理系統(tǒng)學(xué) 院: 計(jì)算機(jī)與信息科學(xué)學(xué)院專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級:計(jì)科1303姓名學(xué)號: XXX 13203403XX 指導(dǎo)教師: 高金華 職稱 講師完成時(shí)間:2015年12月數(shù)據(jù)庫原理課程設(shè)計(jì)11 系統(tǒng)概述32 數(shù)據(jù)庫設(shè)計(jì)42.1 需求分析42.2 概念結(jié)構(gòu)設(shè)計(jì)72.3 邏輯結(jié)構(gòu)設(shè)計(jì)102.4 物理結(jié)構(gòu)設(shè)計(jì)112.5 設(shè)計(jì)小結(jié)153 應(yīng)用程序設(shè)計(jì)163.1 需求分析163.2 概要設(shè)計(jì)193.3 詳細(xì)設(shè)計(jì)203.4 系統(tǒng)測試323.5 設(shè)計(jì)小結(jié)381 系統(tǒng)概述隨著全球進(jìn)入信息化時(shí)代,航空公司為了適應(yīng)當(dāng)前越來越激烈的競爭,增強(qiáng)公司的信息化程度,提高公司的售票管

2、理的效率,就建立起了相應(yīng)的航空預(yù)訂票系統(tǒng),成功實(shí)現(xiàn)提高了航空系統(tǒng)的售票效率和管理水平。在計(jì)算機(jī)網(wǎng)絡(luò),數(shù)據(jù)庫和先進(jìn)的開發(fā)平臺上,利用現(xiàn)有的軟件,配置一定的硬件,開發(fā)一個(gè)具有開放體系結(jié)構(gòu)的、易擴(kuò)充的、易維護(hù)的、具有良好人機(jī)交互界面的機(jī)票預(yù)定系統(tǒng),實(shí)現(xiàn)航空公司的機(jī)票銷售的自動化的計(jì)算機(jī)系統(tǒng),為企業(yè)的決策層提供準(zhǔn)確、精細(xì)、迅速的機(jī)票銷售信息。根據(jù)可行性研究的結(jié)果和客戶的要求,分析現(xiàn)有情況及問題。隨著社會發(fā)展的不斷地進(jìn)步,人民消費(fèi)水平的不斷地提高,致使民航事業(yè)不斷壯大,乘坐民航的消費(fèi)者越來越多,因此機(jī)票的預(yù)定也越顯重要,航空公司為方便客戶出行,需開發(fā)一個(gè)機(jī)票預(yù)定系統(tǒng)。根據(jù)預(yù)定機(jī)票的客戶信息,包括姓名、性

3、別、身份證號碼、出行時(shí)間、出行目的地等,系統(tǒng)經(jīng)過查詢航空公司內(nèi)的航班數(shù)據(jù)服務(wù)器后,為旅客安排航班2 數(shù)據(jù)庫設(shè)計(jì)2.1 需求分析2.1.1 數(shù)據(jù)流圖數(shù)據(jù)庫用 戶用戶信息錄入機(jī) 票訂票、改簽、退票機(jī)票信息錄入管理員更新航班信息航 班2.1.2 數(shù)據(jù)詞典表2-1 plane飛機(jī)信息表表中列名數(shù)據(jù)類型可否為空說明flightNumvarchar2primary key飛機(jī)編號seatsnumbernot null座位數(shù)表2-2 flight航班信息表表中列名數(shù)據(jù)類型可否為空說明 flightNumvarchar2primary key航班編號planeNumvarchar2not null飛機(jī)編號st

4、artPointvarchar2not null 出發(fā)地detinationvarchar2not null目的地startTimevarchar2not null起飛時(shí)間endTimevarchar2not null到達(dá)時(shí)間表2-3 ticket 機(jī)票表表中列名數(shù)據(jù)類型可否為空說明 flightNumvarchar2primary key航班號gradevarchar2not null機(jī)艙等級seatNumvarchar2not null 座位號ticketPricenumbernot null機(jī)票價(jià)格presellvarchar2not null預(yù)售狀態(tài)表2-4 passenger 旅客表

5、表中列名數(shù)據(jù)類型可否為空說明 namevarchar2primary key旅客名sexvarchar2not null旅客性別idNumvarchar2not null 身份證phoneNumvarchar2not null手機(jī)號passwordvarchar2not null密碼表2-5 buy購買表表中列名數(shù)據(jù)類型可否為空說明 namevarchar2foreign key旅客名flightNumvarchar2foreign key航班號greadvarchar2not null 機(jī)艙等級seatNumvarchar2not null座位號paymoneynumbernot null機(jī)

6、票價(jià)格buyNumvarchar2not null購買數(shù)量表2-6 manager 管理員表表中列名數(shù)據(jù)類型可否為空說明 mnamevarchar2not null unique管理員編號mpwdvarchar2not null管理員姓名2.1.3 加工說明我們的系統(tǒng)需要六個(gè)實(shí)體:(1)飛機(jī)實(shí)體實(shí)體名:plane角色:關(guān)于飛機(jī)的信息屬性:飛機(jī)編號,座位數(shù)主鍵:飛機(jī)編號(2)航班實(shí)體實(shí)體名:flight角色:航班信息屬性:航班編號,出發(fā)地,目的地,起飛時(shí)間,到達(dá)時(shí)間主鍵:航班編號(3)機(jī)票實(shí)體實(shí)體名:ticket角色:機(jī)票信息屬性:航班號,機(jī)艙等級,座位號,機(jī)票價(jià)格,余票數(shù)主鍵:座位號(4)旅客

7、實(shí)體實(shí)體名:passenger角色:旅客信息屬性:旅客名,旅客性別,身份證,手機(jī)號,密碼主鍵:旅客名(5)機(jī)票購買實(shí)體實(shí)體名:buy角色:旅客購買機(jī)票后的信息屬性:旅客名,航班號,機(jī)艙等級,座位號,機(jī)票價(jià)格,購買數(shù)量(6)管理員實(shí)體實(shí)體名:manager角色:管理員信息屬性:管理員名,密碼2.2 概念結(jié)構(gòu)設(shè)計(jì)2.2.1 E-R圖根據(jù)需求分析抽象出信息結(jié)構(gòu),可得該系統(tǒng)的E-R圖。(1) 航班實(shí)體屬性圖,航班的信息由航班號、飛機(jī)編號、出發(fā)地、目的地、起飛時(shí)間、到達(dá)時(shí)間等屬性組成如圖所示。起飛時(shí)間目的地航班號到達(dá)時(shí)間出發(fā)地飛機(jī)編號航班信息圖(1)航班信息實(shí)體屬性圖(2) 飛機(jī)是實(shí)體屬性圖,飛機(jī)信息由

8、飛機(jī)編號和座位數(shù)屬性組成如圖所示。座位數(shù)飛機(jī)編號飛機(jī)信息圖(2)飛機(jī)信息實(shí)體屬性圖(3) 管理員實(shí)體屬性圖,管理員信息由姓名和登錄密碼屬性組成如圖所示登陸密碼姓名管理員信息圖(3)管理員信息實(shí)體屬性圖(4) 機(jī)票實(shí)體屬性圖,機(jī)票信息有:航班號、機(jī)艙等級、座位號、票價(jià)、預(yù)售狀態(tài)等屬性如圖所示。座位號機(jī)艙等級票價(jià)航班號預(yù)售狀態(tài)機(jī)票信息圖(4)機(jī)票信息實(shí)體屬性圖(5) 旅客屬性圖,旅客信息有:身份證號、姓名、性別、聯(lián)系方式、密碼等屬性如圖所示。性別聯(lián)系方式姓名密碼身份證號旅客信息圖(5)旅客信息實(shí)體屬性圖(6) 訂單屬性圖,訂單信息有:姓名、航班號、座位號、機(jī)艙等級、金額、訂單數(shù)等屬性如圖所示。座位

9、號航班號機(jī)艙等級金額姓名訂單數(shù)訂單信息圖(6)訂單信息實(shí)體屬性圖根據(jù)屬性圖和需求分析,可得到總E-R圖,如圖所示。圖(7)總的E-R圖2.3 邏輯結(jié)構(gòu)設(shè)計(jì)2.3.1 關(guān)系模式將總體概念結(jié)構(gòu)E-R圖轉(zhuǎn)化成關(guān)系模型。(主鍵用下劃線標(biāo)出)飛機(jī)(飛機(jī)編號,座位數(shù))航班(航班編號,飛機(jī)編號,出發(fā)地,目的地,起飛時(shí)間,到達(dá)時(shí)間)管理員(管理員姓名,密碼)機(jī)票(航班編號,機(jī)艙等級,座位號,票價(jià),當(dāng)前預(yù)售狀態(tài))旅客(身份證號 ,姓名,性別,密碼,聯(lián)系電話)購買(姓名,航班號,座位號,機(jī)艙等級,實(shí)付款,數(shù)量)2.4 物理結(jié)構(gòu)設(shè)計(jì)根據(jù)總體結(jié)構(gòu)圖設(shè)計(jì)機(jī)票預(yù)定系統(tǒng)基本表結(jié)構(gòu),其相應(yīng)標(biāo)的定義如下:表1 飛機(jī)信息中文名稱

10、類型長度是否非空主關(guān)鍵字備注飛機(jī)編號varchar210Y座位數(shù)numberN總座位表2 航班信息中文名稱類型長度是否非空主關(guān)鍵字備注航班號varchar210Y飛機(jī)編號varchar210N機(jī)艙等級varchar210N起飛地varchar210N目的地varchar210N起飛時(shí)間varchar2年月日/時(shí)分到達(dá)時(shí)間varchar2年月日/時(shí)分表3管理員信息中文名稱類型長度是否非空主關(guān)鍵字備注管理員姓名char10Y登陸密碼char10N表4機(jī)票信息中文名稱類型長度是否非空主關(guān)鍵字備注航班號char10N機(jī)艙等級char10N座位號char10Y票價(jià)float(2)N 元當(dāng)前預(yù)售狀態(tài)cha

11、r10NY/N 表5旅客信息中文名稱類型長度是否非空主關(guān)鍵字備注旅客姓名char10Y身份證號char10N性別char10N聯(lián)系方式char10N密碼char15N表4-6 購買信息中文名稱類型長度是否非空主關(guān)鍵字備注旅客姓名char10Y座位號char10N航班號float(1)機(jī)艙等級float(2)NN 實(shí)付款intNN購買數(shù)量char10N數(shù)據(jù)庫實(shí)現(xiàn):-飛機(jī)信息表 planecreate table plane(flightNum varchar2(10), -航班號seats number(8) not null -座位數(shù));insert into plane values(

12、9;航班1',5);insert into plane values('航班2',5);insert into plane values('航班3',5);insert into plane values('航班4',5);select *from plane;-航班表 flightcreate table flight(flightNum varchar2(10) primary key, -航班編號planeNum varchar2(10), -飛機(jī)編號startPoint varchar2(20) not null, -出發(fā)地 de

13、tination varchar2(10) not null, -目的地startTime varchar2(20) not null, -起飛時(shí)間endtime varchar2(20) not null -到達(dá)時(shí)間);-插入數(shù)據(jù)到航班表(flight)中insert into flight values('航班1','長沙','武漢','2015-12-29 08:00','2015-12-29 10:00');insert into flight values('航班2','北京

14、9;,'臺灣','2015-12-30 08:30','2015-12-29 11:00');insert into flight values('航班3','北京','上海','2016-01-01 11:30','2016-01-1 15:00');insert into flight values('航班4','廣州','杭州','2016-01-10 09:00','2016-01-02

15、10:00');select *from flight;-航班表的flightNum作為飛機(jī)信息表flightNum的外鍵alter table plane add constraint fk_fn foreign key(flightNum) references flight(flightNum);-創(chuàng)建機(jī)票表 ticketcreate table ticket(flightNum varchar2(10) not null , -航班號grade varchar2(10) not null, -機(jī)艙等級seatNum varchar2(10) primary key, -座位號t

16、icketPrice float(2) not null, -機(jī)票價(jià)格presell varchar2(10) not null -余票數(shù));-插入數(shù)據(jù)到機(jī)票表(ticket)中insert into ticket values('航班1','頭等艙','1-01','500','1');insert into ticket values('航班1','公務(wù)艙','1-02','400','1');insert into ticket

17、values('航班1','公務(wù)艙','1-03','400','1');insert into ticket values('航班1','經(jīng)濟(jì)艙','1-04','300','1');insert into ticket values('航班1','經(jīng)濟(jì)艙','1-05','300','1');insert into ticket values('

18、航班2','頭等艙','2-01','500','1');insert into ticket values('航班2','公務(wù)艙','2-02','400','1');insert into ticket values('航班2','公務(wù)艙','2-03','400','1');insert into ticket values('航班2',

19、9;經(jīng)濟(jì)艙','2-04','300','1');insert into ticket values('航班2','經(jīng)濟(jì)艙','2-05','300','1');insert into ticket values('航班3','頭等艙','3-01','500','1');insert into ticket values('航班3','公務(wù)艙',&

20、#39;3-02','400','1');insert into ticket values('航班3','公務(wù)艙','3-03','400','1');insert into ticket values('航班3','經(jīng)濟(jì)艙','3-04','300','1');insert into ticket values('航班3','經(jīng)濟(jì)艙','3-05'

21、;,'300','1');insert into ticket values('航班4','頭等艙','4-01','500','1');insert into ticket values('航班4','公務(wù)艙','4-02','400','1');insert into ticket values('航班4','公務(wù)艙','4-03','400&#

22、39;,'1');insert into ticket values('航班4','經(jīng)濟(jì)艙','4-04','300','1');insert into ticket values('航班4','經(jīng)濟(jì)艙','4-05','300','1');select *from ticket;-航班表的flightNum作為機(jī)票表flightNum的外鍵alter table ticket add constraint fk_tfn

23、 foreign key(flightNum) references flight(flightNum);-創(chuàng)建旅客表create table passenger(name varchar2(10) primary key, -旅客名sex varchar2(10) not null, -旅客性別idNum varchar2(20) not null, -身份證phoneNum varchar2(15) not null, -手機(jī)號password varchar2(10) not null -密碼);-插入數(shù)據(jù)到旅客表(passenger)中insert into passenger val

24、ues('張三','男','1220101','1316060001','zs');insert into passenger values('李四','男','1220102','1316060002','ls');insert into passenger values('王五','女','1220103','1316060003','ww');inse

25、rt into passenger values('趙六','男','1220104','1316060004','zl');select *from passenger;-創(chuàng)建購買表create table buy(name varchar2(20), -旅客名flightNum varchar2(10), -航班號gread varchar2(10) not null, -機(jī)艙等級seatNum varchar2(10) not null, -座位號paymoney float(2) not null, -機(jī)票

26、價(jià)格buyNum number(8) not null -購買數(shù)量);-插入數(shù)據(jù)到購買表(buy)中insert into buy values('張三','航班1','公務(wù)艙','1-02',400,1);insert into buy values('李四','航班2','經(jīng)濟(jì)艙','3-01',400,1);insert into buy values('王五','航班3','公務(wù)艙','3-05'

27、,270,1);insert into buy values('趙六','航班4','經(jīng)濟(jì)艙','4-04',270,1);select *from buy;-旅客表的name作為購買表name的外鍵alter table buy add constraint fk_bn foreign key(name) references passenger(name);-管理員表create table manager(mname varchar2(20) not null, -管理員名mpwd varchar2(10) not null

28、, -管理員登錄密碼yuliu varchar2(20);select * from manager;insert into manager values('李華','aaaaaa',null);select * from manager where mname = '李華' and mpwd= 'aaaaaa'2.5 設(shè)計(jì)小結(jié)經(jīng)過這幾個(gè)星期的努力,本次課程設(shè)計(jì)終于完成了。通過這次課程設(shè)計(jì),我對數(shù)據(jù)庫這門課程有了更深入的理解,數(shù)據(jù)庫是一門實(shí)踐性較強(qiáng)的課程,同時(shí)我明白了理論與實(shí)際應(yīng)用相結(jié)合的重要性,掌握并熟練運(yùn)用SQL語句,提高了我

29、的綜合運(yùn)用所學(xué)知識的能力。在本次課程設(shè)計(jì)和過程中,由于時(shí)間不是很長,再加上要求獨(dú)立完成,系統(tǒng)需求分析上可能不是很全面,程序中還存在很多缺,希望老師能給予批評和指導(dǎo)。經(jīng)過這次課程設(shè)計(jì),我的知識得到了很大,經(jīng)驗(yàn)也更加豐富。希望能在今后的不斷的學(xué)習(xí)中和努力中,把程序做得更好。我們學(xué)習(xí)并應(yīng)用了SQL語言,對數(shù)據(jù)庫的創(chuàng)建、修改、刪除方法有了一定的了解,通過導(dǎo)入表和刪除表、更改表學(xué)會了對于表的一些操作,為了建立一個(gè)關(guān)系數(shù)據(jù)庫信息管理系統(tǒng),必須得經(jīng)過系統(tǒng)調(diào)研、需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)、系統(tǒng)調(diào)試、維護(hù)以及系統(tǒng)評價(jià)的一般過程,為畢業(yè)設(shè)計(jì)打下基礎(chǔ)。這次課程設(shè)計(jì),我更加深入的了解到軟件工程的復(fù)雜性,以

30、及前期規(guī)劃分析的重要性。其實(shí)在Java這種面向?qū)ο蟮某绦蛟O(shè)計(jì)中,我的開發(fā)模型能力很是一般。所以一人之力也難以完成。還得多多感謝同學(xué)的幫助,在以后的學(xué)習(xí)中應(yīng)該學(xué)習(xí)一些先進(jìn)的思想,并多加實(shí)踐,從寫程序和軟件架構(gòu)兩個(gè)方面都增強(qiáng)自己的能力。最后,感謝指導(dǎo)老師給予的幫助。3 應(yīng)用程序設(shè)計(jì)3.1 需求分析3.1.1 數(shù)據(jù)流圖數(shù)據(jù)庫用 戶用戶信息錄入機(jī) 票訂票、改簽、退票機(jī)票信息錄入管理員更新航班信息航 班3.1.2 數(shù)據(jù)詞典表3-1 plane飛機(jī)信息表表中列名數(shù)據(jù)類型可否為空說明flightNumvarchar2primary key飛機(jī)編號seatsnumbernot null座位數(shù)表3-2 flig

31、ht航班信息表表中列名數(shù)據(jù)類型可否為空說明 flightNumvarchar2primary key航班編號planeNumvarchar2not null飛機(jī)編號startPointvarchar2not null 出發(fā)地detinationvarchar2not null目的地startTimevarchar2not null起飛時(shí)間endTimevarchar2not null到達(dá)時(shí)間表3-3 ticket 機(jī)票表表中列名數(shù)據(jù)類型可否為空說明 flightNumvarchar2primary key航班號gradevarchar2not null機(jī)艙等級seatNumvarchar2no

32、t null 座位號ticketPricenumbernot null機(jī)票價(jià)格presellvarchar2not null預(yù)售狀態(tài)表3-4 passenger 旅客表表中列名數(shù)據(jù)類型可否為空說明 namevarchar2primary key旅客名sexvarchar2not null旅客性別idNumvarchar2not null 身份證phoneNumvarchar2not null手機(jī)號passwordvarchar2not null密碼表3-5 buy購買表表中列名數(shù)據(jù)類型可否為空說明 namevarchar2foreign key旅客名flightNumvarchar2forei

33、gn key航班號greadvarchar2not null 機(jī)艙等級seatNumvarchar2not null座位號paymoneynumbernot null機(jī)票價(jià)格buyNumvarchar2not null購買數(shù)量表3-6 manager 管理員表表中列名數(shù)據(jù)類型可否為空說明 mnamevarchar2not null unique管理員編號mpwdvarchar2not null管理員姓名3.1.3 加工說明我們的系統(tǒng)需要六個(gè)實(shí)體:(1)飛機(jī)實(shí)體實(shí)體名:plane角色:關(guān)于飛機(jī)的信息屬性:飛機(jī)編號,座位數(shù)主鍵:飛機(jī)編號(2)航班實(shí)體實(shí)體名:flight角色:航班信息屬性:航班編號

34、,出發(fā)地,目的地,起飛時(shí)間,到達(dá)時(shí)間主鍵:航班編號(3)機(jī)票實(shí)體實(shí)體名:ticket角色:機(jī)票信息屬性:航班號,機(jī)艙等級,座位號,機(jī)票價(jià)格,余票數(shù)主鍵:座位號(4)旅客實(shí)體實(shí)體名:passenger角色:旅客信息屬性:旅客名,旅客性別,身份證,手機(jī)號,密碼主鍵:旅客名(5)機(jī)票購買實(shí)體實(shí)體名:buy角色:旅客購買機(jī)票后的信息屬性:旅客名,航班號,機(jī)艙等級,座位號,機(jī)票價(jià)格,購買數(shù)量(6)管理員實(shí)體實(shí)體名:manager角色:管理員信息屬性:管理員名,密碼3.2 概要設(shè)計(jì)3.2.1 功能模塊圖航班信息管理模塊機(jī)票信息管理模塊機(jī)票預(yù)訂系統(tǒng)旅客信息管理模塊訂單信息管理模塊3.3 詳細(xì)設(shè)計(jì)3.3.1

35、主要代碼package util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/* * 建立數(shù)據(jù)庫連接 * */public class DBUtil private static DBConfig dbConfig;static /實(shí)例化配制文件對象dbConfig = new DBConfig();try /加載數(shù)據(jù)庫驅(qū)動Class.forName(dbConf

36、ig.getValue("className"); catch (ClassNotFoundException e) throw new RuntimeException("數(shù)據(jù)庫加載驅(qū)動失敗.", e);/建立連接public static Connection getCon()Connection con = null;try /建立數(shù)據(jù)庫連接con = DriverManager.getConnection(dbConfig.getValue("url"), dbConfig.getValue("user")

37、, dbConfig.getValue("password"); catch (SQLException e) throw new RuntimeException("數(shù)據(jù)庫連接失敗.", e);return con;/關(guān)閉連接public static void close(Connection con, Statement st, ResultSet rs)if (rs != null)try rs.close(); catch (SQLException e) throw new RuntimeException("關(guān)閉查詢結(jié)果集失敗.&

38、quot;, e);if (st != null)try st.close(); catch (SQLException e) throw new RuntimeException("關(guān)閉SQL執(zhí)行工具失敗失敗.", e);if (con != null)try con.close(); catch (SQLException e) throw new RuntimeException("關(guān)閉數(shù)據(jù)庫連接失敗.", e);public static void main(String args) if (getCon() != null)System.out

39、.println("數(shù)據(jù)庫連接成功.");elseSystem.out.println("數(shù)據(jù)庫連接失敗.");package util;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class

40、 DBHelper private static Connection con;private static boolean isTransSuccess = true; /做事務(wù)控制public static Connection getCon()if (con = null)con = DBUtil.getCon();return con;/執(zhí)行有參的insert, update, delete語句public static void executeSql(String sql, List<Object> params)executeSql(sql, params, true)

41、;/執(zhí)行帶事務(wù)有參的insert, update, delete語句/isAutoCommit為true表示結(jié)束事務(wù), false表示事務(wù)過程中public static void executeSql(String sql, List<Object> params, boolean isAutoCommit)Connection con = null;PreparedStatement ps = null;try if (isTransSuccess = false) /事務(wù)操作中, 只有有一個(gè)失敗整個(gè)事務(wù)過程就失敗throw new RuntimeException("

42、;事務(wù)失敗");/con = getCon(); /獲得連接con=DBUtil.getCon();/System.out.println(con);con.setAutoCommit(isAutoCommit); /不會自動提交.ps = con.prepareStatement(sql); /預(yù)處理SQL語句setParamValue(ps, params);ps.executeUpdate(); catch (Exception e) isTransSuccess = false;if (isAutoCommit) /判斷是不是,整個(gè)事務(wù)結(jié)束, 然后回滾事務(wù)isTransSuc

43、cess = true;try con.rollback();/操作回滾數(shù)據(jù) catch (SQLException e1) throw new RuntimeException("數(shù)據(jù)回滾失敗.", e); throw new RuntimeException(sql + "數(shù)據(jù)操作失敗.", e);finally/當(dāng)不開啟事務(wù)時(shí),關(guān)閉數(shù)據(jù)庫連接if (isAutoCommit)DBUtil.close(con, ps, null);/執(zhí)行無參的insert, update, delete語句public void executeSql(String

44、sql)executeSql(sql, null);/執(zhí)行有參查詢語句, 如果查詢一個(gè)字段還回一個(gè)List<與字段類型相同>, 如果查詢多個(gè)字段返回List<Object>public static List<Object> executeQuerySql(String sql, List<Object> params)Connection con = null;PreparedStatement ps = null;ResultSet rs = null;List<Object> objs = null;try con = DBUt

45、il.getCon();ps = con.prepareStatement(sql);setParamValue(ps, params);rs = ps.executeQuery();ResultSetMetaData rsmd = rs.getMetaData();int cols = rsmd.getColumnCount();objs = new ArrayList<Object>();if(cols = 1)while(rs.next()objs.add(rs.getObject(1);elsewhile(rs.next()Object os = new Objectcol

46、s;for (int i = 0; i < cols; i+) osi = rs.getObject(i + 1);objs.add(os); catch (Exception e) e.printStackTrace();finallyDBUtil.close(con, ps, null);return objs;/給PreparedStatement的參數(shù)注值private static void setParamValue(PreparedStatement ps, List<Object> params) if (params != null && p

47、arams.size() > 0)for (int i = 0; i < params.size(); i+) try ps.setObject(i + 1, params.get(i); catch (SQLException e) e.printStackTrace();elsereturn;/public static void main(String args) /if(getCon()!=null)/System.out.println("連接成功");/else/System.out.println("連接失敗");/主要方法/注

48、冊public boolean addpassenger(String name, String sex, String idNum,String phoneNum, String pwd) String sql = "insert into passenger values(?,?,?,?,?)"List<Object> params = new ArrayList<Object>();params.add(name);params.add(sex);params.add(idNum);params.add(phoneNum);params.add

49、(pwd);trydb.executeSql(sql, params);return true;catch(Exception e)return false;/用戶登錄操作public boolean login(String name, String pwd) String sql ="select * from passenger where name = ? and password= ?"List<Object> params = new ArrayList<Object>();params.add(name);params.add(pwd)

50、;List<Object> results = db.executeQuerySql(sql, params);if(results != null && results.size() > 0)return true;elsereturn true;/查詢個(gè)人信息public List<Object> findAllClasses() String sql = "select * from passenger"return db.executeQuerySql(sql, null);public boolean updateCl

51、asses(String sex, String idNum,String phoneNum, String password,String name) String sql = "update passenger set sex = ?,idNum=?,phoneNum=?,password= ? where name= ?"List<Object> params = new ArrayList<Object>();params.add(sex);params.add(idNum);params.add(phoneNum);params.add(p

52、assword);params.add(InitData.loginPname);trydb.executeSql(sql, params);return true;catch(Exception e)return false;/訂票public boolean addClasses(String name,String flightnum, String gread, String seatnum,String payMoney, String buynum) String sql = "insert into buy values(?,?,?,?,?,?)"List&l

53、t;Object> params = new ArrayList<Object>();params.add(name);params.add(flightnum);params.add(gread);params.add(seatnum);params.add(payMoney);params.add(buynum);trydb.executeSql(sql, params);/訂票成功后把余票設(shè)置為0boolean op=true;if(ticketNum(op,seatnum)return true;elsereturn false;catch(Exception e)return false;/訂票后余票減1,退票后加1public boolean ticketNum(boolean op,String seatNum)St

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論