旅游管理系統(tǒng)-畢業(yè)設計論文_第1頁
旅游管理系統(tǒng)-畢業(yè)設計論文_第2頁
旅游管理系統(tǒng)-畢業(yè)設計論文_第3頁
旅游管理系統(tǒng)-畢業(yè)設計論文_第4頁
旅游管理系統(tǒng)-畢業(yè)設計論文_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

旅游管理系統(tǒng)—畢業(yè)設計(論文)旅游管理系統(tǒng)1(選題背景計算機軟件開發(fā)在現(xiàn)代已成為一種重要的行業(yè),發(fā)展前景越來越好,軟件開發(fā)需求人員也越來越大,尤其是數(shù)據(jù)庫和信息管理方面的開發(fā),更是供不應求。在畢業(yè)之即,作為計算機專業(yè)的學生,為了適應社會的需要,加強自己的編程能力.在畢業(yè)設計選題時,我堅定不移地選擇了數(shù)據(jù)庫應用系統(tǒng)開發(fā)方面的課題。下面將詳細分析:1.1旅游資源前景旅游業(yè)是當今國際國內(nèi)發(fā)展最快的產(chǎn)業(yè)之一,也是世界各國互相理解、交流、,從而增進經(jīng)濟全球化的重要手段,因此各國政府都非常重視旅游業(yè)的發(fā)展.我國現(xiàn)代旅游業(yè)只有短短歷史,但已經(jīng)獲得了舉世矚目的成績:1992年國內(nèi)旅游人次為3.3億人次,收入250億元;1999年到達7.19億人次,收入2831億元;再創(chuàng)新高,到達7。44億人次,收入3522.26億元.1999年,我國國內(nèi)國際旅游總收入超過了4000億元人民幣,創(chuàng)匯140億美元,比1978年增長48倍。,我國旅游人數(shù)和收入已經(jīng)從1978年的世界第41位躍至前10名之列.在制定“十五"(至)計劃和跨世紀發(fā)展規(guī)劃中,中國有二十四個省把旅游作為在經(jīng)濟構(gòu)造調(diào)整中優(yōu)先發(fā)展的支柱產(chǎn)業(yè)、重點產(chǎn)業(yè)。按照規(guī)劃,估計到,中國旅游業(yè)總收入將超過3。3萬億元人民幣,相稱于國內(nèi)生產(chǎn)總值的百分之八,真正成為國民經(jīng)濟的支柱產(chǎn)業(yè)。加入WTO后來旅游業(yè)成為了愈加活躍、競爭愈加劇烈、發(fā)展愈加迅速的第三產(chǎn)業(yè)的支柱之一。目前,我國旅行社信息化建設落后,旅行社電腦的用途多數(shù)是打打字。線路銷售手工操作,效率低下輕易出錯,客戶資料不易整頓,大量丟失,這些都是限制我們旅游發(fā)展的瓶頸了。而目前市場的旅游管理軟件,動輒幾萬元,遠非我們所樂意承受的。旅游業(yè)普遍存在著企業(yè)規(guī)模較小,管理不規(guī)范等弱點.由于旅游波及吃、住、行、游、購、娛等諸多要素,并且這些要素又分散在不一樣的地區(qū)中,一種人不也許全面掌握所有的信息。一旦掌握某方面的信息的人離開企業(yè),就會對企業(yè)的經(jīng)營導致負面影響。旅游資源及線路管理系統(tǒng)可以把多種旅游資源分類存儲管理,通過網(wǎng)絡實現(xiàn)資源共享,不僅以便快捷,并且不會由于人員流動影響企業(yè)的經(jīng)營,是旅游社在劇烈的市場競爭中的堅強后盾。1。2數(shù)據(jù)庫和信息管理系統(tǒng)前景社會的進步,科學的發(fā)達,經(jīng)濟的高速發(fā)展,使管理工作越來越離不開信息,信息處理已成為當今世間上一項重要的社會活動.伴隨微型計算機日益增多,它在各行各業(yè)中得到迅速推廣和應用,已經(jīng)深入到社會的各個領域,計算機已經(jīng)成為現(xiàn)代信息處理的重要工具。隨之而來的就是各行各業(yè)對計算機應用軟件的大量需求。1.2。1管理信息系統(tǒng)概念管理信息系統(tǒng)(MIS,ManagementInformationSystem),是一種由人、計算機等構(gòu)成的能進行信息的搜集、傳送、儲存、維護和使用的系統(tǒng),可以實測企業(yè)的多種運行狀況,并運用過去的歷史數(shù)據(jù)預測未來,從企業(yè)全局的角度出發(fā)輔助企業(yè)進行決策,運用信息控制企業(yè)的行為,協(xié)助企業(yè)實現(xiàn)其規(guī)劃目的。這里給出的定義強調(diào)了管理信息系統(tǒng)的功能和性質(zhì),也強調(diào)了管理信息系統(tǒng)中的計算機對企業(yè)管理而言只是一種工具.管理信息系統(tǒng)是信息系統(tǒng)的重要分支之一,通過30數(shù)年的發(fā)展,已經(jīng)成為一種具有自身概念、理論、構(gòu)造、體系和開發(fā)措施的覆蓋多學科的新學科.信息管理者信息源信息處理信息顧客圖4.2。1管理信息總體構(gòu)造圖而數(shù)據(jù)和信息的結(jié)合在現(xiàn)代社會生活中體現(xiàn)出了越來越強大的功能和作用,數(shù)據(jù)已經(jīng)滲透到了社會中的每一種角落和行業(yè),與我們的生活息息有關(guān)。伴隨計算機的日益普及和網(wǎng)絡的發(fā)展,數(shù)據(jù)庫的應用范圍越來越廣,數(shù)據(jù)庫應用的功能也越來越強。1。2.2數(shù)據(jù)庫的基本概念(1)數(shù)據(jù)庫數(shù)據(jù)庫(database,簡稱DB),即數(shù)據(jù)的倉庫,是存儲在計算機內(nèi)、有組織的、可共享的有關(guān)數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲,具有較小的冗余度、較高的數(shù)據(jù)獨立性和擴展性,并可為多種顧客共享。數(shù)據(jù)庫中的數(shù)據(jù)是高度構(gòu)造化的,可以存儲大量的數(shù)據(jù),并且可以以便地進行數(shù)據(jù)的查詢,此外數(shù)據(jù)庫還具有很好的保護安全和維護數(shù)據(jù)一致性的措施,可以以便數(shù)據(jù)的共享.(2)數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(databasemanagementsystem,簡稱DBMS)是在操作系統(tǒng)支持下,為數(shù)據(jù)庫的建立、使用和維護而配置的軟件系統(tǒng),數(shù)據(jù)庫管理系統(tǒng)是位于顧客與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,它在操作系統(tǒng)的基礎上。對數(shù)據(jù)庫進行管理和控制,運用數(shù)據(jù)庫管理系統(tǒng)提供的一系列命令,顧客可以以便地建立數(shù)據(jù)庫和操作數(shù)據(jù),例如建表、向表中添加、刪除記錄等。顧客使用的多種數(shù)據(jù)庫命令以及數(shù)據(jù)庫應用程序的運行,都要通過數(shù)據(jù)庫管理系統(tǒng)來實現(xiàn)。此外,數(shù)據(jù)庫管理系統(tǒng)還要保證數(shù)據(jù)的安全性、完整性、多顧客對數(shù)據(jù)庫的并發(fā)使用及發(fā)生故障后的系統(tǒng)恢復等任務。(3)數(shù)據(jù)庫應用程序數(shù)據(jù)庫應用程序是指用VisualBasic或Delphi等開發(fā)工具開發(fā)的程序,用來實現(xiàn)某種詳細的功能,例如旅游資源及線路管理系統(tǒng),多種信息管理系統(tǒng)等.數(shù)據(jù)庫應用程序是在操作系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)的支持下開發(fā)和運行的,它運用數(shù)據(jù)庫管理系統(tǒng)提供的多種手段訪問一種或多種數(shù)據(jù)庫及數(shù)據(jù).由于旅游業(yè)的興起和迅速發(fā)展,需要一種高效、迅速及以便地系統(tǒng)來管理整個旅游過程中的基本信息和資源,以減少人力、物力、時間等多方面資源的揮霍,給企業(yè)或企業(yè)帶來更多的利潤,這就使得信息管理和數(shù)據(jù)庫管理系統(tǒng)得到了充足的運用。本旅游資源及線路管理系統(tǒng)就是計算機信息管理和數(shù)據(jù)庫應用程序開發(fā)相結(jié)合的產(chǎn)物。2(需求分析2。1軟件的需求分析軟件需求分析是指顧客對目的系統(tǒng)在功能、性能、行為、設計約束等方面的期望。需求分析的任務是確定系統(tǒng)必須完畢哪些工作,也就是對目的系統(tǒng)提出完整、精確、清晰、詳細的規(guī)定.需求分析的成果是系統(tǒng)開發(fā)的基礎,關(guān)系到工程的成敗和軟件產(chǎn)品的質(zhì)量.2。2需求分析階段對系統(tǒng)的綜合規(guī)定有四個方面:(1)系統(tǒng)功能規(guī)定應當劃分出系統(tǒng)必須完畢的因此功能.(2)系統(tǒng)性能規(guī)定系統(tǒng)需要的存儲容量以及后援存儲,重新啟動和安全性等方面的考慮都屬于性能規(guī)定。(3)運行規(guī)定此類規(guī)定集中體現(xiàn)為對運行時所處環(huán)境的規(guī)定.(4)未來也許提出的規(guī)定應當明確地列出那些雖然不屬于目前系統(tǒng)開發(fā)范圍,不過據(jù)分析未來很也許會提出來的規(guī)定。這樣做的目的是在設計過程中對系統(tǒng)未來也許的擴充和修改預做,以便一旦需要時能比較輕易地進行這種擴充和修改。通過這些需求分析來確定整個系統(tǒng)的功能模塊設計和界面的設置和安排。需求分析在整個軟件開發(fā)設計中起著十分重要的作用。因此,在實際的工程中,應當接觸產(chǎn)品的最終顧客或者最終顧客代表.缺乏這樣的接觸,對于許多需求問題,就無法得到可靠的回答。假如缺乏可靠的需求信息,就無法生產(chǎn)出高質(zhì)量的產(chǎn)品。實際上,使用不可靠的需求信息,產(chǎn)品無疑是不能使用的,并且常常不是顧客所想要的。3(方案論證3。1技術(shù)可行性旅游資源及線路管理系統(tǒng)的實現(xiàn)技術(shù)有多種,可以采用老式的客戶機/服務器(C/S)型的MIS型架構(gòu).此外一種采用Web技術(shù)實現(xiàn)。Web技術(shù)超越了老式的“客戶機/服務器”兩層構(gòu)造,采用三層體系構(gòu)造:顧客界面層/事務層/數(shù)據(jù)庫層。因此Web構(gòu)造有著更好的安全性。在顧客機上不需要安裝任何應用程序,應用程序可以安裝在事務層所在的計算機上,數(shù)據(jù)內(nèi)容寄存在數(shù)據(jù)庫服務器上。C,S模式是一種分布式的處理模式,用Server進行數(shù)據(jù)處理,用Client運行前端應用軟件,具有如下特點:(1)、系統(tǒng)的可靠性好,可以在網(wǎng)上以便地增長Client或Server,一般增長一種Client,并不需要增長多少Server的開銷。(2)、C,S模式支持開放的Client接口和開放的Server接口,往往不依賴于硬件及操作系統(tǒng)平臺,便于應用程序的移植。(3)、由于C,S模式采用數(shù)據(jù)集中,處理分散的模式,主機模式下的DBMS數(shù)據(jù)完整性得以保留.(4)、由于充當Client的PC機,具有良好的圖形界面和豐富的應用軟件,使得它的體現(xiàn)能力強,訪問數(shù)據(jù)十分輕易。從而,使C,S模式成為信息平臺的發(fā)展趨勢。3.2開發(fā)工具及開發(fā)平臺的選擇本系統(tǒng)采用C/S模式(即客戶機-服務器模式),用VB作為應用程序的前端開發(fā)工具,與后端的SQLServer數(shù)據(jù)庫相結(jié)合的方式來完畢。再加上VB作為一種面向?qū)ο蟮目梢暬幊坦ぞ?,具有簡樸易學,靈活以便和易于擴充的特點。VB通過配置ODBC數(shù)據(jù)庫連接到SQLServer數(shù)據(jù)庫,再通過ADO、RDO和DAO對這些數(shù)據(jù)進行訪問和操作,這更有便于數(shù)據(jù)的管理和安全。3.3采用SQLServer數(shù)據(jù)庫的長處SQL可用于所有顧客的DB活動模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、應用程序員、決策支持系統(tǒng)人員及許多其他類型的終端顧客?;镜腟QL命令只需很少時間就能學會,最高級的命令在幾天內(nèi)便可掌握.SQL為許多任務提供了命令,其中包括:查詢數(shù)據(jù)??在表中插入、修改和刪除記錄?建立、修改和刪除數(shù)據(jù)對象?控制對數(shù)據(jù)和數(shù)據(jù)對象的存???保證數(shù)據(jù)庫一致性和完整性此前的數(shù)據(jù)庫管理系統(tǒng)為上述各類操作提供單獨的語言,而SQL將所有任務統(tǒng)一在一種語言中。4(服務器與客戶端配置要以SQLServer為后臺數(shù)據(jù)庫開發(fā)應用程序,首先要對服務器與各戶端進行配置。本節(jié)將簡樸地簡介怎樣配置SQLServer服務器和ODBC數(shù)據(jù)源.4。1啟動、暫停和停止SQLServer在缺省狀況下,SQLServer安裝完畢后,“服務管理器”會自動地添加到系統(tǒng)的“啟動”文獻夾中,即在系統(tǒng)啟動后,自動運行SQLServer服務管理器,可以在系統(tǒng)任務欄中看到它的圖標。雙擊圖標,打開SQLServer服務管理器.在服務管理器,可以選擇服務器所在的計算機和SQLServer服務,同步可以很輕松地控制SQLServer服務。選中“當啟動OS時自動啟動服務”復選框,即可關(guān)現(xiàn)自動啟動服務功能。也可以在“企業(yè)管理器"中設置自動啟動SQLServer服務。單擊“開始”按鈕,依次選擇“程序"/“SQLServer”/“企業(yè)管理器”,打開SQLServer企業(yè)管理器。企業(yè)管理器可以協(xié)助顧客完畢如下工作:?定義SQLServer實例組;?將個別服務器注冊到組中;?為每個已注冊的服務器配置所有SQLServer選項;?在每個已注冊的服務器中創(chuàng)立并管理所有SQLServer數(shù)據(jù)庫、對象、登錄、顧客和權(quán)限;?在每人已注冊的服務器上定義并執(zhí)行所有SQLServer管理任務;?通過喚醒調(diào)用SQL查詢分析器,交互地設計并測試SQL語句、批處理和腳本;喚醒調(diào)用SQLServer定義的多種向?qū)А#?.2配置ODBC數(shù)據(jù)源本書所簡介的應用程序?qū)嵗际峭ㄟ^配置ODBC數(shù)據(jù)源連接到SQLServer數(shù)據(jù)庫的.數(shù)據(jù)源是一種存儲定義,它可以記錄如下信息:?連接到數(shù)據(jù)源所使用的ODBC驅(qū)動程序。?ODBC驅(qū)動程序連接到數(shù)據(jù)源所使用用的信息;?連接所使用的驅(qū)動程序特有的選項。例如,SQLServerODBC數(shù)據(jù)源可以記錄要使用的SQL_92選項,或者驅(qū)動程序與否應記錄性能記錄.客戶端上的每個ODBC數(shù)據(jù)源均有一種唯一的數(shù)據(jù)源名稱(DSN)。SQLServerODBC驅(qū)動程序的ODBC數(shù)據(jù)源包括用于連接到SQLServer實例的所有信息以及任何基本選項。SQLServer使用ODBC數(shù)據(jù)源ODBC數(shù)據(jù)源.在“控制面板"中,選擇“管理工具"下的“數(shù)據(jù)源(ODBC)”,啟動ODBC數(shù)據(jù)源管理器。單擊“驅(qū)動程序”選項卡,可以看到系統(tǒng)統(tǒng)安裝的所有ODBC驅(qū)動程序,從中可以找到SQLServer的信息,并查看SQLServer的版信息。我們可以按照如下方式將SQLServer數(shù)據(jù)庫添加到ODBC數(shù)據(jù)源中。1(單擊“系統(tǒng)DSN”選項卡,進入系統(tǒng)數(shù)據(jù)源頁面。2(單擊“添加”按鈕,打開“創(chuàng)立新數(shù)據(jù)源"對話框.3(在驅(qū)動程序列表中,選擇SQLServer,然后單擊“完畢"按鈕,打開“創(chuàng)立數(shù)據(jù)源向?qū)А贝翱?輸入數(shù)據(jù)源名稱、闡明和SQLServer服務器。4(單擊“下一步”,打開設置身份驗證窗口,根據(jù)數(shù)據(jù)庫的詳細設置選擇身份驗證方式,一般需要選擇“使用顧客輸入登錄的SQLServer驗證”,然后手動地輸入登錄ID(例如sa)和密碼。5(單擊“下一步”按鈕,打開設置數(shù)據(jù)庫選項對話框.在選擇的SQLServer數(shù)據(jù)庫上,存在多種數(shù)據(jù)庫,默認的數(shù)據(jù)庫是master,顧客可以選擇自懷創(chuàng)立的數(shù)據(jù)庫,如newdb.顧客還可以在指定服務器中添加數(shù)據(jù)庫,選中“附加數(shù)據(jù)庫文獻名稱”復選框,為可附加的數(shù)據(jù)庫指定主文獻名。這個數(shù)據(jù)庫被附加并用作數(shù)據(jù)源的默認數(shù)據(jù)庫。請指定主文獻的完全途徑名和文獻名,并在“更改默認的數(shù)據(jù)庫為"框中指定的數(shù)據(jù)庫名字,用作附加數(shù)據(jù)庫的名字.6(單擊“下一步”按鈕,進入數(shù)據(jù)源向?qū)У南乱环N窗口。在這個窗口中,顧客可以批暄用于SQLServer消息的語言、字符設置轉(zhuǎn)換和SQLServer驅(qū)動程序是應當使用區(qū)域設置.還可以控制運和運行時間較長的查詢和驅(qū)動程序記錄設置的記錄。7(單擊“完畢”按鈕,數(shù)據(jù)源向?qū)棾鲆环N總結(jié)匯報,匯總此數(shù)據(jù)源的所有信息,包括SQLServerODBC驅(qū)動程序版本、數(shù)據(jù)源名稱、數(shù)據(jù)源描述、服務器名稱、數(shù)據(jù)庫、語言、與否轉(zhuǎn)換字符數(shù)據(jù)、日志驅(qū)動程序、使用集成安全機制、使用區(qū)域設置、預定義的語句選項、使用備用服務器、使用ANSI的空值,填充和警告以及數(shù)據(jù)加密等。8(單擊“測試數(shù)據(jù)源"按鈕,可以栓查數(shù)據(jù)源配置與否成功。5(系統(tǒng)總體設計規(guī)劃在通過以上的需求分析、方案論證、開發(fā)工具及開發(fā)平臺的選擇、服務器與客戶端配置,一切開發(fā)前的就緒工作做好后來,我們就可以進入系統(tǒng)的總體開發(fā)和設計了.下面重要簡介系統(tǒng)的總體設計和規(guī)劃.5.1系統(tǒng)功能描述本系統(tǒng)所描述的旅游資源及線路管理的重要功能包括:(1)地區(qū)信息管理功能?地區(qū)信息的錄入,包括地區(qū)名稱和地區(qū)類型等信息;?地區(qū)信息的修改;?地區(qū)信息的刪除;?地區(qū)信息的查詢。(2)景點資源管理功能?景點資源的錄入,包括景點編號、景點名稱、聯(lián)絡人、票價等信息;?景點資源的修改;?景點資源的刪除;?景點資源的查詢。(3)賓館資源管理功能?賓館資源的錄入,包括賓館編號、賓館名稱、聯(lián)絡人、報價等信息;?賓館資源的修改;?賓館資源的刪除;?賓館資源的查詢。(4)餐廳資源管理功能?餐廳資源的錄入,包括餐廳編號、餐廳名稱、聯(lián)絡人、報價等信息;?餐廳資源信息的修改;?餐廳資源信息的刪除;?餐廳資源信息的查詢。(5)娛樂資源管理功能?娛樂資源信息的錄入,包括娛樂廳編號、娛樂廳名稱、聯(lián)絡人、報價等信息;?娛樂資源信息的修改;?娛樂資源信息的刪除;?娛樂資源信息的查詢。(6)交通資源管理功能?火車資源信息管理;?飛機資源信息公里。(7)旅游線路管理功能?旅游線路信息的錄入,包括線路編號、線路名稱、報價等信息;?旅游線路信息的修改;?旅游線路信息的刪除;?旅游線路信息的查詢.(8)系統(tǒng)顧客管理功能?系統(tǒng)顧客信息的錄入,包括顧客名、密碼等信息;?系統(tǒng)顧客信息的修改;?系統(tǒng)顧客信息的刪除;?系統(tǒng)顧客信息的查詢.5.2功能模塊劃分從功能描述的內(nèi)容可以看到,本系統(tǒng)可以實現(xiàn)其完整的功能.根據(jù)這些功能,設計出的系統(tǒng)功能模塊如下圖5.2所示。旅游資源及線路管理系統(tǒng)地景餐娛交旅系賓域點廳樂通游統(tǒng)館信資資資資線用資息源源源源路戶源管管管管管管管管理理理理理理理理火飛車機資資源源管管理理圖5.2旅游資源及線路管理系統(tǒng)功能模塊示意圖在功能模塊示意圖的樹狀構(gòu)造中,每一種葉結(jié)點都是一種最小的功能模塊。每一種功能模塊都需要針對不一樣的表完畢相似的數(shù)據(jù)庫操作,即添加記錄、修改記錄、以及查詢顯示記錄信息.旅游資源及線路管理系統(tǒng)的功能模塊之間的關(guān)系如圖5。2。1所示。旅游線路管理提供數(shù)據(jù)提供數(shù)據(jù)提供數(shù)據(jù)線路地區(qū)數(shù)據(jù)提供數(shù)據(jù)提供數(shù)據(jù)線路景點數(shù)據(jù)景點資源管理地線路域提供數(shù)據(jù)提供數(shù)據(jù)線路賓館數(shù)據(jù)賓館資源管理報價信提供數(shù)據(jù)提供數(shù)據(jù)及成息線路用餐數(shù)據(jù)餐廳資源管理本預管算理提供數(shù)據(jù)提供數(shù)據(jù)線路娛樂數(shù)據(jù)娛樂資源管理線路交通數(shù)據(jù)交通資源管理其他線路數(shù)據(jù)圖5.2.1旅游資源及線路管理系統(tǒng)的功能模塊關(guān)系圖從模塊關(guān)系圖中可以看出,旅游資源信息除了供顧客查閱外,不可認為旅游線路管理提供數(shù)據(jù)。當顧客需要生成一條旅游線路時,可以從旅游資源里取到最新的數(shù)據(jù)。線路報價和成本預算也會伴隨資源的變化而變化。5。3系統(tǒng)流程分析理解了系統(tǒng)的功能模塊劃分,以及各模塊之間的關(guān)系。這是系統(tǒng)總體設計的重要構(gòu)成部分。假如對系統(tǒng)形成一種完整而全面的認識,還需要進行系統(tǒng)流程分析。所謂系統(tǒng)流程就是顧客在使用系統(tǒng)時的工作過程。多顧客系統(tǒng)的工作流程都是從顧客登錄模塊開始,對顧客的身份進行認證.身份認證可以分為如下兩個過程:(1)確認顧客與否有效的系統(tǒng)顧客;(2)確定顧客的類型。第1個過程決定顧客能否進入系統(tǒng).第2個過程根據(jù)顧客的類型決定顧客的操作權(quán)限,從而決定顧客的工作界面。本系統(tǒng)的流程分析如圖5.3所示。開始重試否失敗是顧客登錄失敗超過3次退出程序成功顧客管理模塊旅游資源及線路管理模塊讀取顧客類型1管理自己的顧客信息旅游資源管理2管理一般顧客的信息Admin顧客旅游線路管理管理自己的顧客信息5。3系統(tǒng)流程分析圖從系統(tǒng)流程分析圖中可以看到,每個顧客有3次機會進行身份認證.假如3次輸入的顧客名和密碼都無法與數(shù)據(jù)庫中的數(shù)據(jù)匹配,則強制退出系統(tǒng)。5.4數(shù)據(jù)庫設計5。4。1創(chuàng)立數(shù)據(jù)庫表:數(shù)據(jù)庫Travel中包括如下16個表:地區(qū)信息表Area、景點資源信息表Place、賓館資源信息表Hotel、餐廳資源信息表Restaurant、娛樂廳資源信息表Amusement、娛樂項目資源信息表AmuseItem、火車資源信息表Train、飛機資源信息表Plane、線路基本信息表tline、線路景點信息表lplace、線路賓館信息表lHotel、線路用餐信息表lRes、線路娛樂信息表lamuse、線路火車信息表ltrain、線路飛機信息表lplane、顧客信息表Users。在本系統(tǒng)中由于要用到標識符自動增長,在這里我們不使用企業(yè)管理器來創(chuàng)立表,而使用腳本文獻創(chuàng)立數(shù)據(jù)表,這對背面的設計有很大的協(xié)助和以便作用。(1)創(chuàng)立表Area創(chuàng)立表Area的腳本文獻為Area.sql,它的代碼如下:createtableArea(AreaIdintprimarykeyidentity,AreaNamevarchar(40)notnull,AreaTypesmallintnotnull)在使用createtalbe指令創(chuàng)立表時,應當注意使用Primarykey關(guān)鍵字定義表的主鍵。表中每一行的主鍵均有唯一值,可以使用主鍵惟一地標識一行數(shù)據(jù).(2)創(chuàng)立表Place創(chuàng)立表Place的腳本文獻為Place。sql,它的代碼如下:createtableplace(Pidintprimarykeyidentity,Pnamevarchar(200)notnull,Contactvarchar(100),Phonevarchar(100),Addressvarchar(100),Postcodevarchar(10),Adult_priceDecimal(10,2),Child_priceDecimal(10,2),AreaIdint,Input_timechar17)在使用createtable指令創(chuàng)立表時,應當注意使用identity關(guān)鍵字定義表的標識列。Identity屬性可以用于獲得自動增長的標識號。例如,表place中的Pid字段是標識列,對于新插入表中的記錄,它的Pid字段將獲得一種自動分派的整型值。對于諸多表中都使用的惟一編號列,一般可以使用identity定義。(3)創(chuàng)立表Hotel創(chuàng)立表Hotel的腳本文獻為Hotel.sql,它的代碼如下:createtableHotel(Hidintprimarykeyidentity,Hnamevarchar(200)notnull,Hlevelvarchar(40),Contactvarchar(100),Phonevarchar(100),Addressvarchar(100),Postcodevarchar(100),Price1Decimal(10,2),Price2Decimal(10,2),Price3Decimal(10,2),Price4Decimal(10,2),AreaIdint,Input_timechar17)在使用createtable指令創(chuàng)立表時,應當注意使用notnull關(guān)鍵字定義表的末空字段。使用notnull定義的字段將不容許為空,這樣就可以防止表中出現(xiàn)無效的數(shù)據(jù),影響系統(tǒng)運行。例如,表Hotel中的Hname字段將不能為空,否則在系統(tǒng)的賓館名稱列表中將出現(xiàn)一種空.(4)創(chuàng)立表Restaurant創(chuàng)立表Restaurant的腳本文獻Restaurant。sql,它的代碼如下:createtableRestaurant(Ridintprimarykeyidentity,Rnamevarchar(200)notnull,Rlevelvarchar(40),Contactvarchar(100),Phonevarchar(100),Addressvarchar(100),Postcodevarchar(10),Breakfastdecimal(10,2),Dinnerdecimal(10,2),AreaIdint,Input_timechar(17))(5)創(chuàng)立表Amusement創(chuàng)立表Amusement的腳本文獻為Amusement.sql,它的代碼如下:createtableAmusement(Aidintprimarykeyidentity,Anamevarchar(200)notnull,Contactvarchar(100),Phonevarchar(100),Addressvarchar(100),Postcodevarchar(10),AreaIdint,Input_timechar(17))(6)創(chuàng)立表AmuseItem創(chuàng)立表AmuseItem的腳本文獻為AmuseItem。sql,它的代碼如下:createtableAmuseItem(Iidintprimarykeyidentity,Aidint,Itemvarchar(50)notnull,Pricedecimal(10,2),Input_timechar(17))(7)創(chuàng)立表Train創(chuàng)立表Train的腳本文獻為Train。sql,它的代碼如下:createtableTrain(Tidintprimarykeyidentity,Tnovarchar(20)notnull,Sstationvarchar(40),Estationvarchar(40),Stimevarchar(40),Etimevarchar(40),PriceYzdecimal(7,2),PriceRzdecimal(7,2),PriceYwdecimal(7,2),PriceRwdecimal(7,2),Input_timechar(17))(8)創(chuàng)立表Plane創(chuàng)立表Plane的腳本文獻為Plane.sql,它的代碼如下:createtablePlane(Pidintprimarykeyidentity,AirComvarchar(50)notnull,Pnovarchar(20)notnull,SairPortvarchar(40),EaiPortvarchar(40),Stimevarchar(40),Etimevarchar(40),Price1decimal(7,2),Price2decimal(7,2),Cyclechar(7),Input_timechar(17))(9)創(chuàng)立表tline創(chuàng)立表tline的腳本文獻為tline.sql,它的代碼如下:createtabletline(lidintprimarykey,lnamevarchar(50),ldaysmallint,ltypesmallint,insComvarchar(40),insFeedecimal(8,2),oterCostdecimal(8,2),tourPaydecimal(8,2),benefitdecimal(8,2),AreaIdint)(10)創(chuàng)立表lplace創(chuàng)立表lplacee的腳本文獻為lplace。sql,它的代碼如下:createtablelplace(lidintnotnull,Pidintnotnull)(11)創(chuàng)立表lhotel創(chuàng)立表lhotel的腳本文獻為lhotel.sql,它的代碼如下:createtablelhotel(lidintnotnull,hidintnotnull,rTypetinyint,rdaystinyint)(12)創(chuàng)立表lres創(chuàng)立表lres的腳本文獻為lres。sql,它的代碼如下:createtablelres(lidintnotnull,ridintnotnull,rTypetinyint,rTimestinyint)(13)創(chuàng)立表lamuse創(chuàng)立表lamuse的腳本文獻為lamuse。sql,它的代碼如下:createtablelamuse(lidintnotnull,Iidintnotnull,aTimestinyint)(14)創(chuàng)立表ltrain創(chuàng)立表ltrain的腳本文獻為ltrain.sql,它的代碼如下:createtableltrain(lidintnotnull,directintnotnull,tidtinyintnotnull,rTypetinyint)(15)創(chuàng)立表lplane創(chuàng)立表lplane的腳本文獻為lplane.sql,它的代碼如下:createtablelplane(lidintnotnull,directtinyintnotnull,pidintnotnull)(16)創(chuàng)立表Users創(chuàng)立表Users的腳本文獻為Users。sql,它的代碼如下:createtableUsers(UserNamevarchar(40)primarykey,Pwdvarchar(40)notnull,EmpNamevarchar(40))在查詢分析器中打開這些sql文獻,然后單擊運行圖標,就可以在數(shù)據(jù)庫中創(chuàng)立對應的表。5.5數(shù)據(jù)庫訪問5。5.1ODBC數(shù)據(jù)庫訪問技術(shù)ODBC(OpenDatabaseConnectivity,開放數(shù)據(jù)庫互連)是Microsoft企業(yè)開放服務構(gòu)造中有關(guān)數(shù)據(jù)庫的一種構(gòu)成部分,它建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的原則API(應用程序編程接口).這些API運用SQL來完畢其大部分任務.ODBC自身也提供了對SQL語言的支持,顧客可以直接將SQL語句送給ODBC.一種基于ODBC的應用程序?qū)?shù)據(jù)庫的操作不依賴任何DBMS(數(shù)據(jù)庫管理系統(tǒng)),不直接與DBMS打交道,所有的數(shù)據(jù)庫操作由對應的DBMS的ODBC驅(qū)動程序完畢.也就是說,不管是FoxPro、Access還是SQLServer數(shù)據(jù)庫,均可用ODBCAPI進行訪問。由此可見,ODBC的最大長處是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。一種完整的ODBC由下列幾種部分構(gòu)成.?應用程序(Application);?ODBC管理器(Administrator)。該程序位于Windows控制面板的32位ODBC內(nèi),其重要任務是管理ODBC驅(qū)動程序和數(shù)據(jù)庫;?驅(qū)動程序管理器(DriverManager)。驅(qū)動程序管理起包括在ODBC32。DLL中,對顧客是透明的。其任務是管理ODBC驅(qū)動程序,是ODBC中最重要的部件;?ODBCAPI;ODBC驅(qū)動程序。它是某些DLL,提供了ODBC和數(shù)據(jù)庫之間的接口;??數(shù)據(jù)源。數(shù)據(jù)源包括了數(shù)據(jù)庫位置和數(shù)據(jù)庫類型等信息,實際上是一種數(shù)據(jù)連接的抽象。各部件之間的關(guān)系如圖5.5所示。數(shù)據(jù)源名應用程序(DNS)應用層ODBCODBCAPI管理器SQL驅(qū)動程序管理器ODBC驅(qū)動程序ODBC層數(shù)據(jù)源DataSource數(shù)據(jù)層圖5.5ODBC各部件關(guān)系圖應用程序要訪問一種數(shù)據(jù)庫,首先必須用ODBC管理器注冊一種數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及ODBC驅(qū)動程序等信息,建立起ODBC與詳細數(shù)據(jù)庫的聯(lián)絡.這樣,只要應用程序?qū)?shù)據(jù)源名提供應ODBC就能建立起與對應數(shù)據(jù)庫的連接。5。5.2數(shù)據(jù)庫訪問控件在使用VisualBasic開發(fā)數(shù)據(jù)庫應用程序的時候,會常常使用數(shù)據(jù)庫訪問控件.這些控件包括:?Data控件;?ADOData控件;?DataList控件/DataCombo控件;?DataGrid控件;?MSChart控件。5.6功能模塊規(guī)劃窗體、模塊和類模塊是VisualBasic的重要資源.它們在程序設計中具有不可替代的作用。設計好它們之間的功能,使用它們可以協(xié)調(diào)合作,對于開發(fā)數(shù)據(jù)庫應用程序是非常重要的。窗體是VisualBasic程序中比不可少的資源。它可以實現(xiàn)工程的外觀顯示,添加程序代碼,實現(xiàn)需要的功能。窗體文獻一般直接寄存在應用程序的目錄下。模塊可以用來管理全局常量、變量和顧客自定義函數(shù)等。顧客可以在類模塊中創(chuàng)立自定義類。本實例中約定,數(shù)據(jù)庫的每個表都對應一種類模塊。類的組員變量對應表中的每個列,類的組員函數(shù)則是對表的多種操作.5.6.1添加模塊根據(jù)VisualBasic功能模塊的劃分原則,我們將分別創(chuàng)立如下幾種模塊。?Const用來管理工程中的常量。?DbFunc用來管理工程中與數(shù)據(jù)庫操作有關(guān)的申明、變量和函數(shù)。?GeneralFunc用來管理工程中某些通用的自定義函數(shù)。?Variable用來管理工程中的全局變量。5.6.2添加類模塊根據(jù)VisualBasic功能模塊的劃分原則,為每一種表創(chuàng)立一種類模塊,將對此表的所有數(shù)據(jù)庫操作封裝在類中.在一般狀況下,類的組員變量與對應的表中的字段名相似。由于絕大多數(shù)組員函數(shù)的編碼格式都是非常相似的,只是所使用的SQL語句不一樣,因此只闡明類中組員函數(shù)的功能,并不對所有的組員函數(shù)進行詳細的代碼分析.下面就Area類來闡明類模塊組員函數(shù)。Area類的組員函數(shù)函數(shù)名詳細闡明Init初始化組員變量Delete刪除指定的地區(qū)記錄。參數(shù)TmpId表達要刪除的地區(qū)編號GetId根據(jù)指定的地區(qū)名讀取地區(qū)編號。參數(shù)TmnName表達要讀取的地區(qū)名稱GetInfo讀取指定的地區(qū)記錄。參數(shù)TmpId表達要讀取的地區(qū)編號In_DB判斷指定的地區(qū)名稱與否已經(jīng)在數(shù)據(jù)庫中。參數(shù)TmpName表達指定地區(qū)名Insert插入新的地區(qū)記錄將所有的地區(qū)數(shù)據(jù)讀取到數(shù)組中。為了便于使用,此過程按照地區(qū)的分類將Load_Area地區(qū)分別裝入到數(shù)組d1()、d2()、d3()中Update修改指定的地區(qū)記錄。參數(shù)TmpId表達要修改的地區(qū)編號詳細的模塊代碼和類模塊組員函數(shù)的代碼不一一闡明。5。7系統(tǒng)主界面設計5.7。1設計主界面圖5.7。2參照表5.7.1設置主界面窗體的屬性。表5。7。1設置主窗體的屬性窗體屬性設置值詳細闡明FrmMain名稱設置窗體名稱BorderStyle1—FixedSingle設置窗體的邊框?qū)傩訡aption旅游資源及線路管理系統(tǒng)窗體的標題條文本MaxButtonFalse取消最大化按鈕MinButtonTrue激活最小化按鈕PictureImg\Main.jpg設置窗體背景StartUpPosition2-屏幕中心設置窗體位于屏幕中心本實例的主界面如圖5。7。1所示。圖5.7。2旅游資源及線路管理系統(tǒng)主界面5.7。2在主界面中添加代碼由于系統(tǒng)的其他功能還沒有實現(xiàn),因此只能添加退出系統(tǒng)的代碼。其他的代碼將在對應的功能實現(xiàn)后再添加到窗體中.當顧客單擊lblExit按鈕時,將執(zhí)行l(wèi)blExit_Click()過程,退出系統(tǒng)。代碼如下:PrivateSublblexit_Click()DBapi_DisconnectEndEndSub5。8登錄模塊設計顧客要使用本系統(tǒng),首先要同過系統(tǒng)的身份認證,這個過程叫做登錄.登錄過程需要完畢如下任務:?根據(jù)顧客名和密碼來判斷與否也許進入系統(tǒng);?根據(jù)顧客類型決定顧客擁有的權(quán)限。5。8.1設計登錄窗體創(chuàng)立一種新窗體,設置窗體名為FrmLogin。登錄窗體的布局如圖5。8所示。5.8。2在登錄窗體中添加代碼其中的Cmd_Ok按鈕的代碼如下:PrivateSubCmd_OK_Click()DimjAsSingle'數(shù)據(jù)有效性檢查IftxtUser=””ThenMsgBox"請輸入顧客名”txtUser.SetFocusExitSubEndIfIftxtPwd=”"ThenMsgBox”請輸入密碼"txtPwd.SetFocusExitSubEndIfNameKey=MakeStr(txtUser)PasswordKey=MakeStr(txtPwd)’判斷顧客與否存在IfMyUser。In_DB(NameKey)=FalseThenMsgBox”顧客名不存在”Try_times=Try_times+1IfTry_times>=3ThenMsgBox”您已經(jīng)三次嘗試進入本系統(tǒng),均不成功,系統(tǒng)將關(guān)閉”DBapi_DisconnectEndElseExitSubEndIfEndIf’判斷密碼與否對的MyUser.GetInfo(NameKey)IfMyUser.Pwd<〉PasswordKeyThenMsgBox”密碼錯誤”Try_times=Try_times+1IfTry_times〉=3ThenMsgBox”您已經(jīng)三次嘗試進入本系統(tǒng),均不成功,系統(tǒng)將關(guān)閉”DBapi_DisconnectEndElseExitSubEndIfEndIf'登錄成功,將目前顧客的信息保留在CurUser中CurUser。GetInfo(MyUser。UserName)’關(guān)閉自己UnloadMeEndSub5.9旅游地區(qū)資源管理模塊設計地區(qū)管理模塊可以實現(xiàn)如下功能:?添加地區(qū)信息;?修改地區(qū)信息;?刪除地區(qū)信息;?查看地區(qū)信息。5.9。1設計旅游地區(qū)資源編輯窗體編輯地區(qū)信息的窗體可以用來添加和修改地區(qū)信息。創(chuàng)立一種新窗體,窗體設置為FrmAreaEdit。窗體FrmAreaEdit的布局如圖5.9所示。圖5。9窗體FrmAreaEdit的布局下面分析窗體FrmAreaEdit中部分過程的代碼。1(全局變量Modify變量Modify用來標識目前的數(shù)據(jù)庫訪問狀態(tài)。當Modify=True時,表達修改已經(jīng)有的數(shù)據(jù),當Modify=False時,表達插入新的數(shù)據(jù);變量OriId表達目前編輯地區(qū)數(shù)據(jù)的地區(qū)編號;變量OriAreaName表達目前編輯地區(qū)數(shù)據(jù)的原有地區(qū)名稱;變量OriType表達目前編輯地區(qū)數(shù)據(jù)的原有地區(qū)類別.2(Cmd_OK_Click過程當顧客單擊“確定”按鈕時,將觸發(fā)Cmd_Ok_Click事件,對應的程序代碼如下:PrivateSubCmd_OK_Click()’檢查顧客輸入的地區(qū)數(shù)據(jù)與否有效IfCheck=FalseThenExitSubEndIfWithMyArea’把顧客輸入的地區(qū)數(shù)據(jù)賦值到MyArea對象的組員變量中.AreaName=MakeStr(txtAreaName)。AreaType=CurType'判斷地區(qū)名稱與否存在IfModify=FalseOrOriAreaName<〉Trim(txtAreaName)ThenIf。In_DB(MakeStr(txtAreaName))=TrueThenMsgBox”地區(qū)名稱已經(jīng)存在,請重新輸入”txtAreaName.SetFocustxtAreaName。SelStart=0txtAreaName。SelLength=Len(txtAreaName)ExitSubEndIfEndIf’根據(jù)變量Modify的值,決定是插入新數(shù)據(jù),還是修改已經(jīng)有的數(shù)據(jù)IfModify=FalseThen。InsertElse.Update(OriId)EndIfEndWith’關(guān)閉窗體UnloadMeEndSub在上面的程序段中,分別對插入地區(qū)數(shù)據(jù)和修改地區(qū)數(shù)據(jù)兩種狀況進行處理.插入數(shù)據(jù)時使用Area.Insert()過程,修改數(shù)據(jù)時調(diào)用Area。Update()過程.5。9.2設計旅游地區(qū)資源管理窗體創(chuàng)立一種新窗體,窗體名稱設置為FrmAreaMan.窗體FrmAreaMan的布局如圖5。9.2所示.下面分析窗體FrmAreaMan中部分過程的代碼。(Loadarea過程1Loadarea過程的功能是從數(shù)據(jù)庫中讀取不一樣類型的地區(qū)數(shù)據(jù),并根據(jù)顧客的選擇把指定類別的地區(qū)名稱添加到List1中.對應的代碼如下:PrivateSubLoadarea()DimiAsIntegerList1。ClearMyArea.Load_Area'本市地區(qū)IfOption1.Value=TrueThenDoWhiled1(i)〈〉""List1。AddItemd1(i)'把本市地區(qū)添加到List1列表框中i=i+1LoopEndIf'外埠地區(qū)IfOption2.Value=TrueThenDoWhiled2(i)〈〉””List1.AddItemd2(i)'把外埠地區(qū)添加到List1列表框中i=i+1LoopEndIf’國外地區(qū)IfOption3。Value=TrueThenDoWhiled3(i)〈>””List1。AddItemd3(i)'把國外地區(qū)添加到List1列表框中i=i+1LoopEndIfEndSubMyArea.Loadarea過程的作用是將地區(qū)名稱按照類別讀取到全局數(shù)組d1()、d2()和d3()中。2(DeleteCheck過程當顧客要刪除地區(qū)數(shù)據(jù)時,程序?qū)⒄{(diào)用DeleteCheck()函數(shù),判斷目前選擇的地區(qū)與否可以刪除,對應的代碼如下:PrivateFunctionDeleteCheck(ByValTmpIdAsLong)AsIntegerDimTmpNameAsString'旅游娛樂廳資源地區(qū)數(shù)據(jù)檢查TmpName=MyPlace。AreaInPlace(CurAreaId)IfTmpName<〉"”ThenDeleteCheck=-1MsgBox"目前地區(qū)信息在娛樂廳—”+TmpName+"-中使用,為保證數(shù)據(jù)的完整性,不容許刪除此地區(qū).”ExitFunctionEndIf’旅游賓館資源地區(qū)數(shù)據(jù)檢查TmpName=MyHotel.AreaInHotel(CurAreaId)IfTmpName<>"”ThenDeleteCheck=—1MsgBox”目前地區(qū)信息在賓館-"+TmpName+”-中使用,為保證數(shù)據(jù)的完整性,不容許刪除此地區(qū)."ExitFunctionEndIf'旅游用餐資源地區(qū)數(shù)據(jù)檢查TmpName=MyRes.AreaInRes(CurAreaId)IfTmpName<〉"”ThenDeleteCheck=—1MsgBox”目前地區(qū)信息在餐廳—"+TmpName+”-中使用,為保證數(shù)據(jù)的完整性,不容許刪除此地區(qū).”ExitFunctionEndIf'旅游娛樂資源地區(qū)數(shù)據(jù)檢查TmpName=MyAmuse.AreaInAmuse(CurAreaId)IfTmpName<>””ThenDeleteCheck=—1MsgBox”目前地區(qū)信息在娛樂廳-"+TmpName+”—中使用,為保證數(shù)據(jù)的完整性,不容許刪除此地區(qū).”ExitFunctionEndIf'旅游線路地區(qū)數(shù)據(jù)檢查TmpName=MyLine.AreaInLine(CurAreaId)IfTmpName〈〉"”ThenDeleteCheck=—1MsgBox”目前地區(qū)信息-在線路—"+TmpName+”—中使用,為保證數(shù)據(jù)的完整性,不容許刪除此地區(qū)。"ExitFunctionEndIf'通過檢查,可以刪除目前地區(qū)DeleteCheck=0EndFunction為了維護數(shù)據(jù)庫構(gòu)造的完整性,在刪除數(shù)據(jù)時,往往需要進行數(shù)據(jù)庫完整性的判斷.地域數(shù)據(jù)是本系統(tǒng)中最基本的數(shù)據(jù),與諸多表存在聯(lián)絡。因此在刪除地區(qū)數(shù)據(jù)時,需要在其他表中進行判斷,假如要刪除的地區(qū)存在于其他表中,則不能刪除,由于刪除此地區(qū)會導致其他表的數(shù)據(jù)不完整。3(Form_Load過程當裝入窗體FrmAreaMan時,將觸發(fā)Form_Load事件,對應的代碼如下:PrivateSubForm_Load()'將目前地區(qū)類型設置為“本市"Option1。Value=True'裝入數(shù)據(jù)LoadareaEndSub4(Cmd_Modi_Click過程當顧客單擊“修改”按鈕時,將觸發(fā)Cmd_Modi_Click事件,對應的代碼如下:PrivateSubCmd_Modi_Click()'判斷與否選擇了要修改的地區(qū)IfList1。ListIndex<0ThenMsgBox"請選擇要修改的地區(qū)”ExitSubEndIf’修改本市地區(qū)IfOption1。Value=TrueThenFrmAreaEdit.CurType=1FrmAreaEdit。lblAreaType=”本市"EndIf'修改外埠地區(qū)IfOption2.Value=TrueThenFrmAreaEdit.CurType=2FrmAreaEdit.lblAreaType="外埠”EndIf’修改國外地區(qū)IfOption3.Value=TrueThenFrmAreaEdit.CurType=3FrmAreaEdit.lblAreaType="國外"EndIf’將變量Modify設置設置為False,表達插入新數(shù)據(jù)FrmAreaEdit.Modify=True'設置全局變量FrmAreaEdit。OriAreaName=List1。TextFrmAreaEdit.txtAreaName=List1。TextFrmAreaEdit。OriId=CurAreaId’啟動編輯地區(qū)信息的窗體FrmAreaEdit。Show1'修改后重新裝入地區(qū)數(shù)據(jù)LoadareaEndSub5(Cmd_Del_Click過程當顧客單擊“刪除"按鈕時,將觸發(fā)Cmd_Del_Click事件,對應的代碼如下:PrivateSubCmd_Del_Click()'判斷與否選擇了要刪除的地區(qū)IfList1。ListIndex<0ThenMsgBox"請選擇要刪除的地區(qū)”ExitSubEndIf'調(diào)用DeleteCheck()函數(shù),判斷選擇的地區(qū)與否可以刪除IfDeleteCheck(CurAreaId)=—1ThenExitSubEndIf'問詢與否可以刪除地區(qū)IfMsgBox("與否刪除目前地區(qū)?",vbYesNo,"請確認”)=vbYesThenMyArea.Delete(CurAreaId)LoadareaEndIfEndSub5。10景點資源管理模塊設計景點資源管理模塊可以實現(xiàn)如下功能:?添加景點資源信息;?修改景點資源信息;?刪除景點資源信息;?查看景點資源信息。5.10。1設計景點資源編輯窗體創(chuàng)立一種新窗體,窗體名稱設置為FrmPlaceEdit。窗體FrmPlaceEdit的布局如圖6。10所示。圖5。10窗體FrmPlaceEdit的布局下面分析窗體FrmPlaceEdit中各個過程的代碼.1(Form_Load過程當FrmPlaceEdit窗體啟動時,將觸發(fā)Form_Loade事件,對應的代碼如下:PrivateSubForm_Load()ComboType.AddItem("本市")ComboType。AddItem(”外埠")ComboType.AddItem("國外")ComboType.ListIndex=OriType—1CallLoadarea(OriType,ComboName)IfInCombo(OriAreaName,ComboName)=TrueThenComboName。Text=OriAreaNameEndIfEndSub2(Cmd_Ok_Click()過程當顧客單擊“確定”按鈕時,將觸發(fā)Cmd_OK_Click事件,對應的代碼如下:PrivateSubCmd_OK_Click()'檢查顧客輸入的地區(qū)數(shù)據(jù)與否有效IfCheck=FalseThenExitSubEndIfWithMyPlace'把顧客輸入的地區(qū)數(shù)據(jù)賦值到MyPlace對象的組員變量中。Pname=MakeStr(txtPlace)。Contact=MakeStr(txtContact).Phone=MakeStr(txtPhone).Address=MakeStr(txtAddress)。Postcode=MakeStr(txtCode)。Adult_price=Val(txtAdult)。Child_price=Val(txtChild).AreaId=MyArea.GetId(ComboName)’判斷景點名稱與否存在IfModify=FalseOrOriPlaceName〈〉Trim(txtPlace)ThenIf.In_DB(MakeStr(txtPlace))=TrueThenMsgBox”景點名稱已經(jīng)存在,請重新輸入"txtPlace.SetFocustxtPlace。SelStart=0txtPlace.SelLength=Len(txtPlace)ExitSubEndIfEndIf'根據(jù)變量Modify的值,決定是插入新數(shù)據(jù),還是修改已經(jīng)有的數(shù)據(jù)IfModify=FalseThen。InsertElse。Update(OriId)EndIfEndWith’關(guān)閉窗體UnloadMeEndSub5.10.2設計景點資源管理窗體創(chuàng)立一種新窗體,窗體名稱設置為FrmPlaceMan。參照表5.10。2添加并設置控件的屬性.表5。10.2窗體FrmPlaceMan包括的控件及屬性對象名屬性屬性值ConnectionStringDSN=TravelAdodc1PasswordSaUserNameSaRecordSourceSELECT*FROMPlaceVisibleFalseDataGrid1DataSourceAdodc1Cmd_AddCaption添加Cmd_ModiCaption修改Cmd_DelCaption刪除Cmd_CloseCaption關(guān)閉窗體FrmPlaceMan的布局如圖5。10所示。下面分析窗體FrmPlaceMan中幾種過程的代碼。1(Refresh_Place過程Refresh_Place()過程的功能是為Adodc1控件設置數(shù)據(jù)源,從而決定在DataGrid1控件顯示的數(shù)據(jù)內(nèi)容,對應的代碼如下:PrivateSubRefresh_Place()’設置數(shù)據(jù)源Adodc1.RecordSource="SELECTa.AreaName所在地區(qū),p.PnameAs景點名稱,"_+”p。ContactAs聯(lián)絡人,p。PhoneAs聯(lián)絡電話,p.AddressAs通信地址,"_+”p.PostcodeAs郵政編碼,p.Adult_PriceAs成人票價,"_+”p.Child_PriceAs小朋友票價,p.Input_timeAs錄入時間”_+"FROMPlacep,AreaaWHEREp.AreaId=a.AreaId"_+"Anda。AreaName=’”+Trim(ComboName.Text)+”’”Adodc1。RefreshEndSub由于在DataGrid1控件中要顯示的數(shù)據(jù)內(nèi)容聯(lián)絡到了數(shù)據(jù)庫中的兩個表,這就是在數(shù)據(jù)庫中所說地表的連接查詢.要選擇兩個不一樣的表,需要找到一種兩個表都相似的公共部分,這樣才能使兩個表建立起一定的關(guān)系。在本例中,Area表和Place表是通過AreaId字段來建立連接關(guān)系的.但我們在操作的時候好象并沒有對AreaId進行實際操作。這里用到了前面所說地在創(chuàng)立表的腳本文獻時,使用IDENTITY關(guān)鍵字定義表的標識列,IDENTITY屬性可以用于獲得自動增長的標識號.然后通過place。AreaId=MyArea.GetId(ComboName)語句把自動獲得的標識號賦值到place表中的AreaId字段中.這樣就可以使我們在實際應用中減少許多復雜地考慮過程,這種措施在背面的實例中也常常用到.2(Cmd_Modi_Click事件當顧客單擊“修改"按鈕時,將觸發(fā)Cmd_Modi_Click事件,對應的代碼如下:PrivateSubCmd_Del_Click()DimTmpIdAsLong’判斷與否選擇了要刪除的記錄IfAdodc1.Recordset.EOF=TrueThenMsgBox”請選擇記錄"ExitSubEndIf’確定目前選擇記錄的位置p=Adodc1。Recordset。AbsolutePosition’讀取目前行的景點編號,由于要以此編號做為刪除景點的關(guān)鍵字TmpId=MyPlace.GetId(Trim(Adodc1。Recordset.Fields(1)))’判斷目前記錄與否出目前線路中IfMylplace.PlaceInLine(TmpId)>0ThenMsgBox"此景點在線路中使用,不能刪除”ExitSubEndIf’確認刪除IfMsgBox("與否刪除目前行?",vbYesNo,”確認")=vbYesThenMyPlace.Delete(TmpId)Refresh_PlaceIfp-1〉0ThenAdodc1。Recordset.Movep-1EndIfEndIfEndSubPrivateSubCmd_Modi_Click()'判斷與否選擇了記錄IfAdodc1。Recordset。EOF=TrueThenMsgBox"請選擇記錄”ExitSubEndIf’確定目前選擇記錄的位置p=Adodc1。Recordset。AbsolutePosition'地區(qū)信息FrmPlaceEdit.OriAreaName=ComboName.TextFrmPlaceEdit。OriType=ComboType。ListIndex+1'景點編號FrmPlaceEdit。OriId=MyPlace.GetId(Adodc1。Recordset.Fields(1))’景點名稱FrmPlaceEdit.OriPlaceName=Trim(Adodc1.Recordset.Fields(1))FrmPlaceEdit.txtPlace=Trim(Adodc1。Recordset。Fields(1))'聯(lián)絡人FrmPlaceEdit。txtContact=Trim(Adodc1.Recordset。Fields(2))’聯(lián)絡電話FrmPlaceEdit.txtPhone=Trim(Adodc1.Recordset.Fields(3))'通信地址FrmPlaceEdit.txtAddress=Trim(Adodc1。Recordset.Fields(4))'郵政編碼FrmPlaceEdit.txtCode=Trim(Adodc1。Recordset。Fields(5))'成人報價FrmPlaceEdit。txtAdult=Trim(Adodc1。Recordset。Fields(6))’小朋友報價FrmPlaceEdit。txtChild=Val(Adodc1。Recordset.Fields(7))'把變量Modify設置為True,表達目前狀態(tài)為修改已經(jīng)有記錄FrmPlaceEdit。Modify=TrueFrmPlaceEdit.Show1'修改完畢,刷新顯示內(nèi)容Refresh_PlaceAdodc1.Recordset.MovepEndSub使用DataGrid控件顯示數(shù)據(jù)的一種常用的措施,它的特點是簡樸直觀,一目了然.DataGrid控件只能用來顯示數(shù)據(jù),數(shù)據(jù)源由ADOData控件提供??梢酝ㄟ^Adodc1.Recordeset。Fields(n)讀取成果集中的字段數(shù)據(jù),n是字段的序號,第1個字段的序號。為05。11賓館、餐廳、娛樂資源管理模塊設計由于賓館資源管理模塊、餐廳資源管理模塊設計、娛樂資源管理模塊設計這三個模塊設計的界面和模塊功能基本相似。這里就以娛樂資源管理模塊設計為例來闡明。娛樂資源管理模塊可以實現(xiàn)如下功能:?添加娛樂資源信息;?修改娛樂資源信息;?刪除娛樂資源信息;?查看娛樂資源信息。5.11。1設計娛樂資源編輯窗體創(chuàng)立一種新窗體,窗體名稱設置為FrmAmuseEdit.窗體FrmAmuseEdit的布局入圖5.11所示。圖5.11窗體FrmAmuseEdit的布局5。11.2設計娛樂項目管理窗體與景點、賓館、餐廳等旅游資源不一樣,娛樂資源包括諸多的娛樂項目。如保齡球、臺球、游泳等,因此需要有一種娛樂項目管理窗體。創(chuàng)立一種新窗體,窗體名稱設置為FrmAitemMan。窗體FrmAitemMan的布局如圖5。11.2所示。圖5。11。2窗體FrmAitemMan的布局下面分析窗體FrmAitemMan中幾種重要過程的代碼.1(公共變量在窗體FrmAitemMan中有一種公共變量OriAid,表達目前所編輯的娛樂項目所屬的娛樂廳編號。此變量必須在啟動窗體FrmAitemMan之前進行設置。2(Loaditem()Loaditem()過程的功能是根據(jù)變量OriAid指定的娛樂廳,讀取娛樂廳中包括的所有娛樂項目,并把這些娛樂項目顯示在列表中。對應的代碼如下:PrivateSubLoaditem()DimiAsInteger’清空娛樂項目列表List1.Clear'根據(jù)目前的娛樂廳編號,讀取所有的娛樂項目到數(shù)組ArrItem()中MyAitem.LoadItem_ByAmuse(OriAid)'依次把數(shù)組ArrItem()中的數(shù)據(jù)添加到娛樂項目列表List1中i=0DoWhileArrItem(i)<>""List1.AddItemArrItem(i)i=i+1LoopEndSub在程序設計中,常常需要把數(shù)據(jù)庫中滿足一定條件的數(shù)據(jù)讀取到組合框或列表框中,以便顧客選擇,可以使用兩種措施實現(xiàn)此功能.第一種措施使用DataCombo控件作為組合框,使用DataList控件作為列表框,把需要的數(shù)據(jù)讀取到ADOData控件中。將DataList控件的RowSource屬性設置為ADOData控件,ListField屬性設置為要讀取的字段,需要的數(shù)據(jù)就會自動出目前列表框中(組合框的措施也是同樣的)。這種措施比較以便,不需要編寫任何代碼。第二種措施可以使用ComboBox控件作為組合框,使用ListBox控件作為列表框。編寫程序?qū)⑿枰臄?shù)據(jù)從表中讀取到一種(或一組)全局數(shù)組中,然后再使用AddItem措施把數(shù)組中的元素依次添加到ComboBox或ListBBox控件中.這樣措施比較靈活,程序員可以控制程序的實現(xiàn)措施,增長某些擴展功能,同步全局數(shù)組中的數(shù)據(jù)不可以提供應其他部分的程序使用.1.List1_Click過程當顧客單擊娛樂項目列表時,將觸發(fā)List1_Click事件,對應的代碼如下:PrivateSubList1_click()’判斷與否選擇了娛樂項目IfList1.Text=”"ThenExitSubEndIf’把選擇的娛樂項目名稱顯示在右側(cè)的“娛樂項目"編輯框中txtItem=List1。Text'讀取娛樂項目編號,并根據(jù)此編號讀取娛樂項目的所有信息TmpId=MyAitem。GetId(OriAid,txtItem)MyAitem。GetInfo(TmpId)'把娛樂項目的價格賦值到txtPrice文本框中txtPrice=MyAitem。Price’把娛樂項目的編輯時間賦值到lblinput_time標簽中l(wèi)blInput_time=MyAitem。Input_timeEndSub5。11。3設計娛樂資源管理窗體創(chuàng)立一種新窗體,窗體名稱設置為FrmAmuseMan。窗體的布局如圖5。11。3所示圖5.11。3窗體FrmAmuseMan的布局當顧客單擊“娛樂項目”按鈕時,將觸發(fā)Cmd_Item_Click事件,對應的代碼如下:PrivateSubCmd_Item_Click()'要進入娛樂項目管理界面,必須首先選擇一種娛樂廳IfAdodc1.Recordset.EOF=TrueThenMsgBox"請選擇記錄”ExitSubEndIf'讀取選擇好的娛樂廳娛樂,并賦值到FrmAitemMan.OriAid中FrmAitemMan.OriAid=MyAmuse.GetId(Trim(Adodc1.Recordset.Fields(1)))’打開娛樂項目管理窗體FrmAitemMan.Show1EndSub5.12火車、飛機資源管理模塊設計火車資源管理模塊設計和飛機資源管理模塊設計的基本思想和構(gòu)造大體上相似,這里以飛機管理模塊設計為例來闡明.飛機資源管理模塊可以實現(xiàn)如下功能:?添加飛機資源信息;?修改飛機資源信息;?刪除飛機資源信息;?查看飛機資源信息.5.12.1設計飛機資源編輯窗體創(chuàng)立一種新窗體,窗體名稱設置為FrmPlaneEdit。窗體FrmPlaneEdit的布局如圖5。12所示。圖5。12窗體FrmPlaneEdit的布局窗體FrmPlaneEdit中增長了“航班周期“的處理,下面簡介一下FrmPlaneEdit中的主要代碼。1(Form_Load過程當FrmPlaneEdit窗體啟動時,將觸發(fā)Form_Load事件,對應的代碼如下:PrivateSubForm_Load()DimTmpCycleAsInteger’將航班周期字符串折分單個字符,并保留在變量TmpCycle中’然后根據(jù)變量TmpCycle的值,決定航班周期的顯示DoWhileOriCycle<〉""TmpCycle=Val(Left(OriCycle,1))OriCycle=Right(OriCycle,Len(OriCycle)—1)SelectCaseTmpCycleCase1Check1.Value=1Case2Check2。Value=1Case3Check3.Value=1Case4Check4。Value=1Case5Check5.Value=1Case6Check6。Value=1Case7Check7.Value=1EndSelectLoopEndSub2(Cmd_Ok_Click過程當顧客單擊“確定“按鈕時,將觸發(fā)Cmd_Ok_Click事件,對應的代碼如下:PrivateSubCmd_OK_Click()DimTmpCycleAsString’檢查顧客輸入數(shù)據(jù)的有效性IfTrim(txtAirCom)=”"ThenMsgBox"請輸入航空企業(yè)"txtAirCom.SetFocusExitSubEndIfIfTrim(txtSairport)="”ThenMsgBox”請輸入起飛機場”txtSairport。SetFocusExitSubEndIfIfTrim(txtEairport)="”ThenMsgBox”請輸入抵達機場”txtEairport。SetFocusExitSubEndIf’把顧客輸入的數(shù)據(jù)賦值到MyPlane對象的組員變量中WithMyPlane.AirCom=MakeStr(txtAirCom).Pno=MakeStr(txtPno).Sairport=MakeStr(txtSairport)。Eairport=MakeStr(txtEairport).Stime=MakeStr(txtStime).Etime=MakeStr(txtEtime).Price1=Val(txtPrice1).Price2=Val(txtPrice2)’TmpCycle用來保留飛機的航班周期字符串TmpCycle=””IfCheck1。Value=1ThenTmpCycle=TmpCycle+”1”EndIfIfCheck2.Value=1ThenTmpCycle=TmpCycle+"2”EndIfIfCheck3.Value=1ThenTmpCycle=TmpC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論