1、 OA 办公自动化系统学 院专 业班 级学 号姓 名指导教师教师职称年 月 日摘要【摘要】系统针对企业机关办公中存在的信息不畅、效率底下、操作不规范等一系列问题。用信息化的手段和新一代规范等一系列问题。用信息化手段和新一代的管理思想提供了强有力的网络化、电子化支持。把协同办公的理念、知识管理的思想带入了现代社会的办公生活,从而提升了现代企业的信息化程度,改变了人们的生活。【关键词】 OA 办公自动化目录摘要 .1目录 .1引言 .11 系统分析 .21.1 需求分析 .21.2 可行性分析 .22 总体设计 .22.1 项目规划 .22.2 系统工作原理网络结构图 .22.3 系统功能结构图
2、.33 详细设计 .33.1 公共模块设计 .33.2 系统登录设计 .43.3 主界面设计 .63.4 新闻管理 .93.5 传送文件 .133.6 文件接收 .153.7 投票活动管理 .18附录 A 参考文献 .21附录 B 数据表结构 22附录 C 文件架构图 25引言在市场竞争过程中,对于一个企业而言,对信息的掌握程度、信息获取是否及时、信息能否得到充分的利用、对信息的反应是否敏感准确,也越来越成为衡量一个企业市场竞争能力的重要因素。商场如战场,新一代的战争是信息化战争,如何使企业信息化建设完善起来?在这种情况下,开发 OA 办公自动化系统是当务之急的事了。本系统是以新闻发布、文件传
3、送为核心的办公自动化系统,是一套集新闻管理、文件传送管理、信息发布、人事管理、局域网短消息快速传送等 5 部分为一体的办公自动化系统。该系统除了必须满足当前的应用要求外,在整套系统的设计过程中,还专门强调了其先进性及可扩展性。当前的信息技术日新月异,如果这套系统只着眼于当前的需求,而忽视了对系统技术的前瞻性,可以在不久的将来,系统必将不能满足客户日益增长的需求,导致系统的生命周期缩短,从而增加客户在信息化建设上的投资。 2 1 系统分析1.1 需求分析通过调查,要求系统需要有以下功能: 由于操作人员的计算机知识普遍较差,那么就要求有良好的人机界面。 由于该系统的使用对象多,要求有较好的权限管理
4、。 原始数据修改简单方便,支持多条件修改。 方便的数据查询,支持多条件查询。 信息发布与文件传送速度快。 通过计算机,能够直接“透视” 公司的各项工作及活动安排。 图表分析活动投票管理。 在相应的权限下,删除数据方便简单,数据稳定性好。1.2 可行性分析开发任何一个基于计算机的系统,都会受到时间和资源上的限制。因此,在接受任何一个项目开发任务之前,必须根据客户可能提供的时间和资源条件进行可行性分析,以减少项目开发风险,避免人力、物力和财力的浪费。本系统数据库采用目前比较流行的 Microsoft SQL Server,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据库量大,
5、效率高;前台采用 Microsoft 公司的 Visual Basic 6.0 作为主要的开发工具,其可与 SQL Server 2000 数据库无缝链接。2 总体设计2.1 项目规划OA 办公自动化系统是一个典型的网络办公开发应用程序,包含通知管理模块、新闻管理模块、文件传送管理模块、交流管理模块、系统维护管理模块 5 部分组成,规划系统功能模块如下: 通知管理模块该模块主要负责信息的发布、接收等。 新闻管理模块该模块的主要负责新闻的发布、接收等。 文件传送管理模块该模块主要负责文件的传送与接收等。 交流管理模块该模块主要实现意见反馈、活动投票、短消息服务(局域网) 。 系统维护管理模块部门
6、信息的基础设置、职员信息的基础设置、投票活动管理设置、系统操作员及权限设置。 3 2.2 系统工作原理网络结构图系统工作原理网络结构图如图 1 所示。S Q L S e r v e r服务器公司职员计算 机公司职员计算 机公司职员计算 机公司职员计算 机公司职员计算 机图 1 系统工作原理网络结构图2.3 系统功能结构图系 统主界面发布通知系统启动系统登录接收通知已发通知新闻发布新闻接收已发新闻通知管理 新闻管理 文件传送 交流管理文件传送文件接收已传文件意见箱投票活动短消息服务系统维护管理人事管理投票管理意见箱管理系统设置图 2 系统功能结构图3 详细设计3.1 公共模块设计为了节省系统资源
7、,实现代码重用,可以在系统中新建一个 Modulel 模块。就本系统而言,该模块主要实现数据库安装和共享数据库连接。系统第一次使用时,根据用户设置的 DataBase.ini 配置文件,将数据库文件 4 (db_OA_Data.MDF)和数据库日志文件(db_OA_Log.LDF)自动安装到指定的 SQL Server 数据库服务器上。为了优化 ADO+SQL 数据库的连接,在公共模块(Module1 )中建立数据库连接共享字符串。在以后的编程中,如果使用对象访问数据库或 ADO Data 控件访问数据库,则可以直接将数据库共享连接字符串(PublicStr)值赋值给相应的 Connectio
8、nString 属性,从而避免了重复建立数据库连接的麻烦,而失去了 ADO+SQL 的优越性能。模块中代码如下:Public PublicStr As StringDim con As New ADODB.Connection, rs As New ADODB.RecordsetDim Str As String, Server As String, uid As String, Dim pwd As StringPublic Sub main()读取数据库配置文件Open (App.Path Persist Security Info=False;User ID=“ PWD=“ Initia
9、l Catalog=db_OA;Data Source=“ Persist Security Info=False;User ID=“ PWD=“ Initial Catalog=db_OA;Data Source=“ Persist Security Info=False;User ID=sa;Initial Catalog=db_OA;Data Source=MRZYT“cn.OpenSet rs = New ADODB.Recordsetrs.Open “select * from tbOA_file“, cn, adOpenStatic, adLockOptimisticSet mst
10、 = New ADODB.Streammst.Type = adTypeBinarymst.Openmst.LoadFromFile txtFile.Textrs.AddNewrs.Fields(1).Value = txtSubject.Text: rs.Fields(2).Value = txtMemo.Textrs.Fields(3).Value = txtName.Text: rs.Fields(4).Value = Combo1.Textrs.Fields(5).Value = Combo2.Text: rs.Fields(6).Value = DTPicker1.Valuers.F
11、ields(7).Value = mst.Read: rs.Fields(8).Value = fileNamers.Updaters.Close: cn.CloseMe.MousePointer = 0MsgBox “文件传送成功!“, vbInformationEnd Sub在 Combo1 控件中选择部门,将检索该部门的所有员工,并将其添加到 Combo2 控件中。Combo1 控件的 Click 事件下代码如下:Private Sub Combo1_Click()Combo2.ClearadoEmployee.ConnectionString = PublicStradoEmploye
12、e.RecordSource = “select * from tbOA_employee where e_dept=“ & Combo1.Text & “adoEmployee.RefreshFor i = 0 To adoEmployee.Recordset.RecordCount - 1Combo2.AddItem adoEmployee.Recordset.Fields(1).ValueadoEmployee.Recordset.MoveNextNext iEnd Sub单击【浏览文件】按钮,选择将要传送的文件,代码如下:Private Sub cmdFile_Click()Commo
13、nDialog1.ShowOpentxtFile.Text = CommonDialog1.fileName: fileName = CommonDialog1.FileTitleEnd Sub3.6 文件接收文件接收窗体主要用来接收其他员工传送来的文件,并且将文件下载保存到本机器中。本窗体主要实现的功能为:以日期为标准查询接收文件、下载接收文件、删除接收文件、显示所 16 有接收文件。文件接收窗体的设计结果如图 10 所示。图 10 文件接收窗体设计结果1窗体设计(1)新建一个窗体,设置窗体“名称”属性为 frmFile_incept,Caption 属性为“文件接收” ,MaxButton
14、 属性为 False。(2)添加 4 个 CommandButton 按钮控件,名称分别为cmdFind、cmdDel、Command1 、Command2 ,其 Caption 属性为“查询” 、 “删除文件记录” 、 “显示所有文件”和“退出” 。(3)添加 ADO 控件和 DataGrid 控件,设置名称分别为 adoFile 和 DataGrid1。(4)添加 2 个 DTPicker 控件名称分别为 DTPicker1 和 DTPicker2。2程序代码设计在本窗体中声明变量,代码如下:Public filePath As StringDim cn As ADODB.Connecti
15、on, rs As ADODB.Recordset, mst As ADODB.Stream 在窗体的装载过程中,查询系统操作职员接收的所有文件,并通过 DataGrid 控件显示,代码如下:Private Sub Form_Load()adoFile.ConnectionString = PublicStradoFile.RecordSource = “select * from tbOA_file where file_name=“ + Mid(frm_mainBefore.StatusBar1.Panels(1).Text, 6, Len(frm_mainBefore.StatusBar
16、1.Panels(1).Text) - 5) + “order by file_date desc“adoFile.RefreshSet DataGrid1.DataSource = adoFile 将数据源绑定到DataGrid表格上Call setDataGrid_CaptionEnd Sub通过鼠标选择 DataGrid 表格中数据,然后单击【删除文件记录 】按钮,将选中的文件数据删除。下面是【删除】按钮的 Click 事件代码:Private Sub cmdDel_Click()On Error Resume Next 当数据表中没有数据时,进行错误处理adoFile.Recordse
17、t.DeleteEnd Sub在日期输入框输入开始日期和截止日期后,单击【查询】按钮,将查询结果显示在 17 DataGrid 控件中,代码如下:Private Sub cmdFind_Click()adoFile.RecordSource = “select * from tbOA_file where file_name=“ + Mid(frm_mainBefore.StatusBar1.Panels(1).Text, 6, Len(frm_mainBefore.StatusBar1.Panels(1).Text) - 5) + “and file_date between “ & DTP
18、icker1.Value & “ and “ & DTPicker2.Value & “adoFile.RefreshCall setDataGrid_CaptionEnd SubPrivate Sub Command1_Click()adoFile.ConnectionString = PublicStradoFile.RecordSource = “select * from tbOA_file where file_name=“ + Mid(frm_mainBefore.StatusBar1.Panels(1).Text, 6, Len(frm_mainBefore.StatusBar1
19、.Panels(1).Text) - 5) + “order by file_date desc“adoFile.RefreshSet DataGrid1.DataSource = adoFileCall setDataGrid_CaptionEnd Sub在DataGrid控件中选择文件记录,然后双击鼠标左键,下载接收文件Private Sub DataGrid1_DblClick()If MsgBox(“是否接收 【“ & DataGrid1.Columns(3).Text & “】传送来的“ & DataGrid1.Columns(1).Text & “吗?“, vbQuestion +
20、 vbYesNo) = vbYes ThenCommonDialog1.fileName = DataGrid1.Columns(8).TextCommonDialog1.ShowSavefilePath = CommonDialog1.fileNameMe.MousePointer = 11Set cn = New ADODB.Connectioncn.ConnectionString = PublicStrcn.OpenSet rs = New ADODB.Recordsetrs.Open “select * from tbOA_file where file_id=“ & frmFile
21、_incept.adoFile.Recordset.Fields(0).Value & “, cn, adOpenStatic, adLockOptimisticSet mst = New ADODB.Streammst.Type = adTypeBinarymst.Openmst.Write rs.Fields(7).Valuemst.SaveToFile filePath, adSaveCreateOverWrite 保存文件,adSaveCreateOverWrite为覆盖以存在文件rs.Closecn.CloseMe.MousePointer = 0MsgBox “现在成功! “ &
22、“文件保存在: “ & frmFile_incept.filePath, vbInformation, “文件下载“End IfEnd Sub由于本系统数据表中的字段都是英文字段,因此将 ADO Data 控件绑定到 DataGrid 控件后,DataGrid 控件的列标题都为英文字段名称,为方便用户使用,笔者在此建立了setDataGrid_Caption()过程,该过程主要用于设置 DataGrid 控件的列标题和列宽,代码如下:Sub setDataGrid_Caption()DataGrid1.Column s(0).Caption = “序号“: DataGrid1.Columns(
23、1).Caption = “主题“ 18 DataGrid1.Columns(2).Caption = “文件备注“: DataGrid1.Columns(3).Caption = “传送人“DataGrid1.Columns(4).Caption = “接收部门“: DataGrid1.Columns(5).Caption = “接收人“DataGrid1.Columns(6).Caption = “传送日期“: DataGrid1.Columns(7).Visible = FalseDataGrid1.Columns(8).Caption = “文件标题“: DataGrid1.Colum
24、ns(0).Width = 500DataGrid1.Columns(1).Width = 2000: DataGrid1.Columns(2).Width = 3000DataGrid1.Columns(3).Width = 1000: DataGrid1.Columns(4).Width = 1000DataGrid1.Columns(5).Width = 1000: DataGrid1.Columns(6).Width = 1000DataGrid1.Columns(8).Width = 2000End Sub3.7 投票活动管理投票活动管理主要添加投票活动、删除投票活动、清除投票记录,
25、列表形式统计票数及图表统计票数。投票活动管理窗体的设计结果如图 11 所示。图 11 活动投票管理窗体设计图1窗体设计(1)新建一个窗体,将窗体的“名称”属性设置为 frmSys_vote,设置 Caption 属性为“活动投票管理” ,设置 MaxButton 属性为 False。(2)添加 2 个 Label 标签控件、 2 个 TextBox 文本框控件及 4 个 CommandButton 按钮控件。(3)添加 Ado 控件和 DataGrid 控件,设置其名称为 adoVote 和 DataGrid2。(4)添加 MSChart 图表控件,其名称为默认名称。由于 MSChart 控件
26、为 ActiveX 控件,在使用之前必须从“部件”对话框中添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Chart Controls 6.0(OLEDB) ”列表项。2程序代码设计在窗体装载过程中,根据投票数量进行投票排行,并通过表格或图表显示出来。窗体的Load 事件代码如下:Private Sub Form_Load()/投票活动设置adoVote.ConnectionString = PublicStradoVote.RecordSource = “select * from tbOA_vote order by vote_qty desc“ 19 a
27、doVote.RefreshSet DataGrid2.DataSource = adoVoteDataGrid2.Columns(0).Caption = “序号“: DataGrid2.Columns(1).Caption = “活动名称“DataGrid2.Columns(2).Caption = “活动描述“: DataGrid2.Columns(3).Caption = “活动票数“End Sub单击【显示图表】按钮,可以切换通过图表显示投票结果或列表显示投票结果。 【显示图表】按钮的 Click 事件下添加代码如下:Private Sub cmdChar_Click()If cmd
28、Char.Caption = “显示图表“ ThencmdChar.Caption = “显示列表“MSChart1.Visible = TrueDataGrid2.Visible = FalseadoVote.RecordSource = “select vote_subject as 活动名称,vote_qty as 投票数量 from tbOA_vote“adoVote.RefreshSet MSChart1.DataSource = adoVoteElseIf cmdChar.Caption = “显示列表 “ ThencmdChar.Caption = “显示图表“MSChart1.
29、Visible = False: DataGrid2.Visible = TrueadoVote.RecordSource = “select * from tbOA_vote order by vote_qty desc“adoVote.RefreshDataGrid2.Columns(0).Caption = “序号“: DataGrid2.Columns(1).Caption = “活动名称“DataGrid2.Columns(2).Caption = “活动描述“: DataGrid2.Columns(3).Caption = “活动票数“End IfEnd Sub单击【添加】按钮,添
30、加相关投票活动。 【添加】按钮的 Click 下代码如下:Private Sub cmdVoteAdd_Click()adoVote.RecordSource = “select * from tbOA_vote order by vote_qty desc“adoVote.RefreshIf txtVote.Text = “ Then MsgBox “活动名称不能为空!“, vbInformation: txtVote.SetFocus: Exit SubadoVote.Recordset.AddNewadoVote.Recordset.Fields(1).Value = txtVote.T
31、extadoVote.Recordset.Fields(2).Value = txtVoteMemo.TextadoVote.Recordset.UpdateMsgBox “添加成功“, vbInformationDataGrid2.Columns(0).Caption = “序号“: DataGrid2.Columns(1).Caption = “活动名称“DataGrid2.Columns(2).Caption = “活动描述“: DataGrid2.Columns(3).Caption = “活动票数“End Sub通过鼠标选择 DataGrid 表格中数据,然后单击【删除】按钮,将选中
32、的数据删除。下面是【删除】按钮的 Click 事件代码:Private Sub cmdVoteDel_Click()On Error Resume Next 数据表没有数据时,进行错误处理adoVote.Recordset.DeleteDataGrid2.Columns(0).Caption = “序号“: DataGrid2.Columns(1).Caption = “活动名称“DataGrid2.Columns(2).Caption = “活动描述“: DataGrid2.Columns(3).Caption = “活动票数“End Sub单击【清除投票记录】按钮,将活动的所有投票结果删除
33、。下面是【清除投票记录】按钮的 Click 事件代码:Private Sub cmdClear_Click() 20 adoVote.RecordSource = “select * from tbOA_vote“adoVote.RefreshIf adoVote.Recordset.RecordCount 0 ThenFor i = 0 To adoVote.Recordset.RecordCount - 1adoVote.Recordset.Fields(3).Value = 0 将投票数量设置为 0adoVote.Recordset.MoveNextNext iEnd IfDim con
34、 As ADODB.ConnectionDim rs As ADODB.RecordsetSet con = New ADODB.Connectioncon.ConnectionString = PublicStrcon.OpenSet rs = New ADODB.RecordsetSet rs = con.Execute(“DELETE FROM tbOA_voteRecord“) 清楚投票人记录con.CloseMsgBox “数据清除成功!“, vbInformationDataGrid2.Columns(0).Caption = “序号“: DataGrid2.Columns(1).
35、Caption = “活动名称“DataGrid2.Columns(2).Caption = “活动描述“: DataGrid2.Columns(3).Caption = “活动票数“End Sub 21 附录 A 参考文献1Visual basic数据库开发关键技术与实例应用 人民邮电出版社 2004年5月2Visual Basic 管理信息系统完整项目实例剖析 人民邮电出版社 2005年7月3Visual Basic 精彩编程200例 机械工业出版社 赛奎春、高春艳等 2003年1月4Visual Basic 数据库开发实例解析 机械工业出版社 刘志铭、高春艳等 2003年8月5Delph
36、i数据库开发实例解析 机械工业出版社 赛奎春、郑骁鹏等 2004年2月6PowerBuilder 精彩编程200例 机械工业出版社 张振坤、李文立等 2004年9月7Visual FoxPro 精彩编程200例 机械工业出版社 王国辉、董韶华等 2004年9月8ASP数据库开发实例解析 机械工业出版社 李严、于亚芳、王国辉 2004年12月9Delphi工程应用与项目实践 机械工业出版社 宋坤、赵智勇等 2005年1月10Visual Basic 工程应用与项目实践 机械工业出版社 高春艳、李俊民等 2005年1月11Visual C工程应用与项目实践 机械工业出版社 张雨、阮伟良等 5005
37、年1月12JSP工程应用与项目实践 机械工业出版社 陈威、白伟明、李楠 2005年2月13ASP工程应用与项目实践 机械工业出版社 王国辉、牛强、李南南 2005年4月14Visual Basic 信息系统开发实例精选 机械工业出版社 高春艳、李俊民、张耀庭等2005年7月15ASP 信息系统开发实例精选 机械工业出版社 王国辉、牛强、李南南等 2005年7月16Delphi 信息系统开发实例精选 机械工业出版社 宋坤、赵智勇、刘强等 2005年7月17Visual foxpro数据库开发关键技术与实例应用 人民邮电出版社 周桓、张雨、王国辉2004年5月18PoweBuilder数据库开发关
38、键技术与实例应用 人民邮电出版社 刘志铭 张振坤 冯文萃2004年5月19Delphi数据库开发关键技术与实例应用 人民邮电出版社 赛奎春 陈紫鸿 宋昆2004年5月20Visual FoxPro 数据库开发实例解析 机械工业出版社 王晶莹、王国辉等 2003年9月21Visual C+ 管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 2005年7月22Power Builder数据库开发实例解析 机械工业出版社 华传铭、张振坤等 2003年9月23PowerBuilder 管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 2005年7月24Visual FoxPro 管理信息系
39、统完整项目实例剖析 人民邮电出版社 明日科技2005年7月25SQL Server 数据库开发实例解析 机械工业出版社 宋昆、李严等 2006 年 1 月26Access 数据库开发实例解析 机械工业出版社 李俊民、高春燕等 2006 年 1 月 22 附录 B 数据表结构表 B.1 文件数据表的结构字段名 数据类型 长度 主键否 描述file_id int 主键 IDfile_subject varchar 30 文件主题file_text varchar 50 文件描述file_person varchar 16 传送人file_dept varchar 30 接收部门file_name
40、varchar 16 接收人file_date datetime 8 传送日期file_file image 16 文件file_type varchar 20 文件类型表 B.2 意见表的结构字段名 数据类型 长度 主键否 描述idear_id int 主键 意见 IDidear_subject varchar 30 意见主题idear_text varchar 50 意见内容表 B.3 新闻表的结构字段名 数据类型 长度 主键否 描述news_id int 主键 新闻 IDnews_date datetime 新闻发布时间news_person varchar 12 发布人news_acc
41、eptDept varchar 50 新闻接收部门news_acceptPerson varchar 12 接收人news_bit bit 标记new_text varchar 50 备注表 B.4 办公通知表的结构字段名 数据类型 长度 主键否 描述notice_id int 主键 通知 IDnotice_date datetime 通知时间notice_person varchar 12 发布通知人notice_acceptDept varchar 30 通知部门 23 notice_acceptPerson varchar 12 通知人notice_bit bit 1 标记notice_
42、text varchar 500 备注表 B.5 系统用户表的结构字段名 数据类型 长度 主键否 描述username varchar 20 主键 用户名userpwd varchar 20 密码userbit bit 权限标记表 B.6 公司活动表的结构字段名 数据类型 长度 主键否 描述vote_id int 主键 活动 IDvote_subject varchar 30 活动主题vote_memo varchar 50 活动备注vote_qty float 投票数量表 B.7 活动投票记录表的结构字段名 数据类型 长度 主键否 描述voteRecord_id int 主键 IDvoteR
43、ecord_name varchar 16 投票人表 B.8 部门信息表字段名 数据类型 长度 主键否 描述dept_id int 主键 部门编号dept_name varchar 30 部门名称dept_describe Text 16 描述信息表 B.9 员工信息表字段名 数据类型 长度 主键否 描述e_id varchar 10 主键 员工编号e_name varchar 20 员工姓名e_sex varchar 6 性别e_birth varchar 16 出生日期e_dept varchar 30 所属部门e_duty varchar 16 职务e_study varchar 16 学历 24 e_gov varchar 16 政治面貌e_phone varchar 20 联系电话e_memo text 16 备注