50基于.net的在線圖書管理銷售系統(tǒng)本科學位論文_第1頁
50基于.net的在線圖書管理銷售系統(tǒng)本科學位論文_第2頁
50基于.net的在線圖書管理銷售系統(tǒng)本科學位論文_第3頁
50基于.net的在線圖書管理銷售系統(tǒng)本科學位論文_第4頁
50基于.net的在線圖書管理銷售系統(tǒng)本科學位論文_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于。NET的在線圖書管理銷售系統(tǒng)緒論1.1項目背景圖書作為一種知識記錄及傳播的重要載體,是我們生活中不可或缺的一種商品。長期以來,圖書主要是通過實體店鋪進行銷售的。這種銷售方式有很多弊端,如圖書查詢不方便、圖書銷售成本較高、讀者購書受時間及空間限制較大等。隨著個人電腦及互聯(lián)網(wǎng)技術的快速發(fā)展,人類的生存方式在迅速的改變著,在線圖書銷售作為一種典型的Web電子商務系統(tǒng)也迅速的發(fā)展并深入人們的日常生活中[1]。越來越多的人更愿意足不出戶就可以挑選購買自己喜歡的各種書籍,這樣大大縮短了購書的時間,提高了效率。在線圖書銷售管理系統(tǒng)跨越了時間和空間的限制,簡化了銷售流程,降低了銷售成本,并且給消費者帶來了便利,是對傳統(tǒng)圖書銷售方式的有力補充,并有可能在今后成為最主要的圖書銷售方式[2]。本系統(tǒng)正是在這樣的背景下進行設計和實現(xiàn)。1.2關于本系統(tǒng)的基本介紹本系統(tǒng)采用B/S結構進行設計,選擇ASP.Net+SQLServer作為開發(fā)平臺,使用C#作為服務器端主要開發(fā)語言,客戶端采用html和Javascript語言進行開發(fā)。在系統(tǒng)的開發(fā)中,運用到了XML建模,ORM映射技術,數(shù)據(jù)庫存儲過程等多個主流的計算機技術。本系統(tǒng)主要包括用戶管理模塊、圖書管理模塊、作者管理模塊、文章管理模塊、專題管理模塊、圖書在線銷售模塊、BBS在線交流系統(tǒng)及數(shù)據(jù)管理模塊等多個子模塊,實現(xiàn)了圖書、人員、訂單、庫存的信息化管理,同時為圖書作者、編者和讀者提供了有效的交流平臺,讀者可以向作者及編者及時有效的反映自己的需求和感受。本系統(tǒng)架設方便,操作簡單,用戶只需具備最基本的計算機操作能力,經(jīng)過簡單的培訓即可熟練的使用本系統(tǒng)。本系統(tǒng)面向出版社、書店和其他各類圖書經(jīng)銷機構及個人,通過本系統(tǒng)可以使圖書的管理更加方便,同時拓寬了圖書銷售的渠道,幫助企業(yè)和個人獲取更大的價值。1.3可行性分析可行性研究的主要目標是:進一步明確系統(tǒng)的目標、規(guī)模與功能,對系統(tǒng)開發(fā)背景、必要性和意義進行調查分析并根據(jù)需要和可能提出開發(fā)系統(tǒng)的初步方案與計劃。下面將從技術可行性、經(jīng)濟可行性、運營可行性三個方面進行描述:(1)技術可行性:本系統(tǒng)采用Windows作為操作平臺。數(shù)據(jù)庫管理系統(tǒng)選用SQLserver2005,該數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)庫之間的數(shù)據(jù)復制功能,可代替現(xiàn)有系統(tǒng)單據(jù)數(shù)據(jù)的手工傳遞工作,降低出錯率,提高數(shù)據(jù)的可用性。本系統(tǒng)的開發(fā)平臺選用VisualStudio2005,這是目前web數(shù)據(jù)庫應用軟件的主流開發(fā)平臺,開發(fā)技術十分成熟。(2)經(jīng)濟可行性:本系統(tǒng)的開發(fā)只需要一次性投入少量資金即可完成,在之后的維護中只需很少的人力成本和設備維護費用。采用本系統(tǒng)對圖書進行管理及銷售,可減少人工開支,節(jié)省資金,并且可大大提高信息量的取得,縮短信息處理周期提高員工信息的利用率,使銷售質量更上一個臺階。(3)運營可行性1)本系統(tǒng)操作簡單,易于理解,只需通過簡單培訓,上手較快,營運環(huán)境要求低。2)面對于系統(tǒng)設計還應該以“標準性、安全性、高效性、保密性、可維護性”為標準,在著眼于當前實用的基礎上,為將來系統(tǒng)的擴展,升級留有余地。1.3本章小結本章主要對該項目的背景進行介紹,并從技術可行性、經(jīng)濟可行性、運營可行性三個方面對項目進行分析。

2相關技術分析2.1.NET開發(fā)技術介紹2.1.1.NETFramework簡介.NETFramework是支持生成和運行下一代應用程序和XMLWebservices的內部Windows組件。.NETFramework旨在實現(xiàn)下列目標:提供一個一致的面向對象的編程環(huán)境,而無論對象代碼是在本地存儲和執(zhí)行,還是在本地執(zhí)行但在Internet上分布,或者是在遠程執(zhí)行的。提供一個將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。提供一個可提高代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)執(zhí)行安全性的代碼執(zhí)行環(huán)境。提供一個可消除腳本環(huán)境或解釋環(huán)境的性能問題的代碼執(zhí)行環(huán)境。使開發(fā)人員的經(jīng)驗在面對類型大不相同的應用程序(如基于Windows的應用程序和基于Web的應用程序)時保持一致。按照工業(yè)標準生成所有通信,以確?;?NETFramework的代碼可與任何其他代碼集成。.NETFramework具有兩個主要組件:公共語言運行庫和.NETFramework類庫。公共語言運行庫是.NETFramework的基礎。可以將運行庫看作一個在執(zhí)行時管理代碼的代理,它提供內存管理、線程管理和遠程處理等核心服務,并且還強制實施嚴格的類型安全以及可提高安全性和可靠性的其他形式的代碼準確性。事實上,代碼管理的概念是運行庫的基本原則。以運行庫為目標的代碼稱為托管代碼,而不以運行庫為目標的代碼稱為非托管代碼。.NETFramework的另一個主要組件是類庫,它是一個綜合性的面向對象的可重用類型集合,可以使用它開發(fā)多種應用程序,這些應用程序包括傳統(tǒng)的命令行或圖形用戶界面(GUI)應用程序,也包括基于ASP.NET所提供的最新創(chuàng)新的應用程序(如Web窗體和XMLWebservices)。.NETFramework可由非托管組件承載,這些組件將公共語言運行庫加載到它們的進程中并啟動托管代碼的執(zhí)行,從而創(chuàng)建一個可以同時利用托管和非托管功能的軟件環(huán)境。.NETFramework不但提供若干個運行庫宿主,而且還支持第三方運行庫宿主的開發(fā)[3]。圖2-1顯示公共語言運行庫和類庫與應用程序之間以及與整個系統(tǒng)之間的關系。該插圖還顯示托管代碼如何在更大的結構內運行。圖2-1.NETFramework圖2-1.NETFramework環(huán)境Fig2-1.NETFrameworkEnvironment下面將對.NETFramework的主要組件和功能進行更加詳細的描述。(1)公共語言運行庫的功能公共語言運行庫管理內存、線程執(zhí)行、代碼執(zhí)行、代碼安全驗證、編譯以及其他系統(tǒng)服務。這些功能是在公共語言運行庫上運行的托管代碼所固有的。至于安全性,取決于包括托管組件的來源(如Internet、企業(yè)網(wǎng)絡或本地計算機)在內的一些因素,托管組件被賦予不同程度的信任。這意味著即使用在同一活動應用程序中,托管組件既可能能夠執(zhí)行文件訪問操作、注冊表訪問操作或其他須小心使用的功能,也可能不能夠執(zhí)行這些功能。運行庫強制實施代碼訪問安全。例如,用戶可以相信嵌入在Web頁中的可執(zhí)行文件能夠在屏幕上播放動畫或唱歌,但不能訪問他們的個人數(shù)據(jù)、文件系統(tǒng)或網(wǎng)絡。這樣,運行庫的安全性功能就使通過Internet部署的合法軟件能夠具有特別豐富的功能。運行庫還通過實現(xiàn)稱為通用類型系統(tǒng)(CTS)的嚴格類型驗證和代碼驗證基礎結構來加強代碼可靠性。CTS確保所有托管代碼都是可以自我描述的。各種Microsoft和第三方語言編譯器生成符合CTS的托管代碼。這意味著托管代碼可在嚴格實施類型保真和類型安全的同時使用其他托管類型和實例。此外,運行庫的托管環(huán)境還消除了許多常見的軟件問題。例如,運行庫自動處理對象布局并管理對對象的引用,在不再使用它們時將它們釋放。這種自動內存管理解決了兩個最常見的應用程序錯誤:內存泄漏和無效內存引用。運行庫還提高了開發(fā)人員的工作效率。例如,程序員可以用他們選擇的開發(fā)語言編寫應用程序,卻仍能充分利用其他開發(fā)人員用其他語言編寫的運行庫、類庫和組件。任何選擇以運行庫為目標的編譯器供應商都可以這樣做。以.NETFramework為目標的語言編譯器使得用該語言編寫的現(xiàn)有代碼可以使用.NETFramework的功能,這大大減輕了現(xiàn)有應用程序的遷移過程的工作負擔。盡管運行庫是為未來的軟件設計的,但是它也支持現(xiàn)在和以前的軟件。托管和非托管代碼之間的互操作性使開發(fā)人員能夠繼續(xù)使用所需的COM組件和DLL。運行庫旨在增強性能。盡管公共語言運行庫提供許多標準運行庫服務,但是它從不解釋托管代碼。一種稱為實時(JIT)編譯的功能使所有托管代碼能夠以它在其上執(zhí)行的系統(tǒng)的本機語言運行。同時,內存管理器排除了出現(xiàn)零碎內存的可能性,并增大了內存引用區(qū)域以進一步提高性能[4]。(2).NETFramework類庫.NETFramework類庫是一個與公共語言運行庫緊密集成的可重用的類型集合。該類庫是面向對象的,易于學習與使用。此外,第三方組件可與.NETFramework中的類無縫集成。例如.NETFramework集合類實現(xiàn)一組可用于開發(fā)自定義的集合類的接口。自定義的集合類將與.NETFramework中的類無縫地混合。正如面向對象的類庫所要求的那樣.NETFramework類型能夠完成一系列常見編程任務(包括諸如字符串管理、數(shù)據(jù)收集、數(shù)據(jù)庫連接以及文件訪問等任務)。除這些常見任務之外,類庫還包括支持多種專用開發(fā)方案的類型。例如,可使用.NETFramework開發(fā)下列類型的應用程序和服務:控制臺應用程序。WindowsGUI應用程序(Windows窗體)。ASP.NET應用程序。XMLWebservices。Windows服務。例如,Windows窗體類是一組綜合性的可重用的類型,它們大大簡化了WindowsGUI的開發(fā)。如果要編寫ASP.NETWeb窗體應用程序,可使用Web窗體類。2.1.2C#語言特性C#是專門為.NET應用而開發(fā)出的語言。這從根本上保證了C#與.NET框架的完美結合。在.NET運行庫的支持下.NET框架的各種優(yōu)點在C#中表現(xiàn)得淋漓盡致[5]。C#比較突出的特點包括:簡潔的語法精心地面向對象設計與Web的緊密結合完整的安全性與錯誤處理版本處理技術靈活性與兼容性(1)簡潔的語法在缺省的情況下,C#的代碼在.NET框架提供的“可操縱”環(huán)境下運行,不允許直接地內存操作。它所帶來的最大的特色是沒有了指針。與此相關的是,那些在C++中被瘋狂使用的操作符(例如:“::”、“->”和“.,”)已經(jīng)不再出現(xiàn)。C#只支持一個“.”,對于用戶來說,現(xiàn)在需要理解的一切僅僅是名字的嵌套而已。C#用真正的關鍵字換掉了那些把活動模板庫(ActiveTemplateLibrary,ALT)和COM搞得亂糟糟的偽關鍵字,如OLE_COLOR、BOOL、VARIANT_BOOL、DISPID_XXXXX等等。每種C#操作符在.NET類庫中都有了新名字。語法中的冗余是C++中的常見的問題,比如"const"和"#define"、各種各樣的字符類型等等。C#對此進行了簡化,只保留了常見的形式,而別的冗余形式從它的語法結構中被清除了出去。(2)精心地面向對象設計有一定軟件開發(fā)經(jīng)驗的人都知道,從Smalltalk開始,面向對象的話題就始終纏繞著任何一種現(xiàn)代程序設計語言。的確,C#具有面向對象的語言所應有的一切特性:封裝、繼承與多態(tài)性,這并不出奇。然而,通過精心地面向對象設計,從高級商業(yè)對象到系統(tǒng)級應用,C#建造廣泛組件的絕對選擇。在C#的類型系統(tǒng)中,每種類型都可以看作一個對象。C#提供了一個叫做裝箱(boxing)與拆箱(unboxing)的機制來完成這種操作,而不給使用者帶來麻煩。C#只允許單繼承,即一個類不會有多個基類,從而避免了類型定義的混亂。C#中沒有了全局函數(shù),沒有了全局變量,也沒有了全局常數(shù)。一切的一切,都必須封裝在一個類之中。使用C#編寫出來的代碼將具有更好的可讀性,并且減少了發(fā)生命名沖突的可能。整個C#的類模型是建立在.NET虛擬對象系統(tǒng)(VisualObjectSystem,VOS)的基礎之上,其對象模型是.NET基礎架構的一部分,而不再是其本身的組成部分。在下面將會談到,這樣做的另一個好處是兼容性[6]。借助于從VB中得來的豐富的RAD經(jīng)驗,C#具備了良好的開發(fā)環(huán)境。結合自身強大的面向對象功能,C#使得開發(fā)人員的生產(chǎn)效率得到極大的提高。對于公司而言,軟件開發(fā)周期的縮短將能使它們更好應付網(wǎng)絡經(jīng)濟的競爭。在功能與效率的杠桿上人們終于找到了支點。(3)與Web的緊密結合.NET中新的應用程序開發(fā)模型意味著越來越多的解決方案需要與Web標準相統(tǒng)一,例如超文本標記語言(HypertextMarkupLanguage,HTML)和XML。由于歷史的原因,現(xiàn)存的一些開發(fā)工具不能與Web緊密地結合。SOAP的使用使得C#克服了這一缺陷,大規(guī)模深層次的分布式開發(fā)從此成為可能。由于有了Web服務框架的幫助,對程序員來說,網(wǎng)絡服務看起來就象是C#的本地對象。程序員們能夠利用他們已有的面向對象的知識與技巧開發(fā)Web服務。僅需要使用簡單的C#語言結構,C#組件將能夠方便地為Web服務,并允許它們通過Internet被運行在任何操作系統(tǒng)上的任何語言所調用。舉個例子,XML已經(jīng)成為網(wǎng)絡中數(shù)據(jù)結構傳遞的標準,為了提高效率,C#允許直接將XML數(shù)據(jù)映射成為結構。這樣就可以有效的處理各種數(shù)據(jù)。(4)完整的安全性與錯誤處理語言的安全性與錯誤處理能力,是衡量一種語言是否優(yōu)秀的重要依據(jù)。任何人都會犯錯誤,即使是最熟練的程序員也不例外:忘記變量的初始化,對不屬于自己管理范圍的內存空間進行修改。這些錯誤常常產(chǎn)生難以預見的后果。一旦這樣的軟件被投入使用,尋找與改正這些簡單錯誤的代價將會是讓人無法承受的。C#的先進設計思想可以消除軟件開發(fā)中的許多常見錯誤,并提供了包括類型安全在內的完整的安全性能。為了減少開發(fā)中的錯誤,C#會幫助開發(fā)者通過更少的代碼完成相同的功能,這不但減輕了編程人員的工作量,同時更有效地避免了錯誤的發(fā)生。.NET運行庫提供了代碼訪問安全特性,它允許管理員和用戶根據(jù)代碼的ID來配置安全等級。在缺省情況下,從Internet和Intranet下載的代碼都不允許訪問任何本地文件和資源。比方說,一個在網(wǎng)絡上的共享目錄中運行的程序,如果它要訪問本地的一些資源,那么異常將被觸發(fā),它將會無情地被異常扔出去,若拷貝到本地硬盤上運行則一切正常。內存管理中的垃圾收集機制減輕了開發(fā)人員對內存管理的負擔。.NET平臺提供的垃圾收集器(GarbageCollection,GC)將負責資源的釋放與對象撤銷時的內存清理工作。變量是類型安全的。C#中不能使用未初始化的變量,對象的成員變量由編譯器負責將其置為零,當局部變量未經(jīng)初始化而被使用時,編譯器將做出提醒;C#不支持不安全的指向,不能將整數(shù)指向引用類型,例如對象,當進行下行指向時,C#將自動驗證指向的有效性;C#中提供了邊界檢查與溢出檢查功能。(5)版本處理技術C#提供內置的版本支持來減少開發(fā)費用,使用C#將會使開發(fā)人員更加輕易地開發(fā)和維護各種商業(yè)用戶。升級軟件系統(tǒng)中的組件(模塊)是一件容易產(chǎn)生錯誤的工作。在代碼修改過程中可能對現(xiàn)存的軟件產(chǎn)生影響,很有可能導致程序的崩潰。為了幫助開發(fā)人員處理這些問題,C#在語言中內置了版本控制功能。例如:函數(shù)重載必須被顯式聲明,而不會象在C++或java中經(jīng)常發(fā)生的那樣不經(jīng)意地被進行,這可以防止代碼級錯誤和保留版本化的特性。另一個相關的特性是接口和接口繼承的支持。這些特性可以保證復雜的軟件可以被方便地開發(fā)和升級。(6)靈活性和兼容性在簡化語法的同時,C#并沒有失去靈活性。盡管它不是一種無限制語言,比如:它不能用來開發(fā)硬件驅動程序,在默認的狀態(tài)下沒有指針等等,但是,這并不影響其使用的靈巧性。如果需要,C#允許編程人員將某些類或者類的某些方法聲明為非安全的。這樣一來,就將能夠使用指針、結構和靜態(tài)數(shù)組,并且調用這些非安全代碼不會帶來任何其它的問題。此外,它還提供了一個另外的東西(這樣的稱呼多少有些不敬)來模擬指針的功能—delegates(委托)。再舉一個例子:C#不支持類的多繼承,但是可以通過對接口的繼承實現(xiàn)這一功能。正是由于其靈活性,C#允許與C風格的需要傳遞指針型參數(shù)的API進行交互操作,DLL的任何入口點都可以在程序中進行訪問。C#遵守.NET公用語言規(guī)范(CommonLanguageSpecification,CLS),從而保證了C#組件與其它語言組件間的互操作性。元數(shù)據(jù)(Metadata)概念的引入既保證了兼容性,又實現(xiàn)了類型安全[7]。2.1.3ASP.NET技術概要ASP.NET是統(tǒng)一的Web應用程序平臺,它提供了為建立和部署企業(yè)級Web應用程序所必需的服務。ASP.NET為能夠面向任何瀏覽器或設備的更安全的、更強的可升級性、更穩(wěn)定的應用程序提供了新的編程模型和基礎結構。ASP.NET是Microsoft.NETFramework的一部分,是一種可以在高度分布的Internet環(huán)境中簡化應用程序開發(fā)的計算環(huán)境。.NETFramework包含公共語言運行庫,它提供了各種核心服務,如內存管理、線程管理和代碼安全。它也包含.NETFramework類庫,這是一個開發(fā)人員用于創(chuàng)建應用程序的綜合的、面向對象的類型集合[8]。ASP.NET提供了下面的優(yōu)點:可管理性:ASP.NET使用基于文本的、分級的配置系統(tǒng),簡化了將設置應用于服務器環(huán)境和Web應用程序的工作。因為配置信息是存儲為純文本的,因此可以在沒有本地管理工具的幫助下應用新的設置。配置文件的任何變化都可以自動檢測到并應用于應用程序。詳細信息,請參閱ASP.NET配置。安全:ASP.NET為Web應用程序提供了默認的授權和身份驗證方案。開發(fā)人員可以根據(jù)應用程序的需要很容易地添加、刪除或替換這些方案。詳細信息,請參閱ASP.NET安全。易于部署:通過簡單地將必要的文件復制到服務器上,ASP.NET應用程序即可以部署到該服務器上。不需要重新啟動服務器,甚至在部署或替換運行的已編譯代碼時也不需要重新啟動。詳細信息,請參閱ASP.NET部署。增強的性能:ASP.NET是運行在服務器上的已編譯代碼。與傳統(tǒng)的ActiveServerPages(ASP)不同,ASP.NET能利用早期綁定、實時(JIT)編譯、本機優(yōu)化和全新的緩存服務來提高性能。詳細信息,請參閱ASP.NET性能監(jiān)視。靈活的輸出緩存:根據(jù)應用程序的需要,ASP.NET可以緩存頁數(shù)據(jù)、頁的一部分或整個頁。緩存的項目可以依賴于緩存中的文件或其他項目,或者可以根據(jù)過期策略進行刷新。國際化:ASP.NET在內部使用Unicode以表示請求和響應數(shù)據(jù)??梢詾槊颗_計算機、每個目錄和每頁配置國際化設置。移動設備支持:ASP.NET支持任何設備上的任何瀏覽器。開發(fā)人員使用與用于傳統(tǒng)的桌面瀏覽器相同的編程技術來處理新的移動設備。擴展性和可用性:ASP.NET被設計成可擴展的、具有特別專有的功能來提高群集的、多處理器環(huán)境的性能。此外,Internet信息服務(IIS)和ASP.NET運行時密切監(jiān)視和管理進程,以便在一個進程出現(xiàn)異常時,可在該位置創(chuàng)建新的進程使應用程序繼續(xù)處理請求。詳細信息,請參閱ASP.NET進程隔離。跟蹤和調試:ASP.NET提供了跟蹤服務,該服務可在應用程序級別和頁面級別調試過程中啟用??梢赃x擇查看頁面的信息,或者使用應用程序級別的跟蹤查看工具查看信息。在開發(fā)和應用程序處于生產(chǎn)狀態(tài)時,ASP.NET支持使用.NETFramework調試工具進行本地和遠程調試。當應用程序處于生產(chǎn)狀態(tài)時,跟蹤語句能夠留在產(chǎn)品代碼中而不會影響性能。與.NETFramework集成:因為ASP.NET是.NETFramework的一部分,整個平臺的功能和靈活性對Web應用程序都是可用的。也可從Web上流暢地訪問.NET類庫以及消息和數(shù)據(jù)訪問解決方案。ASP.NET是獨立于語言之外的,所以開發(fā)人員能選擇最適于應用程序的語言。另外,公共語言運行庫的互用性還保存了基于COM開發(fā)的現(xiàn)有投資。與現(xiàn)有ASP應用程序的兼容性:ASP和ASP.NET可并行運行在IISWeb服務器上而互不沖突;不會發(fā)生因安裝ASP.NET而導致現(xiàn)有ASP應用程序崩潰的可能。ASP.NET僅處理具有.aspx文件擴展名的文件。具有.asp文件擴展名的文件繼續(xù)由ASP引擎來處理。然而,應該注意的是會話狀態(tài)和應用程序狀態(tài)并不在ASP和ASP.NET頁面之間共享[9]。ASP.NET啟用了分布式應用程序的兩個功能:Web窗體和XMLWeb服務。相同的配置和調試基本結構支持這兩種功能。使用Web窗體技術建立強大的基于窗體的網(wǎng)頁。Web窗體頁面使用可重復使用的內建組件或自定義組件以簡化頁面中的代碼。使用ASP.NET創(chuàng)建的XMLWeb服務可遠程訪問服務器。使用XMLWeb服務,商家可以提供其數(shù)據(jù)或商業(yè)規(guī)則的可編程接口,之后可以由客戶端和服務器端應用程序獲得和操作。通過在客戶端/服務器和服務器/服務器方案中的防火墻范圍內使用標準(如XML消息處理和HTTP),XMLWeb服務可啟用數(shù)據(jù)交換。以任何語言編寫的且運行在任何操作系統(tǒng)上的程序都能調用XMLWeb服務[10]。2.1.4VisualStudio2005簡介VisualStudio是微軟公司出品的一款大型應用軟件,從最初的VisualStudio97開始就成為編程的重要工具。VisualStudio的開發(fā)經(jīng)歷了VisualStudio97,VisualStudio6.0,VisualStudio.NET(2002),VisualStudio.NET2003,VisualStudio2005。本部分將會對VisualStudio進行簡要的介紹。進行.NET開發(fā)的工具并非只有VisualStudio,最常見的如Windows自帶的記事本實用程序也可以實現(xiàn).NET程序開發(fā)。事實上VisualStudio成為了.NET開發(fā)的首選工具。VisualStudio是一套完整的開發(fā)工具集,包含了大量的功能。它主要用于生成ASP.NETWeb應用程序、XMLWebServices、桌面應用程序和移動應用程序。VisualBasic、VisualC++、VisualC#和VisualJ#全都使用相同的集成開發(fā)環(huán)境(IDE)。利用此IDE可以共享工具且有助于創(chuàng)建混合語言解決方案,使程序可以使用不同的語言共同開發(fā)。另外,這些語言利用了.NETFramework的功能,通過此框架可使用簡化ASPWeb應用程序和XMLWebServices開發(fā)的關鍵技術。VisualStudio2005的集成開發(fā)環(huán)境中為開發(fā)人員提供了大量的實用工具以提高工作效率。這些工具包括了自動編譯、項目創(chuàng)建向導、創(chuàng)建部署工程等等。相比較于VisualStudio2003,VisualStudio2005不僅僅是在.NET版本的支持上發(fā)生了變化,其在許多方面都提供了改進乃至全新的功能。VisualStudio2005的新增功能集中在以下幾個方面:開發(fā)環(huán)境中的新增功能。代碼編輯中的新增功能。項目、解決方案和項中的新增功能。生成、測試和部署中的新增功能。VisualStudio2005調試器的新增功能。VisualStudio2005中擴展性和自動化的新增功能。VisualStudio幫助中的新增功能。2.2數(shù)據(jù)庫技術介紹2.2.1SQL語言特性SQL全稱是“結構化查詢語言(StructuredQueryLanguage)”,最早的是IBM的圣約瑟研究實驗室為其關系數(shù)據(jù)庫管理系統(tǒng)SYSTEMR開發(fā)的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle,Sybase,Informix,SQLserver這些大型的數(shù)據(jù)庫管理系統(tǒng),還是像VisualFoxPro,PowerBuilder這些微機上常用的數(shù)據(jù)庫開發(fā)系統(tǒng),都支持SQL語言作為查詢語言。StructuredQueryLanguage包含4個部分:數(shù)據(jù)查詢語言DQL-DataQueryLanguageSELECT數(shù)據(jù)操縱語言DQL-DataManipulationLanguageINSERT,UPDATE,DELETE數(shù)據(jù)定義語言DQL-DataDefinitionLanguageCREATE,ALTER,DROP數(shù)據(jù)控制語言DQL-DataControlLanguageCOMMITWORK,ROLLBACKWORK70年代初,E.E.Codd首先提出了關系模型。70年代中期,IBM公司在研制SYSTEMR關系數(shù)據(jù)庫管理系統(tǒng)中研制了SQL語言,最早的SQL語言(叫SEQUEL2)是在1976年11月的IBMJournalofR&D上公布的。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS數(shù)據(jù)庫系統(tǒng)中也實現(xiàn)了SQL。1986年10月,美國ANSI采用SQL作為關系數(shù)據(jù)庫管理系統(tǒng)的標準語言(ANSIX3.135-1986),后為國際標準化組織(ISO)采納為國際標準。1989年,美國ANSI采納在ANSIX3.135-1989報告中定義的關系數(shù)據(jù)庫管理系統(tǒng)的SQL標準語言,稱為ANSISQL89,該標準替代ANSIX3.135-1986版本。該標準為下列組織所采納:(1)國際標準化組織(ISO),為ISO9075-1989報告“DatabaseLanguageSQLWithIntegrityEnhancement”(2)美國聯(lián)邦政府,發(fā)布在TheFederalInformationProcessingStandardPublication(FIPSPUB)127目前,所有主要的關系數(shù)據(jù)庫管理系統(tǒng)支持某些形式的SQL語言,大部分數(shù)據(jù)庫打算遵守ANSISQL89標準。SQL廣泛地被采用正說明了它的優(yōu)點。它使全部用戶,包括應用程序員、DBA管理員和終端用戶受益非淺。(1)非過程化語言SQL是一個非過程化的語言,因為它一次處理一個記錄,對數(shù)據(jù)提供自動導航。SQL允許用戶在高層的數(shù)據(jù)結構上工作,而不對單個記錄進行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。SQL不要求用戶指定對數(shù)據(jù)的存放方法。這種特性使用戶更易集中精力于要得到的結果。所有SQL語句使用查詢優(yōu)化器,它是RDBMS的一部分,由它決定對指定數(shù)據(jù)存取的最快速度的手段。查詢優(yōu)化器知道存在什么索引,哪兒使用合適,而用戶從不需要知道表是否有索引,表有什么類型的索引。(2)統(tǒng)一的語言SQL可用于所有用戶的DB活動模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、應用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶?;镜腟QL命令只需很少時間就能學會,最高級的命令在幾天內便可掌握。SQL為許多任務提供了命令,包括:查詢數(shù)據(jù)在表中插入、修改和刪除記錄建立、修改和刪除數(shù)據(jù)對象控制對數(shù)據(jù)和數(shù)據(jù)對象的存取保證數(shù)據(jù)庫一致性和完整性以前的數(shù)據(jù)庫管理系統(tǒng)為上述各類操作提供單獨的語言,而SQL將全部任務統(tǒng)一在一種語言中。(3)是所有關系數(shù)據(jù)庫的公共語言由于所有主要的關系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS轉到另一個。所有用SQL編寫的程序都是可以移植的[11]。2.2.2SQLServer2005簡介SQLServer2005是一個全面的數(shù)據(jù)庫平臺,使用集成的商業(yè)智能(BI)工具提供了企業(yè)級的數(shù)據(jù)管理。SQLServer2005數(shù)據(jù)庫引擎為關系型數(shù)據(jù)和結構化數(shù)據(jù)提供了更安全可靠的存儲功能,可以為用戶構建和管理用于業(yè)務的高可用和高性能的數(shù)據(jù)應用程序。SQLServer2005數(shù)據(jù)引擎是本企業(yè)數(shù)據(jù)管理解決方案的核心。此外SQLServer2005結合了分析、報表、集成和通知功能。這使企業(yè)可以構建和部署經(jīng)濟有效的BI解決方案,幫助企業(yè)的團隊通過記分卡、Dashboard、Webservices和移動設備將數(shù)據(jù)應用推向業(yè)務的各個領域。與MicrosoftVisualStudio、MicrosoftOfficeSystem以及新的開發(fā)工具包(包括BusinessIntelligenceDevelopmentStudio)的緊密集成使SQLServer2005與眾不同。無論是開發(fā)人員、數(shù)據(jù)庫管理員、信息工作者還是決策者,SQLServer2005都可以為其提供創(chuàng)新的解決方案,幫助用戶從數(shù)據(jù)中更多地獲益。SQLServer2005引入很多具有價值的新功能,這些功能將有助于用戶在以下三個主要方面提高業(yè)務:(1)企業(yè)數(shù)據(jù)管理SQLServer2005針對行業(yè)和分析應用程序提供了一種更安全可靠和更高效的數(shù)據(jù)平臺。SQLServer的最新版本不僅是迄今為止SQLServer的最大發(fā)行版本,而且是最為可靠安全的版本。(2)開發(fā)人員生產(chǎn)效率SQLServer2005提供了一種端對端的開發(fā)環(huán)境,其中涵蓋了多種新技術,可幫助開發(fā)人員大幅度提高生產(chǎn)效率。(3)商業(yè)智能SQLServer2005的綜合分析、集成和數(shù)據(jù)遷移功能使各個企業(yè)無論采用何種基礎平臺都可以擴展其現(xiàn)有應用程序的價值。構建于SQLServer2005的BI解決方案使所有員工可以及時獲得關鍵信息,從而在更短的時間內制定更好的決策[12]。在安全性方面,SQLServer2005增加了很多新的特性,主要包括默認關閉、權限控制、用戶與計劃分離、強口令策略等。(1)默認關閉SQLServer2005默認將只會啟用少數(shù)核心功能和服務,這樣,就限制了暴露的“表面積”,并且,管理員只會啟用那些他們環(huán)境所必需的服務和功能。在SQLServer2005中默認被禁用的服務和組件包括:.NET框架、ServiceBroker網(wǎng)絡連接組件、分析服務的HTTP連接組件。其他一些服務,例如SQLServer代理、全文檢索、新的數(shù)據(jù)轉換(DTS)服務,被設置為手動啟動,并且請求直接啟動的,則會被設置為自動啟動。(2)細化的權限控制SQLServer2005中新的安全模型允許管理員在某個細化等級上,和某個指定范圍內管理權限,這樣,管理權限更加容易,并且權限最低原則得到遵循。(3)用戶和計劃分離SQLServer2005通過切斷了用戶和他所擁有的數(shù)據(jù)庫對象之間的隱式鏈接,簡化了安全管理操作。例如,在SQLServer以前的版本中,如果您想移除一個用戶,您不得不首先移除這位用戶所擁有的數(shù)據(jù)庫對象,或重新指派其所有權,這顯而易見地會使整個過程變得復雜,并有可能影響到很多應用程序的使用。而在SQLServer2005新的安全模型中,移除用戶不會要求更改任何一個應用程序。(4)為標準登錄提供強制口令策略管理員能夠對標準登錄帳號指定和WindowsServer中密碼策略風格一樣的策略,這樣,同一個策略就能應用到域中所有的帳號上。(5)在模塊上執(zhí)行關聯(lián)文本SQLServer2005允許為一個模塊中語句的執(zhí)行指定關聯(lián)文本。這個功能同時也在細化權限管理時起了非常好的作用。(6)數(shù)據(jù)定義語言(DDL)觸發(fā)器在SQLServer2005中,能為DDL操作指定觸發(fā)器,提供了審核DDL操作的補充機制選擇。(7)數(shù)據(jù)庫內的數(shù)據(jù)加密SQLServer2005本身就具有加密功能,完全集成了一個密鑰管理架構。(8)集群身份驗證SQLServer2005集群支持針對虛擬服務器的Kerberos身份驗證。(9)多代理帳號SQLServer2005代理服務支持多個代理帳號(每個作業(yè)子系統(tǒng)一個)。(10)不依賴本地安全驗證(LSA)數(shù)據(jù)庫SQLServer代理使用代理帳號時不再需要訪問LSA。因此,代理服務不再需要以本地管理員身份啟用了。(11)SQL事件探查器不再需要系統(tǒng)管理員權限SQLServer2005提供了一個新的權限,允許沒有系統(tǒng)管理員權限的用戶運行事件探查器。(12)分析服務器的通訊加密與服務器端定義的策略一致默認情況下,客戶端/服務器之間的通訊是被加密的。為了保證安全,服務器端策略可定義為拒絕不加密的通訊。(13)分析服務器中細化的管理角色SQLServer2005中將會有更多的權限可供選擇。除了在線分析處理(OLAP)管理員之外,數(shù)據(jù)庫管理員能夠在一個單獨數(shù)據(jù)庫的上下文中支配管理權限。新的對象權限能允許用戶只看到對象的定義(而不能訪問對象)和只能處理對象。(14)SQLServer代理作業(yè)的角色改進了的SQLServer代理支持以更細化的方式針對作業(yè)指派權限。(15)改進針對分析服務的審核功能SQLServer2005分析服務將包含與SQL事件探查器集成的新審核功能。本系統(tǒng)對安全性具有很高的要求,SQLServer2005這些新的安全特性為系統(tǒng)的安全提供了保障。2.3UML建模語言介紹軟件工程領域在1995年至1997年取得了前所未有的進展,其成果超過軟件工程領域過去15年來的成就總和。其中最重要的、具有劃時代重大意義的成果之一就是統(tǒng)一建模語言(UML:Unified

Modeling

Language)的出現(xiàn)。統(tǒng)一建模語言(UML)是用來對軟件密集系統(tǒng)進行描述、構造、視化和文檔編制的一種語言。

UML是一種定義良好、易于表達、功能強大且普遍適用的建模語言。它溶入了軟件工程領域的新思想、新方法和新技術。它的作用域不限于支持面向對象的分析與設計,還支持從需求分析開始的軟件開發(fā)的全過程。首先,也是最重要的一點,統(tǒng)一建模語言融合了Booch、OMT和OOSE方法中的概念,它是可以被上述及其他方法的使用者廣泛采用的一門簡單、一致、通用的建模語言。

其次,統(tǒng)一建模語言擴展了現(xiàn)有方法的應用范圍。特別值得一提的是,UML的開發(fā)者們把并行分布式系統(tǒng)的建模作為UML的設計目標,也就是說,UML具有處理這類問題的能力。

第三,統(tǒng)一建模語言是標準的建模語言,而不是一個標準的開發(fā)流程。雖然UML的應用必然以系統(tǒng)的開發(fā)流程為背景,但根據(jù)經(jīng)驗,不同的組織,不同的應用領域需要不同的開發(fā)過程。舉個例子來說,開發(fā)錯綜復雜的軟件是非常有趣的工作,但開發(fā)這種軟件與構造嚴格實時的航空電子系統(tǒng)是大不一樣的,后者是性命攸關的大事。因此首先需要把精力集中在設計通用的元模型上(統(tǒng)一不同方法的語義),其次是建立通用的表示法(提供對這些語義的形象化的表達)。雖然UML的開發(fā)者們將繼續(xù)倡導從用例驅動到體系結構為中心最后反復改進、不斷添加的軟件開發(fā)過程,但實際上設計標準的開發(fā)流程并不是非常必要的。

作為一種建模語言,UML的定義包括UML語義和UML表示法兩個部分。(1)UML語義描述基于UML的精確元模型定義。元模型為UML的所有元素在語法和語義上提供了簡單、一致、通用的定義性說明,使開發(fā)者能在語義上取得一致,消除了因人而異的最佳表達方法所造成的影響。此外UML還支持對元模型的擴展定義。(2)UML表示法定義UML符號的表示法,為開發(fā)者或開發(fā)工具使用這些圖形符號和文本語法為系統(tǒng)建模提供了標準。這些圖形符號和文字所表達的是應用級的模型,在語義上它是UML元模型的實例。標準建模語言UML的重要內容可以由下列五類圖(共9種圖形)來定義:第一類:用例圖從用戶角度描述系統(tǒng)功能,并指出各功能的操作者。第二類:靜態(tài)圖(Static

diagram)包括類圖、對象圖和包圖。其中類圖描述系統(tǒng)中類的靜態(tài)結構。不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關聯(lián)、依賴、聚合等,也包括類的內部結構(類的屬性和操作)。類圖描述的是一種靜態(tài)關系,在系統(tǒng)的整個生命周期都是有效的。對象圖是類圖的實例,幾乎使用與類圖完全相同的標識。他們的不同點在于對象圖顯示類的多個對象實例,而不是實際的類。一個對象圖是類圖的一個實例。由于對象存在生命周期,因此對象圖只能在系統(tǒng)某一時間段存在。包由包或類組成,表示包與包之間的關系。包圖用于描述系統(tǒng)的分層結構。第三類:行為圖(Behavior

diagram)描述系統(tǒng)的動態(tài)模型和組成對象間的交互關系。其中狀態(tài)圖描述類的對象所有可能的狀態(tài)以及事件發(fā)生時狀態(tài)的轉移條件。通常,狀態(tài)圖是對類圖的補充。在實用上并不需要為所有的類畫狀態(tài)圖,僅為那些有多個狀態(tài)其行為受外界環(huán)境的影響并且發(fā)生改變的類畫狀態(tài)圖。而活動圖描述滿足用例要求所要進行的活動以及活動間的約束關系,有利于識別并行活動。第四類:交互圖(Interactive

diagram)描述對象間的交互關系。其中順序圖顯示對象之間的動態(tài)合作關系,它強調對象之間消息發(fā)送的順序,同時顯示對象之間的交互;合作圖描述對象間的協(xié)作關系,合作圖跟順序圖相似,顯示對象間的動態(tài)合作關系。除顯示信息交換外,合作圖還顯示對象以及它們之間的關系。如果強調時間和順序,則使用順序圖;如果強調上下級關系,則選擇合作圖。這兩種圖合稱為交互圖。第五類:實現(xiàn)圖(Implementation

diagram)其中構件圖描述代碼部件的物理結構及各部件之間的依賴關系。一個部件可能是一個資源代碼部件、一個二進制部件或一個可執(zhí)行部件。它包含邏輯類或實現(xiàn)類的有關信息。部件圖有助于分析和理解部件之間的相互影響程度。2.4ORM技術概要

對象關系映射(ObjectRelationalMapping,簡稱ORM)是一種為了解決面向對象與關系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術。簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對象自動持久化到關系數(shù)據(jù)庫中。本質上就是將數(shù)據(jù)從一種形式轉換到另外一種形式。這也同時暗示者額外的執(zhí)行開銷;然而,如果ORM作為一種中間件實現(xiàn),則會有很多機會做優(yōu)化,而這些在手寫的持久層并不存在。更重要的是用于控制轉換的元數(shù)據(jù)需要提供和管理;但是同樣,這些花費要比維護手寫的方案要少。

對象—關系映射(ORM)技術是隨著面向對象的軟件開發(fā)方法發(fā)展而產(chǎn)生的,面向對象的開發(fā)方法是當今企業(yè)級應用開發(fā)環(huán)境中的主流開發(fā)方法,關系數(shù)據(jù)庫是企業(yè)級應用環(huán)境中永久存放數(shù)據(jù)的主流數(shù)據(jù)存儲系統(tǒng)。對象和關系數(shù)據(jù)是業(yè)務實體的兩種表現(xiàn)形式,業(yè)務實體在內存中表現(xiàn)為對象,在數(shù)據(jù)庫中表現(xiàn)為關系數(shù)據(jù)。內存中的對象之間存在關聯(lián)和繼承關系,而在數(shù)據(jù)庫中,關系數(shù)據(jù)無法直接表達多對多關聯(lián)和繼承關系。因此,對象-關系映射(ORM)系統(tǒng)一般以中間件的形式存在,主要實現(xiàn)程序對象到關系數(shù)據(jù)庫數(shù)據(jù)的映射。

面向對象是從軟件工程基本原則(如耦合、聚合、封裝)的基礎上發(fā)展起來的,而關系數(shù)據(jù)庫則是從數(shù)學理論發(fā)展而來的,兩套理論存在顯著的區(qū)別。為了解決這個不匹配的現(xiàn)象,對象關系映射技術應運而生。

字母O起源于“對象”(Object),而R則來自于“關系”(Relational)。幾乎所有的程序里面,都存在對象和關系數(shù)據(jù)庫。在業(yè)務邏輯層和用戶界面層中,程序是面向對象的。當對象信息發(fā)生變化的時候,需要把對象的信息保存在關系數(shù)據(jù)庫中。

當開發(fā)一個新的應用程序的時候,如果不使用O/RMapping需要寫不少數(shù)據(jù)訪問層的代碼,用來從數(shù)據(jù)庫保存,刪除,讀取對象信息,等等。同時需要在DAL中寫了很多的方法來讀取對象數(shù)據(jù),改變狀態(tài)對象等等任務。而這些代碼寫起來總是重復的,而絕大多數(shù)DAL代碼的模式都是通用和近似的。以保存對象的方法為例,當傳入一個對象時,需要為SqlCommand對象添加SqlParameter,把所有屬性和對象對應,設置SqlCommand的CommandText屬性為存儲過程,然后運行SqlCommand。對于每個對象都要重復的寫這些代碼。除此之外,還有更好的辦法嗎?有,那就是引入一個O/RMapping。實質上,一個O/RMapping會自動生成DAL。與其自己寫DAL代碼,不如用O/RMapping。用O/RMapping保存,刪除,讀取對象,O/RMapping負責生成SQL,編程人員只需要關心對象就好。

一般的ORM包括以下四部分:一個對持久類對象進行CRUD操作的API;一個語言或API用來規(guī)定與類和類屬性相關的查詢;一個規(guī)定mappingmetadata的工具;一種技術可以讓ORM的實現(xiàn)同事務對象一起進行dirtychecking,lazyassociationfetching以及其他的優(yōu)化操作。2.5本章小結 本章主要對本項目所使用到的技術進行簡單的介紹,主要包括.NET技術,數(shù)據(jù)庫應用開發(fā)技術,UML建模語言,ORM技術及相關開發(fā)工具(VisualStudio2005、SQLServer2005)。

3需求分析3.1需求分析概述需求分析的目的是深入描述軟件的功能和性能,確定軟件設計的限制和軟件同其他系統(tǒng)元素的接口細節(jié),定義軟件的其他有效性需求,細化軟件要處理的數(shù)據(jù)域,最終確定待開發(fā)軟件的功能、性能、數(shù)據(jù)、界面等要求。3.1.1任務概述根據(jù)客戶描述,本系統(tǒng)需要實現(xiàn)如下功能模塊。用戶管理模塊圖書管理模塊作者管理模塊文章管理模塊專題管理模塊圖書在線銷售模塊BBS在線交流系統(tǒng)數(shù)據(jù)管理模塊本系統(tǒng)主要涉及的用戶有兩類:圖書管理人員和普通會員,因此每個模塊都必須考慮到這兩類用戶的不同需求。(1)用戶管理模塊:主要包括用戶的注冊、登錄、個人信息維護、積分管理、權限分配及相關信息查詢。(2)圖書管理模塊:主要包括圖書信息及其相關作者、相關文章的添加、修改、刪除、查詢。(3)作者管理模塊:主要包括作者信息及其相關圖書、相關文章的添加、修改、刪除、查詢。(4)文章管理模塊:主要包括新聞、通訊等信息及其相關圖書、相關作者的添加、修改、刪除、查詢。(5)專題管理模塊:主要包括專題圖書及相關信息的添加、修改、刪除,一般每個專題都包含多套叢書。(6)圖書在線銷售模塊:需實現(xiàn)選書、加入購物車、訂單確認、付款、確認收貨及相關信息反饋等所有與電子購物相關的所有功能。(7)BBS在線交流系統(tǒng):需實現(xiàn)發(fā)帖、回帖、刪帖、主題置頂、板塊設置、會員積分計算等功能。(8)數(shù)據(jù)管理模塊:主要包括系統(tǒng)數(shù)據(jù)的自動備份、手動備份及還原。3.1.2用戶特點本系統(tǒng)所面向用戶主要分為以下幾類:普通用戶、信息管理員、系統(tǒng)管理員,其用戶特點如表3-1所示。 表3-1表3-1用戶分類Table3-1UserClasses用戶類型業(yè)務水平計算機水平操作頻度普通用戶無具有基本的計算機操作能力每天信息管理員熟悉具有基本的計算機操作能力每天系統(tǒng)管理員熟悉具有一定的專業(yè)技能每周在項目進行過程中,需根據(jù)不同用戶的不同特點進行系統(tǒng)及界面的設計。對于普通用戶來說,客戶端界面應盡量簡潔清晰,流程需十分明確,保證新用戶能以在最短的時間內熟悉各種常用操作。對于信息管理人員來說,為了能夠保證其工作效率,應根據(jù)其工作習慣進行設計,為其提供方便、友好的交互界面。3.2系統(tǒng)功能性需求分析功能性需求是指系統(tǒng)必須完成的事情,即為了向用戶提供有用的功能,產(chǎn)品必須實現(xiàn)的動作。本系統(tǒng)總體需求框圖如圖3-1。 圖3-1系統(tǒng)需求框圖Fig3-1Diagramofsystemrequirements1)用戶接口模塊用戶接口是網(wǎng)站用戶使用圖書銷售系統(tǒng)服務的入口,所有的在線用戶都通過瀏覽器登錄網(wǎng)站,并進行一系列的查詢,訂購操作。用戶接口模塊包括了用戶信息維護、商品查詢、訂購商品和訂單維護4個部分。管理員接口模塊管理員接口模塊是系統(tǒng)提供給網(wǎng)站維護和管理人員的接口哦。管理員接口模塊包括商品信息維護、內部員工信息維護、訂單處理、銷售情況查詢、報表維護5個部分、網(wǎng)站的一般工作人員通常只具有訂單處理的權限,他們獲得用戶提交的訂單,并根據(jù)庫存情況決定發(fā)貨或者推遲發(fā)貨。網(wǎng)站的管理員具有所有的權限,可以處理客戶的訂單,可以閱覽網(wǎng)站商品的銷售情況、銷售走勢,以及根據(jù)不同的情況及時的調整經(jīng)營戰(zhàn)略,將庫存成本和資金占用率降到最低限度。數(shù)據(jù)服務模塊數(shù)據(jù)服務模塊是系統(tǒng)正常運行的基礎,一般由具有一定計算機專業(yè)技能的系統(tǒng)管理人員進行管理,主要提供了數(shù)據(jù)庫的備份和還原服務。系統(tǒng)管理人員可根據(jù)實際情況制訂數(shù)據(jù)自動備份策略,并不定期的進行手動備份,在系統(tǒng)發(fā)生故障或數(shù)據(jù)庫數(shù)據(jù)受到破壞時進行還原。3.2.1用戶接口模塊用戶接口模塊如圖3-2所示。圖3-2用戶接口Fig3-2UserInterface1)用戶信息維護每個使用該系統(tǒng)的用戶必須經(jīng)過注冊,而注冊時的用戶名是用戶的唯一標識。系統(tǒng)可以接收更多可用的客戶信息,比如購物方面的喜好、經(jīng)濟能力等。如圖3-3所示。 圖3-3用戶信息維護流程Fig3-3FlowofManagingUser’sInformation前置條件:用戶已登錄。2)商品查詢商品查詢模塊可以根據(jù)商品的名稱、種類、價格、廠家等各種條件進行組合查詢。商品查詢結果的列表中,用戶可以進一步的查看詳細信息。如圖3-4所示。 圖3-4商品查詢流程Fig3-4FlowofSearchingProduct前置條件:用戶已登錄。3)訂購圖書可用在根據(jù)喜好得到相應的商品列表后,可以選擇訂購該商品。在訂購商品后,系統(tǒng)會自動保存并更新該用戶的訂單。系統(tǒng)的工作人員可以及時得到訂單并處理,根據(jù)情況選擇發(fā)貨、缺貨或延時發(fā)貨。如圖3-5所示。 圖3-5圖書訂購流程Fig3-5FlowofOrderingBooks前置條件:用戶已登錄、商品可供購買4)訂單維護客戶在訂購商品后可以查詢其訂單的狀態(tài)(包括處理中、發(fā)貨中、缺貨中和已完成),并可以對處理中和缺貨中的訂單進行增加、刪除和修改的操作。訂單修改的結果會及時更新并交給工作人員。如圖3-6所示。 圖3-6訂單維護流程Fig3-6FlowofUpdatingOrders前置條件:用戶已登錄。3.2.2管理員接口模塊管理員模塊是系統(tǒng)管理員使用的核心模塊,是整個網(wǎng)上圖書銷售系統(tǒng)正常運行的基礎。如圖3-7所示。 圖3-7管理員接口Fig3-7Administrator’sInterface1)圖書信息維護系統(tǒng)管理員登錄后何以對系統(tǒng)所有的商品信息進行維護,包括商品價格的調整、商品描述信息的更新、新商品的加入以及過期商品的刪除。 系統(tǒng)的后臺程序可以根據(jù)商品的銷售情況提供給管理員一份詳細的分析報告。管理員可以根據(jù)該報告及時的調整熱門商品的信息(例如將其放到醒目的位置)、對非熱門的商品進行價格調整。這一切的數(shù)據(jù)都來源自系統(tǒng)客戶的查詢和訂購信息。如圖3-8所示。 圖3-8商品更新流程Fig3-8FlowofUpdatingProducts前置條件:管理員已登錄,并具有相應的操作權限。在具體的實現(xiàn)過程中,圖書信息的維護被劃分為以下幾個子模塊:2)內部員工信息維護系統(tǒng)管理員登錄后可以對內部員工的信息進行維護,包括員工個人信息的更新,員工權限的更改等。本系統(tǒng)涉及的使用者包括管理員和普通員工,系統(tǒng)管理員擁有所有的權限,而普通員工一般只有訂單處理的權限。但管理員可以定制任意員工的權限,比如增加他的報表打印權限。如圖3-9所示。 圖3-9內部員工信息處理流程Fig3-9FlowofManagingStaffs’information前置條件:管理員已登錄,并具有相應的操作權限。3)訂單處理訂單處理一般是普通員工的工作。用戶在訂購商品之后,系統(tǒng)會及時更新其訂單,普通員工登錄后,可以獲取未處理的訂單,并根據(jù)庫存情況發(fā)貨或延時發(fā)貨。客戶在查詢商品時會顯示商品的庫存量,但系統(tǒng)的管理者并不希望顯示某商品的庫存為零,因為這樣會失去部分客戶。因此,在訂購商品后可能會出現(xiàn)庫存不足的情況,這時工作人員一般選擇延時發(fā)貨或者拒絕訂單。如果該商品有現(xiàn)貨,那么工作人員確認用戶訂單后選擇發(fā)貨。如圖3-10所示。 圖3-10訂單處理流程Fig3-10FlowofManagingOrders前置條件:管理員已登錄,并具有相應操作權限。4)銷售情況查詢銷售情況查詢是系統(tǒng)編碼過程中非常重要的部分,能夠為企業(yè)管理者的決策提供參考的信息。管理員登錄后,可以得到詳細的銷售情況列表并及時更新熱門商品的信息(如排列位置),可以根據(jù)銷售的走勢和以往的銷售記錄及時判斷部分商品可能會出現(xiàn)庫存不足并及時進貨。由于本功能模塊涉及到企業(yè)的經(jīng)營信息,考慮到商業(yè)信息的安全性,需要管理員級的用戶才可以使用本模塊。如圖3-11所示。 圖3-11銷售查詢處理流程 Fig3-11FlowofSearchingSales前置條件:管理員已登錄,并具有相應操作權限。報表維護報表維護模塊提供查詢結果的打印輸出功能。如圖3-12所示。 圖3-12報表維護處理流程Fig3-12FlowofUpdatingReports前置條件:管理員已登錄,并具有相應操作權限。3.3系統(tǒng)非功能性需求分析非功能性需求指產(chǎn)品必須具備的屬性和品質,如可靠性、性能、響應時間、容錯性、擴展性等。本系統(tǒng)滿足的非功能性需求主要包括:(1)性能需求:在滿足硬件需求的條件下,系統(tǒng)應保證在日獨立訪問IP數(shù)20000,同時在線連接數(shù)500的情況下能夠無故障運行;(2)穩(wěn)定性:本系統(tǒng)基于ASP.NET2.0及SQLServer企業(yè)級數(shù)據(jù)庫實現(xiàn),采用三層架構及組件封裝的開發(fā)方式,可最大限度的保障數(shù)據(jù)的安全及系統(tǒng)的穩(wěn)定運行;(3)易用性:本系統(tǒng)采用B/S架構進行設計,界面友好,用戶不需安裝任何客戶端程序,為客戶提供了最方便的使用方式。同時,管理人員不管身在何處,只要可以連接到Internet就可對系統(tǒng)數(shù)據(jù)進行維護及更新。(4)安全性:本系統(tǒng)采用基于角色的權限管理機制,嚴格控制每個用戶對系統(tǒng)的操作權限。既消除了非計算機專業(yè)人員對系統(tǒng)誤操作帶來的不安全因素,又增強了系統(tǒng)對蓄意破壞行為的防范能力。(5)實用性:本系統(tǒng)是在對用戶需求進行詳細分析后進行的,在開發(fā)過程中采取螺旋式的迭代開發(fā)方式,不斷聽取用戶對系統(tǒng)的要求及建議,及時進行修改,從而保證了系統(tǒng)能夠給用戶帶來真正實用的價值。(6)維護性:本系統(tǒng)采用了獨立的Web服務器及數(shù)據(jù)庫服務器進行架構,對程序和數(shù)據(jù)結構的維護可分開進行。同時,在更新系統(tǒng)時不需中斷已有服務,只需在更新完成后修改URL跳轉地址及數(shù)據(jù)庫連接字符串,基本不會影響終端客戶的使用。(7)擴展性:本系統(tǒng)采用結構化程序設計,每個功能模塊相對獨立,增加新的功能并不會影響原有功能模塊的使用。3.4系統(tǒng)UML用例描述UML(UnifiedModelingLanguage)中文名為統(tǒng)一建模語言,是面向對象分析與設計方法發(fā)展的產(chǎn)物。UML作為一種通用的可視化建模語言,具有統(tǒng)一的語義和符號標識,可用于對軟件項目進行標準化描述,為參與軟件項目的設計及開發(fā)人員提供統(tǒng)一、規(guī)范的參考文檔。本小節(jié)將在系統(tǒng)功能性需求分析的基礎上,使用UML用例圖對系統(tǒng)的功能單元進行描述,為軟件設計及編碼人員提供一種可視化的方式理解系統(tǒng)的功能需求。本系統(tǒng)所面向的用戶主要分為三類:系統(tǒng)管理員、信息管理員、普通會員,其用例圖分別如圖3-13、圖3-14、圖3-15所示。1)系統(tǒng)管理用例 圖3-13系統(tǒng)管理用例Fig3-13UseCaseofSystemManagement2)基本信息管理用例 圖3-14基本信息管理用例Fig3-14UseCaseofBasicInformationManagement3)普通用戶用例 圖3-15普通會員用例Fig3-15UserCaseofNormalMember3.5系統(tǒng)運行環(huán)境1)硬件環(huán)境:為了滿足系統(tǒng)的性能要求,硬件系統(tǒng)需配置獨立的數(shù)據(jù)庫服務器和獨立的Web服務器。數(shù)據(jù)庫服務器的性能直接決定了系統(tǒng)訪問的速度,因此在配置上應具有更高的性能。具體配置如下:數(shù)據(jù)庫服務器為DellPowerEdge2950,其主要配置:CPU:四核至強處理器5310,2x4MB緩存,1.60GHz,1066MH2個;內存:4GB(4x1GB),667MHz,ECC,雙內存列,全緩沖內存條;硬盤:146GB,3.5",15Krpm,SAS硬盤,熱插拔2塊(RAID1);Web服務器為DellPowerEdge2850,其主要配置:CPU:至強處理器2.8GHz/1M,EM64T,800MHz前端總線

1個;內存:2GDD2-400MHZECC1R;硬盤:73GBUltra320(10KRPM,80針)SCSI硬盤2塊(RAID1);同時,為了保證系統(tǒng)的安全,還需配置專業(yè)的硬件防火墻為系統(tǒng)提供有效的保護。之所以選擇專業(yè)的硬件防火墻,而不是傳統(tǒng)的軟件防火墻,主要是基于以下兩點考慮:(1)性能方面的優(yōu)勢。防火墻的性能對防火墻來說是至關重要的,它決定了每秒鐘通過防火墻的數(shù)據(jù)流量。硬件防火墻可以達到千兆級的數(shù)據(jù)流量,而軟件防火墻則不可能達到如此高的速率。在本系統(tǒng)的實際運行中,即使不考慮惡意攻擊的情形,也有可能出現(xiàn)較大的數(shù)據(jù)流量,選擇硬件防火才能最大限度的保證系統(tǒng)的安全。(2)CPU占用率的優(yōu)勢。硬件防火墻的CPU占用率為0,而軟件防火墻就不同了,如果處于節(jié)約成本的考慮將防火墻軟件安裝在提供服務的主機上,當數(shù)據(jù)流量較大時,CPU占用率將是主機的殺手,情況嚴重時更有可能拖垮主機導致服務的中斷。綜合以上兩點原因,同時考慮到成本等因素,本系統(tǒng)最終選用CISCOPIX-515E-R-DMZ-BUN,其具體參數(shù)如下:并發(fā)連接數(shù):13000;網(wǎng)絡吞吐量:170MPPS;安全過濾帶寬:100MB;用戶數(shù)限制:無;入侵檢測:DOS、IDS等;2)軟件環(huán)境:由于系統(tǒng)采用ASP.NET進行架構,該技術來源于美國微軟公司,因此系統(tǒng)環(huán)境的配置基本上是按照微軟公司的推薦進行的。具體配置如下:windows2000(及以上版本)IIS5.0(及以上版本)SQLServer2005(及以上版本)Microsoft.NETFramework2.0(及以上版本)3.6本章小結本章對在線圖書管理銷售系統(tǒng)的用戶需求進行分析,主要從功能性需求和非功能性需求兩個方面進行描述。需求分析是系統(tǒng)設計及實現(xiàn)的重要基礎,其質量的好壞直接關系到整個軟件開發(fā)周期的長短及最終產(chǎn)品質量的高低,必須按照嚴格的標準編寫軟件需求說明書,為后面的開發(fā)奠定良好的基礎。

4系統(tǒng)及數(shù)據(jù)庫總體設計4.1總體設計思路本系統(tǒng)采用模塊化設計與面向對象設計相結合的方式進行構建。4.1.1模塊化設計模塊化設計是將整個待開發(fā)的系統(tǒng)分解成為若干個功能模塊,每個模塊可獨立的開發(fā)、測試。這是一種復雜問題的“分而治之”原則,可以使程序的結構清晰,易于測試和修改。具體來說,模塊是執(zhí)行某一特定任務的數(shù)據(jù)結構和程序代碼。通常將模塊的接口和功能定義為其外部特性,將模塊的數(shù)據(jù)和實現(xiàn)該模塊的程序代碼定義為其內部特性。在模塊設計時,最重要的原則就是實現(xiàn)信息隱蔽和模塊獨立。信息隱蔽原則信息隱蔽是指將每個程序的成分隱蔽或封裝在一個單一的設計模塊中,并且盡可能少的暴露其內部的處理。通??赡苄薷牡臎Q策、數(shù)據(jù)結構的內部連接及其操作細節(jié)、內部特征碼、與計算機硬件相關的細節(jié)等隱蔽起來。通過信息隱蔽可以提高軟件的可修改性、可測試性和可移植性,它是現(xiàn)代軟件設計的一個關鍵性原則。模塊獨立原則模塊獨立原則是指每個模塊完成一個相對獨立的特定子功能,并且最大程度地減少與其他模塊之間的聯(lián)系。保持模塊的高獨立性,是軟件設計中一個很重要的原則。通常用耦合(模塊之間聯(lián)系的緊密程度)和內聚(模塊內部各元素之間聯(lián)系的緊密程度)兩個標準來衡量,設計的目標是高內聚、低耦合。除了以上兩大基本原則之外,在模塊設計時還需注意:保持模塊的大小適中,盡可能減少調用的深度;保證模塊是單入口、單出口的;功能應該是可預測的。4.1.2面向對象設計模塊化設計方法主要是對整個系統(tǒng)進行分解,在具體的實現(xiàn)過程中還需引入面向對象的分析與設計方法。面向對象方法是一種非常實用的軟件開發(fā)方法,它一出現(xiàn)就受到軟件技術人員的青睞,現(xiàn)已成為計算機科學研究的一個重要領域。面向對象方法以客觀世界中的對象為中心,其分析和設計思想與人們的思維方式相一致,分析和設計的結構與客觀世界的實際情況比較接近,容易被人們接受。此外,在現(xiàn)實生活中,用戶的需求經(jīng)常發(fā)生改變,但客觀世界中的對象及對象之間的關系比較穩(wěn)定,因此采用面向對象方法設計的結構也相對比較穩(wěn)定[13]。面向對象的設計方法同樣也需要遵循一些共通的原則,主要包括單一職責原則、開放-封閉原則、依賴倒置原則、接口隔離原則、替換原則,這些原則與模塊化設計方法的中心思想是相一致的,因此保證了能夠在本系統(tǒng)的設計中同時使用到這兩種設計方法。(1)單一職責原則(SRP,SingleResponsibilityPrinciple)一個類,最好只做一件事,只有一個引起它變化的原因。單一職責原則可以看作是低耦合、高內聚在面向對象原則上的引申,將職責定義為引起變化的原因,以提高內聚性來減少引起變化的原因。職責過多,可能引起它變化的原因就越多,這將導致職責依賴,相互之間就產(chǎn)生影響,從而極大的損傷其內聚性和耦合度。單一職責,通常意味著單一的功能,因此不要為類實現(xiàn)過多的功能點,以保證實體只有一個引起它變化的原因。因此,SRP原則的核心就是要求對類的改變只能是一個,對于違反這一原則的類應該進行重構,例如以Fa?ade模式或Proxy模式分離職責,通過基本的方法ExtractInterface、ExtractClass和ExtractMethod進行梳理。(2)開放—封閉原則(OCP,OpenClosedPrinciple)軟件實體應該是可擴展,而不可修改的。也就是說,對擴展是開放的,而對修改是封閉的。因此,開放封閉原則主要體現(xiàn)在兩個方面:對擴展開放,意味著有新的需求或變化時,可以對現(xiàn)有代碼進行擴展,以適應新的情況。對修改封閉,意味著類一旦設計完成,就可以獨立完成其工作,而不要對類進行任何修改?!靶枨罂偸亲兓?、“世界上沒有一個軟件是不變的”,這些言論是對軟件需求最經(jīng)典的表白[13]。從中透射出一個關鍵的意思就是,對于軟件設計者來說,必須在不需要對原有的系統(tǒng)進行修改的情況下,實現(xiàn)靈活的系統(tǒng)擴展。而如何能做到這一點呢?只有依賴于抽象。實現(xiàn)開放封閉的核心思想就是對抽象編程,而不對具體編程,因為抽象相對穩(wěn)定。讓類依賴于固定的抽象,所以對修改就是封閉的;而通過面向對象的繼承和對多態(tài)機制,可以實現(xiàn)對抽象體的繼承,通過覆寫其方法來改變固有行為,實現(xiàn)新的擴展方法,所以對于擴展就是開放的。這是實施開放封閉原則的基本思路,同時這種機制是建立在兩個基本的設計原則的基礎上,這就是Liskov替換原則和合成/聚合復用原則。對于違反這一原則的類,必須進行重構來改善,常用于實現(xiàn)的設計模式主要有TemplateMethod模式和Strategy模式。而封裝變化,是實現(xiàn)這一原則的重要手段,將經(jīng)常發(fā)生變化的狀態(tài)封裝為一個類。(3)依賴倒置原則(DIP,DependencyInversionPrinciple)在傳統(tǒng)的結構化編程中,最上層的模塊通常都要依賴下面的子模塊來實現(xiàn),也稱為高層依賴低層。DIP原則就是要逆轉這種依賴關系,讓高層模塊不要依賴低層模塊。其基本的定義是:1、高層模塊不依賴底層模塊,兩者都依賴抽象;2、抽象不應該依賴于細節(jié),細節(jié)應該依賴于抽象。每個較高層次都為它所需要的服務聲明一個抽象接口,較低的層次實現(xiàn)這些抽象接口,每個高層類都通過該抽象接口使用下一層的服務,接口屬于高層,低層要實現(xiàn)高層的接口,因此現(xiàn)在是低層依賴于高層,是依賴關系倒置和接口所有權的倒置。在實際的開發(fā)過程中,可將其演變?yōu)橐韵乱?guī)則:1、任何變量都不應該持有一個指向具體類的指針或者引用;2、任何類都不應該從具體類派生(始于抽象,來自具體);3、任何方法都不應該覆寫它的任何基類中的已經(jīng)實現(xiàn)了的方法。DIP原則對于那些雖然具體但是卻穩(wěn)定的類來說似乎并不是很合適,如果一個類不太會改變,而且也不太可能創(chuàng)建其他的派生類,那么依賴它似乎并沒有太大的危害。(4)接口隔離原則(ISP,InterfaceSegregationPrinciple)使用多個專門的接口比使用單一的總接口要好。一個類對另外一個類的依賴性應當是建立在最小的接口上的。一個接口代表一個角色,不應當將不同的角色都交給一個接口。沒有關系的接口合并在一起,形成一個臃腫的大接口,這是對角色和接口的污染?!安粦搹娖瓤蛻粢蕾囉谒鼈儾挥玫姆椒?。接口屬于客戶,不屬于它所在的類層次結構。”再通俗點說,不要強迫客戶使用它們不用的方法,如果強迫用戶使用它們不使用的方法,那么這些客戶就會面臨由于這些不使用的方法的改變所帶來的改變[14]。4.2概要設計概要設計也稱為高層設計,主要任務是將軟件需求轉化為數(shù)據(jù)結構和軟件的系統(tǒng)結構[15]。系統(tǒng)總體設計圖如圖4-1所示。 圖4-1系統(tǒng)結構概要設計圖Fig4-1DiagramofSystemDesign用戶登錄系統(tǒng)后首先進行權限認證,只有具備相應權限的用戶身份才能進行相應的模塊進行操作。一般管理人員具有用戶管理、圖書管理、作者管理、資源管理及銷售管理的權限,只有具有計算機背景的系統(tǒng)管理人員才可進入數(shù)據(jù)管理模塊進行操作。4.3各模塊子功能設計總體結構設計是系統(tǒng)詳細設計階段的重要任務之一,是系統(tǒng)概要設計的延伸和補充。其任務是將系統(tǒng)按功能劃分為模塊的層次結構,然后確定模塊的功能及模塊間的調用關系,及模塊間的組成關系。各功能模塊子功能如下:1)系統(tǒng)管理:用戶及權限管理、密碼修改、退出系統(tǒng);2)分類管理:產(chǎn)品(圖書)分類管理、可下載資源分類管理、新聞消息分類管理、作者譯者分類管理、常用關鍵詞列表管理;3)基本信息管理:圖書基本信息管理、叢書基本信息管理、可下載資源管理、新聞消息管理、作者譯者管理、頻道基本信息管理、論壇板塊管理;4)會員管理:注冊會員管理、企業(yè)會員管理、客戶分類管理、供應商管理;5)銷售管理:訂單錄入、銷售退貨單據(jù)管理、對帳單管理、開票管理、結算管理、營銷活動;6)到貨管理:到貨錄入、供應商錄入、供應商確認;7)庫存管理:發(fā)貨錄入、發(fā)貨確認、庫存查詢、庫位管理、盤存、升降值、客戶退貨管理;8)結算管理:供應商結算管理、客戶結算管理;9)工具:郵件群發(fā)、短信群發(fā)、信封打印、百科庫;10)標準文本入庫:模板管理、模板規(guī)則設置、數(shù)據(jù)校對。4.4數(shù)據(jù)庫設計本系統(tǒng)的數(shù)據(jù)庫設計遵循規(guī)范化的數(shù)據(jù)庫設計原則,盡量確保數(shù)據(jù)能正確的發(fā)布到合理的數(shù)據(jù)庫表中,同時注意減少數(shù)據(jù)的冗余,使重復數(shù)據(jù)減到最少,方便對數(shù)據(jù)的維護和一致性檢查。1)用戶信息表結構設計 用戶基本信息表SPGCustomer,主要字段說明如下:CustomerID:用戶編號,取值唯一,為用戶標識字段;LoginPwd:登錄密碼,數(shù)據(jù)內

溫馨提示

  • 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

提交評論