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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

18、構建立系統(tǒng)需要的所有表格?;蛘咄ㄟ^SQL語句在查詢分析器中進行。其所需要的SQL語句為: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、;個人', '團體'),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( '個人', '團體'),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)界面設計:為了管理不同用戶使用不同的功能模塊,為系統(tǒng)提供了一個登錄系統(tǒng),用戶通過用戶名和密碼進行登錄,系統(tǒng)根據(jù)用戶名和密碼判斷用戶的類型,登錄必要的模塊。其中為了方便,設置了兩個帳號,以為管理員(用戶名為admin,密碼為1987),另一個為用戶(用戶名為guest,密碼為空)。2.1.系統(tǒng)登錄設計:主界面分為管理員界面(下2)2.2.1管

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

25、部分。管理員在輸入了車次信息后,單擊確定則增加了該車的信息。注意車次號不能重復。2.4增加車輛信息(汽車)。和上邊的差不多,管理員在輸入車次信息后單擊確定。同時也要注意車次不能重復。2.5修改刪除車次信息。當一個車里需要某些變更是,則可以更改其信息。和修改刪除人員信息相同,先輸入車輛編號,單擊查詢找到該車信息,單擊修改,則可以修改,刪除則可以刪除。2.6處理用戶訂單。此系統(tǒng)支持訂票業(yè)務。因此為管理員增加了一個處理用戶訂單的功能,登錄該界面是,系統(tǒng)自動講為處理的訂單顯示給管理員,管理員審核該訂單后,點擊確認,處理此訂單。2.7刪除訂單。管理員為了清理系統(tǒng)數(shù)據(jù),需要刪除一部分過期的數(shù)據(jù)。則可通過此

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

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

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

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

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

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

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

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

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

35、獻1 俞海英 數(shù)據(jù)庫應用教程 北京:清華大學出版社,2008.2 Microsoft ADO 程序員參考3 鄭阿奇 丁有和 Visual C+ 應用教程人民郵電出版社4 侯俊杰 深入淺出MFC 華中科技大學出版社九、附錄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("請輸入車輛的編號!");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) /不存在相同的車號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("存在該編號的車輛!");/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,"總價為:"); str.Format("%d",totalpric); m_infolist.SetItemText(m_TTsum,1,str);3.按站點查詢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 終點站,Tbtime 發(fā)車時間,Tetime 到站時間 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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論