計算機軟件及應用太原市公交查詢管理系統(tǒng)_第1頁
計算機軟件及應用太原市公交查詢管理系統(tǒng)_第2頁
計算機軟件及應用太原市公交查詢管理系統(tǒng)_第3頁
計算機軟件及應用太原市公交查詢管理系統(tǒng)_第4頁
計算機軟件及應用太原市公交查詢管理系統(tǒng)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄第一章 系統(tǒng)概述11.1建立系統(tǒng)的必要性11.2可行性分析11.3開發(fā)環(huán)境2第二章 系統(tǒng)需求分析32.1 系統(tǒng)需求32.2 功能需求32.3 組織結構42.4業(yè)務流程圖42.5數(shù)據(jù)流程圖52.6數(shù)據(jù)字典6第三章 系統(tǒng)設計部分83.1系統(tǒng)結構 83.2系統(tǒng)功能設計83.3系統(tǒng)設計方案 93.4代碼設計93.5輸入/輸出設計93.6數(shù)據(jù)庫設計·10第四章 系統(tǒng)實現(xiàn)174.1 系統(tǒng)功能截圖 174.2源代碼17第五章 系統(tǒng)調試與測試29 5.1調試29 5.2測試29結束語31參考文獻32第一章 系統(tǒng)概述1.1建立系統(tǒng)的必要性時代的進步,經(jīng)濟的增長,伴隨著人類發(fā)展的進程,生活中的各種信

2、息也逐漸數(shù)字化、清晰化。公交車作為現(xiàn)代城市生活中一種重要的交通工具,其數(shù)量增多,車型也不再單一,雇用的司機增多,這樣使得公交車公司的車輛信息管理復雜化。在這樣的背景下,提出了計算機管理的公交車管理系統(tǒng),輔助公交車運營公司對車輛進行管理,實現(xiàn)公交車、公交線路和司機管理科學化,更合理的利用資源。 城市公交是專門服務于市民出行的客運企業(yè)。它是城市社會和經(jīng)濟活動的重要組成部分。伴隨著國民經(jīng)濟和城市建設的快速發(fā)展,城市經(jīng)濟的繁榮,人口的增加,城市必須解決好人們出行的需求。城市公交直接關系著城市的經(jīng)濟發(fā)展和居民生活,對城市經(jīng)濟具有全局性、先導性的影響,城市公交以其方便、快捷、容量大而成為城市交通的主體。但

3、是隨著公交系統(tǒng)的龐大,人們很難得到準確的公交信息,這樣給一些人的出行就帶來了不便。因此,急需一個方便、快捷的公交信息查詢方式,本系統(tǒng)通過瀏覽器查詢,實現(xiàn)中心控制、自動更新、更多的查詢方式等等更多更強大的功能。1.2可行性分析交通信息科技課程設計是數(shù)據(jù)庫課程設計內容之一,它是對交通信息技術課程的實際應用,通過該課程設計,使學生加深對課堂教學內容的理解,掌握信息化技術在城市交通中的應用和開發(fā),增強學生分析和解決實際交通能力的問題,為在交通智能系統(tǒng)開發(fā)中應用相關知識解決實際問題打下基礎。當前我國城市公交乘客信息系統(tǒng)的發(fā)展處于一個較落后的水平,廣大乘客可以獲得信息的方式很少,需要大力發(fā)展我國的城市公交

4、乘客信息系統(tǒng),本設計以某城市公交系統(tǒng)為開發(fā)對象,基于數(shù)據(jù)庫查詢技術,完成一個城市公交系統(tǒng)的出行線路查詢軟件。該系統(tǒng)主要根據(jù)實際的需求,以需求分析、系統(tǒng)的設計目標,并且重點進行系統(tǒng)功能模塊的詳細設計和實現(xiàn),采用了VisualStudio.NET2003開發(fā)平臺和SQLServer2000數(shù)據(jù)庫,實現(xiàn)了車輛信息管理、司機信息管理、線路信息管理和車輛分配線路管理等功能。在針對數(shù)據(jù)操作方面,主要通過存儲過程的方式實現(xiàn)數(shù)據(jù)的添加、刪除和查詢等操作。通過系統(tǒng)測試,解決了公交車輛管理系統(tǒng)主要問題。本系統(tǒng)的核心是對選擇好的車次進行路線的查詢,或者輸入所要查詢的車站名,點擊“查詢”按鈕,查詢所有含有該站的車次及

5、相應的??空?。此處既可以“精確查詢”也可以是“模糊查詢”,“模糊查詢”主要方便那些對站名不是很清楚,但知道其中的一部分的乘客,系統(tǒng)可以幫助他們快速的查出。1.3開發(fā)環(huán)境操作系統(tǒng):Windows7開發(fā)軟件:MicrosoftVisualStudio.NET2003 數(shù)據(jù)庫:MicrosoftSQLServer2000第二章系統(tǒng)需求分析2.1 系統(tǒng)需求我國城市公交乘客信息系統(tǒng)的發(fā)展處于一個落后的水平,廣大乘客可以獲得信息的方式很少,公交信息的完整性和準確性得不到保證,而且還沒有專門的機構負責信息的發(fā)布和管理。出于這個目的,在老師的指導下,我設計了這個城市公交線路查詢系統(tǒng)。在對公交乘客出行心理特征進

6、行分析的基礎上,考慮乘客選擇公交線路決策的因素,進行程序關鍵部分的框架設計。公交車管理系統(tǒng)是一個協(xié)助公交車運營商各單位對車輛進行全面的管理。在此之前,對于線路與車輛的管理采用的方式幾乎都是手工管理,其中的弊端顯而易見,即容易造成檔案資料的遺失,控制不集中,管理不規(guī)范等等問題。因此,在管理系統(tǒng)的實現(xiàn)上應該滿足以下需求:1.為保障系統(tǒng)的穩(wěn)定性,對于可能發(fā)生問題的輸入要進行檢驗,同時要給出合理的提示信息。2.在管理上滿足公交車管理職能的基本需求,能夠方便的進行司機信息管理、車輛信息管理、線路信息管理和車輛與線路的分配管理。3.為公交車管理系統(tǒng)提供數(shù)據(jù)支持。4.與傳統(tǒng)的手工管理相比,應該添加用戶權限的

7、管理機制。保證系統(tǒng)安全性。 2.2 功能需求 根據(jù)對上述管理系統(tǒng)的業(yè)務流程、要求以及所要實現(xiàn)的目標,可以擬出以下的需求目標: 1、人員管理:有關司機各種信息的輸入、查詢和修改,包括司機姓名、性別、出生日期、家庭住址、初次領證時間、執(zhí)照號碼、準駕車型、有效期起始時間、有效期結束時間等。2、車輛管理:車輛信息的輸入、查詢和修改,包括車號、類型、車主、發(fā)動機號、車架號、廠牌型號、車輛總質量、核定載客、登記時間、發(fā)證時間、顏色等。3、線路管理:線路信息的錄入、修改和查詢,包括班車號、司機姓名、首發(fā)班車時間、末班車時間、運行公里數(shù)、耗油量等。4、車輛分配線路管理:一個城市的運營線路可能復雜且數(shù)據(jù)量極大,

8、系統(tǒng)用戶可以進行線路的規(guī)劃管理。實現(xiàn)對車輛和線路分配的管理,包括添加、修改和刪除操作。5、車輛與司機的分配管理:為了維護好車輛,要求司機做好車輛的日程維護工作,落實具體責任。2.3 組織結構公交管理系統(tǒng)的整體結構分為公交管理信息前臺和公交管理信息后臺,管理信息前臺主要負責用戶可見系統(tǒng)的管理,包括會員登錄、會員信息維護、會員服務、乘車信息查詢、信息查詢、用戶投訴和友情鏈接。管理信息后臺主要通過系統(tǒng)工作人員來實現(xiàn),進行系統(tǒng)維護、服務維護和系統(tǒng)維護等。公交管理信息前臺公交管理信息后臺會員登錄會員信息維護會員服務乘車信息查詢信息查詢用戶投訴友情鏈接線路維護服務維護系統(tǒng)維護公交管理系統(tǒng)圖2.1公交查詢管

9、理系統(tǒng)組織結構2.4業(yè)務流程圖根據(jù)系統(tǒng)的需求分析,得到本系統(tǒng)的功能要求如下:1.車輛信息的設置管理:系統(tǒng)合法用戶可以根據(jù)公司具體情況設置關于車輛的具體資料檔案。2.權限管理:為了很好的保證系統(tǒng)的安全性,公司相關負責人可以根據(jù)實際情況添加和刪除系統(tǒng)用戶。3.線路檔案管理:一個城市的運營線路可能復雜且數(shù)據(jù)量極大,系統(tǒng)用戶可以進行線路的規(guī)劃管理。4.站點管理:為了精確地為乘客提供便利,以及便于公交管理處工作人員的管理,對站點的分配進行規(guī)劃。5.站點單位管理:實現(xiàn)公交內部站點單位的各個方面的管理。圖2.2 公交查詢管理系統(tǒng)業(yè)務流程圖2.5數(shù)據(jù)流程圖從公交車系統(tǒng)總部查詢司機檔案和車輛檔案時需要通過檔案科

10、,其檔案科儲存所有司機和車輛的檔案。公交車查詢前臺工作是通過管理處實現(xiàn),管理處主要負責車輛運行線路、站點管理和車輛與站點單位管理。最后系統(tǒng)工作人員定時需要對系統(tǒng)進行安全維護。 司機檔案公交車系統(tǒng)總部檔案處理 系統(tǒng)權限檔案安全保護 車輛檔案線路信息資料 車輛運行線路系統(tǒng)內部設置 站點單位管理 站點管理圖2.3 公交查詢管理系統(tǒng)數(shù)據(jù)流程圖2.6數(shù)據(jù)字典(1)登錄表名字:登錄查詢表別名:描述:登錄名及密碼定義:字符位置:公交車系統(tǒng)總部(2)司機檔案表名字:司機名別名:描述:對司機檔案的查詢定義:字符、字母位置:檔案科(3)車輛檔案表名字:車輛檔案表別名:描述:對車輛的出行狀況及時間進行查詢定義:字符

11、、數(shù)字位置:檔案科(4)車輛運行線路表名字:車輛運行線路表別名:描述:對指定的車輛進行線路查詢定義:字符、字母位置:管理處(5)車輛設置管理表名字:車輛設置管理表別名:描述:對車輛進行管理及其分配定義:字符、字母位置:管理處(6)車輛與司機分配表名字:車輛與司機分配表別名:描述:對司機與車輛的分配管理定義:字符、字母位置:管理處第三章 系統(tǒng)設計3.1系統(tǒng)結構系統(tǒng)開發(fā)應用的是C/S 結構,C/S結構軟件(即客戶機/服務器模式)分為客戶機和服務器兩層,客戶機不是毫無運算能力的輸入、輸出設備,而是具有了一定的數(shù)據(jù)處理和數(shù)據(jù)存儲能力,通過把應用軟件的計算和數(shù)據(jù)合理地分配在客戶機和服務器兩端,可以有效地

12、降低網(wǎng)絡通信量和服務器運算量。由于服務器連接個數(shù)和數(shù)據(jù)通信量的限制,這種結構的軟件適于在用戶數(shù)目不多的局域網(wǎng)內使用。國內目前的大部分ERP(財務)軟件產(chǎn)品即屬于此類結構。目前大多數(shù)應用軟件系統(tǒng)都是Client/Server形式的兩層結構,由于現(xiàn)在的軟件應用系統(tǒng)正在向分布式的Web應用發(fā)展,Web和Client/Server 應用都可以進行同樣的業(yè)務處理,應用不同的模塊共享邏輯組件;因此,內部的和外部的用戶都可以訪問新的和現(xiàn)有的應用系統(tǒng),通過現(xiàn)有應用系統(tǒng)中的邏輯可以擴展出新的應用系統(tǒng)。這也就是目前應用系統(tǒng)的發(fā)展方向。傳統(tǒng)的CS體系結構雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應

13、用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結構的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件, 加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應百臺電腦以上局域網(wǎng)用戶同時使用。而且代價高,效率低。3.2系統(tǒng)功能設計公交查詢系統(tǒng)的應用背景為:方便市民搭乘公交車出行、實時查詢公交信息、及時更新查詢數(shù)據(jù)。因此該系統(tǒng)主要功能劃分模塊如下:(1)查詢系統(tǒng)模塊該模塊實現(xiàn)公交查詢功能,可實現(xiàn)按線路和站點兩種查詢方式。(2)基本信息錄入、更新模塊信息更新:系統(tǒng)允許管理員級別的用戶對數(shù)據(jù)進行錄入、修改且存盤操作。信息統(tǒng)計:系統(tǒng)允許管理員級別的用戶對數(shù)據(jù)

14、進行統(tǒng)計、編輯、刪除的操作。保證現(xiàn)庫的真實性和實時性。(3)打印輸出系統(tǒng)可以將用戶查詢到的內容動態(tài)生成報表,并打印輸出。查詢系統(tǒng)基本信息錄入、更新打印輸出線路查詢站點查詢信息更新信息統(tǒng)計生成報表打印輸出公交查詢管理子系統(tǒng)圖3.1 公交查詢管理系統(tǒng)功能模塊圖3.3系統(tǒng)設計方案公交車管理系統(tǒng)是一個小型的數(shù)據(jù)庫系統(tǒng)。所以這里我們選擇SQL Server 數(shù)據(jù)庫和JAVA技術進行開發(fā)。Microsoft SQL Server 是一種關系型數(shù)據(jù)庫管理系統(tǒng)。首先建立SQL Server數(shù)據(jù)庫中的線路表其中包括車次編號、上行線、下行線和線路類型4中屬性列,車次信息表其中包括車次編號、所屬公司、票價和運營時間

15、4種屬性,站點信息表包括站點名和臨近建筑物2種屬性,管理員信息表包括用戶名和密碼兩種屬性。實現(xiàn)用戶的使用和管理員的管理設計。然后對應填入數(shù)據(jù)并且通過觸發(fā)器實現(xiàn)剩余時間等于計劃時間減完成時間的功能。最后,在JAVA中編入程序實現(xiàn)要求。3.4代碼設計該系統(tǒng)所涉及的代碼,一方面體現(xiàn)了系統(tǒng)內部的管理層次,另一方面也便于系統(tǒng)輸入和輸出操作。在系統(tǒng)運行過程中,用戶查詢公交線路時,只需登錄界面后在線路和站名中輸入相關信息,系統(tǒng)便自動將其信息調出來,用戶可以隨時為滿足自己的需求進行系統(tǒng)查詢。3.5輸入/輸出設計公交查詢管理系統(tǒng)是一種服務于大眾的需求系統(tǒng),在系統(tǒng)的輸入、輸出設計上遵循的是滿足用戶需求的同時也要便

16、于使用。輸入界面的窗口要考慮到屏幕格式以及降低數(shù)據(jù)輸入的錯誤率,為此在程序中加入了對輸入數(shù)據(jù)的校驗和判斷等功能,如在輸入界面時只需輸入線路或站名即可,系統(tǒng)可根據(jù)所輸入的信息進行系統(tǒng)查詢,得到所需信息或與之相近的信息內容進行輸出。用戶在輸入和輸出界面中可根據(jù)自己的需求隨時通過系統(tǒng)聯(lián)機查詢。下面為輸入界面:圖3.2 輸入界面3.6數(shù)據(jù)庫設計數(shù)據(jù)庫技術作為數(shù)據(jù)管理技術,是計算軟件領域的一個重要分支,產(chǎn)生于60年代末?,F(xiàn)已形成相當規(guī)模的理論體系和實用技術。優(yōu)秀的數(shù)據(jù)庫設計是成功的基石。萬丈高樓平地起,數(shù)據(jù)庫設計如同高樓的基石,是開發(fā)高品質應用的前提。本任務主要完成該系統(tǒng)的后臺數(shù)據(jù)庫部分,研究的內容主要

17、包括以下幾部分:1、要求查閱資料,通過實踐完成以上工作。2、要求從系統(tǒng)角度出發(fā)整體分析和構建應用系統(tǒng),充分利用開發(fā)環(huán)境提供的開發(fā)技術,開發(fā)出界面友好、功能實用的應用系統(tǒng)。3、采用軟件工程的方法完成本設計,培養(yǎng)軟件開發(fā)綜合能力、軟件系統(tǒng)架構設計能力和軟件過程實施能力。4、通過開發(fā)系統(tǒng),了解公交客運公司管理等相關知識3.6.1概念設計概念設計的目標是產(chǎn)生反映城市公交查詢系統(tǒng)需求的數(shù)據(jù)庫概念結構,即概念模式。概念模式是獨立于數(shù)據(jù)庫邏輯結構,獨立于數(shù)據(jù)庫的DBMS。1)E-R模型E-R模型是對現(xiàn)實世界的一種抽象,它的主要成分是實體、聯(lián)系和屬性,使用這三種成分,我們可以建立許多應用環(huán)境的ER模型。2)E

18、-R模型的操作在利用ER模型進行概念設計的過程中,常常需要對ER圖進行種種變換,這些變換又成為ER模型的操作,包括實體類型、聯(lián)系類型和屬性的分類、合并和增刪等等。3)利用ER方法的數(shù)據(jù)庫概念設計利用ER方法進行數(shù)據(jù)庫概念設計,可以分成三步進行:首先設計局部ER模式,然后把各局部ER模式綜合成一個全局ER模式,最后對全局ER模式進行優(yōu)化,得到最終的ER模式,即概念模式。設計局部的ER模式通常,一個數(shù)據(jù)庫系統(tǒng)都是為各個不同用戶服務的,各個用戶對數(shù)據(jù)的觀點可能不一樣,信息需求也可能不同。在設計數(shù)據(jù)庫概念結構時,為了更好的模擬現(xiàn)實世界,一個有效地策略是“分而治之”,即先分別考慮各個用戶的信息需求,形成

19、局部概念結構,然后再綜合全局結構,在ER方法中,局部概念結構又稱為局部ER模式。4)聯(lián)系定義E-R模型的“聯(lián)系”用于刻畫實體之間的關聯(lián),一種完整的方式是對局部結構中任意兩個實體類型,一句需求分析的結果,考察局部結構中任意兩個實體類型之間是否存在聯(lián)系,若有聯(lián)系,進一步確認是1:N、N:M還是1:1等。還要考察一個實體類型內部是否存在聯(lián)系,兩個實體類型之間是否存在聯(lián)系,多個實體類型之間是否存在聯(lián)系,等等。在公交管理系統(tǒng)的數(shù)據(jù)庫設計中,先進行概念模型的建立:站點作為公交查詢管理的一個實體,它擁有站點編號、站點類型、站點名稱這些屬性。它與另一個實體“線路”存在著線路站點對應的聯(lián)系,實體“線路”擁有始發(fā)

20、時間、終發(fā)時間、線路編號、備注這些屬性。在此概念模型中,實體“車次”和“站點”是多對多的聯(lián)系。下面就是描述關系的E-R圖:圖3.3公交查詢管理系統(tǒng)E-R圖5)設計全局ER模式所有全局ER模式都設計好了后,接下來就是把它們綜合成單一的全局概念結構,全局概念結構不僅要支持所有局部ER模式,而且必須合理地表示一個完整的,一致的數(shù)據(jù)庫概念結構。(1)確定公共實體類型為了給多個局部ER模式的合并提供開始合并的基礎,首先要確定各局部結構中的公共實體類型,在這一步中我們僅根據(jù)實體類型名認定公共實體類型。一般把同名實體類型作為實體公共類型的一類候選,把具有相同鍵的實體類型作為公共實體類型的另一候選。(2)局部

21、ER模式的合并合并的原則是:首先進行兩兩合并,先合并那些現(xiàn)實世界中有聯(lián)系的局部結構,合并從公共實體類型開始,最后再加入獨立的局部結構。(3)消除沖突沖突分為三類:屬性沖突、結構沖突、命名沖突。設計全局ER模式的目的不在于把若干局部ER模式形式上合并為一個ER模式,而在于消除沖突,使之成為能夠被所有用戶共同理解和接受的同一概念模型。(4)全局ER模型的優(yōu)化在得到全局ER模式后,為了提高數(shù)據(jù)庫系統(tǒng)的效率,還應進一步依據(jù)處理需求對ER模式進行優(yōu)化,一個好的全局ER模式,能夠準確、全面的反映用戶功能需求外,還應滿足下列條件:實體類型的個數(shù)要盡量的少,實體類型所含的屬性個數(shù)要盡量的減少,實體類型間聯(lián)系無

22、冗余。3.6.2 邏輯設計概念結構是獨立于任何一種數(shù)據(jù)模型的信息結構。邏輯結構設計的任務就是把概念結構設計好的基本ER圖轉換為與DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結構。邏輯結構一般分為3步進行:(1)將概念結構轉換為一般的關系、網(wǎng)狀、層次模型;(2)將轉化來的關系、網(wǎng)狀、層次模型向特定DBMS支持下的數(shù)據(jù)模型轉換;(3)對數(shù)據(jù)模型進行優(yōu)化。關系模式的邏輯結構是一組關系模式的集合。ER圖則是由實體型、實體的屬性和實體型之間的聯(lián)系3個要素組成的。所以將ER圖轉換為關系模型實際上就是將實體型、實體的屬性和實體型之間的聯(lián)系轉換為關系模式。實體型之間有以下不同的情況:1. 一個1:1聯(lián)系可以轉換為

23、一個獨立的關系模式,也可以與任意一端對應的關系模式合并。如果轉換為一個獨立的關系模式,則與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性,每個實體的碼均是該關系的候選碼。如果與某一端實體對應得關系模式合并,則需要在該關系模式的屬性中加入另一個關系模式的碼和聯(lián)系本身的屬性。2. 一個1:N聯(lián)系可以轉化為一個獨立的關系模式,也可以與N端對應分關系模式合并。如果轉化為一個獨立的關系模式,則與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性,而關系的碼為N端實體的碼。3. 一個M:N聯(lián)系轉換為一個關系模式。與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉化為關系的屬性,各實體的碼組

24、成關系的碼或關系碼的一部分。4. 3個或3個以上實體間的一個多元聯(lián)系可以轉換為一個關系模式。與該多元聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性,各實體的碼組成關系的碼或關系碼的一部分。5. 具有相同碼的關系模式可合并。一個實體型轉換為一個關系模式。實體的屬性就是關系的屬性,實體的碼就是關系的碼。下面把ER圖轉換為關系模型。關系的碼用下橫線標出:站點(站點編號,站點名稱,站點類型)線路(線路編號,始發(fā)時間,終發(fā)時間,備注)站點單位(單位編號,單位名稱)管理員(管理員名稱,姓名,年齡)檔案(檔案編號,檔案類型)3.6.3規(guī)范化一個低一級范式的關系模式,通過模式分解可以轉化為若干個高一

25、級范式的關系模式的集合,這種過程叫做規(guī)范化規(guī)范化的基本思想是逐步消除數(shù)據(jù)依賴中不合適的部分,使模式中的各關系模式達到某種程度的“分離”,即“一事一地”的模式設計原則。讓一個關系描述一個概念、一個實體或者實體間的一種聯(lián)系。若多于一個概念就把它“分離”出去。因此所謂規(guī)范化實質上是概念的單一化。根據(jù)邏輯設計中的關系模式:1. 站點S-T-A(站點編號,站點名稱,站點類型)其中由站點編號能得到站點名稱和站點類型,站點的碼是站點編號。函數(shù)依賴有:(站點編號,站點名稱) P 站點類型站點編號 F 站點名稱站點編號 F 站點類型如圖 3.4所示。站點編號站點類型站點名稱圖3.4S-T-A中的函數(shù)依賴消除部分

26、函數(shù)依賴將關系模式S-T-A分解為兩個關系模式:ST(站點編號,站點類型)SA(站點編號,站點名稱)關系模式ST與SA中的屬性間的函數(shù)依賴可以用圖 3.5和圖 3.6表示如下。ST: 站點編號站點名稱圖3.5ST中的函數(shù)依賴SA:站點類型站點編號圖 3.6 SA中的函數(shù)依賴2. 線路L-I-N(線路編號,始發(fā)時間,終發(fā)時間,備注)其中線路編號能得出始發(fā)時間、終發(fā)時間和備注,線路的碼是線路編號。函數(shù)依賴有:線路編號 F (始發(fā)時間,終發(fā)時間,備注)如圖 3.7所示。始發(fā)時間線路編號終發(fā)時間備注圖3.7L-I-N中的函數(shù)依賴3.站點單位S-T-D(單位編號,單位名稱)站點單位的碼是單位編號,函數(shù)依

27、賴有:單位編號 F (單位名稱)如圖3.8所示。單位編號單位名稱圖3.8 S-T-D中的函數(shù)依賴4.管理員A-M-T(管理員職稱,姓名,年齡)實體管理員的碼是管理員職稱,由管理員職稱能得到姓名和年齡,因為存在重名的誤差,所以由姓名不能得出年齡。函數(shù)依賴有:管理員職稱 F (姓名,年齡)姓名如圖3.9所示。管理員職稱年齡圖3.9A-M-T中的函數(shù)依賴5.檔案R-C-D(檔案編號,檔案類型)實體檔案的碼是檔案編號,函數(shù)依賴有:檔案編號 F (檔案類型)如圖3.10所示:檔案類型檔案編號圖3.10 R-C-D中的函數(shù)依賴第四章系統(tǒng)實現(xiàn)4.1 系統(tǒng)功能截圖系統(tǒng)主頁面功能實現(xiàn)如圖4.1所示。圖4.1 公

28、交查詢系統(tǒng)主頁面站點查詢功能頁面如圖4.2所示。圖4.2 站點查詢功能頁面4.2源代碼公交查詢系統(tǒng)功能代碼如下所示:#include<iostream>#include<fstream>#include<cstring>using namespace std;int count;int M40004000;class BinaryTree;class BinaryTreeNodefriend BinaryTree;public:BinaryTreeNode()LeftChild=RightChild=0;BinaryTreeNode(const char *

29、e)strcpy(data,e);LeftChild=RightChild=0;BinaryTreeNode(const char *e,BinaryTreeNode *l,BinaryTreeNode *r)strcpy(data,e);LeftChild=l;RightChild=r;private:char data5;BinaryTreeNode *LeftChild,*RightChild;/左子樹,右子樹;/二叉樹類定義class BinaryTreepublic:BinaryTree()root=0;BinaryTree()Delete(); /刪除結點void Delete()

30、PostOrder(Free,root);root=0;int Height()constreturn Height(root);int Size()count=0;PreOrder(Add1,root);return count;BinaryTreeNode* Insert(char *x);BinaryTreeNode* Search(const char *x) const;private:BinaryTreeNode* root;/樹根void PreOrder(void(*Visit)(BinaryTreeNode* u),BinaryTreeNode* t);void PostOr

31、der(void(*Visit)(BinaryTreeNode* u),BinaryTreeNode* t);static void Free(BinaryTreeNode* t)delete t;static void Output(BinaryTreeNode* t)cout<<t->data<<' 'static void Add1(BinaryTreeNode* t)count+;int Height(BinaryTreeNode* t)const;/前序遍歷void BinaryTree:PreOrder(void(*Visit)(Bin

32、aryTreeNode* u),BinaryTreeNode* t)if(t)Visit(t);PreOrder(Visit,t->LeftChild);PreOrder(Visit,t->RightChild);/后序遍歷void BinaryTree:PostOrder(void(*Visit)(BinaryTreeNode* u),BinaryTreeNode* t)if(t)PostOrder(Visit,t->LeftChild);PostOrder(Visit,t->RightChild);Visit(t);int BinaryTree:Height(Bin

33、aryTreeNode* t)constif(!t) return 0;int hl=Height(t->LeftChild);/左子樹的高度int hr=Height(t->RightChild);/右子樹的高度if(hl>hr) return +hl;else return +hr;BinaryTreeNode* BinaryTree:Insert(char *x)BinaryTreeNode *p=root,*pp=0;while(p)pp=p;if(strcmp(p->data,x)>0)p=p->LeftChild;else if(strcmp(p

34、->data,x)<0)p=p->RightChild;else return 0;BinaryTreeNode *r=new BinaryTreeNode(x);if(root)if(strcmp(x,pp->data)<0)pp->LeftChild=r;elsepp->RightChild=r;else root=r;return r;BinaryTreeNode* BinaryTree:Search(const char *x) constBinaryTreeNode *p=root;while(p)if(strcmp(x,p->data

35、)<0)p=p->LeftChild;else if(strcmp(x,p->data)>0)p=p->RightChild;else cout<<p->data<<endl;break;return p;void main()BinaryTree Bus_Stop;char Stop5;ifstream fin("公汽線路信息.txt");while(fin)if(fin.get()='S')for(int i=0;i<4;i+)fin>>Stopi;Stop4=0;Bus_St

36、op.Insert(Stop);cout<<Bus_Stop.Size()<<endl;Bus_Stop.Search("3958");/注:此次公交線路優(yōu)化查詢系統(tǒng)中的輸入文件名為“公汽線路信息.txt”#include<iostream>#include<fstream>#include<cstring>using namespace std;const int MAX=100000000; /無窮大const int S_TO_T=20; /用戶自定義的轉化參數(shù),即乘客愿意以一塊錢換取20分鐘const in

37、t T1=3;const int N=524;const int M=4000;const int TB1=3; /shijianconst int TB2=5;const int Count=3957;const int BSB=13;const int SS=5; const int SB=7;const BN=520;bool Bus_LineN=0; int BusMM2; /0: data 1: lineint busline;void ReNew(const int &start,const int &end,const int &line,const in

38、t &d,bool flag)int min;if(flagline)min=(d+19)/20*S_TO_T+d*T1;elsemin=d*T1+S_TO_T;if(!Busstartend0)Busstartend0=min;Busstartend1=line;return;if(min<Busstartend0)Busstartend0=min;Busstartend1=line;void ReNew1(const int &start,const int &end,const int &line)int min=BSB;if(!Busstarten

39、d0)Busstartend0=min;Busstartend1=line;return;if(min<Busstartend0)Busstartend0=min;Busstartend1=line;void ReNew2(const int &start,const int &end,const int &line,const int &d)int min;min=d/2*SS+3*S_TO_T;if(!Busstartend0)Busstartend0=min;Busstartend1=line;return;if(min<Busstartend

40、0)Busstartend0=min;Busstartend1=line;void ReNew3(const int &start,const int &end,const int &line)int min=SB;if(!Busstartend0)Busstartend0=min;Busstartend1=line;return;if(min<Busstartend0)Busstartend0=min;Busstartend1=line;void ReNew4(const int &start,const int &end,const int &

41、amp;line)int min=BS;if(!Busstartend0)Busstartend0=min;Busstartend1=line;return;if(min<Busstartend0)Busstartend0=min;Busstartend1=line;int Better1(const int &start,const int &end,int &path)int min=MAX;int temp,key;for(int i=1;i<M;i+)if(Busstarti0&&Busiend0)temp=Busstarti0+Bu

42、siend0;if(min>temp)key=i;min=temp;path=key;return min;int Better2(const int &start,const int &end,int path)int Min=MAX;int key;for(int i=1;i<M;i+)for(int j=1;j<M;j+)if(Busstarti0&&Busij0&&Busjend0)key=Busstarti0+Busij0+Busjend0; if(Min>key)Min=key;path0=i;path1=j;

43、return Min;int Better3(const int &start,const int &end,int path)int Min=MAX;int key;for(int i=1;i<M;i+)for(int j=1;j<M;j+)for(int k=1;k<M;k+)if(Busstarti0&&Busij0&&Busjk0&&Buskend0)key=Busstarti0+Busij0+Busjk0+Buskend0;if(Min>key)cout<<key<<

44、9; 'Min=key;path0=i;path1=j;path2=k;return Min;void main()int i,k;for(i=1;i<M;i+)for(int j=1;j<M;j+)for(int l=0;l<2;l+)Busijl=0; /初始化ifstream fin("公汽線路信息.txt");bool flag=0;bool round=false;char s,c;char Round3; /標志環(huán)行char line100;int start;int end;int num70;/*信息數(shù)據(jù)輸入開始!* * */whi

45、le(fin)if(s=fin.get()='L')if(round)for(i=2;i<k;i+)for(int j=1;j<i;j+)ReNew(numi,numj,busline,k-i+j,Bus_Line);round=false;fin>>busline;fin.get();fin.getline(line,100);if(strcmp(line,"分段計價。")=0)Bus_Linebusline=1;if(c=fin.get()='S')flag=1;fin>>start;elseRound

46、0=c;fin>>Round1;Round2=0;if(strcmp(Round,"環(huán)")=0)round=true;flag=0;while(fin.get()!='S');fin>>start;k=1;elseif(s='S')fin>>end;if(start=end)k=0;numk=start;if(flag)for(i=1;i<=k;i+) ReNew(numi,end,busline,k-i+1,Bus_Line); ReNew(end,numi,busline,k-i+1,Bus_Li

47、ne);elseif(Round)for(i=1;i<=k;i+)ReNew(numi,end,busline,k-i+1,Bus_Line);elsefor(i=1;i<=k;i+) ReNew(numi,end,busline,k-i+1,Bus_Line);start=end;k+;while(fin1)if(s=fin1.get()='D')fin1>>busline;busline+=Count;while(fin1.get()!='S'); fin1>>start; k=1;ReNew3(busline,start

48、,0);ReNew4(start,busline,0);elseif(s='S')fin1>>end;numk=start;for(i=1;i<=k;i+)ReNew1(numi,end,busline);ReNew1(end,numi,busline);start=end;k+; ReNew3(busline,start,0);ReNew4(start,busline,0);while(fin2)round=false;if(s=fin2.get()='T')fin2>>busline;if(busline=2)round=tru

49、e;busline+=BN;while(fin2.get()!='D'); fin2>>start; start+=Count; k=1;elseif(s='D')fin2>>end;end+=Count;numk=start;if(round)for(i=1;i<=k;i+)ReNew2(numi,end,busline,k-i+1);else for(i=1;i<=k;i+) ReNew2(numi,end,busline,k-i+1); ReNew2(end,numi,busline,k-i+1); start=end;

50、k+;for(i=2;i<k;i+)for(int j=1;j<i;j+)ReNew2(numi,numj,busline,k-i+j);/*成功獲取數(shù)據(jù)!* */cout<<Bus335917461<<endl;cout<<Bus174617841<<endl;cout<<Bus178418281<<endl;cout<<"Enter two station:"<<endl;int key,path5;cin>>start>>end;while(start&&end)cout<<Better1(start,end,key)<<endl;cout<<key<<endl;cout<<Busstartkey1<<

溫馨提示

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

評論

0/150

提交評論