摘要:通過對X市局科研項目管理工作需求的分析,系統采用B/S結構,以ASP.NET MVC作為系統的基本架構模式,在Visual Studio 2010開發平臺下使用C#語言開發,結合.NET Framework 4.0框架、SQL Sever數據庫、LINQ及Office等WEB技術來設計一套完整的科研項目網上管理解決方案.實現了對科研項目的申報、開題、預審、驗收、報獎及統計等工作的網上管理.該系統已應用于X市局的科研項目管理工作,實際應用證明該系統界面友好,運行安全且穩定.
關鍵詞: ASP .NET; MVC;數據訪問;LINQ
隨著科技的日益發展,科研活動和科研能力已成為現代化進步綜合實力的重要指標,進而使X市局的項目申報工作不斷龐大和加重.目前項目管理及相關標準(現有標準達到幾千條)管理工作主要依靠手工或單機版的軟件(如:Office等)操作,存檔的方式多以紙質材料為主.因此為數據采集、查詢和統計方面帶來了很多不便,工作效率大大降低.
本文采用ASP .NET MVC架構設計科研項目申報系統.一是因為基于ASP .NET MVC架構開發的Web應用技術比較成熟,且已應用到眾多領域,如人事管理系統、CMS、e-ERP系統、網上珠寶銷售系統[1]等.二是因為,相比傳統意義上的Web開發框架,MVC架構將數據與視圖分離,這樣大大提高了系統的安全性,①收稿時間:2014-04-01;收到修改稿時間:2014-05-23減少了代碼的重復編譯,可維護性得到保證[2].
1、ASP .NET MVC架構
基于MVC模式的ASP .NET Web應用程序將系統劃分為模型(Models)、視圖(Views)和控制器(Controllers ),實現系統松耦合,防止服務器端與客戶端數據的直接交互,提高系統安全性[3,4].ASP.NETMVC開發遵循先定義Model,再規劃Controller,最后再開發View視圖頁面.本系統應用MVC架構的基本結構圖如圖1所示:
圖1科研項目管理系統MVC架構
模型負責與數據庫溝通,實現從數據庫中讀取和寫入數據、保存模型狀態、數據格式驗證等.依據對需求的分析,在Models文件夾下針對項目信息設計了以下七個數據模型實體(Entities):項目類別(ProjectSort)、項目信息(ProjectDetail)、完成單位ProjectCompleteCompany)、項目合同(ProjectPatent)、項目成員(ProjectNumber)和技術報告(ProjectTechbook).系統在數據模型定義時采用了Code First開發模式,即通過使用說明性屬性使得模型代表的意義清楚明了.如使用DisplayName屬性用于在view界面上顯示該屬性值,調用的程序為:<%:Html.LabelFor(model => model.Name) %>.
控制器是ASP .NET MVC的核心,它決定系統的運作流程,負責從Model取得數據,并決定顯示哪個View(正常或異常)給瀏覽器,因此其有效地實現了視圖與業務邏輯的分離[5].本系統以管理單位用戶瀏覽項目功能為例說明,其包括項目類別列表、項目列表和項目明細三個頁面組成,這三個頁面的功能都放在ProjectviewController控制器里. ProjectviewController繼承自Controller,其有三個Action: ProjectSort(項目類別)、ProjectList(項目列表)和ProjectDetail(項目詳細信息).
視圖是用于呈現數據的,也就是用戶看到并與之交互的UI.在本系統中,項目申報流程中的每個階段(如計劃、開題、驗收等)界面中顯示了該項目數據庫中相關數據表的詳細信息,也就是對應的項目表信息.當然,系統中還有消息列表、用戶(申報單位和評審專家)列表和標準列表等其他界面,也是通過相關Controller在Model中取得數據或決定數據送到相應的Action中.如瀏覽項目功能,因為其在ProjectviewController控制器中有ProjectSort、ProjectList和ProjectDetail三個Action,且都需要對應View頁面,所以需要創建不同的“強類型視圖”.如項目類別需要輸出所有項目類別信息,因此必須以ProjectSort數據模型為主的頁面,利用VS2010自動生成視圖屬性來完成創建,其他頁面也用同樣方法.
2、系統構成
2.1系統功能結構
結合對該區域實際科研項目管理流程的整體分析,在系統設計過程中把科研項目評價體系分為系統登錄、待辦事項提醒、項目管理、消息管理、用戶管理和標準管理六大模塊,有些模塊下有子模塊,如圖2所示.
圖2科研項目管理系統功能模塊圖
下面將對各模塊的功能做簡要說明:
1)系統登錄:完成對申報單位、管理機構和評審專家三類用戶的身份認證,系統會根據用戶類別分配權限及職能,從而提供個性化的服務.
2)待辦事項提醒:該模塊主要功能是提醒用戶等待處理的相關事項,主要包括消息提醒、項目階段提醒、項目預到期提醒、合同提醒等,為用戶操作提供快捷服務.
3)項目管理:該模塊主要包括六個申報流程和一個統計功能,六個流程是項目申報、項目開題、合同提交、項目預審、項目驗收和項目報獎,這六個流程嚴格按順序執行,缺一不可.
4)消息管理:該模塊是管理機構用于向其他兩類用戶(申報單位或評審專家)發送消息信息而研發的,其發送對象可以是全體用戶,也可以是個別用戶,發送的內容可以是文本信息或者附件.
5)標準體系:該模塊是相對獨立的模塊,是為管理標準體系(包括國家標準和地方標準)而開發的,對標準的操作包括添加、刪除、查看、下載、搜索等.
6)用戶管理:分為“申報單位”、“評審專家”和“個人”三部分信息管理.其中申報單位信息和評審專家信息管理主要用于添加、修改、刪除用戶信息和密碼重置.個人信息管理主要用于當前用戶修改密碼使用.系統的用例圖如圖3所示.
圖3系統用例圖
3、數據訪問
3.1系統數據庫設計
系統應用SQL Sever 2008作為數據庫引擎,內部主要數據由消息信息、標準信息、用戶信息、專家意見、項目信息等組成,項目相關數據表關系圖如圖4所示.消息信息(message_detail表)主要包括系統提示、待辦事項、管理單位或系統發送的消息;標準信息存儲了國家標準和地方行業標準兩類信息,每類信息主要由三個表組成:ss_detail(標準詳細信息)、ss_group(標準所屬大類)、ss_sorts(標準所屬子類).
圖4系統項目相關數據表關系圖
用戶信息由三類用戶表組成: department_user(申報單位)、expert_user(評審專家)和management_user(管理機構);項目相關信息由6個表組成,分別是:project_patent(項目專利)、project_detail(項目詳細信息)、project_person(項目完成人)、project_complete_company(項目完成單位)、project_sort (項目類別)、project_techbook(項目技術報告).
3.2數據庫連接
與SQL Sever 2008連接的命令寫在Web.conf i g文件中,部分代碼如下:
<connectionStrings>
<add name="ApplicationServices" connectionString ="data source=.\SQLEXPRESS;Integrated Security= SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;UserInstance=true"providerName="System.Data.SqlClient"/> ......
<add name="Ip" connectionString="http://X.X.X.X" />
</connectionStrings>
程序通過訪問Web.config文件中<connectionStrings >配置節點中的信息建立與數據庫的連接.其中name是連接名稱, connectionString是關鍵字,里面有Data Source(數據庫名)、AttachDbFilename(鏈接文件)、User Instance(開啟用戶驗證)和System.Data.SqlClient(調用系統dll文件).
3.3LINQ
LINQ(Language Integrated Query)是.NET語言集成查詢技術,其已應用到很多信息類管理系統,如在線考試系統、實驗室網上預約系統等[6,7].其中Linq tosql(DLINQ)用于以對象形式管理關系數據,并提供了豐富的查詢功能,它將數據結構(表結構)看作是類,而將表里的數據看作是變量,描述為Data-object(variable),將數據庫的信息配置放到XML中(稱為ExternlMapping)或property中[8].
下面程序段是管理單位用戶查詢項目信息過程中使用的GetProjects查詢語句.
[Authorize (Role=”Management”)] //利用Authorize屬性通知控制器操作,只有Management用戶才可以執行這個操作方法
publicActionResult ProjectDetail( int projectID , stringprojectSort)
{Project data =from a in ProjectReview. Project_Detailorderby a. AcceptanceState descending//以項目驗收狀態進行降序排序
where a.ProjectID==projected
&& a.ProjectSort==projectSort
select a;//使用LINQ查詢在數據表Project_Detail中滿足指定條件ProjectID和ProjectSort的數據,
ProjectDetail model = ProjectDetail.Create(data) ;//創建傳遞對象模型
ViewData [“PageTitle”] = “View Project Details”;//設置頁面Title為View Project Details
returnView( model) ; }//返回視圖
4、系統界面實例
系統的前臺頁面設計嚴格按照用戶原則、信息最小量原則、幫助和提示原則等設計,其中運用了HTML、CSS相關技術設計靜態頁面, JavaScript腳本語言、Ajax及JQuery技術等設計動態效果,在必要時給予用戶幫助提示.由于系統的界面眾多,在此只列出幾個主要界面的結構圖,如圖5所示.
圖5系統主要的界面結構圖
本系統通過SQL Sever 2008+數據庫和IIS 6.0+發布,系統的部分實例如圖6~8所示.
圖6系統登錄頁面面
圖7填寫項目開題報告頁面
圖8評審專家信息管理頁面
5、結語
本系統為科研工作人員在項目管理、標準體系管理及相關用戶信息管理上提供了網絡管理途徑,實現了無紙化辦公和無區域化限制,大大減輕了科研工作人員工作量和費用支出.通過實際應用證明,本系統功能滿足用戶需求,頁面響應速度快,運行穩定.
參考文獻
1李志,賈克斌,李真真,等.基于.NET MVC架構的網上珠寶銷售系統的設計與實現.計算機應用與軟件,2013,30(3):187-189.
2 Masound FA. ASP .NET and JSP frameworks in model view controller implementation. Information and Communication Technologies, 2006,(2): 3593-3598.
3 Galloway J, Haack H, Wilson B, et al.孫遠帥譯.ASP .NETMVC 3高級編程.北京:清華大學出版社,2012.
4 Lin YL, Hu JP. Design and implementation of the internet service platform for rural house building technique criteria and management based on .NET MVC. Applied Mechanics and Materials. 2011, 58-60: 1727-1731.
5周文紅.基于ASP .NET MVC框架的Web應用開發.計算機與現代化,2013,(10):197-199.
6吳伶琳.基于LINQ技術的小區物業管理系統.計算機系統應用,2013,22(11):81-85.
7王小花,李紅霞,袁媛.基于LINQ to SQL的實驗室網上預約系統的設計與實現.計算機與現代化,2012,(11):81-84.
8李洪進.LINQ to SQL技術在Web開發中的應用.計算機與信息技術,2012:20-22.
(本文于2014年發表在《計算機系統應用》 作者:天津城建大學 計算機與信息工程學院 林永良,胡建平;天津銳敏科技發展有限責任公司 吳樹林)