更新時(shí)間:2023-08-03 17:04:00作者:佚名
【課程設(shè)計(jì)】數(shù)據(jù)庫:高鐵票管理系統(tǒng)
摘要:本文主要介紹了高鐵票管理系統(tǒng)火車票預(yù)訂時(shí)間表,其中包括其選題功能緒論,對該系統(tǒng)的方案方式設(shè)計(jì),以及過程實(shí)現(xiàn)等內(nèi)容。因?yàn)橄到y(tǒng)的代碼量較大,所以將要較為具象地對思想進(jìn)行介紹,在必要時(shí)會(huì)列舉一些例子,都會(huì)附上成果展示以及安裝步驟。最后補(bǔ)充一下此次結(jié)伙作案的心得感受,只是十分寶貴的財(cái)富。
文章目錄
序言——起因與動(dòng)力
本系統(tǒng)是由五位華工師生(劉老師、陳老師、羅老師、魯老師、盧老師)在閑暇時(shí)間中對數(shù)據(jù)庫課程設(shè)計(jì)進(jìn)行的一次嘗試。緣由在于,盡管我們都有部份項(xiàng)目經(jīng)驗(yàn),因此通常狀況下,都是由導(dǎo)師為我們所引導(dǎo)安排去施行任務(wù)的,所以在此課程下來后,我們就商量著感受一次,從零開始的自主實(shí)現(xiàn)項(xiàng)目過程。此次課設(shè)為對我們自身的增強(qiáng)有巨大的幫助,因此希望通過這篇文章分享下來。
對于該課設(shè),對于我們的要求就是認(rèn)真執(zhí)行,定期舉辦組會(huì)與項(xiàng)目初驗(yàn)。在開發(fā)過程中,嘗試了新的語言、開發(fā)工具以及開發(fā)方式等。其中最為印象深刻的是項(xiàng)目的集體討論設(shè)計(jì)的過程、語雀gitee等協(xié)同開發(fā)工具、函數(shù)插口的注釋標(biāo)準(zhǔn)化等細(xì)節(jié)內(nèi)容、前端開發(fā)等初嘗試。很多都是先前淡淡嘗試過的內(nèi)容,在本次課設(shè)中有了更豐富的知識獲取。
其實(shí),因?yàn)槭堑谝淮巫鲞@么大的安裝工程,也遇見了一些困難的地方,例如在最初的數(shù)據(jù)庫設(shè)定完成后,課設(shè)舉行了一段時(shí)間,卻發(fā)覺設(shè)計(jì)內(nèi)容還要更改,此刻更改安裝工程量較大,難免會(huì)出現(xiàn)一些焦慮情緒,當(dāng)工作周期長時(shí),也會(huì)出現(xiàn)部份拖沓松懈,在小組之間的鼓勵(lì)與監(jiān)督下,完成讓課設(shè)繼續(xù)進(jìn)行。可惜的是對于本系統(tǒng)因?yàn)闀r(shí)間較短,雖然是開發(fā)并不完整的,并且存在并發(fā)性以及部份插入的等問題,然而此次課設(shè)感受十分難得,學(xué)到了許多課堂需不到的內(nèi)容。
一、選題背景
本課題是實(shí)現(xiàn)對高鐵票購票的管理系統(tǒng),具備檢票系統(tǒng)、系統(tǒng)管理、綜合查詢等功能。該系統(tǒng)分為三大版塊,分別為檢票系統(tǒng)、系統(tǒng)管理和產(chǎn)值對賬。以下是每位模塊具體介紹。
二、方案論證(設(shè)計(jì)觀念)2.1運(yùn)行和開發(fā)環(huán)境2.2面向?qū)ο缶幊?/p>
面向?qū)ο缶幊痰膬?yōu)勢在于易維護(hù)、開發(fā)效率高和易擴(kuò)充等,對于易維護(hù),只需維護(hù)局部模塊,維護(hù)上去是十分便捷和費(fèi)用較低;對于開發(fā)效率高,在硬件開發(fā)時(shí),按照設(shè)計(jì)的還要對現(xiàn)實(shí)世界的事物進(jìn)行具象,形成類,通過對類的封裝,對其的使用開發(fā)的效率和品質(zhì);易擴(kuò)充因?yàn)槌欣^、封裝、多態(tài)的特征,自然設(shè)計(jì)出高內(nèi)聚、低耦合的系統(tǒng)結(jié)構(gòu),并且系統(tǒng)更靈活、更容易擴(kuò)充,但是費(fèi)用較低。
后端面向?qū)ο缶幊陶宫F(xiàn)于,每位界面的每位組件都設(shè)計(jì)為一個(gè)類,例如在管理端的用戶信息展示窗口中,首先對分欄器、用戶信息欄、搜索框進(jìn)行父類封裝,在承繼后,通過多態(tài)的編程思想,進(jìn)行再封裝,最后裝配在一起。
前端面向?qū)ο缶幊陶宫F(xiàn)于,對于數(shù)據(jù)庫通過邏輯結(jié)構(gòu)設(shè)計(jì)后,可以剖析出各個(gè)實(shí)體類,進(jìn)行面對對象的編程。除了這般,因?yàn)樵O(shè)計(jì)部份工具操作,還額外定義了工具類,作為后端的輔助工具插口類。
2.3前后端分離
對于前后端分離,可以提升工作效率,分工愈發(fā)明晰。兩端開發(fā)可以同時(shí)進(jìn)行,只需通過插口完成聯(lián)結(jié),雙方互不干擾。而且為了在該次大作業(yè)中增加每個(gè)成員的參與度,所以在任務(wù)分配上,每位人就會(huì)有對前后端的工作安排。
2.4數(shù)據(jù)庫設(shè)計(jì)思路2.4.1需求剖析
用戶登入注冊:用戶包括工作人員和旅客,有管理員、售票員、乘客3類用戶;普通人可以通過注冊功能成為新用戶,用戶通過登陸可以使用系統(tǒng)提供的相應(yīng)功能,如添加旅客,訂購船票,查詢訂單等等。
系統(tǒng)還要提供查詢火車具體信息的功能:用戶按照始發(fā)站和終點(diǎn)站,查詢可以滿足自己行程要求使得正常運(yùn)行的動(dòng)車,使得可以逐步查看駕車時(shí)間,抵達(dá)時(shí)間以及火車剩余坐位的數(shù)目和票價(jià);用戶可以搜索詳細(xì)的某一趟車次,可以得到該車次的詳細(xì)路線信息以及發(fā)車時(shí)間。
系統(tǒng)還要提供購票功能:購票員鍵入站點(diǎn)即可顯示經(jīng)過該站點(diǎn)的所有可售班次以及班次汽車的坐位狀態(tài);一個(gè)檢票員可同時(shí)售數(shù)張相似或不同站點(diǎn),相似或不同票種(一等、二等、站票)的船票,可以實(shí)現(xiàn)累加本次購票款,直到上次新檢票開始;還應(yīng)實(shí)現(xiàn)輔助提示應(yīng)找款以及退款的功能,購票員可以查詢當(dāng)日購票賬單,旅客也可以通過互聯(lián)網(wǎng)售票。
系統(tǒng)還要提供管理功能:包括用戶管理、線路設(shè)置、站點(diǎn)設(shè)置、票價(jià)設(shè)置等。該系統(tǒng)主要分為四大部份,分別為用戶、車票、車次和路線版塊,每位版塊可以進(jìn)行查詢與更改操作,管理員可以添加、修改和刪掉用戶信息、線路信息、車票信息以及車次信息。
系統(tǒng)還要提供產(chǎn)值對賬功能:包括購票員對賬、匯總報(bào)表。對營銷毀款進(jìn)行管理,可以實(shí)時(shí)把握西站產(chǎn)值狀況,便于財(cái)務(wù)監(jiān)督。才能迅速、準(zhǔn)確地生成各類產(chǎn)值對賬報(bào)表。匯總報(bào)表主要包括:按照用戶選擇或則鍵入的各類條件(包括:時(shí)間,購票員,票號等)匯總北站營運(yùn)數(shù)據(jù),包括:售票匯總,改簽匯總,預(yù)購票匯總,廢票匯總,綜合匯總,財(cái)務(wù)匯總火車票預(yù)訂時(shí)間表,檢票員對賬單等等。
系統(tǒng)還要提供綜合查詢功能:包括:匯總線路、站點(diǎn)、班線、班次等各類基礎(chǔ)數(shù)據(jù);統(tǒng)計(jì)運(yùn)營數(shù)據(jù),生成日報(bào)表、月報(bào)表和任意時(shí)段報(bào)表;以匯總表方式,顯示轉(zhuǎn)讓票張數(shù)、售票總額以及購票狀況。
2.4.2概念結(jié)構(gòu)設(shè)計(jì)admin管理員、user用戶、售票員實(shí)體:在該實(shí)體中,用戶id為字段,拿來作為每一個(gè)用戶的惟一標(biāo)志,同時(shí)也作為登錄系統(tǒng)的用戶名使用;身分屬性適于辨別用戶的類別,1為普通用戶,2為管理員,3為檢票員;每位用戶都有惟一的身分證號和電話號碼。
route路線實(shí)體:在該實(shí)體中,路線id為字段,拿來作為每一條路線的惟一標(biāo)志,另外還記錄了該路線途徑的每一站以及抵達(dá)該站的時(shí)刻。
train車次實(shí)體:在該實(shí)體中,車次id為字段,拿來作為每一個(gè)車次的惟一標(biāo)志;不同車次的火車擁有自己的一等座人數(shù)、二等座人數(shù)和三等座人數(shù);路線id作為該實(shí)體的主鍵與路線表相聯(lián)系,該車次的一等座、二等座以及三等座的售價(jià)也通過對應(yīng)路線的耗時(shí)和價(jià)錢參數(shù)估算下來。
船票實(shí)體:在該實(shí)體中,車次id和發(fā)車日期作為聯(lián)合字段,車次id作為主鍵與車次表相關(guān)聯(lián);一等座、二等座以及三等座剩余人數(shù)分別記錄了某一車次某一日期當(dāng)日的不同船票類別的剩余人數(shù)。
用戶訂單實(shí)體:在該實(shí)體中,訂單id作為鍵值,拿來作為每一份訂單的惟一標(biāo)志;對于每一份獨(dú)立的訂單,記錄著用戶訂購某一張船票的所有信息:包括用戶身分證號、購買車次id、車票類別(一等座、二等座和三等座)、該船票的售價(jià)、下單時(shí)間、起始站、終點(diǎn)站、出發(fā)時(shí)間、賬單id以及是否發(fā)生退款行為(1為發(fā)生了訂票2為未發(fā)生訂票);其中車次id作為該實(shí)體類別的字段與車次表相關(guān)聯(lián),可以對應(yīng)到相關(guān)車次的詳細(xì)信息。
bill用戶帳單實(shí)體:在該實(shí)體中,帳單id作為字段,拿來作為每一份帳單的惟一標(biāo)志;購票員id作為主鍵與用戶表相關(guān)聯(lián),且該用戶身分屬性的值為3,代表著該帳單對應(yīng)的某一個(gè)檢票員;訂單id作為主鍵與訂單表相關(guān)聯(lián),適于記錄該訂單屬于某一帳單,一份帳單可以對應(yīng)到多份訂單;因此該實(shí)體還包括應(yīng)付總額和實(shí)付總額這兩個(gè)屬性,通過這兩個(gè)屬性可以估算出找零總額。
整體E-R圖
2.4.3邏輯結(jié)構(gòu)設(shè)計(jì)
實(shí)體轉(zhuǎn)換為關(guān)系機(jī)制
用戶信息(用戶id,電話號碼,密碼,身分證號,真實(shí)姓名,用戶類別,性別,注冊日期)
路線信息(路線id,出發(fā)時(shí)間,抵達(dá)時(shí)間,出發(fā)站,目的站,后邊站1,后邊站2,后邊站3,后邊站4,后邊站5,后邊站6,后邊站7,后邊站8,抵達(dá)時(shí)間1,抵達(dá)時(shí)間2,抵達(dá)時(shí)間3,抵達(dá)時(shí)間4,抵達(dá)時(shí)間5,抵達(dá)時(shí)間6,抵達(dá)時(shí)間7,抵達(dá)時(shí)間8)
車次信息(車次id,路線id,一等座人數(shù),二等座人數(shù),三等座人數(shù),一等票售價(jià),二等票售價(jià),三等票售價(jià))
船票信息(車次id,發(fā)車日期,一等座剩余人數(shù),二等座剩余人數(shù),三等座剩余人數(shù))
訂單信息(訂單id,用戶身分證號,帳單id,車次id,船票類別,售價(jià),下單時(shí)間,發(fā)車時(shí)間,出發(fā)地,目的地,是否訂票)
帳單信息(帳單id,訂單id,購票員id,實(shí)付總額,應(yīng)付總額)
聯(lián)系轉(zhuǎn)換為關(guān)系機(jī)制
用戶擁有訂單(用戶身分證號,訂單編號)
訂單擁有車次(訂單編號,車次編號)
火車擁有路線信息(車次編號,路線編號)
帳單擁有訂單(帳單編號,訂單編號)
帳單對應(yīng)購票員(帳單編號,購票員編號)
船票擁有車次(車次編號,發(fā)車日期)
實(shí)體與聯(lián)系進(jìn)行合并
User表設(shè)計(jì)如下:
Route表設(shè)計(jì)如下:
Train表設(shè)計(jì)如下:
表設(shè)計(jì)如下:
表設(shè)計(jì)如下:
Bill表設(shè)計(jì)如下:
2.5硬件框架與步驟
該大作業(yè)的硬件框架分為三層,為表現(xiàn)層、應(yīng)用層與數(shù)據(jù)層。表現(xiàn)層主要功能為數(shù)據(jù)修飾及展示、獲取用戶信息、發(fā)送數(shù)據(jù)訪問懇求;應(yīng)用層主要功能為相應(yīng)訪問懇求、提供數(shù)據(jù)訪問插口、嵌入式數(shù)據(jù)庫編程、數(shù)據(jù)封裝更改;數(shù)據(jù)層主要功能為數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)初始化、儲存、增刪查改。工具箱為整個(gè)爭創(chuàng)開發(fā)過程提供相應(yīng)工具,以便開發(fā)進(jìn)行。
程序步驟設(shè)置為從登錄界面踏入,可以從登錄界面中選擇打開注冊界面完成注冊,還可以選擇身分,完成登入操作,踏入用戶界面、售票員界面以及管理員界面。其中管理員界面可以打開匯總界面,查看銷售狀況。對于用戶界面、售票員界面以及管理員界面,都是采取訪問應(yīng)答的形式獲取數(shù)據(jù)并完成數(shù)據(jù)整理展示到后端,而匯總界面,這是依據(jù)當(dāng)晚的購票狀況,獲取相應(yīng)數(shù)據(jù)并完成整理與展示。
2.6后端設(shè)計(jì)
管理員界面:分為三大版塊,分別為標(biāo)題區(qū)、功能選擇區(qū)以及顯示區(qū),標(biāo)題區(qū)會(huì)對硬件的信息和字體進(jìn)行展示,并提供用戶的基本信息;功能選擇區(qū)將要對管理層的功能進(jìn)行分類,并通過標(biāo)簽顯示,由鍵盤單擊來確定數(shù)據(jù)顯示界面;顯示區(qū)則是對前端數(shù)據(jù)傳到后,對數(shù)據(jù)完成整理并進(jìn)行展示。
購票員界面:分為三大版塊,分別為標(biāo)題區(qū)、售票區(qū)以及帳單遞交區(qū),標(biāo)題區(qū)會(huì)對硬件的信息和字體進(jìn)行展示,并提供購票員的基本信息;購票區(qū)可以由購票員鍵入目的站和終點(diǎn)站對符合條件的車次信息進(jìn)行查找并顯示;帳單遞交區(qū)則是對購票員處理的一系列訂單進(jìn)行遞交操作。
用戶界面:該界面與檢票員界面相同,分為三大版塊,分別為標(biāo)題區(qū)、售票區(qū)以及帳單遞交區(qū),標(biāo)題區(qū)會(huì)對硬件的信息和字體進(jìn)行展示,并提供購票員的基本信息;購票區(qū)可以由購票員鍵入目的站和終點(diǎn)站對符合條件的車次信息進(jìn)行查找并顯示;帳單遞交區(qū)則是對購票員處理的一系列訂單進(jìn)行遞交操作。
三、過程闡述
因?yàn)橄到y(tǒng)內(nèi)容較大,所以在此介紹過程闡述的大體思路,必要時(shí)進(jìn)行詳細(xì)樣例的說明。而更具體的內(nèi)容會(huì)可以通過分工,詳細(xì)查看每個(gè)成員的試驗(yàn)報(bào)告,上面包括了詳細(xì)的代碼實(shí)現(xiàn)方法。
3.1任務(wù)分工
后端
前端
3.2整體框架
設(shè)置為從登錄界面踏入,可以從登錄界面中選擇打開注冊界面完成注冊,還可以選擇身分,完成登入操作,踏入用戶界面、售票員界面以及管理員界面。其中管理員界面可以打開匯總界面,查看銷售狀況。對于用戶界面、售票員界面以及管理員界面,都是采取訪問應(yīng)答的形式獲取數(shù)據(jù)并完成數(shù)據(jù)整理展示到后端,而匯總界面,這是依據(jù)當(dāng)晚的購票狀況,獲取相應(yīng)數(shù)據(jù)并完成整理與展示。
3.3后端開發(fā)
樣例:此處列舉車次信息查看窗口,該窗口由分欄器、搜索框以及信息展示三個(gè)組件進(jìn)行構(gòu)成。其中分欄器是直接通過ui生成代碼,再通過編譯器完成封裝,直接使用的。對于搜索框與信息展示欄,我們通過ui生成后,進(jìn)行父類封裝,再承繼父類內(nèi)容,完成多態(tài)封裝,在此產(chǎn)生符合列車信息查看的組件要求。再通過布局將各個(gè)組件組合上去。
3.4圖表描繪
詳細(xì)實(shí)現(xiàn)方式:
3.5前后端交互
需求功能實(shí)現(xiàn)方法:首先在ui界面中查看是否數(shù)據(jù)違法或填寫信息不完全,再者應(yīng)用層從數(shù)據(jù)層獲取數(shù)據(jù)進(jìn)行處理,再與后端數(shù)據(jù)比較或交互等操作,最后完成業(yè)務(wù)功能。
在此進(jìn)行一個(gè)樣例說明:在后端發(fā)送獲取報(bào)表信息的懇求后,后端會(huì)對信息進(jìn)行檢測,假如正確會(huì)傳到到前端中,通過服務(wù)層進(jìn)行數(shù)據(jù)的估算處理與封裝,最后傳回給后端。或許在過程中使用了工具系列的其他方式,當(dāng)發(fā)生錯(cuò)誤時(shí),將要對錯(cuò)誤信息進(jìn)行報(bào)錯(cuò)。
3.6應(yīng)用層插口
應(yīng)用功能實(shí)現(xiàn)方法:從數(shù)據(jù)層中獲取對應(yīng)數(shù)據(jù),再者應(yīng)用層從數(shù)據(jù)層獲取數(shù)據(jù)進(jìn)行處理,對數(shù)據(jù)進(jìn)行估算統(tǒng)計(jì)與整理判定數(shù)據(jù)生成是否成功,進(jìn)行相應(yīng)的提示,并傳輸生成后的數(shù)據(jù)。
詳細(xì)樣例為:在統(tǒng)計(jì)前五名的購票員產(chǎn)量時(shí),首先在數(shù)據(jù)層獲取數(shù)據(jù)并進(jìn)行相應(yīng)的整理,在到應(yīng)用層中處理數(shù)據(jù),最后將數(shù)據(jù)返回,并提示對應(yīng)信息
3.7數(shù)據(jù)庫編程
數(shù)據(jù)庫連結(jié)操作:此處使用了json文件進(jìn)行配置,其中補(bǔ)充了關(guān)于數(shù)據(jù)庫連結(jié)的各類信息,詳細(xì)代碼如下:
數(shù)據(jù)庫的插口整體框架:首先會(huì)判定傳到參數(shù)的正確性,例如寬度與違法字符等再者通過字符串條紋的形式,將mysql句子完成條紋,成后通過游標(biāo)進(jìn)行執(zhí)行假如成功則復(fù)印提示信息,假如失敗將要拋出異常,同時(shí)進(jìn)行數(shù)據(jù)庫的回滾操作。
四、成果展示(部份)4.1登入界面
登陸界面ui圖
檢測填入信息合法性
權(quán)限不足提示
4.2注冊界面
注冊ui截面圖
檢測填入信息合法性
注冊成功告誡
注冊失敗告誡
顯示按鍵實(shí)現(xiàn)
4.3車次信息展示界面(與其他信息展示界面基本一致)
2023-08-03 16:08
2023-08-03 15:07
2023-08-03 15:07
2023-08-03 15:07
2023-08-03 11:08