目 錄
第1章 緒 論 1
1.1系統設計背景 1
1.2本系統設計的意義和企業管理系統的發展 1
1.3系統設計的目標和內容 2
1.3.1系統設計的目標 2
1.3.2系統設計的內容 2
第2章 系統相關技術介紹 4
2.1系統開發環境簡介 4
2.1.1.NET平臺的組成 4
2.1.2.NET平臺的特點 4
2.2系統開發技術簡介 5
2.2.1B/S 模式 5
2.2.2LINQ 5
2.2.3Web Service 技術 6
2.2.4核心構建模塊 7
2.2.5簡單對象訪問協議(SOAP) 8
第3章 系統總體構思 10
3.1系統可行性分析 10
3.2系統應用分析 11
第4章 系統需求分析 16
4.1系統需求分析簡述 16
4.2系統需求分析詳述 16
4.2.1系統功能需求分析 17
4.2.2系統數據庫需求分析 23
第5 章 系統總體設計 25
5.1系統總體框架設計 25
5.2系統功能模塊結構設計 26
5.3系統數據庫設計 27
第6 章 系統詳細設計 32
6.1系統界面表現層詳細設計 32
6.1.1添加訂單界面詳細設計 32
6.1.2庫存成品入庫/出庫單據界面詳細設計 33
6.2系統邏輯層詳細設計 34
6.2.1系統類模型的創建 34
6.2.2用戶注冊模塊詳細設計 35
6.2.3銷售管理模塊詳細設計 36
6.2.4計劃管理模塊詳細設計 39
6.2.5財務管理模塊詳細設計 40
6.2.6物料管理模塊詳細設計 42
6.2.7系統管理模塊詳細設計 43
6.3系統數據訪問層詳細設計 44
第7 章 系統實現 47
7.1用戶注冊界面截圖 47
7.2用戶登錄界面截圖 48
7.3銷售管理界面截圖 48
7.4物料管理界面截圖 53
7.5系統管理界面截圖 59
7.6計劃管理界面截圖 61
7.7財務管理界面截圖 65
第8 章 總結 67
參考文獻 68
致 謝 69
第1章 緒 論
1.1系統設計背景
在這個嶄新的時代,計算機技術、信息技術和網絡技術都在以極高的速度不 斷的發展,給現代人們的觀念帶來的很多的改變。在這個信息時代的背景下,網 絡辦公自動化系統就成為了我們企業辦公時的一個有效的、適用的解決方案,該 系統主要是實現了人們對于信息的交互以及分享,對辦公的效率有了很大的提 高,打破了之前人們有紙辦公的忙碌而又低效率的狀態。這種通過紙為介質的辦 公方式已經適應不了時代的要求,對企業而言,它大大的耗費了更多的人力和物 力,順應時代的發展,采用計算機進行信息管理的方式必然會取而代之。今天, 全球都處于從工業社會過渡到信息社會的階段,這時國家之間的市場競爭就演變 的更加激烈,對于企業來說,在這個提倡并實施運用信息技術來改變企業運營模 式的時代,無疑面臨著巨大的壓力和強大的競爭。現今,隨著企業信息量的迅速 增加,很多企業的信息管理工作還處于對低層次的數據處理上,并不能滿足企業 的要求,這種運用計算機盡心信息管理的作用并沒有被充分的利用,仍舊處理著 企業一些表面層次的業務。
1.2本系統設計的意義和企業管理系統的發展
在當今這個知識、信息改變經濟狀態的時代,各個企業要屹立于行業中的不 敗之地更多的取決于對信息、數據獲取能力的強弱。信息作為企業利用的資源, 具有很多的特性,可重復利用、可共享、時效性等等。因此,能否有效的管理好 企業自身的信息資源,決定了企業在競爭過程中的成與敗。之前的企業經營,很 大程度上,信息資源是存在于企業員工的頭腦中的,一旦員工辭職,對企業帶來 的經濟損失是巨大的。所以,實現員工辭職但信息資源可以仍就在企業里儲存; 不但可以讓企業的信息不停的積累,而且還可以讓職員能夠快速掌握并且熟練的 運用;可以讓新來的職員在企業原有的信心的記住之上能更快的融入企業,提高 其工作效率等這些問題大大的加速了企業信息管理系統的使用與發展。
隨著時代的不斷進步,企業的信息管理系統的體系結構也在不斷的進行升級 以達到現在這個技術時代的社會的需求,在這個以信息技術為主體的社會,管理 系統的設計已經不再是從前的客戶機/服務器(Client/Server),代替的是以瀏覽 器/服務器(Browse/Server)為主體的BS結構。
對于CS結構來說,雖然本身具有一定的優點,但它所帶來的劣勢還是比較 明顯的,比如它的應用成本要高于B/S結構,而且一旦機器的應用程序安裝的數 量增加,就會產生一系列的問題,兼容性不行、病毒的入侵、系統安全問題等各 類問題。同時軟件的前期開發工作和后期軟件的維護工作也帶來了巨大的不便。 因此,被譽為“革命性解決方案”的改變了用戶網絡管理方式的基于Web的全新 網絡管理模式就顯現出了其頑強的生命力。
基于Web的信息管理系統是現代企業的必然選擇,它在服務器處理能力和網 絡傳輸能力上都有很大的提高,在服務器上安裝所有的信息和數據,但在用戶所 使用的計算機上,則只需要一個操作系統和自帶的瀏覽器就可以了。這樣以來, 不但對企業管理的工作帶來了極大的便捷,同時也沒有了對用戶的計算機物理位 置的限制,不同地區的不同用戶也可以通過Web連接的計算機來訪問。
隨著Internet/Intranet發展而產生的基于Web的現代企業管理信息系統, 具有Internet和Intranet的不同優點。它首先是應用于企業內部的管理信息系 統,為其提高安全的、有效地、高速的服務,Web的功能它同時也是具有的,它 能讓其他的相關企業和終極客戶來訪問。
1.3系統設計的目標和內容
1.3.1系統設計的目標
企業信息管理系統主要是通過對計算機網絡技術的使用,最大限度的為企業 管理信息數據提供便利的條件,它是一個有人、計算機和硬件設備共同組成的可 以獲取、傳輸、修改、存儲、維護和使用信息的系統。通過調查了解企業所擁有 的人力、物力、財力和基礎設施等資源,建立正確的數據,為管理人員提供及時、 準確的信息和資料,讓管理人員能夠做出正確的決策,對企業的運營方式、業務 流程等進行整改,達到提高企業經濟效益的目的。現在,提高企業的管理水平最 為有效的辦法就是對計算機網絡的應用。
1.3.2系統設計的內容
這篇論文主要是來研究和開發基于Web的現代企業物資供應系統以及系統 的工作模式和方法,本篇論文是在以現代企業的管理思想為基礎來研發的,就是
所謂的ERP思想。
企業信息管理系統的主要開發內容如下:
用戶注冊,實現游客通過注冊成為系統用戶; 用戶登陸,實現用戶通過登陸可以操作系統; 銷售管理,實現對訂單,代理商信息和客戶信息的管理; 物料管理,對成品和原材料的出庫(修改),入庫(添加)進行管理; 系統管理,對所有用戶的信息和廣告內容進行管理。 計劃管理,對計劃的相關信息進行添加和修改; 財務管理,對產品定價進行修改,代理商結算,銷售人員信息和報表信息進 行管理;
第2章 系統相關技術介紹
2.1系統開發環境簡介
2.1.1.NET平臺的組成
Microsof t .NET平臺是微軟研發的靈魂產品之一,.NET平臺能使互聯環境
中不同硬件、軟件、服務的差別被忽視,讓各個設備和各個系統之間都可以相互
通信,使不同的程序和服務之間都可以相互調用[1]。圖2-1展示了
Microsoft . NET平臺的組成結構:
?NET企業級服務器
?NET框架
?NET服務組件
服務器、桌面和各種設備之上的操作系統
圖2-1 Microsoft . NET平臺的組成
2.1.2.NET平臺的特點
基于組件的技術,?NET是一種基于組件的技術,組件技術始于微軟公司的 組件對象模型(Component Object Model,COM),,但編寫.NET組件要比COM簡 單得多;
跨語言集成,目前編程語言能夠支持?NET平臺的已經有25種之多,并且還 有越來越多的語言正在朝這個方向發展;
簡化了開發過程,不同的語言用到的類庫都是框架類庫(Framework Class Library,FCL),并且調用類庫的方法是相同的;
可靠性和安全性,在編譯和運行過程中.NET程序借助于公共語言運行庫 (Common Language Runtime,CLR)托管執行,CLR具有類型的安全檢測、即時 編譯、垃圾收集等特性,因此應用程序的可靠性和安全性得到了很好的保證。
2.2系統開發技術簡介
2.2.1 B/S 模式
在Internet上存有的文字信息、數據、視頻和圖像等,在我們研究的B/S 模式下都可以通過WWW瀏覽器來進行訪問和使用。同時我們所訪問到的數據和信 息是儲存在數據庫服務器上的,Web服務器通過一定的方式方法連接到數據庫服 務器,從而將數據庫的信息通過瀏覽器來被訪問,進而形成了三層架構。用戶只 需要通過瀏覽器來訪問即可,不需要其他的程序oWeb服務器起到了中轉的作用, 在數據庫中解釋執行的相關指令,是由Web服務器從瀏覽器中獲取信息和指令, 再轉交給數據庫服務器的。然后,數據庫將結果再傳送到Web服務器中,最后用 戶所得到的數據和信息是由Web服務器來直接提供的。將這些不同的網絡連接在 一起,就形成了一個覆蓋了很多區域的大的網絡,各個企業可以在網絡中互相使 用。通過這個結構,不同的企業就可以建立屬于他們自己的Internet。下圖就 是B/S模式的結構圖。
2.2.2LINQ
語言集成查詢(Language Integrated Query,簡稱LINQ)是一組用于C# 和Visual Basic語言的擴展。它允許編寫C#或者Visual Basic代碼以查詢數 據庫相同的方式操作內存數據°LINQ給.Net Framework平臺提供了一些語法查 詢特性,他們具有不同的功能,所有的信息資源都可以通過這個語法查詢特性來 使用,這就簡化了操作的過程。和向開發語言和運行時添加XML文檔數據或者一 些數據特性比較來看,它是非常便利的。我們成這些語法特性為 .NET Language Integrated Query (LINQ)[2]°LINQ 的框架圖如圖 2_3 所示:
2.2?3 Web Service 技術
由文獻[3]可知,Web Service向外界暴露出一個能夠通過Web進行調 用的 API(Applica tion Programming In terface,應用程序編程接口),從 表面看來,它是一種應用程序。Web Service屬于Web應用的一種新的分支, 它本身具有模塊化、描述和包含的應用,具有發布、定位、調用等功能°Web Service的功能非常強大,從簡單的處理到多數據的更加復雜的應用處理都 可以實現[3]。當Web服務部署到網絡上之后,其他的應用程序就可以看到, 并且使用它部署在網絡上的服務。同時,Web Service也可以使用HTTP和 XML等標準的互聯網協議,它可以在外網和企業內網上以一定的形式體現其 相關功能。對于Web服務,Web上帶有的組件編程有很好的解釋和說明。
為了實現不同平臺、不同編程語言以及不同類型系統之間的互操作性,Web Service平臺必須要有自己的特定的類型系統。同樣的,為了讓客戶更加便捷的 去獲取大量的信息來調用Web Service,該平臺也需要制定出一套屬于自己的標 準,對Web Service進行描述。之后,我們還需要一種遠程過程調用協議,簡稱 RPC。通過它來對這個Web Service進行遠程調用。為了達到互操作性這一目標, 該RPC必須和編程語言、平臺沒有任何關系。
Web Service組件可以把消息進行編碼,用標準的Internet協議(如HTTP) 以XML格式將消息發送出去,與網絡上其他應用程序進行交互°Web Service是 直接向應用程序提供服務的,而不是用戶,它類似于一個Web站點,沒有用戶的 接口 °Web Service是直接從應用程序中接收請求消息,其消息是以XML格式來 傳輸的,在Web Service將任務執行之后,將結構以XML格式直接返回給該應用 程序。
2.2.4核心構建模塊
在分布式的環境下,Web service可以通過XML和HTTP來存取信息,Web service是可以提供應用程序和各種邏輯的一種服務。用戶在使用Internet時, 不需要知道Web service是怎么執行的,只需知道使用它的方式即可。圖2_4將 Web service通信所需的構建塊進行了展示。在Internet上互聯應用程序的通 信,微軟提倡將Web service作為其程序的設計模型。
下面是每個構建模塊的用途的描述:
1“發現”塊功能:
在對Web service的公開的客戶端應用程序訪問的時候,我們需要解析遠程 服務的位置,而解析的過程和方式就是通過這個被稱為發現(discovery)的過程 來實現的。有兩種機制用與發現:
(1)通用描述發現和集成(Universal Descrip tion, Discovery, and
Integration, UDDI)。它是可以對Web service進行廣告和查找的一個服務,具 有行業標準的集中化目錄。
(2)DISC0是Microsoft定義的一個專用XHL文檔格式,對于它們所公開的服 務的廣告,允許Web站點對其發布。
2.“描述”塊功能:
客戶端需要有足夠多的信息和解析出的Web service的端點進行正確的交 互,而描述模塊就包含了這樣的機構化數據,可以提供客戶端應用程序將要用到 的接口,同時,描述塊還提供了具有相關用法舉例的Web service的文檔。一下 兩種機制就是描述塊所經常使用的。
(1)XML Schema提供了一組內置的數據類型的核心集,該核心集可用來描 述消息的內容。
(2)Web service 描述語言(Web service Description Language, WSDL)是 一個XML文檔,它可以對特定的Web service進行全面的描述。
3.“消息格式”塊功能:
如果想對數據進行完整的交換,服務器端和客戶端在消息編碼和格式設置的 方式上必須有一個統一的標準。它采取了 SOAP機制,保證了客戶端要進行交互 的數據的編碼方式能夠被服務器端正確的識別和轉換,這對信息交互是至關重要 的。
4.“編碼”塊功能:
這一塊主要是通過對XML技術的使用,將在客戶端和服務器之間傳輸的數據 進行編碼,將其編成計算機識別的統一形式。
5.“傳輸”塊功能:
當設置好消息的格式以后,數據以一定的形式被放入消息的正文中后,消息 在客戶端和服務器之間的傳送就必須通過某種傳輸協議。 Web service 是面向 Internet的,因此我們采用了標準的協議(如HTTP)最為傳輸協議。
2.2.5簡單對象訪問協議(SOAP)
SOAP允許通過不同編程語言編寫的不同類型的對象相互通信,同時也可以 在任何平臺上進行,它是一種輕量級的消息協議。
為了解決不同平臺上的各個服務之間的通信與信息交互,我們提出了 Web service這一服務。目前的一些組件技術的訪問功能是通過特定的對象模型協議 來進行的,如DCOM,IIOP 等,而Web service的訪問功能則是以大家都使用的網 絡協議和通用的數據格式來實現的,如HTTP和XML。在Web服務這一項目中, 我們是通過使用SOAP協議來對Web service進行訪問的。
SOAP的特點就是它對操作系統、編程語言或者對象模型體系結構等這些都 是沒有什么要求的,它提供的框架能夠在分布式環境之間進行信息的交換。盡管 Web service的核心體系結構就是SOAP,但是SOAP實際上只是一個簡單的協議, 用來調節Web service和客戶應用程序之間信息交互,在HTTP客戶端與服務器 端之間傳輸命令和參數時,SOAP定義了一種機制,這種機制可以讓服務器和使 用XML維護數據的客戶端之間來進行信息的傳輸。
消息交換時,SOAP為其建立了一個協議,方便了數據的傳遞。一個可選的 SOAP消息頭、一個特定的SOAP信封、一個必選的SOAP消息體的XML文檔構成 了一個完整的SOAP消息°SOAP消息體是載有相關數據的正文。
第3章 系統總體構思
3.1系統可行性分析
對一個項目進行可行性分析,主要是包括幾個方面的分析,如必要性、可行 性、合理性等。在項目創建的前期,對可行性的研究是非常重要的內容。對于可 行性的研究,不是為了解決什么問題和困難,主要是探討對問題解決的可能性和 必要性,盡量以高效率的模式和較低的成本來估測出是否能夠解決。
在我們進行系統的研發期間,有很多問題是不能再預期的范圍內或資源限制 中來解決的,這些問題的造成來源于以下幾個因素:系統開發人員或者用戶沒有 充分的了解市場需求,開發人員本身技術的不成熟性以及對項目研發的各項風險 評估做的不夠細致等。
可行性分析主要是通過使用大量的數據、資料信息等來評估所要創建的項目 是否可行,評估的標準有幾個因素,一是分析的方法上要全面、系統;二是要以 經濟效益為核心;三是要充分的考慮到能偶對項目造成影響的其他因素。進而對 該項目的創建與否提出一個綜合的分析評價,對其利與弊提出建議。可行性分析 主要包括三個大方面:一是對經濟的可行性進行分析;二是對技術上的可行性進 行分析;三是對操作上的可行性進行分析。
1、經濟的可行性分析 設計本系統所用到的技術和工具成本都是比較低的,本系統主要用的的設計 平臺是Visual Studio (下文簡稱VS),數據庫選擇是SQL Server 2005,主要 還借助了 .net技術。在VS中有很多現成的控件、母版頁等工具可以供開發人員 使用,簡化了開發人員的操作。系統所使用到的語言(C#)本身已經足夠可以用 來開發各種管理系統,對于開發人員的設計要求,它也提供了很多的控件工具, 非常便利。所開發的信息管理系統,對終端設備的要求比較寬松,服務器的要求 也不是很高。開發系統的周期較短,過程較為簡單,并且需要的人力也很少,很 大程度的降低了開發的成本。另外,操作界面相對簡單,對培訓人員資金的投入 會相對減少。企業運用到本系統會大大的提升自身的管理水平、經濟效益以及社 會效益,總體來看,從很多方面,本系統的研發成本都是相對較低的,可行的。
2、 技術的可行性分析
由于我們選用的平臺是Microsoft .NET,該平臺允許研發人員使用任何的編 程語言。而且.NET框架通過使用高度模塊化的設計,讓系統研發人員不必花很 多時間在編寫代碼上,而是能夠有更多的精力去處理一些業務邏輯的問題。
NET框架是基于XML和SOAP集成標準來使用的,它的目標就是將開發的 軟件能夠為用戶提供各項服務。同時.NET框架還引進了很多新的技術來加強程 序的全面性。如內存、進程和線程通過.NET框架來進行管理,能夠保障內存的 安全性。另外,根據系統管理員對Web程序設定的時間間隔,ASP.NET還可以進 行監聽,在固定的時間節點重新啟動這些程序[5]。
3、 操作的可行性分析 從企業工作人員的角度來看,每個公司都建立了屬于自己的局域網,各部門
的員工都有一臺自己的PC機,其硬件配置足以達到系統所需的條件。另外,每 個企業都設立了一個專門的部門,負責對計算機的維護和使用,他們對軟件的使 用方面比較熟練,具有一定的計算機知識,足以解決企業內部系統出現的任何問 題。
本系統的用戶操作界面設計的相對比較簡單,方便用戶的使用,企業的員工 通過簡短的培訓,就能夠自主的使用該系統。只要企業的高層決策人能夠對系統 的開發給予支持,并針對該信息管理系統重新完善公司的管理制度和方法,使新 系統能夠充分的發揮作用[6]。
3.2系統應用分析
1•系統數據流圖(DFD)
根據本系統所負責實現用戶注冊、用戶登陸、銷售管理、計劃管理、財務管 理、物料管理和系統管理七大部分,可大致把整個主要的數據流走向細化并分析 成各個模塊數據流圖(以下簡稱DFD)。
1)用戶注冊DFD,如圖3_1所示:
圖3-1用戶注冊DFD
2)用戶登陸DFD,如圖3-2所示:
圖3-2用戶登陸DFD
3)銷售管理模塊DFD,
如圖3-3所示:
訂單信息
fWTiWii
.息甥面,
訂單叨細信息
銷供人員
尬樣代理「代連商信、槪改f1■:理商佇 廠代逹商信 息處理
懺■馳ITI息界而 用• ■海hi代理潮1
客戶信甩
圖3-3銷售管理模塊DFD
4)計劃管理模塊DFD,如圖3_4所示:
圖3-4計劃管理模塊DFD
5)財務管理模塊DFD,如圖3_5所示:
信息
晶信息界 向
'采界麗主成
」戶信息
釦愉農 『報菠詳細涪1
■
帀丿‘'信息 反淡佇息
產姑遠伶
訂單信息界廟
id單信息
訂單伯息
銷習人員信息界血
確認捉龍
銷啓人員曾理
財務律琲 人必
財務箭琛 人員
慨里南站尊「訂'單支付hT
I爼界匝亠
F'劇:;息績自
毓認提交
確認結算■
產品信息
產呂山和單忻
圖3-5財務管理模塊DFD
7)系統管理模塊DFD,如圖3_7所示:
圖3-7系統管理模塊DFD
2.系統用例圖
以上對系統可能的用戶和系統的業務范圍進行了描述,下面通過用例圖3-8 來確定用戶和系統之間的邊界。通過各類用戶的工作范疇,檢查并確定每個業務 用例存在的必要性。
在用例圖3-8中,列出用戶與業務之間的關聯關系。
第4章 系統需求分析
4.1系統需求分析簡述
在整個系統的生命周期當中,至關重要的就是對系統進行需求分析了,它決 定了系統功能使用的成與敗。只有對系統有一個準確的需求分析,開發人員才能 將用戶對系統各項功能的具體要求轉化為系統的開發,從而滿足用戶的使用,為 系統的開發打下夯實的基礎。
對需求分析有一個良好的說明,能夠避免或者減少問題的出現,使軟件的質 量有一個質的飛躍,提高軟件的工作效率,減少前期開發和后期維護的成本,對 于需求分析,主要有如下幾個原則:
(1) 對問題的數據域和功能域有一個清晰的表達和理解。
(2) 在分析過程中,要對問題進行逐層分解,各個方面都要進行細化。
(3) 系統的邏輯視圖和物理視圖必須要充分列出。
本論文對企業信息管理系統的設計,主要應滿足一下幾方面的需求:
1.用戶注冊。游客可以通過注冊成為系統用戶,使其有資格進入系統;
2.用戶登陸。系統用戶可以通過登陸來進入系統并參與與該用戶權限相對 應的功能的實現;
3.銷售管理。銷售人員可以管理訂單、代理商和客戶;
4.計劃管理。企業管理人員可以實現計劃的制定、調整和執行;
5.財務管理。財務部人員可以實現產品定價、代理商結算、統計報表和管
理銷售人員;
6.物料管理。倉庫管理員可以實現成品管理、成品發貨和原材料管理;
7.系統管理。系統管理員能夠對用戶和廣告進行相關的管理。
4.2系統需求分析詳述
本系統主要是針對五類用戶設計的:
1.對于銷售人員應能實現查看訂單和訂單明細信息,添加訂單,查看代理 商和客戶信息,對選中的代理商或客戶信息進行修改,并且可以添加代理商或客 戶;
2.對于企業管理人員應能實現查看計劃信息,制定計劃,執行計劃,并且 可以對選中的計劃進行修改;
3.對于財務部人員應能實現查看成品信息,并且修改選中成品的單價,實 現對沒有全額支付的代理商進行余額結算,查看訂單信息、成品信息及原材料信 息并且統計所有的報表,查看銷售人員信息,并且可以修改選中的銷售人員地址 及聯系電話等信息;
4.對于倉庫管理員應能實現查看成品信息并管理成品,庫存已有成品可以 在填寫已有成品入庫或出庫單據并審核通過后入庫或出庫,新成品可以在填寫新 成品入庫單據并審核通過后入庫,并且倉庫管理員可以查看庫存的原材料信息, 在填寫原材料入庫或出庫單據并審核通過后實現原材料入庫或出庫;
5.對于系統管理員應能實現查看廣告信息,添加廣告,刪除廣告,查看用 戶信息,并且可以修改選中的用戶的地址及聯系電話等信息,并且對于這五類用 戶均可以查看廣告信息。
考慮到信息管理的具體需要,系統應具備較好的可靠性、可維護性、擴展性 [7];能準確、快速查詢或修改用戶、訂單、成品和原材料信息;具有高效的檢索 能力,克服原手工系統存在的種種缺陷和弊端。
4.2.1系統功能需求分析
通過上文對系統需求分析的具體描述,該系統應該具備用戶注冊,用 戶登陸,銷售管理,計劃管理,財務管理,物料管理和系統管理七大部分, 下面將對這七個部分分別以UML建立模型圖的方式進行描述。
1. 用戶注冊
在設計系統時,應該有五類用戶,而且各類用戶之間的級別都是相同 的,所以這一功能是面向所有用戶的,活動圖 4-1描述的是用戶注冊的流 程。
•~X進入有陸界面]~進入注冊頁面保存用戶注冊借息〕~~?{反饋注冊佶息)
▼ V
(反饋信息有誤)
圖4-1 用戶注冊活動圖
上圖表現的是游客注冊時的流程,其中在條件判斷的時候有很多情況 會導致注冊失敗,反饋注冊信息錯誤,下面用狀態遷移圖 4_2去進一步闡 釋轉換的條件。
本文所設計的系統必須是當用戶成功的登陸到系統之中后,才可以對 系統的功能進行使用,因此,用戶登陸這一模塊是必須存在的一部分,下 圖4_3通過UML的形式用戶登陸的流程進行描述。
圖4-3中用戶輸入完成,點擊登陸后,下面的一系列過程都是在本系統的后 臺來自動執行和完成的,如果用戶輸入的登陸信息是完整的,那么會同時對用戶 的賬號和密碼進行核對,若果輸入的用戶賬號和密碼在數據庫中得到了匹配,也 就是存在,那么系統就會跳到這個用戶相應的頁面。
3.銷售管理
銷售管理包括訂單管理,代理商管理和客戶管理功能。
訂單管理是銷售人員可以查看已簽訂的訂單信息,訂單信息包括應付金額、 支付金額及每張訂單的成品名稱和數量,還可以根據庫存成品的名稱和單價信息 選擇要訂購的成品的名稱和數量,并且填寫支付金額和代理商姓名并審核成功后 即可添加訂單成功。
代理商管理,首先銷售人員可以查看所有代理商的信息,然后可以對某一位 選中的代理商的地址及聯系電話等信息進行修改,最后因為代理商不是企業的員 工沒有自己注冊的權利,只能由銷售人員來添加,當銷售人員添加的代理商信息 完整并審核通過即可添加成功,使其成為該企業產品的代理商。
客戶管理和代理商管理的功能是相同的,只是針對的人群是客戶。圖4-4用
UML方式的用例圖描述銷售管理的功能。
計劃管理包括計劃制定,計劃調整和計劃執行功能。
計劃制定是企業管理人員根據企業已簽訂的訂單,庫存成品和原材料以及企 業的生產和運營情況等制定企業相關的各種計劃,完成計劃的錄入。
計劃調整是根據企業的實際生產和運營情況,企業管理人員對選中的已制定 的但未執行的計劃進行實時調整。
計劃執行是企業管理人員將選中的未執行的計劃狀態調整為執行。圖4-5用 UML方式的用例圖描述計劃管理的功能。
5. 財務管理 財務管理包括產品定價,代理商結算,銷售人員管理和統計報表功能。 產品定價是財務部人員根據相關成本及市場行情等情況調整產品的單價。 代理商結算,若訂單中代理商的支付金額小于應付金額,財務部人員對代理 商的欠款額進行結算,結算后訂單中的代理商支付金額與應付金額相等;若訂單 中的支付金額與應付金額相等則不需要結算。
銷售人員管理,財務部人員可以查看所有的銷售人員的地址及聯系電話信 息,并可以對選中的銷售人員信息進行修改,財務部人員還能實現銷售人員的添 加,當填寫的銷售人員信息完整并且審核通過反饋添加成功信息,若填寫的銷售 人員姓名已存在或填寫的信息不完整則反饋添加失敗信息。
統計報表,包括訂單統計,庫存成品統計及庫存原材料統計。訂單統計,財 務管理人員查看所有的訂單明細信息,統計出所有訂單的總交易額;庫存成品統 計,財務管理人員查看所有的成品出入倉庫的明細信息,將現有庫存成品的數量 乘以單價并全部累加起來,統計出所有庫存成品的總價值;原材料統計,財務部 人員查看所有的原材料出入倉庫的明細信息,統計出所有庫存原材料的庫存量。 圖4-6用UML方式的用例圖描述財務管理的功能。
6.物料管理 物料管理包括成品管理,成品發貨和原材料管理功能。 成品管理,倉庫管理員可以查看所有的庫存成品信息及成品出入倉庫明細信 息,并可以實現庫存已有成品和新成品的入庫。已有成品入庫,倉庫管理員選出 要入庫的成品名稱并填寫入庫數量,若填寫的信息完整并審核通過則反饋已有成 品入庫成功信息,若填寫的信息不完整則反饋已有成品入庫失敗信息;新成品入 庫,倉庫管理員填寫要入庫的成品名稱及數量,若填寫的信息完整并審核通過則 反饋新成品入庫成功信息,若填寫的信息不完整或成品名稱已存在則反饋新品入 庫失敗信息。
成品發貨,倉庫管理員填寫成品發貨單據,在單據中選出要出庫的成品名稱 并填寫出庫數量,若填寫的信息完整并審核通過則反饋成品出庫成功信息,若填 寫的信息不完整或填寫的數量大于該種成品的庫存量則反饋成品出庫失敗信息。
原材料管理,倉庫管理員可以實現原材料信息查看,原材料入庫和出庫。原 材料入庫和出庫時,倉庫管理員填寫原材料出/入庫單據,若填寫的信息完整并 審核通過則反饋出/入庫成功信息,否則反饋失敗信息。圖4-7用UML方式的用
系統管理包括用戶管理和廣告管理。
用戶管理,系統管理員可以查看系統所有用戶的地址、聯系電話及權限信息, 并可以對選中用戶的地址和聯系電話信息進行修改。
廣告管理,系統管理員可以查看所有的廣告信息,能實現添加廣告、修改某 條廣告的內容和刪除選中廣告。添加廣告,若添加的廣告信息完整并審核通過則 反饋添加成功信息,否則反饋添加失敗信息;修改廣告,對選中的廣告的信息進 行修改,若修改后的信息完整并審核通過則反饋修改成功信息,否則提示修改失 敗并且廣告內容不變;刪除廣告,選中要刪除的廣告,若確定要刪除則提示刪除 成功,否則不刪除。圖4-8用UML方式的用例圖描述系統管理的功能。
圖4-8 系統管理用例圖
4.2.2系統數據庫需求分析
圖4-9企業信息管理系統實體聯系(E-R)
因為該實體聯系圖涉及到的實體太多無法在圖4-9中將實體的屬性列出,因 此用圖4-10表示部分實體的屬性。銷售人員、企業管理人員、財務部人員、倉 庫管理員和系統管理員實體都屬于用戶實體;代理商和客戶都屬于消費者實體; 用戶實體和消費者實體屬性相似,以用戶實體作為代表;原材料實體和成品實體 屬性相似,用成品實體作為代表;原材料明細實體和成品明細實體屬性相似,用 成品明細實體作為代表。
圖4-10 系統部分實體及屬性
第5章 系統總體設計
我們這個系統研發所用到的是前文提到的.NET開發平臺,并采用了 B/S結 構模式的三層架構[9],這個三層架構的組成有三個部分,一是后臺數據處理層, 其主要是處理數據庫中的信息;二是中間業務邏輯層,其主要是對數據進行處理, 并對程序進行分析;三是用戶界面層,為用戶提供一些使用功能。本系統采用的 事SQL數據庫進行開發,當中運用到了 Silverlight技術,提高了 Web應用程序 的各項功能。
5.1系統總體框架設計
系統受.NET開發模式影響,由用戶觸發事件驅動,在界面層編寫自定義方 法對各種事件處理進行第一次代碼重構,每個界面層的對象都特有一個邏輯層對 象的引用。在邏輯層里,所有對數據庫的操作必須通過Management System Data Context這個基礎類來完成,由這個基礎類調用數據庫里的存儲過程。其原理如 圖5-1所示:
用戶請求
響應數據
圖5-1企業信息管理系統三層架構圖
5.2系統功能模塊結構設計 根據需求分析形成的模塊,結合本系統針對的五類用戶,畫出整個系統的功 能模塊結構如圖5-2所示:
企業信息管理系統
圖5-2 系統各項功能模塊介紹
下面是對各項功能模塊的具體描述:
1.用戶注冊模塊:它主要是對用戶的注冊進行管理。
用戶進行注冊的頁面是通過登錄模塊來獲取的。在注冊頁面上,用戶先選擇 用戶的角色,角色包括:銷售人員、企業管理人員、財務部人員、倉庫管理員及 系統管理員,再將個人的信息輸入到注冊項目中,包括賬號,密碼等信息。輸入 完整后點擊提交,這時后臺數據庫會將當前注冊的用戶信息與數據庫原有的已經 注冊的信息進行比對,如果該用戶賬號已存在與數據庫中,那么系統會提示用戶 賬號已經存在,需重新注冊;如果在數據庫中沒有找到與之相同的賬號,那么數 據庫會將改用戶注冊的信息加入到數據中,并提示注冊成功,那么用戶就可以通 過登錄模塊,輸入自己的賬號和密碼來進入系統并使用。
2.用戶登陸模塊:對用戶的登陸進行操作。
如果注冊成功的用戶在登陸頁面上輸入的賬號、密碼、角色等信息與數據庫 匹配成功,那么該用戶就可以進入到本系統的符合該角色的用戶界面。如果角色、 用戶名或密碼錯誤則登陸失敗,重新輸入信息。
3.銷售管理模塊:企業銷售人員管理的模塊。
訂單管理,完成企業銷售訂單的添加和查詢工作;代理商管理,查看代理商 信息,并可以實現代理商信息的修改和添加;客戶管理信息管理,查看客戶信息, 并可以實現客戶信息的修改和添加。
4.計劃管理模塊:企業管理人員管理的模塊。
計劃制定,查看企業計劃信息,并根據企業的銷售、庫存及營運等情況制定 新的計劃;計劃調整,對已制定的計劃內容做出調整,即修改未執行的計劃的內 容;計劃執行,將未執行的計劃的狀態更新為已執行。
5.財務管理模塊:企業財務部人員管理的模塊。
產品定價,查看庫存成品的單價信息,并根據相關成本及市場行情調整庫存 成品的單價;代理商結算,查看訂單信息,并對訂單中支付金額小于總金額的訂 單進行欠款結算;銷售人員管理,查看、修改企業的銷售人員的信息;統計報表, 完成各種訂單、成品出/入庫單據及原材料出/入庫單據的統計工作。
6.物料管理:企業倉庫管理員管理的模塊。
成品管理,查看庫存成品信息,并實現新成品和庫存已有成品的入庫工作; 成品發貨,實現庫存成品的出庫;原材料管理,查看庫存原材料信息,并完成原 材料的出入倉庫工作。
7.系統管理模塊:企業系統管理員管理的模塊。
用戶管理,查看系統用戶信息,并可以修改用戶信息;廣告管理,查看企業 廣告信息,修改廣告信息,添加或刪除廣告。
5.3系統數據庫設計
數據庫表和表之間的關聯如圖5-3所示:
圖5-3 數據庫表和表之間的關聯圖
其中,數據庫表[10]的詳細信息構成如表5-1--5-9所示
表5-1系統Users基本信息表
序號 列名 數據類型 可否為空 備注
1 Userid int 否 主鍵,自增
2 UserName nvarchar(1
0) 否
3 UserPassword nvarchar(1
0) 否
4 UserAddress nvarchar(2
0) 是
5 UserTelephone char(13) 否
6 UserAuthority tinyint 否 1:銷售人員;2:企業管 理人員;3:財務部人員; 4:倉庫管理員;5:系統 管理員
續表 表5-1系統Users基本信息表
序號 列名 數據類型 可否為空 備注
1 Consumerld int 否 主鍵,自增
2 ConsumerName nvarchar(1
0) 否
3 ConsumerAddress nvarchar(2
0) 是
4 ConsumerTelephone char(13) 否
5 ConsumerAuthority tinyint 否 1:客戶;2:代理商
表5-2系統Consumers基本信息表
序號 列名 數據類型 可否為空 備注
1 OrderId int 否 主鍵,自增
2 UserId int 否 Users的外鍵
3 ConsumerId int 否 Consumers的外鍵
4 TotalMoney money 否
5 PayedMoney money 否
6 OrderDate date 否
表5-3系統Orders基本信息表
序號 列名 數據類型 可否為空 備注
1 OrderId int 否 Orders的外鍵
2 ProductId int 否 Products的外鍵
3 ProductUnitprice money 否
4 ProductNumber int 否
5 ProductValue money 否
表5-4系統OrderDetails基本信息表
序號 列名 數據類型 可否為空 備注
1 ProductId int 否 主鍵,自增
2 ProductName nvarchar(10
) 否
3 ProductUnitPrice money 否
4 ProductNumber int 否
表5-5系統Products基本信息表
序號 列名 數據類型 可否為空 備注
1 ProductDetailI
d int 否 主鍵,自增
2 ProductId int 否 Products的外鍵
3 ProductState bit 否 0出庫;1入庫
4 ProductNumber int 否
5 UserId int 否 Users的外鍵
6 ProductDate Date 否
表5-6系統ProductDetails基本信息表
序號 列名 數據類型 可否為空 備注
1 MaterialId int 否 主鍵,自增
2 MaterialName nvarchar(10) 否
3 MaterialNumber int 否
表5-7系統Materials基本信息表
序號 列名 數據類型 可否為空 備注
1 MaterialDetailId int 否 主鍵,自增
2 MaterialId int 否 Materials的外鍵
3 MaterialState bit 否 0出庫;1入庫
4 MaterialNumber int 否
5 UserId int 否 Users的外鍵
6 MaterialDate date 否
表5-8系統MaterialDetails基本信息表
序號 列名 數據類型 可否為空 備注
1 PlanId int 否 主鍵,自增
2 PlanContent text 否
3 PlanState bit 否 0未執行;1已執行
表5-9系統Plans基本信息表
序號 列名 數據類型 可否為空 備注
1 AdvertisementId int 否 主鍵,自增
2 AdvertisementContent text 否
由以上的表和表之間的關聯可以清晰分析出數據庫的整個規模,系統的大致 輪廓確定了,數據庫是整個系統的核心部分,數據庫中各個表的設計對研發的管 理系統的質量是有很大的影響的,所以,我們考慮到將來用戶使用的便捷性以及 對表的設計規則,采用了適當增加冗余度去犧牲空間來加快時間的辦法。
第6章 系統詳細設計
6.1系統界面表現層詳細設計
Microsoft Silverlight是一種新的Web呈現技術,能在各種平臺上運行。 使用Microsoft Silverlight控件,可以創建出色的用戶體驗。如果這樣子還 不能滿足需求,Silverlight還支持自定義控件或是使用第三方控件。也可以 從受信任的來源下載控件,并通過添加引用來導入自定義控件。如果發現 某個控件在功能上適合需求,但外觀卻不符合要求,并且該控件支持模板, 則可以修改該控件的模板來更改其外觀。
因為 Silverlight 技術是使用 XAML 語言來描述界面的,所以整個 Silverlight技術應用主要是對于本系統的界面表現層的繪制和組合。瀏覽器 增強模塊的作用是呈現XAML,并且將生成的圖形在瀏覽器界面上繪制, 它是Silverlight技術的核心。因為該模塊的下載體積是很小的,所以用戶在 點擊含有Silverlight內容的網站的時候,可以進行安裝該增強模塊。同時該 模塊還將XAML頁面底層的框架公開給開發人員,對頁面內容的交互來說 是很方便的[11]。所以整個系統界面表現層的詳細設計就集中在界面控件元 素的詳細設計。借助該技術,將擁有內容豐富、視覺效果絢麗的交互式體 驗,而且,無論是在瀏覽器內、還是在桌面操作系統(如Windows和Apple Macintosh)中,都可以獲得這種一致的體驗。
6.1.1添加訂單界面詳細設計
下面介紹的是添加訂單界面有事件的主要控件元素:
1.控件名稱:Proinfoda taGrid
控件類型:DataGrid
事件及功能描述:ProinfodataGrid_SelectionChanged,在顯示成品信息 的Datagrid中,選中一行并修改數量,價值會自動更新為數量乘以單價所 得的值,應付金額會自動更新為所有的價值累加所得的值; ProinfodataGrid_KeyDown,限制在DataGrid中的數量列的值由鍵盤只能 輸入數字和退格。
2.控件名稱:PayedMoney text Box
控件類型:TextBox
事件及功能描述:PayedMoneytextBox_KeyDown,填寫代理商已支付的金額 值時鍵盤只能輸入數字和退格。
3.控件名稱:OkButton
控件類型:Button
事件及功能描述:OKButton_Click,單擊“提交”按鈕時,若填寫的信息 不完整,則系統提示“填寫信息不完整,提交失敗”;若信息完整,則先調 用Consumers類中的ConsumerIdSelect ()方法實現從數據庫的Consumers 表中獲取代理商編號,再調用邏輯層的Orders類中的OrdersInsert ()方法, 實現向數據庫中的訂單表和訂單明細表插入新的信息并且系統提示“提交 成功”。
4.控件名稱:CancelBu tton
控件類型:Button
事件及功能描述:CancelButton_Click,單擊"關閉”按鈕時,頁面關閉。
5.控件名稱:Chil dWindow
控件類型:Ch il dWindow
事件及功能描述:ChildWindow_Loaded, ChildWindow界面加載時,調用Orders 類中的OrderIdSelect()方法獲取新訂單號,調用Consumers類中的 ConsumerNameSelect ()方法獲取所有代理商姓名,調用Products類中的 Produc tSelec t()方法獲取所有成品信息。
6.1.2庫存成品入庫/出庫單據界面詳細設計
下面介紹的是成品入庫/出庫單據界面有事件的主要控件元素:
1.控件名稱:ProNumtextBox
控件類型:TextBox
事件及功能描述:ProNumtextBox_KeyDown,填寫成品入庫/出庫的數量時鍵 盤只能輸入數字和退格。
2.控件名稱:OutStorebutton
控件類型:Button
事件及功能描述:OutStorebutton_Click,單擊“出庫”按鈕時,若填寫的信 息不完整則系統提示“填寫信息不完整,出庫失敗”;若填寫的信息完整則先調 用Products類中的ProductNumSelect()方法,實現在數據庫中查詢此商品的庫 存量,若庫存量小于填寫的出庫數量則系統提示“庫存量不足,出庫失敗”,反 之則調用Products類中的ProductNumUpdate ()方法,更新數據庫成品表中的成 品數量并在成品明細表中插入新的信息。
3.控件名稱:OkButton
控件類型:Button
事件及功能描述:OKButton_Click,單擊“入庫”按鈕時,若填寫的信息不完 整則系統提示“填寫信息不完整,入庫失敗”;若填寫的信息完整則調用 Products類中的ProductNumUpdate ()方法實現數據庫的成品表中的成品數量的 更新,調用Products類中的ProductIdSelect()方法獲取成品編號,調用 Products類中的ProductDetailsInsert()方法實現在數據庫成品明細表中插入 新的信息。
4.控件名稱:Chil dWindow
控件類型:Chil dWindow
事件及功能描述:ChildWindow_Loaded,庫存成品入庫/出庫單據界面加載時, 調用Produc ts類中的Produc tN ameSelec t()方法,獲取所有庫存成品的名字。
6.2系統邏輯層詳細設計
6.2.1系統類模型的創建
類模型,是描述系統內部對象的特征、對象之間的相互聯系以及對象 所屬的每個類的屬性和操作,獲取系統的靜態特征的一種直觀方式[12]。根 據需求分析和總體設計階段提出的模塊和實體關系,整個系統的類模型設 計如圖6-1所示:
6.2.2用戶注冊模塊詳細設計
當用戶點擊系統頁面上的“注冊”按鈕之后,系統就會自動跳轉到注冊的頁 面。在該頁面上,用戶需要填寫一些注冊信息,提交之后,數據庫會將填寫的信 息與數據庫中原有的用戶信息進行比對,如果數據庫中已經有了剛填寫的用戶 名,那么系統會告知該賬號已經有人使用,需要重新更換。但是,如果數據庫中 沒有這個用戶名,那么數據庫會將此次注冊的信息自動填充到數據庫中,之后用 戶可以回到登陸界面,使用剛注冊的賬號和密碼重新登陸。為了清晰整個業務邏 輯流程,用NS盒圖來描述整個過程,如圖6-2所示:
圖6-2用戶注冊NS圖
6.2.3銷售管理模塊詳細設計
銷售人員成功登陸后就可以使用銷售管理模塊的訂單管理、代理商管 理和客戶管理功能。其中訂單管理包括對已有訂單信息的查看及添加新訂 單,添加訂單界面的信息涉及到數據庫的Orders、Consumers及Products 三張表,添加訂單界面加載時獲取新的訂單號、所有的代理商姓名及所有 的庫存成品信息,在提交時先審核信息完整性及正確性,若審核通過將在 數據庫的Orders及OrderDetails表中插入新的信息;代理商管理包括代 理商信息查看,添加代理商及修改代理商信息;客戶管理包括客戶信息查 看,添加客戶及修改客戶信息,代理商管理和客戶管理均涉及到數據庫的 Consumers 表。
銷售管理模塊所有功能的實現需調用Orders、Consumers及Products 三個類中的方法,在界面層,訂單管理功能的實現調用了類中的 OrderSelect()、Orderinsert () > ProductSelect()、OrderldSelect () 及 ConsumerldSelect()方法;代理商管理和客戶管理功能的實現調用了類中 的 ConsumerSelect()、Consumerinsert () 和 ConsumerUpdate ()方法。 銷售管理模塊的流程圖[13]如圖6-3所示:
圖6-3 銷售管理模塊流程圖
訂單管理功能的添加訂單功能在具體實現時遇到了一些技術問題:
1.如何使DataGrid的“數量”列的值是可以手動輸入的,并且“價 值”列的值是因為“數量”列的值改變而保持實時自動更新的,這 個問題通過以下的XAML代碼解決了。
〈sdk:DataGridTemplateColumn Header="數量"Width="90"〉 <sdk:DataGridTemplateColumn.CellTemplate> 〈DataTemplate〉
〈TextBox Name="ProductNum" Text="0"〉 〈/TextBox〉
〈/DataTemplate〉
〈/sdk:DataGridTemplateColumn.CellTemplate〉 〈/sdk:DataGridTemplateColumn〉
上述代碼的意義是用TextBox來代替DataGrid控件"數量"列的單元 格默認的TextBlock,就可以實現單元格值的手動輸入了,并且頁面加載時 DataGrid控件“數量”列的初始值是0。 “價值”列的實現代碼與上述代
碼相似就不再詳述了。
2•當DataGrid控件中某行的“數量”列的值改變時,能獲取該值,并且 能獲取此行“單價”列的值,將這兩個值相乘的結果賦值給此行的“價值” 列。具體的解決辦法是,首先用if (e. Removedltems.Count > 0)判斷是否 有行被選中,若有行被選中,則用ProinfodataGrid. Columns [m].
GetCellContent (e. Removedltems [0])來獲取選中行的某個單元格的值,其 中參數m是列索引;若沒有行被選中則不做任何操作。
3•當DataGrid控件中某行的“數量”列的值改變時,如何獲取DataGrid 中所有行的“價值”列的值并且累加起來并且在“應付金額” TextBox中顯 示出來,即保證“應付金額”TextBox值的實時更新。這個問題通過下述代 碼解決:
double lMoney = 0;
foreach (object ovj in ProinfodataGrid.ItemsSource)
{
if (((TextBox)ProinfodataGrid.Columns[4].GetCellContent(ovj)).Text != null)
{
lMoney += Convert.ToDouble(((TextBox)this.ProinfodataGrid.
Columns[4].GetCellContent(ovj)).Text);
this.TotalMoneytextBox.Text = lMoney.ToString();
}
}
上述問題2和3是由Proinfoda taGrid_Selec tionChanged事件觸發的,
該事件用到的算法流程圖如圖6-4所示:
6.2.4計劃管理模塊詳細設計
企業管理人員成功登陸后就可以使用計劃管理模塊的計劃制定,計劃 調整和計劃執行功能。若某一成功登陸的企業管理人員要制定一個計劃, 在計劃制定頁面填寫計劃內容成功提交后即制定成功,并且新制定的計劃 狀態默認為未執行日期默認為系統當前時間,在計劃調整頁面可以對計劃 的內容做出調整成功提交后即調整成功,若要執行未執行的計劃,單擊計 劃執行按鈕即可將計劃的狀態調整為已執行。
計劃管理模塊所有功能的實現需調用邏輯層的Plans類,在界面層, 計劃制定功能的實現是調用類中的PlanInser t()方法;計劃調整功能的是 實現調用類中的PlanUpdate()方法;計劃執行功能的實現是調用類中的 PlanExecutive ()方法。
計劃管理模塊的流程如圖6-5所示:
圖6-5 計劃管理模塊流程圖
6.2.5財務管理模塊詳細設計
財務部人員成功登陸后可以使用財務管理模塊的產品定價,代理商結 算,銷售人員管理及統計報表功能。產品定價,財務部人員可以根據原材 料價格及市場需求量等外部因素來實時修改庫存成品的單價;代理商結算, 若某張訂單的代理商已支付金額小于應支付的總金額,財務部人員可以在 收到代理商的欠款后一次性將余額結算完;銷售人員管理,對銷售人員的 個人信息進行修改;統計報表,財務部人員統計訂單、成品及原材料的數 量及價值等,由此可統計出企業的財務及運營狀況等。
財務管理模塊所有功能的實現需調用邏輯層的Products、Orders、
Users、 Materials 類,在界面層,產品定價功能的實現是調用類中的 ProductSelect()和ProductPriceUpdate()方法;代理商結算功能的實現是調 用類中的OrderSelect()和OrderPayedMoneyUpdate()方法;銷售人員管理是 調用類中的UserInfoUpdate()方法。
此模塊的銷售人員管理功能的流程合并到系統管理模塊的用戶管理功
能中描述。財務管理模塊的流程如圖6-6所示:
圖6-6 財務管理模塊流程圖
6.2.6物料管理模塊詳細設計
倉庫管理員成功登陸后可以使用物料管理模塊的成品管理,成品發貨 及原材料管理功能。成品管理包括已有成品入庫和新成品入庫,原材料管 理包括原材料出庫和入庫。
物料管理模塊所有功能的實現需調用邏輯層的Produc ts和Mat erials 類。在界面層,成品管理功能的實現是調用類中的 ProductSelect()、 ProductInsert()和ProductNumUpdate()方法;成品發貨功能的實現是調用 類中的ProductNumSelect ()和ProductNumUpdate ()方法;物料管理功能的 實現是調用類中的 Mat erialSelec t()、Mat erialInser t()和 MaterialNumUpdate ()方法。
此模塊的三個功能有相似之處,以成品管理和成品發貨為例解說此模 塊流程,如圖6-7所示:
圖6-7 成品管理和成品發貨功能流程圖
6.2.7系統管理模塊詳細設計
系統管理員成功登陸后可以使用系統管理模塊的用戶管理和廣告管理。用戶 管理包括查看系統用戶信息和修改系統用戶的地址及聯系電話信息,廣告管理包 括查看廣告信息、修改廣告、添加廣告和刪除廣告。
系統管理模塊所有功能的實現需調用邏輯層的 Users 和 Advertisements 類。在界面層,用戶管理功能的實現是調用類中的UserSelect()、UserUpdate() 和UserDelete()方法,廣告管理功能的實現是調用類中的AdSelect()、 AdUpdate()、AdInsert()、AdDelete()。
財務管理模塊的銷售人員管理功能合并到此模塊的用戶管理中。系統
管理模塊的流程如圖6-8所示:
圖6-8 系統管理模塊流程圖
6.3系統數據訪問層詳細設計
系統數據訪問層是整個系統最關鍵的部分。系統的邏輯層訪問數據層的擴展 性和維護的難易程度是由數據訪問層的設計所直接影響的。
數據庫連接模塊的主要功能就是建立與數據庫的連接,對數據庫執行相關操 作并且將數據返回給業務邏輯層或者把邏輯層傳來的數據發送到數據庫中。數據 庫連接模塊主要由數據庫連接類構成,LINQ to SQL的數據組件被包含在數據庫 連接類中,LINQ to SQL調用數據庫的存儲過程使對數據的操作和調用分開便于 后期維護[14]。系統又需要全局可用的數據連接,并且采用Web Service技術,可 以在業務邏輯層和LINQ之間啟用Web Service,將Web Service與LINQ的調用 方法綁定,使Web Service能為邏輯層提供良好的接口服務。結合邏輯類的調用, 數據層類設計圖如圖6-9所示:
class Interface
static class Management Sy stem W eb S ervice
class ManagementSystemDataContext
[Function(Name = "dbo.存儲過程”)]
圖6-9數據層類設計圖
封裝好的存儲過程將作為一個一個的方法被上層的LINQ調用。LINQ會 把類ManagementSystemDataContext下的子類和方法自動轉換為SQL語句, 這樣便允許簡單地用程序去使用C#對象了。這個類就是LINQ穿插在對象和 數據庫之間的對象/關系映射層。本系統在這個數據層類的設計上利用LINQ to SQL 來處理SQL的轉換,所以底層的存儲過程是此層的核心。
在Microsoft Visual Studio 2010中封裝存儲過程的步驟是:
1.在工程中創建數據庫服務器連接;
2.在 Web 工程中添加 LINQ to SQL Classes 項目,命名為 ManagementSy- stem;
3.將在Microsoft SQL Server 2008中數據庫中創建的存儲過程拖拽
到 ManagementSystem.dbml 設計器的右側, 在
ManagementSystem. designer. cs文件中自動生成存儲過程及該存儲 過程的結果集方法;
4.將 ManagementSystem.designer.cs 中自動生成的代碼復制到 Manage-mentSystem.cs 文件中,若此存儲過程中有參數,在 ManagementSystem. cs中創建該存儲過程的條件集方法;
5.在.Web 工程中添加 Web Service 項目,命名為 ManagementSystem- WebService;
6.在ManagementSystemWebService. svc. cs文件中封裝存儲過程形成
的方法。
通過上述的步驟,根據需求分析和總體設計的要求,表 6-1列出了
ManagementSystemWebService中封裝的實現添加訂單功能的方法。
方法名稱 方法說明
public List<OrderIdQueryResult> OrderIdQue() 獲取新的訂單編號
public List<ConsumerNameQueryResult> ConNameQue() 獲取所有代理商姓名
public List<ProductNameQueryResult> ProNameQue() 獲取所有成品信息
public List<ConsumerIdQueryResult> ConIdQue
(ConsumerIdQueryCondition aConsumerIdQueryCondition) 按代理商姓名查找代理商編
號,返回代理商編號
public int OrdersInsert(OrdersInsertResult
aOrdersInsertResult) 向Orders表中插入新訂單信息
public int OrderInfoInsert (OrderInfoInsertResult
aOrderInfoInsertResult) 向 OrderDetails 表中插入新訂
單信息
表6-1 ManagementSystemWebService. svc. cs中實現添加訂單功能的方法及
說明
以上的方法提供的操作囊括了添加訂單功能所用到的存儲過程,編碼實現階
段,嚴格要求以上的存儲過程方法進行實現。
第7章 系統實現
7.1 用戶注冊界面截圖
用戶注冊界面實現效果如圖7-1所示:
圖7-1用戶注冊界面截圖
注冊界面需要用戶填寫一些必要的信息,選擇自己的角色,因為每個角色所 對應的功能不同,所以注冊的時候要仔細審查,避免選錯。
ALTER proc [dbo].[UserRegister] @UserName nvarchar(10)=null, @UserPassword nvarchar(10)=null, @UserAddress nvarchar(20)=null, @UserTelephone char(13)=null, @UserPerm tinyint=null as begin
insert into Users (UserName,UserPassword,UserAddress,UserTelephone,UserPerm) values(@UserName,@UserPassword,@UserAddress,@UserTelephone,@UserPer m)
end
7.2用戶登錄界面截圖
用戶登錄界面實現效果如圖7. 1所示:
企業倡息管理系統
Information Management System for Enterprise
角色:匕銷售人員 °企業管理人員
°財務部人員 0倉庫管臨
7系繼醐
胡: 「
密碼:I I
圖7.1用戶登錄界面截圖
用戶登錄分多種角色,以不同角色登錄,所能使用的功能不同。每個角色的 具體功能在上一章有詳細的介紹。
ALTER PROCEDURE [dbo].[UsersLogin]
@UserName nvarchar(10)=null,
@UserPassword nvarchar(10)=null,
@UserPerm tinyint=null
AS
BEGIN
select *
from Users
where UserName=@UserName and UserPassword=@UserPassword and
UserPerm=@UserPerm
END
7.3銷售管理界面截圖
訂單管理界面實現效果如圖7-3所示:
圖7-3訂單管理界面截圖
企業管理人員可以通過訂單管理來查看現有的代理商及他們現有的一些訂 單信息。
企必信息管理系統
圖7-4訂單管理界面截圖
通過訂單管理界面,我們可以對代理商信息進行管理,修改他們的信息,同 時還可以添加新的代理商。
添加訂單界面實現效果如圖7-5所示:
圖7-5 添加訂單界面截圖 using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using EMS.ManagementServiceReference;
using System.Collections.ObjectModel;
namespace EMS
{
public partial class AddOrders : ChildWindow
{
#region 全局變量
//代理商編號
private int mConsumerId;
private decimal mTotal;
private decimal mPayed;
ManagementSystemServiceClient mMSSC = new ManagementSystemServiceClient();
ConsumerIdQueryCondition mConIdCondition = new ConsumerIdQueryCondition();
ObservableCollection<ConsumerIdQueryResult> mConIdResult = new ObservableCollection<ConsumerIdQueryResult>();
OrdersInsertResult mOInResult = new OrdersInsertResult(); OrderInfoInsertResult mOInfoInResult = new OrderInfoInsertResult(); #endregion
public AddOrders()
{
InitializeComponent();
this.OKButton.Click += new RoutedEventHandler(ChildWindow_Loaded); }
/// <summary>
/// 提交按鈕單擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OKButton_Click(object sender, RoutedEventArgs e)
{ //MessageBox.Show(this.PayedMoneytextBox.Text.ToString());
if ((this.ConsumerNamecomboBox.SelectedIndex<0) || (this.OrderdatePicker.Text == "") || (this.PayedMoneytextBox.Text == ""))
{
MessageBox.Show(“所有信息填完才能提交!");
}
else
{
this.mTotal =Convert.ToDecimal(this.TotalMoneytextBox.Text); this.mPayed = Convert.ToDecimal(this.PayedMoneytextBox.Text);
mConIdCondition.ConsumerName =
this.ConsumerNamecomboBox.SelectionBoxItem.ToString();
//獲取代理商編號 GetConsumerIdQueryResult(mConIdCondition); this.DialogResult = true;
}
}
#regi on獲取代理商編號,并向O rders和O rderl nfo表中In sert public void GetConsumerIdQueryResult(ConsumerIdQueryCondition aConsumerIdQueryCondition)
{
mMSSC.ConIdQueAsync(aConsumerIdQueryCondition); mMSSC.ConIdQueCompleted -= new
EventHandler<ConIdQueCompletedEventArgs>(mMSSC_ConIdQueCompleted); mMSSC.ConIdQueCompleted += new
EventHandler<ConIdQueCompletedEventArgs>(mMSSC_ConIdQueCompleted); }
void mMSSC_ConIdQueCompleted(object sender, ConIdQueCompletedEventArgs e)
{
mConIdResult = e.Result;
for (int i = 0; i < mConIdResult.Count; i++)
{ mConsumerId = mConIdResult[i].ConsumerId;
}
mOInResult.ConsumerId = mConsumerId;
mOInResult.OrderDate = Convert.ToDateTime(this.OrderdatePicker.Text); //mOInResult.TotalMoney =Convert.ToDecimal(this.TotalMoneytextBox.Text); //mOInResult.PayedMoney =
Convert.ToDecimal(this.PayedMoneytextBox.Text); mOInResult.TotalMoney =this.mTotal; mOInResult.PayedMoney =this.mPayed; GetOrdersInsertResult(mOInResult);
private void ChildWindow_Loaded(object sender, RoutedEventArgs e) {
this.TotalMoneytextBox.Text = "0";
//獲取訂單號
GetOrderIdQueryResult();
//獲取代理商名
GetConsumerNameQueryResult();
//獲取成品信息
GetProductInfoQueryResult();
//獲取當前日期 this.OrderdatePicker.Text = DateTime.Now.ToShortDateString(); this.PayedMoneytextBox.Text = "0";
}
#region 獲取訂單號
public void GetOrderIdQueryResult()
{
mMSSC.OrderIdQueAsync(); mMSSC.OrderIdQueCompleted -= new EventHandler<OrderIdQueCompletedEventArgs>(mMSSC_OrderIdQueCompleted);
mMSSC.OrderIdQueCompleted += new EventHandler<OrderIdQueCompletedEventArgs>(mMSSC_OrderIdQueCompleted);
}
7.4物料管理界面截圖
成品管理界面實現效果如圖7-6所示:
圖7-6 成品管理界面截圖
該界面可以對企業現有成品進行相關管理,同時,如果有新的成品生產完畢 可以通過“新成品入庫”這一功能來進行添加。
原材料管理界面實現效果如圖7-7所示:
企必信息管理系統
圖7-7 原材料界面截圖
當企業的原材料信息有所變動時,可以通過這一界面的“原材料入庫”、“原 材料出庫”兩個功能來進行管理,及時更新數據,方便使用。
成品入庫/出庫界面實現效果如圖7-8所示:
圖7-8成品入庫/出庫界面截圖
將物品的數量等相關信息錄入系統,方便企業對其進行管理。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using EMS.ManagementServiceReference;
namespace EMS
{ public partial class NewProductIn : ChildWindow
{ #region 全局變量
ProductInsertResult mPIResult = new ProductInsertResult(); ProductInfoInsertResult mPIInR = new ProductInfoInsertResult();
ManagementSystemServiceClient mMssc = new
ManagementSystemServiceClient();
#endregion
public NewProductIn()
{ InitializeComponent();
}
/// <summary>
/// 入庫按鈕單擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OKButton_Click(object sender, RoutedEventArgs e)
{
if ((this.ProNametextBox.Text == "") || (this.ProNumbertextBox.Text == "")
|| (this.ProPricetextBox.Text == ""))
{
MessageBox.Show("成品名,數量或單價不能為空!");
}
else
{
#regi on 為 Products In sert 賦值
mPIResult.ProductName = this.ProNametextBox.Text; mPIResult.ProductNum =
Convert.ToInt32( this.ProNumbertextBox.Text);
mPIResult.ProductUnitPrice
=Convert.ToDecimal( this.ProPricetextBox.Text);
#endregion
GetProductInsertResult(mPIResult);
#region 為 ProInfo 表 Insert 賦值
mPIInR.ProductName = this.ProNametextBox.Text ; mPIInR.ProNum = int.Parse(this.ProNumbertextBox.Text); mPIInR.ProDate = Convert.ToDateTime(this.ProdatePicker.Text); mPIInR.ProFlag = true;
#endregion
GetProductInfoInsertResult(mPIInR);
this.DialogResult = true;
}
}
#region 成品表 Insert
public void GetProductInsertResult(ProductInsertResult
aProductInsertResult)
{
mMssc.ProdInsertAsync(aProductInsertResult); mMssc.ProdInsertCompleted -= new
EventHandler<ProdInsertCompletedEventArgs>(mMssc_ProdInsertCompleted);
mMssc.ProdInsertCompleted += new
EventHandler<ProdInsertCompletedEventArgs>(mMssc_ProdInsertCompleted);
}
void mMssc_ProdInsertCompleted(object sender,
ProdInsertCompletedEventArgs e)
{
if (e.Result >= 0)
{
MessageBox.Show(”入庫成功! ”);
}
}
#endregion
#region成品明細表Insert
public void GetProductInfoInsertResult(ProductInfoInsertResult aProductInfoInsertResult)
{
mMssc.ProcInfoInAsync(aProductInfoInsertResult);
mMssc.ProcInfoInCompleted -= new
EventHandler<ProcInfoInCompletedEventArgs>(mMssc_ProcInfoInCompleted);
mMssc.ProcInfoInCompleted += new
EventHandler<ProcInfoInCompletedEventArgs>(mMssc_ProcInfoInCompleted);
}
void mMssc_ProcInfoInCompleted(object sender,
ProcInfoInCompletedEventArgs e)
#endregion
/// <summary>
/// 出庫按鈕單擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OutStorebutton_Click(object sender, RoutedEventArgs e)
{
if ((ProNamecomboBox.SelectionBoxItem.ToString() == "") ||
(ProNumtextBox.Text == "") || (ProdatePicker.Text == ""))
{
MessageBox.Show("成品名,數量或日期不能為空!");
}
else
{ mPNSCondition.ProductName=this.ProNamecomboBox.SelectionBoxItem.ToString();
//獲取某種成品的庫存量
GetProductNumSelectResult(mPNSCondition);
}
}
#region 獲取某種成品的庫存量并為數據庫某種產品庫存量的更新和 ProInfo
表的Insert賦值
public void GetProductNumSelectResult(ProductNumSelectCondition
aProductNumSelectCondition)
{
mMSSC.ProNumSelResultAsync(aProductNumSelectCondition); mMSSC.ProNumSelResultCompleted -= new
EventHandler<ProNumSelResultCompletedEventArgs>(mMSSC_ProNumSelResultCom pleted);
mMSSC.ProNumSelResultCompleted += new
EventHandler<ProNumSelResultCompletedEventArgs>(mMSSC_ProNumSelResultCom pleted);
}
void mMSSC_ProNumSelResultCompleted(object sender,
ProNumSelResultCompletedEventArgs e)
{
mResult = e.Result;
for (int i = 0; i < mResult.Count; i++)
{
if (mResult[i].ProductNum <
Convert.ToInt32(this.ProNumtextBox.Text))
{
MessageBox.Show(”成品數量少于您要出庫的數量,出庫失敗!
");
}
else
mPNMResult.ProductName
this.ProNamecomboBox.SelectionBoxItem.ToString();
mPNMResult.ProductNum
Convert.ToInt32(this.ProNumtextBox.Text);
7.5系統管理界面截圖
廣告管理界面實現效果如圖7-9所示:
企北信息管理系統
廣告語
炎炎夏日即將來到,我公司黒新推出由辭設計師設計的女士短襯讓您的夏天 格子襯衫,大冢一起穿格子吧
最低的懾 最好的品質,瞬我們的服慕是您正確囲
黒新推出輪童裝
我們的服您的
推出新妙土襯初
休息一天
勵曠告
圖7-9 廣告管理界面截圖
通過該界面可以看到企業現有的一些有活動的產品,還可以進行廣告添加 系統管理員可以對這些廣告進行修改、刪除等操作。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using EMS.ManagementServiceReference;
namespace EMS
{ public partial class Advertising : UserControl
{ #region 全局變量
〃為false時是登陸后的首頁,為true時是廣告管理
public bool mIsVisible;
AddAdver mAAdver = new AddAdver();
ManagementSystemServiceClient mMssc = new
ManagementSystemServiceClient();
#endregion
public Advertising()
{ InitializeComponent();
〃添加廣告ChildWindow的確定按鈕單擊
this.mAAdver.OKButton.Click += new RoutedEventHandler(OKButton_Click);
}
void OKButton_Click(object sender, RoutedEventArgs e)
{
GetAdvertisingSelectResult();
}
/// <summary>
/// 添加廣告按鈕單擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AddAdbutton_Click(object sender, RoutedEventArgs e)
{ mAAdver.Show(); }
/// <summary>
/// 頁面加載
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{ if (this.mIsVisible == false)
{ this.AddAdbutton.IsEnabled = false;}
if (this.mIsVisible == true)
{ this.AddAdbutton.IsEnabled = true;}
//獲取廣告信息
GetAdvertisingSelectResult();
}
#region 獲取廣告信息
public void GetAdvertisingSelectResult()
{ mMssc.AdSeleAsync();
mMssc.AdSeleCompleted += new
EventHandler<AdSeleCompletedEventArgs>(mMssc_AdSeleCompleted);
}
void mMssc_AdSeleCompleted(object sender, AdSeleCompletedEventArgs e)
{
this.AdverdataGrid.ItemsSource = e.Result;
}
#endregion
}
}
7.6計劃管理界面截圖
計劃管理界面實現效果如圖7-10所示:
企世信息管理系統
圖7-10計劃管理界面截圖
當企業有一些新的計劃時,可以通過這一界面進行添加,方便管理人員查看, 同時還標注了制定的計劃是否執行,可以起到督促的作用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using EMS.ManagementServiceReference;
using System.Collections.ObjectModel; namespace EMS
{ public partial class PlansAdmin : UserControl
{ #region 全局變量
//1;計劃制定,2:計劃執行,3:計劃調整 public int mPageFunc;
//選中行索引
private int mSelectedIndex;
ManagementSystemServiceClient mMssc =
ManagementSystemServiceClient();
ObservableCollection<PlansSelectResult> mPSResult =
ObservableCollection<PlansSelectResult>();
PlanUpdateResult mPUpdateResult = new PlanUpdateResult();
AddPlans mAddPlans = new AddPlans();
#endregion
public PlansAdmin()
{ InitializeComponent();
〃添加計劃Childwindow的確定按鈕單擊
this.mAddPlans.OKButton.Click +=
RoutedEventHandler(OKButton_Click);
//計劃執行按鈕單擊
this.button2.Click += new RoutedEventHandler(OKButton_Click);
}
void OKButton_Click(object sender, RoutedEventArgs e)
{ GetPlansSelectResult() }
/// <summary>
/// 計劃制定按鈕單擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, RoutedEventArgs e)
{ mAddPlans.mPlanFunc = mAddPlans.Show();
public void GetPlanUpdateResult(PlanUpdateResult aPlanUpdateResult)
{ mMssc.PlansModifyAsync(aPlanUpdateResult);
mMssc.PlansModifyCompleted -= new
EventHandler<PlansModifyCompletedEventArgs>(mMssc_PlansModifyCompleted);
mMssc.PlansModifyCompleted += new
EventHandler<PlansModifyCompletedEventArgs>(mMssc_PlansModifyCompleted);
}
void mMssc_PlansModifyCompleted(object sender,
PlansModifyCompletedEventArgs e)
{
if (e.Result >= 0)
{ MessageBox.Show("計劃執行完成! ”) }
} #endregion
/// <summary>
/// 計劃調整按鈕單擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, RoutedEventArgs e)
{
mSelectedIndex = this.PlansInfodataGrid.SelectedIndex;
if (mSelectedIndex < 0)
{
MessageBox.Show("請先選中一個計劃!");
}
else if (mPSResult[mSelectedIndex].PlanFlag == true)
{
MessageBox.Show(-此計劃已執行完成,不能調整!");
else
{
mAddPlans.mPlanId = this.mPSResult[mSelectedIndex].PlanId;
mAddPlans.mPlanDescription
this.mPSResult[mSelectedIndex].PlanDescription;
mAddPlans.mPlanFunc = true;
mAddPlans.Show();
}
}
}
}
7.7財務管理界面截圖
產品信息實現效果如圖7-11所示:
圖7-11 產品信息界面截圖
通過這一界面,可以對企業的產品進行價格的修改。
與代理商之間的財務結算實現效果如圖7-12所示
企必信息管理系統
5/3/2011 12:00:00 AI 李四 26700.0000 26700.0000
5/12/2011 12:00:001 離木 1972.0000 1972.0000
17 5/16/2011 12:00:001 春曉 2980.0000 200.0000
「倔商結算—|
圖7-12 代理商財務結算界面截圖
通過這一界面,可以查看代理商付款信息,與代理商進行財務結算。
統計報表實現效果如圖7-13所示:
企業信息管理系綜
圖7-13 統計報表界面截圖
通過這一界面,可以統計與企業有交易的詳細訂單數量;查看企業現有的原
材料數量信息;查看現有的成品商品的數量信息。
第8章 總 結
本系統采用 Microsoft Visual Studio 2010 中的 Silverlight 技術和 LINQ to SQL技術實現的。在設計本系統的期間,我一直對系統設計的每一個細節 都正確、認真的分析和對待,使系統的各項功能盡量達到預期的效果。
在設計整個系統的過程中,遇到的最主要的問題是:Silverlight是一種 新技術,我對它的理解還不夠透徹,所以在做的時候難免會有很多的疑問。 通過和指導老師的溝通,在老師的細心教導下,逐一的解決了遇到的各個 問題,保證了論文的順利撰寫。
在整個系統的設計過程中,很多以前學到的知識我都有了很好的復習, 同時還學到了很多新知識。首先,我了解了編寫大型應用軟件的一般步驟, 獲得了很多寶貴經驗。特別是怎樣將理論與實踐相結合,把書本上的知識 運用到程序中。其次,我熟悉了三層架構的知識,C#.NET編程技術、 Silverlight技術和SQL Server 2008數據庫等專業知識。學到了很多關于程 序設計的經驗和技巧,學會了調試程序的一般方法。
通過這次設計,令我逐步具備了走向程序員的基本素質,并且,在軟 件開發的過程中,通過導師的指導以及同學的幫助,讓我知道了團隊合作 的重要意義,了解了如何對一個管理系統盡心各項分析及設計,軟件工程 這個重要的理念在我的頭腦中也更加清晰明朗。
在本系統的設計和論文撰寫的過程中,我認識到了自身還存在一定的不足之 處,同時也感受到知識是永遠都學不完的,在今后的過程中,我一定會努力改正 自己的缺點,繼續豐富自己的知識,強大自己。
參考文獻
[1]何金枝.基于Web的畢業設計(論文)管理系統的設計及應用[J].計算現與現代
化.2012(08)
[2](美)Karli Watson.C#入門經典(第4版)[M],清華大學出版社,2008.
[3]Web Service 百度百科.http://baike.baidu.com/view/67105.htm.
[4]魏永超.銀光志Silverlight3.0開發詳解與最佳實踐,清華大學出版社,2009.
[5]蔡立,朱曉紅.基于ASP. NET的合同管理系統的設計與實現[A]. 2008年計算機 應用技術交流會論文集[C]. 2008
[6]張杰.信息系統集成項目管理[J].內蒙古科技與經濟.2011(09)
[7](英)Suzanne Robertson, James Robertson.掌握需求過程(第2版)[M],人民郵電出版
社,2007.
[8]薩師煊,王珊.數據庫系統概論(第三版)[M].高等教育出版社,2000.
[9]張翔..NET平臺下中小連鎖零售企業信息管理系統的設計與實現[D],廈門大學碩
士學位論文,2009.
[10]Peter DeBetta. Greg Low,Mark Whitehorn.Introducing Microsoft SQL Server 2008[M]. Microsoft Press,2008.
[11]Bill Reiss,Dave Campbell.Hello Silverlight[M]. Manning Press,2010.
[12]張杰.信息系統集成項目管理[J].內蒙古科技與經濟.2011(09)
[13]張海藩•軟件工程導論(第五版)[M]•清華大學出版社,2008.
[14]Frank LaVigne,Cameron Albert. Microsoft Silverlight 4 Business Application Development, Packt Publishing,2010.
[15]朱少民,軟件測試方法和技術[M],清華大學出版社,2005.