1、*学校毕业设计(论文)作者: 学号: 系部: 专业: 题目: OA办公自动化系统 指导教师: 评阅教师: 完成时间: 2009 年 5 月 5 日1毕业设计(论文)中文摘要(题目):OA办公自动化系统摘要:在市场竞争中,对于一个企业而言,对信息的掌握程度、信息获取是否及时、信息能否得到充分的、对信息的反应是否敏感准确越来越成为衡量其市场竞争能力的重要因素。随着中国加入WTO,各行各业都在努力提高自身的竞争力,电信的重组、企业信息化管理进程的加快都在说明一个趋势:传统以红头文件为主的、强调公文处理的办公自动化将从主导地位逐渐减弱,以强调信息服务、知识管理为主的企业信息服务系统将逐渐代替原有的办公
2、自动化。商场如战场,新一代的战争是信息化战争,如何通过互联网这一利器,使企业信息化建设完善起来?这就需要一种高效,稳定的办公自动化系统!通过本系统,企业机关办公中存在的信息不畅、效率低下等一系列问题得到了解决。把知识管理的思想带入了现代社会的办公生活,从而提升了现代企业的信息化程度,改变了人们的生活。本论文主要阐述OA办公自动化系统的后台操作过程及一些关键技术。该系统具有新闻管理、文件传送管理、通知管理、交流管理、系统维护功能,而且还根据大多数客户需求增加了浏览器、播放器等功能,这样既可以时时掌握最新网络资源还可以制造一个轻松的办公氛围。关键字 :自动化,管理,ActiveX 毕业设计(论文)
3、外文摘要Title: OA Office Automation System Abstract: Competition in the market for a business, the degree of mastery of information, access to information timeliness, information can be sufficient and whether the response of the information sensitive and accurate measure of the market is increasingly be
4、coming an important factor in competitiveness.With Chinas accession to the WTO, all walks of life are working hard to improve their own competitiveness, the restructuring of the telecommunications, enterprise information management processes to speed up a trend in the note:red file mainly traditiona
5、l,stressing the correspondence to deal with office automation will be gradually weakened from the dominant position, in order to emphasize the information services, knowledge management services-based enterprise information system will gradually replace the existing office automation.Shopping center
6、s such as the battlefield, the war is a new generation of information warfare and how this tool via the Internet to enable enterprises to improve information technology?This requires an efficient and stable system, office automation!Through the system, corporate bodies that exist in the information
7、office poor efficiency, such as a range of issues have been resolved.The idea of knowledge management into the business life of modern society, thus enhancing the modern enterprise level information has changed peoples lives. In this paper, mainly on the OA office automation system and the backgroun
8、d process some of the key technology. The system has information management, file transfer management, notification management, communication management, system maintenance functions, but also increasing customer demand of the majority of the browser,the player and other functions, so that can keep
9、abreast of the latest network resources can also easily create a atmosphere of the office.keywords : automation, management, ActiveX目 录第1章 系统分析1.1 需求分析 11.2 可行性分析 1第2章 总体设计2.1 项目规划 2 2.2 系统功能架构图 2第3章 数据库的设计3.1 数据表的概要说明 33.2 主要数据表的结构 3第4章 主要功能模块的设计 4.1 公共模块设计 64.2 登录界面设计 64.3 主界面设计 104.4 通知管理 144.5 新
10、闻管理 214.6 文件管理 244.7 交流管理 314.8 系统维护管理 35 4.9 其它模块 43第5章 问题分析与解决 5.1 由于“ADO”属性中记录源命令类型设置不同出现的问题51 5.2 如何利用CommonDialog 控件 525.3 ComboBox 控件设置为只读属性后,如何添加列表535.4 如何将多种格式的文件保存到数据库中 54结论致谢参考文献*学校毕业论文 第 1 章 系统分析1.1 需求分析通过调查,要求系统具有以下功能。*由于操作人员的计算机知识普遍较差,因此要求有良好的人机界面。*由于该系统的使用对象多,因此要有较好的权限管理。*方便数据的查询,修改。*信
11、息发布与文件传送的速度快。*通过座机能够直接“透视”公司的各项工作及活动安排。*用MSChart图表显示活动投票结果。*在相应的权限下,管理员可以删除数据 1.2 可行性分析 开发任何一个基于计算机的系统时,都会受到时间和资源上的限制。因此,在接受任何一个项目开发任务之前,必须根据客户可能提供的时间和资源条件进行可行性分析,以减少项目开发风险,避免人力、物力和财力的浪费。 本系统的数据库采用目前比较浒的SQL Server 2000,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据量大、效率高;前台采用Microsoft 公司的Visual Basic 6.0 作为主要的开
12、发工具,它可与SQL Server 2000 数据库无缝链接。第 2 章 总体设计2.1 项目规划 OA 办公自动化系统是一个典型的网络办公开发应用程序,它包含通知管理模块、新闻管理模块、文件管理模块、交流管理模块、系统维护管理模块等。(1)通知管理模块该模块主要负责信息的发布、接收等。(2)新闻管理模块 该模块主要负责新闻的发布、接收等。(3) 文件管理模块该模块主要负责文件的发布、接收等。(4)交流管理模块 该模块主要实现意见反馈、活动投票。(5) 系统维护管理模块该模块主要负责用户添加、删除,密码、权限的修改,意见箱的管理,投票活动管理。2.2 系统功能构架图系统构功能架图第3章 数据库
13、的设计3.1 数据库的概要说明系统数据库的名称为db_OA,包含有8张表,下面给出各数据表的作用。dbOA_user系统用户表用来存储系统操作员的基本信息tbOA_news新闻表主要用于存储新闻的发布信息。tbOA_notice通知表主要用来存储办公通知信息。tbOA_file文件数据表主要用来存储文件传送的基本信息。tbOA_idea意见表主要用于存储员工反馈的意见。tbOA_vote投票表主要用来存储活动投票的基本信息。tbOA_voteRecord活动投票记录表主要用来存储投票记录人,以避免重复投票。tbOA_dept部门表主要用来存储公司部门信息的表。3.2 主要数据表的结构表1 db
14、OA_user字段名数据类型长度主键否描述usernamevachar20Y用户名userjpwdvachar20N密码userbitbitN权限标记表2 tbOA_news字段名数据类型长度主键否描述news_idintY新闻IDnews_datedatetimeN新闻发布时间news_personvachar12N发布人news_acceptDeptvachar50N新闻接收部门news_acceptPersonvachar12N接收人news_bitbitN标记news_textvachar50N备注表3 tbOAnotice字段名数据类型长度主键否描述notice_idintY通知ID
15、notice_datedatetimeN通知时间notice_personvachar12N发布通知人notice_acceptDeptvachar30N通知部门notice_acceptPersonvachar12N通知人notice_bitbit1N标记notice_textvachar500N备注表4 tbOA_file字段名数据类型长度主键否描述file_idintYIDfile_subjectvarchar30N文件主题file_textvarchar50N文件描述file_personvarchar16N传送人file_deptvarchar30N接收部门file_namevarc
16、har16N接收人file_datedatetime8N传送日期file_fileimage16N文件file_typevarchar20N文件类型表5 tbOA_idea字段名数据类型长度主键否描述idear_idintY意见IDidear_subjectvarchar30N意见主题idear_textvarchar50N意见内容表6 tbOA_vote字段名数据类型长度主键否描述vote_idintY活动IDvote_subjectvarchar30N活动主题vote_memovarchar50N活动备注vote_qtyfloatN投票数量表7 tbOA_voteRecord字段名数据类型
17、长度主键否描述voteRecord_idintYIDvoteRecord_namevarchar16N投票人表8 tbOA_dept字段名数据类型长度主键否描述dept_idintY部门编号dept_namevarchar30N部门名称dept_describeText16N描述信息第 4 章 主要功能模块的设计4.1 公共模块设计为了节省系统资源,实现代码重用,可以在系统中新建一个Module1模块。就本系统而言,该模块主要用于实现数据库的共享连接。在以后的编程中,如果使用对象访问数据库或“ADO Data”控件访问数据库则可以直接将数据库连字符串的值赋给相应的“ ConnectionStr
18、ing ”属性,从而避免了重复建立数据库的麻烦,以防失去ADO+SQL的优越性能。代码如下:Public pstr As StringPublic Sub main()共享连接字符串pstr = Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;pwd=sa;Initial Catalog=db_OA;Data Source=A-PC调用frm_login窗口frm_login.ShowEnd Sub4.2 登录界面设计本系统属于OA办公自动化系统,用户权限分为系统管理员和普通用户两种。“系统登录”窗体用于难操作员及其密码,主
19、要通过打开数据库连接、打开数据结合if语句,判断用户输入的操作员及密码是否符合数据库中的操作员和密码,如果符合则允许登录,并给予相应的权限,否则提示用户不存在。1.窗体设计新建一个窗体,将窗体的BorderStyle 属性设置为“0-None”,设置Picture 属性,为窗体添加图片。添加两个“Label”控件,设置其 BackStyle 属性设置为“0-Transparent”。添加两个“TextBox”控件,设置其BorderStyle 属性为“0-None”。添加两个“CommondButton”控件,分别将其Caption属性设置为“登录”、“退出”。“系统登录”窗体的设计结果如下图
20、所示:图4.22. 代码设计双击“登录”按钮(labLogin)添加如下事件代码:Private Sub labLogin_Click()Set con = New ADODB.ConnectionSet rs = New ADODB.Recordsetcon.ConnectionString = pstrcon.Openmysql=select * from dbOA_user where user_name = + Text1.Text + rs.Open mysql, con判断是否存在用户 If rs.EOF Then MsgBox 没有这个用户,请重新输入用户名! con.Close
21、 Text1.Text = Text1.SetFocus 如果存在,判断用户输入的密码是否正确 Else If Trim(rs(user_pwd) = Trim(Text2.Text) Then rs.fields(1) = Text2.Text frm_login.Hide如果密码正确,判断用户权限,如果用户没有管理权限则设置主界面的TreeView控件的树状菜单为操作员的样式 If rs.Fields(2) = False Thenfrm_mainbefore.Showfrm_mainbefore.StatusBar1.Panels(1).Text = 操作职员: & Text1.Text
22、 显示系统时间frm_mainbefore.StatusBar1.Panels(2).Text = Format(Now, m/d/yy) 设置treeview控件的树状菜单 Set n1 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 通知管理, 通知管理, 1) Set node1 = frm_mainbefore.TreeView1.Nodes.Add(n1, tvwChild, 发布通知, 发布通知, 1) Set node1 = frm_mainbefore.TreeView1.Nodes.Add(n1, tvwChild, 接收通知
23、, 接收通知, 1) Set node1 = frm_mainbefore.TreeView1.Nodes.Add(n1, tvwChild, 已发通知, 已发通知, 1) Set n2 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 新闻管理, 新闻管理, 1) Set node2 = frm_mainbefore.TreeView1.Nodes.Add(n2, tvwChild, 新闻发布, 新闻发布, 1) Set node2 = frm_mainbefore.TreeView1.Nodes.Add(n2, tvwChild, 接收新闻,
24、 接收新闻, 1) Set node2 = frm_mainbefore.TreeView1.Nodes.Add(n2, tvwChild, 已发新闻, 已发新闻, 1) Set n3 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 文件传送, 文件传送, 1) Set node3 = frm_mainbefore.TreeView1.Nodes.Add(n3, tvwChild, 传送文件, 传送文件, 1) Set node3 = frm_mainbefore.TreeView1.Nodes.Add(n3, tvwChild, 接收文件,
25、接收文件, 1) Set node3 = frm_mainbefore.TreeView1.Nodes.Add(n3, tvwChild, 已发文件, 已发文件, 1) Set n4 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 交流管理, 交流管理, 1) Set node4 = frm_mainbefore.TreeView1.Nodes.Add(n4, tvwChild, 意见箱, 意见箱, 1) Set node4 = frm_mainbefore.TreeView1.Nodes.Add(n4, tvwChild, 投票活动, 投票活
26、动, 1) Else frm_mainbefore.Show 拥有操作权限,设置TreeView控件的树状菜单为管理员的样式 frm_mainbefore.StatusBar1.Panels(1).Text = 管理职员: & Text1.Textfrm_mainbefore.StatusBar1.Panels(2).Text = Format(Now, m/d/yy) Set n1 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 通知管理, 通知管理, 1) Set node1 = frm_mainbefore.TreeView1.Nodes
27、.Add(n1, tvwChild, 发布通知, 发布通知, 1) Set node1 = frm_mainbefore.TreeView1.Nodes.Add(n1, tvwChild, 接收通知, 接收通知, 1) Set node1 = frm_mainbefore.TreeView1.Nodes.Add(n1, tvwChild, 已发通知, 已发通知, 1) Set n2 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 新闻管理, 新闻管理, 1) Set node2 = frm_mainbefore.TreeView1.Nodes.
28、Add(n2, tvwChild, 新闻发布, 新闻发布, 1) Set node2 = frm_mainbefore.TreeView1.Nodes.Add(n2, tvwChild, 接收新闻, 接收新闻, 1) Set node2 = frm_mainbefore.TreeView1.Nodes.Add(n2, tvwChild, 已发新闻, 已发新闻, 1) Set n3 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 文件传送, 文件传送, 1) Set node3 = frm_mainbefore.TreeView1.Nodes.A
29、dd(n3, tvwChild, 传送文件, 传送文件, 1) Set node3 = frm_mainbefore.TreeView1.Nodes.Add(n3, tvwChild, 接收文件, 接收文件, 1) Set node3 = frm_mainbefore.TreeView1.Nodes.Add(n3, tvwChild, 已发文件, 已发文件, 1) Set n4 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 交流管理, 交流管理, 1) Set node4 = frm_mainbefore.TreeView1.Nodes.Ad
30、d(n4, tvwChild, 意见箱, 意见箱, 1) Set node4 = frm_mainbefore.TreeView1.Nodes.Add(n4, tvwChild, 投票活动, 投票活动, 1) Set n5 = frm_mainbefore.TreeView1.Nodes.Add(, tvwChild, 系统维护管理, 系统维护管理, 1) Set node5 = frm_mainbefore.TreeView1.Nodes.Add(n5, tvwChild, 投票管理, 投票管理, 1) Set node5 = frm_mainbefore.TreeView1.Nodes.A
31、dd(n5, tvwChild, 意见箱管理, 意见箱管理, 1) Set node5 = frm_mainbefore.TreeView1.Nodes.Add(n5, tvwChild, 添加用户, 添加用户, 1) Set node5 = frm_mainbefore.TreeView1.Nodes.Add(n5, tvwChild, 密码修改, 密码修改, 1) End If Else密码不正确则显示提示框MsgBox 输入密码不正确,请重新输入!,vbOKOnly + vbExclamation, 警告 con.Close Text2.Text = Text2.SetFocus End
32、 If End IfEnd Sub4.3 主界面设计 主界面主要包括树状菜单、工具栏、状态栏、时间显示以及显示OA办公系统的最新新闻和通知。1 窗体设计1)新建一个窗体,将窗体的“Caption”属性设置为“OA办公自动化系统”,设置“BackColor”属性为窗体选择合适的背景颜色。2)添加“ImageList”控件。该控件属于ActiveX控件,在使用之前必须从“部件”对话框中将其添加到工具箱中。添加方法为:在“部件”对话框中选中“ Microsoft Windows Common Controls 6.0(SP6)”列表项。3)向窗体中添加“Treeview”控件,设置其“Appeara
33、nce”属性为“0-ccfat”。“TreeView”控件属于“ActiveX”rpwr ,使用前必须将其添加到工具箱中。为了使“ImageList”控件中的图像能够顺利地显示在“TreeView”控件的节点中,需将“ImageList”绑定到“TreeView”控件上,绑定方法为:在“TreeView”控件上单击鼠标右键,在弹出的菜单中选择“属性”命令,弹出“属性页”对话框,然后将图像列表属性设置为“ImageList1”4)添加“MSHFlexGrid”控件,该控件属于Active控件,在使用之前必须将“MSHFlexGrid”控件添加到工具箱中,添加方法为:在“部件”对话框中选中“Mic
34、rosoft Hierarchical FlexGrid Control 6.0”列表项,添加两个MSHFlexGrid控件,“MSHFlexgrid1”和“MSHFlexGrid2”控件。5)添加“StatusBar”(状态栏)控件,它主要用来显示操作员信息、系统时间及公司名称网站。该控件属于“ActiveX”控件,添加“ImaggeList”控件时已经将该控件添加到工具箱中。“StatusBar”控件的名称为默认名,单击鼠标右键,在弹出的菜单中选择“属性页”命令,为“StatusBar”控件添加3个窗格,第一个窗格显示系统操作员、第二个窗格显示系统日期、第三个窗格显示公司名称和网址。主界面
35、的运行结果如下图所示:图4.32 代码设计 当窗体激活时,将“TreeView”控件中所有的节点展开。在“Form”窗体的“Activate”事件下添加如下代码:激活窗体的Activate事件,Private Sub Form_Activate() For i = 1 To TreeView1.Nodes.Count 展开全部节点 TreeView1.Nodes(i).Expanded = True Next iEnd Sub单击树状菜单中的菜单,根据所选择的菜单显示相应的窗体。在“TreeView”控件的NodeClick事件下添加如下代码:单击树状菜单中的菜单时,根据所选择的菜单显示相应的
36、窗体Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)key 返回设置字符串,在集合中唯一的标识一个成员If TreeView1.SelectedItem.Key = 发布通知 Then FrmNotice_issue.ShowIf TreeView1.SelectedItem.Key = 接收通知 Then FrmNotice_incept.ShowIf TreeView1.SelectedItem.Key = 已发通知 Then FrmNotice_toNoice.ShowIf TreeView1.Selected
37、Item.Key = 新闻发布 Then frmNews_issue.ShowIf TreeView1.SelectedItem.Key = 接收新闻 Then FrmNews_incept.ShowIf TreeView1.SelectedItem.Key = 已发新闻 Then FrmNews_toNews.ShowIf TreeView1.SelectedItem.Key = 传送文件 Then FrmFile.ShowIf TreeView1.SelectedItem.Key = 接收文件 Then FrmFile_incept.ShowIf TreeView1.SelectedIte
38、m.Key = 已发文件 Then FrmFile_toFile.ShowIf TreeView1.SelectedItem.Key = 意见箱 Then FrmAC_idea.ShowIf TreeView1.SelectedItem.Key = 投票活动 Then frmAC_vote.ShowIf TreeView1.SelectedItem.Key = 投票管理 Then frmSys_vote.ShowIf TreeView1.SelectedItem.Key = 意见箱管理 Then FrmSys_idear.ShowIf TreeView1.SelectedItem.Key =
39、添加用户 Then frmUser_add.ShowIf TreeView1.SelectedItem.Key = 密码修改 Then frmPwd_Change.ShowEnd Sub在“Form”窗体的装载过程中,将最新的新闻和通知显示在MSHFlexGrid表格中。Private Sub Form_Load()设置新闻 Me.Icon = Image1.PictureadoNews.ConnectionString = pstr Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;pwd=sa;Initial Catalo
40、g=db_OA 检索最新的8条新闻adoNews.RecordSource = select top 8 news_date,news_text from tboa_news order by news_date descadoNews.RefreshSet MSHFlexGrid1.DataSource = adoNewsCall setNewsDataGrid_Caption设置通知adoNotice.ConnectionString = pstradoNotice.RecordSource = select top 8 notice_date,notice_person,notice_a
41、cceptdept,notice_acceptperson,notice_text from tboa_notice order by notice_date descadoNotice.RefreshSet MSHFlexGrid2.DataSource = adoNoticeCall setNoticeDataGrid_CaptionEnd Sub每隔一分钟就更新一次最新新闻和最新通知。在“Timer”控件的“Timer”事件下添加如下代码。Private Sub Timer1_Timer()labTime.Caption = NowIf labTime.Caption CStr(Now)
42、 ThenlabTime.Caption = Now刷新新闻adoNews.ConnectionString = pstradoNews.RecordSource = select top 8 news_date,news_text from tboa_news order by news_date descadoNews.RefreshCall setNewsDataGrid_Caption刷新通知adoNotice.RecordSource = select top 8 notice_date,notice_person,notice_acceptdept,notice_acceptperson,notice_text from tboa_notice order by notice_date desc adoNotice.RefreshCall setNoticeDataGrid_Caption