摘 要: 設計并實現了一個基于ASP.NET2.0的技改工程管理平臺系統。系統采用ASP.NET2.0作為開發工具,采用了Access數據量,并對系統的角色劃分、數據庫的結構、系統的功能模塊劃分、審批流程等作了一系列闡述。
關鍵詞: ASP.NET2.0; 數據庫設計; 技改工程
隨著企業的規模擴大,申報項目的不斷增多以及公司內部信息化水平的提高,傳統的科技項目、技改項目的申報方式已經無法滿足目前信息化的需要。針對這種情形,運用信息化的手段,設計一個適用于公司內部的技改工程管理平臺,可以改善當前申報項目效率低下的狀況,有利于項目集中管理、歷史查閱,更高效地協助計劃部做好相應的項目管理工作。
本文設計和開發的技改工程管理平臺是以B/S結構為基礎,運用ASP.NET2.0技術和Access數據庫,充分利用VS2005提供的各種功能控件。實現項目審批、流轉、發回、導出等功能。以最少的人力、物力實現最大的功能。
1 ASP.NET2.0介紹
ASP.NET2.0是建立在微軟新一代.NET平臺架構上,利用普通語言運行時(Common Language Runtime)在服務器后端為用戶提供建立強大的企業級Web應用服務的編程框架[1]。ASP.NET2.0主要包括WebForm和WebService兩種編程模型。前者為用戶提供建立功能強大、外觀豐富的基于表單的可編程Web頁面。后者通過對HTTP、HTML、SOAP、WSDL等Internet標準的支持提供在異構網絡環境下獲取遠程服務,連接遠程設備,交互遠程應用的編程界面。
ASP.NET2.0的優點除了比傳統 ASP 的運行速度更快、具有服務器控件、采用“code-behind”方式編寫代碼使得代碼更易于編寫外,還支持應用程序的實時更新、自動檢測變化并根據需要動態編譯文件。它不但使執行效率大幅度提高,對代碼的控制能力也很強,并且支持Web Controls功能和多種語言,提高安全性、易管理性和高擴展性。
與ASP.NET 1.x相比, ASP.NET2.0在提高開發效率、簡化管理、提高性能等方面有了進一步的增強。主要表現在:更豐富的服務器控件,增加了40多個控件類;增加了主題和母版頁,使得網站更容易建立統一的風格和布局;成員資格和角色管理實現了模塊化和自動化;增加的數據控件能更加方便地連接數據源和綁定數據;Web部件的增加為用戶瀏覽頁面提供了布局調整等多種個性化頁面功能;個性化用戶配置的增加為存儲單個用戶的配置數據提供了方便。
2 系統角色的劃分
根據需求分析中各個不同角色的不同權限,該系統共分為5種角色[2],每種角色分別享有不同的權限。這5種角色按照權限的大小從低到高依次為:
(1) 普通用戶。其權限為對“十二五”規劃的項目和年度計劃的項目有增、刪、改的權限;可查詢本部門的當前項目和歷史項目。
(2) 部門主任。其權限為除對“十二五”規劃的項目和年度計劃的項目有增、刪、改的權限之外,還可將本部門的項目上報給主管領導;可查詢本部門的當前項目和歷史項目。
(3) 公司領導。作為主管領導的角色可以審批部門上報的項目,作為公司領導的角色可以審批計劃部最終討論通過的項目,對項目具有發回和批準上報的權利。對項目的細節可以查看和修改;可查詢本公司的當前項目和歷史項目。
(4) 計劃部 。其權限為對主管領導批準的項目進行討論,討論通過后上報公司領導。對公司領導批準報送的項目進行立項、上報省公司或國網公司,對沒有通過省公司審核的項目將其發回部門;可查詢本公司的當前項目和歷史項目。
(5) 管理員。其權限為管理數據庫中的全部表信息;備份數據庫;添加用戶等。
3 數據庫設計
根據系統的需要,當前數據庫中共設計了13個表,分別是技改項目表、技改工程完成明細表、項目資料表、項目進度信息表、年度技改計劃表、項目里程碑計劃表、三年技改計劃表、項目驗收表、等待處理事項表、竣工結項表、出資明細表、用戶表、部門表。圖1、圖2為技改系統中比較重要的兩個表的結構。


4 系統設計思路
4.1 系統的功能模塊
系統從功能上可以劃分為多個功能模塊[3],分別是“十二五”規劃、年度計劃、里程碑計劃、系統管理。這幾個功能模塊針對不同的角色分別對應不同的權限,如“十二五”規劃,部門普通員工只能添加和修改,部門主任除了增刪改還具有上報功能;主管領導具有查看、修改和批準報送的功能;計劃部具有上報公司領導和對項目上報省公司、歸檔等功能。圖3為系統軟件總體結構圖。

4.2 審批流程
審批流程大致為:發起人填寫項目基本信息→部門主任審核、上報→主管領導審核、批準報送給計劃部→計劃部審核、上報給公司領導→公司領導批準報送給計劃部→計劃部上報給省公司。任意一個審批環節沒有通過,都會將該項目發回申報人所在部門。流轉過程如圖4所示。

為了實現項目審批流轉的功能,本系統主要采用了狀態位來判斷一個項目目前的狀態:
(1) 部門上報給主管領導的狀態;
(2) 主管領導批準報送給計劃部的狀態;
(3) 計劃部上報給公司領導的狀態;
(4) 公司領導批準報送給計劃部的狀態;
(5) 計劃部上報省公司的狀態;
通過狀態位就可以準確地定位項目目前的狀態。在頁面上只有當前要審批該項目的人員可以看到該項目。如果某個項目的審批流程結束后,領導或者計劃部就可以在歷史項目中查詢該項目的基本信息。
4.3 程序難點分析
4.3.1 附件的添加和下載
附件的添加和下載功能實現起來相對復雜,其實現原理是:針對每個項目建立一個文件夾,存放該項目的附件,文件名為項目編號,每次查看該項目內容時通過項目編號將該項目文件夾下的文件名依次列出[4],圖5為圖控項目中的附件,點擊“瀏覽”即可打開該附件進行查看。

4.3.2 項目EXCEL報表的自動生成
項目EXCEL報表的自動生成功能主要通過一個導出函數來完成[5]。下面這段代碼實現的功能就是將數據庫中年度計劃表中的所有項目導出到一個EXCEL文件中。
private void Export(string FileType, string FileName)
{
System.Web.UI.WebControls.GridView dgExport = new GridView();
dgExport.DataSource=DataAccess.Select("SELECT 項目編號AS序號、項目名稱、存在問題AS現狀及存在的主要問題;主要內容AS項目主要內容、開始時間、結束時間、總投資、累計投資AS之前累計投資、合計、小計、省折舊、單位折舊、其他、上年結轉、備注 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′ > 年 部技 術 改 造 計 劃 項 目 表</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′>"
+ " 項目名稱</th>"
+ " <th scope=′col′ rowspan='3'>"
+ " 現狀及存在的主要問題</th>"
+ " <th scope=′col′ rowspan=′3′>"
+ " 項目主要內容</th>"
+ " <th scope=′col′ rowspan=′3′>"
+ " 開始時間</th>"
+ " <th scope='col' rowspan=′3′>"
+ " 結束時間</th>"
+ " <th scope=′col′ style=′width:42px′ rowspan=′3′>"
+ " 總投資</th>"
+ " <th scope=′col′ rowspan=′3′>"
+ " 之前累計投資</th>"
+ " <th scope=′col′ colspan=′6′>"
+ " 本年度計劃</th>"
+ " <th scope=′col′ rowspan=′3′ style=′width: 31px′>"
+ " 備注</th>"
+ " </tr>"
+ " <tr>"
+ " <th scope=′col′ rowspan=′2′>"
+ "合計</th>"
+ " <th scope=′col′ style=′height: 22px′ colspan=′4′>"
+ " 本年度資金</th>"
+ " <th scope='col' rowspan='2'>"
+ " 上年結轉</th>"
+ " </tr>"
+ " <tr>"
+ " <th scope=′col′>小計</th><th scope=′col′>省折舊</th><th scope=′col′>單位折舊</th><th scope=′col′>其他</th>"
+ " </tr>");
Response.Write(a);
Response.End();
}
4.4 系統管理
系統管理主要負責對數據庫中所有表的管理,包括修改和刪除、增加用戶、備份和恢復數據庫等。
通過對技改工程管理平臺進行分析和功能設計,本人對公司項目管理方面的流程已經比較熟悉,并將其功能和流程設計到技改工程管理平臺中。實現了需求分析的全部要求。到目前為止,項目I期的計劃已經全部完成。平臺已經在公司試運行,并取得了良好的效果。
參考文獻
[1] 范振鈞.基于ASP.NET的三層結構實現方法的研究[J]. 計算機科學,2007,34(4):289-291.
[2] 王暢,王玲. 企業人事工資管理系統的設計與實現[J].電腦學習,2010,3(6):85-88.
[3] 郝剛,袁永剛,嚴治國. ASP.NET 2.0開發指南[M]. 北京: 人民郵電出版社, 2006.
[4] 李萬寶.ASP.NET技術詳解與應用實例[M].北京:機械工業出版社,2005.
[5] 孟憲會,張慧妍. ASP.NET 2.0 應用開發技術[M].北京:人民郵電出版社,2006.
