課程設(shè)計(jì)信息系統(tǒng)分析與設(shè)計(jì)_第1頁
課程設(shè)計(jì)信息系統(tǒng)分析與設(shè)計(jì)_第2頁
課程設(shè)計(jì)信息系統(tǒng)分析與設(shè)計(jì)_第3頁
課程設(shè)計(jì)信息系統(tǒng)分析與設(shè)計(jì)_第4頁
課程設(shè)計(jì)信息系統(tǒng)分析與設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、湖南商學(xué)院課程設(shè)計(jì)目 錄1. 引言1.1項(xiàng)目來源 31.2任務(wù)目標(biāo) 31.3應(yīng)用價值 32. 項(xiàng)目規(guī)劃2.1 項(xiàng)目資源 2.1.1硬件設(shè)備32.1.2軟件環(huán)境42.1.3軟件工具42.2項(xiàng)目進(jìn)程 2.2.1 任務(wù)描述52.2.2進(jìn)度安排 52.3項(xiàng)目可行性評估2.3.1技術(shù)可行性62.3.2計(jì)劃可行性72.3.3應(yīng)用可行性83. 系統(tǒng)需求分析3.1 業(yè)務(wù)需求3.1.1業(yè)務(wù)組織 83.1.2業(yè)務(wù)定義 83.1.3業(yè)務(wù)流程 93.2 功能需求3.2.1功能組成93.2.2功能定義103.3 數(shù)據(jù)需求3.3.1數(shù)據(jù)關(guān)系113.3.2靜態(tài)數(shù)據(jù)定義113.4 其他需求 134. 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)4.1總體框

2、架 134.2 軟件結(jié)構(gòu) 4.2.1模塊定義135. 系統(tǒng)詳細(xì)設(shè)計(jì)5.1功能模塊詳細(xì)設(shè)計(jì)5.1.1 車次管理模塊代碼實(shí)現(xiàn)145.1.2 票價管理模塊代碼實(shí)現(xiàn)155.1.3 用戶管理模塊代碼實(shí)現(xiàn)165.2數(shù)據(jù)庫詳細(xì)設(shè)計(jì)5.2.1 數(shù)據(jù)庫環(huán)境配置175.2.2 表設(shè)計(jì)及其關(guān)系設(shè)置175.2.3 數(shù)據(jù)訪問方式205.3 界面設(shè)計(jì)226.總結(jié)22附錄:系統(tǒng)程序源代碼24參考文獻(xiàn)1. 引言1.1項(xiàng)目來源 隨著時代的進(jìn)步,社會的發(fā)展,人們的生活形式與習(xí)慣也越來越多樣化,出行成為了人們生活中的一個重要組成部分,而汽車成為許多人出行選擇的交通工具。面對巨大數(shù)量的乘客的購票需要,汽車站就要選擇使用先進(jìn)的管理方法

3、來實(shí)現(xiàn)方便、快捷的售票、退票等方面的票務(wù)管理。隨著計(jì)算機(jī)的普及,信息處理量的逐漸擴(kuò)大,手工處理方式遠(yuǎn)遠(yuǎn)不能滿足人們管理活動的需要,各種工作都逐漸由手工轉(zhuǎn)為自動化,使許多復(fù)雜、繁瑣、且需要很多人力的工作變得簡單。汽車站每天產(chǎn)生售票、退票等行為數(shù)量多,使得汽車站售票管理的數(shù)據(jù)量大,而且速度要求要快,傳統(tǒng)的人力行為適應(yīng),計(jì)算機(jī)應(yīng)用軟件的使用則能很好地滿足汽車站的這一需要,提高售票人員的工作效率,節(jié)約相關(guān)管理成本。1.2任務(wù)目標(biāo)本系統(tǒng)的任務(wù)目標(biāo)是:實(shí)現(xiàn)方便、快速售票;是用戶準(zhǔn)確了解售票情況,提供多種查詢和統(tǒng)計(jì)功能;實(shí)現(xiàn)系統(tǒng)的安全性設(shè)置,使系統(tǒng)本身具備一定的維護(hù)功能。1.3應(yīng)用價值通過本系統(tǒng)的應(yīng)用來提高

4、售票人員的工作頻率,節(jié)省售票所需時間。系統(tǒng)可利用數(shù)據(jù)庫自身的數(shù)據(jù)連接等功能使用戶能夠?qū)崿F(xiàn)不同條件的查詢,避免過多的人力資源的利用而且可靠行高、成本低。2. 項(xiàng)目規(guī)劃 2.1 項(xiàng)目資源2.1.1硬件設(shè)備 表1 系統(tǒng)運(yùn)行的硬件要求硬件配置CPUPentium IV 1.8GHz輸入設(shè)備鍵盤、鼠標(biāo)硬盤20G內(nèi)存512M顯卡NVIDIA GeForce FX 5200顯示器純平彩顯2.1.2軟件環(huán)境表2 系統(tǒng)的開發(fā)環(huán)境及工具表開發(fā)環(huán)境/工具名稱系統(tǒng)開發(fā)操作系統(tǒng)Windows server 2008系統(tǒng)開發(fā)數(shù)據(jù)庫系統(tǒng)Access 2003系統(tǒng)編碼設(shè)計(jì)與開發(fā)環(huán)境Visual Basic 6.0系統(tǒng)相應(yīng)圖表

5、繪制工具Word2.1.3軟件工具 (1) Visual Basic 6.0中文版作為前臺開發(fā)軟件Visual Basic 6.0中文版功能強(qiáng)大,涉及很多方面。其中數(shù)據(jù)訪問是Visual Basic 程序涉及中的重要內(nèi)容,在Visual Basic 6.0中新增了很多功能。Visual Basic 6.0包括JET數(shù)據(jù)庫引擎的最新版本(Visual Basic 與Microsoft Access 2003均有這種數(shù)據(jù)庫引擎)。(2)Access 2003中文版作為后臺數(shù)據(jù)庫Access 2003提供真正的關(guān)系數(shù)據(jù)庫管理。Access具有主關(guān)鍵字和外部關(guān)鍵字定義,并且在數(shù)據(jù)庫的引擎級提供了完全的

6、引用完整性,可以避免不合理的更新與刪除。Visual Basic 6.0與兩者結(jié)合Visual Basic使用ADO數(shù)據(jù)訪問技術(shù)存取Access數(shù)據(jù)庫ActiveX.Exe.DLL數(shù)據(jù)窗體DHTML編碼遠(yuǎn)端MicrosoftTransactionServer數(shù)據(jù)綁定DCOM,遠(yuǎn)端ADO數(shù)據(jù)集,遠(yuǎn)端UDTs類模塊 ADO Recordset對象,ADO Data控件數(shù)據(jù)訪問ADO,RDO,DAO可視化數(shù)據(jù)工具數(shù)據(jù)中間層客戶端圖1 Visual Basic 使用的數(shù)據(jù)庫訪問技術(shù)示意圖2.2項(xiàng)目進(jìn)程2.2.1 任務(wù)描述 策劃階段:搜集參考資料,整體進(jìn)度安排,選定編程語言與數(shù)據(jù)庫設(shè)計(jì)工具。 設(shè)計(jì)階段:

7、軟件模塊設(shè)計(jì),數(shù)據(jù)庫定義與設(shè)計(jì),代碼編寫。 測試階段:系統(tǒng)整體調(diào)試、分析,相應(yīng)代碼修改。2.2.2進(jìn)度安排 表 3 進(jìn)度安排表進(jìn) 度完成任務(wù)所需時間系統(tǒng)設(shè)計(jì)總體策劃2008年1月系統(tǒng)資料搜集和整理2008年1月2008年2月上旬軟件模塊、數(shù)據(jù)庫定義2008年2月中旬?dāng)?shù)據(jù)庫設(shè)計(jì)2008年下旬軟件代碼設(shè)計(jì)2008年3月上旬2008年中旬軟件代碼測試2008年3月中旬2008年3月下旬系統(tǒng)確認(rèn)及驗(yàn)收2008年4月上旬2.3項(xiàng)目可行性評估2.3.1技術(shù)可行性(1)Visual Basic編程語言特點(diǎn)面向?qū)ο蟮目梢暬幊淘赩isual Basic中,應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(OOP),把程序和數(shù)據(jù)“封

8、裝”起來成為一個對象,每個對象都是可視的。開發(fā)人員只要按設(shè)計(jì)要求的屏幕布局,用系統(tǒng)提供的工具,直接在屏幕上“畫”出窗口、命令按鈕、文本框等不同類型的對象,并為每個對象賦予應(yīng)有的屬性,即可設(shè)計(jì)圖形用戶界面。時間驅(qū)動的編程機(jī)制Visual Basic通過事件來執(zhí)行對象的操作。一個對象可能會產(chǎn)生多個事件,每個事件都可以通過一段程序(稱為“事件過程”)來響應(yīng)。結(jié)構(gòu)化的設(shè)計(jì)語言Visual Basic是在結(jié)構(gòu)化的BASIC語言基礎(chǔ)上發(fā)展起來的,加上面向?qū)ο蟮脑O(shè)計(jì)方法,因此是更出色的結(jié)構(gòu)化程序設(shè)計(jì)語言。友好的VB集成開發(fā)環(huán)境Visual Basic提供了易學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境。在該集成開發(fā)環(huán)境中,

9、用戶可以設(shè)計(jì)界面、編寫代碼和調(diào)試程序。Visual Basic 6.0為數(shù)據(jù)庫應(yīng)用開發(fā)提供了豐富的數(shù)據(jù)庫開發(fā)組件,使數(shù)據(jù)庫應(yīng)用開發(fā)功能更強(qiáng)大,控制更靈活,編譯后的程序運(yùn)行速度更快。(2)Access數(shù)據(jù)庫技術(shù)Access是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其主要特點(diǎn)如下:存儲對象單一Access管理的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為(.mdb)的數(shù)據(jù)庫文件里,便于用戶的操作和管理。面向?qū)ο驛ccess是一個面向?qū)ο蟮拈_發(fā)工具,利用面向?qū)ο蟮姆绞綄?shù)據(jù)庫系統(tǒng)中的各種功能對象化,將數(shù)據(jù)庫管理的各種功能封裝在各類對象中。它將一個應(yīng)用系統(tǒng)當(dāng)作是一系列對象組成的,極大地簡化了用戶

10、的開發(fā)工作。同時,這種基于面對對象的開發(fā)方式,使得開發(fā)應(yīng)用程序更為簡便。界面友好、易操作Access是一個可視化工具,風(fēng)格與Windows完全一樣,用戶想要生成對象并應(yīng)用,只要使用鼠標(biāo)進(jìn)行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢生成器、報表設(shè)計(jì)器以及數(shù)據(jù)庫向?qū)?、窗體向?qū)А蟊硐驅(qū)У裙ぞ?,使得操作簡便、容易使用和掌握。集成環(huán)境、處理多種數(shù)據(jù)信息Access基于Windows操作系統(tǒng)下的集成開發(fā)環(huán)境,該環(huán)境集成了各種向?qū)Ш蜕善鞴ぞ撸瑯O大地提高了開發(fā)人員的工作效率,使得建立數(shù)據(jù)庫、創(chuàng)建表、設(shè)計(jì)用戶界面、設(shè)計(jì)數(shù)據(jù)查詢、報表打印等可以方便有序地進(jìn)行。Access支持ODBC利用Access強(qiáng)

11、大的DDE(動態(tài)數(shù)據(jù)交換)和OLE(對象的聯(lián)接和嵌入)特性,可以在一個數(shù)據(jù)表中嵌入位圖、Word文檔,還可以建立動態(tài)的數(shù)據(jù)庫報表和窗體等。2.3.2計(jì)劃可行性 雖然整個系統(tǒng)設(shè)計(jì)的時間有三個多月,但是整個系統(tǒng)設(shè)計(jì)涉及到的方面很多,包括后臺數(shù)據(jù)庫的設(shè)計(jì)與前臺界面的設(shè)計(jì)與代碼設(shè)計(jì)編寫。這次選擇的Visual Basic語言編程在之前并沒有學(xué)習(xí)或接觸過,所以對于整個計(jì)劃的安排感覺時間不是很足夠。2.3.3應(yīng)用可行性 整個系統(tǒng)是使用Access 2003與Visual Basic 6.0設(shè)計(jì)完成的,但是汽車站售票管理系統(tǒng)要實(shí)現(xiàn)的是動態(tài)數(shù)據(jù)的管理。在選擇的Visual Basic 6.0中無法實(shí)現(xiàn)該功能,

12、或者說在我掌握的只是范圍內(nèi)無法實(shí)現(xiàn)。還有Access對于汽車站售票系統(tǒng)的大量數(shù)據(jù)處理實(shí)現(xiàn)效果不理想,所以該系統(tǒng)的應(yīng)用性不適合真正地被使用。3. 系統(tǒng)需求分析3.1 業(yè)務(wù)需求3.1.1業(yè)務(wù)組織使用該系統(tǒng)的主要是汽車站售票人員、汽車站售票工作的管理人員與系統(tǒng)管理員。該系統(tǒng)分為普用戶和系統(tǒng)管理員兩種權(quán)限登陸。汽車站的普通售票人員(普通用戶)只能使用該系統(tǒng)的查詢、售票管理等基本功能,汽車站售票人員、汽車站售票工作的管理人員能夠修改自身的用戶名和密碼,系統(tǒng)管理員則能實(shí)現(xiàn)系統(tǒng)用戶與普通用戶的添加,修改普通用戶與系統(tǒng)管理員的密碼,以此確保該系統(tǒng)能夠安全操作,避免不必要的損失。3.1.2業(yè)務(wù)定義用戶通過輸入不

13、同用戶名和密碼進(jìn)行身份驗(yàn)證,系統(tǒng)通過用戶名和密碼判斷不同用戶的權(quán)限,從而確定該用戶可以執(zhí)行的操作。頂層數(shù)據(jù)流程圖如下3.1.3業(yè)務(wù)流程 所謂業(yè)務(wù)流程就是用戶在使用系統(tǒng)時的工作過程。對于多類型用戶的系統(tǒng)來說,每一類用戶的工作流程都是不同的。多用戶系統(tǒng)的工作流程都是從用戶登陸模塊開始,對用戶的身份進(jìn)行認(rèn)證。身份認(rèn)證可以分為以下兩個過程:(1)確認(rèn)用戶是否是有效的系統(tǒng)用戶。(2)確定用戶的類型。第一個過程決定用戶是否進(jìn)入系統(tǒng)。第二個過程根據(jù)用戶的類型決定用戶的操作權(quán)限,從而決定用戶的工作界面。本系統(tǒng)的流程分析如圖3。圖1 系統(tǒng)流程圖3.2 功能需求3.2.1功能組成在這個汽車站售票管理系統(tǒng)下設(shè)有五個

14、不同模塊的功能:分別是車次管理、票價管理、票務(wù)管理、用戶管理和查詢管理。車次管理中實(shí)現(xiàn)車次信息的編輯。票價管理部分實(shí)現(xiàn)票價信息的錄入、修改與刪除以及票價折扣信息的錄入、修改與刪除。票務(wù)管理部分實(shí)現(xiàn)前臺售票、前臺退票功能。用戶管理部分實(shí)現(xiàn)用戶添加,用戶信息修改與用戶的刪除。具體聯(lián)系如圖所示汽車站售票管理系統(tǒng)票務(wù)管理票價管理車次管理用戶管理查詢管理車次信息編輯票價信息錄入票價信息修改票價信息刪除前臺售票前臺退票用戶信息添加票價信息修改票價信息刪除車次信息查詢票價信息查詢圖2 功能組成結(jié)構(gòu)圖3.2.2功能定義 (1)車次管理:車次詳細(xì)信息的編輯。車次管理中的數(shù)據(jù)源為Access數(shù)據(jù)庫中Car表,在此

15、管理部分中,能夠使用界面操作實(shí)現(xiàn)車次信息的編輯,并將數(shù)據(jù)庫中的數(shù)據(jù)按照編輯的要求來及時更新數(shù)據(jù)表中的相關(guān)數(shù)據(jù)。 (2)票價管理:票價詳細(xì)信息的錄入、修改、刪除,它的數(shù)據(jù)源為Access數(shù)據(jù)庫的Price表。在此管理部分中,通過票價管理(FrmPriceManage)界面來選擇記錄并決定執(zhí)行何種操作,是修改、添加或刪除。當(dāng)命令為修改或者添加時則自動跳轉(zhuǎn)到票價編輯窗體(FrmPriceEdit)實(shí)現(xiàn)票價信息的編輯并更新數(shù)據(jù)庫中相應(yīng)數(shù)據(jù)記錄。 (3)折扣管理:針對不同車次的不同車票類型進(jìn)行信息的錄入、修改與刪除,數(shù)據(jù)源為Access數(shù)據(jù)庫的PriceDiscount表。此管理部分首先顯示的為票價折扣

16、信息管理窗體(FrmDiscount),通過選擇不同的命令按鈕來執(zhí)行相應(yīng)的修改、添加或刪除操作中一個,選擇添加或修改則轉(zhuǎn)至折扣信息編輯窗體(FrmDiscountEdit)執(zhí)行命令并更新相應(yīng)的數(shù)據(jù)記錄。(4)用戶管理:所有系統(tǒng)用戶的管理,包括系統(tǒng)普通用戶與系統(tǒng)管理員。此管理模塊數(shù)據(jù)源為Access數(shù)據(jù)庫的Users表。在系統(tǒng)主界面中首先進(jìn)入的是名稱為FrmUserMan的用戶管理主窗體,選擇添加或刪除用戶進(jìn)入名為FrmUserEdit的用戶編輯界面進(jìn)行操作,操作完成便更新數(shù)據(jù)庫數(shù)據(jù)。(5)查詢管理:通過查詢界面可以根據(jù)條件進(jìn)行車次時刻、車次票價查詢。3.3 數(shù)據(jù)需求3.3.1數(shù)據(jù)關(guān)系1111

17、11N1CarIDCarTypePlateNumberCarHolderRunningWaySeatLimitOutSetTimeTerminalIDOutStationTerminalNameTNPYCodeCarIDTicketPriceRecordNumberTicketTypeIDDiscountCarIDCarIDDateTerminalSellPricesnoTicketTypeIDRecordIDTicketType圖3 實(shí)體關(guān)系圖3.3.2靜態(tài)數(shù)據(jù)定義表1 Car表詳細(xì)設(shè)計(jì)字段名數(shù)據(jù)類型是否主鍵是否必填字段說明CarID文本是是車次編號CarType數(shù)字否否客車型號PlateN

18、umber文本否是車牌號CarHolder文本否否責(zé)任人RunningWay文本否否經(jīng)營路線SeatLimit數(shù)字否是座位限額OutSetTime日期/時間否是發(fā)車時間表2 Seat表詳細(xì)設(shè)計(jì)表6 PriceDiscount表詳細(xì)設(shè)計(jì)字段名數(shù)據(jù)類型是否主鍵是否必填字段說明RecordNumber自動編號是是記錄號TicketTypeID數(shù)字否是車票類型Discount數(shù)字否是折扣CarID文本否是車次表3 Price表詳細(xì)設(shè)計(jì)表4 Type表詳細(xì)設(shè)計(jì)字段名數(shù)據(jù)類型是否主鍵是否必填字段說明RecordID自動編號是是記錄號TicketTypeID數(shù)字否是車票類型編號TicketType文本否是車

19、票類型3.4 其他需求汽車站售票系統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)量十分龐大,而且更新速度十分快。在數(shù)據(jù)大小方面要求數(shù)據(jù)的屬性要設(shè)置合理,假如是數(shù)據(jù)的屬性值越大,則數(shù)據(jù)本身所占用的容量也就十分的龐大,有可能削弱系統(tǒng)運(yùn)行速度,使得系統(tǒng)無法達(dá)到預(yù)期的目的。另外,在整個系統(tǒng)當(dāng)中要確保數(shù)據(jù)在保存與傳遞過程中的安全,以免發(fā)生嚴(yán)重的錯誤,造成巨大的損失。4. 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)4.1總體框架系統(tǒng)工作模式為后臺數(shù)據(jù)庫前臺操作界面系統(tǒng)用戶的工作模式。系統(tǒng)用戶通過前臺操作界面從后臺數(shù)據(jù)庫中提取數(shù)據(jù)并進(jìn)行有關(guān)數(shù)據(jù)的操作。圖4 系統(tǒng)工作模式示意圖后臺數(shù)據(jù)庫前臺操作界面系統(tǒng)用戶4.2 軟件結(jié)構(gòu)4.2.1模塊定義 (1)車次管理模塊 編輯車

20、次信息查看車次信息 (2)票價管理模塊 添加票價信息修改票價信息查看票價信息 (3)折扣信息管理 添加折扣信息刪除折扣信息查看折扣信息 (4)用戶信息管理添加用戶信息修改用戶密碼刪除用戶信息查看用戶信息 (5)查詢管理 票價查詢車次查詢5. 系統(tǒng)詳細(xì)設(shè)計(jì)5.1功能模塊詳細(xì)設(shè)計(jì)5.1.1 車次管理模塊代碼實(shí)現(xiàn)Private Sub Cmd_OK_Click()'檢查用戶錄入數(shù)據(jù)的有效性 txtCarID.SetFocus Exit Sub End If If Len(Trim(txtOutTime) = 0 Then MsgBox "請輸入發(fā)車時間" txtOutTi

21、me.SetFocus Exit Sub End If '把用戶錄入的數(shù)據(jù)賦值到數(shù)據(jù)庫對象變量中 With MyType .CarID = MakeStr(txtCarID) '車次編號 .OutSetTime = MakeStr(TimeEdit) '發(fā)車時間 .RunninWay = MakeStr(WayEdit) '經(jīng)營路線 .CarType = MakeStr(TypeEdit) '車輛類型 .PlateNumber = MakeStr(CNnEdit) '車牌號 .CarHolder = MakeStr(HolderEdit) 

22、9;責(zé)任人 .SeatLimit = MakeStr(LSeatEdit) '額定座位 'End IfEnd With Unload Me '關(guān)閉窗口5.1.2 票價管理模塊代碼實(shí)現(xiàn) 票價管理部分代碼如下(信息添加過程):Private Sub Cmd_Add_Click() '初始化FrmDiscountEdit信息 FrmPriceEdit.txtTerminalName = "" FrmPriceEdit.txtTNPYCode = "" FrmPriceEdit.txtCarID = "" Fr

23、mPriceEdit.txtTicketPrice = "" FrmPriceEdit.Show RefreshDataEnd Sub5.1.3用戶管路模塊代碼實(shí)現(xiàn)(編輯窗體代碼):Private Sub Cmd_OK_Click() If Trim(txtUserName) = "" Then MsgBox "請輸入用戶名" txtUserName.SetFocus Exit Sub End If End If If txtPass <> txtPass2 Then MsgBox "密碼和確認(rèn)密碼不相同,請重新

24、確認(rèn)" txtPass2.SelLength = Len(txtPass2) Exit Sub End If '判斷是否存在同名用戶 With MyUser If Modify = False Or OriUser <> Trim(txtUserName) Then If .In_DB(Trim(txtUserName) = True Then txtUserName.SelStart = 0 txtUserName.SelLength = Len(txtUserName) Exit Sub End If5.2數(shù)據(jù)庫詳細(xì)設(shè)計(jì)5.2.1 數(shù)據(jù)庫環(huán)境配置此系統(tǒng)使用Ac

25、cess 2003中文版作為后臺數(shù)據(jù)庫,它對環(huán)境的要求并不大。用戶可以在將其與其他一些Microsoft套裝來一起進(jìn)行安裝,也可以將Access 2003中文版作為一個但單獨(dú)的數(shù)據(jù)庫軟件類安裝。5.2.2 表設(shè)計(jì)及其關(guān)系設(shè)置圖5 表Car 結(jié)構(gòu)圖6 表Price結(jié)構(gòu)圖7 表PriceDiscount結(jié)構(gòu)圖8 表Type結(jié)構(gòu)圖 9 表 SelledTicket表結(jié)構(gòu)圖 10 表BackTicket表結(jié)構(gòu)圖 11 表Users結(jié)構(gòu)圖 13 表間結(jié)構(gòu)示意圖5.2.3 數(shù)據(jù)訪問方式及其代碼分析與說明 在本系統(tǒng)中Visual Basic使用ADO數(shù)據(jù)訪問技術(shù)存取Access數(shù)據(jù)庫。數(shù)據(jù)提供程序和使用者之

26、間的橋梁就是數(shù)據(jù)源,數(shù)據(jù)源是使用Microsoft ActiveX Data Objects(ADO)創(chuàng)建的,而Microsoft ActiveX Data Objects是Visual Basic在任何數(shù)據(jù)源中訪問數(shù)據(jù)的主要方法。為了向后兼容和方便工程維護(hù),它仍然支持遠(yuǎn)程數(shù)據(jù)對象(Remote Data Object,RDO)和數(shù)據(jù)訪問對象(Data Access Objects,DAO)。在Visual B,數(shù)據(jù)訪問對象(DAO)、ODBC直接連接到數(shù)據(jù)庫。其中ADO是最新的數(shù)據(jù)庫訪問技術(shù)。它是使用更加簡單,而又更加靈活的對象模型。對于新工程,應(yīng)該使用ADO作為數(shù)據(jù)訪問接口。為了節(jié)省系統(tǒng)資

27、源,在系統(tǒng)中新建一個模塊,該模塊用于連接各個模塊中的數(shù)據(jù)表,從而避免在程序中大量運(yùn)用ADO控件,給開發(fā)應(yīng)用程序帶來諸多不便。模塊中的程序代碼如下:Public adoCon As New ADODB.ConncetionPublic adors As New ADODB.Recordset'連接數(shù)據(jù)庫Public Sub main() Set adoCon = New ADODB.Connection adoCon.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &

28、" 汽車站售票管理系統(tǒng).mdb" & "Persist Security Info=False" FrmLogin.Show FrmLogin.txtUser.SetFocusEnd Sub 5.3 界面設(shè)計(jì)系統(tǒng)主界面設(shè)計(jì)如下,主界面頂端顯示不同管理模塊,點(diǎn)擊則進(jìn)入相應(yīng)界面。下端顯示系統(tǒng)當(dāng)前所處日期和時間。圖14 系統(tǒng)主界面設(shè)計(jì)6.總結(jié) 這次的課程設(shè)計(jì)對于我來說是一項(xiàng)很重大的任務(wù),也是一次很大的挑戰(zhàn)。首先,我選擇的是做系統(tǒng),要做好一個系統(tǒng)就必須要有前臺和后臺的不同區(qū)別。前臺的界面我選擇的是Visual Basic 6.0。這是我以前從來沒有接觸過

29、的語言,要做系統(tǒng)就要學(xué)習(xí)這一門語言。其次,做一個系統(tǒng)的整體設(shè)計(jì)以前從來沒有過,這是第一次的嘗試。 經(jīng)過這一段的時間,我還是大概出了一個系統(tǒng)做,只是系統(tǒng)最終并沒有編譯成功,所以根本不能運(yùn)行,這就說明我的系統(tǒng)設(shè)計(jì)是不成功的。雖然沒有取得比較好的結(jié)果,但是我至少知道了系統(tǒng)設(shè)計(jì)的一些步驟與流程,也對Visual Basic語言有了一定的了解,這是我有收獲的方面?;仡^仔細(xì)分析自己制作開發(fā)的系統(tǒng)很不完善,要實(shí)現(xiàn)汽車站的快速、方便的票務(wù)管理,用Access作為后臺數(shù)據(jù)庫是行不通的,本系統(tǒng)實(shí)現(xiàn)的功能也不夠完善。而且,單獨(dú)選用Visual Basic來設(shè)計(jì)前臺的操作界面也不是一個理想的選擇。使用Visual B

30、asic設(shè)計(jì)的界面功能不夠強(qiáng)大,操作不是很方便,無法實(shí)現(xiàn)現(xiàn)實(shí)中的應(yīng)用。 附錄:系統(tǒng)程序源代碼(1)登陸窗體(FrmLogin)代碼Public PasswordKey As StringPublic NameKey As StringPublic Try_times As Integer'取消鍵退出登陸界面Private Sub Cmd_Cancel_Click()Unload MeEnd SubPrivate Sub Cmd_OK_Click() '數(shù)據(jù)庫有效性檢查If Trim(txtUser) = "" ThenEnd IfIf Trim(txtPwd

31、) = "" Then MsgBox "請輸入密碼" txtPwd.SetFocus Exit Sub End If PasswordKey = Str(txtPwd) '判斷用戶是否存在 If MyUser.In_DB(NameKey) = Flase Then MsgBox "用戶名不存在"'判斷密碼是否正確 MyUser.GetINfo (NameKey) If MyUser.Pwd <> PasswordKey Then MsgBox "密碼錯誤" Try_times = Try

32、_times + 1 If Try_times >= 3 Then MsgBox "您已經(jīng)三次嘗試進(jìn)入本系統(tǒng),均不成功,系統(tǒng)將關(guān)閉" DBapi_Disconnect End If '登陸成功,將當(dāng)前用戶的信息保存在CurUser中'關(guān)閉自己并顯示主窗體 Unload Me FrmMain.ShowEnd Function(2)主窗體(FrmMain)代碼'設(shè)置數(shù)據(jù)庫連接字符串Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &

33、 " 汽車站售票管理系統(tǒng).mdb " & "Presist Security Info=False"End SubPrivate Sub TPGL_Click() FrmBack.ShowEnd SubPrivate Sub XGMM_Click() If CurUser.User_type = 1 Then FrmUserMan.Show Else MsgBox "沒有權(quán)限" End IfEnd SubPrivate Sub ZKGL_Click() FrmDiscount.ShowEnd Sub(3)售票窗體(FrmTic

34、ketSell)代碼Private Sub Cmd_Cancel_Click() Unload MeEnd SubPrivate Sub Cmd_Search_Click() 'GridRsfresh '根據(jù)條件查詢所有信息End SubPrivate Sub Cmd_Sell_Click() Dim ComboDate As String, TNPYCode As String, CarID As String Dim left As Integer TNPY = Trim(txtTNPYCode) Trim(ComboDate) & "'"

35、; & " and Price.TNPYCode='" & Trim(txtTNPYCode) & "'" '根據(jù)輸入的信息,從表里得出查詢結(jié)果rsdata.Open strQuery, cnnrsdata, , , adCmdText If rsdata.EOF Then MsgBox "車次或拼音碼輸入有誤,請重新輸入!", , "Error!" ComboDate.Text = "" TNPYCode = "" txtCa

36、rID = "" txtCarID.SetFocus ElseIf IsNumeric(Number) = False Then MsgBox "車次編號應(yīng)為數(shù)字!" txtCarID.Text = "" txtCarID.SetFocus Else rsdata.Close rsdata.Close strQuery = "select count(*) as total from Seat where Seat.sell=false and Seat.date='" & _ Trim(Combo

37、Date) & "'" & " and Seat.CarID='" & Trim(txtCarID) & "'" rsdata.Open strQuery, cnnrsdata, , , adCmdText '統(tǒng)計(jì)本車次的剩余的座位數(shù) rsdata.MoveFirst rsdata.AddNew rsdata!Date = comdate rsdata!Seat = comSNno rsdata!CarID = CarID rsdata!TNPYCode = TNPYCo

38、de rsdata!sno = Trim(seatnumber) rsdata.Update '添加新記錄 '更新 Seat 表 ,將剛賣出的座位號設(shè)為 false strQuery = "select * from Seat where Seat.sno='" & Trim(seatnumber) & _ "' and Seat.date='" & Trim(ComboDate) & "'" & _ " and SeatCarID=&#

39、39;" & Trim(txtCarID) & "'" rsdata.Open strQuery, cnnrsdata, , , adCmdText If rsdata!sell = False Then rsdata!sell = True rsdata.Update End If (4)退票窗體(FrmBack)代碼Private Sub Cmdback_Click() Dim strdate As String strTnl = Trim(ComboTerminal.Text) Dim strcnn init_ado strQuery

40、 = "Select * From SellTicket Where SellTicket.date='" & _ Trim(Combodate.Text) & "'" & " and SellTicket.Sno='" & Trim(ComboSNno.Text) & "'" & _" and SellTicket.carID='" & Trim(ComboCarID.Text) & &qu

41、ot;'" '檢查車票日期、車次和座位是否有效 rsdata.Open strQuery, cnnrsdata, , , adCmdText If rsdata.EOF Then MsgBox "你所要退的票為無效票或是你的輸入有問題!" Combodate.Text = rsdata!Date ComboSNSno.Text = rsdata!sno ComboCarID.Text = rsdata!CarID '車票有效,確認(rèn)日期、車次和座位號,確認(rèn)是否退票 ticketinformation = "日期:" &am

42、p; strdate & " " & "車次:" & strCarID & " " & "座位號:" & strsno & "" response = MsgBox(ticketinformation, vbOKCancel + vbInformation, "是否真要退票?") If response = 1 Then '更改 SellTicket 表 rsdata.Close strQuery = "select * from SellTicket" rsdata.Open strQuery, cnnrsdata, , , adCmdText rsdata.MoveFirst Dim i As Integer For i = 1 To rsdata.RecordCount If rsdata!Date = strdate And rsdata!sno = strsno And rsdata!sno = strseat Then rsdata.Delete rsdata.Update End If Combodate.Text = ""

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論