文档管理系统的设计与实现.docx

上传人:b****1 文档编号:2915869 上传时间:2023-05-05 格式:DOCX 页数:47 大小:374.31KB
下载 相关 举报
文档管理系统的设计与实现.docx_第1页
第1页 / 共47页
文档管理系统的设计与实现.docx_第2页
第2页 / 共47页
文档管理系统的设计与实现.docx_第3页
第3页 / 共47页
文档管理系统的设计与实现.docx_第4页
第4页 / 共47页
文档管理系统的设计与实现.docx_第5页
第5页 / 共47页
文档管理系统的设计与实现.docx_第6页
第6页 / 共47页
文档管理系统的设计与实现.docx_第7页
第7页 / 共47页
文档管理系统的设计与实现.docx_第8页
第8页 / 共47页
文档管理系统的设计与实现.docx_第9页
第9页 / 共47页
文档管理系统的设计与实现.docx_第10页
第10页 / 共47页
文档管理系统的设计与实现.docx_第11页
第11页 / 共47页
文档管理系统的设计与实现.docx_第12页
第12页 / 共47页
文档管理系统的设计与实现.docx_第13页
第13页 / 共47页
文档管理系统的设计与实现.docx_第14页
第14页 / 共47页
文档管理系统的设计与实现.docx_第15页
第15页 / 共47页
文档管理系统的设计与实现.docx_第16页
第16页 / 共47页
文档管理系统的设计与实现.docx_第17页
第17页 / 共47页
文档管理系统的设计与实现.docx_第18页
第18页 / 共47页
文档管理系统的设计与实现.docx_第19页
第19页 / 共47页
文档管理系统的设计与实现.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

文档管理系统的设计与实现.docx

《文档管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《文档管理系统的设计与实现.docx(47页珍藏版)》请在冰点文库上搜索。

文档管理系统的设计与实现.docx

文档管理系统的设计与实现

浅谈文档管理系统的设计与实现

摘要

文档管理实际就是文件的制作、修改、传递、签定、保存、销毁、存档等一系统操作。

文档管理是企业经营管理中不可缺少的组成部分。

通过文档信息管理系统的使用,实现文档管理自动化管理的目标,为企业提供了安全、可靠、开放、高效的文档管理功能,不仅方便了文档管理的日常操作,而且必免了手工管理中的一系列错误的发生,提高了企业的办公效率和企业文件管理的综合水平。

目前,大多数文档管理系统在实现了企业各部门日常文件管理的基本功能之外,还增设了很多的新功能用以满足文档管理电子化、标准化的新要求;功能强大的档案查询模块,大大方便了管理者日常文档的查找工作,解决传统管理中的查找困难、查找耗时等问题。

使用现代化的文档管理系统满足了企业“无纸化”办公的求要,实现通过计算机对文档管理全程跟踪的目标。

【关键词】文档管理系统、无纸化

浅谈文档管理系统的设计与实现

引言

文档管理系统的全面应用,克服了企业传统文档管理方法的缺点,提高管理部门的日常办公效率,增强了企业内部协同合作的能力;文档管理系统的应用,方便管理者有效管理文档的同时,大大提高了文档查找效率,进而提高了企业的综合效率。

本设计逐一介绍开发本系统系统的步骤:

系统分析、系统设计、系统实现、系统维护。

在系统分析中先后用数据流图、数据字典、系统的功能结构图分析了系统所需的各种数据。

在系统的设计中,详细的展现了系统的各个功能模块。

所需的数据库表及表字段。

菜单的设计等。

在系统的实现中,给出了实现表单中相应的功能控件的事件及代码。

以及菜单实现的方法。

文章的最后则给出了本系统的主要功能源代码。

1系统需求分析

文档管理系统是一个众多企业、事业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以文档管理系统应该能够为用户提供充足的信息和快捷的查询手段。

但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:

效率低、保密性差,另外时间稍长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

在信息时代,企业、政府、学校、医院等各种类型的组织的知识都是以电子文件的形式存在的。

这些文件的范围广泛、格式多样,是一个组织极其重要的资产。

它们包括文件、图形、影像、网页、音频、视频、产品数据、研发文件、数据库表格、应用程序代码、合约等结构化或非结构化数据。

根据JupiterResearch的报告,组织所产生的文件量每6~8个月便以双倍或更快的速率急增。

大量无序的文件给组织的成员及硬件均造成了沉重的压力,严重影响了组织的有效运行。

而使用计算机对文书档案信息进行管理,具有手工管理所无法比拟的优点。

例如:

检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高文书档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。

因此,开发一套这样的管理软件成为很有必要的事情。

根据市场的需求,要求系统具有以下功能:

1.处理大量的复合文档型的数据信息。

2.通过系统查看文档内容。

3.通过系统可以完成对文档一系列日常操作。

4.保证系统的安全性、可靠性。

2总体设计

2.1项目规划

文档管理系统由基本信息、文档管理、系统设置等几个功能模块组成,规划系统功能模块如下:

基本信息:

基本信息包括单位档案、文档类别2部分。

文档管理:

文档管理包括添加文档、修改文档、删除文档、文档浏览4部分。

系统设置:

系统设置包括用户管理、口令修改、日志管理、退出系统4部分。

2.2系统功能结构

文档系统的功能结构如图1所示。

图1文档管理功能图

2.3设计目标

本系统是根据中小企业的实际需求而开发的,完全能够实现企业对制度文档的自动化管理,通过本系统可以达到以下目标:

系统运行稳定,安全可靠。

界面设计美观,人机交互界面友好。

信息查询灵活、方便、快捷、准确,数据存储安全可靠。

操作员可以随时修改自己的口令。

对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。

数据保密性强,为每个用户设置相应的权限级别。

3系统设计

3.1开发及运行环境

系统开发平台:

VisualC++6.0

数据库管理系统软件:

SQLServer2000

运行平台:

Windowsxp/Windows2000

3.2数据库设计

1.数据库概要说明

数据库WenDGL中包括单位表、类别表、文档表、日志表、用户表5个数据表。

图2所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。

可以清晰地反应数据库信息。

图2数据库概要说明

2.主要数据表的结构

数据库中的数据表请参见附录B。

4主要功能模块设计

4.1建立工程框架

在VisualC++中建立文档管理系统的基本框架,步骤如下:

(1)单击菜单“File-->New”命令,打开“New”对话框,单击“Projects”选项卡,选择“MFCAppWizard(exe)”,输入工程名,并设置路径,如图3。

图3“New”对话框

(2)单击“OK”按钮,弹出“MFCAppWizard-Step1”对话框,如图4。

图4“MFCAppWizard-Step1”对话框

(3)选择“Dialogbase”选项,单击“Next”按钮,在弹出的“MFCAppWizard-Step2of4”对话框中,输入对话框标题,如图5所示。

图5“MFCAppWizard-Step2of4”对话框

(4)单击“Next”按钮,在接下来弹出的对话框中默认原有的选择项,最后设置好的对话框的属性如图6所示,单击“OK”按钮,新建工程成功。

图6工程属性

4.2封装数据库

1.添加ADO连接类

本实例采用ADO来连接SQLServer数据库,在使用ADO技术时,需要导入一个ADO动态链接库msado15.dll,该动态库位于系统盘下的“ProgramFiles\CommonFiles\System\ado\”目录下。

例如,如果您的系统盘为C盘,则该文件位于“C:

\ProgramFiles\CommonFiles\System\ado\”目录。

在VisualC++中,需要使用预处理命令#import,将动态库导入到系统中,代码如下。

#import

"E:

\Program

Files\Common

Files\System\ado\msado15.dll"

no_namespacerename("EOF","adoEOF")rename("BOF","adoBOF")

添加一个用来连接的ADO的类。

在系统菜单中选择“Insert-->NewClass”选项,打开“NewClass”窗口,选择“GenericClass”,然后输入类名,即完成了类的添加。

代码如下。

创建ADO连接类。

classADOConn

{

public:

//添加一个指向Connection对象的指针

_ConnectionPtrm_pConnection;

//添加一个指向Recordset对象的指针

_RecordsetPtrm_pRecordset;

public:

ADOConn();

virtual~ADOConn();

//初始化--连接数据库

voidOnInitADOConn();

//执行查询

_RecordsetPtr&GetRecordSet(_bstr_tbstrSQL);

//执行SQL语句

BOOLExecuteSQL(_bstr_tbstrSQL);

//断开数据库连接

voidExitConnect();

};

实现ADO连接类函数和程序代码如下。

voidADOConn:

:

OnInitADOConn()

{

//初始化OLE/COM库环境

:

:

CoInitialize(NULL);

try

{

//创建connection对象

m_pConnection.CreateInstance("ADODB.Connection");

//设置连接字符串

_bstr_tstrConnect="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=WenDGL;DataSource=MRLZJ";

//SERVER和UID,PWD的设置根据实际情况来设置

m_pConnection->Open(strConnect,"","",adModeUnknown);

}

//捕捉异常

catch(_com_errore)

{

//显示错误信息

AfxMessageBox(e.Description());

}

}

_RecordsetPtr&ADOConn:

:

GetRecordSet(_bstr_tbstrSQL)

{

try

{

//连接数据库,如果connection对象为空,则重新连接数据库

if(m_pConnection==NULL)

OnInitADOConn();

//创建记录集对象

m_pRecordset.CreateInstance(__uuidof(Recordset));

//取得表中的记录

m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

}

catch(_com_errore)

{

e.Description();

}

//返回记录集

returnm_pRecordset;

}

BOOLADOConn:

:

ExecuteSQL(_bstr_tbstrSQL)

{

_variant_tRecordsAffected;

try

{

//是否已连接数据库

if(m_pConnection==NULL)

OnInitADOConn();

//connection对象的Execute方法(_bstr_tCommandText,

//VARIANT*RecordsAffected,longOptions)

//其中CommandText是命令字符串,通常是SQL命令

//参数RecordsAffected是操作完成后所影响的行数

//参数Options表示CommandText的类型,adCmdText-文本命令,adCmdTable-表名

//adCmdProc-存储过程,adCmdUnknown-未知

m_pConnection->Execute(bstrSQL,NULL,adCmdText);

returntrue;

}

catch(_com_errore)

{

e.Description();

returnfalse;

}

}

voidADOConn:

:

ExitConnect()

{

//关闭记录集和连接

if(m_pRecordset!

=NULL)

m_pRecordset->Close();

m_pConnection->Close();

//释放环境

:

:

CoUninitialize();

}

4.3主窗口设计

1.菜单资源设计

主窗口菜单设置的主要步骤如下:

(1)单击“ResourceView”选项卡,右键单击“WordGLXTResources”选项,在快捷菜单中选择“Insert”菜单项,弹出“InsertResource”窗口,如图7所示。

图7“InsertResource”窗口

(2)选择“Menu”文件夹,单击“New”按钮,在WordGLXTResources目录下新增一个Menu目录项,菜单ID为IDR_MENU1。

然后,双击此菜单,对此菜单项的属性进行设计,如图8所示。

图8“InsertResource”窗口

2.客户区设计

(1)打开对话框IDD_WORDGLXT_DIALOG属性窗口,在对话框中添加1个TreeControl和1个RichEdit控件,右键单击TreeControl控件,将Hasbuttons/Haslines/Clientedge/Linesatroot选中,属性设置如表1所示。

表1属性表

ID

MemberVariables

Type

Member

IDC_TREE1

CtrrCtrl

m_tree

ID_RICHEDITI

CRichEditCtrl

m_tichedit

(2)预先在下边留出状态栏,声明Ctime、CstatusBarCtrl类对象实体,程序代码如下。

CTimet;

CStatusBarCtrlm_StatusBar;

在程序中,引用外部变量。

externCWordGLXTApptheApp;

在头文件中定义程序变量,代码如下。

CStringstr;

CStringstrWord;

CStringstrText;

voidAddtoTree(HTREEITEMm_node);

HTREEITEMarrays[10],brrays[20],hitem[100];

HTREEITEMm_root,temp;

CDwxxbdwb;

CZdmlbmlb;

CZdxxbxxb;

CRizhibzhi;

CImageListm_treeImageList;

(3)在OnInitDialog成员函数中,添加状态栏以及给Tree控件定义图标,添加数据,代码如下所示。

//TODO:

Addextrainitializationhere

dwb.Load_dep();

mlb.Load_dep();

xxb.Load_dep();

m_treeImageList.Create(16,16,ILC_MASK,4,1);

m_treeImageList.Add(theApp.LoadIcon(IDI_ROOTICON));

m_treeImageList.Add(theApp.LoadIcon(IDI_CHILDICON1));

m_treeImageList.Add(theApp.LoadIcon(IDI_CHILDICON2));

m_treeImageList.Add(theApp.LoadIcon(IDI_CHILDICON4));

m_tree.SetImageList(&m_treeImageList,LVSIL_NORMAL);

m_root=m_tree.InsertItem("基本信息管理",0,0);

AddtoTree(m_root);

m_tree.Expand(m_root,TVE_EXPAND);

m_StatusBar.EnableAutomation();

m_StatusBar.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,0);

intwidth[]={200,400};

m_StatusBar.SetParts(4,&width[0]);

m_StatusBar.SetText("长春市明日科技有限公司",0,0);

CStringStatusText;

StatusText.Format("当前用户:

%s",user.GetUsername());

m_StatusBar.SetText(StatusText,0,1);

t=CTime:

:

GetCurrentTime();

CStringstrdate;

strdate.Format("当前日期:

%s",t.Format("%y-%m-%d"));

m_StatusBar.SetText(strdate,0,2);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

(4)定义AddtoTree函数,将各表中数据按层次结构添加到Tree控件中,代码如下。

voidCWordGLXTDlg:

:

AddtoTree(HTREEITEMm_node)

{

inti,j;

for(i=0;i

{

arrays[i]=m_tree.InsertItem(dwb.a_DWmc.GetAt(i),1,1,m_node);

for(j=0;j

{

if(atoi(dwb.a_DWbh.GetAt(i))==atoi(mlb.a_DWbh.GetAt(j)))

{

brrays[j]=m_tree.InsertItem(mlb.a_LBmc.GetAt(j),2,2,arrays[i]);

}

}

}

for(i=0;i

{

for(j=0;j

{

if(atoi(xxb.a_DWbh.GetAt(i))==atoi(mlb.a_DWbh.GetAt(j))&&atoi(xxb.a_LBbh.GetAt(i))==atoi(mlb.a_LBbh.GetAt(j)))

{

hitem[i]=m_tree.InsertItem(xxb.a_WDmc.GetAt(i),3,3,brrays[j]);

}

}

}

m_tree.SetRedraw();

}

(5)为Tree控件添加OnDblclkTree1双击事件,程序代码如下。

voidCWordGLXTDlg:

:

OnDblclkTree1(NMHDR*pNMHDR,LRESULT*pResult)

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringstrWjian="";

//读取当前节点

temp=m_tree.GetSelectedItem();

//将当前节点子节点付给temp

temp=m_tree.GetChildItem(temp);

if(temp!

=NULL)

{

while(temp!

=NULL)

{

//取出temp中的文本

strText=m_tree.GetItemText(temp);

strWjian+=strText+"\n";

//RichEdit控件显示数据

m_richedit.SetWindowText(strWjian);

//将temp的兄弟节点付给temp

temp=m_tree.GetNextItem(temp,TVGN_NEXT);

}

}

else

{

temp=m_tree.GetSelectedItem();

for(inti=0;i

{

if(temp==hitem[i])

{

//取出temp对应的文档路径

strWord=xxb.a_WJlj.GetAt(i);

}

}

//word应用程序

_Applicationapp;

//初始化连接

app.CreateDispatch("word.Application");

Documentsdoc;

CComVarianta(_T(strWord)),b(false),c(0),d(true),aa(0),bb

(1);

_Documentdoc1;

doc.AttachDispatch(app.GetDocuments());

doc1.AttachDispatch(doc.Add(&a,&b,&c,&d));

Rangerange;

//求出文档的所选区域

range=doc1.GetContent();//取出文件内容

str=range.GetText();

m_richedit.SetWindowText(str);

//关闭

app.Quit(&b,&c,&c);

//释放环境

app.ReleaseDispatch();

}

*pResult=0;

}

(6)在Menu组合框中选择IDR_MENU1。

单击工具栏中的“运行”按钮,看到系统的主界面如图9所示。

图9系统运行界面

(7)打开ClassWizard窗口,为菜单项ID_MENULIULWD添加代码,实现文档浏览功能。

voidCWordGLXTDlg:

:

OnMenuliulwd()

{

//TODO:

Addyourcommandhandlercodehere

CStringstrd,strs;

for(inti=0;i

{

strd=xxb.a_WDmc.GetAt(i);

strs+=strd+"\n";

m_richedit.SetWindowText(strs);

}

}

(8)为菜单项ID_MENURZGL添加代码,实现日志管理功能。

voidCWordGLXTDlg:

:

OnMenurzgl()

{

//TODO:

Addyourcommandhandlercodehere

ADOConnm_AdoConn;

m_AdoConn.OnInitADOConn();

CStringsql,sqlzd="用户名\t登录时间\t动作\n";

sql.Format("select*fromRizhib");

m_AdoConn.GetRecordSet((_bstr_t)sql);

while(m_AdoConn.m_pRecordset->adoEOF==0)

{

sqlzd+=(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("name");

sqlzd+="\t";

sqlzd+=(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("DLsj");

sqlzd+="\t";

sqlzd+=(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("dz");

sqlzd+="\n";

m_AdoConn.m_pRecordset->MoveNext();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2