1、完整版文档管理系统范例毕业设计论文优秀论文 审核通过未经允许 切勿外传文档管理系统学 院专 业班 级学 号姓 名指导教师教师职称年月日文档管理系统摘要0 引言1 系统需求分析2 总体设计1 项目规划2 系统功能结构3 设计目标3 系统设计1 开发及运行环境2 数据库设计4 主要功能模块设计6.4.1 建立工程框架6.4.2 封装数据库6.4.3 主窗口设计6.4.4 登录模块设计6.4.5 单位档案模块设计6.4.6 文档类别模块设计6.4.7 文档管理模块设计6.4.8 用户管理模块设计6.4.9 口令修改模块设计附录A 参考文献附录B 数据表摘要【摘要】文档管理实际就是文件的制作、修改、传
2、递、签定、保存、销毁、存档等一系统操作。文档管理是企业经营管理中不可缺少的组成部分。通过文档信息管理系统的使用,实现文档管理自动化管理的目标,为企业提供了安全、可靠、开放、高效的文档管理功能,不仅方便了文档管理的日常操作,而且必免了手工管理中的一系列错误的发生,提高了企业的办公效率和企业文件管理的综合水平。目前,大多数文档管理系统在实现了企业各部门日常文件管理的基本功能之外,还增设了很多的新功能用以满足文档管理电子化、标准化的新要求;功能强大的档案查询模块,大大方便了管理者日常文档的查找工作,解决传统管理中的查找困难、查找耗时等问题。使用现代化的文档管理系统满足了企业“无纸化”办公的求要,实现
3、通过计算机对文档管理全程跟踪的目标。【关键词】文档管理系统0 引言文档管理系统的全面应用,克服了企业传统文档管理方法的缺点,提高管理部门的日常办公效率,增强了企业内部协同合作的能力;文档管理系统的应用,方便管理者有效管理文档的同时,大大提高了文档查找效率,进而提高了企业的综合效率。1 系统需求分析根据市场的需求,要求系统具有以下功能:处理大量的复合文档型的数据信息。通过系统查看文档内容。通过系统可以完成对文档一系列日常操作。保证系统的安全性、可靠性。2 总体设计2.1 项目规划文档管理系统由基本信息、文档管理、系统设置等几个功能模块组成,规划系统功能模块如下基本信息基本信息包括单位档案、文档类
4、别2部分。文档管理文档管理包括添加文档、修改文档、删除文档、文档浏览4部分。系统设置系统设置包括用户管理、口令修改、日志管理、退出系统4部分。2.2 系统功能结构文档系统的功能结构如图1所示。图1 文档管理功能图2.3 设计目标本系统是根据中小企业的实际需求而开发的,完全能够实现企业对制度文档的自动化管理,通过本系统可以达到以下目标:系统运行稳定,安全可靠。界面设计美观,人机交互界面友好。信息查询灵活、方便、快捷、准确,数据存储安全可靠。操作员可以随时修改自己的口令。对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。数据保密性强,为每个用户设置相应的权限级别。3 系统设计3.1
5、开发及运行环境1硬件要求系统开发平台:Visual C+ 6.0数据库管理系统软件:SQL Server 2000运行平台:Windows xpWindows 20003.2 数据库设计1数据库概要说明数据库WenDGL中包括单位表、类别表、文档表、日志表、用户表5个数据表。图2所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。可以清晰地反应数据库信息。图2 数据库概要说明2主要数据表的结构数据库中的数据表请参见附录B。4 主要功能模块设计4.1 建立工程框架在Visual C+中建立文档管理系统的基本框架,步骤如下:(1)单击菜单“File-New”命令,打开“Ne
6、w”对话框,单击“Projects”选项卡,选择“MFC AppWizard(exe)”,输入工程名,并设置路径,如图3所示。图3 “New”对话框(2),、单击“OK”按钮,弹出“MFC AppWizard-Step 1”对话框,如图4所示。图4 “MFC AppWizard-Step 1”对话框(3)选择“Dialog base”选项,单击“Next”按钮,在弹出的“MFC AppWizard-Step 2 of 4”对话框中,输入对话框标题,如图5所示。图5 “MFC AppWizard-Step 2 of 4”对话框(4)单击“Next”按钮,在接下来弹出的对话框中默认原有的选择项,最
7、后设置好的对话框的属性如图6所示,单击“OK”按钮,新建工程成功。图6 工程属性4.2 封装数据库1添加ADO连接类本实例采用ADO来连接SQL Server数据库,在使用ADO技术时,需要导入一个ADO动态链接库msado15.dll,该动态库位于系统盘下的“Program FilesCommon FilesSystemado”目录下。例如,如果您的系统盘为C盘,则该文件位于“C: Program FilesCommon FilesSystemado”目录。在Visual C+中,需要使用预处理命令#import,将动态库导入到系统中,代码如下。#import E:Program Files
8、Common FilesSystemadomsado15.dll no_namespace rename(EOF,adoEOF)rename(BOF,adoBOF)添加一个用来连接的ADO的类。在系统菜单中选择“Insert-New Class”选项,打开“New Class”窗口,选择“Generic Class”,然后输入类名,即完成了类的添加。代码如下。创建ADO连接类。class ADOConn public: 添加一个指向Connection对象的指针 _ConnectionPtr m_pConnection; 添加一个指向Recordset对象的指针 _RecordsetPtr m
9、_pRecordset;public: ADOConn(); virtual ADOConn(); 初始化-连接数据库 void OnInitADOConn(); 执行查询 _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL); 执行SQL语句 BOOL ExecuteSQL(_bstr_t bstrSQL); 断开数据库连接 void ExitConnect();实现ADO连接类函数和程序代码如下。void ADOConn:OnInitADOConn() 初始化OLECOM库环境 :CoInitialize(NULL); try 创建connection对
10、象 m_pConnection.CreateInstance(ADODB.Connection); 设置连接字符串 _bstr_t strConnect=Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=WenDGL;Data Source=MRLZJ; SERVER和UID,PWD的设置根据实际情况来设置 m_pConnection-Open(strConnect,adModeUnknown); 捕捉异常 catch(_com_error e) 显示错误信息 Afx
11、MessageBox(e.Description(); _RecordsetPtr& ADOConn:GetRecordSet(_bstr_t bstrSQL) try 连接数据库,如果connection对象为空,则重新连接数据库 if(m_pConnection=NULL) OnInitADOConn(); 创建记录集对象 m_pRecordset.CreateInstance(_uuidof(Recordset); 取得表中的记录 m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockO
12、ptimistic,adCmdText); catch(_com_error e) e.Description(); 返回记录集 return m_pRecordset;BOOL ADOConn:ExecuteSQL(_bstr_t bstrSQL) _variant_t RecordsAffected; try 是否已连接数据库 if(m_pConnection=NULL) OnInitADOConn(); connection对象的Execute方法(_bstr_t CommandText, VARIANT * RecordsAffected,long Options) 其中Command
13、Text是命令字符串,通常是SQL命令 参数RecordsAffected是操作完成后所影响的行数 参数Options表示CommandText的类型,adCmdText-文本命令,adCmdTable-表名 adCmdProc-存储过程,adCmdUnknown-未知 m_pConnection-Execute(bstrSQL,NULL,adCmdText); return true; catch(_com_error e) e.Description(); return false; void ADOConn:ExitConnect() 关闭记录集和连接 if(m_pRecordset!=
14、NULL) m_pRecordset-Close(); m_pConnection-Close(); 释放环境 :CoUninitialize();4.3 主窗口设计1菜单资源设计主窗口菜单设置的主要步骤如下:(1)单击“ResourceView”选项卡,右键单击“WordGLXT Resources”选项,在快捷菜单中选择“Insert”菜单项,弹出“Insert Resource”窗口,如图7所示。图7 “Insert Resource”窗口(2)选择“Menu”文件夹,单击“New”按钮,在WordGLXT Resources目录下新增一个Menu目录项,菜单ID为IDR_MENU1。然
15、后,双击此菜单,对此菜单项的属性进行设计,如图8所示。图8 “Insert Resource”窗口2客户区设计(1)打开对话框IDD_WORDGLXT_DIALOG属性窗口,在对话框中添加1个Tree Control和1个RichEdit控件,右键单击Tree Control控件,将Has buttonsHas linesClient edgeLines at root选中,属性设置如表1所示。表1 属性表IDMemberVariablesTypeMemberIDC_TREE1CtrrCtrlm_treeID_RICHEDITICRichEditCtrlm_tichedit(2)预先在下边留出
16、状态栏,声明Ctime、CstatusBarCtrl类对象实体,程序代码如下。 CTime t; CStatusBarCtrl m_StatusBar;在程序中,引用外部变量。 extern CWordGLXTApp theApp;在头文件中定义程序变量,代码如下。 CString str; CString strWord; CString strText; void AddtoTree(HTREEITEM m_node); HTREEITEM arrays10,brrays20, (IDI_ROOTICON); m_treeImageList.Add(theApp.LoadIcon(IDI_
17、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_Stat
18、usBar.SetParts(4, &width0); m_StatusBar.SetText(长春市明日科技有限公司,0,0); CString StatusText; StatusText.Format(当前用户:%s,user.GetUsername(); m_StatusBar.SetText(StatusText,0,1); t=CTime:GetCurrentTime(); CString strdate; strdate.Format(当前日期:%s,t.Format(%y-%m-%d); m_StatusBar.SetText(strdate,0,2); return TRUE
19、; return TRUE unless you set the focus to a control (4)定义AddtoTree函数,将各表中数据按层次结构添加到Tree控件中,代码如下。void CWordGLXTDlg:AddtoTree(HTREEITEM m_node) int i,j; for(i=0;idwb.a_DWbh.GetSize();i+) arraysi=m_tree.InsertItem(dwb.a_DWmc.GetAt(i),1,1,m_node); for(j=0;jmlb.a_DWbh.GetSize();j+) if(atoi(dwb.a_DWbh.Get
20、At(i)=atoi(mlb.a_DWbh.GetAt(j) brraysj=m_tree.InsertItem(mlb.a_LBmc.GetAt(j),2,2,arraysi); for(i=0;ixxb.a_WDbh.GetSize();i+) for(j=0;jmlb.a_DWbh.GetSize();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) =; 读取当前节点 temp = m_tree.GetSelectedIt
21、em(); 将当前节点子节点付给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.GetSelect
22、edItem(); for(int i=0;iadoEOF=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(); m_richedit.
23、SetWindowText(sqlzd); m_AdoConn.ExitConnect();(9)为菜单项ID_EXIT添加代码,程序调用OnOK()函数关闭对话框,退出系统。void CWordGLXTDlg:OnExit() TODO: Add your command ”文本框内容为“用户登录”。(2)从Controls面板上向Dialog资源中添加2个Static、2个Edit,更改资源的属性,并为资源设置相对应的变量,如表2所示。表2 资源设置IDPropertiesMember VariablesTypeMemberIDC_EDIT1默认CStringm_nameIDC_ EDIT
24、2PassWord TRUECStringm_pwdIDOKCaption 登录IDCANCELCaption 退出3代码分析(1)引用函数外部的变量。extern CUsers user;(2)在头文件定义程序变量。CString jb;CRizhib zhi;CTime t;(3)响应“登录”按钮的程序代码如下。void CDialogin:OnOK() TODO: Add extra validation ; 如果读取数据和用户输入不同,则返回 if(user.HaveCzy(m_name,m_pwd)!=1) MessageBox(用户名或密码错误!); return; user.Se
25、tUsername(m_name); 判断用户级别 jb=1; if(user.HaveCzyjb(m_name,m_pwd,jb)=1) user.SetJB(jb); else user.SetJB(0); 读取当前系统时间 t=CTime:GetCurrentTime(); 将登录动作记录到日志表 zhi.SetDLsj(t.Format(%y-%m-%d); zhi.SetName(user.GetUsername(); zhi.SetDZ(登录); zhi.sql_insert(); CDialog:OnOK();下面在主对话框中添加代码,使对话框在启动时首先打开登录对话框。在主窗口选择OnInitDialog函数,该函数将打开登录对话框,如果用户不是通过单击“登录”按钮关闭对话框,则调用OnOK函数关闭主对话框,具体代码如下。BOOL CWordGLXTDlg:OnInitDialog() CDialog:OnInitDialog();. TODO: Add extra initialization gin; if(gin.DoModal()!=IDOK) OnOK(); .return TRUE; return TRUE unless you set the focus to a control4.7 文档管理模块设计1实现目标用于查看、添加、修改、删除文档