[摘要]為了科學(xué)、有效地實(shí)行城市路橋年費(fèi)的智能信息化管理,在市政管理的收費(fèi)站范圍內(nèi),利用路橋車輛通行費(fèi)系統(tǒng)進(jìn)行收費(fèi)和讀寫IC卡,憑IC卡通過路橋收費(fèi)站和高速公路收費(fèi)站結(jié)算,實(shí)現(xiàn)市政所屬收費(fèi)站與高速環(huán)線收費(fèi)站的聯(lián)網(wǎng)。文章結(jié)合路橋車輛通行費(fèi)管理?xiàng)l理與實(shí)際情況,對路橋車輛通行費(fèi)管理系統(tǒng)進(jìn)行分析與設(shè)計(jì),介紹系統(tǒng)的需求分析、關(guān)系數(shù)據(jù)庫的設(shè)計(jì)和程序設(shè)計(jì)的過程。
[關(guān)鍵詞]數(shù)據(jù)庫;程序設(shè)計(jì);關(guān)鍵字;外關(guān)鍵字
[作者簡介]侯國熙,廣西交通科學(xué)研究院,研究方向:交通機(jī)電工程軟件開發(fā),廣西南寧 530007;潘承繼,廣西交通科學(xué)研究院,研究方向:交通機(jī)電工程開發(fā),廣西南寧 530007;岳雷,廣西交通科學(xué)研究院,研究方向:交通機(jī)電工程開發(fā),廣西南寧,530007
[中圖分類號] F54[文獻(xiàn)標(biāo)識碼] A[文章編號] 1007-7723(2008)10-0163-0003
一、系統(tǒng)需求分析
該系統(tǒng)能夠?qū)崿F(xiàn)路橋年票征收工作全部業(yè)務(wù)流程,并對各個(gè)環(huán)節(jié)的工作進(jìn)行自動(dòng)記錄跟蹤,實(shí)現(xiàn)路橋年票征收管理工作的規(guī)范化、制度化、現(xiàn)代化,提高路橋年票征收工作的效率。通行費(fèi)年票制是指按車型類別對照通行費(fèi)年票收費(fèi)標(biāo)準(zhǔn)一次性繳交全年路橋通行費(fèi)或次費(fèi),并發(fā)放通行IC卡。
系統(tǒng)主要功能:
1.收費(fèi)業(yè)務(wù):按照一車一票一卡一證來辦理。
2.特殊業(yè)務(wù):只有通過授權(quán)的用戶才能辦理特殊業(yè)務(wù),比如:報(bào)停、轉(zhuǎn)籍、報(bào)廢、退票,等等。
3.收費(fèi)統(tǒng)計(jì):通過授權(quán)可以統(tǒng)計(jì)每個(gè)收費(fèi)點(diǎn)各個(gè)時(shí)段的收費(fèi)數(shù)量及收費(fèi)金額。
4.收費(fèi)查詢:分為組合查詢和明細(xì)查詢等方式查詢。
5.票務(wù)管理:主要是對發(fā)放、使用的發(fā)票進(jìn)行科學(xué)管理,能更有效地了解票務(wù)情況。
6.各類報(bào)表:能夠按照收費(fèi)的使用情況生成各個(gè)部門的報(bào)表。
7.系統(tǒng)設(shè)置:通過授權(quán)可以對基本參數(shù)進(jìn)行添加、修改、刪除數(shù)據(jù)。
二、設(shè)計(jì)模式分析及關(guān)鍵技術(shù)
(一)設(shè)計(jì)模式分析
在目前比較流行的應(yīng)用系統(tǒng)架構(gòu)中,大多數(shù)采用瀏覽器/服務(wù)器模式(B/S模式)或客戶機(jī)/服務(wù)器模式(C/S模式)。這兩種模式的比較:B/S模式(Browser/Server)結(jié)構(gòu),它是隨著Internet技術(shù)的興起,用戶工作界面是通過WWW瀏覽器來實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn),形成所謂三層3-tier結(jié)構(gòu)。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本(TCO),但是缺點(diǎn)是服務(wù)器的處理任務(wù)比較重;而C/S模式(Client/Server)結(jié)構(gòu)是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實(shí)現(xiàn),降低了系統(tǒng)的通信開銷。但是C/S結(jié)構(gòu)的兼容性差,對客戶端要求比較高,要求客戶機(jī)與服務(wù)器共同承擔(dān)一部分處理任務(wù),能減輕服務(wù)器的工作負(fù)擔(dān),而且維護(hù)成本與投資大。
對比兩種模式,鑒于收費(fèi)系統(tǒng)的私密性、分布收費(fèi)點(diǎn)廣、數(shù)據(jù)的安全性以及在通信內(nèi)部的網(wǎng)絡(luò)中使用的特點(diǎn),選擇了客戶端/服務(wù)器的設(shè)計(jì)模式(B/S模式),采取獨(dú)立的網(wǎng)絡(luò)通訊,客戶端(瀏覽器)可以通過HTTP協(xié)議向服務(wù)器(IIS)提交相應(yīng)的業(yè)務(wù)操作請求,服務(wù)器接到指令后去連接數(shù)據(jù)庫,把響應(yīng)的結(jié)果返回到客戶端,如圖1所示。
(二)關(guān)鍵技術(shù)
1.?dāng)?shù)據(jù)庫的連接。數(shù)據(jù)庫是網(wǎng)絡(luò)平臺設(shè)計(jì)中最為關(guān)鍵的一個(gè)環(huán)節(jié),對于很多沒有編程基礎(chǔ)實(shí)現(xiàn)一定網(wǎng)頁功能的人來說,ASP或者ASP.NET等的復(fù)雜代碼不啻于一座難以逾越的大山,但是Microsoft Visual Studio .NET 2005 卻為我們省去了很大的心思,利用其自帶的功能就能夠?qū)崿F(xiàn)數(shù)據(jù)庫的基本操作,并且操作是可視化的,非常直觀。打開數(shù)據(jù)記錄集對話框,我們需要設(shè)置幾個(gè)參數(shù),一個(gè)是記錄集名稱“Recordset1”,連接數(shù)據(jù)集“cnn”,表格“data”。這樣我們就選擇了一個(gè)基于數(shù)據(jù)表data的數(shù)據(jù)集。另外,.NET還提供了一個(gè)便捷的數(shù)據(jù)庫連接的配置文件webconfig,只要修改配置文件就能改變數(shù)據(jù)庫的連接,極大地方便用戶進(jìn)行數(shù)據(jù)庫的移植,配置如下:
<appSettings>
<add key=\"cnn\" value=\"server=ServerIP;uid=;password=;database=mydatabase\"></add>
</appSettings>
2.頁面呈現(xiàn)數(shù)據(jù)信息。為了方便收費(fèi)員在后臺瀏覽電腦的收費(fèi)情況,需要將數(shù)據(jù)庫中的收費(fèi)信息通過表格的形式展現(xiàn)出來。由于數(shù)據(jù)量大,與服務(wù)器交互頻繁,使速度相應(yīng)變慢,為此在后臺采用數(shù)據(jù)庫中建立存儲過程來分頁顯示數(shù)據(jù)。在程序中調(diào)用存儲過程來處理數(shù)據(jù),這樣大大提高了訪問的效率和速度。
3.選擇數(shù)據(jù)庫。相比較其他傳統(tǒng)數(shù)據(jù)庫而言,關(guān)系型數(shù)據(jù)庫采用了二維的數(shù)據(jù)表格,使用表格中的關(guān)鍵字段作為單個(gè)表格索引,使用外關(guān)鍵字段作為表格之間的聯(lián)系,使得數(shù)據(jù)的存取和查詢的速度更高,更具有優(yōu)越性。本系統(tǒng)采用Microsoft SQL Server2000作為數(shù)據(jù)庫,Microsoft SQL Server 2000 能提供超大型系統(tǒng)所需的數(shù)據(jù)庫服務(wù),同時(shí)為這些環(huán)境提供了全面的保護(hù),具有防止問題發(fā)生的安全措施,也是目前數(shù)據(jù)庫選擇的主流之一。
4.設(shè)置IIS虛擬目錄。我們設(shè)計(jì)好整個(gè)頁面之后,如果想瀏覽效果必須進(jìn)行發(fā)布,因此需要配置相應(yīng)的服務(wù)器環(huán)境。關(guān)鍵的環(huán)節(jié)就是安裝IIS。利用Win XP安裝盤在添加/刪除程序中安裝Windows組件的Internet 信息服務(wù),完畢之后會在控制面板的“管理工具”選項(xiàng)中出現(xiàn)“Internet 信息服務(wù)”圖標(biāo)。雙擊該圖標(biāo)就可以設(shè)置IIS虛擬目錄。
5.網(wǎng)站的使用。在默認(rèn)網(wǎng)站上單擊右鍵,選擇新建“虛擬目錄”,在對話框中依次填入網(wǎng)站的別名“myweb”,文件所在目錄“C:\\wwwroot”。這樣設(shè)置虛擬目錄的過程就完成了。然后在IE瀏覽器中輸入http://127.0.0.1/myweb/login.asp就進(jìn)入了系統(tǒng)主頁,輸入收費(fèi)員工號、密碼登陸,就進(jìn)入業(yè)務(wù)辦理頁面。
三、數(shù)據(jù)庫設(shè)計(jì)
在數(shù)據(jù)庫應(yīng)用中,特別是網(wǎng)絡(luò)數(shù)據(jù)庫訪問,因?yàn)榭赡芤L問的數(shù)據(jù)量較大,因此需要比較長的時(shí)間來得到結(jié)果。而一個(gè)良好的程序應(yīng)具有良好的交互性,在訪問數(shù)據(jù)庫時(shí)應(yīng)允許你的應(yīng)用程序?qū)τ脩舻幕顒?dòng)盡快作出響應(yīng)。在軟件系統(tǒng)開發(fā)中,數(shù)據(jù)庫設(shè)計(jì)應(yīng)遵循必要的數(shù)據(jù)庫范式理論,以減少冗余,保證數(shù)據(jù)的完整性與正確性。因此,數(shù)據(jù)庫設(shè)計(jì)時(shí)可以從幾個(gè)方面考慮:
(一)規(guī)范命名
所有的數(shù)據(jù)庫名、表名必須遵循統(tǒng)一的命名規(guī)則,并進(jìn)行必要描述,以方便設(shè)計(jì)、維護(hù)、查詢。
(二)分類拆分?jǐn)?shù)據(jù)量大的表
由于其使用頻率很高,要盡量減少表中的記錄數(shù)量。例如,收費(fèi)記錄表(TollTable)由于數(shù)據(jù)量大,就應(yīng)該與車主信息表(Carinfo)分開,通過關(guān)鍵字(Carid)來對應(yīng)車主的所有信息,這樣可以大大減少數(shù)據(jù)冗余。
(三)索引設(shè)計(jì)
對于大的數(shù)據(jù)庫表,合理的索引能夠提高整個(gè)數(shù)據(jù)庫的操作效率,尤其是在查詢大量的數(shù)據(jù)時(shí),建立索引十分重要。例如,在一個(gè)50萬多條記錄的記錄表以車主名稱、車牌號碼、車類型查詢,所用的時(shí)間接近20秒;而如果以車主名稱、車牌號碼、車類型為索引字段建立索引進(jìn)行相同的查詢,所用時(shí)間不到10秒。因此,在大型數(shù)據(jù)庫設(shè)計(jì)中,只有建立合理的索引字段,才能有效提高整個(gè)數(shù)據(jù)庫的操作效率。
(四)多線程機(jī)制
在微軟.NET框架中,許多服務(wù)器端應(yīng)用程序都駐留在ASP.NET體系結(jié)構(gòu)中。因?yàn)镮IS和ASP.NET在ASP.NET Web Form或Web服務(wù)程序中執(zhí)行了許多或所有的多線程。這就是為什么在.NET框架中,多線程更傾向于在客戶端使用的一個(gè)原因。比如,在保證同用戶交互的同時(shí)而執(zhí)行一個(gè)很長的操作,可以讓需要大量時(shí)間的操作在后臺運(yùn)行以快速響應(yīng)用戶的活動(dòng)。.NET Framework提供線程隔離,最好的辦法也是將線程要訪問的對象包裝在類中調(diào)用線程的start方法,并不能確保其中的方法馬上執(zhí)行完,而要得到數(shù)據(jù)訪問的結(jié)果又必須等其中的方法執(zhí)行完畢。所以,如果在運(yùn)行線程后采用循環(huán)查詢的方法顯然影響了交互性,事件是從線程方法返回?cái)?shù)據(jù)的好方法。只要在線程方法所在的類中定義一個(gè)事件,在線程方法中發(fā)出事件,而在窗體類中生成代理。
四、程序設(shè)計(jì)
(一)Asp.net的介紹
根據(jù)路橋車輛通行年費(fèi)管理系統(tǒng)的設(shè)計(jì)原理及上面技術(shù)的分析,選擇了Windows系統(tǒng)環(huán)境下使用Microsoft Visual Studio .NET 2005的asp.net + C#來開發(fā)web程序。ASP.NET是微軟流行的動(dòng)態(tài)WEB編程技術(shù)活動(dòng)服務(wù)器網(wǎng)頁(ASP)的最新版本,但它遠(yuǎn)不是傳統(tǒng)ASP的簡單升級。ASP.NET和ASP的最大區(qū)別在于編程思維的轉(zhuǎn)換,ASP.NET是真正在ASP.NET中,Web 窗體頁由兩部分組成:視覺元素(HTML、服務(wù)器控件和靜態(tài)文本)和該頁的編程邏輯。其中每一部分都存儲在一個(gè)單獨(dú)的文件中??梢曉卦谝粋€(gè)擴(kuò)展名為 .aspx 文件中創(chuàng)建,而代碼位于一個(gè)單獨(dú)的類文件中,該文件稱作代碼隱藏類文件,擴(kuò)展名為aspx.cs。這樣,.aspx文件中存放所有要顯示的元素, aspx.cs文件中存放邏輯。
(二)面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-Oriented Programming)
面向?qū)ο蟪绦蛟O(shè)計(jì)的代表語言是C++語言,引入了“類”與“對象”的概念。在程序?qū)崿F(xiàn)的過程中,有很多類或者函數(shù)可以重復(fù)使用。因此,我們可以先建立一個(gè)公共類,在類下面寫功能函數(shù),在需要某個(gè)功能的時(shí)候,就通過調(diào)用類下的相應(yīng)功能,這樣極大地提高了代碼的可重用性、軟件的可擴(kuò)展性等。
(三)繪制出程序路橋車輛通行年費(fèi)管理系統(tǒng)流程圖(圖2)
五、結(jié)語
柳州市路橋車輛通行費(fèi)管理系統(tǒng)通過一年多的運(yùn)行,一切正常,實(shí)現(xiàn)了平穩(wěn)過渡。柳州市路橋車輛通行費(fèi)管理系統(tǒng)首次采用新的模式(B/S)和聯(lián)網(wǎng)技術(shù),不但提高管理效率和信息共享水平,而且進(jìn)一步鞏固了路橋收費(fèi)改革成果。
[參考文獻(xiàn)]
[1]Chris Payne.ASP.NET從入門到精通[M].北京:人民郵電出版社,2002.
[2]張志學(xué).NET框架開發(fā)人員參考手冊[M].北京:清華大學(xué)出版社,2002.
[3]Mike Gunderloy.ADO與ADO.Net編程指南[M].北京:電子工業(yè)出版社,2000.