劉 濤
(阜陽(yáng)職業(yè)技術(shù)學(xué)院 安徽 阜陽(yáng) 236031)
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展與應(yīng)用領(lǐng)域的滲透,采用信息化管理技術(shù)已經(jīng)成為了一個(gè)企業(yè)和部門提高工作效率,解決實(shí)際問(wèn)題的必由之路。本文正是從這一著眼點(diǎn)出發(fā),立足實(shí)際應(yīng)用中的需求設(shè)計(jì)并開發(fā)了基于MVC架構(gòu)的信息管理系統(tǒng)。系統(tǒng)的開發(fā)過(guò)程使用了MVC架構(gòu)下的相關(guān)典型技術(shù),諸如ASP.NET、SQL Server數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)、C#網(wǎng)絡(luò)編程技術(shù)等等。
所謂MIS(管理信息系統(tǒng)——Management Information System),是一個(gè)由人、計(jì)算機(jī)及其他外圍設(shè)備等組成的能進(jìn)行信息的收集、傳遞、存貯、加工、維護(hù)和使用的系統(tǒng)?,F(xiàn)代化的企業(yè)需要計(jì)算機(jī)的幫助對(duì)內(nèi)管理日常業(yè)務(wù),對(duì)外開展電子商務(wù);事業(yè)單位以及政府部門則需要利用計(jì)算機(jī)實(shí)現(xiàn)信息管理和事務(wù)處理的信息化,提高工作效率。
ASP.NET技術(shù)是一種用于創(chuàng)建WEB應(yīng)用程序的編程模型。運(yùn)行時(shí)可以和.NET Framework類庫(kù)集一起配合用于創(chuàng)建動(dòng)態(tài)WEB頁(yè),ASP.NET在WEB服務(wù)器的環(huán)境中運(yùn)行,頁(yè)面的最后生成是由許多不同的指令和/或數(shù)據(jù)源構(gòu)造的。
基于B/S模型的WEB應(yīng)用程序結(jié)構(gòu)可以概括為MVC結(jié)構(gòu),M(Model)即模型層/與數(shù)據(jù)庫(kù)交互;V(View)即視圖/與用戶交互;C(Controller)控制/根據(jù)用戶的請(qǐng)求與模型層交互,并返回結(jié)果視圖給用戶。
三種之間的關(guān)系可以用下圖來(lái)表示[1]:
圖1 MVC結(jié)構(gòu)示意圖
對(duì)MVC參考模型中的功能模塊分別介紹如下[2]:
1.1 視圖:視圖是用戶看到并與之交互的界面。對(duì)老式的Web應(yīng)用程序來(lái)說(shuō),視圖就是由HTML元素組成的界面,在新式的WEB應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮,它們包括Macromedia Flash和像 XHTML,XML/XSL,WML等一些標(biāo)識(shí)語(yǔ)言和Web services。
1.2 模型:模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。例如它可能用諸如EJBs和ColdFusion Components這樣的構(gòu)件對(duì)象來(lái)處理數(shù)據(jù)庫(kù)。被模型返回的數(shù)據(jù)是中立的,就是說(shuō)模型與數(shù)據(jù)格式無(wú)關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。
1.3 控制器:控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁(yè)面中的超鏈接和發(fā)送HTML表單時(shí),控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后確定用哪個(gè)視圖來(lái)顯示模型處理返回的數(shù)據(jù)。
建立物資管理系統(tǒng)主要目的是幫助企業(yè)或個(gè)人降低管理物資人員的工作強(qiáng)度,提高物資管理水平。這就要求物資管理系統(tǒng)基本涵蓋企業(yè)物資管理的全過(guò)程。經(jīng)過(guò)與企業(yè)的深度走訪與協(xié)商,同時(shí)分解MVC的視
圖結(jié)構(gòu),本系統(tǒng)主要功能模塊設(shè)計(jì)如下:
2.1 用戶管理:實(shí)現(xiàn)添加用戶,修改當(dāng)前用戶密碼2個(gè)模塊。
2.2 單據(jù)管理:實(shí)現(xiàn)登記入庫(kù)單、登記出庫(kù)單、登記退庫(kù)單、登記盤點(diǎn)單、登記維修單、登記付款單、登記收款單等模塊。
2.3 固定資產(chǎn)管理:固定資產(chǎn)登記、固定資產(chǎn)查詢、固定資產(chǎn)維修統(tǒng)計(jì)等模塊。
2.4 通用查詢:?jiǎn)螕?jù)查詢、入庫(kù)物資統(tǒng)計(jì)、出庫(kù)物資統(tǒng)計(jì)、退庫(kù)物資統(tǒng)計(jì)、應(yīng)付賬款統(tǒng)計(jì)等模塊。
2.5 系統(tǒng)維護(hù):主要是基本數(shù)據(jù)維護(hù)模塊。
物資管理系統(tǒng)流程圖可見下圖所示:
圖2 物資管理系統(tǒng)流程圖
系統(tǒng)框架主要架構(gòu)在ASP.NET和.NET Framework 2.0基礎(chǔ)之上,因此在開發(fā).NET程序時(shí),首先要?jiǎng)?chuàng)建很多Web頁(yè)(擴(kuò)展名.aspx的頁(yè)面文件)、用戶控件以及類,來(lái)完成基本的功能操作,為了體現(xiàn)MVC結(jié)構(gòu),同時(shí)規(guī)范系統(tǒng)的整體架構(gòu),在開發(fā)時(shí)應(yīng)先把系統(tǒng)中可能用到的文件夾創(chuàng)建出來(lái)(例如,創(chuàng)建一個(gè)名為images的文件夾,用于保存系統(tǒng)頁(yè)面中需要的圖片文件),在開發(fā)時(shí)只需將相應(yīng)文件保存到對(duì)應(yīng)文件夾下即可。下圖列出了物資管理系統(tǒng)的ASP.NET頁(yè)文件夾及文件架構(gòu)。
圖3 物資管理系統(tǒng)文件結(jié)構(gòu)架構(gòu)圖
對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)應(yīng)先明確企業(yè)物資管理業(yè)務(wù)流程,下圖是利用可視化表示形式為本系統(tǒng)繪制的業(yè)務(wù)流程圖。
圖4 物資管理系統(tǒng)業(yè)務(wù)流程圖
針對(duì)物資管理系統(tǒng)的功能結(jié)構(gòu)圖可繪制出數(shù)據(jù)流圖,下圖為本系統(tǒng)的數(shù)據(jù)流圖簡(jiǎn)圖。
圖5 物資管理系統(tǒng)數(shù)據(jù)流圖
在數(shù)據(jù)流圖的基礎(chǔ)上,可以分析和設(shè)計(jì)本系統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)。為了更為清晰的明確本系統(tǒng)中數(shù)據(jù)庫(kù)中數(shù)據(jù)表的結(jié)構(gòu),將數(shù)據(jù)表以樹型結(jié)構(gòu)圖展示如下,該結(jié)構(gòu)圖包含了系統(tǒng)數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)表。
圖6 物資管理系統(tǒng)數(shù)據(jù)表樹型結(jié)構(gòu)圖
4.1 Web.config 文件配置
由于Web.config文件對(duì)于訪問(wèn)本系統(tǒng)的用戶來(lái)說(shuō)是不可見的,也是不可以訪問(wèn)的。作為MVC結(jié)構(gòu)中控制器的重要文件,同時(shí)為了系統(tǒng)數(shù)據(jù)的安全和易操作,可以在配置文件(Web.config)配置一些參數(shù),主要配置參數(shù)是數(shù)據(jù)連接字符串,根據(jù)SQL數(shù)據(jù)庫(kù)連接技術(shù)的要求,其具體配置如下:
這里除了可以手動(dòng)編輯此文件以外,還可以使用Web管理工具來(lái)配置應(yīng)用程序的設(shè)置。設(shè)置和注釋的完整列表在machine.config.comments中, 該文件通常位于 WindowsMicrosoft.NetFrameworkv2.xConfig中。
4.2 數(shù)據(jù)庫(kù)操作類的編寫
在系統(tǒng)的開發(fā)中,良好的類設(shè)計(jì)能夠使系統(tǒng)結(jié)構(gòu)更加清晰,并且可以加強(qiáng)代碼的重用性和易維護(hù)性。本系統(tǒng)中也建立了一個(gè)公共類DB.cs,用來(lái)執(zhí)行各種數(shù)據(jù)庫(kù)操作。 由于在 ASP.NET 2.0 中,App_Code文件夾專門用來(lái)存放應(yīng)用程序中一些通用的類,這些類完成了MVC結(jié)構(gòu)中模型(Model)與控制器(Controller)之間的“數(shù)據(jù)交流”,如果沒有,在添加類時(shí)會(huì)彈出消息框,新建該文件夾。
由于對(duì)數(shù)據(jù)庫(kù)操作需要頻繁地連接數(shù)據(jù)庫(kù),如果每次連接都寫一遍代碼會(huì)很麻煩。所以這里把數(shù)據(jù)庫(kù)的連接語(yǔ)寫在一個(gè)方法GetCon中,通過(guò)調(diào)用GetCon方法來(lái)連接數(shù)據(jù)庫(kù)。該方法的代碼如下:
除了GetCon方法外,DB.cs類中還包含其他4個(gè)方法來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,分別為ExSql方法、reDs方法、reDr方法和ExcuteDataTable方法,下面分別對(duì)這4個(gè)方法進(jìn)行簡(jiǎn)單的介紹[3-4]。
(1)ExSql方法
Exsql方法用于執(zhí)行數(shù)據(jù)庫(kù)操作,首先調(diào)用GetCon方法建立與數(shù)據(jù)源的連接,然后將執(zhí)行作為參數(shù)的SQL語(yǔ)句,完成相應(yīng)的數(shù)據(jù)庫(kù)操作。
(2)reDS 方法
reDS方法是一個(gè)靜態(tài)方法。形參str是一條SQL語(yǔ)句。此方法通過(guò)SQL語(yǔ)句來(lái)查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù),并將查詢結(jié)果存儲(chǔ)在DataSet數(shù)據(jù)集中。最終,返回一個(gè)DataSet(數(shù)據(jù)集)對(duì)象。
(3)reDr方法
reDr方法的形式參數(shù)str是一條用于查詢的SQL語(yǔ)句,該方法將執(zhí)行此語(yǔ)句的結(jié)果存儲(chǔ)在一個(gè)SqlDataReader對(duì)象。最后,將這個(gè)SqlDataReader對(duì)象返回到調(diào)用處,并對(duì)其值進(jìn)行操作。
(4)ExcuteData Table 方法
ExcuteDataTable方法的參數(shù)也是一條用于查詢的SQL語(yǔ)句,它將執(zhí)行的結(jié)果存儲(chǔ)在Data Table對(duì)象中,并將此DataTable對(duì)象返回到調(diào)用處。
綜上所述,本系統(tǒng)架構(gòu)在MVC工作結(jié)構(gòu)的基礎(chǔ)之上,開發(fā)過(guò)程中主要使用了ASP.NET技術(shù)同時(shí)結(jié)合了SQL Server數(shù)據(jù)庫(kù)開發(fā)方法。系統(tǒng)開發(fā)的過(guò)程中深入到了企業(yè)和學(xué)校的第一線,了解用戶對(duì)系統(tǒng)的實(shí)際需求,盡量按照實(shí)際環(huán)境去開發(fā)系統(tǒng),在系統(tǒng)開發(fā)成功后也進(jìn)行了程序員和用戶等不同角色的測(cè)試。
[1]ASP 與 ASP.NET 之間的差異.w3school,http://www.w3school.com.cn/aspnet/aspnet_vsasp.asp,2009-7-6.
[2]陳超.基于J2EE平臺(tái)和MVC模式的物資管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京航空航天大學(xué),2004.
[3][意]Alessandro Gallo,[美]David Barkol,[美]Rama Krishna Vavilala.ASP.NET AJAX 實(shí)戰(zhàn)[M].蘇金國(guó),等,譯.北京:人民郵電出版社,2008.
[4][美]考夫曼,肖奕譯.ASP.NET 數(shù)據(jù)庫(kù)入門經(jīng)典[M].北京:清華大學(xué)出版社,2007.