OA办公自动化系统 毕业设计 论文1_第1页
OA办公自动化系统 毕业设计 论文1_第2页
OA办公自动化系统 毕业设计 论文1_第3页
OA办公自动化系统 毕业设计 论文1_第4页
OA办公自动化系统 毕业设计 论文1_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/OA办公自动化系统学院专业班级学号姓名指导教师教师职称年月日摘要【摘要】系统针对企业机关办公中存在的信息不畅、效率底下、操作不规范等一系列问题。用信息化的手段和新一代规范等一系列问题。用信息化手段和新一代的管理思想提供了强有力的网络化、电子化支持。把协同办公的理念、知识管理的思想带入了现代社会的办公生活,从而提升了现代企业的信息化程度,改变了人们的生活。【关键词】OA办公自动化目录摘要 1目录 1引言 11系统分析 21.1需求分析 21.2可行性分析 22总体设计 22.1项目规划 22.2系统工作原理网络结构图 22.3系统功能结构图 33详细设计 33.1公共模块设计 33.2系统登录设计 43.3主界面设计 63.4新闻管理 93.5传送文件 133.6文件接收 153.7投票活动管理 18附录A参考文献 21附录B数据表结构 22附录C文件架构图 25引言在市场竞争过程中,对于一个企业而言,对信息的掌握程度、信息获取是否与时、信息能否得到充分的利用、对信息的反应是否敏感准确,也越来越成为衡量一个企业市场竞争能力的重要因素。商场如战场,新一代的战争是信息化战争,如何使企业信息化建设完善起来?在这种情况下,开发OA办公自动化系统是当务之急的事了。本系统是以新闻发布、文件传送为核心的办公自动化系统,是一套集新闻管理、文件传送管理、信息发布、人事管理、局域网短消息快速传送等5部分为一体的办公自动化系统。该系统除了必须满足当前的应用要求外,在整套系统的设计过程中,还专门强调了其先进性与可扩展性。当前的信息技术日新月异,如果这套系统只着眼于当前的需求,而忽视了对系统技术的前瞻性,可以在不久的将来,系统必将不能满足客户日益增长的需求,导致系统的生命周期缩短,从而增加客户在信息化建设上的投资。

1系统分析1.1需求分析通过调查,要求系统需要有以下功能:由于操作人员的计算机知识普遍较差,那么就要求有良好的人机界面。由于该系统的使用对象多,要求有较好的权限管理。原始数据修改简单方便,支持多条件修改。方便的数据查询,支持多条件查询。信息发布与文件传送速度快。通过计算机,能够直接“透视”公司的各项工作与活动安排。图表分析活动投票管理。在相应的权限下,删除数据方便简单,数据稳定性好。1.2可行性分析开发任何一个基于计算机的系统,都会受到时间和资源上的限制。因此,在接受任何一个项目开发任务之前,必须根据客户可能提供的时间和资源条件进行可行性分析,以减少项目开发风险,避免人力、物力和财力的浪费。本系统数据库采用目前比较流行的MicrosoftSQLServer,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据库量大,效率高;前台采用Microsoft公司的VisualBasic6.0作为主要的开发工具,其可与SQLServer2000数据库无缝链接。2总体设计2.1项目规划OA办公自动化系统是一个典型的网络办公开发应用程序,包含通知管理模块、新闻管理模块、文件传送管理模块、交流管理模块、系统维护管理模块5部分组成,规划系统功能模块如下:通知管理模块该模块主要负责信息的发布、接收等。新闻管理模块该模块的主要负责新闻的发布、接收等。文件传送管理模块该模块主要负责文件的传送与接收等。交流管理模块该模块主要实现意见反馈、活动投票、短消息服务(局域网)。系统维护管理模块部门信息的基础设置、职员信息的基础设置、投票活动管理设置、系统操作员与权限设置。2.2系统工作原理网络结构图系统工作原理网络结构图如图1所示。图1系统工作原理网络结构图2.3系统功能结构图图2系统功能结构图3详细设计3.1公共模块设计为了节省系统资源,实现代码重用,可以在系统中新建一个Modulel模块。就本系统而言,该模块主要实现数据库安装和共享数据库连接。系统第一次使用时,根据用户设置的DataBase.ini配置文件,将数据库文件(db_OA_Data.MDF)和数据库日志文件(db_OA_Log.LDF)自动安装到指定的SQLServer数据库服务器上。为了优化ADO+SQL数据库的连接,在公共模块(Module1)中建立数据库连接共享字符串。在以后的编程中,如果使用对象访问数据库或ADOData控件访问数据库,则可以直接将数据库共享连接字符串(PublicStr)值赋值给相应的ConnectionString属性,从而避免了重复建立数据库连接的麻烦,而失去了ADO+SQL的优越性能。模块中代码如下:PublicPublicStrAsStringDimconAsNewADODB.Connection,rsAsNewADODB.RecordsetDimStrAsString,ServerAsString,uidAsString,DimpwdAsStringPublicSubmain()'读取数据库配置文件Open(App.Path&"\DataBase.ini")ForInputAs#1LineInput#1,IntextServer=Mid(Intext,10,Len(Trim(Intext))-9)LineInput#1,Intextuid=Mid(Intext,7,Len(Trim(Intext))-6)LineInput#1,Intextpwd=Mid(Intext,7,Len(Trim(Intext))-6)Close#1'附加数据库OnErrorResumeNextcon.ConnectionString="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID="&uid&";PWD="&pwd&";InitialCatalog=db_OA;DataSource="&Server&""con.Open'打开数据库连接Setrs=NewADODB.Recordset'开始附加数据库Str="EXECsp_attach_db@dbname=N'db_SSS',@=N'"+App.Path+"\DataBase\db_OA_Data.MDF"+"',@=N'"+App.Path+"\DataBase\db_OA_Log.LDF"+"'"'rs.Openstr,con,1,adLockOptimisticSetrs=con.Execute(Str)con.Close'关闭数据库连接'共享连接字符串PublicStr="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID="&uid&";PWD="&pwd&";InitialCatalog=db_OA;DataSource="&Server&""frm_login.ShowEndSub3.2系统登录设计本系统属于OA办公自动化系统,用户权限分为两种:系统管理员和普通用户。系统登录验证操作员与其密码,主要通过记录集结果(RecordSet)结合If语句,判断用户输入的操作员与密码是否符合数据库中的操作员和密码,如果符合则允许登录,并给予相应的权限,否则提示用户非法登录。1.窗体设计(1)新建一个窗体,将窗体的“名称”属性设置为frm_login,BorderStyle属性设置为0-None,设置Picture属性,为窗体添加背景图片。(2)添加Adodc控件,设置名称为adoLogin,Visible属性为False,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框将其添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“MicrosoftAdoDataControls6.0(SP4)”列表项。(3)添加2个TextBox控件,分别设置名称(Name属性)为Text1和Text2,设置BorderStyle属性为0-None。(4)添加2个Label控件,将名称设置为labLogin和labEnd,BackStyle属性为0-Transparent。系统登录窗体的设计结果如图3所示。图3系统登录窗体设计2.代码设计单击名称为labLogin的Label控件用来进行用户安全性检查,如果用户名称和密码正确,则进入系统并分配相应的权限。在Label控件名称为labLogin的Click事件下,添加代码如下:PrivateSublabLogin_Click()adoLogin.ConnectionString=PublicStradoLogin.RecordSource="select*fromtbOA_userwhereusername='"+Text1.Text+"'anduserpwd='"+Text2.Text+"'"adoLogin.RefreshIfadoLogin.Recordset.RecordCount>0ThenIfadoLogin.Recordset.Fields(2).Value=0Thenfrm_mainBefore.Showfrm_mainBefore.System.Enabled=False'权限约束frm_mainBefore.StatusBar1.Panels(1).Text="操作职员:"&Text1.Text'设置控件TreeView树状菜单Setn1=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"通知管理","通知管理",1)Setnode1=frm_mainBefore.TreeView1.Nodes.Add(n1.Index,tvwChild,"发布通知","发布通知",1)Setnode1=frm_mainBefore.TreeView1.Nodes.Add(n1.Index,tvwChild,"接收通知","接收通知",1)Setnode1=frm_mainBefore.TreeView1.Nodes.Add(n1.Index,tvwChild,"已发通知","已发通知",1)Setn2=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"新闻管理","新闻管理",1)Setnnode2=frm_mainBefore.TreeView1.Nodes.Add(n2.Index,tvwChild,"新闻发布","新闻发布",1)Setnode2=frm_mainBefore.TreeView1.Nodes.Add(n2.Index,tvwChild,"接收新闻","接收新闻",1)Setnode2=frm_mainBefore.TreeView1.Nodes.Add(n2.Index,tvwChild,"已发新闻","已发新闻",1)Setn4=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"文件传送","文件传送",1)Setnnode4=frm_mainBefore.TreeView1.Nodes.Add(n4.Index,tvwChild,"传送文件","传送文件",1)Setnode4=frm_mainBefore.TreeView1.Nodes.Add(n4.Index,tvwChild,"接收文件","接收文件",1)Setnode4=frm_mainBefore.TreeView1.Nodes.Add(n4.Index,tvwChild,"已发文件","已发文件",1)Setn3=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"交流管理","交流管理",1)Setnode3=frm_mainBefore.TreeView1.Nodes.Add(n3.Index,tvwChild,"意见箱","意见箱",1)Setnode3=frm_mainBefore.TreeView1.Nodes.Add(n3.Index,tvwChild,"投票活动","投票活动",1)Setnode3=frm_mainBefore.TreeView1.Nodes.Add(n3.Index,tvwChild,"短消息服务","短消息服务",1)Elsefrm_mainBefore.Showfrm_mainBefore.StatusBar1.Panels(1).Text="操作职员:"&Text1.Text'设置控件TreeView树状菜单Setn1=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"通知管理","通知管理",1)Setnode1=frm_mainBefore.TreeView1.Nodes.Add(n1.Index,tvwChild,"发布通知","发布通知",1)Setnode1=frm_mainBefore.TreeView1.Nodes.Add(n1.Index,tvwChild,"接收通知","接收通知",1)Setnode1=frm_mainBefore.TreeView1.Nodes.Add(n1.Index,tvwChild,"已发通知","已发通知",1)Setn2=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"新闻管理","新闻管理",1)Setnnode2=frm_mainBefore.TreeView1.Nodes.Add(n2.Index,tvwChild,"新闻发布","新闻发布",1)Setnode2=frm_mainBefore.TreeView1.Nodes.Add(n2.Index,tvwChild,"接收新闻","接收新闻",1)Setnode2=frm_mainBefore.TreeView1.Nodes.Add(n2.Index,tvwChild,"已发新闻","已发新闻",1)Setn4=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"文件传送","文件传送",1)Setnnode4=frm_mainBefore.TreeView1.Nodes.Add(n4.Index,tvwChild,"传送文件","传送文件",1)Setnode4=frm_mainBefore.TreeView1.Nodes.Add(n4.Index,tvwChild,"接收文件","接收文件",1)Setnode4=frm_mainBefore.TreeView1.Nodes.Add(n4.Index,tvwChild,"已发文件","已发文件",1)Setn3=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"交流管理","交流管理",1)Setnode3=frm_mainBefore.TreeView1.Nodes.Add(n3.Index,tvwChild,"意见箱","意见箱",1)Setnode3=frm_mainBefore.TreeView1.Nodes.Add(n3.Index,tvwChild,"投票活动","投票活动",1)Setnode3=frm_mainBefore.TreeView1.Nodes.Add(n3.Index,tvwChild,"短消息服务","短消息服务",1)Setn5=frm_mainBefore.TreeView1.Nodes.Add(,tvwChild,"系统维护管理","系统维护管理",1)Setnode5=frm_mainBefore.TreeView1.Nodes.Add(n5.Index,tvwChild,"人事管理","人事管理",1)Setnode5=frm_mainBefore.TreeView1.Nodes.Add(n5.Index,tvwChild,"投票管理","投票管理",1)Setnode5=frm_mainBefore.TreeView1.Nodes.Add(n5.Index,tvwChild,"意见箱管理","意见箱管理",1)Setnode5=frm_mainBefore.TreeView1.Nodes.Add(n5.Index,tvwChild,"系统设置","系统设置",1)EndIfUnloadMeEndIfEndSub3.3主界面设计主界面主要包括菜单、树状菜单(TreeView控件实现)、状态栏以与显示OA办公系统的最新新闻和最新通知。界面设计简单明了,为用户提供便捷的访问途径,把一些具有共性的命令集中于一个简单的菜单之下。状态栏将显示系统运行时间、公司信息和操作员信息,其中状态栏上的操作员信息主要通过“系统登录窗体”中“登录操作员”项传递而得到的。主界面运行结果如图4所示。图4主界面1.窗体设计(1)新建1个窗体,将窗体的“名称”属性设置为frm_mainBefore,Caption属性为“★OA办公自动化系统★”,MaxButton属性为False,设置Picture属性,为窗体添加背景图片。(2)为窗体设计菜单。(3)添加ImageList控件,使用默认名称,该控件属于ActiveX控件,在使用之前必须从“部件”对话框将其添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“MicrosoftWindowsCommonControls6.0(SP6)”列表项。(4)添加MSHFlexGrid控件,该控件属于ActiveX控件,使用之前必须将MSHFlexGrid控件添加到工具箱中,添加方法为:在“工程”/“部件”对话框中勾选“MicrosoftHierarchicalFlexGridControl6.0”列表,添加2个MSHFlexGrid控件,名称分别为MSHFlexGrid1和MSHFlexGrid2,二者的属性完全相同,主要设置控件的背景色、前景色与表格颜色,方法为:在控件上单击鼠标右键选择“属性”菜单,弹出“属性页”选择“颜色”选项卡设置控件的相关颜色,如图5所示。图5设置MSHFlexGrid控件颜色属性(5)添加StatusBar(状态栏)控件,主要用来显示系统操作员信息、系统时间与公司名称和网站。该控件属于ActiveX控件,添加ImageList控件时已经将该控件添加到工具箱中。StatusBar控件的名称为默认名,单击鼠标右键打开“属性页”,为StatusBar控件添加3个窗格,第1个窗格显示系统操作员、第2个窗格显示系统日期、第3个窗格显示公司名称和网址,该控件的属性设置方法在前面的章节中已经详细讲解过了,这里就不做介绍了。2.程序代码设计当窗体激活时,将TreeView控件中所有的节点展开。在Form窗体的Activate事件下添加如下代码:PrivateSubForm_Activate()Fori=1ToTreeView1.Nodes.Count'展开全部节点TreeView1.Nodes(i).Expanded=TrueNextiEndSub单击树状菜单中的菜单,根据所选择的菜单显示相应的窗体。在TreeView控件的NodeClick事件下添加代码如下:PrivateSubTreeView1_NodeClick(ByValNodeAsMSComctlLib.Node)IfTreeView1.SelectedItem.Key="发布通知"ThenfrmNotice_issue.ShowIfTreeView1.SelectedItem.Key="接收通知"ThenfrmNotice_incept.ShowIfTreeView1.SelectedItem.Key="已发通知"ThenfrmNotice_toVoice.ShowIfTreeView1.SelectedItem.Key="新闻发布"ThenfrmNews_issue.ShowIfTreeView1.SelectedItem.Key="接收新闻"ThenfrmNews_incept.ShowIfTreeView1.SelectedItem.Key="已发新闻"ThenfrmNews_toNews.ShowIfTreeView1.SelectedItem.Key="新闻发布"ThenfrmNews_issue.ShowIfTreeView1.SelectedItem.Key="接收新闻"ThenfrmNews_incept.ShowIfTreeView1.SelectedItem.Key="已发新闻"ThenfrmNews_toNews.ShowIfTreeView1.SelectedItem.Key="传送文件"ThenfrmIfTreeView1.SelectedItem.Key="接收文件"ThenfrmIfTreeView1.SelectedItem.Key="已发文件"ThenfrmIfTreeView1.SelectedItem.Key="意见箱"ThenfrmAC_idear.ShowIfTreeView1.SelectedItem.Key="投票活动"ThenfrmAC_vote.ShowIfTreeView1.SelectedItem.Key="短消息服务"ThenfrmAC_QQ.ShowIfTreeView1.SelectedItem.Key="人事管理"ThenfrmSys_person.ShowIfTreeView1.SelectedItem.Key="投票管理"ThenfrmSys_vote.ShowIfTreeView1.SelectedItem.Key="意见箱管理"ThenfrmSys_idear.ShowIfTreeView1.SelectedItem.Key="系统设置"ThenfrmSys_sys.ShowEndSub在Form窗体的装载过程中,将最新的新闻和通知显示在MSHFlexGrid表格中。PrivateSubForm_Load()'////设置NEWSadoNews.ConnectionString=PublicStradoNews.RecordSource="SELECTnews_date,news_textFROMtbOA_newsWHERE(news_acceptPerson='"&frm_login.Text1&"')ORDERBYnews_dateDESC"adoNews.RefreshSetMSHFlexGrid2.DataSource=adoNewsCallsetNewsDataGrid_Caption'/////设置通知adoNotice.ConnectionString=PublicStradoNotice.RecordSource="SELECTnotice_date,notice_person,notice_acceptDept,notice_acceptPerson,notice_textFROMtbOA_noticeWHERE(notice_acceptPerson='"&frm_login.Text1&"')ORDERBYnotice_dateDESC"adoNotice.RefreshSetMSHFlexGrid1.DataSource=adoNoticeCallsetNoticeDataGrid_CaptionEndSub每隔一分多钟就更新一次最新新闻和最新通知。在Timer控件的Timer事件下添加如下代码:PrivateSubTimer1_Timer()'////设置NEWSadoNews.RecordSource="SELECTnews_date,news_textFROMtbOA_newsWHERE(news_acceptPerson='"&Mid(StatusBar1.Panels(1).Text,6,Len(StatusBar1.Panels(1).Text)-5)&"')ORDERBYnews_dateDESC"adoNews.RefreshCallsetNewsDataGrid_Caption'//////设置通知adoNotice.RecordSource="SELECTnotice_date,notice_person,notice_acceptDept,notice_acceptPerson,notice_textFROMtbOA_noticeWHERE(notice_acceptPerson='"&Mid(StatusBar1.Panels(1).Text,6,Len(StatusBar1.Panels(1).Text)-5)&"')ORDERBYnotice_dateDESC"adoNotice.RefreshCallsetNoticeDataGrid_Caption'调用自定义过程EndSub自定义过程setNewsDataGrid_Caption()用来初始化新闻MSHFlexGrid2控件的列标题和表格宽度。SubsetNewsDataGrid_Caption()‘初始化行序号Fori=1ToadoNews.Recordset.RecordCountMSHFlexGrid2.TextMatrix(i,0)=iNext‘初始化表格标题和列宽MSHFlexGrid2.TextMatrix(0,0)="序号":MSHFlexGrid2.TextMatrix(0,1)="发布日期"MSHFlexGrid2.TextMatrix(0,2)="新闻内容":MSHFlexGrid2.ColWidth(0)=400MSHFlexGrid2.ColWidth(1)=1000:MSHFlexGrid2.ColWidth(2)=6700EndSub3.4新闻管理新闻管理包含3个部分:新闻发布、新闻接收、已发新闻。其中新闻发布用来将新闻发布给某部门中某人;新闻接收用来接收其他职员发布新闻;已发新闻用来浏览将新闻发布给其他职员的新闻。下面笔者分别讲解新闻发布、新闻接收和已发新闻的开发过程。1.新闻发布新闻管理窗体的设计结果如图6所示。图6新闻发布设计图(1)新建1个窗体,设置窗体的“名称”属性为frmNews_issue、Caption属性为“新闻发布”,MaxButton属性为False。(2)在窗体中添加4个Label控件、2个Combo控件、3个ADO控件、2个TextBox控件和2个CommandButton控件。(3)添加DTPicker控件,该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“MicrosoftWindowsCommonControls2.6.0”列表项,添加DTPicker控件后,其名称为默认的DTPicker1。(4)程序代码。新闻发布就是将要发布的新闻按部门、职员和新闻数据存储到tbOA_news数据表中。在【发布新闻】按钮的Click事件下添加如下代码:PrivateSubcmdSave_Click()adoNews.Recordset.AddNewadoNews.Recordset.Fields(1).Value=DTPicker1.ValueadoNews.Recordset.Fields(2).Value=Text2.TextadoNews.Recordset.Fields(3).Value=Combo1.TextadoNews.Recordset.Fields(4).Value=Combo2.TextadoNews.Recordset.Fields(5).Value=0adoNews.Recordset.Fields(6).Value=Text1.TextadoNews.Recordset.UpdateMsgBox"通知发布成功!",vbInformationEndSubForm窗体载入时,主要实现以下功能:(1)建立adoNews控件和adoDept控件数据库连接。(2)为Combo1控件中添加部门名称数据。(3)获取系统操作职员姓名,并通过Text2控件显示出来。(4)使DTPicker1控件显示系统当前日期。Form窗体的Load事件过程中的代码如下:PrivateSubForm_Load()adoNews.ConnectionString=PublicStr‘建立数据库连接adoNews.RecordSource="select*fromtbOA_news"‘检索数据表数据adoNews.RefreshadoDept.ConnectionString=PublicStradoDept.RecordSource="select*fromtbOA_dept"adoDept.RefreshFori=0ToadoDept.Recordset.RecordCount–1‘将所有部门名称添加到Combo1中Combo1.AddItemadoDept.Recordset.Fields(1).ValueadoDept.Recordset.MoveNextNextiText2.Text=Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)‘获取操作员姓名DTPicker1.Value=Date‘显示系统当前日期EndSub在Combo1控件中选择不同的部门,检索该部门的所有员工并将其添加到Combo2控件中。Combo1控件Click事件的代码如下:PrivateSubCombo1_Click()Combo2.ClearadoEmployee.ConnectionString=PublicStradoEmployee.RecordSource="select*fromtbOA_employee"adoEmployee.RefreshFori=0ToadoEmployee.Recordset.RecordCount-1Combo2.AddItemadoEmployee.Recordset.Fields(1).ValueadoEmployee.Recordset.MoveNextNextiEndSub2.新闻接收新闻接收窗体的设计结果如图7所示。图7新闻接收设计图(1)新建一个窗体,设置窗体的“名称”属性为frmNews_incept、Caption属性为“新闻接收”、MaxButton属性为False。(2)添加4个ComandButton控件和1个Adodc控件。(3)添加2个DTPicker控件,名称分别为DTPicker1和DTPicker2。(4)添加DataGrid控件,使用默认名称。(5)程序代码。在窗体装载过程中,将adoNews控件查询的数据通过DataGrid控件显示,代码如下:PrivateSubForm_Load()adoNews.ConnectionString=PublicStr‘建立数据库连接‘数据库查询(以日期为标准降序查询)adoNews.RecordSource="select*fromtbOA_newswherenews_acceptPerson='"+Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)+"'orderbynews_datedesc"adoNews.RefreshSetDataGrid1.DataSource=adoNews‘将数据源绑定到DataGrid表格中CallsetDataGrid_CaptionEndSub通过鼠标选择DataGrid表格中数据,然后单击【删除】按钮,将选中的数据删除,代码如下:PrivateSubcmdDel_Click()OnErrorResumeNextadoNews.Recordset.DeleteEndSub在日期输入框输入开始日期和截止日期后,单击【查询】按钮,将在DataGrid控件中显示相应查询结果,代码如下:PrivateSubcmdFind_Click()adoNews.ConnectionString=PublicStradoNews.RecordSource="select*fromtbOA_newswherenews_datebetween'"&DTPicker1.Value&"'and'"&DTPicker2.Value&"'andnews_acceptPerson='"+Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)+"'orderbynews_datedesc"adoNews.RefreshSetDataGrid1.DataSource=adoNewsCallsetDataGrid_Caption‘调用自定义过程EndSub单击【显示所有新闻】按钮后,显示系统操作职员接收到的所有新闻,代码如下:PrivateSubCommand1_Click()adoNews.ConnectionString=PublicStradoNews.RecordSource="select*fromtbOA_newswherenews_acceptPerson='"+Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)+"'orderbynews_datedesc"adoNews.RefreshSetDataGrid1.DataSource=adoNewsCallsetDataGrid_CaptionEndSub由于本系统数据表中的字段都是英文字段,因此将ADOData控件绑定到DataGrid控件后,DataGrid控件的列标题都为英文字段名称,为方便用户使用,笔者在此建立了setDataGrid_Caption()过程,该过程主要用于设置DataGrid控件的列标题和列宽,代码如下:SubsetDataGrid_Caption()DataGrid1.Columns(0).Caption="序号"DataGrid1.Columns(1).Caption="通日期"DataGrid1.Columns(2).Caption="发布新闻人"DataGrid1.Columns(3).Caption="接收部门"DataGrid1.Columns(4).Caption="接收人"DataGrid1.Columns(5).Visible=FalseDataGrid1.Columns(6).Caption="新闻内容"DataGrid1.Columns(0).Width=600DataGrid1.Columns(1).Width=1000DataGrid1.Columns(2).Width=1000DataGrid1.Columns(3).Width=2000DataGrid1.Columns(4).Width=1000DataGrid1.Columns(6).Width=4000EndSub3.已发新闻已发新闻窗体的设计结果如图8所示。图8已发新闻窗体设计图(1)新建1个窗体,将窗体的“名称”属性设置为frmNews_toNews,设置Caption属性为“已发布新闻”,设置MaxButton属性为False。(2)添加ADO控件,设置“名称”属性为adoNews,设置Visible属性为False;添加DataGrid控件“名称”属性为默认名称DataGrid1;添加CommandButton控件名称为默认名称、其Caption属性为“退出”。(3)程序代码。在窗体装载过程中,将adoNews控件查询的数据通过DataGrid控件显示,代码如下:PrivateSubForm_Load()adoNews.ConnectionString=PublicStradoNews.RecordSource="select*fromtbOA_newswherenews_person='"+Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)+"'"adoNews.RefreshSetDataGrid1.DataSource=adoNewsCallsetDataGrid_CaptionEndSub'此处代码,请参见光盘3.5传送文件文件传送在OA办公自动化系统中占据很重要的位置,本系统文件传送可以传送多种类型的文件(如EXE,BAT,RAR,FRM,DOC等等)。传送文件窗体的设计结果如图9所示。图9传送文件窗体设计结果1.窗体设计(1)新建1个窗体,设置窗体“名称”属性为frm属性为“文件传送”、MaxButton属性为False。(2)添加2个Combo控件、4个TextBox控件、3个CommandButton控件,其属性设置如图8.21所示。(3)添加2个ADO控件,名称分别为adoDept和adoEmployee,其Visible属性均为False。(4)添加1个DTPicker控件,默认名称为DTPicker1。(5)添加CommonDialog控件,默认名称CommonDialog1。CommonDialog控件为ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“MicrosoftCommonDialog6.0”列表项。2.程序代码设计在Form窗体装载中,主要实现以下功能:(1)建立adoDept控件数据库连接。(2)为Combo1控件中添加部门名称数据。(3)获取系统操作职员姓名,并通过txtName控件显示出来。(4)使DTPicker1控件显示系统当前日期。在Form窗体的Load事件添加如下代码:PrivateSubForm_Load()adoDept.ConnectionString=PublicStradoDept.RecordSource="select*fromtbOA_dept"adoDept.RefreshFori=0ToadoDept.Recordset.RecordCount-1Combo1.AddItemadoDept.Recordset.Fields(1).ValueadoDept.Recordset.MoveNextNextitxtName.Text=Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)DTPicker1.Value=DateEndSub单击【传送文件】按钮,将相应的文件数据保存到数据库中,代码如下:PrivateSubcmdSave_Click()DimcnAsADODB.Connection,rsAsADODB.Recordset,mstAsADODB.StreamMe.MousePointer=11Setcn=NewADODB.Connectioncn.ConnectionString="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=db_OA;DataSource=MRZYT"cn.OpenSetrs=NewADODB.Recordsetrs.Open"select*fromtbOA_file",cn,adOpenStatic,adLockOptimisticSetmst=NewADODB.Streammst.Type=adTypeBinarymst.Openmst.LoadFromrs.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.Fields(7).Value=mst.Read:rs.Fields(8).Value=rs.Updaters.Close:cn.CloseMe.MousePointer=0MsgBox"文件传送成功!",vbInformationEndSub在Combo1控件中选择部门,将检索该部门的所有员工,并将其添加到Combo2控件中。Combo1控件的Click事件下代码如下:PrivateSubCombo1_Click()Combo2.ClearadoEmployee.ConnectionString=PublicStradoEmployee.RecordSource="select*fromtbOA_employeewheree_dept='"&Combo1.Text&"'"adoEmployee.RefreshFori=0ToadoEmployee.Recordset.RecordCount-1Combo2.AddItemadoEmployee.Recordset.Fields(1).ValueadoEmployee.Recordset.MoveNextNextiEndSub单击【浏览文件】按钮,选择将要传送的文件,代码如下:PrivateSubcmd()CommonDialog1.ShowOpentxt=CommonDialog1.:=CommonDialog1.EndSub3.6文件接收文件接收窗体主要用来接收其他员工传送来的文件,并且将文件下载保存到本机器中。本窗体主要实现的功能为:以日期为标准查询接收文件、下载接收文件、删除接收文件、显示所有接收文件。文件接收窗体的设计结果如图10所示。图10文件接收窗体设计结果1.窗体设计(1)新建一个窗体,设置窗体“名称”属性为frm,Caption属性为“文件接收”,MaxButton属性为False。(2)添加4个CommandButton按钮控件,名称分别为cmdFind、cmdDel、Command1、Command2,其Caption属性为“查询”、“删除文件记录”、“显示所有文件”和“退出”。(3)添加ADO控件和DataGrid控件,设置名称分别为ado。(4)添加2个DTPicker控件名称分别为DTPicker1和DTPicker2。2.程序代码设计在本窗体中声明变量,代码如下:PublicAsStringDimcnAsADODB.Connection,rsAsADODB.Recordset,mstAsADODB.Stream在窗体的装载过程中,查询系统操作职员接收的所有文件,并通过DataGrid控件显示,代码如下:PrivateSubForm_Load()ado=PublicStrado="select*fromtbOA_'"+Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)+"'orderbydesc"adoSetDataGrid1.DataSource=adoFile‘将数据源绑定到DataGrid表格上CallsetDataGrid_CaptionEndSub通过鼠标选择DataGrid表格中数据,然后单击【删除文件记录】按钮,将选中的文件数据删除。下面是【删除】按钮的Click事件代码:PrivateSubcmdDel_Click()OnErrorResumeNext‘当数据表中没有数据时,进行错误处理adoEndSub在日期输入框输入开始日期和截止日期后,单击【查询】按钮,将查询结果显示在DataGrid控件中,代码如下:PrivateSubcmdFind_Click()ado="select*fromtbOA_'"+Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)+"'andbetween'"&DTPicker1.Value&"'and'"&DTPicker2.Value&"'"adoCallsetDataGrid_CaptionEndSubPrivateSubCommand1_Click()ado=PublicStrado="select*fromtbOA_'"+Mid(frm_mainBefore.StatusBar1.Panels(1).Text,6,Len(frm_mainBefore.StatusBar1.Panels(1).Text)-5)+"'orderbydesc"adoSetDataGrid1.DataSource=adoFileCallsetDataGrid_CaptionEndSub'在DataGrid控件中选择文件记录,然后双击鼠标左键,下载接收文件PrivateSubDataGrid1_DblClick()IfMsgBox("是否接收【"&DataGrid1.Columns(3).Text&"】传送来的『"&DataGrid1.Columns(1).Text&"』吗?",vbQuestion+vbYesNo)=vbYesThenCommonDialog1.=DataGrid1.Columns(8).TextCommonDialog1.ShowSave=CommonDialog1.Me.MousePointer=11Setcn=NewADODB.Connectioncn.ConnectionString=PublicStrcn.OpenSetrs=NewADODB.Recordsetrs.Open"select*fromtbOA_'"&frm(0).Value&"'",cn,adOpenStatic,adLockOptimisticSetmst=NewADODB.Streammst.Type=adTypeBinarymst.Openmst.Writers.Fields(7).Valuemst.SaveTo,adSaveCreateOverWrite'保存文件,adSaveCreateOverWrite为覆盖以存在文件rs.Closecn.CloseMe.MousePointer=0MsgBox"现在成功!"&"文件保存在:"&frm,vbInformation,"文件下载"EndIfEndSub由于本系统数据表中的字段都是英文字段,因此将ADOData控件绑定到DataGrid控件后,DataGrid控件的列标题都为英文字段名称,为方便用户使用,笔者在此建立了setDataGrid_Caption()过程,该过程主要用于设置DataGrid控件的列标题和列宽,代码如下:SubsetDataGrid_Caption()DataGrid1.Columns(0).Caption="序号":DataGrid1.Columns(1).Caption="主题"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.Columns(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=2000EndSub3.7投票活动管理投票活动管理主要添加投票活动、删除投票活动、清除投票记录,列表形式统计票数与图表统计票数。投票活动管理窗体的设计结果如图11所示。图11活动投票管理窗体设计图1.窗体设计(1)新建一个窗体,将窗体的“名称”属性设置为frmSys_vote,设置Caption属性为“活动投票管理”,设置MaxButton属性为False。(2)添加2个Label标签控件、2个TextBox文本框控件与4个CommandButton按钮控件。(3)添加Ado控件和DataGrid控件,设置其名称为adoVote和DataGrid2。(4)添加MSChart图表控件,其名称为默认名称。由于MSChart控件为ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“MicrosoftChartControls6.0(OLEDB)”列表项。2.程序代码设计在窗体装载过程中,根据投票数量进行投票排行,并通过表格或图表显示出来。窗体的Load事件代码如下:PrivateSubForm_Load()'///投票活动设置adoVote.ConnectionString=PublicStradoVote.RecordSource="select*fromtbOA_voteorderbyvote_qtydesc"adoVote.RefreshSetDataGrid2.DataSource=adoVoteDataGrid2.Columns(0).Caption="序号":DataGrid2.Columns(1).Caption="活动名称"DataGrid2.Columns(2).Caption="活动描述":DataGrid2.Columns(3).Caption="活动票数"EndSub单击【显示图表】按钮,可以切换通过图表显示投票结果或列表显示投票结果。【显示图表】按钮的Click事件下添加代码如下:PrivateSubcmdChar_Click()IfcmdChar.Caption="显示图表"ThencmdChar.Caption="显示列表"MSChart1.Visible=TrueDataGrid2.Visible=FalseadoVote.RecordSource="selectvote_subjectas活动名称,vote_qtyas投票数量fromtbOA_vote"adoVote.RefreshSetMSChart1.DataSource=adoVoteElseIfcmdChar.Caption="显示列表"ThencmdChar.Caption="显示图表"MSChart1.Visible=False:DataGrid2.Visible=TrueadoVote.RecordSource="select*fromtbOA_voteorderbyvote_qtydesc"adoVote.RefreshDataGrid2.Columns(0).Caption="序号":DataGrid2.Columns(1).Caption="活动名称"DataGrid2.Columns(2).Caption="活动描述":DataGrid2.Columns(3).Caption="活动票数"EndIfEndSub单击【添加】按钮,添加相关投票活动。【添加】按钮的Click下代码如下:PrivateSubcmdVoteAdd_Click()adoVote.RecordSource="select*fromtbOA_voteorderbyvote_qtydesc"adoVote.RefreshIftxtVote.Text=""ThenMsgBox"活动名称不能为空!",vbInformation:txtVote.SetFocus:ExitSubadoVote.Recordset.AddNewadoVote.Recordset.Fields(1).Value=txtVote.TextadoVote.Recordset.Fields(2).Value=txtVoteMemo.TextadoVote.Recordset.UpdateMsgBox"添加成功",vbInformationDataGrid2.Columns(0).Caption="序号":DataGrid2.Columns(1).Caption="活动名称"DataGrid2.Columns(2).Caption="活动描述":DataGrid2.Columns(3).Caption="活动票数"EndSub通过鼠标选择DataGrid表格中数据,然后单击【删除】按钮,将选中的数据删除。下面是【删除】按钮的Click事件代码:PrivateSubcmdVoteDel_Click()OnErrorResumeNext‘数据表没有数据时,进行错误处理adoVote.Recordset.DeleteDataGrid2.Columns(0).Caption="序号":DataGrid2.Columns(1).Caption="活动名称"DataGrid2.Columns(2).Caption="活动描述":DataGrid2.Columns(3).Caption="活动票数"EndSub单击【清除投票记录】按钮,将活动的所有投票结果删除。下面是【清除投票记录】按钮的Click事件代码:PrivateSubcmdClear_Click()adoVote.RecordSource="select*fromtbOA_vote"adoVote.RefreshIfadoVote.Recordset.RecordCount>0ThenFori=0ToadoVote.Recordset.RecordCount-1adoVote.Recordset.Fields(3).Value=0'将投票数量设置为0adoVote.Recordset.MoveNextNextiEndIfDimconAsADODB.ConnectionDimrsAsADODB.RecordsetSetcon=NewADODB.Connectioncon.ConnectionString=PublicStrcon.OpenSetrs=NewADODB.RecordsetSetrs=con.Execute("DELETEFROMtbOA_voteRecord")'清楚投票人记录con.CloseMsgBox"数据清除成功!",vbInformationDataGrid2.Columns(0).Caption="序号":DataGrid2.Columns(1).Caption="活动名称"DataGrid2.Columns(2).Caption="活动描述":DataGrid2.Columns(3).Caption=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论