摘 要: 設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于ASP.NET2.0的技改工程管理平臺系統(tǒng)。系統(tǒng)采用ASP.NET2.0作為開發(fā)工具,采用了Access數(shù)據(jù)量,并對系統(tǒng)的角色劃分、數(shù)據(jù)庫的結(jié)構(gòu)、系統(tǒng)的功能模塊劃分、審批流程等作了一系列闡述。
關(guān)鍵詞: ASP.NET2.0; 數(shù)據(jù)庫設(shè)計(jì); 技改工程
隨著企業(yè)的規(guī)模擴(kuò)大,申報(bào)項(xiàng)目的不斷增多以及公司內(nèi)部信息化水平的提高,傳統(tǒng)的科技項(xiàng)目、技改項(xiàng)目的申報(bào)方式已經(jīng)無法滿足目前信息化的需要。針對這種情形,運(yùn)用信息化的手段,設(shè)計(jì)一個(gè)適用于公司內(nèi)部的技改工程管理平臺,可以改善當(dāng)前申報(bào)項(xiàng)目效率低下的狀況,有利于項(xiàng)目集中管理、歷史查閱,更高效地協(xié)助計(jì)劃部做好相應(yīng)的項(xiàng)目管理工作。
本文設(shè)計(jì)和開發(fā)的技改工程管理平臺是以B/S結(jié)構(gòu)為基礎(chǔ),運(yùn)用ASP.NET2.0技術(shù)和Access數(shù)據(jù)庫,充分利用VS2005提供的各種功能控件。實(shí)現(xiàn)項(xiàng)目審批、流轉(zhuǎn)、發(fā)回、導(dǎo)出等功能。以最少的人力、物力實(shí)現(xiàn)最大的功能。
1 ASP.NET2.0介紹
ASP.NET2.0是建立在微軟新一代.NET平臺架構(gòu)上,利用普通語言運(yùn)行時(shí)(Common Language Runtime)在服務(wù)器后端為用戶提供建立強(qiáng)大的企業(yè)級Web應(yīng)用服務(wù)的編程框架[1]。ASP.NET2.0主要包括WebForm和WebService兩種編程模型。前者為用戶提供建立功能強(qiáng)大、外觀豐富的基于表單的可編程Web頁面。后者通過對HTTP、HTML、SOAP、WSDL等Internet標(biāo)準(zhǔn)的支持提供在異構(gòu)網(wǎng)絡(luò)環(huán)境下獲取遠(yuǎn)程服務(wù),連接遠(yuǎn)程設(shè)備,交互遠(yuǎn)程應(yīng)用的編程界面。
ASP.NET2.0的優(yōu)點(diǎn)除了比傳統(tǒng) ASP 的運(yùn)行速度更快、具有服務(wù)器控件、采用“code-behind”方式編寫代碼使得代碼更易于編寫外,還支持應(yīng)用程序的實(shí)時(shí)更新、自動(dòng)檢測變化并根據(jù)需要?jiǎng)討B(tài)編譯文件。它不但使執(zhí)行效率大幅度提高,對代碼的控制能力也很強(qiáng),并且支持Web Controls功能和多種語言,提高安全性、易管理性和高擴(kuò)展性。
與ASP.NET 1.x相比, ASP.NET2.0在提高開發(fā)效率、簡化管理、提高性能等方面有了進(jìn)一步的增強(qiáng)。主要表現(xiàn)在:更豐富的服務(wù)器控件,增加了40多個(gè)控件類;增加了主題和母版頁,使得網(wǎng)站更容易建立統(tǒng)一的風(fēng)格和布局;成員資格和角色管理實(shí)現(xiàn)了模塊化和自動(dòng)化;增加的數(shù)據(jù)控件能更加方便地連接數(shù)據(jù)源和綁定數(shù)據(jù);Web部件的增加為用戶瀏覽頁面提供了布局調(diào)整等多種個(gè)性化頁面功能;個(gè)性化用戶配置的增加為存儲單個(gè)用戶的配置數(shù)據(jù)提供了方便。
2 系統(tǒng)角色的劃分
根據(jù)需求分析中各個(gè)不同角色的不同權(quán)限,該系統(tǒng)共分為5種角色[2],每種角色分別享有不同的權(quán)限。這5種角色按照權(quán)限的大小從低到高依次為:
(1) 普通用戶。其權(quán)限為對“十二五”規(guī)劃的項(xiàng)目和年度計(jì)劃的項(xiàng)目有增、刪、改的權(quán)限;可查詢本部門的當(dāng)前項(xiàng)目和歷史項(xiàng)目。
(2) 部門主任。其權(quán)限為除對“十二五”規(guī)劃的項(xiàng)目和年度計(jì)劃的項(xiàng)目有增、刪、改的權(quán)限之外,還可將本部門的項(xiàng)目上報(bào)給主管領(lǐng)導(dǎo);可查詢本部門的當(dāng)前項(xiàng)目和歷史項(xiàng)目。
(3) 公司領(lǐng)導(dǎo)。作為主管領(lǐng)導(dǎo)的角色可以審批部門上報(bào)的項(xiàng)目,作為公司領(lǐng)導(dǎo)的角色可以審批計(jì)劃部最終討論通過的項(xiàng)目,對項(xiàng)目具有發(fā)回和批準(zhǔn)上報(bào)的權(quán)利。對項(xiàng)目的細(xì)節(jié)可以查看和修改;可查詢本公司的當(dāng)前項(xiàng)目和歷史項(xiàng)目。
(4) 計(jì)劃部 。其權(quán)限為對主管領(lǐng)導(dǎo)批準(zhǔn)的項(xiàng)目進(jìn)行討論,討論通過后上報(bào)公司領(lǐng)導(dǎo)。對公司領(lǐng)導(dǎo)批準(zhǔn)報(bào)送的項(xiàng)目進(jìn)行立項(xiàng)、上報(bào)省公司或國網(wǎng)公司,對沒有通過省公司審核的項(xiàng)目將其發(fā)回部門;可查詢本公司的當(dāng)前項(xiàng)目和歷史項(xiàng)目。
(5) 管理員。其權(quán)限為管理數(shù)據(jù)庫中的全部表信息;備份數(shù)據(jù)庫;添加用戶等。
3 數(shù)據(jù)庫設(shè)計(jì)
根據(jù)系統(tǒng)的需要,當(dāng)前數(shù)據(jù)庫中共設(shè)計(jì)了13個(gè)表,分別是技改項(xiàng)目表、技改工程完成明細(xì)表、項(xiàng)目資料表、項(xiàng)目進(jìn)度信息表、年度技改計(jì)劃表、項(xiàng)目里程碑計(jì)劃表、三年技改計(jì)劃表、項(xiàng)目驗(yàn)收表、等待處理事項(xiàng)表、竣工結(jié)項(xiàng)表、出資明細(xì)表、用戶表、部門表。圖1、圖2為技改系統(tǒng)中比較重要的兩個(gè)表的結(jié)構(gòu)。
4 系統(tǒng)設(shè)計(jì)思路
4.1 系統(tǒng)的功能模塊
系統(tǒng)從功能上可以劃分為多個(gè)功能模塊[3],分別是“十二五”規(guī)劃、年度計(jì)劃、里程碑計(jì)劃、系統(tǒng)管理。這幾個(gè)功能模塊針對不同的角色分別對應(yīng)不同的權(quán)限,如“十二五”規(guī)劃,部門普通員工只能添加和修改,部門主任除了增刪改還具有上報(bào)功能;主管領(lǐng)導(dǎo)具有查看、修改和批準(zhǔn)報(bào)送的功能;計(jì)劃部具有上報(bào)公司領(lǐng)導(dǎo)和對項(xiàng)目上報(bào)省公司、歸檔等功能。圖3為系統(tǒng)軟件總體結(jié)構(gòu)圖。
4.2 審批流程
審批流程大致為:發(fā)起人填寫項(xiàng)目基本信息→部門主任審核、上報(bào)→主管領(lǐng)導(dǎo)審核、批準(zhǔn)報(bào)送給計(jì)劃部→計(jì)劃部審核、上報(bào)給公司領(lǐng)導(dǎo)→公司領(lǐng)導(dǎo)批準(zhǔn)報(bào)送給計(jì)劃部→計(jì)劃部上報(bào)給省公司。任意一個(gè)審批環(huán)節(jié)沒有通過,都會(huì)將該項(xiàng)目發(fā)回申報(bào)人所在部門。流轉(zhuǎn)過程如圖4所示。
為了實(shí)現(xiàn)項(xiàng)目審批流轉(zhuǎn)的功能,本系統(tǒng)主要采用了狀態(tài)位來判斷一個(gè)項(xiàng)目目前的狀態(tài):
(1) 部門上報(bào)給主管領(lǐng)導(dǎo)的狀態(tài);
(2) 主管領(lǐng)導(dǎo)批準(zhǔn)報(bào)送給計(jì)劃部的狀態(tài);
(3) 計(jì)劃部上報(bào)給公司領(lǐng)導(dǎo)的狀態(tài);
(4) 公司領(lǐng)導(dǎo)批準(zhǔn)報(bào)送給計(jì)劃部的狀態(tài);
(5) 計(jì)劃部上報(bào)省公司的狀態(tài);
通過狀態(tài)位就可以準(zhǔn)確地定位項(xiàng)目目前的狀態(tài)。在頁面上只有當(dāng)前要審批該項(xiàng)目的人員可以看到該項(xiàng)目。如果某個(gè)項(xiàng)目的審批流程結(jié)束后,領(lǐng)導(dǎo)或者計(jì)劃部就可以在歷史項(xiàng)目中查詢該項(xiàng)目的基本信息。
4.3 程序難點(diǎn)分析
4.3.1 附件的添加和下載
附件的添加和下載功能實(shí)現(xiàn)起來相對復(fù)雜,其實(shí)現(xiàn)原理是:針對每個(gè)項(xiàng)目建立一個(gè)文件夾,存放該項(xiàng)目的附件,文件名為項(xiàng)目編號,每次查看該項(xiàng)目內(nèi)容時(shí)通過項(xiàng)目編號將該項(xiàng)目文件夾下的文件名依次列出[4],圖5為圖控項(xiàng)目中的附件,點(diǎn)擊“瀏覽”即可打開該附件進(jìn)行查看。
4.3.2 項(xiàng)目EXCEL報(bào)表的自動(dòng)生成
項(xiàng)目EXCEL報(bào)表的自動(dòng)生成功能主要通過一個(gè)導(dǎo)出函數(shù)來完成[5]。下面這段代碼實(shí)現(xiàn)的功能就是將數(shù)據(jù)庫中年度計(jì)劃表中的所有項(xiàng)目導(dǎo)出到一個(gè)EXCEL文件中。
private void Export(string FileType, string FileName)
{
System.Web.UI.WebControls.GridView dgExport = new GridView();
dgExport.DataSource=DataAccess.Select("SELECT 項(xiàng)目編號AS序號、項(xiàng)目名稱、存在問題AS現(xiàn)狀及存在的主要問題;主要內(nèi)容AS項(xiàng)目主要內(nèi)容、開始時(shí)間、結(jié)束時(shí)間、總投資、累計(jì)投資AS之前累計(jì)投資、合計(jì)、小計(jì)、省折舊、單位折舊、其他、上年結(jié)轉(zhuǎn)、備注 FROM AnualPlan");
dgExport.DataBind();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
dgExport.RenderControl(hw);
string a = tw.ToString();
a = a.Remove(a.IndexOf("<tr>"), a.IndexOf("</tr>") - a.IndexOf("<tr>") + 5);
a = a.Insert(a.IndexOf("<tr>"), " <tr><th colspan=′15′ rowspan=′1′ scope=′col′ > 年 部技 術(shù) 改 造 計(jì) 劃 項(xiàng) 目 表</th></tr><tr><th align=′right′ colspan=′15′ rowspan=′1′ scope=′col′>資金單位:萬元</th></tr>"
+ " <tr>"
+ " <th scope=′col′ rowspan=′3′>"
+ " 序號</th>"
+ " <th scope=′col′ rowspan=′3′>"
+ " 項(xiàng)目名稱</th>"
+ " <th scope=′col′ rowspan='3'>"
+ " 現(xiàn)狀及存在的主要問題</th>"
+ " <th scope=′col′ rowspan=′3′>"
+ " 項(xiàng)目主要內(nèi)容</th>"
+ " <th scope=′col′ rowspan=′3′>"
+ " 開始時(shí)間</th>"
+ " <th scope='col' rowspan=′3′>"
+ " 結(jié)束時(shí)間</th>"
+ " <th scope=′col′ style=′width:42px′ rowspan=′3′>"
+ " 總投資</th>"
+ " <th scope=′col′ rowspan=′3′>"
+ " 之前累計(jì)投資</th>"
+ " <th scope=′col′ colspan=′6′>"
+ " 本年度計(jì)劃</th>"
+ " <th scope=′col′ rowspan=′3′ style=′width: 31px′>"
+ " 備注</th>"
+ " </tr>"
+ " <tr>"
+ " <th scope=′col′ rowspan=′2′>"
+ "合計(jì)</th>"
+ " <th scope=′col′ style=′height: 22px′ colspan=′4′>"
+ " 本年度資金</th>"
+ " <th scope='col' rowspan='2'>"
+ " 上年結(jié)轉(zhuǎn)</th>"
+ " </tr>"
+ " <tr>"
+ " <th scope=′col′>小計(jì)</th><th scope=′col′>省折舊</th><th scope=′col′>單位折舊</th><th scope=′col′>其他</th>"
+ " </tr>");
Response.Write(a);
Response.End();
}
4.4 系統(tǒng)管理
系統(tǒng)管理主要負(fù)責(zé)對數(shù)據(jù)庫中所有表的管理,包括修改和刪除、增加用戶、備份和恢復(fù)數(shù)據(jù)庫等。
通過對技改工程管理平臺進(jìn)行分析和功能設(shè)計(jì),本人對公司項(xiàng)目管理方面的流程已經(jīng)比較熟悉,并將其功能和流程設(shè)計(jì)到技改工程管理平臺中。實(shí)現(xiàn)了需求分析的全部要求。到目前為止,項(xiàng)目I期的計(jì)劃已經(jīng)全部完成。平臺已經(jīng)在公司試運(yùn)行,并取得了良好的效果。
參考文獻(xiàn)
[1] 范振鈞.基于ASP.NET的三層結(jié)構(gòu)實(shí)現(xiàn)方法的研究[J]. 計(jì)算機(jī)科學(xué),2007,34(4):289-291.
[2] 王暢,王玲. 企業(yè)人事工資管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦學(xué)習(xí),2010,3(6):85-88.
[3] 郝剛,袁永剛,嚴(yán)治國. ASP.NET 2.0開發(fā)指南[M]. 北京: 人民郵電出版社, 2006.
[4] 李萬寶.ASP.NET技術(shù)詳解與應(yīng)用實(shí)例[M].北京:機(jī)械工業(yè)出版社,2005.
[5] 孟憲會(huì),張慧妍. ASP.NET 2.0 應(yīng)用開發(fā)技術(shù)[M].北京:人民郵電出版社,2006.