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

下載本文檔

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

文檔簡介

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 組織結(jié)構(gòu)42.4業(yè)務(wù)流程圖42.5數(shù)據(jù)流程圖52.6數(shù)據(jù)字典6第三章 系統(tǒng)設(shè)計(jì)部分83.1系統(tǒng)結(jié)構(gòu) 83.2系統(tǒng)功能設(shè)計(jì)83.3系統(tǒng)設(shè)計(jì)方案 93.4代碼設(shè)計(jì)93.5輸入/輸出設(shè)計(jì)93.6數(shù)據(jù)庫設(shè)計(jì)·10第四章 系統(tǒng)實(shí)現(xiàn)174.1 系統(tǒng)功能截圖 174.2源代碼17第五章 系統(tǒng)調(diào)試與測試29 5.1調(diào)試29 5.2測試29結(jié)束語31參考文獻(xiàn)32第一章 系統(tǒng)概述1.1建立系統(tǒng)的必要性時(shí)代的進(jìn)步,經(jīng)濟(jì)的增長,伴隨著人類發(fā)展的進(jìn)程,生活中的各種信

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

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

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

5、相應(yīng)的??空?。此處既可以“精確查詢”也可以是“模糊查詢”,“模糊查詢”主要方便那些對(duì)站名不是很清楚,但知道其中的一部分的乘客,系統(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ā)展處于一個(gè)落后的水平,廣大乘客可以獲得信息的方式很少,公交信息的完整性和準(zhǔn)確性得不到保證,而且還沒有專門的機(jī)構(gòu)負(fù)責(zé)信息的發(fā)布和管理。出于這個(gè)目的,在老師的指導(dǎo)下,我設(shè)計(jì)了這個(gè)城市公交線路查詢系統(tǒng)。在對(duì)公交乘客出行心理特征進(jìn)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

28、交查詢系統(tǒng)主頁面站點(diǎn)查詢功能頁面如圖4.2所示。圖4.2 站點(diǎn)查詢功能頁面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(); /刪除結(jié)點(diǎn)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; /用戶自定義的轉(zhuǎn)化參數(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; /標(biāo)志環(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,"分段計(jì)價(jià)。")=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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論