基于C的自助銀行模擬系統(tǒng)_第1頁(yè)
基于C的自助銀行模擬系統(tǒng)_第2頁(yè)
基于C的自助銀行模擬系統(tǒng)_第3頁(yè)
基于C的自助銀行模擬系統(tǒng)_第4頁(yè)
基于C的自助銀行模擬系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 編號(hào): 某某大學(xué)畢業(yè)論文(設(shè)計(jì))題目 自助銀行模擬系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 院 (系) 信息工程學(xué)院 專 業(yè) 信息工程 學(xué)生姓名 某某某 成 績(jī) 指導(dǎo)教師 某某 (職稱) 副教授 2011年3月40摘要自助銀行是 Automatic Teller Machine 的縮寫,意為自動(dòng)柜員機(jī)。它是一種高度精密的機(jī)電一體化設(shè)備,利用磁卡或智能IC卡儲(chǔ)存用戶信息并通過(guò)加密鍵盤(EPP)輸入密碼然后通過(guò)銀行內(nèi)部網(wǎng)絡(luò)驗(yàn)證并進(jìn)行各種交易的金融自助設(shè)備。自助銀行的功能主要包括:現(xiàn)金取款、現(xiàn)金存款、現(xiàn)金存取款、余額查詢、本行或異行轉(zhuǎn)賬、修改密碼等基本功能;有些多功能自助銀行還提供諸如存折打印、對(duì)賬單打印、支票存款、信封

2、存款、繳費(fèi)、充值等一系列便捷服務(wù)。由此看來(lái),自助銀行的管理是十分重要的。而人們?cè)谑褂米灾y行前很重要的一個(gè)環(huán)節(jié),就是學(xué)習(xí)如何正確地使用自助銀行。如何利用現(xiàn)代計(jì)算機(jī)技術(shù)進(jìn)行自助銀行的全真模擬,成了很棘手的問(wèn)題。經(jīng)過(guò)需求分析,在數(shù)據(jù)庫(kù)方面,本項(xiàng)目使用SQL SEVER 2000數(shù)據(jù)庫(kù)管理系統(tǒng);在應(yīng)用程序開發(fā)方面,使用微軟公司的VS.NET的C#開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,其中最主要的是ADO.NET;在網(wǎng)絡(luò)查詢方面,使用C#技術(shù),開發(fā)語(yǔ)言也是C#.NET。本論文將重點(diǎn)論述如何使用這些工具,對(duì)自助銀行進(jìn)行更科學(xué)更有效地管理。關(guān)鍵詞:自助銀行模擬系統(tǒng); C#.NET;SQL; ADO

3、.NET; C# AbstractThe application of electronic label and SQL database in an automatic storage management systems development mainly includes three aspects of designing and realizing, that is the backstage database, the code of the database correspondence, and the report inquiring based on the networ

4、k. The database must have the uniformity, the integrity and the secure characteristics; the code the database correspondence could realize the appending, update and omitting functions of the database; the network report form inquiry should achieve report form inquiry functions.After carefully analyz

5、ing enterprise demand, SQL the SEVER 2000 database management system is employed in this project; in the application procedure development aspect, Microsoft Corporations VS.NET C# development kit is brought in, whose object-oriented development kits is utilized, especially the ADO.NET; In the networ

6、k inquiry aspects, the C# technology is taken into use, whose development language is C# NET. This project has established the database, completed the database correspondence codes, realized report form inquiry based on the network.Key words:Stock management system;RFID;C#.NET;SQL;ADO.NET; C#目錄摘要IAb

7、stractII目錄III第一章 概述11.1課題名稱及其來(lái)源11.2 信息系統(tǒng)與管理信息系統(tǒng)11.3 自助銀行模擬系統(tǒng)的現(xiàn)狀與發(fā)展趨勢(shì)21.4 自助銀行模擬系統(tǒng)的意義3第二章 系統(tǒng)分析42.1 系統(tǒng)的功能42.2 用戶需求分析42.2.1應(yīng)用程序結(jié)構(gòu)確定42.2.2 確定系統(tǒng)開發(fā)環(huán)境5第三章 開發(fā)工具簡(jiǎn)介63.1 Microsoft Visual Studio .NET 2005 的C# 語(yǔ)言63.1.1 C#.NET簡(jiǎn)介83.1.2 ADO.NET簡(jiǎn)介93.2 C# 簡(jiǎn)介113.3 SQL Server 200012第四章 系統(tǒng)的功能設(shè)計(jì)134.1 功能概述134.2 后臺(tái)數(shù)據(jù)庫(kù)設(shè)計(jì)144

8、.2.1 存儲(chǔ)過(guò)程介紹144.2.2 數(shù)據(jù)庫(kù)的表的設(shè)計(jì)174.2.3 設(shè)計(jì)局部ER模式184.2.4數(shù)據(jù)字典20第五章 應(yīng)用程序界面設(shè)計(jì)245.1 用戶登陸245.2 系統(tǒng)主操作界面255.3 賬戶信息添加模塊265.4 帳戶信息查詢模塊275.5 系統(tǒng)介紹信息添加模塊305.6 查詢余額管理模塊315.7 賬戶明細(xì)管理模塊325.8 轉(zhuǎn)賬取現(xiàn)管理模塊33第六章 系統(tǒng)測(cè)試346.1 軟件測(cè)試概念346.2 軟件系統(tǒng)測(cè)試356.3 系統(tǒng)整體測(cè)試356.4 不足與改進(jìn)35結(jié)論和建議37致謝38參考文獻(xiàn)39第一章 概述1.1課題名稱及其來(lái)源本課題根據(jù)銀行商業(yè)運(yùn)營(yíng)中的實(shí)際需要而產(chǎn)生,隨著社會(huì)的發(fā)展,互

9、聯(lián)網(wǎng)已經(jīng)成為人們?nèi)粘I?、學(xué)習(xí)辦公中不可缺少的一部分,并在各個(gè)領(lǐng)域發(fā)揮著越來(lái)越重要的作用。特別是在商業(yè)運(yùn)營(yíng)管理方面發(fā)展尤為迅速。本系統(tǒng)的開發(fā)主要是根據(jù)銀行實(shí)際運(yùn)營(yíng)管理中需要而制作,系統(tǒng)整體包括:基礎(chǔ)資料管理、銀行業(yè)務(wù)管理、財(cái)務(wù)報(bào)表管理、系統(tǒng)維護(hù)管理四大功能模塊。對(duì)其進(jìn)行一條龍式的集中管理?!白灾y行模擬系統(tǒng)”的出現(xiàn)打破了銀行傳統(tǒng)的經(jīng)營(yíng)管理模式,它憑借其銀行信息更新速度快、信息存儲(chǔ)量大、應(yīng)用簡(jiǎn)便、安全性高等特點(diǎn),為銀行的人員管理等信息的管理帶來(lái)了極大的方便,大大減輕了銀行管理人員的工作量,使管理者足不出戶便可對(duì)銀行的貨柜存儲(chǔ)信息、進(jìn)出場(chǎng)信息、財(cái)務(wù)信息等了如執(zhí)掌,針對(duì)具體情況做出正確的決策。因此“

10、自助銀行模擬系統(tǒng)”已成為當(dāng)今銀行管理者不可缺少的管理工具之一,同時(shí)對(duì)于一個(gè)銀行的正常運(yùn)做也發(fā)揮著極為重要的作用,并且隨著國(guó)家經(jīng)濟(jì)的不斷發(fā)展,國(guó)家和銀行進(jìn)出口貿(mào)易量的不斷增加,“銀行信息管理系統(tǒng)”必將在未來(lái)國(guó)家進(jìn)出口貿(mào)易發(fā)展中發(fā)揮越來(lái)越重要的作用。1.2 信息系統(tǒng)與管理信息系統(tǒng)(一)信息系統(tǒng)信息系統(tǒng)是一個(gè)人造系統(tǒng),它由人、硬件、軟件和數(shù)據(jù)資源組成,目的是及時(shí)、正確地收集、加工、存儲(chǔ)、傳遞和提供信息,實(shí)現(xiàn)組織中各項(xiàng)活動(dòng)的管理、調(diào)節(jié)和控制。信息系統(tǒng)包括信息處理系統(tǒng)和信息傳輸系統(tǒng)兩個(gè)方面。信息處理系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行處理,使它獲得新的結(jié)構(gòu)與形態(tài)或者產(chǎn)生新的數(shù)據(jù)。信息傳輸系統(tǒng)不改變信息本身的內(nèi)容,作用是把信息

11、從一處傳到另一處。從第一臺(tái)電子計(jì)算機(jī)創(chuàng)始,50多年來(lái),信息系統(tǒng)經(jīng)歷了由單片機(jī)到網(wǎng)絡(luò),由低級(jí)到高級(jí),由電子數(shù)據(jù)處理到管理信息系統(tǒng)、再到?jīng)Q策支持系統(tǒng),由數(shù)據(jù)處理到智能處理的過(guò)程。EDPS是面向業(yè)務(wù)的信息系統(tǒng),MIS是面向管理的信息系統(tǒng),DSS則是面向決策的信息系統(tǒng)。EDPS、 MIS、DSS各自代表了信息系統(tǒng)發(fā)展過(guò)程中的某一階段,至今它們?nèi)愿髯圆粩嗟匕l(fā)展著,而且是相互交叉的關(guān)系。(二)管理信息系統(tǒng)管理信息系統(tǒng)是一個(gè)具有高度復(fù)雜性、多元性和綜合性的人機(jī)系統(tǒng),它全面使用計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通訊技術(shù)、數(shù)據(jù)庫(kù)技術(shù)以及管理科學(xué)、運(yùn)籌學(xué)、統(tǒng)計(jì)學(xué)、模型論和各種最優(yōu)化技術(shù)、為經(jīng)營(yíng)管理和決策服務(wù)。從廣義上說(shuō),管理信息系

12、統(tǒng)是一個(gè)對(duì)組織進(jìn)行全面管理的綜合系統(tǒng)。隨著計(jì)算機(jī)技術(shù)的發(fā)展,信息技術(shù)在人們生活中變得越來(lái)越重要,信息化成為人們生活的主要內(nèi)容。管理信息系統(tǒng)作為信息化的一部分,在各行各業(yè)中,發(fā)揮著其不可替代的作用。管理信息系統(tǒng)綜合的意義在于產(chǎn)生更高層次的管理信息,為管理決策服務(wù)。管理信息系統(tǒng)綜合了管理科學(xué)、信息科學(xué)、系統(tǒng)科學(xué)、行為科學(xué)、計(jì)算機(jī)科學(xué)和通信技術(shù)。在一個(gè)國(guó)家里管理信息系統(tǒng)的建立,運(yùn)行和發(fā)展水平,標(biāo)志著這個(gè)國(guó)家的管理現(xiàn)代化水平和信息化水平。管理工作的成敗,取決于能否作出有效的決策,而決策的正確與否則在很大程度上取決于信息的質(zhì)量。隨著人類進(jìn)入信息時(shí)代,信息管理的水平越來(lái)越成為衡量國(guó)家綜合實(shí)力的重要標(biāo)志。管

13、理信息系統(tǒng)是現(xiàn)代管理方法與手段相結(jié)合的系統(tǒng)。尤其是在銀行管理信息系統(tǒng)中,計(jì)算機(jī)系統(tǒng)與現(xiàn)代管理方法的結(jié)合才能使系統(tǒng)在管理中發(fā)揮作用。管理信息系統(tǒng)的目的是要使各級(jí)管理人員在計(jì)算機(jī)系統(tǒng)支持下,從各種繁瑣的日常事務(wù)中解脫出來(lái),以便更好地投入到?jīng)Q策工作中去。管理信息系統(tǒng)不能只是對(duì)原有手工系統(tǒng)的簡(jiǎn)單的模仿,它還必須能夠在仿真原管理信息系統(tǒng)的基礎(chǔ)上,改進(jìn)管理系統(tǒng),使銀行管理在先進(jìn)的技術(shù)手段和準(zhǔn)確及時(shí)的信息支持下,達(dá)到一個(gè)新層次。1.3 自助銀行模擬系統(tǒng)的現(xiàn)狀與發(fā)展趨勢(shì)自助銀行模擬系統(tǒng)由自助銀行賬戶管理系統(tǒng)、出入賬管理系統(tǒng)等多個(gè)子系統(tǒng)組成。自助銀行模擬系統(tǒng)在整個(gè)銀行系統(tǒng)中占有十分重要的地位。自助銀行賬戶管理是

14、銀行管理的重要方面,因?yàn)樗豌y行的日常運(yùn)營(yíng)息息相關(guān)。出入賬管理是一項(xiàng)計(jì)算瑣碎復(fù)雜,具有重復(fù)性,又牽涉到每個(gè)人的利益,必須及時(shí)準(zhǔn)確地完成,一般不容發(fā)生差錯(cuò)。計(jì)算機(jī)進(jìn)行基礎(chǔ)管理工作,不僅能夠保證數(shù)據(jù)核算正確無(wú)誤,快速輸出,而且還可以利用工資數(shù)據(jù)庫(kù)對(duì)相關(guān)各種信息進(jìn)行統(tǒng)計(jì),服務(wù)于財(cái)務(wù)部門其他方面的核算和帳務(wù)處理?,F(xiàn)行的自助銀行管理軟件大多是基于單機(jī)版的,或者即使是網(wǎng)絡(luò)版,其用戶也是限制在一個(gè)。但牽涉到大型銀行的管理時(shí),這往往是不夠的,一方面大型銀行內(nèi)部的各個(gè)部門自己要進(jìn)行工資管理,這樣用戶數(shù)就會(huì)很多,另一方面,其他的管理系統(tǒng)如財(cái)務(wù)系統(tǒng)等需要工資管理系統(tǒng)的一些數(shù)據(jù),若網(wǎng)絡(luò)化程度不夠,則無(wú)法做到真正的自動(dòng)

15、化信息集成。信息管理網(wǎng)絡(luò)化會(huì)在很大程度上提高辦事效率,尤其工資管理方面的網(wǎng)絡(luò)化,都會(huì)給公司及員工帶來(lái)益處。1.4 自助銀行模擬系統(tǒng)的意義現(xiàn)在社會(huì)各行各業(yè)崇尚的是高效管理,銀行也不例外。為贏得更多從業(yè)人員的青睞,本系統(tǒng)大大提高現(xiàn)代銀行管理效率,同時(shí)大大減輕對(duì)銀行管理人員的工作量,有利的保障銀行的正常經(jīng)營(yíng),促進(jìn)銀行的發(fā)展。第二章 系統(tǒng)分析本系統(tǒng)采用了結(jié)構(gòu)化生命周期法,結(jié)構(gòu)化生命周期法是最常用的管理信息系統(tǒng)開發(fā)方法,分為四個(gè)步驟,即系統(tǒng)調(diào)研分析、數(shù)據(jù)庫(kù)設(shè)計(jì)實(shí)現(xiàn)、界面設(shè)計(jì)實(shí)現(xiàn)和系統(tǒng)功能設(shè)計(jì)實(shí)現(xiàn)。其中系統(tǒng)調(diào)研分析階段是最基礎(chǔ)、也是最容易被開發(fā)人員忽視的環(huán)節(jié)。2.1 系統(tǒng)的功能系統(tǒng)開發(fā)的總體任務(wù)是實(shí)現(xiàn)自助

16、銀行的自動(dòng)化管理,從而達(dá)到提高降低管理成本、提高作業(yè)效率、提高管理現(xiàn)代化水平,減少成本、促進(jìn)相關(guān)產(chǎn)業(yè)的發(fā)展。首先要考慮項(xiàng)目的軟件組成分為兩大類:前臺(tái)的用戶操作界面及整個(gè)程序的后臺(tái)數(shù)據(jù)庫(kù)部分。前臺(tái)的用戶操作界面要實(shí)現(xiàn)用戶對(duì)倉(cāng)庫(kù)的各種操作,要能夠?qū)崿F(xiàn)基礎(chǔ)資料管理、銀行業(yè)務(wù)管理、財(cái)務(wù)報(bào)表管理、系統(tǒng)維護(hù)管理等功能。后臺(tái)數(shù)據(jù)庫(kù)方面要實(shí)現(xiàn)對(duì)項(xiàng)目中用到的所有信息的管理、儲(chǔ)存。2.2 用戶需求分析用戶需求分析就是在用戶需求調(diào)研的基礎(chǔ)上,確定系統(tǒng)的總體結(jié)構(gòu)方案,完成相應(yīng)的需求分析報(bào)告。在確定系統(tǒng)的總體結(jié)構(gòu)方案過(guò)程中,包括確定應(yīng)用程序的結(jié)構(gòu)、系統(tǒng)開發(fā)環(huán)境和系統(tǒng)的功能模塊。用戶需求調(diào)研結(jié)束之后,應(yīng)該立即進(jìn)行用戶需求

17、分析。根據(jù)對(duì)系統(tǒng)要實(shí)現(xiàn)的功能的分析用戶操作界面設(shè)計(jì)了如下模塊:自助銀行賬戶管理模塊、出入賬管理模塊、系統(tǒng)維護(hù)管理模塊。2.2.1應(yīng)用程序結(jié)構(gòu)確定從用戶應(yīng)用角度來(lái)看,可把應(yīng)用程序系統(tǒng)的組成部分分成數(shù)據(jù)存儲(chǔ)層、業(yè)務(wù)處理層和界面表示層等3個(gè)層次,而應(yīng)用程序結(jié)構(gòu)可歸納為:集中式應(yīng)用程序結(jié)構(gòu)、單用戶應(yīng)用程序結(jié)構(gòu)、多層服務(wù)器應(yīng)用程序結(jié)構(gòu)、瀏覽器服務(wù)器應(yīng)用程序結(jié)構(gòu)、交易記錄機(jī)服務(wù)器應(yīng)用程序結(jié)構(gòu)等5種類型。本系統(tǒng)的交易記錄端程序部分就采用了當(dāng)前最流行的交易記錄機(jī)服務(wù)器應(yīng)用程序結(jié)構(gòu)(即C/S結(jié)構(gòu)),此時(shí),交易記錄機(jī)提出請(qǐng)求,服務(wù)器對(duì)交易記錄機(jī)的請(qǐng)求作出回應(yīng)。通過(guò)對(duì)服務(wù)功能的分布實(shí)現(xiàn)了分工服務(wù)。數(shù)據(jù)存儲(chǔ)層放在服務(wù)

18、器上,業(yè)務(wù)處理層和界面表示層放在交易記錄機(jī)上,因此又被稱為“靈敏的交易記錄機(jī)”結(jié)構(gòu)。許多操作可以在本地的交易記錄機(jī)上執(zhí)行,只是當(dāng)需要數(shù)據(jù)時(shí),才向服務(wù)器發(fā)出請(qǐng)求。并使應(yīng)用程序的處理更接近用戶,使整個(gè)系統(tǒng)具有較好的性能,可以并行地處理應(yīng)用程序的請(qǐng)求、減少了數(shù)據(jù)傳輸量、降低了服務(wù)器的負(fù)荷。由于條件所限,將此系統(tǒng)所有程序都置于一臺(tái)計(jì)算機(jī)上,以便調(diào)試運(yùn)行。2.2.2 確定系統(tǒng)開發(fā)環(huán)境1. 數(shù)據(jù)庫(kù)的選擇:Microsoft SQL Server與Access,Orcale,Sybase都是當(dāng)前比較流行的數(shù)據(jù)庫(kù)管理系統(tǒng)(BDMS)。隨著SQL Server的不斷完善與發(fā)展,以及與網(wǎng)絡(luò)操作系統(tǒng)的完美結(jié)合,為系

19、統(tǒng)擴(kuò)展為多機(jī)操作提供可能,SQL Server 2000是一個(gè)可縮放、高性能的數(shù)據(jù)庫(kù)管理系統(tǒng),有完善的數(shù)據(jù)庫(kù)維護(hù)計(jì)劃。而且在這個(gè)項(xiàng)目中,由于數(shù)據(jù)量的考慮,本論文決定使用SQL Server 2000作為后臺(tái)的數(shù)據(jù)庫(kù)。2. 開發(fā)工具的選擇:由于Microsoft Visual Studio .NET 2005的C#語(yǔ)言是微軟公司目前主推的編程語(yǔ)言,因此本項(xiàng)目決定選用C#語(yǔ)言來(lái)進(jìn)行代碼的編寫,這樣既可以鍛煉我的學(xué)習(xí)能力又可以是我了解目前先進(jìn)的編程語(yǔ)言。由于大多數(shù)公司內(nèi)部使用的計(jì)算機(jī)平臺(tái)都是基于Windows環(huán)境的。為了降低系統(tǒng)成本,應(yīng)最大程度地利用現(xiàn)有的資源、兼容現(xiàn)有的環(huán)境,可確定使用下面的開發(fā)環(huán)

20、境:(1) 網(wǎng)絡(luò)操作系統(tǒng):Windows XP;(2) 數(shù)據(jù)庫(kù)服務(wù)器:SQL Server 2000;(3) 服務(wù)器平臺(tái):Windows XP; (4) 交易記錄機(jī)平臺(tái):Windows XP;(5) 前臺(tái)開發(fā)工具:Microsoft Visual Studio .NET 2005的C#語(yǔ)言;(6) 數(shù)據(jù)訪問(wèn)對(duì)象:ADO.NET(7) 網(wǎng)絡(luò)開發(fā)語(yǔ)言:C#第三章 開發(fā)工具簡(jiǎn)介本系統(tǒng)中的前臺(tái)程序使用的是Microsoft Visual Studio .NET 2005的C# 語(yǔ)言;網(wǎng)絡(luò)部分使用的是C#技術(shù);后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)使用的是SQL Server 2000。3.1 Microsoft Visual

21、 Studio .NET 2005 的C# 語(yǔ)言自比爾蓋茨宣布微軟公司將成為一家以.NET平臺(tái)為重點(diǎn)發(fā)展的公司后,微軟己經(jīng)將.NET發(fā)展成了新一代的平臺(tái)標(biāo)準(zhǔn)。當(dāng)前,Microsoft .NET平臺(tái)己經(jīng)成為業(yè)界公認(rèn)的開發(fā)平臺(tái)。本系統(tǒng)的網(wǎng)絡(luò)查詢部分基于Microsoft .NET平臺(tái)中的C#采用C#語(yǔ)言開發(fā),交易記錄端的應(yīng)用程序也是采用了C#語(yǔ)言進(jìn)行開發(fā),以保持整個(gè)項(xiàng)目的代碼的開發(fā)語(yǔ)言的一致性1。.NET開發(fā)平臺(tái)的主要組成部分:首先是整個(gè)開發(fā)框架的基礎(chǔ),即CLR(Common Language Runtime)以及它所提供的一組基礎(chǔ)類庫(kù);在開發(fā)技術(shù)方面,.NET提供了全新的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)ADO.N

22、ET,以及網(wǎng)絡(luò)應(yīng)用開發(fā)技術(shù)ASP NET和Windows編程技術(shù)Win Forms;在開發(fā)語(yǔ)言方面,.NET提供了Visual Basic, Visual C+,C#和Javascript等多種語(yǔ)言支持,并具有如下新特性:(1)通用語(yǔ)言運(yùn)行庫(kù)除了通用語(yǔ)言運(yùn)行庫(kù)的字面含義外,在開發(fā)階段和運(yùn)行過(guò)程中它還扮演著另一個(gè)角色。在組件運(yùn)行時(shí),運(yùn)行庫(kù)負(fù)責(zé)管理內(nèi)存分配、啟動(dòng)和中止線程和進(jìn)程、強(qiáng)化安全系數(shù),同時(shí)還調(diào)整任何該組件涉及到的其他組件的附件配置。在開發(fā)階段,運(yùn)行庫(kù)的角色稍微有點(diǎn)變化:因?yàn)楹芏喾矫婵梢宰詣?dòng)實(shí)現(xiàn)(例如內(nèi)存管理等)。運(yùn)行庫(kù)可以使開發(fā)過(guò)程變得非常簡(jiǎn)單,特別是同今天的COM編程相比更是如此。特別典

23、型的是,像Reflection(反射)這樣的特性可以極大地縮小開發(fā)人員將商業(yè)邏輯轉(zhuǎn)化成一個(gè)可重復(fù)使用的組件而不得不編寫的代碼數(shù)量。運(yùn)行庫(kù)對(duì)于編程語(yǔ)言來(lái)說(shuō)并不是新鮮的東西。實(shí)際上每一種編程語(yǔ)言都已包含一個(gè)運(yùn)行庫(kù)。Visual Basic開發(fā)系統(tǒng)有最明顯的運(yùn)行庫(kù)(正規(guī)名字為VBRUN), Visual C+也有一個(gè)MSVCRT,此外,像Visual FoxPro,Jscript,SmallTalk,Perl,Python和Java等等都如此。.NET框架中的通用語(yǔ)言運(yùn)行庫(kù)的核心就是提供了一個(gè)跨所有編程語(yǔ)言的統(tǒng)一環(huán)境。(2)統(tǒng)一編程類.NET框架類為開發(fā)人員提供了一套可以使用的統(tǒng)一的面向?qū)ο?、異步?/p>

24、層次結(jié)構(gòu)的可擴(kuò)展類庫(kù)?,F(xiàn)在,C+的使用者使用Microsoft Foundation Classes,Java程序員使用Windows Foundation Classes,Visual Basic的用戶使用Visual Basic APIs a微軟用.NET框架統(tǒng)一了這些不同的框架。結(jié)果是,開發(fā)人員不用去學(xué)多個(gè)框架來(lái)完成自己的工作。而且,通過(guò)創(chuàng)建一套跨編程語(yǔ)言的通用API, .NET框架可以實(shí)現(xiàn)跨語(yǔ)言繼承、糾錯(cuò)處理以及程序調(diào)試。實(shí)際上,從JScript到C+的所有編程語(yǔ)言,對(duì)于.Net框架都是相互等同的,開發(fā)人員可以自由地選擇他們想使用的任何語(yǔ)言。(3)ASP. NETASP. NET是使用

25、.NET框架提供的類庫(kù)構(gòu)建而成的,它提供了一個(gè)Web應(yīng)用程序模型,該模型由一組控件和一個(gè)基本結(jié)構(gòu)組成。有了它,Web應(yīng)用程序的構(gòu)建變得非常容易。開發(fā)人員可以直接使用ASP. NET控件集,該控件集封裝了公共的、用于超文本標(biāo)識(shí)語(yǔ)言(HTML)用戶界面的各種小組件(諸如文本框、下拉選單等等)。實(shí)際上,這些控件運(yùn)行在Web服務(wù)器上,它們將用戶界面轉(zhuǎn)換成HTML格式后再發(fā)送給瀏覽器。在服務(wù)器上,控件負(fù)責(zé)將面向?qū)ο蟮木幊棠P统尸F(xiàn)給Web開發(fā)人員,這種編程模型能提供面向?qū)ο蟮木幊碳夹g(shù)擁有的豐富功能。ASP. NET還提供一些基本結(jié)構(gòu)服務(wù)(諸如會(huì)話狀態(tài)管理和進(jìn)程循環(huán)),這些服務(wù)進(jìn)一步減少了開發(fā)人員要編寫的代

26、碼量,并使應(yīng)用程序的可靠性得到了大幅度提高。ASP. NET還允許開發(fā)人員將軟件作為一項(xiàng)服務(wù)進(jìn)行傳送。通過(guò)使用ASP. NET Web服務(wù)功能,ASP. NET開發(fā)人員只需進(jìn)行簡(jiǎn)單的業(yè)務(wù)邏輯編程,而由ASP. NET基本結(jié)構(gòu)負(fù)責(zé)通過(guò)SOAP傳送服務(wù)。. NET開發(fā)平臺(tái)結(jié)構(gòu)如圖3.1所示,. NET框架的類庫(kù)創(chuàng)建于CLR的上層,其范圍覆蓋了大量不同應(yīng)用程序和組件開發(fā)方案。通過(guò)提供共同的基礎(chǔ)和可以讓所有組件及應(yīng)用程序共享的API (Application Programming Interface,應(yīng)用編程接口),類庫(kù)真正實(shí)現(xiàn)了基于組件的編程?;A(chǔ)類庫(kù)(Base Class Library, BL

27、C)包括許多常用的命名空間,如System, System.Collections等。ADO. NET為數(shù)據(jù)訪問(wèn)功能層,作為System. Data命名空間和其子命名空間的一部分嵌入到.NET框架中。ADO. NET提供了對(duì)斷開或離線緩沖的關(guān)系數(shù)據(jù)進(jìn)行操作的能力。特別是提供了對(duì)Microsoft SQL Server的高性能連接。在ADO. NET之上為應(yīng)用開發(fā)技術(shù),. NET框架支持圖形化的Win32交易記錄端和服務(wù)器端的應(yīng)用程序開發(fā),還支持System. Web命名空間和其子命名空間中實(shí)現(xiàn)的ASP. NET和Web Forms的開發(fā)。圖3.1 NET開發(fā)平臺(tái)結(jié)構(gòu)如圖Microsoft.NE

28、T計(jì)劃將徹底改變我們對(duì)因特網(wǎng)的認(rèn)識(shí),從而在這樣一個(gè)網(wǎng)絡(luò)時(shí)代徹底改變我們的生活。軟件是一種服務(wù)技術(shù),是我們的仆人。時(shí)間與地點(diǎn)將不再是我們面前的障礙,建立在CLR與類庫(kù)基礎(chǔ)上的.NET框架是.NET平臺(tái)的核心組件之一。這為軟件的可移植性與可擴(kuò)展能力奠定了堅(jiān)實(shí)的基礎(chǔ),并為C#語(yǔ)言的應(yīng)用創(chuàng)造了良好的環(huán)境2。C#是.NET平臺(tái)的通用開發(fā)工具,它能夠建造所有的.NET應(yīng)用。其固有的特性保證了它是一種高效安全靈活的現(xiàn)代程序設(shè)計(jì)語(yǔ)言。從最普通的應(yīng)用到大規(guī)模的商業(yè)開發(fā)C#與.NET 平臺(tái)的結(jié)合將為你提供完整的解決方案3。3.1.1 C#.NET簡(jiǎn)介Visual C# .NET是Visual Studio系列中的

29、最新成員。這種新語(yǔ)言基于C/C+,但它深化了更容易地使用面向組件編程的發(fā)展方向。C/C+程序員應(yīng)該非常熟悉它的語(yǔ)法。C#在帶來(lái)對(duì)應(yīng)用程序的快速開發(fā)能力的同時(shí)并沒(méi)有犧牲C與C+程序員所關(guān)心的各種特性。它忠實(shí)地繼承了C和C+的優(yōu)點(diǎn)如果你對(duì)C或C+有所了解,你會(huì)發(fā)現(xiàn)它是那樣的熟悉即使你是一位新手C#也不會(huì)給你帶來(lái)任何其它的麻煩,快速應(yīng)用程序開發(fā)RAD(Rapid Application Development)的思想與簡(jiǎn)潔的語(yǔ)法將會(huì)使你迅速成為一名熟練的開發(fā)人員。正如前文所述C#是專門為.NET應(yīng)用而開發(fā)出的語(yǔ)言這從根本上保證了C#與.NET框架的完美結(jié)合。在.NET運(yùn)行庫(kù)的支持下.NET 框架的各

30、種優(yōu)點(diǎn)在C#中表現(xiàn)得淋漓盡致。看看C#的一些突出的特點(diǎn)即#SHARP的真正含義:(1) 簡(jiǎn)潔的語(yǔ)法(2) 精心地面向?qū)ο笤O(shè)計(jì)(3) 與Web的緊密結(jié)合(4) 完整的安全性與錯(cuò)誤處理(5) 版本處理技術(shù)(6) 靈活性與兼容性3.1.2 ADO.NET簡(jiǎn)介為了實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪問(wèn),可以利用.Net框架的ActiveX數(shù)據(jù)對(duì)象(ADO.NET)來(lái)實(shí)現(xiàn)。ADO .NET由Microsoft ActiveX Data Objects (ADO)改進(jìn)而來(lái),它提供平臺(tái)互用和可收縮的數(shù)據(jù)訪問(wèn)功能。由于XML(Extensible Markup Language,可擴(kuò)展標(biāo)示語(yǔ)言)是用于進(jìn)行數(shù)據(jù)傳送的格式,任何可以讀

31、取XML格式的應(yīng)用程序都可以對(duì)數(shù)據(jù)進(jìn)行處理。實(shí)際上,接收組件根本不需要ADO.NET組件。它可以是基于Microsoft Visual Studio的解決方案或在任何平臺(tái)上運(yùn)行的任何應(yīng)用程序4。ADO.NET是一組提供數(shù)據(jù)訪問(wèn)服務(wù)的類,它提供了對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)、XML中的數(shù)據(jù)和應(yīng)用程序數(shù)據(jù)的訪問(wèn);而且所有的訪問(wèn)都是按照一個(gè)相容的,標(biāo)準(zhǔn)化的設(shè)計(jì)模型來(lái)執(zhí)行。ADO是Microsoft現(xiàn)有的、廣泛應(yīng)用的數(shù)據(jù)訪問(wèn)接口。但是,它卻有一些自身難以改變的不適應(yīng)于Web環(huán)境的缺陷:(1) Web環(huán)境要求一定程度的互操作性,因?yàn)椴僮魉婕暗母鱾€(gè)服務(wù)可能運(yùn)行在不同的軟件和硬件平臺(tái)上。然而,ADO對(duì)象天生地定位在Win

32、dows平臺(tái)上。ADO基于COM的本性使得一記錄集很難在一個(gè)分布式、異種平臺(tái)構(gòu)成的環(huán)境中使用。(2) ADO對(duì)象模型中的每一個(gè)地方都體現(xiàn)了以數(shù)據(jù)庫(kù)為中心的思想。ADO把數(shù)據(jù)看成是一組來(lái)自數(shù)據(jù)源的記錄,而不是把數(shù)據(jù)看成一些獨(dú)立的信息。在ADO中,如果脫離了數(shù)據(jù)提供者用來(lái)保存和描述數(shù)據(jù)的結(jié)構(gòu),數(shù)據(jù)將不能獨(dú)立存在。(3) ADO.NET從Web的角度對(duì)ADO進(jìn)行檢討和改進(jìn)。兩個(gè)功能使得這方面的增強(qiáng)成為可能:脫機(jī)記錄集,以及與生俱來(lái)的對(duì)XML的支持。這主要是通過(guò)其中的DataSet(數(shù)據(jù)集)對(duì)象來(lái)實(shí)現(xiàn)以上兩個(gè)功能。ADO.NET結(jié)構(gòu)的一個(gè)核心元素是.NET數(shù)據(jù)提供程序,其目的是為了實(shí)現(xiàn)數(shù)據(jù)操作和對(duì)數(shù)據(jù)

33、的快速、只進(jìn)、只讀訪問(wèn),為此包含了幾個(gè)對(duì)象:Connection對(duì)象提供與各種不同類型數(shù)據(jù)源的連接;Command對(duì)象能夠訪問(wèn)用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過(guò)程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫(kù)命令,其包含的可選Parameters集合中可以定義數(shù)據(jù)庫(kù)命令或存儲(chǔ)過(guò)程的參數(shù);DataReader從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流,以便對(duì)數(shù)據(jù)進(jìn)行快速、只進(jìn)、只讀訪問(wèn);最后,DataAdapter提供連接DataSet:對(duì)象和數(shù)據(jù)源的橋梁。DataAdapter使用SelectCommand對(duì)象在數(shù)據(jù)源中執(zhí)行SQL命令,以便將數(shù)據(jù)加載到DataSet中,并可以使用InsertCommand,UpdateCo

34、mmand或DeleteCommand對(duì)象將DataSet中數(shù)據(jù)的更改返回到數(shù)據(jù)源中??梢詾槿魏螖?shù)據(jù)源編寫.NET數(shù)據(jù)提供程序,在.NET框架中附帶了兩個(gè).NET數(shù)據(jù)提供程序:SQL Server .NET數(shù)據(jù)提供程序和OLE DB .NET數(shù)據(jù)提供程序。ADO.NET有效地從數(shù)據(jù)操作中將數(shù)據(jù)訪問(wèn)分解為多個(gè)可以單獨(dú)使用或一前一后使用的不連續(xù)組件。ADO. NET包含用于連接到數(shù)據(jù)庫(kù)、執(zhí)行命令和檢索結(jié)果的.NET數(shù)據(jù)提供程序,它是一組包括Connection, Command, DataReader和DataAdapter對(duì)象在內(nèi)的組件:同時(shí)既可以直接處理檢索到的結(jié)果,也可以將其放入ADO.NE

35、T中的另一核心組件:DataSet中。DataSet是ADO.NET的斷開式結(jié)構(gòu)的核心組件。相對(duì)于ADO,DataSet是在ADO.NET中加入的全新對(duì)象,使用該對(duì)象的目的是為了實(shí)現(xiàn)獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問(wèn)。因此,它可以用于多種不同的數(shù)據(jù)源,DataSet包含一個(gè)或多個(gè)的集合,這些DataTable對(duì)象中可以包含主鍵、外鍵、約束等信息,DataTable對(duì)象之間還可以包含關(guān)系信息等。所以,可以將DataSet組件看做是一個(gè)脫機(jī)的、保存在內(nèi)存中的、由多個(gè)數(shù)據(jù)源提供其數(shù)據(jù)的微型關(guān)系數(shù)據(jù)庫(kù)5。 ADO.NET中各個(gè)組件對(duì)象之間的關(guān)系如圖3.2所示:圖3.2 ADO.NET中各個(gè)組件對(duì)象之間的關(guān)系圖

36、3.2 C# 簡(jiǎn)介基于WEB的應(yīng)用系統(tǒng),在Internet/Intranet技術(shù)推廣以來(lái),得到了迅速發(fā)展。無(wú)論是銀行、政府的內(nèi)部計(jì)算機(jī)應(yīng)用系統(tǒng),還是在互聯(lián)網(wǎng)上的應(yīng)用服務(wù)系統(tǒng),基于WEB的計(jì)算機(jī)應(yīng)用系統(tǒng)都發(fā)揮著越來(lái)越多的作用。逐漸成為計(jì)算機(jī)應(yīng)用系統(tǒng)的主流。C#是微軟公司的.NET框架技術(shù)的一部分,旨在建立WEB應(yīng)用程序和XML WEB服務(wù)。C#使用編譯的、事件驅(qū)動(dòng)編程模型從而提高運(yùn)行速度和分離應(yīng)用程序邏輯和用戶界面。使用C#可以很容易的開發(fā)基于三層架構(gòu)的B/S應(yīng)用程序6。C#又叫ASP+,但并不是ASP的簡(jiǎn)單升級(jí),而是Microsoft推出的新一代Active Server Pages腳本語(yǔ)言。

37、ASP NET是Microsoft發(fā)展的新型體系結(jié)構(gòu).NET框架中的核心要素。C#完全基于模塊和組件,具有更好的可擴(kuò)展性和可定制性,C#建立在CLR ( Common Language Runtime,通用語(yǔ)言運(yùn)行庫(kù))基礎(chǔ)之上,它主要用于在服務(wù)器上開發(fā)功能強(qiáng)大的Web應(yīng)用。C#具有如下的優(yōu)點(diǎn):(1) 速度奇快,所有的C#代碼(包括服務(wù)器腳本)都經(jīng)過(guò)了編譯后運(yùn)行,所以執(zhí)行效率極高。(2) 可用XCOPY輕松完成部署及應(yīng)用升級(jí)。C#支持應(yīng)用程序的實(shí)時(shí)更新。管理員不必關(guān)掉網(wǎng)絡(luò)服務(wù)器或者甚至不用停止應(yīng)用程序的運(yùn)行就可以更新應(yīng)用程序。(3) 代碼與內(nèi)容分離。C#程序通過(guò)Code-Behind、用戶控件、

38、自定義控件及組件這四種方法將程序結(jié)構(gòu)與執(zhí)行代碼分離,使程序的邏輯結(jié)構(gòu)一目了然,便于團(tuán)隊(duì)開發(fā)。(4) 廣泛的移動(dòng)設(shè)備支持。C#的移動(dòng)控件使開發(fā)人員可以面向廣泛的移動(dòng)設(shè)備,包括支持Web的移動(dòng)電話、尋呼機(jī)和個(gè)人數(shù)字助理(PDA)。(5) 輕松構(gòu)建和使用Web服務(wù)。由于C#和.NET遠(yuǎn)程處理建立在.NET Framework之上,因此它們可以使創(chuàng)建XML Web services變得更為容易7。3.3 SQL Server 2000SQL Server 2000是建立在 SQL Server 7.0 在可伸縮性、可用性、可管理性和數(shù)據(jù)倉(cāng)庫(kù)成功的基礎(chǔ)上,并且引入了針對(duì)電子商務(wù)的重要新功能8。第四章 系

39、統(tǒng)的功能設(shè)計(jì)4.1 功能概述本系統(tǒng)要實(shí)現(xiàn)用戶對(duì)自助銀行的所有操作:賬戶管理、出入賬管理、系統(tǒng)維護(hù)管理等功能。(一) 自助銀行賬戶管理模塊:本模塊又包括賬戶資料添加模塊、賬戶資料管理模塊等子模塊。(二)出入賬管理模塊:本模塊又包括出入賬資料添加、出入賬資料管理模塊等子模塊。 (三) 系統(tǒng)維護(hù)管理:本模塊又包括公司用戶設(shè)置模塊、重新登錄模塊、數(shù)據(jù)管理模塊等子模塊。根據(jù)上功能模塊圖,可設(shè)計(jì)出相對(duì)應(yīng)的系統(tǒng)數(shù)據(jù)流程圖。如下:自助模擬銀行管理系統(tǒng)登陸系統(tǒng)系統(tǒng)信息管理數(shù)據(jù)備份ATM賬戶管理出入賬管理用戶信息管理數(shù)據(jù)還原自助模擬銀行管理系統(tǒng)數(shù)據(jù)輸出退出系統(tǒng)4.2 后臺(tái)數(shù)據(jù)庫(kù)設(shè)計(jì)4.2.1 存儲(chǔ)過(guò)程介紹1. 考

40、慮使用存儲(chǔ)過(guò)程的理由相對(duì)于使用一般的SqlCommand 對(duì)象的 T-SQL語(yǔ)句,使用存儲(chǔ)過(guò)程可以使SqlCommand 對(duì)象的 T-SQL語(yǔ)句并入數(shù)據(jù)訪問(wèn)代碼更好的位置。由于應(yīng)用程序隨著時(shí)間的推移增添了一些功能,因此其內(nèi)部可能包含一些復(fù)雜的 T-SQL 過(guò)程代碼。存儲(chǔ)過(guò)程為封裝此代碼提供了一個(gè)替換位置。大多數(shù)人可能對(duì)存儲(chǔ)過(guò)程已有所了解,但對(duì)于那些不了解存儲(chǔ)過(guò)程的人員而言,存儲(chǔ)過(guò)程是指一組作為單個(gè)代碼單元一起存儲(chǔ)于數(shù)據(jù)庫(kù)中的 T-SQL 語(yǔ)句。您可以使用輸入?yún)?shù)傳入運(yùn)行時(shí)信息,并取回作為結(jié)果集或輸出參數(shù)的數(shù)據(jù)。存儲(chǔ)過(guò)程在首次運(yùn)行時(shí)將被編譯。這將產(chǎn)生一個(gè)執(zhí)行計(jì)劃 - 實(shí)際上是 Microsoft

41、 SQL Server 為在存儲(chǔ)過(guò)程中獲取由 T-SQL 指定的結(jié)果而必須采取的步驟的記錄。然后,執(zhí)行計(jì)劃在內(nèi)存中得到緩存,以備以后使用。這樣會(huì)改善存儲(chǔ)過(guò)程的性能,因?yàn)?SQL Server 無(wú)需為確定如何處理代碼而重新分析它,而只需引用緩存的計(jì)劃即可。這個(gè)緩存的計(jì)劃一直可用,直到SQL Server 重新啟動(dòng),或直到它由于使用率較低而溢出內(nèi)存9。2. 性能緩存的執(zhí)行計(jì)劃曾使存儲(chǔ)過(guò)程較之查詢更有性能優(yōu)勢(shì)。但對(duì)于 SQL Server 的幾個(gè)最新版本,執(zhí)行計(jì)劃已針對(duì)所有 T-SQL 批處理進(jìn)行了緩存,而不管它們是否在存儲(chǔ)過(guò)程中。因此,基于此功能的性能已不再是存儲(chǔ)過(guò)程的賣點(diǎn)。任何使用靜態(tài)語(yǔ)法,且提

42、交頻率足以阻止執(zhí)行計(jì)劃溢出內(nèi)存的 T-SQL 批處理將會(huì)獲得同樣的性能好處?!办o態(tài)”部分是關(guān)鍵;任何更改,即使像添加注釋這樣無(wú)關(guān)緊要的更改,也將導(dǎo)致無(wú)法與緩存的計(jì)劃相匹配,從而將無(wú)法重復(fù)使用計(jì)劃。但是,當(dāng)存儲(chǔ)過(guò)程可以用于降低網(wǎng)絡(luò)流量時(shí),它們?nèi)匀荒軌蛱峁┬阅芎锰帯D恍柙诰W(wǎng)絡(luò)中發(fā)送 EXECUTE stored_proc_name 語(yǔ)句,而非整個(gè) T-SQL 例程,這可以在復(fù)雜操作中廣泛使用。設(shè)計(jì)良好的存儲(chǔ)過(guò)程可以將交易記錄端與服務(wù)器之間的許多往返過(guò)程簡(jiǎn)化為單個(gè)調(diào)用。此外,使用存儲(chǔ)過(guò)程使您能夠增強(qiáng)對(duì)執(zhí)行計(jì)劃的重復(fù)使用,由此可以通過(guò)使用遠(yuǎn)程過(guò)程調(diào)用 (RPC) 處理服務(wù)器上的存儲(chǔ)過(guò)程而提高性能。使

43、用 StoredProcedure 的SqlCommand.CommandType 時(shí),存儲(chǔ)過(guò)程通過(guò) RPC 執(zhí)行。RPC 封裝參數(shù)和調(diào)用服務(wù)器端過(guò)程的方式使引擎能夠輕松地找到匹配的執(zhí)行計(jì)劃,并只需插入更新的參數(shù)值。考慮使用存儲(chǔ)過(guò)程提高性能時(shí),最后要考慮是否要充分利用 T-SQL 的優(yōu)點(diǎn)。請(qǐng)考慮要如何處理數(shù)據(jù)。 (1) 是否要使用基于集合的操作,或執(zhí)行 T-SQL 中完全支持的其他操作?那么存儲(chǔ)過(guò)程就是一個(gè)選擇,而內(nèi)聯(lián)查詢也可以使用。(2) 是否嘗試執(zhí)行基于行的操作,或復(fù)雜的字符串處理?那么可能要重新考慮在T-SQL 中進(jìn)行這種處理,這不包括使用存儲(chǔ)過(guò)程,至少要到 Yukon 發(fā)布并且公共語(yǔ)言

44、運(yùn)行庫(kù) (CLR) 集成可用后,才能使用存儲(chǔ)過(guò)程。3. 可維護(hù)性和抽象要考慮的另一個(gè)潛在優(yōu)勢(shì)是可維護(hù)性。理想情況下,數(shù)據(jù)庫(kù)架構(gòu)從不更改,業(yè)務(wù)規(guī)則不被修改,但在現(xiàn)實(shí)環(huán)境中,情況則完全不同。既然情況如此,那么如果可以修改存儲(chǔ)過(guò)程以包括新 X、Y 和 Z 表(為支持新的銷售活動(dòng)而添加了這些表)中的數(shù)據(jù),而不是在應(yīng)用程序代碼中的某個(gè)位置更改此信息,則維護(hù)對(duì)您來(lái)說(shuō)可能比較容易。在存儲(chǔ)過(guò)程中更改此信息使得更新對(duì)應(yīng)用程序而言具有透明性。您仍然返回相同的銷售信息,即使存儲(chǔ)過(guò)程的內(nèi)部實(shí)現(xiàn)已經(jīng)更改。更新存儲(chǔ)過(guò)程通常比更改、測(cè)試以及重新部署程序集需要較少的時(shí)間和精力。 另外,通過(guò)抽象化實(shí)現(xiàn)并將此代碼保存在存儲(chǔ)過(guò)程中

45、,任何需要訪問(wèn)數(shù)據(jù)的應(yīng)用程序均可以獲取一致的數(shù)據(jù)。您無(wú)需在多個(gè)位置維護(hù)相同的代碼,用戶便可獲取一致的信息。在存儲(chǔ)過(guò)程中存儲(chǔ) T-SQL 的另一個(gè)可維護(hù)性優(yōu)點(diǎn)是更好的版本控制。您可以對(duì)創(chuàng)建和修改存儲(chǔ)過(guò)程的腳本進(jìn)行版本控制,就像可以對(duì)任何其他源代碼模塊進(jìn)行版本控制一樣。通過(guò)使用 Microsoft Visual SourceSafe 或某個(gè)其他源代碼控制工具,您可以輕松地恢復(fù)到或引用舊版本的存儲(chǔ)過(guò)程。 在使用存儲(chǔ)過(guò)程提高可維護(hù)性時(shí)應(yīng)值得注意的一點(diǎn)是,它們無(wú)法阻止您對(duì)架構(gòu)和規(guī)則進(jìn)行所有可能的更改。如果更改范圍大到需要對(duì)輸入存儲(chǔ)過(guò)程的參數(shù)進(jìn)行更改,或者要更改由其返回的數(shù)據(jù),則您仍需要更新程序集中的代碼

46、以添加參數(shù)、更新GetValue()調(diào)用,等等。要注意的另一個(gè)問(wèn)題是,由于存儲(chǔ)過(guò)程將應(yīng)用程序綁定到SQL Server,因此使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯將限制應(yīng)用程序的可移植性。如果應(yīng)用程序的可移植性在您的環(huán)境中非常重要,則將業(yè)務(wù)邏輯封裝在不特定于RDBMS的中間層中可能是一個(gè)更佳的選擇。 4. 安全性考慮使用存儲(chǔ)過(guò)程的最終原因是它們可用于增強(qiáng)安全性。 就管理用戶對(duì)信息的訪問(wèn)而言,通過(guò)向用戶授予對(duì)存儲(chǔ)過(guò)程(而不是基礎(chǔ)表)的訪問(wèn)權(quán)限,它們可以提供對(duì)特定數(shù)據(jù)的訪問(wèn)。存儲(chǔ)過(guò)程可以看成是SQL Server視圖,除非存儲(chǔ)過(guò)程接受用戶的輸入以動(dòng)態(tài)更改顯示的數(shù)據(jù)。存儲(chǔ)過(guò)程還可以解決代碼安全問(wèn)題。它們可以防止某

47、些類型的SQL插入攻擊。主要是一些使用運(yùn)算符(如AND或OR)將命令附加到有效輸入?yún)?shù)值的攻擊。在應(yīng)用程序受到攻擊時(shí),存儲(chǔ)過(guò)程還可以隱藏業(yè)務(wù)規(guī)則的實(shí)現(xiàn)。這對(duì)于將此類信息視為知識(shí)產(chǎn)權(quán)的公司非常重要。另外,使用存儲(chǔ)過(guò)程使您可以使用ADO.NET中提供的SqlParameter類指定存儲(chǔ)過(guò)程參數(shù)的數(shù)據(jù)類型。這為驗(yàn)證用戶提供的值類型(作為深層次防御性策略的一部分)提供了一個(gè)簡(jiǎn)單方法。在縮小可接受用戶輸入的范圍方面,參數(shù)在內(nèi)聯(lián)查詢中與在存儲(chǔ)過(guò)程中一樣有用。使用存儲(chǔ)過(guò)程僅僅能夠增強(qiáng)數(shù)據(jù)庫(kù)安全性,而不能完全使數(shù)據(jù)庫(kù)免受攻擊。如果數(shù)據(jù)庫(kù)的安全性或編碼做法不完善仍然會(huì)受到攻擊。對(duì)SQL Server角色創(chuàng)建和分

48、配如果不加注意將導(dǎo)致人們?cè)L問(wèn)到不應(yīng)看到的數(shù)據(jù)。同時(shí),如果認(rèn)為使用存儲(chǔ)過(guò)程便可防止所有SQL插入代碼攻擊(例如,將數(shù)據(jù)操作語(yǔ)言 (DML) 附加到輸入?yún)?shù)),后果將是一樣的。另外,無(wú)論T-SQL位于代碼還是位于存儲(chǔ)過(guò)程中,使用參數(shù)進(jìn)行數(shù)據(jù)類型驗(yàn)證都不是萬(wàn)無(wú)一失的。所有用戶提供的數(shù)據(jù)(尤其是文本數(shù)據(jù))在傳遞到數(shù)據(jù)庫(kù)之前都應(yīng)受到附加的驗(yàn)證。5. 使用存儲(chǔ)過(guò)程的優(yōu)缺點(diǎn)使用存儲(chǔ)過(guò)程封裝應(yīng)用邏輯的優(yōu)點(diǎn)如下:(1) DBA+Developer分工明確,之間代碼模塊化。減少數(shù)據(jù)庫(kù)操作員和程序員的錯(cuò)誤。(2) 數(shù)據(jù)庫(kù)安全性;可以設(shè)置連接字符串中賬號(hào)只可訪問(wèn)存儲(chǔ)過(guò)程,不可操作表。這樣數(shù)據(jù)完整性也有保證。(3) 存

49、儲(chǔ)過(guò)程是編譯過(guò)的,執(zhí)行快。(4) 事務(wù)的級(jí)別,存儲(chǔ)過(guò)程級(jí)別的事務(wù),ADO.net級(jí)別的事務(wù)比較。一致性。(5) 減少網(wǎng)絡(luò)通信量。一個(gè)需要數(shù)行 Transact-SQL 代碼的操作由一條執(zhí)行過(guò)程代碼的單獨(dú)語(yǔ)句就可實(shí)現(xiàn),而不需要在網(wǎng)絡(luò)中發(fā)送數(shù)行代碼。使用存儲(chǔ)過(guò)程封裝應(yīng)用邏輯的缺點(diǎn)如下:(1) 編程語(yǔ)言SQL功能較差(不包括 SQL 2005)(2) 與編程環(huán)境集成不夠(不包括 SQL 2005)(3) 移植性差(不同數(shù)據(jù)庫(kù))(4) 數(shù)據(jù)庫(kù)服務(wù)器壓力大4.2.2 數(shù)據(jù)庫(kù)的表的設(shè)計(jì)根據(jù)項(xiàng)目要求進(jìn)行數(shù)據(jù)庫(kù)中表格的建立。根據(jù)對(duì)用戶的需求分析,在項(xiàng)目中,需要記錄銀行的基本信息、交易記錄的基本信息、銀行的操作

50、信息。數(shù)據(jù)庫(kù)的設(shè)計(jì)范式是數(shù)據(jù)庫(kù)設(shè)計(jì)所需要滿足的規(guī)范,滿足這些規(guī)范的數(shù)據(jù)庫(kù)是簡(jiǎn)潔的、結(jié)構(gòu)明晰的,同時(shí),不會(huì)發(fā)生插入(insert)、刪除(delete)和更新(update)操作異常。反之則是亂七八糟,不僅給數(shù)據(jù)庫(kù)的編程人員制造麻煩,而且面目可憎,可能存儲(chǔ)了大量不需要的冗余信息。范式的介紹:第一范式(1NF):數(shù)據(jù)庫(kù)表中的字段都是單一屬性的,不可再分。這個(gè)單一屬性由基本類型構(gòu)成,包括整型、實(shí)數(shù)、字符型、邏輯型、日期型等。第二范式(2NF):數(shù)據(jù)庫(kù)表中不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的部分函數(shù)依賴(部分函數(shù)依賴指的是存在組合關(guān)鍵字中的某些字段決定非關(guān)鍵字段的情況),也即所有非關(guān)鍵字段都完全依賴于

51、任意一組候選關(guān)鍵字。第三范式(3NF):在第二范式的基礎(chǔ)上,數(shù)據(jù)表中如果不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式。所謂傳遞函數(shù)依賴,指的是如果存在“A B C”的決定關(guān)系,則C傳遞函數(shù)依賴于A。因此,滿足第三范式的數(shù)據(jù)庫(kù)表應(yīng)該不存在如下依賴關(guān)系:關(guān)鍵字段 非關(guān)鍵字段x 非關(guān)鍵字段y鮑依斯-科得范式(BCNF):在第三范式的基礎(chǔ)上,數(shù)據(jù)庫(kù)表中如果不存在任何字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式??梢韵谌妒絼h除異常、插入異常和更新異常13。系統(tǒng)中還需要有用戶的登錄信息表用于記錄用戶的登錄信息。登錄信息表中應(yīng)該有登錄的用戶名和密碼,其中登錄名為主鍵。4.2.3

52、 設(shè)計(jì)局部ER模式 1實(shí)體和屬性的定義:1)管理員用戶類別(用戶名,密碼,權(quán)限,注冊(cè)時(shí)間等)管理員用戶用戶名權(quán)限密碼注冊(cè)時(shí)間圖4-2管理員用戶實(shí)體與屬性的定義賬戶信息2)賬戶信息類別(姓名,身份證,性別,聯(lián)系電話,地址,注冊(cè)時(shí)間等)姓名地址性別注冊(cè)時(shí)間時(shí)間圖4-3賬戶信息實(shí)體與屬性的定義3)交易記錄信息類別(姓名,性別,身份證,電話,地址) 交易信息轉(zhuǎn)入賬戶類型轉(zhuǎn)出賬戶身份證圖4-4 交易記錄信息實(shí)體與屬性的定義2 實(shí)體關(guān)系定義:ER模型的“聯(lián)系”用于刻畫實(shí)體之間的關(guān)聯(lián)。一種完整的方式是對(duì)局部結(jié)構(gòu)中任意兩個(gè)實(shí)體類型,依據(jù)需求分析的結(jié)果,考察局部結(jié)構(gòu)中任意兩個(gè)實(shí)體類型之間是否存在聯(lián)系。若有聯(lián)系,

53、進(jìn)一步確定是1:1、1:N、M:N的關(guān)系。還要考察一個(gè)實(shí)體類型內(nèi)部是否存在聯(lián)系,兩個(gè)實(shí)體類型之間是否存在聯(lián)系,多個(gè)實(shí)體類型之間是否存在聯(lián)系,等等針對(duì)本系統(tǒng)分析如下:實(shí)體間的關(guān)系: 一個(gè)管理員可以管理多個(gè)自助銀行賬戶,而一個(gè)自助銀行賬戶只能被一個(gè)管理員管理。N1ATM賬戶管理員圖4-6 自助銀行賬戶與管理員信息管理1:N(一對(duì)多的關(guān)系) 一個(gè)管理員可以管理多個(gè)出入賬信息,而一個(gè)出入賬信息只可以被一個(gè)管理員管理N1出入賬信息管理員圖4-7管理員與出入賬信息1:N(一對(duì)多的關(guān)系)設(shè)計(jì)全局ER模式 所有局部ER模式都設(shè)計(jì)好了后,接下來(lái)就是把它們綜合成單一的全局概念結(jié)構(gòu)。全局概念結(jié)構(gòu)不僅要

54、支持所有局部ER模式,而且必須合理地表示一個(gè)完整、一致的數(shù)據(jù)庫(kù)概念結(jié)構(gòu)。1) 確定公共實(shí)體類型 為了給多個(gè)局部ER模式的合并提供開始合并的基礎(chǔ),首先要確定各局部結(jié)構(gòu)中的公共實(shí)體類型。在這一步中我們僅根據(jù)實(shí)體類型名和鍵來(lái)認(rèn)定公共實(shí)體類型。一般把同名實(shí)體類型作為公共實(shí)體類型的一類候選,把具有相同鍵的實(shí)體類型作為公共實(shí)體類型的另一類候選。2) 局部ER模式的合并 合并的原則是:首先進(jìn)行兩兩合并;先合并那些現(xiàn)實(shí)世界中有聯(lián)系的局部結(jié)構(gòu);合并從公共實(shí)體類型開始,最后再加入獨(dú)立的局部結(jié)構(gòu)。3) 消除沖突 沖突分為三類:屬性沖突、結(jié)構(gòu)沖突、命名沖突。 設(shè)計(jì)全局ER模式的目的不在于把若干局部ER模式形式上合并為

55、一個(gè)ER模式,而在于消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概念模型。4) 全局ER模式的優(yōu)化 在得到全局ER模式后,為了提高數(shù)據(jù)庫(kù)系統(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)系無(wú)冗余。4.2.4數(shù)據(jù)字典數(shù)據(jù)字典是在新系統(tǒng)數(shù)據(jù)流程圖基礎(chǔ)上,進(jìn)一步定義和描述所有數(shù)據(jù)項(xiàng)的工具,是關(guān)于數(shù)據(jù)的數(shù)據(jù)。它包括對(duì)一切動(dòng)態(tài)數(shù)據(jù)和表態(tài)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)和相互關(guān)系等的說(shuō)明,是數(shù)據(jù)分析和數(shù)據(jù)管理的重要工具。數(shù)據(jù)字典實(shí)際上是新系統(tǒng)的所有數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論