摘要:本文分析了青海科技项目管理系统的模式,利用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.