2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  旅游資源及線路管理系統(tǒng)</p><p>  一、系統(tǒng)目標(biāo)及其介紹</p><p>  由于如今的旅游景點(diǎn)繁多,旅游線路中包含的內(nèi)容也很多,讓人一下子很難清楚的了解到其中的所包含的信息,從而做出正確的旅游方案,讓自己能夠輕輕松松的享受到旅游中的樂趣。本系統(tǒng)旨在方便方便那些熱愛出玩的人,讓他們及時、準(zhǔn)確、詳細(xì)的了解到一些旅游方面的相關(guān)信息,為他們指引一條適合他們的旅游線路

2、。</p><p>  本系統(tǒng)采用的是開發(fā)工具是Visual Basic 6.0 以及SQL Server 2000(個人版)</p><p>  Visual Basic 簡介:Microsoft的Visual Basic產(chǎn)品屬于編程系統(tǒng)。簡單的說這個編程系統(tǒng)的是用于編寫基于Windows的計算機(jī)程序的,它包括Visual Basic 語言以及有助于編寫這些程序的許多工具。不應(yīng)把Visu

3、al Basic 當(dāng)作一種工具,而應(yīng)將它作為創(chuàng)建工具的工具。使用Visual Basic 創(chuàng)建用戶自己的定制程序。用戶或公司便不會受到特殊的“脫離外殼”計算機(jī)程序的限制,進(jìn)而用戶還能設(shè)計出滿足自己特殊要求的應(yīng)用程序。一個良好的計算機(jī)程序應(yīng)該能夠足夠靈活,是適應(yīng)身邊的任何工作,而不是修改擁護(hù)的需要以適應(yīng)程序的要求。</p><p>  SQL簡介:SQL(Structured Query Language)語言是關(guān)

4、系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,它是在1974年由Boyce和Chamberlin提出的。由于SQL語言功能豐富,語言簡潔,因而倍受用戶及計算機(jī)工業(yè)界歡迎。自SQL成文國際標(biāo)準(zhǔn)后,各自數(shù)據(jù)庫廠家紛紛推出各種機(jī)的支持SQL的軟件或與SQL的接口軟件。這就使得大多數(shù)數(shù)據(jù)庫均采用SQL作為共同的數(shù)據(jù)庫存取語言和標(biāo)準(zhǔn)接口,從而使未來的數(shù)據(jù)庫世界有可能連接為一個統(tǒng)一的整體。這個前景是十分誘人和意義重大的。因此,有人SQL被定制為關(guān)系數(shù)據(jù)庫語言的標(biāo)準(zhǔn)以及以后的

5、發(fā)展稱為是“一場革命”。</p><p>  本系統(tǒng)支持的操作平臺:Windows NT/XP/2000</p><p>  二、系統(tǒng)的需求分析以及流程分析</p><p>  需求分析:本系統(tǒng)因?yàn)闆]有涉及到查詢系統(tǒng),因此它的需求分析比較簡單。在本系統(tǒng)中一共有9個窗體,其中只有旅游線路管理窗體可以真正意義稱的上是一個查詢窗體,它包含了前面除了用戶管理窗體以外的所有信

6、息,可以讓人一目了然的了解到各個旅游線路的一些相關(guān)信息。旅游相關(guān)的一些吃、住、行、娛、費(fèi)用等等你都可以很直觀的按照個人需要進(jìn)行查閱,以滿足你旅游出行的需要。也就是說本系統(tǒng)的需求關(guān)系也就是在這個窗體中得以實(shí)現(xiàn)的。</p><p>  流程分析:本系統(tǒng)的基本步驟是:進(jìn)行用戶登陸后,登陸到主界面,然后在旅游資源以及線路管理模塊中管理好輸入的一些基本信息。本系統(tǒng)的流程分析圖如下圖所示:</p><p&

7、gt;<b>  三、系統(tǒng)設(shè)計</b></p><p><b>  系統(tǒng)功能描述</b></p><p>  本系統(tǒng)所描述的旅游資源及線路管理系統(tǒng)的重要功能包括:</p><p>  1. 地域信息管理功能</p><p>  地域信息的登入,包括地域名稱和地域類型等信息;</p>&

8、lt;p><b>  地域信息的修改;</b></p><p><b>  地域信息的刪除;</b></p><p><b>  地域信息的查詢。</b></p><p>  2. 景點(diǎn)資源管理功能</p><p>  景點(diǎn)資源的登入,包括景點(diǎn)編號、景點(diǎn)名稱、聯(lián)系人、票價

9、等信息;</p><p><b>  景點(diǎn)資源的修改;</b></p><p><b>  景點(diǎn)資源的刪除;</b></p><p><b>  景點(diǎn)資源的查詢。</b></p><p>  3. 賓館資源管理功能</p><p>  賓館資源的錄入,包

10、括賓館編號、賓館名稱、聯(lián)系人、報價等信息;</p><p><b>  賓館資源的修改;</b></p><p><b>  賓館資源的刪除;</b></p><p><b>  賓館資源的查詢。</b></p><p>  4. 餐廳資源管理功能</p><

11、;p>  餐廳資源的錄入,包括餐廳編號、餐廳名稱、聯(lián)系人、報價等信息;</p><p>  餐廳資源信息的修改;</p><p>  餐廳資源信息的刪除;</p><p>  餐廳資源信息的查詢。</p><p>  5. 娛樂資源管理功能</p><p>  娛樂資源信息的錄入,包括娛樂廳編號、娛樂廳名稱、聯(lián)系

12、人、報價等信息;</p><p>  娛樂資源信息的修改;</p><p>  娛樂資源信息的刪除;</p><p>  娛樂資源信息的查詢。</p><p>  6. 交通資源管理功能</p><p><b>  火車資源信息管理;</b></p><p><b&g

13、t;  飛機(jī)資源信息管理。</b></p><p><b>  旅游線路管理功能</b></p><p>  旅游線路信息的錄入,包括線路編號、線路名稱、報價等信息;</p><p>  旅游線路信息的修改;</p><p>  旅游線路信息的刪除;</p><p>  旅游線路信息的

14、查詢。</p><p><b>  系統(tǒng)用戶管理功能</b></p><p>  系統(tǒng)用戶信息的錄入,包括用戶名、密碼等信息;</p><p>  系統(tǒng)用戶信息的修改;</p><p>  系統(tǒng)用戶信息的刪除;</p><p>  系統(tǒng)用戶信息的查詢。</p><p>&l

15、t;b> ?。ǘ┕δ苣K劃分</b></p><p>  從功能描述的內(nèi)容可以看到,本系統(tǒng)可以實(shí)現(xiàn)8個完整的功能。根據(jù)這些功能,設(shè)計出的系統(tǒng)功能模塊如圖1.21所示。</p><p><b>  圖1.21</b></p><p>  在功能模塊示意圖的樹狀結(jié)構(gòu)中,每一個結(jié)點(diǎn)都是最小的功能模塊。每一個功能模塊都需要針對不同的

16、表完成相同的數(shù)據(jù)庫操作,即添加記錄、修改記錄、刪除記錄、以及查詢顯示記錄信息。</p><p>  旅游資源及線路管理系統(tǒng)的</p><p>  功能模塊之間的關(guān)系入圖1.22所示。</p><p><b>  圖1.22</b></p><p>  從模塊的關(guān)系圖中可以看出,旅游資源信息除了供用戶查詢外,還可以成為旅游

17、線路管理提供數(shù)據(jù)。當(dāng)用戶需要生成一條旅游線路時,可以從旅游資源里提取到最新的數(shù)據(jù)。線路報價和成本預(yù)算也會隨著資源的變化。</p><p>  在本系統(tǒng)中,用戶管理模塊的功能比較簡單。在系統(tǒng)初始化時,有一個默認(rèn)的“系統(tǒng)管理員用戶Admin,你可以手動地添加到數(shù)據(jù)庫中。Admin用戶可以使用系統(tǒng)的所有功能,可以創(chuàng)建用戶、修改用戶信息,以及刪除用戶;普通用戶分為資源管理員和線路管理員。</p><p

18、>  用戶管理功能模塊的關(guān)系如圖1.23所示。</p><p><b>  圖1.23</b></p><p><b>  四、數(shù)據(jù)庫設(shè)計</b></p><p> ?。ㄒ唬?創(chuàng)建數(shù)據(jù)庫 </p><p>  本系統(tǒng)使用的數(shù)據(jù)庫為TravelSys。此數(shù)據(jù)庫按默認(rèn)的路徑保存??紤]到文件初始大小

19、SIZE不宜過大,以免浪費(fèi)存儲空間,而文件的最大尺寸MAXSIZE應(yīng)設(shè)置充分大,以保證有足夠的的存儲空間。文件初始大小是10M,最大的尺寸大小是200M,文件滿了后按2M/每次的步長增長。</p><p> ?。ǘ?shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計</p><p>  數(shù)據(jù)庫TravelSys包含以下16個表:地域信息表Area、景點(diǎn)資源信息表Place、賓館資源信息表Hotel、餐廳資源信息表Rest

20、aurant、娛樂廳資源信息表Amusement、娛樂項目資源信息表AmuseItem、火車資源信息表Train、飛機(jī)資源信息表Plane、線路基本信息表tline、線路景點(diǎn)信息表Iplace、線路賓館信息表Ihotel、線路用餐信息表Ires、線路娛樂信息表Iamuse、線路火車信息表Itrain、線路飛機(jī)信息表Iplane、用戶信息表Users。</p><p>  下面分別介紹這些表的結(jié)構(gòu)。</p&g

21、t;<p>  1. 地域信息表Area</p><p>  地域信息表Area用來保存地域信息。表Area的結(jié)構(gòu)如表2.1所示。</p><p><b>  表Area的結(jié)構(gòu)</b></p><p>  表2.1 </p><p>  2.景點(diǎn)資源信息表Pla

22、ce</p><p>  景點(diǎn)資源信息表Place用來保存旅游信息。表Place的結(jié)構(gòu)如表2.2</p><p><b>  表Place結(jié)構(gòu)</b></p><p>  表2.2 </p><p>  3.賓館資源信息表Hotel</p><p>

23、  賓館資源信息表Hotel用來保存旅游賓館資源信息。表Hotel的結(jié)構(gòu)如表2.3所示。</p><p><b>  表Hotel的結(jié)構(gòu)</b></p><p>  表2.3 </p><p>  4.餐廳資源信息表Restaurant</p><p>  餐廳資源信

24、息表Restaurant用來保存旅游餐廳資源信息。表Restaurant的結(jié)構(gòu)如表2.4所示。 </p><p>  表Restaurant的結(jié)構(gòu)</p><p>  表2.4 </p><p>  5.娛樂廳資源信息表Amusement </p><p>  娛樂

25、廳資源信息表Amusement 用來保存娛樂廳資源信息。表Amusement的結(jié)構(gòu)如表2.5所示。</p><p>  表Amusement的結(jié)構(gòu)</p><p><b>  表2.5</b></p><p>  6.娛樂項目資源信息表AmuseItem</p><p>  娛樂資源信息表AmuseItem用來保存娛樂廳

26、提供的娛樂項目及報價信息。表AmuseItem</p><p>  的結(jié)構(gòu)如表2.6所示。</p><p>  表AmuseItem的結(jié)構(gòu)</p><p><b>  表2.6</b></p><p>  7.火車資源信息表Train</p><p>  火車資源表Train用來保存火車資源信息。

27、表Train的結(jié)構(gòu)如表2.7所示。</p><p><b>  表Train的結(jié)構(gòu)</b></p><p><b>  表2.7 </b></p><p>  8.飛機(jī)資源信息表Plane</p><p>  飛機(jī)資源信息表Plane用來保存飛機(jī)資源信息。表Plane的結(jié)構(gòu)如表2.8所示。<

28、;/p><p><b>  表Plane的結(jié)構(gòu)</b></p><p><b>  表2.8</b></p><p>  9.線路基本信息表tline</p><p>  線路基本信息表tline用來保存旅游線路的基本信息。表tline的結(jié)構(gòu)如表2.9所示。</p><p>&l

29、t;b>  表tline的結(jié)構(gòu)</b></p><p><b>  表2.9</b></p><p>  10.線路景點(diǎn)信息表Iplace</p><p>  線路景點(diǎn)信息表Iplace 用來保存旅游線路中包含的景點(diǎn)信息。表Iplace 的結(jié)構(gòu)如表2.10</p><p>  表Iplace的結(jié)構(gòu)<

30、;/p><p><b>  表2.10</b></p><p>  11.線路賓館信息表 lhotel</p><p>  線路賓館信息表lhotel用來保存旅游線路中包含的賓館信息。表ihotel的結(jié)構(gòu)如表2.11</p><p>  表lhotel的結(jié)構(gòu)</p><p><b>  表2

31、.11</b></p><p>  12.線路用餐信息表lres</p><p>  線路用餐信息表lres用來保存旅游線路中包含的用餐信息。表lres的結(jié)構(gòu)如表2.12</p><p><b>  表lres的結(jié)構(gòu)</b></p><p><b>  表2.12</b></p&g

32、t;<p>  13.線路娛樂信息表lamuse</p><p>  線路娛樂信息表lamuse用來保存旅游線路中包含的娛樂信息。表lamuse的結(jié)構(gòu)如表2.13所示。</p><p>  表lamuse的結(jié)構(gòu)</p><p><b>  表2.13</b></p><p>  14.線路火車信息表Itra

33、in</p><p>  線路火車信息表Itrain用來保存旅游線路中包含的火車信息。表Itrain的結(jié)構(gòu)如表2.14</p><p>  表Itrain的結(jié)構(gòu)</p><p><b>  表2.14</b></p><p>  15.線路飛機(jī)信息表Iplane</p><p>  線路飛機(jī)信息表

34、Iplane用來保存旅游線路中包含的飛機(jī)信息。表Iplane的結(jié)構(gòu)如表2.15</p><p>  表Iplane的結(jié)構(gòu)</p><p><b>  表2.15</b></p><p>  16.用戶信息表Usres</p><p>  用戶信息表Usres用來保存系統(tǒng)用戶信息。表Usres的結(jié)構(gòu)如表2.16所示。<

35、;/p><p><b>  表Usres的結(jié)構(gòu)</b></p><p><b>  表2.16</b></p><p><b>  五、設(shè)計工程框架</b></p><p><b>  (一) 創(chuàng)建工程</b></p><p>  運(yùn)

36、行Visual Basic 6.0主程序,選擇新建“標(biāo)準(zhǔn)EXE”工程。新建工程后,在Visual Basic窗口中有一個缺省的窗體Form1,我就在此基礎(chǔ)上設(shè)計系統(tǒng)的主界面。</p><p>  選擇“工程”菜單中的“工程1屬性”命令,在“工程屬性”對話框中,將工程名設(shè)置為Travel。單擊“保存”按鈕,將工程存儲為Travel.vbp,將Form1窗體保存為FrmMain.frx。</p><

37、;p><b>  (二) 添加模塊</b></p><p>  根據(jù)Visual Basic 功能模塊的劃分原則,我創(chuàng)建了以下四個模塊。</p><p>  Const 用來管理工程中的常量。</p><p>  DbFunc 用來管理工程中與數(shù)據(jù)庫操作相關(guān)的聲明、變量和函數(shù)。</p><p>  Genera

38、lFunc 用來管理工程中一些通用的自定義函數(shù)。</p><p>  Variable 用來管理工程中的全局變量 </p><p> ?。ㄈ?添加類模塊</p><p>  根據(jù)Visual Basic 功能模塊的劃分原則,為每一個表創(chuàng)建一個類模塊,將對此表的所有數(shù)據(jù)庫操作封存在類中。</p><p><b>  Area類

39、</b></p><p>  Area類用來管理表Area的數(shù)據(jù)庫操作,它保存為Area.cls。Area類的成員函數(shù)如表3.11</p><p>  表3.11 Area類的成員函數(shù)</p><p>  下面對初始化的函數(shù)Init進(jìn)行下說明 因?yàn)槊總€類模塊都需要一個初始化的過程。對類模塊中的成員變量賦

40、初始值。因?yàn)槊恳粋€類模塊的對象在程序中會多次使用。在每次使用之前都應(yīng)該對其進(jìn)行初始化,從而保證不把上一次使用的值帶到這一次使用中。</p><p>  ● Init函數(shù)的代碼如下:</p><p>  Public Sub Init()</p><p>  AreaId = 0</p><p>  AreaName = "&quo

41、t;</p><p>  AreaType = 0</p><p><b>  End Sub</b></p><p>  再對另一個函數(shù)Load-Area進(jìn)行下說明。因?yàn)榇撕瘮?shù)是一個批量讀取表Area中數(shù)據(jù)的過程。程序?qū)⒌赜蛎Q讀取到3個數(shù)組中:d1()、d2()和d3()中,他們在Variable模塊中定義,分別掉表不同的地域類別。<

42、/p><p><b>  Place 類</b></p><p>  Place類是用來管理表Place的數(shù)據(jù)庫操作,它保存在Place.cls。Place類的成員函數(shù)如表3.12</p><p>  表3.12 Place類的成員函數(shù)</p><p>  下面對其中的De

43、lete過程進(jìn)行說明。因?yàn)樗且粋€典型刪除表中數(shù)據(jù)的過程,幾乎每一個模塊都有一個類似的過程。此過程體現(xiàn)了執(zhí)行SQL語句的基本方法,即首先使用DB_Connect連接到數(shù)據(jù)庫,再將要執(zhí)行SQL語句賦值到SqlStmt變量中,調(diào)用OdbeExt()過程,執(zhí)行SQL語句。最后釋放句柄,并調(diào)用DB_Connect斷開與數(shù)據(jù)庫的連接。</p><p>  3. Hotel類</p><p>  

44、Hotel類用來管理Hotel的數(shù)據(jù)庫操作,它保存為Hotel.cls。Hotel類的成員函數(shù)如表3.13</p><p>  表3.13 Hotel類的成員函數(shù)</p><p>  下面對其中的AreaInHotel 函數(shù)進(jìn)行說明。為了維護(hù)數(shù)據(jù)庫結(jié)構(gòu)的完整性,在刪除數(shù)據(jù)時,往往需要進(jìn)行完整性的判斷。例如,地域數(shù)據(jù)是本系統(tǒng)中最基本的數(shù)據(jù),與很

45、多表存在聯(lián)系。所以在刪除地域數(shù)據(jù)時,需要在其他表中進(jìn)行判斷,如果要刪除的地域存在于其他表中,則不能刪除,因?yàn)閯h除地域會造成其他表的數(shù)據(jù)不完整。AreaInHotel()函數(shù)就是這種判斷函數(shù)的一個代表,如果指定的地域中包含賓館信息,則返回賓館名稱,否則返回空。</p><p>  AreaInHotel過程 AreaInHotel過程的代碼如下:</p><p>  Public Func

46、tion AreaInHotel(ByVal TmpAreaId As Long) As String</p><p>  DB_Connect</p><p>  SqlStmt = "SELECT Hname FROM Hotel WHERE AreaId=" _</p><p>  + Trim(TmpAreaId)</p>

47、<p>  OdbcExt (SqlStmt)</p><p>  If SQLFetch(Hstmt) <> SQL_NO_DATA_FOUND Then</p><p>  ColVal = String(400, 0)</p><p>  Rc = SQLGetData(Hstmt, 1, 1, ColVal, Len(ColVal),

48、pcblen)</p><p>  AreaInHotel = TrimStr(ColVal)</p><p><b>  Else</b></p><p>  AreaInHotel = ""</p><p><b>  End If</b></p><p&

49、gt;  Rc = SQLFreeStmt(Hstmt, SQL_DROP)</p><p>  DB_Disconnect</p><p>  End Function</p><p>  4. Restaurant類</p><p>  Restaurant類用來管理表Restaurant的數(shù)據(jù)庫操作,它保存為Restaurant.

50、cls。Restaurant類的成員函數(shù)如表3.14所示。</p><p>  表3.14 Restaurant類的成員函數(shù)</p><p>  下面對其中的GetInfo 函數(shù)進(jìn)行說明。幾乎每個類模塊都需要一個GetInfo()過程,它的作用是讀取指定表中的某一行數(shù)據(jù)。在GetInfo()過程中,要執(zhí)行SQL語句為SELECT語句。執(zhí)行SQL

51、語句后,調(diào)用SQL_FETCHO函數(shù)將滿足條件的數(shù)據(jù)讀取到內(nèi)存中,然后使用SQL_ GetData()函數(shù)從結(jié)果集中讀取每一列的數(shù)據(jù),并賦值到對應(yīng)的類變量中。</p><p>  5. Amusement 類</p><p>  Amusement類來管理表Amusement的數(shù)據(jù)庫操作,它保存為Amusement.cls。Amusement類的成員函數(shù)如表3.15。</p&g

52、t;<p>  表3.15 Amusement類的成員函數(shù)</p><p>  6. AmuseItem 類</p><p>  AmuseItem類喲后果來管理表AmuseItem的數(shù)據(jù)庫操作,它保存在為AmuseItem.cls。AmuseItem類的成員函數(shù)如表3.16所示。</p><p>  表3

53、.16 AmuseItem類的成員函數(shù)</p><p>  7. Train類</p><p>  Train用來管理表Train的數(shù)據(jù)庫操作,它保存為Train.cls。Train類的成員函數(shù)如表3.17</p><p>  表3.17 Train類的成員函數(shù)</p&g

54、t;<p><b>  Plane 類</b></p><p>  Plane類用來管理表Plane的數(shù)據(jù)庫操作,它保存為Plane.cls。Plane類的成員函數(shù)如表3.18</p><p>  表3.18 Plane類的成員函數(shù)</p><p>  9. tline 類 <

55、;/p><p>  tline類用來管理表tline的數(shù)據(jù)庫操作,它保存為tline.cls。tline類的成員函數(shù)如表3.19</p><p>  表3.19 tline的成員函數(shù)</p><p>  下面對其中的GetNewId函數(shù)進(jìn)行說明。`SQL Server可以使用IDENTITY關(guān)鍵字創(chuàng)建標(biāo)識字段,每次增加新

56、記錄時,標(biāo)識字段自動遞增。但是本系統(tǒng)中,有時需要插入記錄后馬上得到新記錄的部門編號,所以采用程序控制的方法生成部門編號。</p><p>  GetNewId 過程 GetNewId()過程的代碼如下:</p><p>  Public Function GetNewId() As Long</p><p>  DB_Connect</p><

57、;p>  SqlStmt = "SELECT Max(lid) FROM tline"</p><p>  OdbcExt (SqlStmt)</p><p>  If SQLFetch(Hstmt) <> SQL_NO_DATA_FOUND Then</p><p>  ColVal = String(40, 0)</p

58、><p>  Rc = SQLGetData(Hstmt, 1, 1, ColVal, Len(ColVal), pcblen)</p><p>  GetNewId = Val(ColVal) + 1</p><p><b>  End If</b></p><p>  Rc = SQLFreeStmt(Hstmt, SQ

59、L_DROP)</p><p>  DB_Disconnect</p><p>  End Function</p><p>  10. Iplace 類 </p><p>  Iplace類用來管理Iplace的數(shù)據(jù)庫操作,它保存為Iplace.cls。Iplace類的成員函數(shù)如表3.20</p><p>  表

60、3.20 Iplace類的成員函數(shù)</p><p>  下面對其中的SumPrice函數(shù)進(jìn)行說明。SumPrice()函數(shù)中需要同時訪問2個表中的數(shù)據(jù),此時要使用SELECT語句進(jìn)行連接查詢。本實(shí)例中采用的等值連接,連接的條件為l.pid=p.pid。使用這種方法計算門票價格,可以保證資源中采集到的最新報價直接反映到線路報價中。</p><

61、p>  ●   SumPrice過程  SumPrice()過程的代碼如下:</p><p>  Public Function SumPrice(ByVal Tmplid As Long, _</p><p>  ByVal Tmpltype As Integer) As Single</p><p>  DB_Connect</p><

62、p>  If Tmpltype = 1 Then '學(xué)生</p><p>  SqlStmt = "SELECT Sum(p.Child_Price) FROM lplace l, Place p" _</p><p>  + " WHERE l.lid=" + Trim(Tmplid) + " And l.pid=p.pid

63、"</p><p>  Else '成人</p><p>  SqlStmt = "SELECT Sum(p.Adult_Price) FROM lplace l, Place p" _</p><p>  + " WHERE l.lid=" + Trim(Tmplid) +

64、" And l.pid=p.pid"</p><p><b>  End If</b></p><p>  OdbcExt (SqlStmt)</p><p>  If SQLFetch(Hstmt) = SQL_NO_DATA_FOUND Then</p><p>  SumPrice = 0<

65、;/p><p><b>  Else</b></p><p>  ColVal = String(40, 0)</p><p>  Rc = SQLGetData(Hstmt, 1, 1, ColVal, Len(ColVal), pcblen)</p><p>  SumPrice = Val(ColVal)</p&

66、gt;<p><b>  End If</b></p><p>  Rc = SQLFreeStmt(Hstmt, SQL_DROP)</p><p>  DB_Disconnect</p><p>  End Function</p><p>  11.  lhotel類</p><p

67、>  lhotel類用來管理表lhotel的數(shù)據(jù)庫操作,它保存為lhotel.cls。lhotel類的成員函數(shù)3.21</p><p>  表3.21 lhotel類的成員函數(shù)</p><p>  在計算賓館價格的時候,因?yàn)椴煌姆块g類型有不同的價格,所以很難使用一條SELECT語句得到總價格。因此我寫了4個計算報價的函數(shù),分別計算不同

68、的房間類型的賓館報價,然后再把它們依次相加。也可以分別創(chuàng)建4個相應(yīng)的視圖,達(dá)到同樣的效果。</p><p>  12. Ires 類</p><p>  Ires類用來管理表Ires的數(shù)據(jù)庫操作,它保存為Ires.cls。Ires類的成員函數(shù)如表3.22所示。</p><p>  表3.22 Ires類的成員函數(shù)&l

69、t;/p><p>  13. Iamuse 類</p><p>  Iamuse類用來管理表Iamuse的數(shù)據(jù)庫操作,它保存為Iamuse.cls。Iamuse類的成員函數(shù)如表3.23</p><p><b>  所示。</b></p><p>  表3.23 Iamuse類的成

70、員函數(shù)</p><p>  14.Itrain 類</p><p>  Itrain類用來管理表Itrain的數(shù)據(jù)庫操作,它保存為Itrain.cls。Itrain類的成員函數(shù)如表3.24</p><p><b>  所示。</b></p><p>  表3.24 Itrai

71、n類的成員函數(shù)</p><p>  15. Iplane 類</p><p>  Iplane類用來管理Iplane的數(shù)據(jù)庫操作,它保存為Iplane.cls。Iplane類的成員函數(shù)如表3.25</p><p><b>  所示。</b></p><p>  表3.25

72、 Iplane類的成員函數(shù)</p><p>  16. Users類</p><p>  Users類用來管理表Users的數(shù)據(jù)庫操作,它保存問Users.cls。Users類的成員函數(shù)如表3.26</p><p><b>  所示。</b></p><p>  表3.26

73、 Users類的成員函數(shù)</p><p><b>  六、系統(tǒng)主界面設(shè)計</b></p><p><b> ?。ㄒ唬┰O(shè)計主界面</b></p><p>  主界面窗體的屬性如表3.31</p><p>  表3.31 主窗體的屬性<

74、/p><p>  主界面窗體中控件及其屬性如表3.32</p><p>  表3.32 主界面包含的按鈕及其屬性</p><p>  本系統(tǒng)的主界面如圖3.33所示。它包括9個資源管理窗體,它包括地域資源管理、景點(diǎn)資源管理、賓館資源管理、餐廳資源管理、娛樂資源管理、火車資源管理、飛機(jī)資源管理、旅游線路管理(它也是本系統(tǒng)中最

75、為重要的一個)、系統(tǒng)資源管理,你可以在打開任意一個窗體添加你想要輸入的相關(guān)的信息。本系統(tǒng)的背景圖案采用的是黃山風(fēng)景的圖案,給人一種身臨其境的觸動感。</p><p><b>  圖3.33</b></p><p> ?。ǘ?在主界面中添加代碼</p><p>  因?yàn)橄到y(tǒng)的其他功能還沒有實(shí)現(xiàn),所以只能添加退出系統(tǒng)的代碼。其他的代碼將在相應(yīng)的

76、功能實(shí)現(xiàn)后再添加到窗體中。</p><p>  先單擊IblExit按鈕時,將執(zhí)行IblExit_Click()過程,退出系統(tǒng),代碼如下:</p><p>  Private Sub lblexit_Click()</p><p>  DBapi_Disconnect</p><p><b>  End</b></

77、p><p><b>  End Sub</b></p><p><b>  七、登陸模塊設(shè)計</b></p><p><b>  設(shè)計登陸窗體</b></p><p>  創(chuàng)建一個新窗體,設(shè)置窗體名為FrmLogin。登陸窗體的布局如圖3.41所示。用戶可以通過這個窗體進(jìn)入該系統(tǒng)。

78、其中用戶包括Admin這個管理用戶和在管理用戶下生成的一般用戶。密碼不能低于6個字符,如果你輸入的密碼或者用戶失敗3次以上,那么你將自動退出登陸窗體。</p><p>  圖3.41登陸窗體的布局</p><p><b>  圖3.41</b></p><p>  八、旅游地域資源管理模塊設(shè)計</p><p>  地域模

79、塊可以實(shí)現(xiàn)以下功能:</p><p><b>  ● 添加地域信息</b></p><p><b>  ● 修改地域信息</b></p><p><b>  ● 刪除地域信息</b></p><p>  ● 查看地域信息 </p><p> ?。?/p>

80、一) 設(shè)計旅游地域資源編輯窗體</p><p>  編輯地域信息的窗體可以用來添加和修改地域信息。窗體名稱設(shè)置為FrmAreaEdit。在此模塊中輸入的是旅游地域的名稱。窗體FrmAreaEdit的布局如圖3.51所示。</p><p><b>  圖3.51</b></p><p>  窗體FrmAreaEdit中部分過程的代碼。</p

81、><p>  全局變量Modify</p><p>  '判斷地域名稱是否存在</p><p>  If Modify = False Or OriAreaName <> Trim(txtAreaName) Then</p><p>  If .In_DB(MakeStr(txtAreaName)) = True Then&l

82、t;/p><p>  MsgBox "地域名稱已經(jīng)存在,請重新輸入"</p><p>  txtAreaName.SetFocus</p><p>  txtAreaName.SelStart = 0</p><p>  txtAreaName.SelLength = Len(txtAreaName)</p>&

83、lt;p><b>  Exit Sub</b></p><p><b>  End If</b></p><p><b>  End If</b></p><p>  '根據(jù)變量Modify的值,決定是插入新數(shù)據(jù),還是修改已有的數(shù)據(jù)</p><p>  If Mo

84、dify = False Then</p><p><b>  .Insert</b></p><p><b>  Else</b></p><p>  .Update (OriId)</p><p><b>  End If</b></p><p>&

85、lt;b>  End With</b></p><p><b>  '關(guān)閉窗體</b></p><p><b>  Unload Me</b></p><p><b>  End Sub</b></p><p>  小結(jié):變量Modify用來標(biāo)識當(dāng)前的

86、數(shù)據(jù)庫訪問狀態(tài)。當(dāng)Modify=Ture時,表示修改已有的數(shù)據(jù),當(dāng)Modify=False時,表示插入新的數(shù)據(jù);變量OriId表示當(dāng)前編輯地域數(shù)據(jù)的地域編號;變量OriAreaName表示當(dāng)前編輯地域數(shù)據(jù)的原有地域名稱;變量OriType表示當(dāng)前編輯地域數(shù)據(jù)的原有地域類別。</p><p> ?。ǘ?設(shè)計旅游地域資源管理窗體</p><p>  窗體名稱設(shè)置為FrmAreaMan。窗體

87、FrmAreaMan的布局如圖3.52所示。在此窗體中將地域類型分為三類:本市、外埠、國外??梢詫λ麄冞M(jìn)行刪除、修改、刪除。</p><p><b>  圖3.52</b></p><p>  九、景點(diǎn)資源管理模塊設(shè)計</p><p>  景點(diǎn)模塊可以實(shí)現(xiàn)以下功能:</p><p><b>  ● 添加景點(diǎn)信

88、息</b></p><p><b>  ● 修改景點(diǎn)信息</b></p><p><b>  ● 刪除景點(diǎn)信息</b></p><p><b>  ● 查看景點(diǎn)信息</b></p><p> ?。ㄒ唬?設(shè)計景點(diǎn)資源編輯窗體</p><p&

89、gt;  創(chuàng)建一個新窗體,名稱設(shè)置為FrmPlaceEdit。此窗體將景點(diǎn)的報價分為了成人和學(xué)生兩種類型,并且注明了聯(lián)系人、聯(lián)系電話、以及一些聯(lián)系方式。</p><p> ?。ǘ?設(shè)計景點(diǎn)資源管理窗體</p><p>  創(chuàng)建一個新窗體,名稱設(shè)置為FrmPlaceMan。窗體FrmPlaceMan的布局如圖3.61所示。</p><p><b>  圖3

90、.61</b></p><p>  表3.62 FrmPlaceMan包含的控件及其屬性如下圖3.62</p><p>  小結(jié):使用DataGrid控件是一種常用的方法。它的特點(diǎn)是簡單直觀,一目了然。DataGrid控件只能用來顯示數(shù)據(jù),數(shù)據(jù)源用ADO Data控件提供。</p><p>  十.、賓館資源管理模塊設(shè)計<

91、;/p><p>  管理模塊功能以及窗體布局與上面FrmPlaceEdit以及FrmPlaceMan很相近,只要在添加選項中添加信息即可。唯一不同的是在此資源管理模塊中在賓館標(biāo)準(zhǔn)里將賓館分為了幾個不同的星級水準(zhǔn)。并且還將賓館的房間各種不同類型的房間。具體的圖如下:</p><p>  十一、餐廳資源管理設(shè)計模塊設(shè)計</p><p>  管理模塊功能以及窗體布局與上面Fr

92、mPlaceEdit以及FrmPlaceMan很相近,和上面的賓館模塊一樣,餐廳模塊在餐廳標(biāo)準(zhǔn)中也同樣把餐廳分為了幾個不同的星級水準(zhǔn)。并且賦予早餐和正餐的報價。</p><p>  十二、娛樂資源管理模塊設(shè)計</p><p>  娛樂模塊可以實(shí)現(xiàn)以下功能:</p><p><b>  ● 添加娛樂信息</b></p><p

93、><b>  ● 修改娛樂信息</b></p><p><b>  ● 刪除娛樂信息</b></p><p><b>  ● 查看娛樂信息</b></p><p> ?。ㄒ唬?設(shè)計娛樂資源編輯窗體</p><p>  布局和各個過程的代碼與上面FrmPlaceEd

94、it很相近,它是用來添加娛樂廳的一些信息的包括娛樂廳的名字以及一些聯(lián)系方式。</p><p> ?。ǘ┰O(shè)計娛樂項目管理窗體</p><p>  與景點(diǎn)、賓館、餐廳等旅游資源不同,娛樂資源包含很多的娛樂項目,如保齡、臺球、游泳等等,所以需要一個娛樂項目管理窗體。創(chuàng)建一個新窗體,名字設(shè)置為FrmAitemMan。窗體的布局如圖3.71所示。</p><p>  圖3.

95、71窗體FrmAitemMan的布局</p><p>  圖3.71窗體FrmAitemMan的布局</p><p>  下面分析窗體FrmAitemMan中主要的過程代碼。</p><p><b>  公共變量</b></p><p>  在窗體FrmAitemMan中有一個公共變量OriAid,表示當(dāng)前所編輯的娛樂項

96、目所屬的娛樂廳編號。此變量在啟動窗體FrmAitemMan之前設(shè)置。</p><p>  十三.、火車資源管理模塊設(shè)計</p><p>  管理模塊功能以及窗體布局與上面FrmPlaceEdit以及FrmPlaceMan很相近,故不多說。在次模塊中,將火車分為了4個級別,包括軟座、硬座、軟臥、硬臥。</p><p>  十四.、飛機(jī)資源管理模塊設(shè)計</p>

97、;<p>  飛機(jī)模塊可以實(shí)現(xiàn)以下功能:</p><p><b>  ● 添加飛機(jī)信息</b></p><p><b>  ● 修改飛機(jī)信息</b></p><p><b>  ● 刪除飛機(jī)信息</b></p><p><b>  ● 查看飛機(jī)信

98、息</b></p><p>  設(shè)計飛機(jī)資源編輯窗體</p><p>  創(chuàng)建一個窗體,名稱設(shè)置為FrmPlaneEdit。窗體的布局如圖3.81所示。</p><p>  圖3.81 窗體FrmPlaneEdit的布局</p><p>  窗體FrmPlaneEdit中增加了“航班周期”的處理,下面介紹一下窗體FrmPlane

99、Edit的主要代碼。</p><p>  Cmd_OK_Click過程 對應(yīng)的部分代碼如下:</p><p>  'TmpCycle用來保存飛機(jī)的航班周期字符串</p><p>  TmpCycle = ""</p><p>  If Check1.Value = 1 Then</p><p&g

100、t;  TmpCycle = TmpCycle + "1"</p><p><b>  End If</b></p><p>  If Check2.Value = 1 Then</p><p>  TmpCycle = TmpCycle + "2"</p><p><b&g

101、t;  End If</b></p><p>  If Check3.Value = 1 Then</p><p>  TmpCycle = TmpCycle + "3"</p><p><b>  End If</b></p><p>  If Check4.Value = 1 Then

102、</p><p>  TmpCycle = TmpCycle + "4"</p><p><b>  End If</b></p><p>  If Check5.Value = 1 Then</p><p>  TmpCycle = TmpCycle + "5"</p>

103、;<p><b>  End If</b></p><p>  If Check6.Value = 1 Then</p><p>  TmpCycle = TmpCycle + "6"</p><p><b>  End If</b></p><p>  If Ch

104、eck7.Value = 1 Then</p><p>  TmpCycle = TmpCycle + "7"</p><p><b>  End If</b></p><p>  小結(jié):程序中使用航班字符來描述航班周期的信息。規(guī)定航班周期字符串由一組數(shù)字組成,如果星期一有航班,則航班周期字符串中包含字符“1”; 如果星期二

105、有航班,則航班周期字符串中包含字符“2”;以次類推,星期六對應(yīng)的字符“6”,星期日對應(yīng)的字符“7”。</p><p>  十五.、旅游線路管理設(shè)計</p><p>  旅游線路模塊可以實(shí)現(xiàn)以下功能:</p><p>  ● 添加旅游線路信息</p><p>  ● 修改旅游線路信息</p><p>  ● 刪除旅

106、游線路信息</p><p>  ● 查看旅游線路信息</p><p> ?。ㄒ唬?設(shè)計旅游線路管理窗體</p><p>  創(chuàng)建一個新窗體,名稱設(shè)置為FrmLineMan。窗體FrmLineMan布局如圖3.91所示。</p><p>  圖3.91 窗體FrmLineMan的布局</p><p>  下面分析

107、窗體的FrmLineMan中主要過程的代碼。</p><p>  X1_refresh 過程</p><p>  X1_refresh()的作用是根據(jù)用戶選擇的地域,把所在地域的所有旅游線路都讀取到全局?jǐn)?shù)組ArrLind(),然后再依次添加到List1列表里,對應(yīng)的代碼如下:</p><p>  Private Sub Xl_refresh()</p>

108、<p>  Dim i As Integer</p><p>  Dim TmpId As Long</p><p>  '根據(jù)用戶的選擇,讀取地域編號</p><p>  TmpId = MyArea.GetId(ComboName.Text)</p><p>  '根據(jù)地域編號TmpId,讀取指定地域的所有線路

109、</p><p>  MyLine.Loadline_ByArea (TmpId)</p><p>  List1.Clear</p><p><b>  i = 0</b></p><p>  '把讀取的所有線路添加到列表中</p><p>  Do While ArrLine(i) &

110、lt;> ""</p><p>  List1.AddItem ArrLine(i)</p><p><b>  i = i + 1</b></p><p><b>  Loop</b></p><p><b>  End Sub</b></p&

111、gt;<p> ?。ǘ?旅游線路線路編輯窗體</p><p>  創(chuàng)建一個新窗體,名字設(shè)置為FrmLineEdit。窗體FrmLineEdit的布局如圖3.92。</p><p>  此窗體是本系統(tǒng)中一個比較重要的窗體,功能也是最為強(qiáng)大的,故我會在下面的內(nèi)容中重點(diǎn)詮釋此窗體的實(shí)現(xiàn)過程和里面的一些代碼。其中的一些信息添加都是前面的7個窗體中輸入的信息,當(dāng)你把前面的信息輸入到

112、一個線路中并且保存后,你將不能在前面的7個窗體中刪除包括在此路線的任何信息。在此窗體中你能很詳細(xì)的了解到一些你旅游出行的一些最基本信息,包括你將要去的地方的景點(diǎn)、賓館、用餐、娛樂、交通等各種情況。并且可以很直觀的了解到你此次出行將要花費(fèi)的大概費(fèi)用情況。</p><p>  圖3.92 窗體FrmLineEdit的布局</p><p>  下面分析窗體FrmLineEdit中幾個過程的代碼

113、。</p><p><b>  SetAmt 過程</b></p><p>  SetAmt()過程的功能是根據(jù)用戶錄入的線路數(shù)據(jù)計算并顯示線路的成本、線路報價和利潤率。對應(yīng)的代碼如下:</p><p>  Public Sub SetAmt()</p><p>  '成本=景點(diǎn)費(fèi)用共計+賓館費(fèi)用共計+娛樂費(fèi)用共

114、計+用餐費(fèi)用共計+交通費(fèi)用共計+其他費(fèi)用+導(dǎo)游費(fèi)</p><p>  lblCostAmt = Val(lblPlaceAmt) + Val(lblHotelAmt) + Val(lblamuseAmt) _</p><p>  + Val(lblResAmt) + Val(lblTrafAmt) + Val(txtOthers) _</p><p>  + Val

115、(txtTour)</p><p>  '線路報價=成本+利潤</p><p>  lblPrice = Val(lblCostAmt) + Val(txtBenefit)</p><p><b>  '計算利潤率</b></p><p>  If Val(lblPrice) = 0 Then</p

116、><p>  lblBrate = 0</p><p><b>  Else</b></p><p>  lblBrate = Trim(Round(Val(txtBenefit) * 100 / Val(lblPrice), 2)) + "%"</p><p><b>  End If<

117、/b></p><p><b>  End Sub</b></p><p>  Refresh_lplace 過程</p><p>  Refresh_lplace()過程的功能是為Adodc1控制設(shè)置數(shù)據(jù)源,從而決定在DataGrid1控件中顯示的線路景點(diǎn)數(shù)據(jù)內(nèi)容,對應(yīng)的代碼如下:</p><p>  Priva

118、te Sub Refresh_lplace()</p><p>  If ComboType.ListIndex = 0 Then '學(xué)生線路</p><p>  Adodc1.RecordSource = "SELECT a.AreaName As 所在地域, p.Pname As 景點(diǎn)名稱," _</p><p>  + "

119、 p.Child_Price As 票價 FROM Place p, lplace l, Area a WHERE l.lid=" _</p><p>  + Trim(MyLine.lid) + " And l.pid=p.pid And a.AreaId=p.AreaId"</p><p>  Else

120、 '成人線路</p><p>  Adodc1.RecordSource = "SELECT a.AreaName As 所在地域, p.pName As 景點(diǎn)名稱," _</p><p>  + " p.Adult_Price As 票價 FROM Place p, lplace l, Area a WHERE l.lid=" _</

121、p><p>  + Trim(MyLine.lid) + " And l.pid=p.pid And a.AreaId=p.AreaId"</p><p><b>  End If</b></p><p>  Adodc1.Refresh</p><p>  SetPlaceAmt</p>

122、<p><b>  End Sub</b></p><p>  小結(jié):在顯示線路景點(diǎn)數(shù)據(jù)時,需要根據(jù)數(shù)據(jù)庫中記錄的線路景點(diǎn)信息從景點(diǎn)資源表Place中提取景點(diǎn)價格。例如:如果當(dāng)前線路是學(xué)生線路,則提取學(xué)生;如果當(dāng)前線路是成人路線,則提取成人價格。</p><p>  Load_traffic過程</p><p>  Load_traf

123、fic()過程的功能是叢數(shù)據(jù)庫中讀取線路交通信息,并顯示在窗體的指定的位置,對應(yīng)的部分代碼如下:</p><p>  Private Sub Load_traffic(ByVal TmpFlag As Integer)</p><p>  If TmpFlag = 1 Then '往程交通信息</p><p><b>  '讀取線路火車信

124、息</b></p><p>  Call Myltrain.GetInfo(MyLine.lid, 1)</p><p>  '如果Myltrain.Tid<>0,則存在表示往程火車信息</p><p>  If Myltrain.Tid <> 0 Then</p><p>  ComboTraf1

125、.ListIndex = 0</p><p><b>  '讀取火車信息</b></p><p>  MyTrain.GetInfo (Myltrain.Tid)</p><p><b>  '顯示起止車站</b></p><p>  lblstation1 = MyTrain.Ss

126、tation + " - " + MyTrain.Estation</p><p>  '顯示車票類型和票價</p><p>  Select Case Myltrain.tType</p><p><b>  Case 1</b></p><p>  lbltype1 = "硬座&

127、quot;</p><p>  lblprice1 = MyTrain.PriceYz</p><p><b>  Case 2</b></p><p>  lbltype1 = "軟座"</p><p>  lblprice1 = MyTrain.PriceRz</p><p&g

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論