中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)——總體設(shè)計(jì)與編碼_第1頁
中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)——總體設(shè)計(jì)與編碼_第2頁
中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)——總體設(shè)計(jì)與編碼_第3頁
中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)——總體設(shè)計(jì)與編碼_第4頁
中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)——總體設(shè)計(jì)與編碼_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 本科畢業(yè)論文(設(shè)計(jì)) 題 目: 中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)總體設(shè)計(jì)與編碼 學(xué) 院: 專業(yè)班級(jí): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師姓名: 指導(dǎo)教師職稱: 年 月 日摘要 通過信息化手段進(jìn)行倉(cāng)庫(kù)管理是企業(yè)信息化的一個(gè)重要組成部分。如何實(shí)現(xiàn)一個(gè)好的管理信息系統(tǒng)是目前重點(diǎn)研究的對(duì)象。在中小企業(yè)管理過程中,庫(kù)存管理一直通過紙筆表格完成,倉(cāng)庫(kù)管理系統(tǒng)具有很大的應(yīng)用前景。而傳統(tǒng)的系統(tǒng)架構(gòu)往往在實(shí)際應(yīng)用中不能恰好滿足企業(yè)需求,與此同時(shí),敏捷開發(fā)日益受到業(yè)界的重視。本文將在對(duì)中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)進(jìn)行需求分析的基礎(chǔ)上,重點(diǎn)闡述系統(tǒng)模塊分解、原型設(shè)計(jì)和多層架構(gòu)設(shè)計(jì)這三個(gè)在總體設(shè)計(jì)時(shí)需要集中考慮的方面。并積極實(shí)踐,設(shè)計(jì)并實(shí)

2、現(xiàn)了更利于快速開發(fā)的單一功能分層架構(gòu)。關(guān)鍵字:中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng) ,單一功能分層架構(gòu)AbstractWarehouse management by using information techonologies has been an important part of enterprise informationization. How to realize a well-worked management information system has been the key object of study at present. In the process of Small and

3、Medium-sized Enterprise management, Warehouse management has been being finished by filling tables with pens and papers. There is a good application prospect in the development of Warehouse management information system. Regularly, Traditional architectures don't fit the requirement of products

4、in the practical application. At the same time, agile development has been under the attention of the industry increasingly.On the basis of the requirement analysis of the Warehouse Management Information System for Small and Medium-sized Enterprise, this text mainly covers three parts, including sy

5、stem module decomposition, prototype design and multi-layer architecture design. After active practice, We have designed the multi-layer architecture with single function to meet the actual demand, which has an advantage in agile development.Keywords:Warehouse Management Information System for Small

6、 and Medium-sized Enterprise, the multi-layer architecture with single function目錄1引言11.1中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)的研究意義11.2 C#11.3 Visual Studio 2010和SQL Server 200522 系統(tǒng)分析32.1 可行性分析32.2 需求分析33 模塊分解與原型設(shè)計(jì)83.1 模塊化與快速原型83.2 建賬管理及其原型設(shè)計(jì)103.3 保管明細(xì)賬管理及其原型設(shè)計(jì)113.4 添加入庫(kù)信息及其原型設(shè)計(jì)113.5 管理入庫(kù)信息及其原型設(shè)計(jì)133.6 全部材料入庫(kù)明細(xì)表及其原型設(shè)計(jì)143.7 材料入

7、庫(kù)分類匯總表及其原型設(shè)計(jì)153.8 供貨單位供貨明細(xì)表及其原型設(shè)計(jì)163.9 添加出庫(kù)信息及其原型設(shè)計(jì)173.10 管理出庫(kù)信息及其原型設(shè)計(jì)193.11 全部材料出庫(kù)明細(xì)表及其原型設(shè)計(jì)203.12 材料出庫(kù)分類匯總表及其原型設(shè)計(jì)213.13 產(chǎn)品材料耗用匯總表及其原型設(shè)計(jì)224 架構(gòu)設(shè)計(jì)244.1 單一功能分層架構(gòu)的特點(diǎn)244.2 單一功能分層架構(gòu)的優(yōu)缺點(diǎn)254.3 單一功能分層架構(gòu)在本項(xiàng)目中的應(yīng)用265 數(shù)據(jù)庫(kù)設(shè)計(jì)285.1實(shí)體-聯(lián)系圖285.2關(guān)系數(shù)據(jù)模型286 編碼風(fēng)格297 結(jié)束語31參考文獻(xiàn)3241引言1.1中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)的研究意義一直以來,在中小企業(yè)的倉(cāng)庫(kù)管理中,出入庫(kù)登記一

8、直靠紙筆填表格的方式完成。缺點(diǎn)很多:首先,人力成本較高,需要雇用更多的人力進(jìn)行倉(cāng)庫(kù)管理;其次,手工錄入容易出現(xiàn)差錯(cuò),而且紙質(zhì)賬簿保存時(shí)被損壞的風(fēng)險(xiǎn)較高;更值得一提的缺點(diǎn)是,如果想得到一份詳細(xì)的庫(kù)存匯總信息,需要統(tǒng)計(jì)大量數(shù)據(jù),花費(fèi)大量時(shí)間。長(zhǎng)期以來,這樣的問題阻礙了很多中小生產(chǎn)企業(yè)的發(fā)展,在計(jì)算機(jī)信息化高速發(fā)展的今天,數(shù)據(jù)的存儲(chǔ)、運(yùn)算和匯總都可以通過程序自動(dòng)完成,早已不是那個(gè)看著賬本敲算盤的舊世紀(jì),也已不是指著表格按計(jì)算器的年代?,F(xiàn)在的管理信息系統(tǒng)正在中小企業(yè)管理中發(fā)揮著越來越重要的作用,就倉(cāng)庫(kù)管理系統(tǒng)而言,中小企業(yè)只需要出入庫(kù)管理員錄入出入庫(kù)信息,中小企業(yè)管理者就可以坐在辦公室里,通過電腦屏幕

9、,查看關(guān)于庫(kù)存的各種信息,規(guī)劃企業(yè)發(fā)展。這極大地降低了中小企業(yè)管理的成本,減少了繁瑣的流程,加快了工作效率,而且在一定程度上降低了員工的工作量。由于所有的數(shù)據(jù)均在系統(tǒng)內(nèi)流動(dòng),只要數(shù)據(jù)由出入庫(kù)管理員錄入系統(tǒng),每一步流動(dòng)都可以記錄,這也極大地減少了倉(cāng)庫(kù)管理的漏洞。而計(jì)算機(jī)強(qiáng)大的統(tǒng)計(jì)功能,可以在幾秒內(nèi)匯總一年、甚至幾年的出入庫(kù)數(shù)據(jù),并可以將結(jié)果用圖表的形式展示出來,通過一些統(tǒng)計(jì)模型,還可以預(yù)測(cè)未來的發(fā)展趨勢(shì),為中小企業(yè)管理者的決策帶來了極大的便利。當(dāng)前,云計(jì)算的迅速發(fā)展,使得數(shù)據(jù)存儲(chǔ)可以放在云端,數(shù)據(jù)運(yùn)算也可以分布到無數(shù)終端上。作為中小企業(yè)管理者,完全不必?fù)?dān)心數(shù)據(jù)的丟失,只需要借助先進(jìn)的技術(shù),進(jìn)行企

10、業(yè)的管理,制定戰(zhàn)略決策。本文將在對(duì)中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng)進(jìn)行需求分析的基礎(chǔ)上,重點(diǎn)闡述系統(tǒng)模塊分解、原型設(shè)計(jì)和多層架構(gòu)設(shè)計(jì)這三個(gè)在總體設(shè)計(jì)時(shí)需要集中考慮的方面。1.2 C#C# 是一種多范式編程語言(multi-paradigm programming language)。包含強(qiáng)類型(strong typing)、命令式(imperative)、聲明式(declarative)、函數(shù)式(functional)、過程式(procedural)、泛型(generic)、面向?qū)ο?object-oriented)和面向組件(component-oriented)等編程范式。它是由微軟公司基于.NET平

11、臺(tái)開發(fā)并于2000年6月發(fā)布的面向通用語言架構(gòu)(CLI)的新的編程語言。1C#是由C和C+衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C+強(qiáng)大功能的同時(shí)去掉了一些復(fù)雜特性。C#綜合了VB簡(jiǎn)單的可視化操作和C+的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持而成為.NET開發(fā)的首選語言。2由于C+發(fā)展了C,Java舍掉C+中較為復(fù)雜的特性,并且在C+的基礎(chǔ)上增加了更多適合工程開發(fā)的機(jī)制,而C#又在很大程度上借鑒了Java。所以,不管對(duì)于目前可以使用C、C+、Java三者中的哪一門語言的程序員,上手C#的難度都相對(duì)較低。因此,在限定工期較短并且團(tuán)隊(duì)成員只具備

12、初級(jí)開發(fā)能力的情況下,C#理應(yīng)作為開發(fā)管理信息系統(tǒng)優(yōu)先選擇的編程語言。1.3 Visual Studio 2010和SQL Server 2005Visual Studio是微軟公司推出的開發(fā)環(huán)境。是目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境。Visual Studio 2010版本于2010年4月12日上市,其集成開發(fā)環(huán)境(IDE)的界面被重新設(shè)計(jì)和組織,變得更加簡(jiǎn)單明了。Visual Studio 2010同時(shí)帶來了 .NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-CTP

13、),并且支持開發(fā)面向Windows 7的應(yīng)用程序。除了Microsoft SQL Server,它還支持 IBM DB2和Oracle數(shù)據(jù)庫(kù)。3Microsoft SQL Server 2005 是一個(gè)全面的數(shù)據(jù)庫(kù)平臺(tái),使用集成的商業(yè)智能 (BI)工具提供了企業(yè)級(jí)的數(shù)據(jù)管理。Microsoft SQL Server 2005數(shù)據(jù)庫(kù)引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲(chǔ)功能,可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序。4為了獲得較新的開發(fā)體驗(yàn),我們選擇了Visual Studio 2010,而考慮到數(shù)據(jù)庫(kù)平臺(tái)僅僅用來存儲(chǔ)數(shù)據(jù),并且高版本的數(shù)據(jù)庫(kù)平臺(tái)較難被低版本的數(shù)據(jù)庫(kù)平臺(tái)兼

14、容,并且團(tuán)隊(duì)開發(fā)環(huán)境使用的操作系統(tǒng)中,Windows XP和Windows7均有涉及,所以我們選擇了對(duì)目前來說,版本相對(duì)較低并可以在Windows7上正常運(yùn)行的Microsoft SQL Server 2005。2 系統(tǒng)分析2.1 可行性分析可行性分析的任務(wù)是確定系統(tǒng)在技術(shù)上能不能實(shí)現(xiàn)、做出來的東西用戶能不能用以及是否需要太多的資金來實(shí)現(xiàn)這個(gè)系統(tǒng)。1. 技術(shù)可行性: 客戶機(jī)可以運(yùn)行Windows XP及以上版本的操作系統(tǒng),有足夠大的硬盤空間存儲(chǔ)數(shù)據(jù)。2. 操作可行性: 可以為出入庫(kù)管理員進(jìn)行使用培訓(xùn),界面十分簡(jiǎn)潔,提示信息豐富,易用性可以滿足使用的要求。3. 經(jīng)濟(jì)可行性: 只需要為出入庫(kù)管理員

15、配置一臺(tái)電腦,并運(yùn)行Windows XP及以上版本的操作系統(tǒng)即可。從技術(shù)可行性、操作可行性和經(jīng)濟(jì)可行性三個(gè)角度進(jìn)行可行性分析,開發(fā)這個(gè)中小型的倉(cāng)庫(kù)管理系統(tǒng)完全可行。2.2 需求分析需求分析的任務(wù)是確定系統(tǒng)必須完成的工作,通過對(duì)需求文檔的分析和建立原型,并不斷和用戶交流系統(tǒng)的設(shè)計(jì)方案,可以在一定程度上獲得相對(duì)準(zhǔn)確的用戶需求。如果不進(jìn)行需求分析,直接進(jìn)行總體設(shè)計(jì),我們無法知道到底該設(shè)計(jì)什么,或者我們?cè)O(shè)計(jì)的東西到底該什么樣子。所以,需求分析在軟件定義中占有很重要的地位。本系統(tǒng)作為一款中小企業(yè)倉(cāng)庫(kù)管理系統(tǒng),主要完成材料出入庫(kù)管理、賬目管理、供貨單位管理、產(chǎn)品耗材管理和一些數(shù)據(jù)匯總報(bào)表功能。主要完成以下

16、幾個(gè)功能: 圖2-1 入庫(kù)單樣表A) 添加入庫(kù)信息1. 需要添加的信息包括:入庫(kù)單編號(hào)、入庫(kù)日期、供貨單位、供貨單號(hào)、制單人、入庫(kù)材料類別、入庫(kù)材料名稱、入庫(kù)材料規(guī)格、入庫(kù)數(shù)目、入庫(kù)金額。2. 可以修改和刪除入庫(kù)信息。B) 管理入庫(kù)信息1. 可以根據(jù)入庫(kù)單編號(hào)、入庫(kù)日期、供貨單位、供貨單號(hào)中的任意條件組合查詢?nèi)霂?kù)單信息。2. 可以更改和刪除入庫(kù)單信息。圖2-2 出庫(kù)單樣表C) 添加出庫(kù)信息1. 需要添加的信息包括:出庫(kù)單編號(hào)、出庫(kù)日期、領(lǐng)用班組、生產(chǎn)計(jì)劃號(hào)、產(chǎn)品名、經(jīng)領(lǐng)人、批準(zhǔn)人、制單人、出庫(kù)材料類別、出庫(kù)材料名稱、出庫(kù)材料規(guī)格、出庫(kù)數(shù)目、出庫(kù)金額。2. 可以更改和刪除出庫(kù)信息。D) 管理出庫(kù)

17、信息1. 可以根據(jù)出庫(kù)單編號(hào)、出庫(kù)日期、領(lǐng)用班組、生產(chǎn)計(jì)劃號(hào)、產(chǎn)品名中的任意條件組合查詢出庫(kù)單信息。2. 可以更改和刪除出庫(kù)單信息。圖2-3 保管明細(xì)賬樣表E) 建賬管理1. 從無到有地將庫(kù)存的初始數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),數(shù)據(jù)包括材料類別、材料名稱、材料規(guī)格、材料數(shù)目、材料金額。F) 保管明細(xì)賬管理1. 匯總在某一時(shí)間段內(nèi),某種特定規(guī)格的材料的出入庫(kù)和結(jié)存情況,反饋的數(shù)據(jù)包括日期、入庫(kù)單編號(hào)、入庫(kù)數(shù)量、入庫(kù)單價(jià)、入庫(kù)金額、出庫(kù)單編號(hào)、出庫(kù)數(shù)量、出庫(kù)單價(jià)、出庫(kù)金額、結(jié)存數(shù)量、結(jié)存單價(jià)、結(jié)存金額。圖2-4 供貨單位供貨明細(xì)表樣表G) 供貨單位供貨匯總1. 匯總在某一時(shí)間段內(nèi),某一特定的供貨單位的供貨情況,

18、反饋的數(shù)據(jù)包括日期、材料類別、材料名稱、材料規(guī)格、數(shù)目、單價(jià)、金額。圖2-5 產(chǎn)品材料耗用匯總表樣表H) 產(chǎn)品耗材匯總1. 匯總在某一時(shí)間段內(nèi),某一特定產(chǎn)品消耗材料的情況,反饋的數(shù)據(jù)包括材料編號(hào)、材料類別、材料名稱、材料規(guī)格、數(shù)目、單價(jià)、金額。圖2-6 全部材料入庫(kù)明細(xì)表樣表圖2-7 材料入庫(kù)分類匯總表樣表I) 材料入庫(kù)匯總1. 全部材料入庫(kù)明細(xì)表,匯總在某一時(shí)間段內(nèi)的全部材料入庫(kù)情況,反饋的數(shù)據(jù)包括日期、材料類別、材料名稱、材料規(guī)格、供貨單位、數(shù)目、單價(jià)、金額。2. 材料入庫(kù)分類匯總表,匯總在某一時(shí)間段內(nèi),某一特定類別的材料的入庫(kù)情況,反饋的數(shù)據(jù)包括日期、材料名稱、材料規(guī)格、供貨單位、數(shù)目、

19、單價(jià)、金額。圖2-8 全部材料出庫(kù)明細(xì)表樣表圖2-9 材料出庫(kù)分類匯總表樣表J) 材料出庫(kù)匯總1. 全部材料出庫(kù)明細(xì)表,匯總在某一時(shí)間段內(nèi)的全部材料出庫(kù)情況,反饋的數(shù)據(jù)包括日期、生產(chǎn)計(jì)劃號(hào)、產(chǎn)品名、材料類別、材料名稱、材料規(guī)格、數(shù)目、單價(jià)、金額。2. 材料出庫(kù)分類匯總表,匯總在具體某一天的材料出庫(kù)與產(chǎn)品生產(chǎn)的對(duì)應(yīng)情況,反饋的數(shù)據(jù)包括材料類別、產(chǎn)品名、對(duì)應(yīng)的出庫(kù)金額。3 模塊分解與原型設(shè)計(jì)3.1 模塊化與快速原型模塊化是把系統(tǒng)劃分成獨(dú)立命名且獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)特定的子功能,把這些模塊集成起來,構(gòu)成目標(biāo)系統(tǒng),完成指定的功能以滿足用戶的需求。模塊化使得系統(tǒng)可以為人所管理,便于控制系統(tǒng)行

20、為。如果一個(gè)系統(tǒng)僅由一個(gè)模塊組成,那么它將很難被人理解。所以我們要把復(fù)雜的問題分解成許多容易解決的小問題,各個(gè)擊破,這樣原來的問題也就容易解決了。然而,事實(shí)證明,過多的模塊,劃分過細(xì),會(huì)極大增加系統(tǒng)的模塊數(shù)目,導(dǎo)致過大的模塊間通信開銷,設(shè)計(jì)模塊間接口所需要的工作量也將大量增加。所以,我們應(yīng)在模塊劃分與系統(tǒng)功能之間建立聯(lián)系,使得模塊與功能一一對(duì)應(yīng),或者在可控范圍內(nèi)多個(gè)模塊與一個(gè)功能對(duì)應(yīng)。采用模塊化開發(fā)方法,可以使系統(tǒng)結(jié)構(gòu)清晰,不僅容易設(shè)計(jì),而且容易閱讀和理解。并且程序錯(cuò)誤會(huì)被限定在涉及的模塊之中,易于測(cè)試和調(diào)試,從而提高軟件的可靠性。而添加功能只需修改其中的部分模塊,增大了程序的可擴(kuò)展性。只修改

21、最底層代碼,就可以讓我們的系統(tǒng)運(yùn)行在不同的數(shù)據(jù)庫(kù)系統(tǒng)上,如果修改最上層代碼,甚至可以讓我們的系統(tǒng)運(yùn)行在不同的操作系統(tǒng)上,提高了程序的可移植性。因此,我們按照系統(tǒng)需求分析中涉及的功能,將系統(tǒng)劃分成如下幾個(gè)模塊:倉(cāng)庫(kù)管理系統(tǒng)入庫(kù)管理與匯總建賬管理保管明細(xì)賬管理出庫(kù)管理與匯總管理入庫(kù)信息添加入庫(kù)信息全部材料入庫(kù)明細(xì)表材料入庫(kù)分類匯總表供貨單位供貨明細(xì)表產(chǎn)品材料耗用匯總表材料出庫(kù)分類匯總表全部材料出庫(kù)明細(xì)表管理出庫(kù)信息添加出庫(kù)信息圖3-1 倉(cāng)庫(kù)管理系統(tǒng)模塊分解圖通過快速原型設(shè)計(jì)工具,可以迅速建立系統(tǒng)的原型,盡快向用戶提供一個(gè)直觀的目標(biāo)系統(tǒng)的模型,有利于用戶和開發(fā)者在目標(biāo)系統(tǒng)“什么樣子”和目標(biāo)系統(tǒng)“能做

22、什么”這兩個(gè)的問題上盡可能快地達(dá)成共識(shí)。因此,可以忽略原型中不損害系統(tǒng)功能和行為的小瑕疵。并且原型容易修改,開發(fā)人員可以根據(jù)用戶的意見迅速修改,構(gòu)建更符合用戶要求的版本,如果仍然存在問題,還可以再修改,不斷靠近用戶的實(shí)際需求。但要避免對(duì)無關(guān)系統(tǒng)功能和行為上的小瑕疵的不斷更改,以免延誤軟件的開發(fā)時(shí)間。在本文中,我們使用Pencil作為我們的原型圖繪制工具。Pencil是一款開源的原型圖繪制工具,效果和手繪基本一致,十分有利于引起用戶的視覺關(guān)注,增強(qiáng)用戶參與系統(tǒng)開發(fā)的積極性。圖3-2 主窗體原型設(shè)計(jì)3.2 建賬管理及其原型設(shè)計(jì)A) 添加建賬1. 從數(shù)據(jù)庫(kù)中讀取已有材料類別,根據(jù)材料類別,從數(shù)據(jù)庫(kù)中

23、讀取材料名稱,根據(jù)材料類別和材料名稱讀取材料規(guī)格。如果是新添加的材料類別、材料名稱和材料規(guī)格,可以通過“新建類別”按鈕、“新建名稱”按鈕和“新建規(guī)格”按鈕,添加新的材料類別、新的材料名稱和新的材料規(guī)格;2. 填寫材料數(shù)目和材料金額;3. 點(diǎn)擊“添加”按鈕,讀取界面上填寫的數(shù)據(jù),顯示提示信息;4. 傳入數(shù)據(jù)到數(shù)據(jù)鏈接層;5. 從數(shù)據(jù)庫(kù)中讀取添加后的建賬數(shù)據(jù),計(jì)算單價(jià),返回到界面;6. 顯示添加的結(jié)果。B) 更改建賬1. 修改表格中的數(shù)目或者金額,點(diǎn)擊“更改”按鈕,顯示提示信息;2. 將新的數(shù)據(jù)傳入數(shù)據(jù)鏈接層;3. 更改數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);4. 從數(shù)據(jù)庫(kù)中讀取更改后的建賬數(shù)據(jù),計(jì)算單價(jià),返回到界面

24、;5. 顯示更改的結(jié)果。C) 刪除建賬1. 選中表格中要?jiǎng)h除的數(shù)據(jù)行,點(diǎn)擊“刪除”按鈕,顯示提示信息;2. 將要?jiǎng)h除的數(shù)據(jù)行編號(hào)傳入數(shù)據(jù)鏈接層;3. 刪除數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);4. 從數(shù)據(jù)庫(kù)中讀取刪除后的建賬數(shù)據(jù),計(jì)算單價(jià),返回到界面;5. 顯示刪除的結(jié)果。圖3-3 建賬管理窗體原型設(shè)計(jì)3.3 保管明細(xì)賬管理及其原型設(shè)計(jì)A) 查看保管明細(xì)賬1. 從數(shù)據(jù)庫(kù)中讀取已有材料類別、材料名稱和材料規(guī)格;2. 選擇查詢的開始日期和結(jié)束日期;3. 點(diǎn)擊“查詢”按鈕;4. 傳入查詢條件到數(shù)據(jù)鏈接層;5. 根據(jù)查詢條件查詢數(shù)據(jù)庫(kù),計(jì)算入庫(kù)單價(jià)、出庫(kù)單價(jià)和結(jié)存信息,返回到界面;6. 顯示查詢的結(jié)果。B) 導(dǎo)出到Ex

25、cel1. 點(diǎn)擊“導(dǎo)出到Excel”按鈕;2. 選擇要導(dǎo)出的位置和文件名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3-4 保管明細(xì)賬窗體原型設(shè)計(jì)3.4 添加入庫(kù)信息及其原型設(shè)計(jì)A) 添加入庫(kù)基本信息1. 產(chǎn)生入庫(kù)單編號(hào),獲得入庫(kù)日期;2. 加載已有供貨單位。如果是新添加的供貨單位,可點(diǎn)擊“供貨單位”按鈕,添加新的供貨單位;3. 添加供貨單號(hào)和制單人;4. 點(diǎn)擊“下一步”按鈕,傳入數(shù)據(jù)到添加入庫(kù)詳細(xì)信息窗體。B) 添加入庫(kù)詳細(xì)信息1. 獲取從添加入庫(kù)基本信息中讀取的基本信息;2. 從數(shù)據(jù)庫(kù)中讀取已有材料類別,根據(jù)材料類別,從數(shù)據(jù)庫(kù)中讀

26、取材料名稱,根據(jù)材料類別和材料名稱讀取材料規(guī)格。如果是新添加的材料類別、材料名稱和材料規(guī)格,可以通過“新建類別”按鈕、“新建名稱”按鈕和“新建規(guī)格”按鈕,添加新的材料類別、新的材料名稱和新的材料規(guī)格;3. 添加材料數(shù)目和材料金額;4. 點(diǎn)擊“添加”按鈕,讀取界面上填寫的數(shù)據(jù),顯示提示信息;5. 傳入數(shù)據(jù)到數(shù)據(jù)鏈接層;6. 從數(shù)據(jù)庫(kù)中讀取添加后的建賬數(shù)據(jù),計(jì)算單價(jià),返回到界面;7. 顯示添加的結(jié)果。C) 修改基本信息1. 點(diǎn)擊“修改基本信息”按鈕;2. 供貨單位、供貨單號(hào)和制單人變?yōu)榭删庉嫚顟B(tài);3. 修改要修改的基本信息,點(diǎn)擊“確定”按鈕。D) 更改入庫(kù)信息1. 修改表格中的數(shù)目或者金額,點(diǎn)擊“

27、更改”按鈕,顯示提示信息;2. 將新的數(shù)據(jù)傳入數(shù)據(jù)鏈接層;3. 更改數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);4. 從數(shù)據(jù)庫(kù)中讀取更改后的入庫(kù)數(shù)據(jù),計(jì)算單價(jià),返回到界面;5. 顯示更改的結(jié)果。E) 刪除入庫(kù)信息1. 選中表格中要?jiǎng)h除的數(shù)據(jù)行,點(diǎn)擊“刪除”按鈕,顯示提示信息;2. 將要?jiǎng)h除的數(shù)據(jù)行編號(hào)傳入數(shù)據(jù)鏈接層;3. 刪除數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);4. 從數(shù)據(jù)庫(kù)中讀取刪除后的入庫(kù)數(shù)據(jù),計(jì)算單價(jià),返回到界面;5. 顯示刪除的結(jié)果。F) 生成入庫(kù)單1. 點(diǎn)擊“生成入庫(kù)單”按鈕;2. 選擇要導(dǎo)出的入庫(kù)單文件的位置和文件名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3

28、-5 添加入庫(kù)基本信息窗體原型設(shè)計(jì)圖3-6 添加入庫(kù)詳細(xì)信息窗體原型設(shè)計(jì)3.5 管理入庫(kù)信息及其原型設(shè)計(jì)A) 查詢?nèi)霂?kù)單信息1. 填寫查詢條件,按照下列查詢規(guī)則返回查詢結(jié)果。查詢規(guī)則:(1) 如果填寫了入庫(kù)單編號(hào),則優(yōu)先根據(jù)入庫(kù)單編號(hào)查詢,日期、供貨單位、供貨單號(hào)無效;(2) 如果只填寫供貨單位或只填寫供貨單號(hào),則按照供貨單位或供貨單號(hào),且入庫(kù)日期在前后三天范圍內(nèi)進(jìn)行查詢;(3) 如果只填寫供貨單號(hào)和供貨單位,則按照供貨單號(hào)、供貨單位和日期進(jìn)行查詢;(4) 如果什么也不填入,則顯示前后三天的入庫(kù)記錄。2. 傳入查詢條件到數(shù)據(jù)鏈接層;3. 返回查詢的入庫(kù)單結(jié)果,返回到界面。B) 更改入庫(kù)單信息1

29、. 選中要更改的入庫(kù)單數(shù)據(jù)行,點(diǎn)擊“更改”按鈕;2. 跳轉(zhuǎn)到添加入庫(kù)詳細(xì)信息窗體,余下操作和添加入庫(kù)詳細(xì)信息一致,提交完數(shù)據(jù)后關(guān)閉添加入庫(kù)詳細(xì)信息窗體;3. 點(diǎn)擊“刷新”按鈕;4. 將原查詢條件傳到數(shù)據(jù)鏈接層;5. 查詢?nèi)霂?kù)單更改后的結(jié)果,返回到界面。C) 刪除入庫(kù)單信息1. 選中表格中要?jiǎng)h除的數(shù)據(jù)行,點(diǎn)擊“刪除”按鈕,顯示提示信息;2. 將要?jiǎng)h除的數(shù)據(jù)行編號(hào)傳入數(shù)據(jù)鏈接層;3. 刪除數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);4. 將原查詢條件傳到數(shù)據(jù)鏈接層;5. 查詢?nèi)霂?kù)單刪除后的結(jié)果,返回到界面。圖3-7 管理入庫(kù)信息窗體原型設(shè)計(jì)3.6 全部材料入庫(kù)明細(xì)表及其原型設(shè)計(jì)A) 查看全部材料入庫(kù)明細(xì)表1. 選擇查詢的

30、開始日期和結(jié)束日期;2. 點(diǎn)擊“查詢”按鈕;3. 傳入日期條件到數(shù)據(jù)鏈接層;4. 根據(jù)日期條件查詢數(shù)據(jù)庫(kù),計(jì)算單價(jià),返回到界面;5. 顯示查詢的結(jié)果。B) 導(dǎo)出到Excel1. 點(diǎn)擊“導(dǎo)出到Excel”按鈕;2. 選擇要導(dǎo)出的位置和文件名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3-8 全部材料入庫(kù)明細(xì)表窗體原型設(shè)計(jì)3.7 材料入庫(kù)分類匯總表及其原型設(shè)計(jì)A) 查看材料入庫(kù)分類匯總表1. 選擇材料類別;2. 選擇查詢的開始日期和結(jié)束日期;3. 點(diǎn)擊“查詢”按鈕;4. 傳入查詢條件到數(shù)據(jù)鏈接層;5. 根據(jù)查詢條件查詢數(shù)據(jù)庫(kù),計(jì)算單價(jià),返

31、回到界面;6. 顯示查詢的結(jié)果。B) 導(dǎo)出到Excel1. 點(diǎn)擊“導(dǎo)出到Excel”按鈕;2. 選擇要導(dǎo)出的位置和文件名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3-9 材料入庫(kù)分類匯總表窗體原型設(shè)計(jì)3.8 供貨單位供貨明細(xì)表及其原型設(shè)計(jì)A) 查看供貨單位供貨明細(xì)表1. 選擇供貨單位;2. 選擇查詢的開始日期和結(jié)束日期;3. 點(diǎn)擊“查詢”按鈕;4. 傳入查詢條件到數(shù)據(jù)鏈接層;5. 根據(jù)查詢條件查詢數(shù)據(jù)庫(kù),計(jì)算單價(jià),返回到界面;6. 顯示查詢的結(jié)果。B) 導(dǎo)出到Excel1. 點(diǎn)擊“導(dǎo)出到Excel”按鈕;2. 選擇要導(dǎo)出的位置和文件

32、名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3-10 供貨單位供貨明細(xì)表窗體原型設(shè)計(jì)3.9 添加出庫(kù)信息及其原型設(shè)計(jì)A) 添加出庫(kù)基本信息1. 產(chǎn)生出庫(kù)單編號(hào),獲得出庫(kù)日期;2. 添加領(lǐng)用班組、生產(chǎn)計(jì)劃號(hào)、產(chǎn)品名、經(jīng)領(lǐng)人、批準(zhǔn)人和制單人;3. 點(diǎn)擊“下一步”按鈕,傳入數(shù)據(jù)到添加出庫(kù)詳細(xì)信息窗體。B) 添加出庫(kù)詳細(xì)信息1. 獲取從添加出庫(kù)基本信息中讀取的基本信息;2. 從數(shù)據(jù)庫(kù)中讀取已有材料類別,根據(jù)材料類別,從數(shù)據(jù)庫(kù)中讀取材料名稱,根據(jù)材料類別和材料名稱讀取材料規(guī)格。3. 添加材料數(shù)目和材料金額;4. 點(diǎn)擊“添加”按鈕,讀取界面上填

33、寫的數(shù)據(jù),顯示提示信息;5. 傳入數(shù)據(jù)到數(shù)據(jù)鏈接層;6. 從數(shù)據(jù)庫(kù)中讀取添加后的出庫(kù)數(shù)據(jù),計(jì)算單價(jià),返回到界面;7. 顯示添加的結(jié)果。C) 修改基本信息1. 點(diǎn)擊“修改基本信息”按鈕;2. 領(lǐng)用班組、生產(chǎn)計(jì)劃號(hào)、產(chǎn)品名、經(jīng)領(lǐng)人、批準(zhǔn)人和制單人變?yōu)榭删庉嫚顟B(tài);3. 修改要修改的基本信息,點(diǎn)擊“確定”按鈕。D) 更改出庫(kù)信息1. 修改表格中的數(shù)目或者金額,點(diǎn)擊“更改”按鈕,顯示提示信息;2. 將新的數(shù)據(jù)傳入數(shù)據(jù)鏈接層;3. 更改數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);4. 從數(shù)據(jù)庫(kù)中讀取更改后的出庫(kù)數(shù)據(jù),計(jì)算單價(jià),返回到界面;5. 顯示更改的結(jié)果。E) 刪除出庫(kù)信息1. 選中表格中要?jiǎng)h除的數(shù)據(jù)行,點(diǎn)擊“刪除”按鈕,顯

34、示提示信息;2. 將要?jiǎng)h除的數(shù)據(jù)行編號(hào)傳入數(shù)據(jù)鏈接層;3. 刪除數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);4. 從數(shù)據(jù)庫(kù)中讀取刪除后的出庫(kù)數(shù)據(jù),計(jì)算單價(jià),返回到界面;5. 顯示刪除的結(jié)果。F) 生成出庫(kù)單1. 點(diǎn)擊“生成出庫(kù)單”按鈕;2. 選擇要導(dǎo)出的出庫(kù)單文件的位置和文件名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3-11 添加出庫(kù)基本信息窗體原型設(shè)計(jì)圖3-12 添加出庫(kù)詳細(xì)信息窗體原型設(shè)計(jì)3.10 管理出庫(kù)信息及其原型設(shè)計(jì)A) 查詢出庫(kù)單信息1. 填寫查詢條件,按照下列查詢規(guī)則返回查詢結(jié)果。查詢規(guī)則:(1) 如果填寫了出庫(kù)單編號(hào),則優(yōu)先根據(jù)出庫(kù)單編號(hào)

35、查詢,日期、領(lǐng)用班組、生產(chǎn)計(jì)劃號(hào)、產(chǎn)品名均無效。(2) 如果只填寫生產(chǎn)計(jì)劃號(hào),則按照生產(chǎn)計(jì)劃號(hào)且日期在出庫(kù)日期前后三天范圍內(nèi)進(jìn)行查詢。(3) 如果只填寫領(lǐng)用班組,則按照領(lǐng)用班組且在出庫(kù)日期的前后三天范圍內(nèi)進(jìn)行查詢。(4) 如果只填寫產(chǎn)品名,則按照產(chǎn)品名且在出庫(kù)日期的前后三天范圍內(nèi)進(jìn)行查詢。(5) 如果只填寫生產(chǎn)計(jì)劃號(hào)、產(chǎn)品名和領(lǐng)用班組,則按照生產(chǎn)計(jì)劃號(hào)、產(chǎn)品名和領(lǐng)用班組,且在出庫(kù)日期前后三天范圍內(nèi)進(jìn)行查詢;如果只填寫任意兩項(xiàng),則按照所填寫的項(xiàng)和日期在出庫(kù)日期前后三天范圍內(nèi)進(jìn)行查詢。2. 傳入查詢條件到數(shù)據(jù)鏈接層;3. 返回查詢的出庫(kù)單結(jié)果,返回到界面。B) 更改出庫(kù)單信息1. 選中要更改的出庫(kù)

36、單數(shù)據(jù)行,點(diǎn)擊“更改”按鈕;2. 跳轉(zhuǎn)到添加出庫(kù)詳細(xì)信息窗體,余下操作和添加出庫(kù)詳細(xì)信息一致,提交完數(shù)據(jù)后關(guān)閉添加出庫(kù)詳細(xì)信息窗體;3. 點(diǎn)擊“刷新”按鈕;4. 將原查詢條件傳到數(shù)據(jù)鏈接層;5. 查詢出庫(kù)單更改后的結(jié)果,返回到界面。C) 刪除出庫(kù)單信息1. 選中表格中要?jiǎng)h除的數(shù)據(jù)行,點(diǎn)擊“刪除”按鈕,顯示提示信息;2. 將要?jiǎng)h除的數(shù)據(jù)行編號(hào)傳入數(shù)據(jù)鏈接層;3. 刪除數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);4. 將原查詢條件傳到數(shù)據(jù)鏈接層;5. 查詢出庫(kù)單刪除后的結(jié)果,返回到界面。圖3-13 管理出庫(kù)信息窗體原型設(shè)計(jì)3.11 全部材料出庫(kù)明細(xì)表及其原型設(shè)計(jì)A) 查看全部材料出庫(kù)明細(xì)表1. 選擇查詢的開始日期和結(jié)束日

37、期;2. 點(diǎn)擊“查詢”按鈕;3. 傳入日期條件到數(shù)據(jù)鏈接層;4. 根據(jù)日期條件查詢數(shù)據(jù)庫(kù),計(jì)算單價(jià),返回到界面;5. 顯示查詢的結(jié)果。B) 導(dǎo)出到Excel1. 點(diǎn)擊“導(dǎo)出到Excel”按鈕;2. 選擇要導(dǎo)出的位置和文件名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3-14 全部材料出庫(kù)明細(xì)表窗體原型設(shè)計(jì)3.12 材料出庫(kù)分類匯總表及其原型設(shè)計(jì)A) 查看材料出庫(kù)分類匯總表1. 選擇查詢?nèi)掌冢?. 點(diǎn)擊“查詢”按鈕;3. 傳入日期條件到數(shù)據(jù)鏈接層;4. 根據(jù)日期條件查詢數(shù)據(jù)庫(kù),返回界面;5. 查詢所有相關(guān)的材料類別,返回界面;6. 查詢

38、所有相關(guān)的產(chǎn)品,返回界面;7. 根據(jù)上述返回的信息,拼接查詢結(jié)果;8. 顯示查詢結(jié)果。B) 導(dǎo)出到Excel1. 點(diǎn)擊“導(dǎo)出到Excel”按鈕;2. 選擇要導(dǎo)出的位置和文件名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3-15 材料出庫(kù)分類匯總表窗體原型設(shè)計(jì)3.13 產(chǎn)品材料耗用匯總表及其原型設(shè)計(jì)A) 查看產(chǎn)品材料耗用匯總表1. 選擇產(chǎn)品名;2. 選擇查詢的開始日期和結(jié)束日期;3. 點(diǎn)擊“查詢”按鈕;4. 傳入查詢條件到數(shù)據(jù)鏈接層;5. 根據(jù)查詢條件查詢數(shù)據(jù)庫(kù),計(jì)算單價(jià),返回到界面;6. 顯示查詢的結(jié)果。B) 導(dǎo)出到Excel1. 點(diǎn)

39、擊“導(dǎo)出到Excel”按鈕;2. 選擇要導(dǎo)出的位置和文件名;3. 按單元格讀取表格的數(shù)據(jù),拼接xml字符串,填入數(shù)據(jù),得到預(yù)先確定好規(guī)格并填寫好數(shù)據(jù)的電子表格。圖3-16 產(chǎn)品材料耗用匯總表窗體原型設(shè)計(jì)4 架構(gòu)設(shè)計(jì)架構(gòu)設(shè)計(jì)往往決定了系統(tǒng)開發(fā)中后期的進(jìn)度。一個(gè)不好的架構(gòu),往往會(huì)讓項(xiàng)目在后期演變成“邊做邊設(shè)計(jì)”,出現(xiàn)很多無謂的修改和時(shí)間的浪費(fèi)。從理論上講,軟件開發(fā)應(yīng)該是分析、設(shè)計(jì)、編碼、測(cè)試、維護(hù)這五個(gè)大體的步驟。但是我們發(fā)現(xiàn),到了測(cè)試階段,發(fā)現(xiàn)錯(cuò)誤,需要修改的時(shí)候,經(jīng)常會(huì)修改設(shè)計(jì)。這樣直接造成了較大的修改工作量,甚至可能使問題越改越多。很多人認(rèn)為,用戶需要什么功能,我們就實(shí)現(xiàn)什么功能,沒必要花時(shí)

40、間去設(shè)計(jì)軟件架構(gòu)。但當(dāng)這些人發(fā)現(xiàn),到了項(xiàng)目后期,重構(gòu)代碼幾乎等于重寫代碼的時(shí)候,為時(shí)已晚。還有些人認(rèn)為,既有的成熟架構(gòu)已經(jīng)很多,我們沒必要自己設(shè)計(jì),浪費(fèi)時(shí)間,并且容易出問題。但這些人會(huì)發(fā)現(xiàn),既有的架構(gòu)很多時(shí)候不是太大,就是太小,團(tuán)隊(duì)學(xué)習(xí)既有架構(gòu)的過程也會(huì)浪費(fèi)系統(tǒng)開發(fā)的時(shí)間。良好的架構(gòu)設(shè)計(jì),不僅可以讓我們的系統(tǒng)滿足用戶的需求,而且可以在用戶需求改變的時(shí)候,我們可以用最小的代價(jià)滿足用戶需求的改變。除此之外,良好的設(shè)計(jì)架構(gòu)意味著良好的可移植性、良好的可維護(hù)性、較高的開發(fā)效率等等。所以我們應(yīng)該重視架構(gòu)設(shè)計(jì)在軟件開發(fā)中的作用。在本項(xiàng)目中,我們?cè)O(shè)計(jì)并使用了單一功能分層架構(gòu)。對(duì)于傳統(tǒng)三層架構(gòu)中不適合本項(xiàng)目的

41、地方進(jìn)行了取舍,并加入了我們自己的設(shè)計(jì)理念。4.1 單一功能分層架構(gòu)的特點(diǎn)所謂單一功能分層架構(gòu),就是把整個(gè)項(xiàng)目分解為界面層、業(yè)務(wù)邏輯層、若干中間數(shù)據(jù)處理層和數(shù)據(jù)鏈接層。(待修改)中間的邏輯層,每一層實(shí)現(xiàn)且僅實(shí)現(xiàn)一個(gè)功能。相比較傳統(tǒng)三層架構(gòu)對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理這一略顯寬泛含混的作用,我們的架構(gòu)可以更清晰,并且增強(qiáng)了系統(tǒng)的功能內(nèi)聚,使得每個(gè)模塊的功能單一,降低了模塊的規(guī)模,雖然增加了處理結(jié)構(gòu)的深度,但其規(guī)模在可控范圍之內(nèi)。在系統(tǒng)開發(fā)過程中,團(tuán)隊(duì)分工可以更加明確,由于功能單一,團(tuán)隊(duì)成員上手的成本低,每個(gè)人僅需要完成若干功能中的一個(gè)或幾個(gè)。下一小節(jié),我們將重點(diǎn)闡述,單一功能分層架構(gòu)的優(yōu)缺點(diǎn)。圖4-1 單

42、一功能分層架構(gòu)4.2 單一功能分層架構(gòu)的優(yōu)缺點(diǎn)單一功能分層架構(gòu)的主要優(yōu)點(diǎn)如下:1) 分工明確,職責(zé)劃分清晰明確的分工有利于團(tuán)隊(duì)成員各盡所能,有利于評(píng)價(jià)團(tuán)隊(duì)成員的貢獻(xiàn),避免利益上的沖突,避免爭(zhēng)功,有利于維護(hù)團(tuán)隊(duì)的穩(wěn)定。2) 工作內(nèi)容專一工作內(nèi)容的專一使得團(tuán)隊(duì)成員可以專注于自己的模塊,有利于加快項(xiàng)目開發(fā)速度,并可培養(yǎng)團(tuán)隊(duì)成員的一技之長(zhǎng),甚至多技之長(zhǎng),易產(chǎn)生工作積極性。3) 可移植性、可擴(kuò)展性好每一層只做一件事情,需要添加處理,就添加新的處理層;需要添加功能,就增加寬度?;静恍枰淖兲喈?dāng)前項(xiàng)目的已有成果,便于擴(kuò)展。而如果換數(shù)據(jù)庫(kù),只需更換數(shù)據(jù)鏈接層;換操作系統(tǒng),只需更換界面層。有較強(qiáng)的可移植性,

43、可以應(yīng)對(duì)各種環(huán)境變化。(通過GTK#,在Windows上用C#開發(fā)的程序也可以移植到Linux操作系統(tǒng)上)4) 不存在過度設(shè)計(jì),簡(jiǎn)單可靠架構(gòu)簡(jiǎn)單,不用花費(fèi)太多時(shí)間在架構(gòu)學(xué)習(xí)和架構(gòu)維護(hù)上。模塊功能單一,易查錯(cuò),可測(cè)試性好,隨之而來的,可維護(hù)性好。5) 易上手,對(duì)團(tuán)隊(duì)成員的能力要求低同樣是因?yàn)榧軜?gòu)簡(jiǎn)單,對(duì)團(tuán)隊(duì)成員上手的要求較低,一個(gè)小時(shí)就足可以適應(yīng)此架構(gòu)。團(tuán)隊(duì)成員也容易知道自己對(duì)整個(gè)項(xiàng)目的貢獻(xiàn)在什么地方。有利于形成開發(fā)熱情。6) 功能與文件對(duì)應(yīng),間接減少了關(guān)鍵路徑占用的時(shí)間我們假設(shè)就一個(gè)模塊的開發(fā)與傳統(tǒng)三層架構(gòu)進(jìn)行對(duì)比:用戶界面的開發(fā)時(shí)間是0.5小時(shí)數(shù)據(jù)鏈接層的開發(fā)是1小時(shí)傳統(tǒng)三層架構(gòu):Model

44、的開發(fā)是0.2小時(shí)業(yè)務(wù)邏輯層的開發(fā)是3小時(shí)(包括錯(cuò)誤檢驗(yàn)、數(shù)據(jù)壓縮和數(shù)據(jù)加密.)單一功能分層架構(gòu):沒有Model業(yè)務(wù)邏輯層的開發(fā)是0.3小時(shí)(只是傳遞參數(shù))錯(cuò)誤檢驗(yàn)層的開發(fā)是0.3小時(shí)數(shù)據(jù)壓縮層的開發(fā)是0.3小時(shí)數(shù)據(jù)加密層的開發(fā)是0.3小時(shí).0.3小時(shí)由于傳統(tǒng)三層架構(gòu)需要進(jìn)行數(shù)據(jù)庫(kù)的OR-Mapping和每個(gè)函數(shù)處理后對(duì)Model的封裝,這部分時(shí)間我們算在了業(yè)務(wù)邏輯層的開發(fā)里。通過上述例子,我們很容易發(fā)現(xiàn),傳統(tǒng)三層架構(gòu)在開發(fā)過程中,業(yè)務(wù)邏輯層由于要完成的處理步驟較多,需要耗費(fèi)較長(zhǎng)的時(shí)間,而對(duì)于使用Visual Studio的前臺(tái)開發(fā)人員來說,用戶界面的開發(fā)只需要很短的時(shí)間,而對(duì)于有熟練數(shù)據(jù)庫(kù)經(jīng)

45、驗(yàn)的人來說,數(shù)據(jù)鏈接層的開發(fā)也十分簡(jiǎn)單。只有業(yè)務(wù)邏輯層,由于不同的模塊的邏輯可能不同,需要耗費(fèi)的時(shí)間必然會(huì)較其他兩層更長(zhǎng)。并且,由于開發(fā)過程中,一般情況下,一個(gè)代碼文件不能被兩個(gè)人同時(shí)讀寫,致使前臺(tái)開發(fā)人員和數(shù)據(jù)鏈接層開發(fā)人員等待業(yè)務(wù)邏輯層開發(fā)人員的現(xiàn)象時(shí)有發(fā)生。而在我們的單一功能分層架構(gòu)中,沒有Model,不需要封裝,在項(xiàng)目規(guī)模較小的情況下,函數(shù)接口中的變量數(shù)目可以接受,不需要浪費(fèi)時(shí)間在OR-Mapping上。同時(shí),克服了傳統(tǒng)三層架構(gòu)開發(fā)過程中的閑置問題,前臺(tái)開發(fā)人員和數(shù)據(jù)鏈接層開發(fā)人員可以在自身工作完成的情況下,幫助完成處理層的各個(gè)模塊,團(tuán)隊(duì)成員互補(bǔ),有利于縮短工期。7) 性能優(yōu)化空間大,

46、關(guān)鍵環(huán)節(jié)可根據(jù)對(duì)應(yīng)平臺(tái)換用動(dòng)態(tài)鏈接庫(kù)。解釋型語言,如Python,程序的執(zhí)行速度相對(duì)編譯型語言要慢,那么我們可以把中間的處理層用C或C+編譯成動(dòng)態(tài)鏈接庫(kù),進(jìn)行性能優(yōu)化。劃分多個(gè)處理層,使得動(dòng)態(tài)鏈接庫(kù)的功能和調(diào)用可以更清晰明了。8) Simple is better一個(gè)架構(gòu)的簡(jiǎn)潔對(duì)于這個(gè)架構(gòu)的推廣十分重要,如果一個(gè)架構(gòu)的使用可以被寫成一本將近百頁的教材,我想這不是一個(gè)好的架構(gòu),至少不是一個(gè)敏捷開發(fā)的架構(gòu),也不是一個(gè)可以迅速被廣泛應(yīng)用的架構(gòu)。不應(yīng)為了面向?qū)ο蠖嫦驅(qū)ο螅粦?yīng)為了設(shè)計(jì)模式而設(shè)計(jì)模式。開發(fā)的速度可以帶來直接的經(jīng)濟(jì)效益,外加用戶的滿意度。用戶想要的是盡快拿出方案、盡快看到原型、盡快交付使

47、用。一個(gè)設(shè)計(jì)完善,可以沿用百年的架構(gòu)固然理論上是好,但是過長(zhǎng)的設(shè)計(jì)時(shí)間,較高的學(xué)習(xí)成本,都會(huì)阻礙系統(tǒng)開發(fā)的進(jìn)程,降低用戶的滿意度。簡(jiǎn)單的是最好的。但我們不得不承認(rèn),在某些時(shí)候,單一功能分層架構(gòu)存在一定的缺點(diǎn):1) 由于沒有使用OR-Mapping,沒有持久化層,所以代碼的可重用性不高。2) 由于沒有封裝Model,函數(shù)接口的參數(shù)個(gè)數(shù)在某些情況下會(huì)比較多。3) 當(dāng)對(duì)數(shù)據(jù)的處理步驟過多時(shí),會(huì)帶來過深的層次,對(duì)系統(tǒng)性能的影響會(huì)較大。4.3 單一功能分層架構(gòu)在本項(xiàng)目中的應(yīng)用通過需求分析,我們可以看到,這個(gè)倉(cāng)庫(kù)管理系統(tǒng)的規(guī)模不是很大,要完成的功能的邏輯也較為清晰,而團(tuán)隊(duì)開發(fā)人員都相對(duì)缺少開發(fā)經(jīng)驗(yàn),都是在

48、摸索中開發(fā)。所以,我們?cè)O(shè)計(jì)了單一功能分層架構(gòu)。整個(gè)系統(tǒng)包括:用戶接口層、業(yè)務(wù)邏輯層、錯(cuò)誤檢驗(yàn)層和數(shù)據(jù)鏈接層。用戶接口層負(fù)責(zé)和用戶的交互,包括用戶的輸入、控件的觸發(fā)事件和數(shù)據(jù)的顯示;業(yè)務(wù)邏輯層負(fù)責(zé)傳送數(shù)據(jù),并清晰展示所有調(diào)用的函數(shù),方便對(duì)功能的控制;錯(cuò)誤檢驗(yàn)層負(fù)責(zé)檢查用戶輸入的合法性;數(shù)據(jù)鏈接層負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查。在實(shí)際開發(fā)過程中,一個(gè)人負(fù)責(zé)用戶接口層編碼,一個(gè)人負(fù)責(zé)數(shù)據(jù)鏈接層編碼,另一個(gè)人負(fù)責(zé)錯(cuò)誤檢驗(yàn)層編碼,之后先完成任務(wù)的人連接業(yè)務(wù)邏輯層。開發(fā)中通過局域網(wǎng)即時(shí)通信軟件,共享函數(shù)接口。并在一臺(tái)電腦上進(jìn)行代碼版本管理,每次開發(fā)均進(jìn)行源代碼備份和測(cè)試信息備份。在有序的開發(fā)過程中,充分體現(xiàn)了單

49、一功能分層架構(gòu)在迭代開發(fā)過程中的優(yōu)勢(shì)。并且較低的學(xué)習(xí)成本也帶來了較高的工作積極性。每次構(gòu)建均有新的模塊完成,并保證系統(tǒng)可用,不斷添加功能的成就感使得團(tuán)隊(duì)開發(fā)的積極性較高。5 數(shù)據(jù)庫(kù)設(shè)計(jì)信息管理系統(tǒng)實(shí)質(zhì)上,就如同是為數(shù)據(jù)庫(kù)的增刪改查設(shè)計(jì)用戶界面和業(yè)務(wù)邏輯。所以,數(shù)據(jù)庫(kù)在信息管理系統(tǒng)中地位的重要性不言而喻。一個(gè)好的數(shù)據(jù)庫(kù)設(shè)計(jì)可以帶來好的系統(tǒng)擴(kuò)展性,對(duì)于系統(tǒng)性能也有很大的影響。缺乏必要的字段、非必要數(shù)據(jù)的冗余、數(shù)據(jù)完整性的喪失等等問題都會(huì)對(duì)信息管理系統(tǒng)的開發(fā)造成致命的影響。由于數(shù)據(jù)庫(kù)設(shè)計(jì)不是本文的重點(diǎn),在這里我們只是列舉一下本項(xiàng)目的實(shí)體-聯(lián)系圖和關(guān)系數(shù)據(jù)模型。5.1實(shí)體-聯(lián)系圖以下為本項(xiàng)目的實(shí)體-聯(lián)

50、系圖:圖5-1 實(shí)體-聯(lián)系圖5.2關(guān)系數(shù)據(jù)模型以下為本項(xiàng)目的關(guān)系數(shù)據(jù)模型:材料(編號(hào),類別,名稱,規(guī)格,累計(jì)數(shù)量,累計(jì)金額)建賬(編號(hào),材料編號(hào),金額,數(shù)量,日期)出庫(kù)單(編號(hào),產(chǎn)品名,生產(chǎn)計(jì)劃號(hào),經(jīng)領(lǐng)人,批準(zhǔn)人,制單人,領(lǐng)用班組,日期)入庫(kù)單(編號(hào),供貨單位,供貨單號(hào),制單人,日期)入庫(kù)(編號(hào),入庫(kù)單編號(hào),材料編號(hào),數(shù)量,金額)出庫(kù)(編號(hào),出庫(kù)單編號(hào),材料編號(hào),數(shù)量,金額)6 編碼風(fēng)格為了保證程序的易讀易懂,編碼風(fēng)格十分重要。Programs must be written for people to read, and only incidentally for machines to e

51、xecute.5 通過積累和分析,我們認(rèn)為一個(gè)好的編碼風(fēng)格應(yīng)具有以下特點(diǎn):1. 標(biāo)識(shí)符命名應(yīng)有明確的意義標(biāo)識(shí)符盡量采用英文命名,有明確的意義,并且定義最好按照字母順序或在業(yè)務(wù)邏輯中出現(xiàn)的順序。圖6-1 標(biāo)識(shí)符命名應(yīng)有明確的意義2. 程序中有適當(dāng)?shù)淖⑨岅P(guān)鍵的算法實(shí)現(xiàn)部分,應(yīng)有注釋以標(biāo)明該算法實(shí)現(xiàn)的功能。但不要每一句都注釋,這樣會(huì)占據(jù)太多代碼篇幅,影響代碼的可讀性。圖6-2 程序中有適當(dāng)?shù)淖⑨?.函數(shù)應(yīng)有功能性注釋,用以說明函數(shù)的功能函數(shù)之前,應(yīng)用注釋標(biāo)明該函數(shù)實(shí)現(xiàn)的功能、輸入?yún)?shù)的類型和作用與輸出參數(shù)的類型和作用。圖6-3 函數(shù)應(yīng)有功能性注釋4.每行語句不宜過長(zhǎng),更不要把兩行語句寫到一行里每行語句應(yīng)控制在一屏可以放置的范圍內(nèi),不要使用自動(dòng)折行的功能,某些高級(jí)語言可以使用折行符。5.避免大量使用嵌套循環(huán)嵌套循環(huán)不容易讀懂,單步調(diào)試也較為費(fèi)時(shí),如非極其必要

溫馨提示

  • 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. 人人文庫(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)論