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