車(chē)站售票管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《數(shù)據(jù)庫(kù)原理》課程設(shè)計(jì)報(bào)告</p><p>  課 程 設(shè) 計(jì) 題 目: 車(chē)站售票管理系統(tǒng) </p><p>  學(xué) 院 名 稱(chēng): 電子與信息工程學(xué)院 </p><p>  專(zhuān)

2、 業(yè): 計(jì)算機(jī)應(yīng)用技術(shù) </p><p>  學(xué) 生 姓 名: 學(xué)號(hào): </p><p>  指 導(dǎo) 教 師: 職稱(chēng): 講師 </p><p>  年 月

3、 日</p><p><b>  目 錄</b></p><p>  1、需求求報(bào)告分析…………………………………………………………………………1</p><p>  1、1 概述…………………………………………………………………………1</p><p>  1、2 系統(tǒng)功能分析………………………………………………

4、………………1</p><p>  1、3 數(shù)據(jù)流圖……………………………………………………………………2</p><p>  1、4 數(shù)據(jù)字典……………………………………………………………………3</p><p>  2、概念及邏輯結(jié)構(gòu)設(shè)計(jì)…………………………………………………………………7</p><p>  2、1 ER圖 ………………

5、………………………………………………………7</p><p>  2、2 關(guān)系模式……………………………………………………………………8</p><p>  2、3數(shù)據(jù)結(jié)構(gòu)……………………………………………………………………9</p><p>  3、數(shù)據(jù)庫(kù)設(shè)計(jì)………………………………………………………………………………10</p><p>

6、  4、系統(tǒng)軟件結(jié)構(gòu)設(shè)計(jì) …………………………………………………………………11</p><p>  4、1 系統(tǒng)功能設(shè)計(jì)………………………………………………………………11</p><p>  4、2 其它需求……………………………………………………………………12</p><p>  4、3說(shuō)明…………………………………………………………………………12<

7、/p><p>  5、程序模塊設(shè)計(jì) …………………………………………………………………………15</p><p>  5、1 功能模塊詳細(xì)設(shè)計(jì)…………………………………………………………15</p><p>  5、2 界面設(shè)計(jì)……………………………………………………………………16</p><p>  5、3 附錄:系統(tǒng)程序源代碼…………………

8、…………………………………16</p><p>  參考文獻(xiàn)………………………………………………………………………………………25</p><p><b>  1系統(tǒng)需求分析報(bào)告</b></p><p><b>  1.1概述</b></p><p>  汽車(chē)售票管理系統(tǒng)主要用于車(chē)站日常的票務(wù)處理。

9、車(chē)售票管理系統(tǒng)在正常運(yùn)行中需要對(duì)使用該系統(tǒng)的主要是汽車(chē)站售票人員、汽車(chē)站售票工作的管理人員與系統(tǒng)管理員。為達(dá)到操作過(guò)程中的直觀、方便、實(shí)用、安全等要求,我們組在這個(gè)系統(tǒng)中采用模塊化程序設(shè)計(jì)的方法,便于系統(tǒng)功能的組合和修改,以及擴(kuò)充和維護(hù)。</p><p><b>  1.2系統(tǒng)功能分析</b></p><p>  根據(jù)需求分析,本系統(tǒng)要實(shí)現(xiàn)以下的基本功能。</p

10、><p>  1.登錄功能:分為汽車(chē)站售票人員和系統(tǒng)管理員兩種權(quán)限登陸。用戶(hù)通過(guò)</p><p>  輸入不同用戶(hù)名和密碼進(jìn)行身份驗(yàn)證,系統(tǒng)通過(guò)用戶(hù)名和密碼判斷不同用戶(hù)的權(quán)限,從而確定該用戶(hù)可以執(zhí)行的操作。</p><p>  2.車(chē)票信息查詢(xún)功能:由汽車(chē)站的普通售票人員通過(guò)不同的檢索入口,查詢(xún)車(chē)票信息,并進(jìn)行排序。</p><p>  3.修改

11、功能:汽車(chē)站售票人員、汽車(chē)站售票工作的管理人員能夠修改自身的用戶(hù)名和密碼,系統(tǒng)管理員則能實(shí)現(xiàn)系統(tǒng)用戶(hù)與普通用戶(hù)的添加,修改普通用戶(hù)與系統(tǒng)管理員的密碼,以此確保該系統(tǒng)能夠安全操作,避免不必要的損失。</p><p>  4.匯總功能:對(duì)當(dāng)天車(chē)票的信息進(jìn)行匯總。</p><p><b>  1.3數(shù)據(jù)流圖</b></p><p><b>

12、  1.4數(shù)據(jù)字典</b></p><p><b>  1.數(shù)據(jù)項(xiàng)</b></p><p>  票號(hào)、票價(jià)、車(chē)次、日期、車(chē)型、開(kāi)車(chē)時(shí)間、票種、座位號(hào)、起始站、終點(diǎn)站、身份證號(hào)、銀行卡號(hào)、數(shù)量、退票時(shí)間、退票手續(xù)費(fèi)、訂票時(shí)間、訂票手續(xù)費(fèi)</p><p><b>  2.?dāng)?shù)據(jù)結(jié)構(gòu)</b></p>&l

13、t;p>  表1.1 車(chē)票的數(shù)據(jù)結(jié)構(gòu)</p><p><b>  3.?dāng)?shù)據(jù)流</b></p><p>  數(shù)據(jù)流編號(hào):D04-01</p><p><b>  數(shù)據(jù)流名稱(chēng):車(chē)票</b></p><p><b>  簡(jiǎn)述:車(chē)票有關(guān)信息</b></p><

14、;p>  數(shù)據(jù)流來(lái)源:用戶(hù)執(zhí)行售票操作結(jié)果</p><p>  數(shù)據(jù)流去向:購(gòu)票旅客</p><p>  數(shù)據(jù)流組成:車(chē)票編號(hào)+車(chē)票類(lèi)型+車(chē)次信息+座位信息+票價(jià)信息</p><p><b>  4.?dāng)?shù)據(jù)存儲(chǔ)</b></p><p>  售票記錄:票號(hào),起始站,終點(diǎn)站,票價(jià),車(chē)次,日期,開(kāi)車(chē)時(shí)間,</p>

15、;<p>  車(chē)型,票種,座位號(hào),售出時(shí)間</p><p>  退票記錄:票號(hào),起始站,終點(diǎn)站,票價(jià),車(chē)次,日期,開(kāi)車(chē)時(shí)間,</p><p>  車(chē)型,票種,座位號(hào),退票時(shí)間</p><p>  訂票記錄:票號(hào),起始站,終點(diǎn)站,票價(jià),車(chē)次,日期,開(kāi)車(chē)時(shí)間,</p><p>  車(chē)型,票種,座位號(hào),訂票時(shí)間,顧客身份證號(hào)</

16、p><p>  缺票記錄:票號(hào),起始站,終點(diǎn)站,票價(jià),車(chē)次,日期,開(kāi)車(chē)時(shí)間,</p><p><b>  車(chē)型,票種 </b></p><p>  車(chē)票記錄:票號(hào),起始站,終點(diǎn)站,票價(jià),車(chē)次,日期,開(kāi)車(chē)時(shí)間,</p><p>  車(chē)型,票種,座位號(hào),售出時(shí)間,票數(shù)</p><p><b> 

17、 5.處理過(guò)程</b></p><p>  車(chē)票匯總:工作人員將一天所售出的票進(jìn)行統(tǒng)計(jì),包括票數(shù),票類(lèi),形成確定的車(chē)票記錄。</p><p>  查詢(xún):將顧客需要的車(chē)票信息輸入系統(tǒng),并查詢(xún)其是否可供應(yīng)。</p><p>  查詢(xún)顧客信息:為訂票所設(shè),將顧客的準(zhǔn)確信息記錄,為其預(yù)定所車(chē)票。</p><p>  處理買(mǎi)票:進(jìn)行買(mǎi)票交易

18、,把顧客需要的票(可供應(yīng))售出,并在系統(tǒng)中作相應(yīng)記錄,確定車(chē)票記錄。</p><p>  處理訂票:進(jìn)行訂票交易,工作人員為顧客預(yù)定其所需車(chē)票,并在系統(tǒng)中作相應(yīng)記錄,確定訂票記錄。</p><p>  處理退票:進(jìn)行退票交易,工作人員為顧客辦理退票手續(xù),并在系統(tǒng)中作相應(yīng)記錄,確定退票記錄。</p><p>  2概念及邏輯結(jié)構(gòu)設(shè)計(jì)</p><p&

19、gt;<b>  2.1 E-R圖</b></p><p>  本系統(tǒng)根據(jù)以上的設(shè)計(jì)規(guī)劃出的實(shí)體有:車(chē)票實(shí)體、車(chē)站實(shí)體、顧客實(shí)體。各個(gè)實(shí)體具體的描述E-R圖如下:</p><p><b>  圖2-1車(chē)票ER圖</b></p><p>  圖2-2 顧客ER圖</p><p>  圖2-3實(shí)體之間E

20、R圖</p><p><b>  2.2關(guān)系模型:</b></p><p>  車(chē)票與顧客之間的聯(lián)系</p><p><b>  售票 1:N</b></p><p>  車(chē)票(票號(hào),車(chē)次,日期,車(chē)型,票價(jià),開(kāi)車(chē)時(shí)間,票種,座位號(hào),起始站,終點(diǎn)站)</p><p>  顧客

21、(身份證號(hào),銀行卡號(hào),票號(hào))</p><p><b>  退票1:N</b></p><p>  車(chē)票(票號(hào),車(chē)次,日期,車(chē)型,票價(jià),開(kāi)車(chē)時(shí)間,票種,座位號(hào),起始站,終點(diǎn)站)</p><p>  顧客(身份證號(hào),銀行卡號(hào),票號(hào),退票時(shí)間,退票手續(xù)費(fèi))</p><p><b>  訂票1:N</b>&

22、lt;/p><p>  車(chē)票(票號(hào),車(chē)次,日期,車(chē)型,票價(jià),開(kāi)車(chē)時(shí)間,票種,座位號(hào),起始站,終點(diǎn)站)</p><p>  顧客(身份證號(hào),銀行卡號(hào),票號(hào),日期,交易時(shí)間,交易金額,數(shù)量,起始站,終點(diǎn)站)</p><p><b>  2.3數(shù)據(jù)庫(kù)結(jié)構(gòu)</b></p><p>  表2.1 Car表詳細(xì)設(shè)計(jì)</p>

23、<p>  表2.2 Seat表詳細(xì)設(shè)計(jì)</p><p>  表2.3 PriceDiscount表詳細(xì)設(shè)計(jì)</p><p>  表2.4 Price表詳細(xì)設(shè)計(jì)</p><p>  表2.5 Type表詳細(xì)設(shè)計(jì)</p><p><b>  3數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>  本

24、車(chē)站售票系統(tǒng)有兩個(gè)實(shí)體,分別是車(chē)票和顧客,利用SQL建表如下:</p><p><b>  車(chē)票</b></p><p><b>  顧客</b></p><p><b>  4 系統(tǒng)軟件結(jié)構(gòu)</b></p><p>  4.1.系統(tǒng)功能設(shè)計(jì)</p><p&

25、gt;  汽車(chē)站售票管理系統(tǒng)主要設(shè)有五個(gè)主要功能模塊:分別是車(chē)次管理、票價(jià)管理、票務(wù)管理、用戶(hù)管理和查詢(xún)管理。如圖4-1所示。</p><p><b>  車(chē)次管理模塊</b></p><p>  該模塊主要實(shí)現(xiàn)車(chē)次信息的編輯。車(chē)次管理中的數(shù)據(jù)源為Access數(shù)據(jù)庫(kù)中Car表,在此管理部分中,能夠使用界面操作實(shí)現(xiàn)車(chē)次信息的編輯,并將數(shù)據(jù)庫(kù)中的數(shù)據(jù)按照編輯的要求來(lái)及時(shí)更

26、新數(shù)據(jù)表中的相關(guān)數(shù)據(jù)。</p><p><b>  2.票價(jià)管理模塊</b></p><p>  該模塊主要實(shí)現(xiàn)票價(jià)信息的錄入、修改與刪除以及票價(jià)折扣信息的錄入、修改與刪除。 票價(jià)詳細(xì)信息的錄入、修改、刪除,它的數(shù)據(jù)源為Access數(shù)據(jù)庫(kù)的Price表。在此管理部分中,通過(guò)票價(jià)管理(FrmPriceManage)界面來(lái)選擇記錄并決定執(zhí)行何種操作,是修改、添加或刪除。當(dāng)

27、命令為修改或者添加時(shí)則自動(dòng)跳轉(zhuǎn)到票價(jià)編輯窗體(FrmPriceEdit)實(shí)現(xiàn)票價(jià)信息的編輯并更新數(shù)據(jù)庫(kù)中相應(yīng)數(shù)據(jù)記錄。</p><p><b>  3.票務(wù)管理模塊</b></p><p>  票務(wù)管理部分實(shí)現(xiàn)前臺(tái)售票、前臺(tái)退票功能。主要完成售票、遠(yuǎn)程售票、廢票、取消廢票功能、改簽票、退票、取消退票功能、補(bǔ)票、售票查詢(xún)和票款結(jié)算單填寫(xiě)等功能。</p>&

28、lt;p><b>  4.用戶(hù)管理模塊</b></p><p>  該模塊主要實(shí)現(xiàn)用戶(hù)添加,用戶(hù)信息修改與用戶(hù)的刪除。所有系統(tǒng)用戶(hù)的管理,包括系統(tǒng)普通用戶(hù)與系統(tǒng)管理員。此管理模塊數(shù)據(jù)源為Access數(shù)據(jù)庫(kù)的Users表。在系統(tǒng)主界面中首先進(jìn)入的是名稱(chēng)為FrmUserMan的用戶(hù)管理主窗體,通過(guò)提取用戶(hù)名、用戶(hù)類(lèi)型來(lái)查看用戶(hù)具體信息,選擇添加或刪除用戶(hù)進(jìn)入名為FrmUserEdit的用戶(hù)

29、編輯界面進(jìn)行操作,操作完成便更新數(shù)據(jù)庫(kù)數(shù)據(jù)。</p><p>  5.查詢(xún)管理模塊 </p><p>  該模塊主要實(shí)現(xiàn)擁護(hù)通過(guò)查詢(xún)界面可以根據(jù)條件進(jìn)行車(chē)次時(shí)刻、車(chē)次票價(jià)查詢(xún)。</p><p><b>  4-1.功能模塊圖</b></p><p><b>  4.2其他需求</b></p

30、><p>  汽車(chē)站售票系統(tǒng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)量十分龐大,而且更新速度十分快。在數(shù)據(jù)大小方面要求數(shù)據(jù)的屬性要設(shè)置合理,假如是數(shù)據(jù)的屬性值越大,則數(shù)據(jù)本身所占用的容量也就十分的龐大,不但會(huì)造成傳輸?shù)牟环奖闵踔铃e(cuò)誤,也更加重系統(tǒng)的負(fù)擔(dān),有可能削弱系統(tǒng)運(yùn)行速度,使得系統(tǒng)無(wú)法達(dá)到預(yù)期的目的。另外,在整個(gè)系統(tǒng)當(dāng)中要確保數(shù)據(jù)在保存與傳遞過(guò)程中的安全,以免發(fā)生嚴(yán)重的錯(cuò)誤,造成巨大的損失。</p><p><

31、;b>  4.3說(shuō)明</b></p><p><b>  售票 </b></p><p>  正常出售本站所有車(chē)次車(chē)票,并按要求打印出車(chē)票。 </p><p><b>  遠(yuǎn)程售票 </b></p><p>  正常出售遠(yuǎn)程車(chē)站所有車(chē)次車(chē)票,并按遠(yuǎn)程車(chē)站的要求打印出車(chē)票。 <

32、/p><p><b>  廢票 </b></p><p>  在正常售票過(guò)程中, 可能因操作失誤或打印機(jī)械故障等原因造成錯(cuò)票而作廢車(chē)票。 </p><p><b>  取消廢票 </b></p><p>  當(dāng)廢票時(shí),發(fā)現(xiàn)廢的票是不應(yīng)該廢的,即為正常票,需要通過(guò)取消廢票來(lái)實(shí)現(xiàn)。 </p>

33、<p><b>  遠(yuǎn)程廢票 </b></p><p>  對(duì)所售遠(yuǎn)程車(chē)票作廢票處理。 </p><p><b>  退票 </b></p><p>  在正常退票時(shí)間內(nèi)辦理退票,并根據(jù)退票規(guī)定收取一定的手續(xù)費(fèi)。 </p><p><b>  遠(yuǎn)程退票 </b><

34、;/p><p>  對(duì)所售遠(yuǎn)程車(chē)票作退票處理。 </p><p><b>  取消退票 </b></p><p>  當(dāng)退票時(shí),發(fā)現(xiàn)退的票是不應(yīng)該退的,即為正常的票,需要通過(guò)取消退票來(lái)實(shí)現(xiàn)。 </p><p><b>  改簽票 </b></p><p>  由于乘客或車(chē)站某種原

35、因需對(duì)已出售的車(chē)票作更換車(chē)次的車(chē)票。改簽僅允許改簽一次。 </p><p><b>  遠(yuǎn)程改簽票 </b></p><p>  對(duì)所售遠(yuǎn)程車(chē)票作改簽處理。 </p><p><b>  注銷(xiāo)票 </b></p><p>  刪除某些由于調(diào)試程序所用的票記錄及其影響。 </p><

36、;p><b>  補(bǔ)票 </b></p><p>  只能在超過(guò)售票時(shí)限后進(jìn)行,且在未發(fā)車(chē)之前,在統(tǒng)計(jì)時(shí)注意對(duì)非微機(jī)售票的票的處理(例如:剪刀票)。 </p><p><b>  售票查詢(xún) </b></p><p>  通過(guò)一定的授權(quán)和設(shè)定售票員可以查詢(xún)?cè)谠O(shè)定時(shí)間范圍內(nèi)或多少?gòu)埰币郧暗某鍪邸⒆鲝U、改簽和退票的情況,并

37、對(duì)有權(quán)限的人員可有累計(jì)票款服務(wù)。 </p><p><b>  票款結(jié)算單 </b></p><p>  售票員每天售完車(chē)票后填寫(xiě)每日結(jié)算單,以便財(cái)務(wù)人員查詢(xún)。 </p><p><b>  重打車(chē)票 </b></p><p>  在正常售票過(guò)程中, 可能因打印機(jī)械故障等原因造成錯(cuò)票而重新打印車(chē)票。

38、 </p><p><b>  售票類(lèi)型 </b></p><p>  車(chē)票中所有聯(lián)都應(yīng)有的信息為車(chē)次、起止站點(diǎn)、票價(jià)、發(fā)車(chē)日期時(shí)間,而正聯(lián)所特有的信息為售票員工號(hào)、檢票口、是否改簽票、車(chē)票上應(yīng)有的信息:車(chē)票固有票號(hào)、計(jì)算機(jī)打印的票號(hào)、票號(hào)條形碼(僅用于自動(dòng)檢票的車(chē)站)。 </p><p><b> ?。?)車(chē)票類(lèi)型 </b&g

39、t;</p><p>  1)正常班次車(chē)票:發(fā)售的當(dāng)天或預(yù)售正常輪班車(chē)次的車(chē)票。 </p><p>  2)遠(yuǎn)程售票:發(fā)售遠(yuǎn)程車(chē)站車(chē)次的車(chē)票,其打印格式同遠(yuǎn)程車(chē)站。 </p><p>  3)流水班次車(chē)票:發(fā)售的流水班次車(chē)票。 </p><p>  4)退票和改簽票: </p><p><b>  退票分為

40、</b></p><p>  A、正常退票。辦理標(biāo)準(zhǔn)規(guī)定退票時(shí)間內(nèi)的退票。 </p><p>  B、強(qiáng)行退票。在超過(guò)時(shí)限后退票,即強(qiáng)行退票。 </p><p>  補(bǔ)票:補(bǔ)票只能在超過(guò)售票時(shí)限后進(jìn)行,且必須在未發(fā)車(chē)之前。 </p><p>  訂票:設(shè)定定票有效期限,在有有效時(shí)限保留座位,有效時(shí)外釋放座位等。 </p>

41、;<p><b>  票種的定義 </b></p><p><b> ?、偃珒r(jià)票 </b></p><p> ?、诎雰r(jià)票 允許設(shè)定可用標(biāo)志,自由定義名稱(chēng)。 </p><p> ?、勖馄?只允許設(shè)定可用標(biāo)志。 </p><p> ?、軆?yōu)惠票1-3 允許設(shè)定可用標(biāo)志,自由定義名稱(chēng)。 <

42、;/p><p> ?、菡劭燮?對(duì)原票價(jià)的基礎(chǔ)上進(jìn)行一定的打折,有嚴(yán)格的權(quán)限控制。 </p><p><b>  5 程序模塊設(shè)計(jì)</b></p><p>  5.1功能模塊詳細(xì)設(shè)計(jì)</p><p>  5.1.1 車(chē)次管理模塊代碼實(shí)現(xiàn)</p><p>  Private Sub Cmd_OK_Clic

43、k()</p><p>  '檢查用戶(hù)錄入數(shù)據(jù)的有效性</p><p>  If Len(Trim(txtCarID)) = 0 Then</p><p>  MsgBox "請(qǐng)輸入車(chē)次編號(hào)"</p><p>  txtCarID.SetFocus</p><p><b>  Ex

44、it Sub</b></p><p><b>  End If</b></p><p>  If Len(Trim(txtOutTime)) = 0 Then</p><p>  MsgBox "請(qǐng)輸入發(fā)車(chē)時(shí)間"</p><p>  txtOutTime.SetFocus</p>

45、;<p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  '把用戶(hù)錄入的數(shù)據(jù)賦值到數(shù)據(jù)庫(kù)對(duì)象變量中</p><p>  With MyType</p><p>  .CarID = MakeStr(txtCarID)

46、 '車(chē)次編號(hào)</p><p>  .OutSetTime = MakeStr(TimeEdit) '發(fā)車(chē)時(shí)間</p><p>  .RunninWay = MakeStr(WayEdit) '經(jīng)營(yíng)路線</p><p>  .CarType = MakeStr(TypeEdit) '車(chē)輛類(lèi)型</p><p>

47、;  .PlateNumber = MakeStr(CNnEdit) '車(chē)牌號(hào)</p><p>  .CarHolder = MakeStr(HolderEdit) '責(zé)任人</p><p>  .SeatLimit = MakeStr(LSeatEdit) '額定座位</p><p>  '根據(jù)變量Modify決定是插入新數(shù)據(jù),

48、還是修改已有的數(shù)據(jù)</p><p>  If Modify = False Then</p><p>  .Insert '插入新數(shù)據(jù)</p><p><b>  Else '修改</b></p><p>  .Update (nId) '修改已有的數(shù)據(jù)</p><p>

49、<b>  End If</b></p><p><b>  End With</b></p><p>  Unload Me '關(guān)閉窗口</p><p>  5.1.2 票價(jià)管理模塊代碼實(shí)現(xiàn)</p><p>  票價(jià)管理部分代碼如下(信息添加過(guò)程):</p><p&g

50、t;  Private Sub Cmd_Add_Click()</p><p>  '初始化FrmDiscountEdit信息</p><p>  FrmPriceEdit.txtTerminalName = ""</p><p>  FrmPriceEdit.txtTNPYCode = ""</p>&

51、lt;p>  FrmPriceEdit.txtCarID = ""</p><p>  FrmPriceEdit.txtTicketPrice = ""</p><p>  FrmPriceEdit.Modify = False</p><p>  FrmPriceEdit.VarTermanalID = OriTerm

52、inalID</p><p>  FrmPriceEdit.Show </p><p>  RefreshData</p><p><b>  End Sub</b></p><p>  5.1.3用戶(hù)管路模塊代碼實(shí)現(xiàn)(編輯窗體代碼):</p><p>  Private Sub Cmd_OK_C

53、lick()</p><p>  If Trim(txtUserName) = "" Then</p><p>  MsgBox "請(qǐng)輸入用戶(hù)名"</p><p>  txtUserName.SetFocus</p><p><b>  Exit Sub</b></p>

54、<p><b>  End If</b></p><p>  If Len(txtPass) < 5 Then</p><p>  MsgBox "密碼長(zhǎng)度不能小于5"</p><p>  txtPass.SetFocus</p><p>  txtPass.SelStart =

55、0</p><p>  txtPass.SelLength = Len(txtPass2)</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  If txtPass <> txtPass2 Then</p>

56、;<p>  MsgBox "密碼和確認(rèn)密碼不相同,請(qǐng)重新確認(rèn)"</p><p>  txtPass2.SetFocus</p><p>  txtPass2.SelStart = 0</p><p>  txtPass2.SelLength = Len(txtPass2)</p><p><b>

57、  Exit Sub</b></p><p><b>  End If</b></p><p>  '判斷是否存在同名用戶(hù)</p><p>  With MyUser</p><p>  If Modify = False Or OriUser <> Trim(txtUserName) T

58、hen</p><p>  If .In_DB(Trim(txtUserName)) = True Then</p><p>  MsgBox "用戶(hù)名已存在,請(qǐng)重新輸入"</p><p>  txtUserName.SetFocus</p><p>  txtUserName.SelStart = 0</p>

59、<p>  txtUserName.SelLength = Len(txtUserName)</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  模塊中的程序代碼如下:</p><p>  Public adoCo

60、n As New ADODB.Conncetion</p><p>  Public adors As New ADODB.Recordset</p><p><b>  '連接數(shù)據(jù)庫(kù)</b></p><p>  Public Sub main()</p><p>  Set adoCon = New ADODB

61、.Connection</p><p>  adoCon.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\ 汽車(chē)站售票管理系統(tǒng).mdb" & ";Persist Security Info=False"</p><p&g

62、t;  FrmLogin.Show</p><p>  FrmLogin.txtUser.SetFocus</p><p><b>  End Sub</b></p><p><b>  5.2 界面設(shè)計(jì)</b></p><p>  系統(tǒng)主界面設(shè)計(jì)如下,主界面頂端顯示不同管理模塊,點(diǎn)擊則進(jìn)入相應(yīng)界面

63、。下端顯示系統(tǒng)當(dāng)前所處日期和時(shí)間。</p><p>  圖14 系統(tǒng)主界面設(shè)計(jì)</p><p>  5.3附錄:系統(tǒng)程序源代碼</p><p>  (1)登陸窗體(FrmLogin)代碼</p><p>  Public PasswordKey As String</p><p>  Public NameKey As

64、 String</p><p>  Public Try_times As Integer</p><p>  '取消鍵退出登陸界面</p><p>  Private Sub Cmd_Cancel_Click()</p><p><b>  Unload Me</b></p><p>&

65、lt;b>  End Sub</b></p><p>  Private Sub Cmd_OK_Click()</p><p><b>  '數(shù)據(jù)庫(kù)有效性檢查</b></p><p>  If Trim(txtUser) = "" Then</p><p>  MsgBox

66、"請(qǐng)輸入用戶(hù)名"</p><p>  txtUser.SetFocus</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  If Trim(txtPwd) = "" Then</p&

67、gt;<p>  MsgBox "請(qǐng)輸入密碼"</p><p>  txtPwd.SetFocus</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p><b>  End Sub</

68、b></p><p>  Private Function MakeStr() As String</p><p>  NameKey = Str(txtUser)</p><p>  PasswordKey = Str(txtPwd)</p><p><b>  '判斷用戶(hù)是否存在</b></p&g

69、t;<p>  If MyUser.In_DB(NameKey) = Flase Then</p><p>  MsgBox "用戶(hù)名不存在"</p><p>  Try_times = Try_times + 1</p><p>  If Try_times >= 3 Then</p><p>  M

70、sgBox "您已經(jīng)三次嘗試進(jìn)入本系統(tǒng),均不成功,系統(tǒng)將關(guān)閉"</p><p>  DBapi_Disconnect</p><p><b>  End</b></p><p><b>  Else</b></p><p>  Exit Function</p>&

71、lt;p><b>  End If</b></p><p><b>  End If</b></p><p><b>  '判斷密碼是否正確</b></p><p>  MyUser.GetINfo (NameKey)</p><p>  If MyUser.Pw

72、d <> PasswordKey Then</p><p>  MsgBox "密碼錯(cuò)誤"</p><p>  Try_times = Try_times + 1</p><p>  If Try_times >= 3 Then</p><p>  MsgBox "您已經(jīng)三次嘗試進(jìn)入本系統(tǒng),均不

73、成功,系統(tǒng)將關(guān)閉"</p><p>  DBapi_Disconnect</p><p><b>  End</b></p><p><b>  Else</b></p><p>  Exit Function</p><p><b>  End If&l

74、t;/b></p><p><b>  End If</b></p><p>  '登陸成功,將當(dāng)前用戶(hù)的信息保存在CurUser中</p><p>  CurUser.UserName = MyUser.UserName</p><p>  CurUser.User_type = MyUser.User_

75、type</p><p>  CurUserEmpID = MyUser.EmpID</p><p>  '關(guān)閉自己并顯示主窗體</p><p><b>  Unload Me</b></p><p>  FrmMain.Show</p><p>  End Function</p&

76、gt;<p>  (2)主窗體(FrmMain)代碼</p><p>  '設(shè)置數(shù)據(jù)庫(kù)連接字符串</p><p>  Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & " \汽車(chē)站售票管理系統(tǒng).mdb " & "

77、;;Presist Security Info=False"</p><p><b>  '系統(tǒng)登陸界面</b></p><p>  FrmLogin.Show</p><p><b>  End Sub</b></p><p>  Private Sub PJCX_Click()

78、</p><p><b>  End Sub</b></p><p>  Private Sub PJGL_Click()</p><p>  FrmPriceManage.Show</p><p><b>  End Sub</b></p><p>  Private Su

79、b SPGL_Click()</p><p>  FrmTicketSell.Show</p><p><b>  End Sub</b></p><p>  Private Sub TPGL_Click()</p><p>  FrmBack.Show</p><p><b>  En

80、d Sub</b></p><p>  Private Sub XGMM_Click()</p><p>  With FrmUserEdit</p><p>  .OriUser = CurUser.UserName</p><p>  .txtUserName = CurUser.UserName</p><

81、;p>  If CurUser.User_type = 1 Then</p><p>  .ComboType.AddItem "系統(tǒng)管理員"</p><p><b>  Else</b></p><p>  .ComboType.AddItem "普通用戶(hù)"</p><p>

82、;<b>  End If</b></p><p>  .ComboType.ListIndex = 0</p><p>  .ComboType.Enabled = False</p><p>  .Modify = True</p><p><b>  .Show 1</b></p>

83、<p><b>  End With</b></p><p><b>  End Sub</b></p><p>  Private Sub YHGL_Click()</p><p>  If CurUser.User_type = 1 Then</p><p>  FrmUserMa

84、n.Show</p><p><b>  Else</b></p><p>  MsgBox "沒(méi)有權(quán)限"</p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  Pr

85、ivate Sub ZKGL_Click()</p><p>  FrmDiscount.Show</p><p><b>  End Sub</b></p><p>  (3)售票窗體(FrmTicketSell)代碼</p><p>  Private Sub Cmd_Cancel_Click()</p>

86、<p><b>  Unload Me</b></p><p><b>  End Sub</b></p><p>  Private Sub Cmd_Search_Click()</p><p>  'GridRsfresh '根據(jù)條件查詢(xún)所有信息</p><p>

87、<b>  End Sub</b></p><p>  Private Sub Cmd_Sell_Click()</p><p>  Dim ComboDate As String, TNPYCode As String, CarID As String</p><p>  Dim left As Integer</p><

88、p>  Dim seatnumber As String</p><p>  Dim strseat As String</p><p>  Dim ticketinformation As String</p><p>  Dim informationbook As String</p><p>  Dim cost As Long

89、</p><p>  ComboDate = Trim(ComboDate.Text)</p><p>  TNPY = Trim(txtTNPYCode)</p><p>  CarID = Trim(txtCarID)</p><p>  Dim strcnn</p><p><b>  init_ado

90、</b></p><p>  strQuery = "Select CarID,OutStation,Terminal,OutSetTime,Date,Sno From Seat join Price on Seat.CarID=Price.CarID Where Seat.date='" & _</p><p>  Trim(ComboD

91、ate) & "'" & " and Price.TNPYCode='" & Trim(txtTNPYCode) & "'" </p><p>  '根據(jù)輸入的信息,從表里得出查詢(xún)結(jié)果</p><p>  rsdata.Open strQuery, cnnrs

92、data, , , adCmdText</p><p>  If rsdata.EOF Then</p><p>  MsgBox "車(chē)次或拼音碼輸入有誤,請(qǐng)重新輸入!", , "Error!"</p><p>  ComboDate.Text = ""</p><p>  TNPY

93、Code = ""</p><p>  txtCarID = ""</p><p>  ComboDate.SetFocus</p><p>  ElseIf Len(TNPYCode) = 0 Then</p><p>  MsgBox "請(qǐng)輸入拼音碼"</p>&l

94、t;p>  txtTNPYCode.SetFocus</p><p>  ElseIf Len(TNPYCode) > 4 Then</p><p>  MsgBox "拼音碼過(guò)長(zhǎng),無(wú)效!"</p><p>  txtCarID.SetFocus</p><p>  ElseIf Len(CarID) = 0

95、Then</p><p>  MsgBox "請(qǐng)輸入車(chē)次編號(hào)!"</p><p>  txtCarID.SetFocus</p><p>  ElseIf IsNumeric(Number) = False Then</p><p>  MsgBox "車(chē)次編號(hào)應(yīng)為數(shù)字!"</p><

96、;p>  txtCarID.Text = ""</p><p>  txtCarID.SetFocus</p><p><b>  Else</b></p><p>  rsdata.Close</p><p>  strQuery = "select count(*) as tota

97、l from Seat where Seat.sell=false and Seat.date='" & _</p><p>  Trim(ComboDate.Text) & "'" & " and Seat.CarID='" & Trim(txtCarID.Text) & "'&q

98、uot;</p><p>  rsdata.Open strQuery, cnnrsdata, , , adCmdText '統(tǒng)計(jì)本車(chē)次的剩余的座位數(shù)</p><p>  rsdata.MoveFirst</p><p>  left = rsdata!total</p><p>  If left = 0 Then</p&

99、gt;<p>  MsgBox "本車(chē)次已經(jīng)客滿(mǎn)!"</p><p>  ComboDate.Text = ""</p><p>  ComboSNno.Text = ""</p><p>  txtTNPYCode.Text = ""</p><p&g

100、t;  txtCarID.Text = ""</p><p>  ComboDate.SetFocus</p><p><b>  Else</b></p><p>  rsdata.Close</p><p>  strQuery = "select count(*) as total f

101、rom Seat where Seat.sell=false and Seat.date='" & _</p><p>  Trim(ComboDate) & "'" & " and Seat.CarID='" & Trim(txtCarID) & "'"</p>

102、;<p>  rsdata.Open strQuery, cnnrsdata, , , adCmdText '統(tǒng)計(jì)本車(chē)次的剩余的座位數(shù)</p><p>  rsdata.MoveFirst</p><p>  rsdata.AddNew</p><p>  rsdata!Date = comdate</p><p>

103、  rsdata!Seat = comSNno</p><p>  rsdata!CarID = CarID</p><p>  rsdata!TNPYCode = TNPYCode</p><p>  rsdata!sno = Trim(seatnumber)</p><p>  rsdata.Update '添加新記錄<

104、;/p><p>  '更新 Seat 表 ,將剛賣(mài)出的座位號(hào)設(shè)為 false</p><p>  strQuery = "select * from Seat where Seat.sno='" & Trim(seatnumber) & _</p><p>  "' and Seat.date=&#

105、39;" & Trim(ComboDate) & "'" & _</p><p>  " and SeatCarID='" & Trim(txtCarID) & "'"</p><p>  rsdata.Open strQuery, cnnrsdata, ,

106、 , adCmdText</p><p>  If rsdata!sell = False Then</p><p>  rsdata!sell = True</p><p>  rsdata.Update</p><p><b>  End If</b></p><p>  ComboDate

107、= ""</p><p>  txtTNPYCode = ""</p><p>  txtCarID = ""</p><p>  ComboDate.SetFocus</p><p>  cost = Val(Adodc3.Recordset.Fields(3))</p>

108、;<p>  txtCharge = Val(txtMoney) - Val(Adodc3.Recordset.Fields(3))</p><p><b>  End Sub</b></p><p>  (4)退票窗體(FrmBack)代碼</p><p>  Private Sub Cmdback_Click()</p&

109、gt;<p>  Dim strdate As String</p><p>  Dim strline As String</p><p>  Dim strseatno As String</p><p>  Dim strTnl As String</p><p>  Dim response As String</

110、p><p>  Dim ticketinformation As String</p><p>  strdate = Trim(Combodate.Text)</p><p>  strCarID = Trim(txtCarID.Text)</p><p>  strseatno = Trim(ComboSeatno.Text)</p&g

111、t;<p>  strTnl = Trim(ComboTerminal.Text)</p><p>  Dim strcnn</p><p><b>  init_ado</b></p><p>  strQuery = "Select * From SellTicket Where SellTicket.date=&#

112、39;" & _</p><p>  Trim(Combodate.Text) & "'" & " and SellTicket.Sno='" & Trim(ComboSNno.Text) & "'" & _</p><p>  " and

113、 SellTicket.carID='" & Trim(ComboCarID.Text) & "'" '檢查車(chē)票日期、車(chē)次和座位是否有效</p><p>  rsdata.Open strQuery, cnnrsdata, , , adCmdText</p><p>  If rsdata.EOF Then<

114、/p><p>  MsgBox "你所要退的票為無(wú)效票或是你的輸入有問(wèn)題!"</p><p><b>  Else</b></p><p>  rsdata.Close</p><p>  strQuery = "Select * From SellTicket Where SellTicket

115、.date='" & Trim(Combodate.Text) & _</p><p>  "'" & " and SellTicket.sno='" & Trim(ComboSNno.Text) & "'" & _</p><p>  &q

116、uot; and SellTicket.CarID='" & Trim(ComboCarID.Text) & "'"</p><p>  rsdata.Open strQuery, cnnrsdata, , , adCmdText</p><p>  rsdata.MoveFirst</p><p>  

117、Combodate.Text = rsdata!Date</p><p>  ComboSNSno.Text = rsdata!sno</p><p>  ComboCarID.Text = rsdata!CarID</p><p>  '車(chē)票有效,確認(rèn)日期、車(chē)次和座位號(hào),確認(rèn)是否退票</p><p>  ticketinformat

118、ion = "日期:" & strdate & " " & "車(chē)次:" & strCarID & " " & "座位號(hào):" & strsno & ""</p><p>  response = MsgBox(ticketin

119、formation, vbOKCancel + vbInformation, "是否真要退票?")</p><p>  If response = 1 Then</p><p>  '更改 SellTicket 表</p><p>  rsdata.Close</p><p>  strQuery = "

120、select * from SellTicket"</p><p>  rsdata.Open strQuery, cnnrsdata, , , adCmdText</p><p>  rsdata.MoveFirst</p><p>  Dim i As Integer</p><p>  For i = 1 To rsdata.

121、RecordCount</p><p>  If rsdata!Date = strdate And rsdata!sno = strsno And rsdata!sno = strseat Then</p><p>  rsdata.Delete</p><p><b>  End If</b></p><p>  r

122、sdata.MoveNext</p><p><b>  Next i</b></p><p>  rsdata.Close</p><p>  ' 將剛退的票設(shè)為可賣(mài)</p><p>  strQuery = "select * from line where Seat.date='"

123、; & strdate & "'" & _</p><p>  " and Seat.CarID='" & strCarID & "'" & " and Seat.sno='" & strsno & "'"<

124、;/p><p>  rsdata.Open strQuery, cnnrsdata, , , adCmdText</p><p>  If rsdata!book = True Then</p><p>  rsdata!book = False</p><p>  rsdata.Update</p><p><b&

125、gt;  End If</b></p><p>  Combodate.Text = ""</p><p>  ComboSno.Text = ""</p><p>  Combodate.SetFocus</p><p>  MsgBox "退票已成功!"</p&

126、gt;<p><b>  Else</b></p><p>  rsdata.Close</p><p>  Combodate.Text = ""</p><p>  ComboSno.Text = ""</p><p>  Combodate.SetFocus&l

127、t;/p><p><b>  End If</b></p><p><b>  End If</b></p><p><b>  End Sub</b></p><p> ?。?)折扣管理窗體(FrmDiscount)代碼</p><p>  Private

128、 Sub Cmd_Add_Click()</p><p>  '初始化FrmDiscountEdit信息</p><p>  FrmDiscountEdit.txtTerminalName = ""</p><p>  FrmDiscountEdit.txtTNPYCode = ""</p><p&

129、gt;  FrmDiscountEdit.txtCarID = ""</p><p>  FrmDiscountEdit.txtTicketPrice = ""</p><p>  FrmDiscountEdit.Modify = False</p><p>  FrmDiscountEdit.VarRecordNumber

130、= OriRecordNumber</p><p>  FrmDiscountEdit.Show 1</p><p>  RefreshData</p><p><b>  End Sub</b></p><p>  Private Sub Cmd_Cancel_Click()</p><p>&

131、lt;b>  Unload Me</b></p><p><b>  End Sub</b></p><p>  Private Sub Cmd_Del_Click()</p><p>  Dim TmpID As Long</p><p>  If Adodc1.Recordset.BOF = Tru

132、e Then</p><p>  MsgBox "請(qǐng)選擇記錄"</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  TmpID = Adodc1.Recordset.Fields(0)</p>

133、<p>  If MsgBox("是否刪除當(dāng)前行", vbYesNo, "請(qǐng)確認(rèn)") = vbYes Then</p><p>  Call MyFam.DeleteByID(TmpID)</p><p><b>  End If</b></p><p>  RefreshData</p&

134、gt;<p><b>  End Sub</b></p><p>  Private Sub Cmd_Modi_Click()</p><p>  '初始化FrmPriceEdit信息</p><p>  FrmDiscountEdit.OriID = Adodc1.Recordset.Fields(0)</p>

135、;<p>  FrmDiscountEdit.txtCarID = Adodc1.Recordset.Fields(2)</p><p>  FrmDiscountEdit.txtTicketTypeID = Adodc1.Recordset.Fields(3)</p><p>  FrmDiscountEdit.txtTicketType = Adodc1.Recordse

136、t.Fields(4)</p><p>  FrmDiscountEdit.txtDiscount = Adodc1.Recordset.Fields(5)</p><p>  FrmDiscountEdit.VarRecordNumber = OriRecordNumber</p><p>  FrmDiscountEdit.Modify = True</p

137、><p>  FrmDiscountEdit.Show 1</p><p>  RefreshData</p><p><b>  End Sub</b></p><p> ?。?)票價(jià)信息管理窗體(FrmPriceManage)代碼</p><p>  Private Sub Cmd_Add_Cli

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論