Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)方案與開發(fā)_第1頁
Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)方案與開發(fā)_第2頁
Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)方案與開發(fā)_第3頁
Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)方案與開發(fā)_第4頁
Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)方案與開發(fā)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

摘要以一個(gè)圖書銷售系統(tǒng)的開發(fā)為例,詳細(xì)介紹了基于.Net的圖書銷售系統(tǒng)的開發(fā)過程。圖書銷售作為書店日常的重要業(yè)務(wù),目前在中小型書店中仍存在手工管理,工作效率低下,并且不能及時(shí)了解書店各類圖書的庫存、讀者需求的圖書難以在短時(shí)間里找到、圖書的入庫和更新比較麻煩等問題,不便于動(dòng)態(tài)及時(shí)調(diào)整圖書結(jié)構(gòu)。同時(shí)由于不可避免的人為因素,造成數(shù)據(jù)的遺漏、誤報(bào)等。為了更好地適應(yīng)當(dāng)前書店的銷售需求,緩解手工管理存在的弊端,開發(fā)了此圖書銷售系統(tǒng),該系統(tǒng)向用戶提供的服務(wù)將在傳統(tǒng)的“入庫->銷售->盤點(diǎn)”基礎(chǔ)上,進(jìn)一步提供全方位的信息服務(wù)。本文首先介紹了課題的研究背景和意義,闡述了.Net體系的相關(guān)概念、采用C撐語言開發(fā)的優(yōu)勢(shì),并對(duì)基于UML的軟件工程建模思想、數(shù)據(jù)庫設(shè)計(jì)的理論和方法進(jìn)行分析。然后針對(duì)書店的業(yè)務(wù)進(jìn)行系統(tǒng)的需求分析,給出系統(tǒng)的業(yè)務(wù)模型、功能模型。接下來結(jié)合圖書銷售系統(tǒng)的實(shí)際要求,對(duì)系統(tǒng)進(jìn)行了總體設(shè)計(jì)和數(shù)據(jù)庫的設(shè)計(jì),并給出了數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表示層的具體實(shí)現(xiàn),其次介紹系統(tǒng)的軟件實(shí)現(xiàn),并以關(guān)鍵核心模塊為例給出了系統(tǒng)代碼的具體實(shí)現(xiàn),最后給出了項(xiàng)目的測(cè)試和部署。圖書銷售系統(tǒng)的實(shí)現(xiàn)包括了書店的日常業(yè)務(wù)功能,如圖書管理、采購入庫、銷售管理、庫存管理、信息發(fā)送、測(cè)試影碟、系統(tǒng)設(shè)置等,并且界面簡(jiǎn)單、操作方便。作為一種該研究方向的實(shí)踐性探索,本系統(tǒng)的設(shè)計(jì)與開發(fā)旨在實(shí)現(xiàn)一個(gè)智能化、系統(tǒng)化、信息化的圖書銷售系統(tǒng),以滿足當(dāng)前中小型書店在管理實(shí)踐和業(yè)務(wù)操作中的具體需求,成為書店管理人員的助手?!娟P(guān)鍵詞】.Net;C#;UML;圖書銷售;軟件建?!菊撐念愋汀繎?yīng)用研究第1章緒論1.1研究背景隨著我國經(jīng)濟(jì)的高速發(fā)展,中小企業(yè)在社會(huì)經(jīng)濟(jì)中扮演的角色越來越重要,已成為最多元化和最具創(chuàng)新精神的部分。但是隨著企業(yè)的發(fā)展,客戶的增多,企業(yè)賬目混亂,庫存不準(zhǔn),信息反饋不及時(shí)等問題也接踵而至。這些問題已成為制約中小企業(yè)發(fā)展的瓶頸,嚴(yán)重制約了中小企業(yè)的發(fā)展壯大。比較而言,外資企業(yè)具有更為雄厚的資金實(shí)力、豐富的管理經(jīng)驗(yàn)和先進(jìn)的技術(shù)手段,因此,如果我國的中小企業(yè)不借助先進(jìn)的管理思想轉(zhuǎn)變經(jīng)營理念、使用信息化的手段提高企業(yè)的管理水平和工作效率,將很難在今后的國際競(jìng)爭(zhēng)中取勝。如何借助IT手段、如何通過信息化,加強(qiáng)核心競(jìng)爭(zhēng)力,實(shí)現(xiàn)持續(xù)發(fā)展已成為中小企業(yè)亟待解決的關(guān)鍵問題n3。我國中小企業(yè)有70%是零售企業(yè),企業(yè)經(jīng)營涉及迸、銷、存多個(gè)環(huán)節(jié),涉及商品種類繁多,業(yè)務(wù)量大,庫存管理復(fù)雜,使用手工管理已無法勝任。圖書銷售作為書店日常的重要業(yè)務(wù),目前在中小型書店中仍存在手工管理,工作效率低下,并且不能及時(shí)了解書店各類圖書的庫存、讀者需求的圖書難以在短時(shí)間里找到、圖書的入庫和更新比較麻煩等問題,不便于動(dòng)態(tài)及時(shí)調(diào)整圖書結(jié)構(gòu)。如何采用先進(jìn)的計(jì)算機(jī)系統(tǒng)管理進(jìn)貨、庫存、銷售等諸多環(huán)節(jié)也已成為趨勢(shì)及必然。1.2研究的目的和意義在高端企業(yè)系統(tǒng)市場(chǎng),強(qiáng)大的客戶關(guān)系經(jīng)常決定了誰能成為市場(chǎng)領(lǐng)導(dǎo)者。及時(shí)和準(zhǔn)確的銷售數(shù)據(jù)能幫助企業(yè)更好地了解客戶的需求和企業(yè)在市場(chǎng)中的地位。通過“圖書銷售系統(tǒng)”,書店能迅速獲得第一手的銷售數(shù)據(jù),如銷售數(shù)量、價(jià)格、訂單、存貨、市場(chǎng)趨勢(shì)和競(jìng)爭(zhēng)者的有關(guān)信息。同時(shí),這個(gè)“圖書銷售系統(tǒng)”也讓公司管理層加強(qiáng)了對(duì)散布在全國各地的經(jīng)銷商和銷售代表的管理,在任何銷售事件發(fā)生時(shí)就對(duì)之有了第一時(shí)間的了解?!皥D書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)”的主要特點(diǎn)是利用了電腦和網(wǎng)絡(luò),使得書店管理者通過數(shù)據(jù)庫就能輕松查詢到本書店的相關(guān)信息,不僅極大地方便了書店管理者,它還給圖書提供者和書店之間提供了一個(gè)交互的電子平臺(tái),可以通過網(wǎng)絡(luò)尋找貨源,及時(shí)方便地為購書者查找訂購書籍,提高了書店的效率。1.3研究內(nèi)容本文以一個(gè)中小型書店的圖書銷售系統(tǒng)為例,對(duì)Microsot患.Net體系、C撐語言開發(fā)技術(shù)、UML建模理論、數(shù)據(jù)庫設(shè)計(jì)方法與技巧等進(jìn)行了深入研究。系統(tǒng)的開發(fā)主要包括后臺(tái)數(shù)據(jù)庫的設(shè)計(jì)、數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表示層的具體實(shí)現(xiàn)等幾個(gè)方面,對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的數(shù)據(jù)庫,但要求處理的信息量并不大,采用了SQLServer2000進(jìn)行開發(fā);前端應(yīng)用程序采用MVC架構(gòu),功能包括登圖書管理、采購入庫、銷售管理、庫存管理、信息發(fā)送、測(cè)試影碟、系統(tǒng)設(shè)置等,可以瀏覽圖書,入庫出庫,并對(duì)庫存進(jìn)行查詢,另外各書店分店可以進(jìn)行圖書流通、會(huì)話與交流,對(duì)提高工作效率有重要意義【21【31【4】。1.4論文結(jié)構(gòu)本文第一章介紹了課題背景和意義。第二章是.Net體系開發(fā)平臺(tái)、UML建模理論及數(shù)據(jù)庫設(shè)計(jì)方法,主要對(duì).Net體系開發(fā)技術(shù)、UML系統(tǒng)建模思想及數(shù)據(jù)庫設(shè)計(jì)技巧進(jìn)行分析。第三章主要介紹了圖書銷售系統(tǒng)分析。第四章是圖書銷售系統(tǒng)總體設(shè)計(jì)。第五章根據(jù)第三章、第四章的分析和設(shè)計(jì),對(duì)圖書銷售系統(tǒng)進(jìn)行了具體軟件實(shí)現(xiàn)。第六章給出了項(xiàng)目的測(cè)試和部署。最后對(duì)全文做了總結(jié)。2第2章開發(fā)平臺(tái)和相關(guān)技術(shù)2.1.Net框架2.1.1.Net框架概述框架(Framework)是許多基本結(jié)構(gòu)的重要組成部分,如J2EE,CORBA等技術(shù)都涉及框架的概念。設(shè)計(jì)框架的主要目的就是屏蔽具體的實(shí)現(xiàn)過程,向用戶和開發(fā)人員展現(xiàn)一個(gè)透明的使用和開發(fā)平臺(tái)??蚣苤型ǔL峁┝嗽S多實(shí)用工具以及相關(guān)服務(wù),開發(fā)人員使用這些工具可很容易在此平臺(tái)上開發(fā)。.Net同樣也為用戶和開發(fā)人員提供了一個(gè)框架,即.NetFramework。.Net框架包含兩個(gè)主要組件:公共語言運(yùn)行庫和.Net框架類庫。公共語言運(yùn)行庫是.Net框架的基礎(chǔ)。您可以將運(yùn)行庫看作一個(gè)在執(zhí)行時(shí)管理代碼的代理,它提供核心服務(wù)(如內(nèi)存管理、線程管理和遠(yuǎn)程處理),而且能確保代碼的安全性、可靠性和準(zhǔn)確性。事實(shí)上,代碼管理是運(yùn)行庫的基本功能。以運(yùn)行庫為目標(biāo)的代碼稱為托管代碼,而不以運(yùn)行庫為目標(biāo)的代碼稱為非托管代碼。.Net框架的另一個(gè)主要組件是類庫,它是一個(gè)綜合性的面向?qū)ο蟮目芍赜妙愋图?,您可以使用它開發(fā)包含從傳統(tǒng)的命令行或圖形用戶界面應(yīng)用程序到基于ASP.Net(ActiveServerPages.Net)所提供的最新形式的應(yīng)用程序(如Web窗體和XMLWebservices)。.Net框架提取了微軟COM(ComponentObjectModel組件對(duì)象模型)的精華,將它們與松散耦合計(jì)算的設(shè)計(jì)思想有機(jī)地結(jié)合在一起,生成了強(qiáng)大、高效的Web組件系統(tǒng){51161。微軟.Net組件系統(tǒng)簡(jiǎn)化了開發(fā)的操作、深入的集成了安全性,引進(jìn)了基于互聯(lián)網(wǎng)的操作系統(tǒng),并且極大的改善了應(yīng)用程序的可靠性和擴(kuò)展性。2.1.2公共語言運(yùn)行平臺(tái)公共語言運(yùn)行平臺(tái)在組件的開發(fā)以及運(yùn)行過程中,都扮演著非常重要的角色。在組件運(yùn)行過程中,它負(fù)責(zé)管理內(nèi)存分配、啟動(dòng)或取消線程和進(jìn)程、實(shí)施安全性策略、同時(shí)滿足當(dāng)前組件對(duì)其它組件的需求。在開發(fā)階段,它的自動(dòng)化程度和COM開發(fā)相比大為提高,例如它可以自動(dòng)執(zhí)行內(nèi)存管理而不需要開發(fā)人員在程序中設(shè)定。另外,公共語言運(yùn)行平臺(tái)的映射功能減少了代碼編寫量,這些代碼是開發(fā)人員在將業(yè)務(wù)邏輯轉(zhuǎn)化成可復(fù)用的組件進(jìn)行編程時(shí)所必需的。實(shí)際上每種編程語言都有自己的運(yùn)行時(shí),如VisualBasic的RBRUN,Java的MSVCRT等。.Net框架的關(guān)鍵作用是它提供了一個(gè)跨語言的統(tǒng)一編程環(huán)境,這是它和普通編程語言環(huán)境的根本區(qū)別【5】。2.1.3統(tǒng)一的編程類庫.Net框架為開發(fā)人員提供了一個(gè)統(tǒng)一的、面向?qū)ο蟮摹哟位?、可擴(kuò)展的類庫集合。目前,不同語言的開發(fā)人員使用的是各不相同的類庫,如C++程序員使用MFC,VB程序員使用VBAPI集。而.Net框架統(tǒng)一了微軟當(dāng)前各種不同的框架,通過創(chuàng)建一個(gè)公共的跨語言編程的API集合,.Net框架實(shí)現(xiàn)了跨語言繼承性、錯(cuò)誤處理和調(diào)試功能【6l。2.1.4,Net框架的核心要素.Not框架提供了幾種重要的功能為系統(tǒng)的運(yùn)行提供保障。首先是安全系統(tǒng)和配置系統(tǒng),這兩個(gè)系統(tǒng)協(xié)同工作,有力的遏制了運(yùn)行不安全代碼的可能性,并減少了“DLLHell”對(duì)應(yīng)用程序配置的影響。安全系統(tǒng)是~個(gè)高度細(xì)化的系統(tǒng),它賦予開發(fā)人員和管理員多種代碼處理權(quán)限。當(dāng).Net框架應(yīng)用程序被下載到某一系統(tǒng)中運(yùn)行時(shí),它會(huì)申請(qǐng)一組權(quán)限(如申請(qǐng)對(duì)臨時(shí)目錄的寫入權(quán)限)。公共語言運(yùn)行時(shí)將收集有關(guān)應(yīng)用程序的事實(shí)信息(如程序來源、是否用了有效簽名等),并按管理策略決定是否允許該應(yīng)用程序運(yùn)行。運(yùn)行時(shí)還以通知應(yīng)用程序它無法授權(quán)申請(qǐng)的所有權(quán)限,并允許應(yīng)用程序自行決定是否繼續(xù)運(yùn)行。這種安全系統(tǒng)可以解決困擾用戶的“DLLHell”問題。所謂"DLLHell”問題實(shí)際上是版本的管理闖題。如果用戶新裝了某個(gè)應(yīng)用程序之后,整個(gè)系統(tǒng)都陷入了癱瘓狀態(tài),而在安裝新的程序之前系統(tǒng)一直運(yùn)行得非常良好,那么最大的可能就是新安裝的應(yīng)用程序重寫了一些共享庫。這種情況出現(xiàn)的頻率很高,被人們稱為‘'DLLHell'’。.Net框架的凡項(xiàng)高級(jí)功能可以徹底消除“DLLHell'’現(xiàn)象。首先,它有~個(gè)非常強(qiáng)大的內(nèi)部命名系統(tǒng),能夠有效的防止兩個(gè)庫因?yàn)榛ハ嘀孛换煜#硗猓甆et框架還提供一項(xiàng)被稱作“并行”配置的新功能。如果前例中新安裝的應(yīng)用程序確實(shí)重寫了共享庫,那么現(xiàn)有應(yīng)用程序可對(duì)該庫進(jìn)行修復(fù)。等現(xiàn)有應(yīng)用程序再次啟動(dòng)時(shí),它會(huì)檢查所有的共享文件。如果發(fā)現(xiàn)文件被更改,同時(shí)這些更改又是不兼容的,則它可以請(qǐng)求公共語言運(yùn)行時(shí)為它提取一個(gè)可以使用的版本。得益于強(qiáng)大的安全系統(tǒng),公共語言運(yùn)行時(shí)可以安全的執(zhí)行該操作,這樣應(yīng)用程序就完成了本身的修復(fù)工作??傊甆et框架是微軟開發(fā)人員戰(zhàn)略的核心內(nèi)容,它旨在幫助開發(fā)人員輕松地構(gòu)建、配置和運(yùn)行WebServicet7】。2.2VisualC謄.NETVisualC撐.NET是VisualStudio.NET家族的一個(gè)成員,其他成員包括VisualBasic.NET、VisualCa-+.NET等開發(fā)工具。VisualCj6}是目前最新、最先進(jìn)的軟件開發(fā)工具之一,它匯集了Microsoft公司的技術(shù)精華,不僅全面貫徹了面向?qū)ο蠹夹g(shù),而且在編譯優(yōu)化技術(shù)方面較其他同類產(chǎn)品具有明顯的優(yōu)勢(shì)。它是一個(gè)徹底的程序級(jí)的開發(fā)環(huán)境,可視化的設(shè)計(jì)減少了不少編程的工作量。利用VisualC稃幾乎可以完成任何設(shè)計(jì)功能,小至普通的應(yīng)用系統(tǒng)。大至復(fù)雜的應(yīng)用開發(fā)工具。在VisualStudio.NET中,VisualC群支持RAD(Rapid-ApplicationDevelopment,快速應(yīng)用程序開發(fā)),例如項(xiàng)目模板、設(shè)計(jì)器和其他開發(fā)環(huán)境特性。C撐是VisualStudio.NET中引入的全新編程語言。作為C和C++得派生語言,C群具有簡(jiǎn)單、先進(jìn)、類型安全和面向?qū)ο蟮忍攸c(diǎn)。C捍就是為了構(gòu)造能運(yùn)行于.NET平臺(tái)上的企業(yè)級(jí)應(yīng)用程序而設(shè)計(jì)的。使用C{66編寫的代碼將被作為受控代碼編譯,這意味著它能利用通用語言運(yùn)行庫的服務(wù),例如語言互用、冗碼收集、增強(qiáng)的安全性和改進(jìn)的版本支持等。VisualC存能夠訪問下一代Windows服務(wù)(NGWS,NextGenerationWindowsServices)平臺(tái)。NGWS軟件開發(fā)工具包定義了一個(gè)通用語言子集(CLS,CommonLanguageSpecification)。CLS能夠保證CLS兼容語言與類庫間的無縫作用,因而類似于一種世界語。VisualC櫛是一種全新的語言,使用同樣豐富且功能強(qiáng)大的類庫。VisualC撐的類庫就是.NET框架is]。使用VisualC撐能夠在代碼中方便地創(chuàng)建自己的組件,或配置.NET框架類中的復(fù)雜組件。使用非可視化組件能夠在自己的應(yīng)用程序中方便地使用消息隊(duì)列、事件日志、性能計(jì)數(shù)等資源。VisualC群提供了以下特性,以構(gòu)造可靠的系統(tǒng)級(jí)組件:·完全支持COM伊latform的現(xiàn)存代碼整合·通過冗余收集和類型安全提供穩(wěn)固性5.Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)·通過內(nèi)建代碼信任機(jī)制提供安全性·完全支持可擴(kuò)展的元數(shù)據(jù)概念利用VisualC拌的以下特性,能夠與其他語言實(shí)現(xiàn)跨平臺(tái)互用,并能使用先前生成的數(shù)據(jù):·通過COM+I.0和.NET框架服務(wù)提供完全的語言互用支持·提供基于Web組件交互的XML支持·通過版本識(shí)別提供更方便的管理和配置2.3基于UML的軟件建模思想軟件開發(fā)的主要工作是軟件需求和軟件設(shè)計(jì),軟件需求和軟件設(shè)計(jì)的關(guān)鍵問題是軟件建模,簡(jiǎn)稱建模。統(tǒng)一建模語言(UnifiedModelingLanguage,UML)是一種面向?qū)ο蟮膱D形化的建模語言,提供了描述軟件系統(tǒng)的圖形和方法,利用它可以進(jìn)行需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編程實(shí)現(xiàn)、項(xiàng)目計(jì)劃、測(cè)試、原型迭代、產(chǎn)品發(fā)布和產(chǎn)品維護(hù)。UML不是一種建模思想或建模方法,而只是一種建模語言或建模工具。UML提供了9種圖:類圖(ClassDiagram)、對(duì)象圖(ObjectDiagram)、用例圖(UseCaseDiagram)、時(shí)序圖(SequenceDiagram)、協(xié)作圖(CollaborationDiagram)、狀態(tài)圖(StatechartDiagram)、活動(dòng)圖(ActivityDiagram)、構(gòu)件圖(ComponentDiagram)和實(shí)施圖(DeploymentDiagram),重點(diǎn)是建立系統(tǒng)的用例圖、時(shí)序圖和類圖,因?yàn)檫@三者直接和建模思想的三種模型相關(guān)聯(lián)?;赨ML理論的的軟件建模CASE工具有MicrosoftVisio、RationalRose、PowerDesigner等191。軟件建模中的三個(gè)模型是指業(yè)務(wù)模型、功能模型和數(shù)據(jù)模型。功能模型(FunctionModel,F(xiàn)M)描述系統(tǒng)能做什么,即對(duì)系統(tǒng)的功能、性能、接口和界面進(jìn)行定義。業(yè)務(wù)模型(OperationModel,OM)描述系統(tǒng)在何時(shí)、何地、由何角色、按什么業(yè)務(wù)規(guī)則去做,以及做的步驟或流程,即對(duì)系統(tǒng)的操作流程進(jìn)行定義。數(shù)據(jù)模型(DataModel,DM)描述系統(tǒng)工作前的數(shù)據(jù)來自何處、工作中的數(shù)據(jù)暫存什么地方,工作后的數(shù)據(jù)放到何處,以及這些數(shù)據(jù)之間的關(guān)聯(lián),即對(duì)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行定義。功能模型和業(yè)務(wù)模型在需求分析時(shí)建模,數(shù)據(jù)模型在設(shè)計(jì)時(shí)建模。數(shù)據(jù)模型建模用PowerDesigner、ERwin、OracleDesigner或ClassDiagram表示;功能模型用功能點(diǎn)列表或者UseCaseDiagram表示;業(yè)務(wù)模型用自然語言加上流程圖、SequvnceDiagram或ActivityDiagram表示Ilol。在圖書銷售系統(tǒng)的軟件建模階段,利用了三種模型的建模思想,分別采用UML的類圖、用例圖和業(yè)務(wù)處理流程圖描述系統(tǒng)的數(shù)據(jù)模型、功能模型和業(yè)務(wù)模型。2.4數(shù)據(jù)庫設(shè)計(jì)概論數(shù)據(jù)庫設(shè)計(jì)包括數(shù)據(jù)庫需求分析、數(shù)據(jù)庫概念設(shè)計(jì)、數(shù)據(jù)庫物理設(shè)計(jì)三個(gè)階段。索引、視圖、觸發(fā)器和存儲(chǔ)過程都在數(shù)據(jù)庫服務(wù)器上運(yùn)行,所以劃分到數(shù)據(jù)庫物理設(shè)計(jì)之中。2.4.1數(shù)據(jù)庫需求分析需求分析都是從業(yè)務(wù)流程開始,這是因?yàn)椋河脩糁荒軓臉I(yè)務(wù)流程上提出要求,而將功能、性能和接口置于業(yè)務(wù)流程之中。軟件開發(fā)的目標(biāo)也是為了滿足用戶的業(yè)務(wù)流程需求,并在流程中體現(xiàn)出功能、性能和接口需求。數(shù)據(jù)庫設(shè)計(jì)的需求分析也是從業(yè)務(wù)流程開始的。在需求分析時(shí),“一定要滿足用戶需要的功能和性能,盡量回避用戶想要的功能和性能”。因?yàn)樾枰潜仨毜?,想要是無止境的,常常會(huì)使問題擴(kuò)大化,使數(shù)據(jù)庫越來越大,使項(xiàng)目長期不能收尾。用戶的需要時(shí)從原始單據(jù)的錄入、統(tǒng)計(jì)、查詢、報(bào)表的輸出開始的,中間可能有數(shù)據(jù)處理、傳輸和轉(zhuǎn)換問題,這些需要都應(yīng)滿足。數(shù)據(jù)庫需求分析的步驟是:收集系統(tǒng)所有的原始單據(jù)(信息源產(chǎn)生的數(shù)據(jù))和統(tǒng)計(jì)報(bào)表,弄清楚兩者之間的關(guān)系,寫明輸出數(shù)據(jù)項(xiàng)中的數(shù)據(jù)來源和算法。若原始單據(jù)覆蓋了所有需要的業(yè)務(wù)內(nèi)容,并且能滿足所有統(tǒng)計(jì)報(bào)表的輸出數(shù)據(jù)要求,則需求分析完畢。反之繼續(xù)分析。圖書銷售系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)過程中需求分析要從圖書采購單、書店供貨單、客戶購貨單、客戶退貨單、單日銷售款單據(jù)等數(shù)據(jù)源入手,分析相關(guān)報(bào)表、各種業(yè)務(wù)查詢之間的數(shù)據(jù)處理關(guān)系。2.4.2數(shù)據(jù)庫概念設(shè)計(jì)數(shù)據(jù)庫概念設(shè)計(jì)是指設(shè)計(jì)出數(shù)據(jù)庫的概念數(shù)據(jù)模型(即E.R圖)和相應(yīng)的數(shù)據(jù)字典(DD),如實(shí)體字典、屬性字典、關(guān)系字典。數(shù)據(jù)庫概念設(shè)計(jì)與具體的數(shù)據(jù)庫管理系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)無關(guān),相當(dāng)于數(shù)據(jù)庫的邏輯設(shè)計(jì)。在圖書銷售系7.Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)統(tǒng)的數(shù)據(jù)庫概念設(shè)計(jì)中,采用數(shù)據(jù)庫設(shè)計(jì)工具PowerDesigner給出系統(tǒng)數(shù)據(jù)庫的概念數(shù)據(jù)模型。2.4.3數(shù)據(jù)庫物理設(shè)計(jì)數(shù)據(jù)庫物理設(shè)計(jì)是指設(shè)計(jì)出數(shù)據(jù)庫的物理數(shù)據(jù)模型,即數(shù)據(jù)庫服務(wù)器物理空間上的表、字段、索引、表空間、視圖、儲(chǔ)存過程、觸發(fā)器,以及相應(yīng)的數(shù)據(jù)字典。數(shù)據(jù)庫物理設(shè)計(jì)與具體數(shù)據(jù)庫管理系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)有關(guān)。數(shù)據(jù)庫物理設(shè)計(jì)的方法如下:·確定關(guān)系數(shù)據(jù)庫管理系統(tǒng)平臺(tái),即選定具體的RDBMS?!だ脭?shù)據(jù)庫提供的命令和語句,建立表、索引、觸發(fā)器、存儲(chǔ)過程、視圖在盤號(hào)乎o·列出表與功能模塊之間的關(guān)系矩陣,便于詳細(xì)設(shè)計(jì)。在圖書銷售系統(tǒng)的數(shù)據(jù)庫物理設(shè)計(jì)中,采用數(shù)據(jù)庫設(shè)計(jì)工具PowerDesigner給出了系統(tǒng)數(shù)據(jù)庫的物理數(shù)據(jù)模型。2.4.4數(shù)據(jù)庫設(shè)計(jì)步驟綜合數(shù)據(jù)庫設(shè)計(jì)的三個(gè)主要內(nèi)容需求分析、概念設(shè)計(jì)和物理設(shè)計(jì),可以給出數(shù)據(jù)庫設(shè)計(jì)的步驟,如下表2.1所示:表2-1數(shù)據(jù)庫設(shè)計(jì)的步驟2.5數(shù)據(jù)庫設(shè)計(jì)的理論和方法l、原始單據(jù)與實(shí)體之間的關(guān)系數(shù)據(jù)庫概念數(shù)據(jù)模型的建立依靠實(shí)體關(guān)系,也就是給出系統(tǒng)的E-R圖。原始單據(jù)與實(shí)體之間關(guān)系是一對(duì)一、一對(duì)多、多對(duì)多的關(guān)系。在一般情況下,它們是一對(duì)一的關(guān)系,即一張?jiān)紗螕?jù)對(duì)應(yīng)且只對(duì)應(yīng)一個(gè)實(shí)體。在特殊情況下,它們可能是一對(duì)多或多對(duì)一的關(guān)系,即一張?jiān)紗螕?jù)對(duì)應(yīng)多個(gè)實(shí)體,或多張?jiān)紗螕?jù)對(duì)應(yīng)一個(gè)實(shí)體,這里的實(shí)體可以理解為基本表。2、主鍵和外鍵一個(gè)實(shí)體不能既無主鍵(PK),又無外鍵(FK)。在E.R圖中,處于葉子部位的實(shí)體可以定義為主鍵,也可以不定義主鍵,但必須要有外鍵。主鍵和外鍵配對(duì)表示實(shí)體之間的連接:主鍵表示主表,外鍵表示主表與從表之間的連接。3、范式理論在概念數(shù)據(jù)模型設(shè)計(jì)時(shí)遵守第三范式,實(shí)現(xiàn)實(shí)體、屬性、主鍵的原子化。數(shù)據(jù)庫設(shè)計(jì)的規(guī)范化理論的實(shí)質(zhì)就是引導(dǎo)并幫助設(shè)計(jì)人員實(shí)現(xiàn)“實(shí)體、屬性、主鍵的原子化”。沒有冗余的數(shù)據(jù)庫設(shè)計(jì)可以做到,但是,沒有冗余的數(shù)據(jù)庫設(shè)計(jì)未必是最好的數(shù)據(jù)庫,有時(shí)為了提高運(yùn)行效率,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù),這是用空間換時(shí)間的做法。在概念數(shù)據(jù)模型設(shè)計(jì)時(shí)遵守第三范式,降低范式的標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計(jì)時(shí)考慮。降低范式就是增加字段、允許冗余。4、數(shù)據(jù)庫設(shè)計(jì)的兩大竅門【ll】竅門之一:如果存在兩個(gè)實(shí)體或者多個(gè)實(shí)體之間的關(guān)系非常復(fù)雜,存在多對(duì)多的關(guān)系。為了方便數(shù)據(jù)庫概念數(shù)據(jù)模型設(shè)計(jì),必須消除這種關(guān)系。消除辦法為在兩者之間增加第三個(gè)實(shí)體,把原來一個(gè)多對(duì)多的關(guān)系變?yōu)閮蓚€(gè)一對(duì)多的關(guān)系,另外再把原來兩個(gè)實(shí)體的共同屬性分配到第三個(gè)實(shí)體中去,還要將原來兩個(gè)實(shí)體的主鍵當(dāng)做第三個(gè)實(shí)體的外鍵。竅門之二:“以不變應(yīng)萬變”的設(shè)計(jì)技巧建立穩(wěn)定的數(shù)據(jù)模型,這個(gè)技巧是“列變行”.所謂“列變行”,就是將第一個(gè)表中的某些列變?yōu)榈诙€(gè)表中的某些行,這樣就把原來設(shè)計(jì)不科學(xué)的一個(gè)表變?yōu)樵O(shè)計(jì)很科學(xué)的兩個(gè)表。一般情況下應(yīng)用在當(dāng)一個(gè)表中的列數(shù)較多時(shí),而且多到不可能控制在一個(gè)固定的范圍內(nèi)時(shí),才考慮運(yùn)用此技巧,將原來一個(gè)表分解為兩個(gè)表,其中一個(gè)為主表,另一個(gè)為從表,通過主鍵與外鍵,兩表進(jìn)行連接,共同完成相關(guān)的操作。5、西瓜理論和西瓜方法所謂西瓜理論,就是在數(shù)據(jù)庫分析時(shí),如果將屬性比作芝麻,將主要實(shí)體比做大西瓜,將次要實(shí)體比做小西瓜,那么芝麻必須圍繞西瓜轉(zhuǎn),小西瓜必須圍繞大西瓜轉(zhuǎn)。所謂西瓜方法,就是在數(shù)據(jù)庫設(shè)計(jì)時(shí),如果將屬性比作芝麻,將主要實(shí)體比做大西瓜,將次要實(shí)體比做小西瓜,那么在用CASE工具設(shè)計(jì)E.R圖時(shí),應(yīng)先畫出大西瓜,后畫出小西瓜,用西瓜包住芝麻,用大西瓜統(tǒng)帥小西瓜?!拔鞴侠碚摵臀鞴戏椒ā背死^承“實(shí)體主導(dǎo)型方法”的實(shí)體統(tǒng)帥屬性的思想外,還進(jìn)一步提出:·在數(shù)據(jù)庫需求分析和設(shè)計(jì)時(shí),一方面要以實(shí)體去統(tǒng)帥屬性,另一方面要以主要實(shí)體去統(tǒng)帥次要實(shí)體。·不但要使屬性圍繞實(shí)體轉(zhuǎn),而且要使次要實(shí)體圍繞主要實(shí)體轉(zhuǎn)。:在任何信息系統(tǒng)的全局E.R圖中,其主要實(shí)體的數(shù)目都是有限的,數(shù)據(jù)庫分析與設(shè)計(jì)的任務(wù)就是善于發(fā)現(xiàn)、捕獲次要實(shí)體,并用主要實(shí)體去組織、規(guī)劃、設(shè)計(jì)全局E.R圖。6、完整性約束實(shí)體完整性:每個(gè)實(shí)體必須有唯一性標(biāo)志,用于區(qū)分不同的實(shí)體,這個(gè)唯一性標(biāo)志是用實(shí)體主鍵來實(shí)現(xiàn)。參照完整性:就是主表到從表的方向是參照關(guān)系,由從表到主表的方向是依賴關(guān)系。這樣的參照和依賴關(guān)系通過主鍵(PK)、外鍵(PK)和觸發(fā)器來加以實(shí)現(xiàn)。用戶定義完整性:是用戶單位規(guī)定的一些業(yè)務(wù)規(guī)則,這些業(yè)務(wù)規(guī)則有時(shí)用存儲(chǔ)過程實(shí)現(xiàn),有時(shí)用觸發(fā)器來實(shí)現(xiàn),有時(shí)用定義域(對(duì)字段的取值范圍進(jìn)行定義)的完整性來實(shí)現(xiàn)。在圖書銷售系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)過程中選擇性的采用了以上方法,完善了數(shù)據(jù)庫的概念數(shù)據(jù)模型、優(yōu)化了表結(jié)構(gòu)、提高了數(shù)據(jù)庫系統(tǒng)的運(yùn)行效率。第3章圖書銷售系統(tǒng)需求分析圖書銷售是書店日常經(jīng)營管理中十分重要的一個(gè)組成部分,傳統(tǒng)的手工管理方式呈現(xiàn)出越來越多的弊端。在手工管理模式下,統(tǒng)計(jì)、匯總處理時(shí)的工作量極其繁重,處理效率非常低,書店經(jīng)營者也無法及時(shí)了解企業(yè)資金占用的實(shí)際狀況。通過圖書銷售系統(tǒng),企業(yè)可以直觀分析書店售書情況,作出更好的決策。3.1需求分析需求分析是整個(gè)軟件生命周期的關(guān)鍵階段,通過它可以了解系統(tǒng)的業(yè)務(wù)流程和數(shù)據(jù)流程,達(dá)到與客戶共同確定業(yè)務(wù)模型、功能模型、性能模型、接口模型的目標(biāo)。通過實(shí)際調(diào)查,圖書銷售系統(tǒng)具有以下功能:口要有良好的人機(jī)界面??谥С侄嗳瞬僮?,要求有較好的權(quán)限分配功能。口在進(jìn)貨、退貨時(shí)存在一對(duì)多的關(guān)系,要求支持多行錄入功能??诜奖愕臄?shù)據(jù)查詢,支持多條件查詢??趯?duì)于每種商品要求編號(hào)惟一,編號(hào)需要自動(dòng)生成??谠谙鄳?yīng)的權(quán)限下,可方便地刪除數(shù)據(jù)。口支持賬目的詳細(xì)內(nèi)容瀏覽??诜治錾唐愤M(jìn)貨、商品銷售情況。口數(shù)據(jù)計(jì)算自動(dòng)完成,盡量減少人工干預(yù)??谙到y(tǒng)支持良好的數(shù)據(jù)備份操作,有效保護(hù)數(shù)據(jù),以減少企業(yè)損失。3.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì)在圖書銷售系統(tǒng)的開發(fā)中,采用基于C/S架構(gòu)的開發(fā)方式,實(shí)現(xiàn)的系統(tǒng)具有界面美觀、操作簡(jiǎn)單、開發(fā)系統(tǒng)容易升級(jí)、系統(tǒng)開發(fā)周期短、成本低等優(yōu)點(diǎn)。在項(xiàng)目的研發(fā)中,從體系結(jié)構(gòu)上將本系統(tǒng)設(shè)計(jì)為4層結(jié)構(gòu)【12l。圖3-l系統(tǒng)的體系結(jié)構(gòu)(1)數(shù)據(jù)存儲(chǔ)層:該層表現(xiàn)為數(shù)據(jù)庫服務(wù)器。在本項(xiàng)目中采用SQLServer。在數(shù)據(jù)庫中存儲(chǔ)本項(xiàng)目的業(yè)務(wù)數(shù)據(jù)和管理數(shù)據(jù)。另外,為了提高系統(tǒng)的性能、效率和安全,本項(xiàng)目在對(duì)系統(tǒng)進(jìn)行分析時(shí),著重分析對(duì)數(shù)據(jù)表的常用操作;在數(shù)據(jù)庫中創(chuàng)建大量的存儲(chǔ)過程。在系統(tǒng)中不允許應(yīng)用程序直接對(duì)數(shù)據(jù)表進(jìn)行操作,而是通過存儲(chǔ)過程完成對(duì)數(shù)據(jù)表的訪問。這樣一方面能提高系統(tǒng)的性能和效率,另一方面能確保數(shù)據(jù)的安全。(2)數(shù)據(jù)存取層:該層通過ADO.Net對(duì)數(shù)據(jù)存儲(chǔ)層中的數(shù)據(jù)進(jìn)行操作。在外部形式上表現(xiàn)為一些類。在這些類中對(duì)ADO.Net的數(shù)據(jù)訪問進(jìn)行封裝。主要是對(duì)數(shù)據(jù)存儲(chǔ)層中的存儲(chǔ)過程進(jìn)行調(diào)用。(3)業(yè)務(wù)邏輯層。該層主要由一些實(shí)現(xiàn)業(yè)務(wù)邏輯的業(yè)務(wù)類來構(gòu)成。在實(shí)現(xiàn)上,業(yè)務(wù)邏輯類完成對(duì)數(shù)據(jù)存取層中數(shù)據(jù)存取類的調(diào)用和封裝。(4)表示層。該層主要是C/S架構(gòu)的Windows應(yīng)用程序,該層通過對(duì)業(yè)務(wù)邏輯層中的業(yè)務(wù)類進(jìn)行調(diào)用,從而實(shí)現(xiàn)相應(yīng)的功能。3.3項(xiàng)目規(guī)劃圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)是一個(gè)典型的數(shù)據(jù)庫應(yīng)用程序,由登錄模塊、主界面、采購入庫和銷售管理模塊、庫存管理模塊、實(shí)用工具模塊、信息發(fā)送模塊、測(cè)試影碟模塊、系統(tǒng)設(shè)置模塊、幫助模塊等組成。特規(guī)劃功能模塊如下:口采購入庫模塊采購入庫模塊主要管理書店圖書進(jìn)貨信息,支持多行錄入以及采購查詢功能??阡N售管理模塊銷售管理模塊主要管理書店圖書的銷售及退貨信息,支持多行錄入以及銷售信息查詢,而且通過分析報(bào)表可以清晰看到各操作員的銷售業(yè)績??趲齑婀芾砟K庫存管理模塊主要實(shí)現(xiàn)庫存貨品瀏覽、今日盤點(diǎn)、庫存查詢等功能??趯?shí)用工具模塊實(shí)用工具模塊主要實(shí)現(xiàn)切換操作員,更改用戶密碼,備份數(shù)據(jù)庫,更改用戶信息等功能??谛畔l(fā)送模塊信息發(fā)送模塊主要實(shí)現(xiàn)將某日的銷售狀況發(fā)送到數(shù)據(jù)庫中,以便今后的匯總??跍y(cè)試影碟模塊測(cè)試影碟模塊主要實(shí)現(xiàn)對(duì)影碟的性能進(jìn)行測(cè)試等功能??谙到y(tǒng)設(shè)置模塊系統(tǒng)設(shè)置模塊主要實(shí)現(xiàn)系統(tǒng)基本數(shù)據(jù)的錄入,相關(guān)基本數(shù)據(jù)為:供貨商信息管理、客戶信息管理、用戶信息管理??趲椭K幫助模塊主要實(shí)現(xiàn)對(duì)本書店的介紹以及退出功能。3.4系統(tǒng)業(yè)務(wù)模型3.4.1系統(tǒng)總體業(yè)務(wù)流程圖圖書銷售系統(tǒng)的業(yè)務(wù)流程圖給出了系統(tǒng)的業(yè)務(wù)操作的流水步驟,分別為系統(tǒng)操作員登陸、信息核對(duì)、權(quán)限分配、執(zhí)行相關(guān)子操作業(yè)務(wù)等。圖書銷售系統(tǒng)的業(yè)務(wù)流程圖如圖3.2所示。圖3-2圖書銷售系統(tǒng)業(yè)務(wù)流程圖3.4.2系統(tǒng)組織結(jié)構(gòu)圖系統(tǒng)組織結(jié)構(gòu)圖列出了各部門的崗位角色表,即組織結(jié)構(gòu)模型。圖書銷售系統(tǒng)的崗位角色有總經(jīng)理、采購部、銷售部、庫存部、市場(chǎng)部、人力資源部和信息技術(shù)部等。總經(jīng)理崗位職責(zé)為書店業(yè)務(wù)的組織領(lǐng)導(dǎo),全店信息的查詢。采購部職責(zé)為圖書采購及綜合業(yè)務(wù)查詢。庫存部職責(zé)為庫存綜合業(yè)務(wù)查詢。市場(chǎng)部負(fù)責(zé)圖書銷售市場(chǎng)的推廣。人力資源部負(fù)責(zé)本店雇員的流動(dòng)管理及任務(wù)、權(quán)限分配。信息技術(shù)部負(fù)責(zé)系統(tǒng)的維護(hù)、信息發(fā)送、圖書光盤測(cè)試等。圖書銷售系統(tǒng)的組織結(jié)構(gòu)圖如圖3.3所示。圖3-3圖書銷售系統(tǒng)組織結(jié)構(gòu)圖3.5系統(tǒng)功能模型3.5.1RationalRose概述RationalRose是Rational公司開發(fā)的一種面向?qū)ο蟮腃ASE工具(即面向?qū)ο蠓治龊驮O(shè)計(jì)的強(qiáng)大工具)。它不僅可以幫助系統(tǒng)先建立模型,后編寫代碼,而且可以保證軟件開發(fā)過程中代碼和模型的一致性,從而一開始就保證系統(tǒng)結(jié)構(gòu)的合理性。軟件開發(fā)團(tuán)隊(duì)利用RationalRose可以有效地進(jìn)行團(tuán)隊(duì)交流和開發(fā),及時(shí)發(fā)現(xiàn)開發(fā)過程中的缺陷,避免開發(fā)周期中不必要的成本消耗【13l。UML是一種編制系統(tǒng)藍(lán)圖的標(biāo)準(zhǔn)化語言,可以實(shí)現(xiàn)大型復(fù)雜系統(tǒng)各種成分描述的可視化說明并構(gòu)造系統(tǒng)模型,以及建立各種所需的文檔。它是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語言。UML的發(fā)展對(duì)軟件工程的發(fā)展做出了杰出的貢獻(xiàn)【141。UML其實(shí)就是一種表達(dá)方式而已,把人們所理解到的這套軟件系統(tǒng)通過一定的視圖方式展現(xiàn)出來,需掌握用例圖的繪制和識(shí)別,繪制靜態(tài)結(jié)構(gòu)圖,和動(dòng)態(tài)結(jié)構(gòu)圖,同時(shí)能讀懂一個(gè)UML的圖,能從中獲得在后期編碼階段的信息,一個(gè)系統(tǒng)的好壞,UML建模是相當(dāng)關(guān)鍵的,一個(gè)便于維護(hù),方便擴(kuò)展的系統(tǒng),那么是離不開一個(gè)好的UML模型的,在后期開發(fā)都是圍繞這個(gè)UML模型進(jìn)行開發(fā),那么UML建模就至關(guān)重要,需要構(gòu)建一個(gè)結(jié)構(gòu)合理,用例描述清晰的UML模型。簡(jiǎn)單的說就要一套軟件設(shè)計(jì)的思想,按照怎樣的方式去創(chuàng)建各個(gè)實(shí)例之間的關(guān)系,方法的重用,父類,接口的書寫都是在建模階段必須解決和完善的問題。RationalRose包括統(tǒng)一建模語言(UML),ooSE,以及OMT。其中統(tǒng)一建模語言(UML)由Rational公司3位世界級(jí)面向?qū)ο蠹夹g(shù)專家GradyBooth、IvarJacobson、和JimRumbaugh通過對(duì)早期面向?qū)ο笱芯亢驮O(shè)計(jì)方法的進(jìn)一步擴(kuò)展而得來的,它為可視化建模軟件奠定了堅(jiān)實(shí)的理論基礎(chǔ)。Rose與UML得關(guān)系是:UML是RationalRose的理論基礎(chǔ),RationalRose是UML的建模實(shí)現(xiàn)途徑,即Rose是UML的實(shí)現(xiàn)工具。,要通過UML的建模思想和建模方法(功能模型、業(yè)務(wù)模型、數(shù)據(jù)模型)對(duì)系統(tǒng)進(jìn)行系統(tǒng)分析【15】3.5.2系統(tǒng)用例圖功能模型描述系統(tǒng)能做什么,是系統(tǒng)所有功能的集合,具體表現(xiàn)在系統(tǒng)的功能、性能、接口和界面上。從用戶的角度來看,功能模型是系統(tǒng)功能需求列表;從Rose的角度來看,功能模型就是系統(tǒng)用例的集合:從操作界面的角度來看,功能模型就是系統(tǒng)的功能菜單。UML規(guī)定采用用例圖來描述功能模型。利用Rose工具對(duì)系統(tǒng)進(jìn)行UML建模,系統(tǒng)用例包括圖書采購、登錄系統(tǒng)、測(cè)試影碟、信息發(fā)送、綜合業(yè)務(wù)查詢、備份數(shù)據(jù)庫、供貨與購貨管理、分析報(bào)表、庫存查詢等。系統(tǒng)功能模型如圖3.4系統(tǒng)用例圖所示【161。圖3.4系統(tǒng)用例圖3.5.3創(chuàng)建活動(dòng)圖描述用況系統(tǒng)用例圖說明了為所服務(wù)的業(yè)務(wù)主角提供所需的價(jià)值而必須完成的工作。系統(tǒng)用例由一系列活動(dòng)組成,它們共同為業(yè)務(wù)主角生成某些工作。工作流程通常包括一個(gè)基本工作流程和一個(gè)或多個(gè)備選工作流程。工作流程的結(jié)構(gòu)使用活動(dòng)圖來進(jìn)行說明。工作流程活動(dòng)圖用于研究實(shí)現(xiàn)業(yè)務(wù)目標(biāo)時(shí)所要執(zhí)行的各項(xiàng)任務(wù)或活動(dòng)的順序安排?;顒?dòng)既可以是手動(dòng)執(zhí)行的任務(wù),也可以是自動(dòng)執(zhí)行的任務(wù)i它可完成一個(gè)工作單元【明。在UML中,用例描述可以是文字性的,也可以用活動(dòng)圖來進(jìn)行說明。文字性描述模板叫用況規(guī)約。活動(dòng)圖類似于流程圖,它描述了執(zhí)行某個(gè)功能的活動(dòng)。使用活動(dòng)圖來描述用況,比用況規(guī)約更直觀。(1)“登陸系統(tǒng)”用例的活動(dòng)圖如圖3.5所示。各分店管理員打開系統(tǒng)登錄界面后,根據(jù)自己的店號(hào)輸入,執(zhí)行登錄過程。t圖3.5“登錄系統(tǒng)”用況的活動(dòng)圖(2)“采購單錄入”用況的活動(dòng)圖如圖3-6所示。采購單錄入過程是管理員登錄系統(tǒng)后,根據(jù)圖書信息錄入,完成此圖書的采購工作,并保存到數(shù)據(jù)庫。圖3.6“采購單錄入”用況的活動(dòng)圖(3)“銷售單錄入”用況的活動(dòng)圖如圖3.7所示。銷售單管理員登錄系統(tǒng)后,進(jìn)入銷售單管理界面,執(zhí)行銷售相關(guān)業(yè)務(wù),并修改庫存量,如果庫存量不足提示給管理員,并進(jìn)行相關(guān)的采購工作。圖3·7“銷售單錄入”用況的活動(dòng)圖(4)“庫存綜合查詢”用例的活動(dòng)圖如圖3.8所示。管理員登錄系統(tǒng)后,進(jìn)入庫存查詢頁面,輸入相關(guān)的查詢條件關(guān)鍵字執(zhí)行查詢操作。圖3-8“庫存綜合查詢”用況的活動(dòng)圖“更改用戶密碼”用例的活動(dòng)圖如圖3-9所示。圖3-9“更改用戶密碼”用況的活動(dòng)圖(6)“數(shù)據(jù)庫備份”用況的活動(dòng)圖如圖3.10所示。管理員進(jìn)入數(shù)據(jù)備份界面,進(jìn)行數(shù)據(jù)備份操作。圖3.10“數(shù)據(jù)庫備份”用況的活動(dòng)圖21.Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)第4章圖書銷售系統(tǒng)總體設(shè)計(jì)圖書銷售系統(tǒng)是基于網(wǎng)絡(luò)環(huán)境的圖書信息管理的一個(gè)核心系統(tǒng),它是大中小型書店日常業(yè)務(wù)處理的最復(fù)雜、最重要的工作流處理系統(tǒng)。它直接體現(xiàn)了書店的業(yè)務(wù)職能,是大中小型書店日常業(yè)務(wù)處理最基本的功能模塊。設(shè)計(jì)開發(fā)的“圖書銷售系統(tǒng)”,主要功能有:連接服務(wù)器;進(jìn)貨管理;業(yè)務(wù)管理;信息發(fā)送;測(cè)試影碟;賬目報(bào)表:租售管理;庫存查詢;除此之外,還具有自己特色功能,如為了提高安全性,設(shè)置備份及書店銷售網(wǎng)絡(luò)共享等功能。系統(tǒng)主要包括后臺(tái)數(shù)據(jù)庫的建立及前端應(yīng)用程序的開發(fā)兩個(gè)方面,對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng),安全性好的數(shù)據(jù)庫,但要求處理的信息量并不大,采用了SQLserver2000進(jìn)行開發(fā);前端應(yīng)用程序功能包括登陸退出系統(tǒng)、進(jìn)貨管理、銷售管理、信息發(fā)送、測(cè)試影碟等,可以瀏覽圖書,入庫出庫,并對(duì)庫存進(jìn)行查詢,另外各書店分店可以進(jìn)行圖書流通、會(huì)話與交流,對(duì)提高書店業(yè)務(wù)工作效率有重要意義。4.1設(shè)計(jì)目標(biāo)本系統(tǒng)屬于大中小型書店的圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā),可以對(duì)書店企業(yè)中圖書的進(jìn)銷存進(jìn)行有效管理。通過本系統(tǒng)可以達(dá)到以下目標(biāo)??谙到y(tǒng)采用人機(jī)交互方式,界面美觀友好、信息查詢靈活、方便,數(shù)據(jù)存儲(chǔ)安全可靠??谥С侄嘈休斎?,自動(dòng)生成編號(hào)。13提高工作效率,降低成本??趯?shí)現(xiàn)各種查詢功能。口對(duì)用戶輸入的數(shù)據(jù)迸行過濾,當(dāng)輸入有誤時(shí)提示用戶??跀?shù)據(jù)保密性強(qiáng),用戶對(duì)應(yīng)不同的操作級(jí)別??诶脠?bào)表分析員工銷售業(yè)績??谙到y(tǒng)運(yùn)行穩(wěn)定、安全可靠。4.2開發(fā)及運(yùn)行環(huán)境系統(tǒng)開發(fā)平臺(tái):MicrosoftVisualStudio2005。系統(tǒng)開發(fā)語言:C撐。數(shù)據(jù)庫管理系統(tǒng)軟件:SQLServer2000。運(yùn)行平臺(tái):WindowsXP(SP2)/Windows2000(SP4)/WindowsServer2003(SPl)。運(yùn)行環(huán)境:Microsoft.NETFrameworkSDKv2.0。分辨率:最佳效果1024×768像素。4.3系統(tǒng)總體設(shè)計(jì)根據(jù)系統(tǒng)需完成的功能,系統(tǒng)主要包括采購入庫、銷售管理、庫存管理、信息發(fā)送、影碟測(cè)試、系統(tǒng)設(shè)置和幫助模塊等功能。各模塊的主要功能如下:1.采購入庫采購管理員將需要采購的圖書信息錄入系統(tǒng),并保存到數(shù)據(jù)庫。2.銷售管理管理員進(jìn)入銷售管理功能模塊,執(zhí)行銷售相關(guān)業(yè)務(wù)。3.庫存管理管理員登錄庫存管理模塊,選擇相關(guān)圖書查詢條件,查看庫存圖書信息。4.信息發(fā)送各個(gè)分店在各自的業(yè)務(wù)處理過程中,各店管理員可以通過此模塊進(jìn)行信息交流。5.影碟測(cè)試書店企業(yè)信息技術(shù)部人員可以通過該模塊進(jìn)行圖書光盤的測(cè)試。。6.系統(tǒng)設(shè)置超級(jí)管理員通過此模塊授權(quán)登錄用戶,及系統(tǒng)數(shù)據(jù)庫登錄信息的修改等。7.幫助模塊給管理員用戶提供相關(guān)的操作信息提示。4.4系統(tǒng)界面模型(1)登錄模塊系統(tǒng)登錄主要用于對(duì)進(jìn)入圖書銷售系統(tǒng)的用戶進(jìn)行安全性檢查,以防止非法用戶進(jìn)入該系統(tǒng)。只有合法的用戶,才可以進(jìn)入系統(tǒng),同時(shí)根據(jù)管理員分配的權(quán)限,管理相應(yīng)的模塊。Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)驗(yàn)證操作員及其密碼,主要通過salD{曲R∞dcr對(duì)象讀取數(shù)據(jù)庫中數(shù)據(jù)并結(jié)合I儲(chǔ)句判斷用戶輸入的操作員、密碼是否符臺(tái)數(shù)據(jù)庫中的操作員和密碼。如果符合則允許登錄,并給予相應(yīng)的權(quán)限,否則提示用戶非法登錄【”】。系統(tǒng)登錄窗體運(yùn)行結(jié)果如圖4.1所示。圖4-l登錄界面(2)系統(tǒng)主窗體主窗體是程序操作過程中必不可少的,它是人機(jī)交互中的重要環(huán)節(jié)。通過主窗體,用廠|可以調(diào)用系統(tǒng)相關(guān)的各子模塊.快速掌握本系統(tǒng)中所實(shí)現(xiàn)的各個(gè)功能。圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)中,當(dāng)?shù)卿洿绑w驗(yàn)證成功后,用戶將進(jìn)入主窗體,主窗體被分為3個(gè)部分:最上面是系統(tǒng)菜單欄,可以通過它調(diào)用系統(tǒng)中的所有子窗體;菜單欄下面是工具欄,它可以以按鈕的形式使用戶能夠方便地調(diào)用展常用的子窗體;窗體的攝下面用狀態(tài)欄顯示當(dāng)前登錄的用戶名以及登錄時(shí)聞。主窗體運(yùn)行結(jié)果如圖4—2所示(19112“。(3)采購入庫模塊書店售書系統(tǒng)的設(shè)計(jì)與開發(fā)中所有圖書信息數(shù)據(jù)都是從該模塊中輸入的,操作人員可以通過該模塊對(duì)圖書進(jìn)行入庫操作。采購單據(jù)錄入模塊運(yùn)行結(jié)果如圖4-3所示。圖4-3采購單據(jù)錄入界面Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)(4)銷售管理模塊圖書銷售業(yè)務(wù)由此模塊完成,并可以通過分析報(bào)表給出具體的銷售員的銷售業(yè)績。銷售退貨單錄入模塊運(yùn)行結(jié)果如圖4.4所示。圖44銷售退貨單錄入界面分析報(bào)表模塊運(yùn)行結(jié)果如圖4-5所示。圖4-5分析報(bào)表界面Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)(5)庫存管理模塊通過庫存管理模塊可以實(shí)時(shí)的給出各個(gè)分店庫存圖書的數(shù)目、庫存量等相關(guān)信息,方便了圖書庫存不足時(shí),各個(gè)分店之間圖書的調(diào)配運(yùn)輸。庫存綜合查詢模塊運(yùn)行結(jié)果如圖4-6所示。圖4《庫存綜合查詢界面為了避免系統(tǒng)運(yùn)行環(huán)境及其他人為的原因等造成的系統(tǒng)崩潰等,致使數(shù)據(jù)庫信息丟失等問題.通過備份管理模塊可以及時(shí)的保存數(shù)據(jù)庫信息。數(shù)據(jù)庫備份模塊運(yùn)行結(jié)果如圖"示馴。圖中7數(shù)據(jù)庫備份界面Net環(huán)境F圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)(6)系統(tǒng)設(shè)置模塊系統(tǒng)設(shè)置模塊完成供貨商信息的錄入、操作員信息的錄入及權(quán)限的授予等。商家(供貨商)管理模塊運(yùn)行結(jié)果如圖4.8所示。圈4-8商家(供貨商)管理界面用戶(操作員)管理模塊只有超級(jí)用戶才能有權(quán)查看.主要是對(duì)用戶的資料進(jìn)行管理,執(zhí)行添加、刪除等操作。用戶(操作員)管理模塊運(yùn)行結(jié)果如圖4-9所示。圖4-9用戶(操作員)管理界面單擊“添加”按鈕,便會(huì)彈出“添加用戶”宙體.添加用戶模塊運(yùn)行結(jié)果如圖4.10所示。圖4-10掭加用戶界面4.5系統(tǒng)數(shù)據(jù)模型數(shù)據(jù)模型是系統(tǒng)內(nèi)部的數(shù)據(jù)結(jié)構(gòu),企業(yè)信息系統(tǒng)中的數(shù)據(jù)模型,是指它的E-R圖及其相應(yīng)的數(shù)據(jù)字典。這里的數(shù)據(jù)字典包括實(shí)體字典、屬性字典、關(guān)系字典。E-R圖給出了系統(tǒng)的實(shí)體關(guān)系及實(shí)體與屬性的表示。數(shù)據(jù)庫設(shè)計(jì)中的概念數(shù)據(jù)模型8PE-R圖。數(shù)據(jù)模型的設(shè)計(jì)工具與:PowerDesigner,ERwin,OracleDesigner或Rose中的類圖加對(duì)象圖。利用E-R圖,可以更加清晰地描述系統(tǒng)的各實(shí)體間的關(guān)系。UML規(guī)定,用類圖加上對(duì)象圖來表述數(shù)據(jù)模型,本系統(tǒng)用類圖描述系統(tǒng)的數(shù)據(jù)模型。本系統(tǒng)的類關(guān)系圖如圖4.11所示。本系統(tǒng)表示層宙體類包含About窗體、AddOpemtor窗體、Backup窗體、CheclOurchase窗體、Login窗體、Cvstomer窗體、F_main窗體、Hireout窗體、P越sword窗體、purchasdnput窗體、PurchaseSearch窗體、ModifwOpemtor窗體、SellRq】0rtForm箭體、SellSea∞h窗體、SendInformation窗體、Supplier窗體、SetOpemtor窗體、vcDTen窗體、StoekSeareh宙體。業(yè)務(wù)邏輯層邏輯類包含eustomerDB、resell_detailedDB、resellDB、RoleDB、sell_detailedDB、sellDB、stoekDB、supplierDB、WarehouseDetailDB、wal'ehouseDB,這些邏輯類提供的方法分別對(duì)應(yīng)關(guān)于相應(yīng)數(shù)據(jù)庫表的操作。數(shù)據(jù)存取層包古類DataAeeess,該類提供對(duì)所有數(shù)據(jù)庫表的基本操作,方法供業(yè)務(wù)邏輯層調(diào)用。圖4.11系統(tǒng)類關(guān)系圖4.6系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)是數(shù)據(jù)庫應(yīng)用開發(fā)周期中的一個(gè)重要的階段,也是工作量比較大的一項(xiàng)工作。隨著現(xiàn)代軟件的發(fā)展,手工分析方式已經(jīng)很難滿足數(shù)據(jù)庫系統(tǒng)分析的要求,必須借助相應(yīng)的工具,如PowerDesigner。在開發(fā)“圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)”時(shí),我們先用PowerDesigner建立系統(tǒng)數(shù)據(jù)庫概念數(shù)據(jù)模型CDM,最后轉(zhuǎn)化為數(shù)據(jù)庫物理數(shù)據(jù)模型PDM,直到生成具體的物理數(shù)據(jù)庫表陋】。PowerDesigner是Sybasc公司開發(fā)的CASE(ComputerAidedSoftwareEngineering)工具。它是一種數(shù)據(jù)庫開發(fā)環(huán)境,專門提供數(shù)據(jù)庫的需求分析、概念數(shù)據(jù)模型CDM(ConceptualDataModel)設(shè)計(jì)、物理數(shù)據(jù)模型PDM(PhysicsDataModel)設(shè)計(jì)和數(shù)據(jù)庫建表、建索引、建視圖、建存儲(chǔ)過程、建觸發(fā)器等項(xiàng)功能。塑J2006年為止,PowerDesigner已經(jīng)發(fā)展到第12個(gè)版本。10多年來它之所以長盛不衰,原因是它融合了業(yè)界最著名的業(yè)務(wù)流程圖BPM(BusinessProcessManagement)、實(shí)體一關(guān)系圖E.R(Entity.Relationship)、統(tǒng)一建模語言UML(UnifiedModelingLanguage)等多項(xiàng)建模技術(shù),為用戶提供了一個(gè)統(tǒng)一的企業(yè)數(shù)據(jù)庫建??臻g,并且實(shí)現(xiàn)了各類模型之間的靈活轉(zhuǎn)換機(jī)制。不僅如此,在它的高級(jí)版本中,又新增了對(duì)SybascReplicationServerMobiLink數(shù)據(jù)同步功能的模型定義,以及對(duì)EJBWebServices等新技術(shù)的支持特點(diǎn)。PowerDesigner不僅加速了開發(fā)的過程,也向最終用戶提供了管理和訪問項(xiàng)目的信息的一個(gè)有效的結(jié)構(gòu)。它允許設(shè)計(jì)人員不僅創(chuàng)建和管理數(shù)據(jù)的結(jié)構(gòu),而且開發(fā)和利用數(shù)據(jù)的結(jié)構(gòu)針對(duì)領(lǐng)先的開發(fā)工具環(huán)境快速地生成應(yīng)用對(duì)象和數(shù)據(jù)敏感的組件。開發(fā)人員可以使用同樣的物理數(shù)據(jù)模型查看數(shù)據(jù)庫的結(jié)構(gòu)和整理文檔,以及生成應(yīng)用對(duì)象和在開發(fā)過程中使用的組件。應(yīng)用對(duì)象生成有助于在整個(gè)開發(fā)生命周期提供更多的控制和更高的生產(chǎn)率‘231。PowerDesigner是一個(gè)功能強(qiáng)大而使用簡(jiǎn)單工具集,提供了一個(gè)復(fù)雜的交互環(huán)境,支持開發(fā)生命周期的所有階段,從處理流程建模到對(duì)象和組件的生成。PowerDesigner產(chǎn)生的模型和應(yīng)用可以不斷地增長,適應(yīng)并隨著你的組織的變化而變化。4.6.1系統(tǒng)數(shù)據(jù)庫需求分析根據(jù)系統(tǒng)需求,要實(shí)現(xiàn)圖書銷售系統(tǒng)的業(yè)務(wù)功能,數(shù)據(jù)霹中應(yīng)該包含如下一些信息?!窨蛻舻幕拘畔ⅲ河糜趯?duì)客戶身份的描述?!皲N售信息:日常的銷售圖書記錄?!やN售單明細(xì)相關(guān)信息:用于表示銷售圖書與銷售單的關(guān)系?!す┴浬袒拘畔ⅲ簣D書進(jìn)貨商家的基本信息?!襁M(jìn)貨單:圖書進(jìn)貨的相關(guān)記錄?!襁M(jìn)貨單明細(xì)相關(guān)信息:用于表示進(jìn)貨圖書與進(jìn)貨單的關(guān)系?!裆唐沸畔ⅲ罕硎緢D書的書目信息?!皲N售退貨信息:表示客戶退貨圖書信息?!やN售退貨單明細(xì):退貨圖書與銷售單的關(guān)系。根據(jù)需求分析,系統(tǒng)共有9張數(shù)據(jù)表?!窨蛻艋拘畔⒈恚河糜诒4鏁昕蛻粜畔?。◆銷售單信息表:用于保存銷售圖書信息?!翡N售單明細(xì)表:存放銷售圖書的明細(xì)信息。◆供貨商基本信息:存放供貨商人基本信息?!暨M(jìn)貨單信息表:存放進(jìn)貨圖書基本信息?!襁M(jìn)貨單明細(xì)表:進(jìn)貨圖書明細(xì)信息?!駡D書商品信息表:存放圖書書目基本信息?!やN售退貨信息表:存放退貨圖書信息?!皲N售退貨明細(xì)表:存放退貨圖書明細(xì)信息。4.6.2數(shù)據(jù)庫概念數(shù)據(jù)模型CDM設(shè)計(jì)根據(jù)數(shù)據(jù)庫的需求分析,得出數(shù)據(jù)庫的邏輯結(jié)構(gòu)如下:1.客戶基本信息表客戶基本信息表(tb_customcr)用來存放書店客戶信息,結(jié)構(gòu)如表4一l所示:表4.1客戶基本信息表2.銷售單信息表銷售單信息表(tb_sell)用來保存銷售圖書信息,結(jié)構(gòu)如表4—2所示:表如2銷售圖書信息表3.銷售單明細(xì)表銷售單明細(xì)表(tb_sell_detailed)用來保存銷售圖書的明細(xì)信息,結(jié)構(gòu)如表4—3所示:表4.3銷售單明細(xì)表4.供貨商基本信息表供貨商基本信息表(tb_supplier)用來保存供貨商人基本信息,結(jié)構(gòu)如表44所表4-4供貨商基本信息表5.進(jìn)貨單信息表進(jìn)貨單信息表(tb_warehouse用來保存進(jìn)貨圖書基本信息,結(jié)構(gòu)如表4-5所示:表4.5進(jìn)貨單信息表6.進(jìn)貨單明細(xì)表進(jìn)貨單明細(xì)表(tb_warehouse_detailed)用來保存進(jìn)貨圖書明細(xì)信息,結(jié)構(gòu)如表4.6所示:表4.6進(jìn)貨圖書明細(xì)表7.圖書商品信息表圖書商品信息表(tb_stock)用來保存圖書書目基本信息,結(jié)構(gòu)如表4—7所示:表4.7圖書商品信息表8.銷售退貨信息表銷售退貨信息表(tb.._resell)用來保存退貨圖書信息,結(jié)構(gòu)如表4-8所示:表4.8公文信息表9.銷售退貨明細(xì)表銷售退貨明細(xì)表(tbresell_detailed)用來存放退貨圖書明細(xì)信息,結(jié)構(gòu)如表4·9所示:表4.9銷售退貨明細(xì)表lO.操作員表系統(tǒng)操作員表(Role)用來存放操作員相關(guān)信息,結(jié)構(gòu)如表4一10所示:表4.10系統(tǒng)操作員表圖4-ll圖書銷售系統(tǒng)數(shù)據(jù)庫CDM利用數(shù)據(jù)庫建模工具PowerDesigner建立圖書銷售系統(tǒng)數(shù)據(jù)庫概念數(shù)據(jù)模型CDM如上圖4.11所示。374.6.3數(shù)據(jù)庫物理數(shù)據(jù)模型PDM設(shè)計(jì)圖4.12圖書銷售系統(tǒng)數(shù)據(jù)庫PDM表與字段分析是建立在實(shí)體.關(guān)系圖基礎(chǔ)上的,CDM給出了系統(tǒng)實(shí)體關(guān)系圖。表與字段分析后就可以利用PowerDesigner建立物理數(shù)據(jù)模型PDM了??梢允褂肞owerDesignerl芻帶的工具產(chǎn)生表與字段,并建、-Y-PDM,圖書銷售系統(tǒng)數(shù)據(jù)庫物理數(shù)據(jù)模型PDM如圖4-12所示。第5章代碼實(shí)現(xiàn)合理的編碼結(jié)構(gòu)是系統(tǒng)是否具有生命力的一個(gè)重要因素,在設(shè)計(jì)編碼時(shí),應(yīng)遵循以下基本原則【24J:(1)唯一性:每一個(gè)自定義變量只能代表系統(tǒng)中的一個(gè)含義,避免因使用混亂而導(dǎo)致的調(diào)試運(yùn)行錯(cuò)誤。(2)合理性:編碼的結(jié)構(gòu)要合理,盡量反應(yīng)編碼對(duì)象的特征。(3)規(guī)范性:由于較大的系統(tǒng)都是由多人分工合作而完成的,因此,使用統(tǒng)一的標(biāo)準(zhǔn)和編程習(xí)慣是必須的,否則容易造成彼此理解上的混亂,模塊間接口設(shè)計(jì)不合理,更嚴(yán)重的會(huì)直接導(dǎo)致系統(tǒng)開發(fā)失敗。(4)可擴(kuò)充性:編碼時(shí)要留有足夠的備用代碼,以適應(yīng)以后擴(kuò)充代碼的需要。但備用代碼也不能留的過多,以免增加處理難度。5.1編碼語言的選擇本系統(tǒng)的開發(fā)平臺(tái)是WindowsVisualStudio2005,而考慮Nc#與W'mdowsVisualStudio2005的完美結(jié)合性,選擇C捍作為編碼語言,也是無可非議的了。C撐是一種現(xiàn)代的面向?qū)ο蟮某绦蜷_發(fā)語言。.NET提供了大量的工具與服務(wù),能夠最大限度的發(fā)掘和使用計(jì)算及通信能力。它使得程序員能夠在.NET平臺(tái)下快速開發(fā)出所需要的應(yīng)用程序。并且它的面向?qū)ο笤O(shè)計(jì)和從構(gòu)建組件形成的高層商業(yè)對(duì)象到高級(jí)系統(tǒng)級(jí)的應(yīng)用程序都是一流的。與C和C++相比較,C捍比它們更加簡(jiǎn)潔,更加高效。C群沒有丟失C和C++的基本特征_÷強(qiáng)大的控制能力和高度的靈活性瞄】【26】。C群是專門為.NET的應(yīng)用而開發(fā)的語言,這從根本上保證了C群與.NET的完美結(jié)合。C撐具有語法簡(jiǎn)潔、面向?qū)ο笤O(shè)計(jì)、完善的安全性和錯(cuò)誤處理和高度的靈活性和兼容性等優(yōu)點(diǎn)。C撐保留了對(duì)底層操作系統(tǒng)API的直接調(diào)用和指針,普通應(yīng)用都是調(diào)用.Net的程序集,對(duì)于速度敏感,或者平臺(tái)相關(guān)型應(yīng)用,直接通過特定聲明來調(diào)用WindowsAPI,開發(fā)效率和速度都兼顧,解決了各種各樣的應(yīng)用層問題和系統(tǒng)層問題;C群與Java有著明顯的不同,它借鑒-j"Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)的直接集成:在W'mdows平臺(tái)上.NetCLR比Java的JRE速度快;基于C撐語言的Visual.NetStudio開發(fā)工具IDE功能齊全,更加優(yōu)秀;企業(yè)開發(fā)方面,C群需要SQLServer,I【s和MTS的配合。由于劍只管SQLServergIIS,甚至只管IE瀏覽器,所以Visual.NetStudio更加便捷,整個(gè)開發(fā)過程一體化.不用考慮其它的實(shí)現(xiàn)。綜合考慮采用c#語言Net環(huán)境開發(fā)周期短.功能齊全,符合我們的要求拉1【蚓f矧。5.2數(shù)據(jù)存取層設(shè)計(jì)與實(shí)現(xiàn)如前文所述,在本系統(tǒng)的體系結(jié)構(gòu)上,數(shù)據(jù)存取層位于數(shù)據(jù)存儲(chǔ)層和業(yè)務(wù)服務(wù)層之間,通過對(duì)ADONet數(shù)據(jù)訪問類的封裝,實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫中的數(shù)據(jù)的訪問。在表現(xiàn)形式t,該層表現(xiàn)為Net類庫項(xiàng)目,該項(xiàng)目編譯后生成動(dòng)態(tài)鏈接庫(d11)。其他項(xiàng)目蔫要調(diào)用此類庫時(shí).只要將該動(dòng)態(tài)鏈接庫文件復(fù)制到相應(yīng)bin文件中,就可進(jìn)行使用了。該系統(tǒng)中數(shù)據(jù)存取層完成對(duì)數(shù)據(jù)庫表的操作,由類DataAeeess實(shí)現(xiàn),其類圈如圖5-I所示。圖5.1類DataAccess其中類DataAccess主要方法的實(shí)現(xiàn)如下:(1)GetConuectionO方法功能:獲取數(shù)據(jù)庫連接對(duì)象。具體代碼實(shí)現(xiàn)如下:publicstaticSqlConneetionGetConnection0fMycon=newSqlConnection(”Server=t2700l;uid=sa;pwd=:database曷dangdang”X馴喟sqlco吼酬ion對(duì)象與指定的數(shù)據(jù)庫相連接My_con.OpenO;,/打開數(shù)據(jù)庫連接i℃OJrnMy_con;,,返回SqIConnection對(duì)象的信息}(2)GetDataSet方法功能:從數(shù)據(jù)庫表中獲取數(shù)據(jù)集。.Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)實(shí)現(xiàn)步驟:①創(chuàng)建DataSet對(duì)象Ds:②調(diào)用SqlDataA螄方法獲取SqlD稚嘶ter對(duì)象sda:③為SqlDataAdapter對(duì)象添加相應(yīng)參數(shù);④執(zhí)行sda.Fill,將數(shù)據(jù)填充到Ds;⑤釋放所占用的系統(tǒng)資源。publicDataSetGctDataSet(stringSql,stringtablename){SqlConnectionCon=this.GetConnectionO:SqlDataAdaptersda=newSqlDataAdapter(Sql,Con);DataSetDs=newDataSetO;sda.Fill(Ds,tablename);returnDs:(3)ExcuteSql方法功能:執(zhí)行Sql操作。實(shí)現(xiàn)步驟:①調(diào)用GetConnection方法獲取SqlConnection對(duì)象:②調(diào)用SqlCommand方法獲取SqlCommand對(duì)象;③為SqlCommand對(duì)象添加相應(yīng)參數(shù);④循環(huán)添力ISql語句查詢條件變量:⑤返回查詢結(jié)果。publicintExcuteSql(stringSql,SqlParameter[]paras){SqlConnectionCon=this.GetConnection0;SqlCommandCmd=newSqlCommand(Sql,Con);foreach(SqlParameterPinparas){Cmd.Parameters.Add(p);}Con.Open0;intCount=Cmd.ExeeuteNonQuerYO;Con.CloseO;retumCount;}5.3業(yè)務(wù)邏輯層設(shè)計(jì)與實(shí)現(xiàn)從該系統(tǒng)的體系結(jié)構(gòu)上,業(yè)務(wù)邏輯層位于數(shù)據(jù)存取層和表示層之間,其主要任務(wù)是負(fù)責(zé)接收表示層的數(shù)據(jù)請(qǐng)求,將這此請(qǐng)求進(jìn)行必要的業(yè)務(wù)邏輯檢查,然后將請(qǐng)求分解成不同的數(shù)據(jù)層操作,由數(shù)據(jù)層中的相應(yīng)模塊進(jìn)行處理,處理后.將處理結(jié)果返回給表示層。業(yè)務(wù)服務(wù)層封裝了系統(tǒng)的核心業(yè)務(wù)邏輯,在系統(tǒng)中起著承上啟下的作用,其良好的設(shè)計(jì)是系統(tǒng)成功的保證。業(yè)務(wù)邏輯層操作基本和相應(yīng)數(shù)據(jù)庫表的操作相對(duì)應(yīng)。和某個(gè)表相關(guān)的查詢、刪除、更新方法都封裝在該表對(duì)應(yīng)的業(yè)務(wù)邏輯類中。下面以操作員登陸、采購業(yè)務(wù)綜合查詢?yōu)槔f明業(yè)務(wù)邏輯層類的設(shè)計(jì)。1、登陸身份驗(yàn)證操作員登陸要進(jìn)行身份驗(yàn)證,需要對(duì)操作員表Role設(shè)計(jì)業(yè)務(wù)邏輯類RoIeDB.該類提供GetRolcs、VefifyCi№dentials方法,功能分別為獲取操作員信息、身份驗(yàn)證。操作員登陸窗體Login通過調(diào)用業(yè)務(wù)層RoleDB類來實(shí)現(xiàn)登陸操作。RoleDB該類如下圖5-2所示。國5-2類RoIeDBGetRoles方法實(shí)現(xiàn)過程:調(diào)用數(shù)據(jù)存取層DataAccess類GetDataSet方法獲取數(shù)據(jù)集信息。VerifyCrcdendals方法實(shí)現(xiàn)過程:調(diào)用數(shù)據(jù)存取層DalaAceess類Excute—scale方法進(jìn)行身份驗(yàn)證。VeilfyCredentials方法代碼如下:publicbeolVerifyCredentials(stringttserName,stringpassword){DataAccessda=newDstaAccessO.J/g,J建DataAcccss實(shí)例stringSql=”selectcount(-、fromRoleswhereUserName=@usemame”+”andPassword=@pwd”,借ql查詢語句SqIPararaeter[1paras_ncwSqlP曲ameter[2];//查詢條件變{i}賦值pamsl0]=newSqlp㈣nc”@uscmante",userName);paras[1卜newSqlParamelcr(”@pwd",password);intflag=(int)d&ExcuteSeale(Sql,paras)J/該方法查詢數(shù)據(jù)庫核對(duì)if(flag—n{mmmtrue;//正確返同真值1Net環(huán)境下圈書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)else{lttom銣se;)}2、采購業(yè)務(wù)綜合查詢采購業(yè)務(wù)綜合查詢操作需要查詢數(shù)據(jù)庫進(jìn)貨單明細(xì)表(tbwarehouse_detailed)??蓪?duì)進(jìn)貨單明細(xì)表設(shè)計(jì)業(yè)務(wù)邏輯類Warchousc_DctailDB,該類提供GetWarehouseDetail、CreateWatehouseDetail,功能分別為得到進(jìn)貨單明細(xì)表數(shù)據(jù)集或符合條件的進(jìn)貨單明細(xì)表數(shù)據(jù)集、插入進(jìn)貨單明細(xì)表信息。操作員操作今日盤點(diǎn)窗體模塊、采購業(yè)務(wù)綜合查詢窗體模塊時(shí)通過調(diào)用業(yè)務(wù)層Warehouse_DctailDB類的GetWarehouseDetail方法來實(shí)現(xiàn)盤點(diǎn)信息、信息采購業(yè)務(wù)查詢,圖書商品信息錄入模塊通過CreateWatehou∞D(zhuǎn)etail方法完成對(duì)進(jìn)貨單明細(xì)表信息的插入。WafehouseDetailDB該類如下圈5-3所示。圖5-3類Warehouse_DetialDB(1)Ge!tWarehouseDetail方法功能:得到進(jìn)貨單明細(xì)表數(shù)據(jù)集。實(shí)現(xiàn)步驟:①獲取數(shù)據(jù)存取層DataAccess實(shí)例對(duì)象;②創(chuàng)建Sql查詢語句;@調(diào)用數(shù)據(jù)存取層DataAcccss實(shí)例方法GetDataSet獲取數(shù)據(jù)集代碼實(shí)現(xiàn)如下:publicDans札GetWarehouseDetai]0{DalaAcccssda=ncwDataAcce《);stringSql2。select+fromtbwarehouse_detailed”:DataSetDs=da.GetDataSet(Sql,’tb_warchcuse_detailed”);/℃*dlmDs;.Net環(huán)境下圖書銷售系統(tǒng)的設(shè)計(jì)與開發(fā)(2)GetWarehouseDetail方法,重載方法(1)。功能:得到符合條件的進(jìn)貨單明細(xì)表數(shù)據(jù)集。實(shí)現(xiàn)步驟:①獲取數(shù)據(jù)存取層DataAccess實(shí)例對(duì)象;②創(chuàng)建Sql查詢語句:③Sql查詢語句條件數(shù)組,依次賦值;④調(diào)用數(shù)據(jù)存取層DataAccess實(shí)例方法GetDataSet獲取數(shù)據(jù)集。代碼實(shí)現(xiàn)如下:publicDataSetGetWarehouseDetail(stringbarCode,stringbook,stringsupplier,stringtype){DataAccessda=newDataAccess0;//獲取數(shù)據(jù)存取層DataAccess實(shí)例stringSql=”select·fromtb_warehouse_detailedwhereBarCode=@barCode”+”andBook--@book”+I.a(chǎn)ndSuppJieF@supplier’’+I.a(chǎn)ndType=@type”;//Sql查詢語句SqlParameter[】paras=newSqlParameter[4];//Sql.查詢語句條件數(shù)組,//依次賦值paras[0】=newSqlParameter(”@barCode”,barCode);paras[1]=newSqlParameter(”@book",book);paras[2】=HewSqlParameter(”@supplier”,supplier);paras[3]=newSqlParameter(”@type”,type);DataSetDs=da.GetDataSet(Sql,”tb_warehousedetailedII,paras);//調(diào)用數(shù)據(jù)存取層DataAccess實(shí)例方法GetDataSe獲取數(shù)據(jù)集。returnDs;}(3)CreateWarehouseDetail方法功能:插入進(jìn)貨單明細(xì)表信息。實(shí)現(xiàn)步驟:①獲取數(shù)據(jù)存取層DataAccess實(shí)例對(duì)象;②創(chuàng)建Sql查詢語句;③Sql查詢語句條件數(shù)組,依次賦值;④調(diào)用數(shù)據(jù)存取層DataAccess實(shí)例方法ExcuteScale完成Sql操作,并返回flag標(biāo)志。代碼實(shí)現(xiàn)如下:publicvoidCreateWarehouseDetail(stringwareDetailFlowlD,stringbarCode,stringbooLstringpublisher,stringtype,stringsupplier,intamount,floatprchasingPrice,floatprice,datetimedateTime){//Sql查詢語句stringSqi=”InsertintoOrders(WareDetailFlowlD,BarCode,Book,Publisher,Type,Supplier,Amount,Prchasing,Price,DateTime)”+Itvalues(@wareDetailFlowlD,@barCode,@book,@publisher,@type,@supplier,@amount,@prchasingPrice,@price,@dateTime)”;SqlParameter[】paras=newSqlCeParameterfl0];//Sql杏.詢語句條件數(shù)組,,,依次賦值paras[0】=newScIParameter(”@wareDetailFIowlD”,wareDetailFIowlD);par4s【l】=newScIParameter(”@barCode”,barCode);paras[21=newScIParameter(“@book”,book);paras[3】=newScIParameter(”@publisher”,publisher);paras[4】=newSc—IParameter(”@type”,type);paras[5】=newSc—IParameter(”@supplier”,supplier);paras[6】-newScIParameter(”@amount”,amount);paras[7】=newSc—IParameter(“@prehasingPrice”,prchasingPrice);paras[8】_newSc.IParameter(“@price”,price);paras[9】=newScIParameter(”@dateTime”,dateTime);DataAccessda=newDataAccess0;//獲取數(shù)據(jù)存取層DataAccess實(shí)例da.ExcuteSql(Sql,paras);//調(diào)用數(shù)據(jù)存取層DataAccess實(shí)例方法ExcuteSql執(zhí)/,行Sql操作。}5.4表示層的設(shè)計(jì)與實(shí)現(xiàn)如前文所述,表示層位于整個(gè)系統(tǒng)的最外層,是與用戶親密接觸的界面層,其表現(xiàn)形式為Windows應(yīng)用程序。該層的主要功能是接收用戶的請(qǐng)求,并將用戶的輸入請(qǐng)求傳遞給業(yè)務(wù)邏輯層,用戶請(qǐng)求經(jīng)過業(yè)務(wù)邏輯層的相應(yīng)處理后,將結(jié)果顯示在表示層上。表示層根據(jù)用戶的需求主要包括采購入庫、銷售管理、庫存管理、信息發(fā)送、影碟測(cè)試、系統(tǒng)設(shè)置和幫助模塊等功能。系統(tǒng)窗體類圖如下圖5.4所示?!馎bout窗體:介紹本系統(tǒng)相關(guān)信息?!馎ddOper

溫馨提示

  • 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)論