車票銷售管理系統(tǒng)_第1頁(yè)
車票銷售管理系統(tǒng)_第2頁(yè)
車票銷售管理系統(tǒng)_第3頁(yè)
車票銷售管理系統(tǒng)_第4頁(yè)
車票銷售管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、編號(hào) 學(xué)生實(shí)訓(xùn)報(bào)告20102011學(xué)年 第 二 學(xué)期實(shí) 習(xí) 類 別 開發(fā)實(shí)訓(xùn)學(xué) 生 姓 名周宏義專 業(yè)軟件開發(fā)與測(cè)試學(xué) 號(hào)091311706指 導(dǎo) 教 師陳純毅學(xué) 院 軟件學(xué)院2011年 7 月 起 止 周1719周 數(shù)3實(shí)習(xí)地點(diǎn)軟件學(xué)院專業(yè)實(shí)驗(yàn)室實(shí)訓(xùn)目的:通過一些實(shí)際的開發(fā)案例,培養(yǎng)學(xué)生分析和解決實(shí)際問題的能力,培養(yǎng)學(xué)生綜合應(yīng)用基本概念,基本原理,和技術(shù)方法的能力,真正做到學(xué)以致用,使課本上抽象的理論,方法與具體的實(shí)踐應(yīng)用相結(jié)合。實(shí)訓(xùn)要求:實(shí)踐設(shè)計(jì)以實(shí)際應(yīng)用中的小型題目為主,要求學(xué)生獨(dú)立完成或合作完成。要求學(xué)生能根據(jù)不同的題目類型選擇一種或兩種開發(fā)模式,完成從系統(tǒng)定義,指定開發(fā)計(jì)劃,需求分析

2、,設(shè)計(jì),編碼/測(cè)試,直至運(yùn)行/維護(hù)的軟件生存期的全過程。實(shí)訓(xùn)進(jìn)度安排及主要內(nèi)容:第一周:(1)需求分析;(2)數(shù)據(jù)庫(kù)設(shè)計(jì)(使用SQL Server);(3)總體設(shè)計(jì);模塊定義、模塊結(jié)構(gòu)圖,各模塊功能描述、模塊流程圖(使用Visio畫圖);第二周:(4)詳細(xì)設(shè)計(jì):要求有數(shù)據(jù)錄入、修改、刪除、查詢、匯總、報(bào)表功能;第第第三周:(5)運(yùn)行測(cè)試,測(cè)試用例、結(jié)果;(6)撰寫開發(fā)文檔,含總結(jié);成績(jī):指導(dǎo)教師/帶隊(duì)教師(簽字)年 月 日車票銷售管理系統(tǒng)摘要隨著現(xiàn)代信息技術(shù)的高速發(fā)展,越來越多的操作都依靠計(jì)算機(jī)來完成。我國(guó)鐵路系統(tǒng)的規(guī)模不斷擴(kuò)大,乘客的要求也不斷提高,這對(duì)鐵路部門的管理工作、售票系統(tǒng)的工作提出

3、了更高的要求。我們慣用的手工操作管理已經(jīng)不能適應(yīng)現(xiàn)代化的要求。因此,當(dāng)務(wù)之急是針對(duì)鐵路售票工作的特點(diǎn)和要求開發(fā)出更完善的鐵路售票系統(tǒng),提高鐵路部門的工作效率,并能為乘客提供及時(shí)、快速的服務(wù)。隨著鐵路系統(tǒng)改革的深入展開,工作的計(jì)算機(jī)化已成為主導(dǎo)趨勢(shì)。計(jì)算機(jī)化管理不僅可以節(jié)約大量的人力物力,而且可以大大提高工作效率,為鐵路系統(tǒng)創(chuàng)造更大的效益。本軟件正是為了適應(yīng)這種趨勢(shì)而開發(fā)的,目的是研究售票系統(tǒng)所需的各項(xiàng)技術(shù)和方案。鐵路售票系統(tǒng)涉及多方面的技術(shù),主要有ADO技術(shù)、Microsoft SQL Sever、數(shù)據(jù)庫(kù)的操作、注冊(cè)表的操作、基于vc的兩層開發(fā)、MFC一些控件的使用等。在本篇論文中,介紹了鐵路

4、售票系統(tǒng)的各項(xiàng)功能及其實(shí)現(xiàn)方法。它主要包括車票的查詢、售票、退票及車票系統(tǒng)的數(shù)據(jù)更新設(shè)置等。關(guān)鍵字: 鐵路售票系統(tǒng) VC ADO 數(shù)據(jù)庫(kù) SQL目錄一、 系統(tǒng)需求分析- 031.1.管理員管理模塊- 031.2.普通用戶模塊- 03二、 數(shù)據(jù)庫(kù)設(shè)計(jì)- 04三、 總體設(shè)計(jì)- 063.1.車票銷售管理系統(tǒng)- 063.2.系統(tǒng)數(shù)據(jù)流圖- 08四、 詳細(xì)設(shè)計(jì)- 114.1.數(shù)據(jù)庫(kù)詳細(xì)設(shè)計(jì)- 114.2.系統(tǒng)界面設(shè)計(jì)- 14五、 調(diào)試分析- 18六、 總結(jié)- 19七、 致謝- 20八、 參考文獻(xiàn)- 20九、 附錄- 21一、系統(tǒng)需求分析考察市長(zhǎng)途汽車站、火車站售票業(yè)務(wù),設(shè)計(jì)車站售票管理系統(tǒng)。系統(tǒng)要求為:

5、首先根據(jù)調(diào)查該系統(tǒng)應(yīng)該提供兩種管理模塊:1.管理員管理模塊。對(duì)于該模塊應(yīng)該包含一下功能:A:管理車輛服務(wù)人員(如司機(jī),列車乘務(wù)員等)的信息。例如增加人員,包括基本信息和職務(wù),工作地方等信息。在員工退休的時(shí)候,應(yīng)刪除其信息,因此應(yīng)該同時(shí)包括刪除用戶的功能。B:增加、刪除和修改車輛的信息(包括長(zhǎng)途汽車和火車)。其中包含一些車輛的基本信息,如車輛編號(hào),起始站,終止站,開車時(shí)間,到站時(shí)間和表示現(xiàn)在狀況的信息。同時(shí)在增加和修改模塊可以對(duì)上面這些信息進(jìn)行修改和刪除。C:車輛發(fā)車調(diào)度安排。在此模塊中可以安排車輛的發(fā)車日期和發(fā)車時(shí)車輛的一些相關(guān)信息,如車輛已坐多少人,可作多少人等信息。D:車輛路線安排。不管是

6、汽車還是火車,它們都有一條相應(yīng)的行駛路線。在該模快可以設(shè)置一輛車的行駛路線,包括經(jīng)過站,經(jīng)過時(shí)間等信息。E:訂單處理。該系統(tǒng)支持用戶訂票業(yè)務(wù),因此作為管理員,應(yīng)該提供處理訂單的功能。其中包括確認(rèn)訂單,刪除訂單。F:票價(jià)管理,站點(diǎn)管理。包含不同車次,不同類型的票價(jià)的錄入和刪除。以及站點(diǎn)信息的錄入刪除。G:數(shù)據(jù)備份。為了防止由于某種原因造成后臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)的丟失,因此為系統(tǒng)管理員提供定期備份數(shù)據(jù)庫(kù)信息的功能。2.普通用戶模塊。A:訂票。為方便用戶獲得車票,為用戶提供訂票業(yè)務(wù),用戶可以在此按車次和發(fā)車日期進(jìn)行訂票。同時(shí)需要輸入一些附加信息,如姓名,定票數(shù)量等信息。B:購(gòu)票,退票。管理人員根據(jù)用戶提供的

7、信息,為用戶提供即時(shí)售票,退票服務(wù)。C:查詢信息。用戶為了獲取車輛信息,需要專門為用戶提供查詢車輛信息的服務(wù)。用戶可以根據(jù)車次的編號(hào)或者起始和終止站查詢車輛的信息如時(shí)刻表信息,車站信息。為了保護(hù)系統(tǒng)后臺(tái)信息的安全,提供給普通用戶和管理員的是不同的功能模塊,不同的用戶只能訪問自己所有權(quán)力訪問的信息。他們之間相互獨(dú)立但也有著聯(lián)系,用戶可以下定單,管理員可以處理點(diǎn)單。二、數(shù)據(jù)庫(kù)設(shè)計(jì)根據(jù)需求分析有:管理人員要處理的信息有,人員信息,車次信息,車輛調(diào)度信息,車票信息,訂單處理信息等。因此應(yīng)為系統(tǒng)提供至少一下表:1管理人員信息,則需要一個(gè)人員信息表,用以存放人員信息。2管理車次信息,則需要車次信息表,存放

8、車次信息。3車輛調(diào)度,則需要發(fā)車日期安排表,車輛線路設(shè)置表,站點(diǎn)表。4訂單處理,則需要訂單表,存放訂單的信息。.該系統(tǒng)分為管理員模塊和不同用戶模塊,因此為了提供不同用戶只能登錄不同的功能模塊,則用密碼設(shè)置其登錄模塊。因此設(shè)置了一個(gè)用戶登錄信息表,用以存放用戶登錄名和密碼。E-R圖由于火車和長(zhǎng)途汽車有些不同,應(yīng)此這里給出了兩種E_R圖,上圖是關(guān)于火車的,下圖是關(guān)于汽車的。最后分析得到所有的表的信息如下:火車,汽車票銷售所需的表及其屬性:火列(車次號(hào),起始站,終止站,發(fā)車時(shí)間,到站時(shí)間,狀態(tài),車廂數(shù))車站(車站編號(hào),車站名稱)經(jīng)過(車次號(hào),車站編號(hào),經(jīng)過時(shí)間,經(jīng)過次序)工作人員(人員編號(hào),車次號(hào),

9、姓名,性別,職務(wù))火車票(車票編號(hào),車次號(hào),起始站編號(hào),終止站編號(hào),車廂號(hào),座號(hào),價(jià)格,發(fā)車時(shí)間)車廂(車廂編號(hào),車次號(hào),車廂序號(hào),可坐人數(shù),可站人數(shù))訂單(訂單號(hào),訂票人姓名,車次號(hào),時(shí)間,票數(shù),附加信息)汽車(車次號(hào),起始站,終止站,發(fā)車時(shí)間,到站時(shí)間,可坐人數(shù),狀態(tài))發(fā)車安排(日期,車次,坐車廂,已坐數(shù),站車廂,已站人數(shù))用戶登錄信息表(登錄帳號(hào),登錄密碼,用戶類型)由于與汽車相關(guān)的實(shí)體有相同的屬性,則我們將它們合為一個(gè)表。例如:我們可以看到兩個(gè)訂票單表和工作人員表完全相同,因此在設(shè)計(jì)是可以把這兩個(gè)表設(shè)計(jì)為一個(gè)。發(fā)車安排表,車票表也可以合二為一。同時(shí)為了區(qū)分管理員和用戶,需要為該系統(tǒng)提供

10、一個(gè)用戶登錄信息表,用以區(qū)分不同的用戶,從而為不同的使用著提供不同的功能。三、總體設(shè)計(jì)1.車票銷售管理系統(tǒng):系統(tǒng)可以分為兩個(gè)部分,一個(gè)是前臺(tái)銷售模塊,另一個(gè)是后臺(tái)車輛等信息的管理模塊。第一個(gè)模塊只為外部用戶使用,而管理人員可以在第二個(gè)模塊系統(tǒng)中對(duì)車輛信息進(jìn)行管理,從而使得非管理人員只能讀取信息,而不能更改信息。車票銷售管理系統(tǒng)總體結(jié)構(gòu) 后臺(tái)管理模塊各個(gè)功能的描述:車次管理模塊:管理員可以根據(jù)實(shí)際需要進(jìn)行車次的管理,如果在一個(gè)時(shí)段,該車的運(yùn)營(yíng)狀況非常緊張,則可以增加該車次。車輛服務(wù)人員:該模塊可以最為人員管理的模塊,管理員可以通過此模塊對(duì)一個(gè)車輛安排服務(wù)人員,或調(diào)正用戶的工作地點(diǎn)。車輛路線管理:

11、該模塊可以為一輛車設(shè)置一個(gè)路線,使車輛根據(jù)以定義好的路線行使。但有的時(shí)候,由于某種原因,車輛的行車路線需要改變,則可以通過該模塊,對(duì)車輛的行車路線重新設(shè)置。車輛狀態(tài)信息查詢模塊:通過該模塊,管理人員可以查看一輛車的狀態(tài),是否正在運(yùn)行,還是其他情況。車票信息管理:通過該模塊,管理人員可以對(duì)車票信息修改,或著增加。如需要修改車票價(jià)格等。查詢模塊功能描述:關(guān)于前臺(tái)售票系統(tǒng),需要為用戶設(shè)置查詢車輛的功能,應(yīng)此需要在售票系統(tǒng)中為用戶提供一個(gè)查詢子系統(tǒng),該系統(tǒng)分為兩種查詢方法,一種是按車次編號(hào)查詢,另一種是按站點(diǎn)查詢。 查詢子模塊 查詢模塊功能描述:在售票系統(tǒng)中關(guān)于售票,為了方便個(gè)人和團(tuán)體購(gòu)票,系統(tǒng)提供了

12、兩種售票方式,一種是為個(gè)人用戶提供的售票機(jī)制,一種是為團(tuán)體售票設(shè)計(jì)的售票機(jī)制。由于個(gè)人和團(tuán)體購(gòu)票在價(jià)格等方面有差別,因此不經(jīng)要在售票中區(qū)分開,還要在退票方面進(jìn)行區(qū)分。因此在退票方面也分為個(gè)人和團(tuán)體。訂票子模塊功能描述:在售票系統(tǒng)中為了方便用戶購(gòu)票,系統(tǒng)提供了訂票功能,用戶(包括個(gè)人和團(tuán)體)都可以通過該模塊進(jìn)行訂票。從而購(gòu)買到需要的票。銷售子模塊 退票子模塊 訂票子模塊2.系統(tǒng)數(shù)據(jù)流圖:1.前臺(tái)購(gòu)票處理總數(shù)據(jù)流圖由于前臺(tái)的處理中各個(gè)模塊的功能比較復(fù)雜,因此給出其各個(gè)模塊的數(shù)據(jù)流圖。a. 查詢處理數(shù)據(jù)流圖:b. 用戶訂票模塊數(shù)據(jù)流圖: c.用戶購(gòu)票模塊數(shù)據(jù)流圖:d.用戶退票模塊數(shù)據(jù)流圖:2.后臺(tái)處

13、理模塊數(shù)據(jù)流圖:四、詳細(xì)設(shè)計(jì)1.數(shù)據(jù)庫(kù)詳細(xì)設(shè)計(jì):1.1數(shù)據(jù)庫(kù)表結(jié)構(gòu)用戶登錄信息表:UserLoad字段名字段類型長(zhǎng)度主/外鍵字段值約束登錄帳號(hào)UnoVarchar10PNot null登錄密碼UpswVarchar10Not null用戶類型UstyVarchar10Not null列車表:Train字段名字段類型長(zhǎng)度主/外鍵字段值約束車次號(hào) TnoVarchar50PNot null起始站 TbnameVarchar50Not null終止站 TenameVarchar50Not null狀態(tài) TstateVarchar50Not null車廂數(shù) TscInt 4Not null發(fā)車時(shí)Tbt

14、imeDatetime8Not null到站時(shí)TetimeDatetime8Not null火車票表:TrainTicket字段名字段類型長(zhǎng)度主/外鍵字段值約束車次號(hào) TnoVarchar50FNot null價(jià)格 TTpMoney4Not null類型TTStyVarchar50團(tuán)體,個(gè)人票類型TTTstyVarchar50坐票,站票,臥鋪車站表:Station字段名字段類型長(zhǎng)度主/外鍵字段值約束車站編號(hào)SnoVarchar10PNot null車站名稱SnameVarchar10Not null經(jīng)過站表:Pstation字段名字段類型長(zhǎng)度主/外鍵字段值約束車次號(hào)TnoVarchar10FN

15、ot null車站編號(hào)SnoVarchar10FNot null經(jīng)過時(shí)間PtimeDatetime8Not null經(jīng)過次序PnoInt4Not null人員信息表:Personnel字段名字段類型長(zhǎng)度主/外鍵字段值約束人員編號(hào) PenoVarchar10PNot null車次號(hào) TnoVarchar10FNot null姓名 PenameVarchar10Not null性別PesexVarchar10男,女職務(wù) PedutyVarchar10Not null訂單表:Order字段名字段類型長(zhǎng)度主/外鍵字段值約束訂單號(hào) OnoVarchar10PNot null訂票人姓名OnameVarch

16、ar10FNot null車次號(hào) TnoVarchar10Not null車次時(shí)間TtimeDatatime8Not null附加信息 OinfVarchar10團(tuán)體,個(gè)人票數(shù) Otsumint4null票類型 TstyVarchar50坐票,站票,臥鋪車廂表:Compartment字段名字段類型長(zhǎng)度主/外鍵字段值約束車廂編號(hào)CpnoVarchar10PNot null車次號(hào)TnoVarchar10FNot null可坐人數(shù)CspsitInt4 null可站人數(shù)CspstandInt 4 null汽車表:Bus字段名字段類型長(zhǎng)度主/外鍵字段值約束車次號(hào) BnoVarchar50PNot nul

17、l起始站 BbsVarchar50Not null終止站 BesVarchar50Not null發(fā)車時(shí)間 BstDatetime8Not null到站時(shí)間 BetDatetime8Not null價(jià)格 BpMoney4Not null發(fā)車安排:GoAnPai字段名字段類型長(zhǎng)度主/外鍵字段值約束車次號(hào) TnoVarchar50PNot null發(fā)車時(shí)間TGtimeDatetime8Not null可坐TSCPnoInt4Null已坐TSnoInt4Null可站TSSnoInt4Null已站TSsumInt4Null1.2數(shù)據(jù)庫(kù)的建立。 數(shù)據(jù)庫(kù)的建立可以通過企業(yè)管理器直接建立,然后按照上面的表結(jié)

18、構(gòu)建立系統(tǒng)需要的所有表格?;蛘咄ㄟ^SQL語(yǔ)句在查詢分析器中進(jìn)行。其所需要的SQL語(yǔ)句為:CREATE TABLE BTicket (Bno char (10) PRIMARY KEY,Bbs char (10),Bes char (10),Bst datetime,Bet datetime,Bcsp int,Bp int ) CREATE TABLE Compartment (Cpno char (10) PRIMARY KEY,Tno char (10) ,Cspsit int,Cspstand int, FOREIGN KEY (Tno) REFERENCES Train (Tno)CRE

19、ATE TABLE GoAnPai (TGtime datetime PRIMARY KEY, Tno char (10),TCSPno int,TSno int,TSSno int,TSsum int, FOREIGN KEY (Tno) REFERENCES Train (Tno) CREATE TABLE Orderinfo (Ono char (10) PRIMARY KEY,Oname char (10),Tno char (10),Ttime datetime,Otsum int ,Otime datetime,Oinf char (10) CHECK(TTsty IN( '

20、;個(gè)人', '團(tuán)體'),Tsty char (10) CHECK (TTTsty IN( '坐票', '臥鋪'),Ostate char (10), FOREIGN KEY (Tno) REFERENCES Train (Tno) CREATE TABLE Personnel (Peno char (10) PRIMARY KEY,Tno char (10),Pename char(10),Pesex char(10) CHECK (Pesex IN('女', '男'),Peduty char(10),Pe

21、age int, FOREIGN KEY(Tno) REFERENCES Train (Tno)CREATE TABLE Pstation (Tno char (10) ,Sno char (10),Ptime datetime,Pno int, FOREIGN KEY (Tno) REFERENCES Train (Tno), FOREIGN KEY (Sno) REFERENCES Station (Sno) CREATE TABLE Station (Sno char (10) PRIMARY KEY,Sname char (10) CREATE TABLE Train (Tno cha

22、r (10) PRIMARY KEY,Tbname char (10),Tename char (10),Tbtime char (10),Tetime char (10),Tsc int,Tstate char (10) )CREATE TABLE TrainTicket (Tno char (10) PRIMARY KEY,TTP money,TTsty char CHECK(TTsty IN( '個(gè)人', '團(tuán)體'),TTTsty char (10) CHECK (TTTsty IN( '坐票', '站票', '臥鋪

23、'), FOREIGN KEY (Tno) REFERENCES Train (Tno)CREATE TABLE UserLoad (Uno char(10) PRIMARY KEY,Upsw char(20),Usty char(10) )2.系統(tǒng)界面設(shè)計(jì):為了管理不同用戶使用不同的功能模塊,為系統(tǒng)提供了一個(gè)登錄系統(tǒng),用戶通過用戶名和密碼進(jìn)行登錄,系統(tǒng)根據(jù)用戶名和密碼判斷用戶的類型,登錄必要的模塊。其中為了方便,設(shè)置了兩個(gè)帳號(hào),以為管理員(用戶名為admin,密碼為1987),另一個(gè)為用戶(用戶名為guest,密碼為空)。2.1.系統(tǒng)登錄設(shè)計(jì):主界面分為管理員界面(下2)2.2.1管

24、理員增加工作人員信息。通過增加人員信息界面向數(shù)據(jù)庫(kù)中增加人員信息。管理員在輸入人員信息后,單擊確定,將信息加入數(shù)據(jù)庫(kù)。其中存在這一些約束,如:人員編號(hào)不能重復(fù),工作車次號(hào)一定要存在。2.2.2修改刪除人員信息。管理人員信息不僅能增加,也要能夠修改人員信息,以防止用戶工作崗位后職務(wù)的變更,獲退休等情況。在次模塊中用戶在人員編號(hào)中輸入人員編號(hào),單擊查詢,找到已經(jīng)存在的人員信息。如需修改,在單擊刪除,否則點(diǎn)擊修改,此時(shí)確定變?yōu)榭捎茫渌谋究蛞嘧優(yōu)榭捎?,輸入更新后的信息,單擊確定,則更新了人員的信息。2.3增加車輛信息(火車)。由于此系統(tǒng)可以同時(shí)管理汽車和火車,但是又由于兩者之間存在這差別,因此分兩

25、部分。管理員在輸入了車次信息后,單擊確定則增加了該車的信息。注意車次號(hào)不能重復(fù)。2.4增加車輛信息(汽車)。和上邊的差不多,管理員在輸入車次信息后單擊確定。同時(shí)也要注意車次不能重復(fù)。2.5修改刪除車次信息。當(dāng)一個(gè)車?yán)镄枰承┳兏牵瑒t可以更改其信息。和修改刪除人員信息相同,先輸入車輛編號(hào),單擊查詢找到該車信息,單擊修改,則可以修改,刪除則可以刪除。2.6處理用戶訂單。此系統(tǒng)支持訂票業(yè)務(wù)。因此為管理員增加了一個(gè)處理用戶訂單的功能,登錄該界面是,系統(tǒng)自動(dòng)講為處理的訂單顯示給管理員,管理員審核該訂單后,點(diǎn)擊確認(rèn),處理此訂單。2.7刪除訂單。管理員為了清理系統(tǒng)數(shù)據(jù),需要?jiǎng)h除一部分過期的數(shù)據(jù)。則可通過此

26、刪除已過期的訂單信息。管理員登錄該界面是系統(tǒng)自動(dòng)加載已經(jīng)處理過的過期訂單,選擇要?jiǎng)h除的,點(diǎn)擊刪除,在刪除成功。2.8發(fā)車安排。由于一輛車可以多個(gè)發(fā)車時(shí)間,因此在此可以安排其的出動(dòng)時(shí)間。其中可以包含發(fā)車時(shí)間的車輛信息,如:已坐人數(shù),已站人數(shù)。而對(duì)于汽車只需要已坐人數(shù)。2.9路線設(shè)計(jì)。每一輛車都有自己的行車路線。則在增加了車次的信息后,需要為其設(shè)計(jì)一個(gè)行車路線。開始輸入車次所經(jīng)過的站點(diǎn)數(shù),單擊OK(注意,如果是汽車,開始選擇汽車復(fù)選框)。則可以輸入數(shù)據(jù)信息,輸入一個(gè)后單擊確定繼續(xù)輸入所有經(jīng)過的站點(diǎn)的信息,知道輸入了所有的車站后。退出。2.10站點(diǎn)的錄入和票價(jià)的錄入。這里可以錄入一些必要站點(diǎn)和票價(jià)信

27、息。用戶輸入完整的數(shù)據(jù)后,單擊確定就可以增加該信息了。2.11用戶訂票。不同用戶登錄該系統(tǒng)后可一通過該模塊訂購(gòu)需要日期的車票。用戶輸入訂單信息,單擊確定,則提交了訂單,等待管理員的審核。注意:車次要是已經(jīng)存在的車次,日期不能小于訂票日期。同時(shí)提交后會(huì)顯示一定的信息給用戶。2.12購(gòu)票,退票。用戶不經(jīng)可以在次系統(tǒng)中訂票,也可以立即進(jìn)行購(gòu)票,用戶只要輸入必要的信息,單擊確定就可以購(gòu)買到票。但是如果信息不合格,則顯示出錯(cuò)信息。如:發(fā)車日期已經(jīng)過了,該日該車已經(jīng)坐滿了。同時(shí)如果用戶要退票則可以在退票模塊中退票,只要輸入必要的信息,單擊確定。同時(shí),如果過期,則不退。2.13查詢信息。該查詢分為兩種方式查

28、詢,一種是按車次號(hào)進(jìn)行查詢,一中是按車站進(jìn)行查詢。 按車次號(hào)進(jìn)行查詢,用戶輸入車次號(hào),單擊查詢,如果存在相應(yīng)的車次,則為用戶顯示相應(yīng)的信息,如經(jīng)過的站點(diǎn)和經(jīng)過時(shí)間。否則,顯示錯(cuò)誤提示信息。 按站點(diǎn)進(jìn)行查詢,用戶輸入起始站和終止站,單擊查詢。則為用戶顯示必要的信息。如:所有經(jīng)過這兩個(gè)車站的車次信息,如車次號(hào),車次起始終止站,始發(fā)終止時(shí)間等。否則顯示錯(cuò)誤提示信息。五、調(diào)試分析調(diào)試分析:l 數(shù)據(jù)庫(kù)設(shè)計(jì)方面:1. 數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),各個(gè)實(shí)體之間的屬性必須是相對(duì)不可分割的整體。一個(gè)實(shí)體如果擁有一個(gè)可以分割的實(shí)體,則將該屬性單獨(dú)分為一個(gè)實(shí)體進(jìn)行設(shè)計(jì)。2. E-R圖向關(guān)系模型轉(zhuǎn)換時(shí),其中的1 :1,1 :n,m

29、 :n聯(lián)系,有多中轉(zhuǎn)換方法。盡可能使用簡(jiǎn)單的轉(zhuǎn)化方法。該合并的合并,該分開的分開。3. 各個(gè)表中的屬性值,要根據(jù)要求設(shè)置字段的格式,如:價(jià)格,設(shè)置為Money類型,日期用Datetime類型,票數(shù)用int類型等等。4. 向數(shù)據(jù)庫(kù)中輸入數(shù)據(jù)要符合數(shù)據(jù)庫(kù)表設(shè)計(jì)是定義的數(shù)據(jù)類型,否則將出項(xiàng)數(shù)據(jù)格式不正確的錯(cuò)誤提示。數(shù)據(jù)庫(kù)各個(gè)表之間通過外鍵產(chǎn)生聯(lián)系,如果一個(gè)表字段是另一個(gè)表的外鍵,在使用時(shí)要滿足參照完整性,即在被參照表中存在該字段的值。負(fù)責(zé)產(chǎn)生錯(cuò)誤。l 系統(tǒng)設(shè)計(jì)方面:1. 本系統(tǒng)使用ADO操作數(shù)據(jù)庫(kù)。在使用前要增加ADO庫(kù)文件msado15.dll,然后使用:CoInitialize(NULL)初始化

30、OLE/COM環(huán)境,否則將無法使用ADO所提供的函數(shù)。如果出現(xiàn)無法連接數(shù)據(jù)源,則說明沒有注冊(cè)數(shù)據(jù)源。2. 自編寫使用記錄集獲取數(shù)據(jù)庫(kù)數(shù)據(jù)的時(shí)候,如果已經(jīng)有一個(gè)打開的記錄集在再次打開是出項(xiàng)了錯(cuò)誤,因此在重復(fù)打開同一個(gè)記錄集時(shí)應(yīng)該確保該記錄集對(duì)象沒有打開??梢允褂胏lose()關(guān)閉。3. VC中使用的日期控件所用的變量類型是CTIME類型。而在程序中使用時(shí)轉(zhuǎn)換為需要的類型。如先轉(zhuǎn)化為CString類型,然后轉(zhuǎn)換為_variant_t類型?;蛘達(dá)bstr_t類型。4. 使用SQL語(yǔ)句進(jìn)行操作時(shí),要注意條件表達(dá)式中的表示方法,如:字符串類型要加單引號(hào),數(shù)字類型不加,否則在執(zhí)行查詢語(yǔ)句是會(huì)出錯(cuò)誤。 六、

31、總結(jié)經(jīng)過為期一個(gè)月的軟件開發(fā),基本上實(shí)現(xiàn)了鐵路售票系統(tǒng)的大部分功能。通過對(duì)本系統(tǒng)的設(shè)計(jì)與開發(fā),使我深刻的解了各種控件的和函數(shù)的深層次的功能,讓我對(duì)VC編程工具有了更深一步的認(rèn)識(shí)。但由于時(shí)間倉(cāng)促,在的功能開發(fā)中仍有很多不盡人意的地方。在軟件的開發(fā)過程中,綜合運(yùn)用了大學(xué)四年所學(xué)的知識(shí),查閱了大量的相關(guān)資料翻閱了很多文獻(xiàn),并在軟件開發(fā)過程中通過請(qǐng)教他人,進(jìn)一步拓寬了編程視野,提高了知識(shí)水平。鐵路售票系統(tǒng)所涉及的技術(shù)主要以對(duì)數(shù)據(jù)庫(kù)的操作為核心的,主要是ADO技術(shù)和一些控件的使用。通過開發(fā)實(shí)踐活動(dòng),我們?nèi)〉昧艘欢ǖ某晒?。這主要表現(xiàn)在:l 實(shí)現(xiàn)了通過ADO對(duì)數(shù)據(jù)庫(kù)的操作。l 實(shí)現(xiàn)了通過函數(shù)對(duì)注冊(cè)表的讀取和

32、寫入。l 在程序中實(shí)現(xiàn)了數(shù)據(jù)源的動(dòng)態(tài)配置。l 熟悉了對(duì)SQL Server的操作。數(shù)據(jù)庫(kù)設(shè)計(jì)是一件相對(duì)復(fù)雜的事情,在設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)前應(yīng)該仔細(xì)的對(duì)系統(tǒng)要出操作的數(shù)據(jù)進(jìn)行分析,即分析該系統(tǒng)建立的數(shù)據(jù)庫(kù)所有需要使用到的實(shí)體,該實(shí)體擁有那些屬性,各種屬性應(yīng)該設(shè)置數(shù)據(jù)類型。然后分析各種實(shí)體之間的聯(lián)系,構(gòu)造出各種對(duì)象之間的關(guān)系圖。然后按照數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟盡行數(shù)據(jù)庫(kù)設(shè)計(jì)。再次可以在企業(yè)管理器中建立數(shù)據(jù)庫(kù),也可以在查詢分析器中使用SQL語(yǔ)句建立數(shù)據(jù)庫(kù)。使用Visual C+開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的時(shí)候,可以使用ODBC,DAO,RDO,OLEDB和ADO,同時(shí)結(jié)構(gòu)化的查詢語(yǔ)句(SQL)也在數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)中起著

33、關(guān)鍵的作用。設(shè)計(jì)好數(shù)據(jù)庫(kù)后,可以輸入一點(diǎn)數(shù)據(jù),作為日后建立系統(tǒng)時(shí)作為調(diào)試時(shí)使用。同時(shí),在設(shè)計(jì)一個(gè)系統(tǒng)前,首先應(yīng)該做好它的需求分析,即先分析該系統(tǒng)要實(shí)現(xiàn)什么功能,然后將該系統(tǒng)分為一定量的模塊。再分析各個(gè)模塊的功能具體如何進(jìn)行操作,操作步驟和流程,及各個(gè)功能對(duì)數(shù)據(jù)如何處理和處理后是否會(huì)造成數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)錯(cuò)誤等。在編寫程序是一定要注意數(shù)據(jù)格式的正確性,不同格式之間可以通過默認(rèn)的轉(zhuǎn)換去實(shí)現(xiàn),或者進(jìn)行強(qiáng)制性的格式轉(zhuǎn)換,但是有的數(shù)據(jù)格式是不能一次性轉(zhuǎn)換過去的。我們可以先將其轉(zhuǎn)換為一種格式,然后再轉(zhuǎn)換為需要的格式。為了方便用戶操作,在設(shè)計(jì)界面的時(shí)候,可以讓一些控件禁止,當(dāng)用戶的操作滿足一定的條件后在使這些控

34、件變?yōu)榭捎?。這樣就不會(huì)讓用戶產(chǎn)生錯(cuò)覺,看著可以用但卻因?yàn)槟撤N條件不滿足,在使用時(shí)出現(xiàn)錯(cuò)誤。在這里只是一個(gè)單機(jī)版的,還可以設(shè)置成網(wǎng)絡(luò)版本。使處于不同的地方的用戶能夠同時(shí)使用該系統(tǒng)進(jìn)行操作。由于時(shí)間倉(cāng)促和水平有限,因此錯(cuò)誤和不足在所難免,懇請(qǐng)各位老師和專家批評(píng)指正。七、致謝在這次畢業(yè)設(shè)計(jì)中,我從指導(dǎo)老師身上學(xué)到了很多東西。陳純毅老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我受益匪淺。無論在理論上還是在實(shí)踐中,都給與我很大的幫助。最后, 我在此對(duì)給與我極大幫助的陳純毅老師,給我提供操作平臺(tái)的長(zhǎng)春理工大學(xué)軟件學(xué)院以及孫云鵬等同學(xué)等所有對(duì)此軟件的開發(fā)提供過幫助的人表示由衷的感謝。八、參考文

35、獻(xiàn)1 俞海英 數(shù)據(jù)庫(kù)應(yīng)用教程 北京:清華大學(xué)出版社,2008.2 Microsoft ADO 程序員參考3 鄭阿奇 丁有和 Visual C+ 應(yīng)用教程人民郵電出版社4 侯俊杰 深入淺出MFC 華中科技大學(xué)出版社九、附錄1.添加車輛信息void CADDCBUS:OnAdd() / TODO: Add your control notification handler code hereUpdateData();_bstr_t query; int temp1;if(tembool)Rest_Add_Bus->Close();tembool=false; if(m_Bno.IsEmpty

36、()AfxMessageBox("請(qǐng)輸入車輛的編號(hào)!");return;m_Bno.TrimRight(" ");m_Bno.TrimLeft(" ");VARIANT v;CString temp;_bstr_t strsql="select * from BTicket"V_VT(&v)=VT_DISPATCH;V_DISPATCH(&v)=(IDispatch*)theApp.m_pConn;V_DISPATCH(&v)->AddRef(); Rest_Add_Bus->p

37、ut_CursorLocation(adUseClient);HRESULT hr=Rest_Add_Bus->Open(strsql, v, adOpenKeyset, adLockOptimistic, adCmdText);if (!SUCCEEDED(hr)return ;/打開記錄集失敗query="select * from BTicket where Bno='"temp1=FindBusIsExist(query,m_Bno); if(temp1=3) /不存在相同的車號(hào)Rest_Add_Bus->AddNew();/添加新的記錄Rest

38、_Add_Bus->PutCollect("Bno",_variant_t(m_Bno); Rest_Add_Bus->PutCollect("Bbs",_variant_t(m_Bbs);Rest_Add_Bus->PutCollect("Bes",_variant_t(m_Bes);temp=ToStringCTime(m_Bbtime);Rest_Add_Bus->PutCollect("Bst",_variant_t(temp);temp=ToStringCTime(m_Betime

39、);Rest_Add_Bus->PutCollect("Bet",_variant_t(temp);temp.Format("%d",m_Bp);Rest_Add_Bus->PutCollect("Bp",_variant_t(temp);temp.Format("%d",m_Cspe);Rest_Add_Bus->PutCollect("Bcsp",_variant_t(temp);Rest_Add_Bus->Update();/將記錄插入到數(shù)據(jù)/m_Bno="

40、;"m=""m_Tbtime=""m_state=""m_estation=""m_cpsum=0;m_bstation=""UpdateData(false);MessageBox("添加成功");m_dbGrid.SetRefDataSource(LPUNKNOWN)Rest_Add_Bus);/CDialog:OnOK();else if(temp1=1)MessageBox("打開記錄集失敗!");else if(temp1=2)Mess

41、ageBox("存在該編號(hào)的車輛!");/m_Bno=" "UpdateData(false); elseMessageBox("添加失敗!");2.買票void CBuyTT:Open_Anpai_Info()UpdateData();_bstr_t query;HRESULT hr;VARIANT v;CString str;string userinfo;str=ToStringCTime(m_Tbtiem);query="select * from GoAnPai where Tno='"+m_Tn

42、o+"' and TGtime='"query=query+str+"'"V_VT(&v)=VT_DISPATCH;V_DISPATCH(&v)=(IDispatch*)theApp.m_pConn;V_DISPATCH(&v)->AddRef(); Rest_Find_AnPai_Info->put_CursorLocation(adUseClient); hr=Rest_Find_AnPai_Info->Open(query, v, adOpenKeyset, adLockOptimi

43、stic, adCmdText);if (!SUCCEEDED(hr)MessageBox("打開失敗!"); /獲取現(xiàn)有信息 int no_sit_no,sum_sit_no;int no_stand_no,sum_stand_no; userinfo=(_bstr_t)Rest_Find_AnPai_Info->GetCollect("TCSPno"); no_sit_no=atoi(userinfo.c_str();userinfo=(_bstr_t)Rest_Find_AnPai_Info->GetCollect("TSno

44、"); sum_sit_no=atoi(userinfo.c_str();userinfo=(_bstr_t)Rest_Find_AnPai_Info->GetCollect("TSSno"); no_stand_no=atoi(userinfo.c_str();userinfo=(_bstr_t)Rest_Find_AnPai_Info->GetCollect("TSsum"); sum_stand_no=atoi(userinfo.c_str();int comp=-1;int sits;int sitno;/piaoleixi

45、 if(!m_TTTsty.Compare("坐票") | !m_TTTsty.Compare("臥鋪") ) /坐票 if(TotalSeat-sum_sit_no>m_TTsum) sitno=no_sit_no; sits=sum_sit_no; sum_sit_no+=m_TTsum; str.Format("%d",sum_sit_no); Rest_Find_AnPai_Info->PutCollect("TSno",_variant_t(str); Rest_Find_AnPai_Info

46、->Update(); else sitno=no_sit_no; sits=sum_sit_no; no_sit_no+=1; comp=no_sit_no; sum_sit_no=m_TTsum-(TotalSeat-sum_sit_no); str.Format("%d",sum_sit_no); Rest_Find_AnPai_Info->PutCollect("TSno",_variant_t(str); str.Format("%d",no_sit_no); Rest_Find_AnPai_Info->P

47、utCollect("TCSPno",_variant_t(str); Rest_Find_AnPai_Info->Update(); else if(!m_TTTsty.Compare("站票") if(TotalSeat-sum_stand_no>m_TTsum) sitno=no_stand_no; sits=sum_stand_no; sum_stand_no+=m_TTsum; str.Format("%d",sum_stand_no); Rest_Find_AnPai_Info->PutCollect(&

48、quot;TSum",_variant_t(str); Rest_Find_AnPai_Info->Update(); else sitno=no_sit_no; sits=sum_sit_no; no_sit_no+=1; comp=no_sit_no; sum_sit_no=m_TTsum-(TotalSeat-sum_sit_no); str.Format("%d",sum_stand_no); Rest_Find_AnPai_Info->PutCollect("TSsum",_variant_t(str); str.Form

49、at("%d",no_stand_no); Rest_Find_AnPai_Info->PutCollect("TSSno",_variant_t(str); Rest_Find_AnPai_Info->Update(); int totalpric=price*m_TTsum; /顯示 for(int i=0;i<m_TTsum;i+) if(sits+i>TotalSeat) sitno=comp; m_infolist.InsertItem(i,m_Tno); str.Format("%d",sitno)

50、; m_infolist.SetItemText(i,1,str); str.Format("%d",sits%TotalSeat); m_infolist.SetItemText(i,2,str); str.Format("%d",price); m_infolist.SetItemText(i,3,str); sits+; m_TTsum+=1; m_infolist.InsertItem(m_TTsum,m_TTTsty+"票"); m_TTsum+=1; m_infolist.InsertItem(m_TTsum,"

51、發(fā)車日期為:"); str=ToStringCTime(m_Tbtiem); m_infolist.SetItemText(m_TTsum,1,str); m_TTsum+=1; m_infolist.InsertItem(m_TTsum,"總價(jià)為:"); str.Format("%d",totalpric); m_infolist.SetItemText(m_TTsum,1,str);3.按站點(diǎn)查詢void CFindBystation:OnButton1() / TODO: Add your control notification han

52、dler code hereUpdateData();_bstr_t query;HRESULT hr;VARIANT v;if(tempbool)Rest_byStation->Close();tempbool=false;query="select Tno 車次,Tbname 起始站,Tename 終點(diǎn)站,Tbtime 發(fā)車時(shí)間,Tetime 到站時(shí)間 from Trainwhere Tno in(select Tno from Pstation where Pstation.Sno=(select Sno from Stationwhere Station.Sname='"+m_fst+"') a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論