摘要:本文分析了青海科技項目管理系統的模式,利用SQLServer和ASP技術設計并實現了一個基于Http協議的網上項目申報系統,重點闡述了系統的結構特點和關鍵技術。
關鍵詞:B/S架構;科技項目;管理系統
1引言
傳統的項目申報流程是項目申報者手工填寫項目申請書,然后送交管理部門,再由管理部門將數據錄入計算機。由于申請者與管理部門往往不在同一個地方,這種模式不可避免地會帶來人力資源的浪費。后來青海科技項目經過改進使用了C/S模式系統進行申報,但C/S模式只能在局域網環境下使用,所以沒有從根本上解決人力資源浪費的問題,因此開發一套基于B/S模式的項目申報系統十分必要。
2模式的比較與選擇
2.1B/S模式
B/S模式具有一些優點,比如用戶無須安裝即可使用等,但對于網上項目申報系統來說也有其缺點。
(1)B/S模式的安全性太差。用戶所有輸入的信息在互聯網上都以明文的形式傳輸,容易造成信息泄露等安全問題。
(2)B/S模式必須在線工作。也就是說,申報者必須在能上網的計算機上才能夠填寫申報數據,不支持脫機工作方式,而實際情況是申報者往往是脫機填寫數據,只有在上報的時候才聯網傳送數據。
2.2傳統的C/S模式
C/S模式在局域網環境下具有一些優勢,比如安全問題等,但是對于項目申報系統也有一些無法彌補的缺點。
(1)C/S模式只能在局域網環境下使用,人力資源浪費太大。
(2)C/S模式下客戶端運行時直接對數據庫進行操作,當客戶端較多時會影響系統的運行效率,因此只適合小規模用戶。經分析可以得出結論,不管采用傳統的C/S模式還是B/S模式都無法滿足網上項目申報系統的需求。但是B/S模式下的缺點可通過技術手段解決。因此本文設計了基于B/S模式的、符合青海科技項目申報流程的管理系統。
3系統設計與實現
3.1總體設計
結合青海省科技項目申報的具體情況,對其進行分析,得出以下幾個設計要素。
3.1.1實施目標
(1)信息共享、開放透明。
(2)提供“多級”科技項目管理模式。
(3)用各種文檔記錄科技項目管理過程中的全部活動。
(4)實現領導的輔助決策功能。
3.1.2主要功能主要功能有項目申報、項目評審、審批流程、合同管理、進度跟蹤、經費管理、項目驗收、后評估以及專家管理、用戶管理、檔案管理等。
3.1.3主要技術難點主要技術難點有數據安全、在線Office編輯、多用戶操作、下載打印文檔為不可編輯并帶安全條碼的PDF格式文件等。
根據以上要素設計出系統結構圖如下:
3.2主要功能模塊的設計與實現
3.2.1系統數據模塊數據主要分為單位基本信息、項目基礎信息、項目詳細內容(Word版)等。其中單位基本信息與項目基礎信息的數據保存比較簡單,即通過Web存儲方法由申報人員填寫保存到SQLServer數據庫中,而項目詳細內容是通過在線版的Word將文檔保存到服務器。其優點有:
(1)對應多個科技項目無需開發多套模板,減少開發用時。
(2)數據格式統一,實現了數據編輯的簡便、準確。
(3)可防止SQL惡意攻擊,即便是數據庫遭受攻擊,項目內容也不會丟失更不會被竊取。
(4)可在無網絡條件下在單機的Word中編輯,有網絡時只需復制粘貼到在線版的Word中即可。
Word數據上報的部分代碼如下:
function saveFileToUrl () {
var fName = trim(document.all ("filename") .value);
var filetitle = trim(document.all ("filetitle") .value);
if(filetitle.length == 0) { alert (“請輸入標題!”);
document.all ("filetitle") .focus(); return false; }
var result, filedot;
if(IsFileOpened) {
switch(TANGER_OCX_OBJ.doctype) {
case 1:
fileType = "Word.Document";
filedot = ".doc";
break;
case 2:
fileType = "Excel.Sheet";
filedot = ".xls";
break;
case 3:
fileType = "PowerPoint.Show";
filedot = ".ppt";
break;
default:
fileType = "unkownfiletype";
filedot = ".doc";
}
var nNamne ;
if (fName == "") { var testDate = new Date(); var
fName = testDate.format ("YYYY- MM- dd hh.mm.ss") +
filedot; nNamne=fName; }
retHTML = TANGER_OCX_OBJ.saveToURL(savecode,
"EDITFILE", <input type=file id=upLoadFile 中的 id
"savet=1&fileT=" + fileType
setFileSaved(true);
opener.window.location.href = opener.window.location.
href;
alert (“保存成功”);
if(window.opener) {window.opener.location=window.
opener.location+nNamne};
}
else {
alert (“不能保存,文檔為空!”);
}
}
3.2.2 項目審批及管理模塊 該模塊包括縣 / 區、州/ 市、項目受理中心、專家模塊等。審核人員通過用戶名、密碼進行身份識別進入系統后,由系統自動搜索定位到管理權限內的模塊及數據。審批簡單、易操作,界面如下:
3.2.3 項目查詢統計管理模塊 該模塊主要是為項目管理者開發的,同時也便于申報單位對項目進行管理。用戶進入系統并填寫項目的相關信息后,可通過輸入系統所設置的關鍵信息來查詢該項目的基本信息,通過基本的 SELECT 語句實現相關的查詢。界面如下圖:
3.2.4 下載打印模塊 該模塊可將數據庫信息轉換為不可修改的 PDF 文檔,同時加入了具有唯一性的識別條形碼,確保存檔的紙制數據真實可靠。
轉 PDF 部分代碼如下:
public void WordConvert (string _docFilePath, stringpdfSavePath)
{
string fileStr = _docFilePath;
string filename = System.IO.Path.GetFileName
(fileStr );
string extension = System.IO.Path.GetExtension
(fileStr );
string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension (fileStr );
string docFilePath = _docFilePath;
string _psFilePath = ReplaceFileSuffix (_docFilePath,"ps");
string _pdfFilePath = ReplaceFileSuffix ( _doc FilePath, "pdf");
string _pdfFilePath = pdfSavePath;
string _strJobOptions = "";
string logFilePath = _pdfFilePath.Substring (0,_pdfFilePath.Length - 3) + "log";
Microsoft.Office.Interop.Word.ApplicationClass word =
newMicrosoft.Office.Interop.Word.ApplicationClass ();
Type wordType = word.GetType ();
Microsoft.Office.Interop.Word.Documents docs =word.Documents;
Type docsType = docs.GetType ();
object objDocName = docFilePath;
Microsoft.Office.Interop.Word.Document doc =
( Microsoft.Office.Interop.Word.Document ) docsType.In vokeMember ( "Open", System.Reflection.BindingFlags.
InvokeMethod, null, docs, new Object[] {objDocName, true,
true } );
try
{
Type docType = doc.GetType ();
object printFileName = _psFilePath;
docType.InvokeMember ("PrintOut", System.
Reflection.BindingFlags.InvokeMethod, null, doc, new ob ject 〔〕 { false, false, Microsoft.Office.Interop.Word.Wd PrintOutRange.wdPrintAllDocument, printFileName } );
ACRODISTXLib.PdfDistillerClass pdf = new
ACRODISTXLib.PdfDistillerClass ();
string psFilePath = _psFilePath;
string pdfFilePath = _pdfFilePath;
string strJobOptions = _strJobOptions;
pdf.FileToPDF ( psFilePath, pdfFilePath,strJobOptions);
}
catch (Exception ex)
{
this.DoError ( "Messageex:" + ex.Message + "StackTrace:" + ex.StackTrace);
}
finally
{
if (doc != null )
{
((_Document) doc) .Close(ref doNotSaveChanges,ref Missing, ref Missing);
doc = null;
}
if (word != null )
{
((_Application) word) .Quit (ref Missing, refMissing, ref Missing);
word = null;
}
}
4 結論
本設計以 ASP、C#、.NET 為主要工具,結合青海科技項目申報的實際情況,針對傳統 C/S 結構科技項目管理系統效率低、代價高、可移植性差且管理難度大的缺陷使用 ASP 數據存取技術實現對 SQL 數據庫的操作,實現了基于 B/S 架構的青海科技項目申報系統的研發。該系統基本實現了項目申報、項目統計、數據管理、報表生成及輸出 PDF 等主要功能,實現了青海省科技項目申報的信息化管理,大大提高了科技項目管理、申報等工作環節的運行效率。(本文2011年發表于《青海科技》)
參考文獻:
[1] 龐杰. 基于 B/S 體系結構的 web 數據庫技術及應用[D]. 北京:石油大學, 2001.
[2] 陳永強,謝維成,李茜. ASP 數據庫開發經典實例精解[M].北京:機械工業出版社, 2006.
[3] 微軟公司. ASP. NET 安全應用程序開發[M]. 詹文軍,王新程,
譯.北京:清華大學出版社, 2003.