可視化編程技術(shù)課程設(shè)計-(高速公路收費系統(tǒng))_第1頁
已閱讀1頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告書</b></p><p>  專 業(yè):信息管理與信息系統(tǒng) </p><p>  課程設(shè)計名稱:《可視化編程技術(shù)課程設(shè)計》</p><p>  題 目:高速公路收費系統(tǒng)</p><p>  班 級: </p><p&g

2、t;  學 號:</p><p>  設(shè) 計 者: </p><p>  指 導 老 師: </p><p>  完 成 時 間: </p><p><b>  摘要</b></p><p>  在現(xiàn)代交通越來越便利的同時,高速公路也發(fā)揮著越來越重要的作用。中國已

3、經(jīng)有4萬多公里的高速公路,在未來還將翻倍。修建高速公路被各地官員拉入地方經(jīng)濟工作日常首要位置,與1950年后的美國相似,越來越密集的高速網(wǎng)正在促使著中國發(fā)生巨大的變化。</p><p>  高速公路收費系統(tǒng)是高速公路管理的重要組成部分。建立智能化的收費系統(tǒng)是加強高速公路管理的一個重要環(huán)節(jié)。高速公路收費系統(tǒng)解決了高速公路收費業(yè)務(wù)中由于采取傳統(tǒng)方法和手段出現(xiàn)的難以處理的問題,并把管理對象轉(zhuǎn)向信息對象的信息管理系統(tǒng),把

4、高速公路收費系統(tǒng)推向另一個高度。 </p><p>  利用計算機進行高速公路收費系統(tǒng)設(shè)計,本文是采用C#作為前臺開發(fā)工具,SQL Server2008 R2作為后臺數(shù)據(jù)庫平臺的基于C/S的三層模式的高速公路收費系統(tǒng)。</p><p>  關(guān)鍵詞:C#;數(shù)據(jù)庫表; </p><p><b>  目錄</b></p><p&g

5、t;<b>  目錄1</b></p><p>  第一章開發(fā)環(huán)境和開發(fā)工具1</p><p>  1.1C#語言簡介1</p><p>  1.2 開發(fā)背景1</p><p>  1.3 開發(fā)環(huán)境2</p><p>  第二章 人事管理信息系統(tǒng)的分析與設(shè)計3</p>

6、<p>  2.1 系統(tǒng)需求分析3</p><p>  2.2 系統(tǒng)總體設(shè)計3</p><p>  2.2.1 系統(tǒng)設(shè)計目標3</p><p>  2.2.2 開發(fā)設(shè)計思想4</p><p>  2.2.3 系統(tǒng)功能模塊設(shè)計4</p><p>  第三章數(shù)據(jù)庫設(shè)計6</p>&

7、lt;p>  3.1 引入背景6</p><p>  3.2 數(shù)據(jù)庫需求分析6</p><p>  3.2.1 數(shù)據(jù)流圖7</p><p>  3.2.2. 數(shù)據(jù)字典7</p><p>  3.3 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計10</p><p>  3.4 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計14</p><

8、;p>  3.5 數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計15</p><p>  3.5.1 索引的建立(主鍵、外鍵)15</p><p>  3.5.2 觸發(fā)器16</p><p>  第四章系統(tǒng)詳細設(shè)計與實現(xiàn)17</p><p>  4.1 實體類庫設(shè)計與實現(xiàn)17</p><p>  4.2 數(shù)據(jù)訪問層類庫設(shè)計與實現(xiàn)

9、22</p><p>  4.3 業(yè)務(wù)邏輯層類庫設(shè)計與實現(xiàn)32</p><p>  4.4 界面設(shè)計及實現(xiàn)37</p><p>  4.4.1 登陸界面及代碼37</p><p>  4.4.2 主界面及代碼38</p><p><b>  結(jié) 論50</b></p>

10、<p><b>  心得體會51</b></p><p><b>  參考文獻52</b></p><p><b>  開發(fā)環(huán)境和開發(fā)工具</b></p><p><b>  C#語言簡介</b></p><p>  C#是微軟公司發(fā)布的

11、一種面向?qū)ο蟮?、運行于.NET Framework之上的高級程序設(shè)計語言。并定于在微軟職業(yè)開發(fā)者論壇(PDC)上登臺亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司 .NET wi

12、ndows網(wǎng)絡(luò)框架的主角。</p><p>  C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。</p><p&g

13、t;  C#是一種面向?qū)ο蟮恼Z言,它使得程序員可以快速地編寫各種基于MICROSOFT .NET平臺的應(yīng)用程序,MICROSOFT .NET提供了一系列的工具和服務(wù)來最大程度地開發(fā)利用計算與通訊領(lǐng)域。</p><p><b>  1.2 開發(fā)背景</b></p><p>  二十年來,收費公路在中國從無到有,彌補了傳統(tǒng)公共交通的不足,滿足了人們快捷、安全、舒適的交通需

14、要,為中國經(jīng)濟的蓬勃發(fā)展做出了巨大貢獻。正確揭示收費公路在公共服務(wù)方面的標準和限度,處理費用的各種數(shù)據(jù),對中國公路建設(shè)事業(yè)健康發(fā)展有重要意義。</p><p>  如今,高速公路的飛速發(fā)展,高速公路的行路暢通,正因為這樣,高速公路在各種交通運輸渠道中占據(jù)了主要的地位,這就造成了高速公路收費管理出現(xiàn)了一些問題,不但增加了運營的強度,也增加了高速公路收費工作人員的工作壓力。所以,這對現(xiàn)有的收費管理和收費人員提出更多的

15、要求:提高收費效率、降低收費差錯,提高收費站管理服務(wù)水平。而以手工為主的傳統(tǒng)收費方式已經(jīng)不能滿足當前收費的實際需要。</p><p>  在當今信息化的社會里,作為高新技術(shù)之一的C#可視化編程技術(shù)和數(shù)據(jù)庫應(yīng)用技術(shù)已成為高速公路信息資源利用和高速公路建設(shè)及其現(xiàn)代化管理不可缺少的重要工具,高速公路收費系統(tǒng)便是基于C#和數(shù)據(jù)庫所產(chǎn)生的,相較于傳統(tǒng)手工的收費方式它的效率高、差錯少,能使管理人員隨時查閱數(shù)據(jù)信息。并能對各種

16、違規(guī)行為進行一定的制止,對于各種各樣的逃票行為提供證據(jù)。高速公路收費系統(tǒng)能夠滿足我國對于高速公路所提出的大多數(shù)要求。</p><p><b>  1.3 開發(fā)環(huán)境</b></p><p>  本文所采用的開發(fā)環(huán)境主要是基于數(shù)據(jù)庫系統(tǒng)的SQL Server 2008 R2和基于面向?qū)ο蟪绦蛟O(shè)計的C#。SQL Server 2008 R2在Microsoft的數(shù)據(jù)平臺上發(fā)

17、布,可以組織管理任何數(shù)據(jù),可以將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)直接存儲到數(shù)據(jù)庫中。它可以對數(shù)據(jù)進行查詢、搜索、同步、報告和分析之類的操作引進了一系列新功能幫助各種規(guī)模的業(yè)務(wù)從信息中獲取更多價值。經(jīng)過改進的SQL Server 2008 R2增強了開發(fā)能力,提高了可管理性,強化了商業(yè)智能及數(shù)據(jù)倉庫。</p><p>  本系統(tǒng)是利用SQL Server 2008 R2創(chuàng)建高速收費站上的收費站信息表、職工信息表

18、、收費查詢表、道路表、進出站信息表、車輛信息表、車輛流動表、收費卡信息表、收費標準表以及用C#連接數(shù)據(jù)庫用的登錄系統(tǒng)表。利用C#和數(shù)據(jù)庫建立連接之后,利用C#中的控件按鈕以及一些程序代碼實現(xiàn)一些特定的功能,例如員工信息查詢、員工信息編輯、車輛信息查詢、收費標準查詢、收費情況查詢等,極大地提高了高速公路收費管理的效率。</p><p>  第二章 人事管理信息系統(tǒng)的分析與設(shè)計</p><p&g

19、t;  隨著計算機技術(shù)的飛速發(fā)展,計算機在各種收費和管理應(yīng)用的普及,利用計算機實現(xiàn)高速公路收費的管理勢在必行。當前高速公路收費系統(tǒng)正在從C/S結(jié)構(gòu)向B/S結(jié)構(gòu)轉(zhuǎn)移,但是由于安全性等方面的因素,C/S結(jié)構(gòu)的高速公路收費系統(tǒng)仍然占據(jù)收費系統(tǒng)的主流。本文所論述的系統(tǒng)也是C/S結(jié)構(gòu)的高速公路收費系統(tǒng)。</p><p>  高速公路收費系統(tǒng)是適應(yīng)現(xiàn)代化制度要求,推動高速公路收費走向科學化、規(guī)范化的必要條件。</p&g

20、t;<p>  2.1 系統(tǒng)需求分析</p><p>  在現(xiàn)代運輸?shù)蔫F路、公路、水運、航運和管理五種方式中,目前我國公路運輸約占全國客、貨運輸總量的一半以上。近年來,我國高速公路的發(fā)展很快,高速公路總里程躍居世界第二位,從而大大改善了公路路網(wǎng)結(jié)構(gòu),緩解了交通旅游業(yè)的發(fā)展,推動沿線產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,加快了中小城鎮(zhèn)的發(fā)。</p><p>  隨著高速公路的建設(shè),收費站數(shù)目的不斷增加

21、,對現(xiàn)有的收費管理和收費人員提出了新的要求:提高收費效率、降低收費差錯,提高收費站管理服務(wù)水平。高速公路收費系統(tǒng)提供了一種理想的解決上述問題的方案,能適應(yīng)新的收費管理要求。</p><p>  在當今信息化的社會里,如何運用計算機技術(shù)、運用好有限的資金,加快速度、高質(zhì)量地建設(shè)高等級公路收費系統(tǒng),是擺在廣大科技工作者面前一個有待解決的課題。今為解決這一些問題特別寫了高速公路收費系統(tǒng),利用計算機的存取功能及其計算機數(shù)

22、據(jù)庫的功能來實現(xiàn)對數(shù)據(jù)的有效、高速管理。</p><p>  2.2 系統(tǒng)總體設(shè)計</p><p>  2.2.1 系統(tǒng)設(shè)計目標</p><p>  本文研究開發(fā)的高速公路收費系統(tǒng)用于支持高速公路的收費管理工作,有如下三個方面的目標:</p><p>  ●支持收費站實現(xiàn)規(guī)范化的管理。</p><p>  ●支持收費人

23、員高效率完成車輛收費和信息查詢的日常業(yè)務(wù),包括車輛的道路信息、車輛信息、增加收費的具體信息和收費詳情查看等。</p><p>  ● 支持收費站進行勞動人事管理及其相關(guān)方面的科學決策,如領(lǐng)導根據(jù)現(xiàn)有的員工情況增加或減少員工人數(shù)、修改員工信息等。</p><p>  2.2.2 開發(fā)設(shè)計思想</p><p>  基于以上系統(tǒng)設(shè)計目標,本文在開發(fā)高速公路收費系統(tǒng)時遵循了

24、以下開發(fā)設(shè)計思想:</p><p>  ●采用現(xiàn)有的軟硬件環(huán)境及先進的系統(tǒng)開發(fā)方案,從而達到充分利用現(xiàn)有資源,提高系統(tǒng)開發(fā)水平和應(yīng)用效果的目的。</p><p>  ●盡量達到操作過程中的直觀、方便、實用、安全等要求。</p><p>  ●系統(tǒng)采用C/S體系結(jié)構(gòu),Clinet(客戶端)負責提供表達邏輯、顯示用戶界面信息、訪問數(shù)據(jù)庫服務(wù)器;Server(服務(wù)器端)則

25、用于提供數(shù)據(jù)服務(wù)。</p><p>  ●系統(tǒng)采用三層架構(gòu)的設(shè)計思想,即界面層(User Interface layer)、業(yè)務(wù)邏輯層(Business Logic Layer)、數(shù)據(jù)訪問層(Data access layer)。界面層:主要對用戶的請求接受,以及數(shù)據(jù)的返回,為客戶端提供應(yīng)用程序的訪問。業(yè)務(wù)邏輯層:是系統(tǒng)架構(gòu)中體現(xiàn)核心價值的部分,主要負責對數(shù)據(jù)層的操作。數(shù)據(jù)訪問層:主要是對數(shù)據(jù)的操作,具體為業(yè)務(wù)邏

26、輯層或表示層提供數(shù)據(jù)服務(wù)。</p><p>  ●系統(tǒng)采用模塊化程序設(shè)計方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開發(fā)的技術(shù)維護人員補充、維護。</p><p>  ●系統(tǒng)應(yīng)具備數(shù)據(jù)庫維護功能,及時根據(jù)用戶需求進行數(shù)據(jù)的添加、刪除、修改、備份等操作。</p><p>  2.2.3 系統(tǒng)功能模塊設(shè)計</p><p>  本系統(tǒng)分為四個

27、模塊:系統(tǒng)模塊、職工信息管理、收費站信息管理、車輛信息管理。</p><p>  本系統(tǒng)的具體功能模塊圖如圖3-1所示:</p><p>  圖3-1系統(tǒng)功能模塊圖</p><p><b>  數(shù)據(jù)庫設(shè)計</b></p><p><b>  3.1 引入背景</b></p><p

28、>  高速公路收費系統(tǒng)是一個數(shù)據(jù)庫應(yīng)用系統(tǒng),有關(guān)車輛和收費的所有信息都保存在數(shù)據(jù)庫中。數(shù)據(jù)庫結(jié)構(gòu)設(shè)計是高速公路收費系統(tǒng)數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)過程中一個非常重要的環(huán)節(jié),設(shè)計的好壞將直接對所開發(fā)的高速公路收費系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。好的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計會減少數(shù)據(jù)庫的存儲量,數(shù)據(jù)的完整性和一致性比較高,系統(tǒng)具有較快的響應(yīng)速度,簡化基于此數(shù)據(jù)庫的應(yīng)用程序的實現(xiàn)等等。數(shù)據(jù)庫結(jié)構(gòu)設(shè)計主要就是要設(shè)計好數(shù)據(jù)庫中各個表的結(jié)構(gòu),包括信息保存在哪些

29、表格中、各個表的結(jié)構(gòu)如何以及各個表之間的關(guān)系。數(shù)據(jù)庫的存在能夠完善地管理各種數(shù)據(jù)庫對象,具有強大的數(shù)據(jù)組織、用戶管理、安全檢查等功能;可以方便地生成各種數(shù)據(jù)對象,利用存儲的數(shù)據(jù)建立窗體和報表,可視性較好。由于數(shù)據(jù)庫設(shè)計的重要性,人們提出了許多數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的技術(shù)。</p><p>  3.2 數(shù)據(jù)庫需求分析</p><p>  數(shù)據(jù)庫需求分析是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的第一個階段,也是非常重要的一個

30、階段。在這個階段主要工作是收集基本數(shù)據(jù)以及數(shù)據(jù)處理的流程,為以后進一步設(shè)計一打下基礎(chǔ)。需求分析主要解決兩個問題::</p><p>  . ● 內(nèi)容要求。調(diào)查應(yīng)用系統(tǒng)用戶所需要操作的數(shù)據(jù),決定在數(shù)據(jù)庫中存儲什么數(shù)據(jù)。</p><p>  ● 處理要求。調(diào)查應(yīng)用系統(tǒng)用戶要求對數(shù)據(jù)庫進行什么樣的處理,理清數(shù)據(jù)庫中各種數(shù)據(jù)之間的關(guān)系。</p><p>  3.2.1

31、 數(shù)據(jù)流圖</p><p><b>  頂層圖:</b></p><p><b>  提供信息</b></p><p><b>  查看</b></p><p><b>  進</b></p><p><b>  入<

32、;/b></p><p><b>  收費標準</b></p><p>  一層圖: 收費卡 提供信息</p><p>  得到 交還、讀卡</p><p>  提供信息

33、 </p><p><b>  查看</b></p><p><b>  員工</b></p><p>  員工 提供收費信息</p><p><b>  權(quán)限距離情況</b&g

34、t;</p><p>  權(quán)限 信息</p><p><b>  各站距離情況改動</b></p><p><b>  進入數(shù)據(jù)</b></p><p><b>  讀取信息</b></p><p><b>

35、  員工信息</b></p><p>  3.2.2. 數(shù)據(jù)字典</p><p>  數(shù)據(jù)字典是對系統(tǒng)中數(shù)據(jù)的詳細描述,是各類數(shù)據(jù)結(jié)構(gòu)和屬性的清單。它與數(shù)據(jù)流圖互為注釋。包括五個部分:數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲和處理過程。</p><p><b>  數(shù)據(jù)項:</b></p><p><b>

36、;  車輛信息:</b></p><p><b>  職工信息:</b></p><p><b>  系統(tǒng)登錄:</b></p><p><b>  收費站信息:</b></p><p><b>  車輛收費標準:</b></p>

37、<p><b>  收費卡信息:</b></p><p><b>  收費查詢:</b></p><p><b>  各站距離情況:</b></p><p><b>  數(shù)據(jù)結(jié)構(gòu):</b></p><p><b>  數(shù)據(jù)流:<

38、/b></p><p><b>  數(shù)據(jù)存儲</b></p><p><b>  處理過程:</b></p><p>  3.3 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計</p><p>  概念結(jié)構(gòu)是對現(xiàn)實世界的一種抽象,就是對實際的人、物、事和概念進行進行人為處理,它抽取人民關(guān)心的共同特性,忽略非本質(zhì)的細節(jié),并

39、把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。概念結(jié)構(gòu)設(shè)計就是根據(jù)需求分析得到的結(jié)果對現(xiàn)實世界進行抽象,設(shè)計各個局部E-R模型。</p><p><b>  局部E-R圖</b></p><p><b>  車輛的E-R圖</b></p><p><b>  職工的E-R圖</b><

40、;/p><p><b>  收費站的E-R圖</b></p><p><b>  收費卡的E-R圖</b></p><p>  車輛收費標準E-R圖</p><p>  各站距離情況E-R圖</p><p>  員工管理局部的E-R圖</p><p>&l

41、t;b>  1</b></p><p><b>  n</b></p><p>  收費站與職工的實體聯(lián)系圖</p><p><b>  1</b></p><p><b>  n</b></p><p><b>  nn&

42、lt;/b></p><p><b>  11</b></p><p>  收費站功能的實體聯(lián)系圖</p><p><b>  1</b></p><p><b>  n1</b></p><p>  1 </p>

43、<p><b>  n</b></p><p><b>  n</b></p><p>  1 </p><p><b>  11</b></p><p><b>  m</b></p><p>&l

44、t;b>  1</b></p><p><b>  全局E-R圖</b></p><p>  3.4 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計</p><p>  概念結(jié)構(gòu)是獨立于實際數(shù)據(jù)模型的信息結(jié)構(gòu),必須將其轉(zhuǎn)化為邏輯結(jié)構(gòu)后才能進行數(shù)據(jù)庫應(yīng)用的設(shè)計。也就是要將概念上的結(jié)構(gòu)轉(zhuǎn)化為BP數(shù)據(jù)庫系統(tǒng)所支持的實際數(shù)據(jù)庫。數(shù)據(jù)庫邏輯結(jié)構(gòu)管設(shè)計的任務(wù)是將概念

45、模型轉(zhuǎn)換成特定DBMS所支持的數(shù)據(jù)模型的過程。</p><p>  一般的邏輯結(jié)構(gòu)分為三步:</p><p><b>  初始關(guān)系模式設(shè)計;</b></p><p><b>  關(guān)系模式規(guī)范化;</b></p><p><b>  模式的評價與改進;</b></p>

46、<p>  本系統(tǒng)所對應(yīng)的關(guān)系模式:</p><p>  車輛信息(車牌號,車輛類別)</p><p>  職工信息(職工編號,職工姓名,性別,年齡,職位)</p><p>  登錄系統(tǒng)(職工編號,職工姓名,職位)</p><p>  收費查詢(收費ID,車輛類別,道路編號,應(yīng)收費用,收費人)</p><p&

47、gt;  收費站信息(收費站號,收費站名,地址,聯(lián)系方式)</p><p>  收費卡信息(收費卡號,進站編號,進站時間,車輛類別)</p><p>  各站間距(道路編號,進站編號,出站編號,距離,道路通行)</p><p>  收費標準(車輛類別,收費單價,備注)</p><p>  (陰影加粗部分為主鍵)</p><

48、p>  根據(jù)范式定義,對各關(guān)系模式進行判斷,均符合第三范式。</p><p>  3.5 數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計</p><p>  物理結(jié)構(gòu)設(shè)計是對于給定的邏輯數(shù)據(jù)模型,選取了一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程。它的任務(wù)是為了有效地實現(xiàn)邏輯模式,確定所采取的存儲策略。分為確定物理結(jié)構(gòu)和評價物理結(jié)構(gòu)兩部分。</p><p>  確定物理結(jié)構(gòu)的步驟:</p&g

49、t;<p>  存儲記錄結(jié)構(gòu)的設(shè)計;</p><p><b>  訪問方法的設(shè)計;</b></p><p>  數(shù)據(jù)存放位置的設(shè)計;</p><p><b>  系統(tǒng)配置的設(shè)計;</b></p><p>  3.5.1 索引的建立(主鍵、外鍵)</p><p>

50、  索引是一種可以加快檢索的數(shù)據(jù)庫結(jié)構(gòu),它包含從表或視圖的一列或多列生成的鍵,以及映射到指定數(shù)據(jù)存儲位置的指針。通過創(chuàng)建設(shè)計良好的索引,可以顯著提高數(shù)據(jù)庫查詢和應(yīng)用程序的性能。雖然索引有大量優(yōu)點,但一個表中的大量索引會影響插入、刪除、更新數(shù)據(jù)的性能,增加索引調(diào)整的成本,降低系統(tǒng)的響應(yīng)速度。索引主要分為:聚集索引、非聚集索引、唯一索引、視圖索引、全文索引和XML索引。其中唯一索引中,創(chuàng)建PRIMARY KEY或UNIQUE約束時,自動生產(chǎn)

51、唯一索引。</p><p><b>  3.5.2 觸發(fā)器</b></p><p>  觸發(fā)器屬于一種特殊的存儲過程,可以在其中包含復雜的SQL語句。觸發(fā)器與存儲過程的區(qū)別在于觸發(fā)器能夠自動執(zhí)行并且不含參數(shù)。通常在觸發(fā)器中編寫一段自動執(zhí)行的程序,用于保證數(shù)據(jù)操作的完整性,從而擴展了對默認值、約束和規(guī)則的完整性檢查。具有</p><p><

52、b>  自動執(zhí)行</b></p><p>  實現(xiàn)比約束更為復雜的完整性要求</p><p>  根據(jù)表數(shù)據(jù)修改前后的狀態(tài),根據(jù)差異采取相應(yīng)措施</p><p>  防止惡意的或錯誤的INSERT、UPDATE和DELETE操作等等優(yōu)點。</p><p>  本系統(tǒng)使用了如下觸發(fā)器:</p><p>

53、  實現(xiàn)在收費標準表中更新車輛類別的信息,收費卡信息表、車輛信息表、收費查詢表中的相對應(yīng)的信息會自動更新;</p><p>  保證向車輛信息表中插入信息時,若車輛類別不符合收費標準中的要求,拒絕插入;</p><p>  實現(xiàn)在職工信息表中刪除某一職工時,在登錄系統(tǒng)表中的相關(guān)信息也被刪除;</p><p>  保證在登錄系統(tǒng)中添加新記錄時,新職工的信息必須存在于職

54、工信息表中;</p><p>  實現(xiàn)在各站間距表中修改道路編號時,收費查詢表中相對應(yīng)的信息會自動修改;</p><p><b>  系統(tǒng)詳細設(shè)計與實現(xiàn)</b></p><p>  4.1 實體類庫設(shè)計與實現(xiàn)</p><p>  實體類庫是是輔助數(shù)據(jù)庫的映射,可以理解為傳遞數(shù)據(jù)的載體,主要用于數(shù)據(jù)的存儲。它貫穿于整個架構(gòu)

55、,負擔著在各層次及模塊間傳遞數(shù)據(jù)的職責</p><p>  本系統(tǒng)一共建立了8個類庫,分別為Login 、Staffinformation、Tollgate 、Space 、Shoufeibiaozhun、Carinformation 、Cardinformation、Shoufeiquery。</p><p>  Login類:用于提供職工的登錄信息,包括職工編號、密碼和用戶類別。用戶類

56、別的不同使不同的職工擁有不同的權(quán)限,主要分為領(lǐng)導和員工。</p><p>  public class Tollgate</p><p><b>  {</b></p><p>  private string _gateID;</p><p>  public string GateID</p><

57、;p><b>  {</b></p><p>  get { return _gateID; }</p><p>  set { _gateID = value; }</p><p><b>  }</b></p><p>  ……//對屬性進行定義</p><p> 

58、 public Tollgate()//定義無參的構(gòu)造函數(shù) { </p><p><b>  }</b></p><p>  public Tollgate(string gateID, string gatename, string address, string phone)</p><p><b>  {</

59、b></p><p>  _gateID = gateID;</p><p>  _gatename = gatename;</p><p>  _address = address;</p><p>  _phone = phone;</p><p><b>  }</b></p&g

60、t;<p><b>  }</b></p><p>  Staffinformation類:提供職工的具體信息,用于增加、刪除、和查詢,其中包括職工編號、職工姓名、性別、年齡和職位。領(lǐng)導擁有增加、刪除職工信息的權(quán)限,員工擁有查詢職工信息的權(quán)限。</p><p>  public class Staffinformation</p><

61、;p><b>  {</b></p><p>  private string _staffID;</p><p>  public string StaffID</p><p><b>  {</b></p><p>  get { return _staffID; }</p>

62、<p>  set { _staffID = value; }</p><p><b>  }</b></p><p><b>  ……</b></p><p>  public Staffinformation()//定義無參的構(gòu)造函數(shù)</p><p><b>  { <

63、;/b></p><p><b>  }</b></p><p>  public Staffinformation(string staffID, string name, string sex, string age, string post)</p><p><b>  {</b></p>&l

64、t;p>  _staffID = staffID;</p><p>  _name = name;</p><p>  _sex = sex;</p><p>  _age = age;</p><p>  _post = post;</p><p><b>  }</b></p>

65、;<p><b>  }</b></p><p>  Tollgate類:提供各個收費站的信息,用于增加和查詢,其中包括收費站編號、收費站名、收費站的地址和聯(lián)系方式。領(lǐng)導擁有增加收費站信息的權(quán)限,員工擁有查詢的權(quán)限。</p><p>  public class Tollgate</p><p><b>  {<

66、/b></p><p>  private string _gateID;</p><p>  public string GateID</p><p><b>  {</b></p><p>  get { return _gateID; }</p><p>  set { _gateID

67、 = value; }</p><p><b>  }</b></p><p><b>  ……</b></p><p>  public Tollgate()//定義無參的構(gòu)造函數(shù)</p><p><b>  { </b></p><p><b&

68、gt;  }</b></p><p>  public Tollgate(string gateID, string gatename, string address, string phone)</p><p><b>  {</b></p><p>  _gateID = gateID;</p><p>

69、  _gatename = gatename;</p><p>  _address = address;</p><p>  _phone = phone;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Space類:提

70、供各個收費站之間的道路、距離信息,用于增加、修改和查詢。其中包括道路編號、起始收費站的編號、終止收費站的編號、兩車站間的距離和道路通行情況。領(lǐng)導擁有增加和修改的權(quán)限,員工擁有查詢的權(quán)限。</p><p>  public class Space</p><p><b>  {</b></p><p>  private string _roa

71、dID;</p><p>  public string RoadID</p><p><b>  {</b></p><p>  get { return _roadID; }</p><p>  set { _roadID = value; }</p><p><b>  }<

72、/b></p><p><b>  ……</b></p><p>  public Space()//定義無參的構(gòu)造函數(shù)</p><p><b>  { </b></p><p><b>  }</b></p><p>  public Space

73、(string roadID, string jinzhanID, string chuzhanID, Single distance, string wayleave)</p><p><b>  {</b></p><p>  _roadID = roadID;</p><p>  _jinzhanID = jinzhanID;</p

74、><p>  _chuzhanID = chuzhanID;</p><p>  _distance = distance;</p><p>  _wayleave = wayleave;</p><p><b>  }</b></p><p><b>  }</b></p

75、><p>  Shoufeibiaozhun類:提供該車站的收費標準,一般為國家標準收費標準。其中包括車輛類型、單價和被子。領(lǐng)導具有查詢和根據(jù)國家收費標準進行修改的權(quán)限,員工具有查詢的權(quán)限。</p><p>  public class Shoufeibiaozhun</p><p><b>  {</b></p><p>

76、;  private string _cartype;</p><p>  public string Cartype</p><p><b>  {</b></p><p>  get { return _cartype; }</p><p>  set { _cartype = value; }</p>

77、<p><b>  }</b></p><p><b>  ……</b></p><p>  public Shoufeibiaozhun()//定義無參的構(gòu)造函數(shù)</p><p><b>  { </b></p><p><b>  }</b>

78、;</p><p>  public Shoufeibiaozhun(string cartype, Single unitprice, string remark)</p><p><b>  {</b></p><p>  _cartype = cartype;</p><p>  _unitprice = unit

79、price;</p><p>  _remark = remark;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Carinformation類:提供過路車輛的信息,用于增加和查詢。其中包括車牌號和車輛類別。領(lǐng)導對于該表沒有權(quán)限,員工具有增加和

80、查詢的權(quán)限。</p><p>  public class Carinformation</p><p><b>  {</b></p><p>  private string _carID;</p><p>  public string CarID</p><p><b>  {&

81、lt;/b></p><p>  get { return _carID; }</p><p>  set { _carID = value; }</p><p><b>  }</b></p><p><b>  ……</b></p><p>  public Car

82、information()//定義無參的構(gòu)造函數(shù)</p><p><b>  { </b></p><p><b>  }</b></p><p>  public Carinformation(string carID, string cartype)</p><p><b>  {&l

83、t;/b></p><p>  _carID = carID;</p><p>  _cartype = cartype;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Cardinformation類:提供車輛所拿

84、收費卡的信息,用于增加和查詢。其中包括收費卡編號、所進高速公路的收費站編號、進高速公路的時間和車輛類型。領(lǐng)導對于該表沒有權(quán)限,員工擁有增加和查詢的權(quán)限。</p><p>  public class Cardinformation</p><p><b>  {</b></p><p>  private string _cardID;<

85、/p><p>  public string CardID</p><p><b>  {</b></p><p>  get { return _cardID; }</p><p>  set { _cardID = value; }</p><p><b>  }</b>&l

86、t;/p><p><b>  ……</b></p><p>  public Cardinformation()//定義無參的構(gòu)造函數(shù)</p><p><b>  { </b></p><p><b>  }</b></p><p>  public Car

87、dinformation(string cardID, string jinzhanID, DateTime jinzhantime, string cartype)</p><p><b>  {</b></p><p>  _cardID = cardID;</p><p>  _jinzhanID = jinzhanID;</p&g

88、t;<p>  _jinzhantime = jinzhantime;</p><p>  _cartype = cartype; </p><p><b>  }</b></p><p><b>  }</b></p><p>  Shoufeiquery類:提供車輛的具體收費信息,

89、用于增加和查詢。其中包括收費編號、車輛類型、所走高速的道路編號、應(yīng)收費用和收費的員工。領(lǐng)導對于該表沒有權(quán)限,員工擁有增加和查詢的權(quán)限。</p><p>  public class Shoufeiquery</p><p><b>  {</b></p><p>  private string _shoufeiID;</p>

90、<p>  public string ShoufeiID</p><p><b>  {</b></p><p>  get { return _shoufeiID; }</p><p>  set { _shoufeiID = value; }</p><p><b>  }</b>&

91、lt;/p><p><b>  ……</b></p><p>  public Shoufeiquery()//定義無參的構(gòu)造函數(shù)</p><p><b>  {</b></p><p><b>  }</b></p><p>  public Shoufe

92、iquery(string shoufeiID,string cartype,string roadID,string cost,string name)</p><p><b>  {</b></p><p>  _shoufeiID = shoufeiID;</p><p>  _cartype = cartype;</p>

93、<p>  _roadID = roadID;</p><p>  _cost = cost;</p><p>  _name = name; } }</p><p>  4.2 數(shù)據(jù)訪問層類庫設(shè)計與實現(xiàn)</p><p>  數(shù)據(jù)訪問層有時候也稱為是持久層,是所做事務(wù)直接操作數(shù)據(jù)庫,針對數(shù)據(jù)的增添、刪除、修改、

94、查找等。主要是對原始數(shù)據(jù)(數(shù)據(jù)庫或者文本文件等存放數(shù)據(jù)的形式)的操作層,是對數(shù)據(jù)的操作,具體為業(yè)務(wù)邏輯層或表示層提供數(shù)據(jù)服務(wù)。</p><p>  本系統(tǒng)中一共建立了9個數(shù)據(jù)訪問層的類庫,分別為:Dabase、LoginServer、StaffinformationServer、TollgateServer、SpaceServer、ShoufeibiaozhunServer、CarinformationServe

95、r 、CardinformationServer、ShoufeiqueryServer。</p><p>  鑒于大部分類庫實現(xiàn)的功能與代碼都類似,在這里只貼部分類庫的代碼。</p><p>  Dabase類:主要是提供數(shù)據(jù)庫的鏈接以及在數(shù)據(jù)庫中執(zhí)行增、刪、改、查的代碼。</p><p>  public class Dabase</p><p

96、><b>  {</b></p><p>  private static string _connStr = "Data Source=.;Initial Catalog=Road;Integrated Security=True";</p><p>  private static SqlConnection sqlcon = null;

97、</p><p>  private static void CreateConnection()</p><p><b>  {</b></p><p>  if (sqlcon == null)</p><p><b>  {</b></p><p>  sqlcon =

98、 new SqlConnection(_connStr);</p><p>  sqlcon.Open();</p><p><b>  }</b></p><p>  else if (sqlcon.State == ConnectionState.Closed || sqlcon.State == ConnectionState.Broke

99、n)</p><p><b>  {</b></p><p>  sqlcon.Close();</p><p>  sqlcon.Open();</p><p><b>  }</b></p><p><b>  }</b></p>&l

100、t;p>  //執(zhí)行Insert/update/delete,不帶參數(shù)</p><p>  public static int ExecuteNoQuery(string strsql)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>

101、<b>  try</b></p><p><b>  {</b></p><p>  CreateConnection();</p><p>  SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon);</p><p>  i = sqlcmd.Exe

102、cuteNonQuery();</p><p>  sqlcon.Close();</p><p><b>  return i;</b></p><p><b>  }</b></p><p><b>  catch</b></p><p><b

103、>  {</b></p><p>  return -1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //執(zhí)行Insert/update/delete,帶參數(shù)</p><p>  public sta

104、tic int ExecuteNoQuery(string strsql, params SqlParameter[] param)</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  try</b></p><p&

105、gt;<b>  {</b></p><p>  CreateConnection();</p><p>  SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon);</p><p>  //sqlcmd.Parameters.Add(param);</p><p>  fo

106、reach (SqlParameter par in param) //遍歷數(shù)組將參數(shù)對象添加到操作命令中</p><p><b>  {</b></p><p>  sqlcmd.Parameters.Add(par);</p><p><b>  }</b></p><p>  i = sq

107、lcmd.ExecuteNonQuery();</p><p><b>  return i;</b></p><p><b>  }</b></p><p><b>  catch</b></p><p><b>  {</b></p>&

108、lt;p>  return -1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //執(zhí)行SELECT命令,得到數(shù)據(jù)表</p><p>  public static DataTable GetTable(string strsql)<

109、;/p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  CreateConnection();</p><p>  SqlDataAdapter sda = new Sq

110、lDataAdapter(strsql, sqlcon);</p><p>  DataSet ds = new DataSet();</p><p>  sda.Fill(ds, "temp");</p><p>  sqlcon.Close();</p><p>  return ds.Tables["tem

111、p"];</p><p><b>  }</b></p><p><b>  catch</b></p><p><b>  {</b></p><p>  return null;</p><p><b>  }</b>

112、</p><p><b>  }</b></p><p>  public static DataTable GetTable(string strsql, params SqlParameter[] param)</p><p><b>  {</b></p><p><b>  try

113、</b></p><p><b>  {</b></p><p>  CreateConnection();</p><p>  SqlDataAdapter sda = new SqlDataAdapter(strsql, sqlcon);</p><p>  foreach (SqlParameter p

114、ar in param) //遍歷數(shù)組將參數(shù)對象添加到操作命令中</p><p><b>  {</b></p><p>  sda.SelectCommand.Parameters.Add(param);</p><p><b>  }</b></p><p>  DataSet ds = n

115、ew DataSet();</p><p>  sda.Fill(ds, "temp");</p><p>  sqlcon.Close();</p><p>  return ds.Tables["temp"];</p><p><b>  }</b></p>&l

116、t;p><b>  catch</b></p><p><b>  {</b></p><p>  return null;</p><p><b>  }</b></p><p><b>  }</b></p><p>  

117、public static SqlDataReader GetReader(string strsql)</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  CreateConnecti

118、on();</p><p>  SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon);</p><p>  SqlDataReader sdr = sqlcmd.ExecuteReader(CommandBehavior.CloseConnection);</p><p>  return sdr;</p>

119、<p><b>  }</b></p><p><b>  catch</b></p><p><b>  {</b></p><p>  return null;</p><p><b>  }</b></p><p&g

120、t;<b>  }</b></p><p>  public static SqlDataReader GetReader(string strsql, params SqlParameter[] param)</p><p><b>  {</b></p><p><b>  try</b><

121、/p><p><b>  {</b></p><p>  CreateConnection();</p><p>  SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon);</p><p>  foreach (SqlParameter par in param) //遍歷

122、數(shù)組將參數(shù)對象添加到操作命令中</p><p><b>  {</b></p><p>  sqlcmd.Parameters.Add(par);</p><p><b>  }</b></p><p>  SqlDataReader sdr = sqlcmd.ExecuteReader();<

123、;/p><p>  return sdr;</p><p><b>  }</b></p><p><b>  catch</b></p><p><b>  {</b></p><p>  return null;</p><p>

124、<b>  }</b></p><p><b>  }</b></p><p>  // 執(zhí)行統(tǒng)計等命令</p><p>  public static int num(string strsql)</p><p><b>  {</b></p><p>

125、;<b>  int i;</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  CreateConnection();</p><p>  SqlCommand sqlcmd = new SqlCommand(strs

126、ql, sqlcon);</p><p>  i = (int)sqlcmd.ExecuteScalar();</p><p><b>  return i;</b></p><p><b>  }</b></p><p><b>  catch</b></p>

127、<p><b>  {</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  // 執(zhí)行統(tǒng)計等命令</p><p&g

128、t;  public static int num(string strsql, params SqlParameter[] param)</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  try</b></p><

129、;p><b>  {</b></p><p>  CreateConnection();</p><p>  SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon);</p><p>  foreach (SqlParameter par in param) //遍歷數(shù)組將參數(shù)對象添加到操

130、作命令中</p><p><b>  {</b></p><p>  sqlcmd.Parameters.Add(par);</p><p><b>  }</b></p><p>  i = (int)sqlcmd.ExecuteScalar();</p><p><

131、b>  return i;</b></p><p><b>  }</b></p><p><b>  catch</b></p><p><b>  {</b></p><p>  return 0; </p><p>&l

132、t;b>  }    </b></p><p><b> ?。?lt;/b></p><p>  LoginServer類:實現(xiàn)對于數(shù)據(jù)庫中Login表的信息查找、信息增加、信息刪除和信息的更改。</p><p>  部分更新數(shù)據(jù)的代碼:</p><p>  /// 更新一條數(shù)據(jù)</p><

133、;p>  public static int Update(Login u)</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  SqlParameter[] param = ne

134、w SqlParameter[]{new SqlParameter("@StaffID",u.StaffID),</p><p>  new SqlParameter("@Password",u.Password)};</p><p>  //string str = "insert into [user](userName,userPwd

135、) values('" + u.UserName + "','" + u.UserPwd + "')";</p><p>  string str = "update [Login] set password=@Password where staffID=@StaffID";</p><p&

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論