硼化硫化学式:VB+ACCESS2000开发的档案管理系统【毕业论文】

来源:百度文库 编辑:中财网 时间:2024/04/28 01:50:40

VB+ACCESS2000开发的档案管理系统【毕业论文】

摘  要
近年来,随着企业彼此间的竞争日趋激烈,信息技术在企业的发展中占据着越来越重要的地位。在企业的运输生产中,档案已成为企业运输经营中不可或缺的一部分,为管理者进行管理决策和进行各种经营活动提供了重要的依据,在运输生产中发挥了越来越重要的作用。
档案管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以档案管理系统能够为用户提供充足的信息和快捷的查询手段。用Visual  Basic构建的档案管理系统,能实现档案的录入、修改、查找、删除、统计、查询、预览、编辑、打印、打印预览、取消、刷新、视图、系统维护、帮助等功能,此外,在程序中还设计了用户登陆,并设定了密码,以确保本系统应用的安全性。本管理系统设计合理、界面美观、操作方便、运行稳定、功能完备,为进行现代化的档案管理工作起到了重要作用,具有较高的实用价值。

关键词: 数据库  模块  信息  数据源

目  录
第一章  概述 ---------------------------------------------------------------------------------3
第二章  目标分析和方案确定--------------------------------------------------------4 第三章  开发档案管理系统的基本思路----------------------------------------6
3.1 使用VB6.0编写代码------------------------------------------------------6
3.2 使用Access2000建立数据库-------------------------------------------6 3.3 用JET数据库引擎访问数据库----------------------------------------6
第四章  Visual Basic 6.0编程语言概述----------------------------------------7
4.1 创建菜单栏--------------------------------------------------------------------7
4.2 创建工具栏--------------------------------------------------------------------7
4.3 建立帮助信息-----------------------------------------------------------------8
4.4 生成版本信息-----------------------------------------------------------------8
第五章  使用Access2000 实现关系型数据库------------------------------9
5.1 数据库的概念-----------------------------------------------------------------9
5.2 新建一个数据库--------------------------------------------------------------9
5.3 修改已建的数据库----------------------------------------------------------9
第六章  系统总体设计--------------------------------------------------------------------10
第七章  分模块设计------------------------------------------------------------------------12 7.1档案的系统维护---------------------------------------------------------------12 7.2档案的版本和系统信息-----------------------------------------------------13 7.3档案的录入、编辑、删除、刷新---------------------------------------17 7.4档案的登陆和密码设计-----------------------------------------------------24 7.5档案的主界面------------------------------------------------------------------27 7.6档案的查询、预览、打印功能------------------------------------------28 7.7档案的统计功能---------------------------------------------------------------31 7.8档案的报表----------------------------------------------------------------------32
第八章  结束语--------------------------------------------------------------------------------34
附:主要参考文献-------------------------------------------------------------------35

第一章          概述
    近年来,随着企业彼此间的竞争日趋激烈,信息技术在企业的发展中占据着越来越重要的地位,借助信息技术来获取更快捷、更高效、更准确的操作方式,发挥企业本身最大的竞争力以适应快速变迁的商业环境,逐渐成为不可避免的趋势。在企业的运输生产中,档案已成为企业运输经营中不可或缺的一部分,为管理者进行管理决策和进行各种经营活动提供了重要的依据,在运输生产中发挥了越来越重要的作用。为方便、高效、快捷地适应现代化档案的需要,本论文应用Visual  Basic构建了一个档案管理系统,其中用到了数据库的应用、建立、数据库操作对象ADO、数据报表设计等知识。档案管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。用Visual  Basic构建的档案管理系统,主要能实现档案的录入、修改、查找、删除、统计、查询、编辑、打印、打印预览、取消、刷新、视图、系统维护、帮助等功能,为保证用户的安全性,还设计了简捷方便的用户登陆和密码修改。本管理系统设
计合理、界面美观、操作方便、运行稳定、功能完备,为进行现代化的档案管理工作起到了重要作用,具有较高的实用价值。
第二章          目标分析和方案确定

   档案管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以档案管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:
首先,计算机可以代替人工进行许多繁杂的劳动;
其次,计算机可以节省许多资源;
第三,计算机可以大大的提高人们的工作效率;
第四,计算机可以使敏感文档更加安全,等等。     在企业中用计算机管理档案的意义:现在,有很多企业的档案管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
作为计算机应用的一部分,使用计算机对档案信息进行管理,具有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。     Visual  Basic简单易学且功能丰富,是广泛应用的变成语言之一,它的发展为编程人员提供了更广泛的空间。为能够迎合转变快速的信息技术,越来越多的企业倾向于分布式的 管理需求,提供分布式主从结构环境的Microsoft  SQL  Server便成为相当重要的核心角色,这个数据库服务器运用了关系数据库的技术,同时考虑到高效率数据库管理的需求,借助标准化的访问环境,提高了和前端应用环境轻松集成的能力,以适应各种企业组织在不同环境下的操作需求。作为前端应用程序开发环境的Visual  Basic6.0,在数据来源的维护、数据访问技术、国际网络和企业内部Intranet应用程序等功能方面都有其独到、先进之处。     我作为一个计算机应用专业的专科生,希望在这方面有所贡献。我希望能用我所学的Visual  Basic6.0编制出一个实用的程序来对企业的档案进行更有效、快捷、方便的管理,因此,我充分运用Visual  Basic进行了这套档案管理系统的开发。
第三章  开发档案管理系统的基本思路

3.1、编程环境的选择
微软公司的Visual Basic 6.0是Windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统VB是一个相对较好的选择。
3.2、关系型数据库的实现
Access2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。
3.3、二者的结合(DBA
微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及Visual Basic 来访问数据库并对其进行各种操作。Visual Basic、Access以及其他微软的软件产品都是通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。
DATA 控件在数据库中的信息与将信息显示给用户看的Visual Basic程序之间架起了一座桥梁。我们可以设置DATA控件的各个属性,告诉它要调用那个数据库的哪个部分。缺省情况下,DATA控件根据数据库中的一个或多个数据表建立一个dynaset-type(动态集合)类型的记录集合。一个记录集合是动态的也就意味着,当原来的数据表中的容改变了以后,该记录集合中的记录也会随之改变。DATA控件还提供了用来浏览不同记录的各种跳转按钮。将DATA控件放置在窗体中之后,我们还必须在该控件与要处理的数据库之间建立联系。

第四章  Visual Basic 6.0编程语言概述

    Visual  Basic应用程序基本的构建块是用户所创建的对象,每一个对象都具有一些特性和行为(属性、事件和方法)。开发人员可以最有效利用所创建的每一个对象。使用应用程序具有可通用性、可扩展性和强有力的功能。
Visual  Basic应用由一系列对象组成,包括有函数、菜单、结构和数据窗口、用户对象、用户事件等等,对象中又包含若干控件如命令按钮、单行编辑器等这些对象和控件都可在许多应用中重复使用。
4.1创建菜单栏
除此之外,VB6.0还有以下一些重要功能。菜单是程序最重要的特性之一,大多数程序都依赖一个定义良好的菜单使程序易于使用和维护,Visual  Basic也提供了强大的创建菜单功能是程序更加标准。您可以使用Visual  Basic的Applicaytion  Wizard也可以使用Visual  Basic的菜单编辑器建立菜单或者修改已经存在的菜单、控件。其属性及对象如下:
1.        Align属性定义工具条在窗休中的位置。
2.        ToolTipText属性是字符串类型,定义控件的提示字符。
3.        Style属性定义按钮外观。
4.        ImageList属性定义与数据条对应的ImageList控件名,该控件定义工具条按钮显示的图像。
5.        HotImangeList属性设置一个ImageList控件名,该控件定义按钮获得热点时显示的图像。
6.        DisabledImageList属性定义工具条按钮无效时显示的图像。
4.2创建工具栏
创建工具条主要利用ImageList和Toolbar控件。创建时,先将ImageList添加到窗体上,然后往其中添加一些图片,接着Toolbar控件添加到窗体上,再往Toolbar中插入一些命令按纽,为他们添加上相应图片即可。
4.3建立帮助信息
专业水平的软件通常都带有联机帮助功能。无论写出来的程序是要给大量的用户使用,还是仅仅局限于公司内部有限的使用者,我们都应该为用户提供详细的、易于理解的联机帮助文档。微软的Help  Workshop4.0是一套独立于Visual  Basic的用来协助我们创建、运行于32位Windows操作系统下的帮助文件的工具。使用它可以为我们编写的应用程序生成一组帮助文件。
4.4生成版本信息
为了使程序显得更具有专业风格,首先可以在其中加入通常的应用程序信息。这些信息包括公司名称、版本号、修订号以及其他类似信息。Visual  Basic允许你使用APP对象来保存这些信息,APP对象是一个预定义对象,不需要在程序中创建它。APP对象的大多数属性被应用程序用来提供常规的信息,通过使用这些APP提供的属性,可以在应用程序和用户之间交流重要信息,在项目属性框中可以设置它的属性。
第五章  使用Access2000实现关系型数据库

5.1、数据库的概念
数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息集合。计算机的数据库可以分为两类:非关系数据库(flat-file)和关系数据库(relational)。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,象记录、域等。
5.2、新建一个数据库
创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。
1)标识需要的数据;
2)收集被标识的字段到表中;
3)标识主关键字字段;
4)绘制一个简单的数据图表;
5)规范数据;
6)标识指定字段的信息;
7)创建物理表。
5.3、修改已建的数据库
数据库的修改分为:添加、编辑和删除记录。这三种操作均可由Visual  Basic创建的程序来完成,下面的章节将详细描述实现的具体方法。

第六章  系统总体设计

根据设计方案,本系统的结构框图为(如下所示):
本系统所实现的主要功能为:
可以进行文本操作;
1.        录入一个数据库项目;
2.        修改一个数据库项目;
3.        查找一个数据库信息;
4.        删除一个数据库信息;
5.        统计一个数据库信息;
6.        查询一个数据库信息;
7.        预览一个数据库信息;
8.        编辑一个数据库信息;
9.        打印一个数据库信息;
10.        打印预览一个数据库信息;
11.        刷新一个数据库信息;
12.        取消一个数据库信息。
根据实际数据操作流程,本城西数据的ER图为(根据数据流程勾画,下图为示意图):
用户登录 →  档案的录入→档案的修改和查询  →档案的预览和打印
本系统所采用的数据库结构:
数据表:档案表、用户表。根据系统的需要,档案表采用字段结构为:
                               编号        标题        发文部门        发文号        内容        发文日期
字段类型        自动编号        字符        字符                 字符           备注         日期
是否索引        是        否        否        否        否        否
登录表结构为:
编  号        用 户 名        密  码
 
第七章  分模块设计

7.1、档案的系统维护:
为提高系统的安全性,防止非法用户进入本系统,本系统设有用户登陆界面,并设立密码,合法用户可以在系统维护里面的用户修改里面自行设立用户名和密码,系统默认用户名为“admin”,密码为“1234”。系统的用户密码更改界面如下:

Edit.frm
¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
Dim  db  As  Connection
Dim  rs  As  Recordset
Private Sub Command1_Click()
On Error GoTo er
If rs.State = adStateOpen Then rs.Close
rs.Open "登录", db, 1, 3
rs("用户名") = Text1.Text
rs("密码") = Text2.Text
rs.Update
'rs.Close

MsgBox "修改成功!", vbOKOnly + vbExclamation
Unload Me
Exit Sub
er:
MsgBox "有错误产生!", vbOKOnly + vbExclamation
End Sub

Private Sub Command2_Click()
    Unload Me
End Sub

Private Sub Form_Load()
Text1.Text = login.user
Text2.Text = login.password
  Set db = New Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb;"

  Set rs = New Recordset
End Sub

Private Sub Form_Unload(Cancel As Integer)
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
End Sub
7.2、档案的版本和系统信息
About.frm
Option Explicit

' 注册表关键字安全选项...
Const READ_CONTROL = &H20000
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
                       KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
                       KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
                     
' 注册表关键字 ROOT 类型...
Const HKEY_LOCAL_MACHINE = &H80000002
Const ERROR_SUCCESS = 0
Const REG_SZ = 1                         ' 独立的空的终结字符串
Const REG_DWORD = 4                      ' 32位数字

Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location"
Const gREGVALSYSINFOLOC = "MSINFO"
Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO"
Const gREGVALSYSINFO = "PATH"

Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long


Private Sub cmdSysInfo_Click()
  Call StartSysInfo
End Sub

Private Sub cmdOK_Click()
  Unload Me
End Sub

Private Sub Form_Load()
    Me.Caption = "关于 " & App.Title
    lblVersion.Caption = "版本 " & App.Major & "." & App.Minor & "." & App.Revision
    lblTitle.Caption = App.Title
    Me.Width = 5820
    Me.Height = 4035
End Sub

Public Sub StartSysInfo()
    On Error GoTo SysInfoErr
  
    Dim rc As Long
    Dim SysInfoPath As String
   
    ' 试图从注册表中获得系统信息程序的路径及名称...
    If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
    ' 试图仅从注册表中获得系统信息程序的路径...
    ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
        ' 已知32位文件版本的有效位置
        If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then
            SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
            
        ' 错误 - 文件不能被找到...
        Else
            GoTo SysInfoErr
        End If
    ' 错误 - 注册表相应条目不能被找到...
    Else
        GoTo SysInfoErr
    End If
   
    Call Shell(SysInfoPath, vbNormalFocus)
   
    Exit Sub
SysInfoErr:
    MsgBox "此时系统信息不可用", vbOKOnly
End Sub

Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
    Dim i As Long                                           ' 循环计数器
    Dim rc As Long                                          ' 返回代码
    Dim hKey As Long                                        ' 打开的注册表关键字句柄
    Dim hDepth As Long                                      '
    Dim KeyValType As Long                                  ' 注册表关键字数据类型
    Dim tmpVal As String                                    ' 注册表关键字值的临时存储器
    Dim KeyValSize As Long                                  ' 注册表关键自变量的尺寸
    '------------------------------------------------------------
    ' 打开 {HKEY_LOCAL_MACHINE...} 下的 RegKey
    '------------------------------------------------------------
    rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' 打开注册表关键字
   
    If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 处理错误...
   
    tmpVal = String$(1024, 0)                             ' 分配变量空间
    KeyValSize = 1024                                       ' 标记变量尺寸
   
    '------------------------------------------------------------
    ' 检索注册表关键字的值...
    '------------------------------------------------------------
    rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
                         KeyValType, tmpVal, KeyValSize)    ' 获得/创建关键字值
                        
    If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 处理错误
   
    If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then           ' Win95 外接程序空终结字符串...
        tmpVal = Left(tmpVal, KeyValSize - 1)               ' Null 被找到,从字符串中分离出来
    Else                                                    ' WinNT 没有空终结字符串...
        tmpVal = Left(tmpVal, KeyValSize)                   ' Null 没有被找到, 分离字符串
    End If
    '------------------------------------------------------------
    ' 决定转换的关键字的值类型...
    '------------------------------------------------------------
    Select Case KeyValType                                  ' 搜索数据类型...
    Case REG_SZ                                             ' 字符串注册关键字数据类型
        KeyVal = tmpVal                                     ' 复制字符串的值
    Case REG_DWORD                                          ' 四字节的注册表关键字数据类型
        For i = Len(tmpVal) To 1 Step -1                    ' 将每位进行转换
            KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1)))   ' 生成值字符。 By Char。
        Next
        KeyVal = Format$("&h" + KeyVal)                     ' 转换四字节的字符为字符串
    End Select
   
    GetKeyValue = True                                      ' 返回成功
    rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字
    Exit Function                                           ' 退出
   
GetKeyError:      ' 错误发生后将其清除...
    KeyVal = ""                                             ' 设置返回值到空字符串
    GetKeyValue = False                                     ' 返回失败
    rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字
End Function
7.3、档案的录入、编辑、删除、刷新
本部分程序主要是把车站的档案录入计算机数据库档案表里,并提供编辑、删除等功能,能快捷、高效地把用纸张记录的档案内容用数字的形式存储在计算机里,适应现代化的办公系统的需要,以对信息进行高效、快速的查询、修改。系统的录入界面如下:

frm档案

Dim WithEvents adoPrimaryRS As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean

Private Sub Form_Load()
  Dim db As Connection
  Set db = New Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb;"

  Set adoPrimaryRS = New Recordset
  adoPrimaryRS.Open "select 标题,发文部门,发文号,发文日期,录入人,内容 from 档案", db, adOpenStatic, adLockOptimistic

  Dim oText As TextBox
  '绑定字段到窗体文本框
  For Each oText In Me.txtFields
    Set oText.DataSource = adoPrimaryRS
  Next

  mbDataChanged = False
End Sub

Private Sub Form_Resize()
  On Error Resume Next
  lblStatus.Width = Me.Width - 1500
  cmdNext.Left = lblStatus.Width + 700
  cmdLast.Left = cmdNext.Left + 340
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Screen.MousePointer = vbDefault
End Sub

Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
  '显示记录位置
  lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition)
End Sub

Private Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
  'This is where you put validation code
  'This event gets called when the following actions occur
  Dim bCancel As Boolean

  Select Case adReason
  Case adRsnAddNew
  'adStatus = adStatusCancel
  Case adRsnClose
  Case adRsnDelete
  Case adRsnFirstChange
  Case adRsnMove
  Case adRsnRequery
  Case adRsnResynch
  Case adRsnUndoAddNew
  Case adRsnUndoDelete
  Case adRsnUndoUpdate
  Case adRsnUpdate
  End Select

  If bCancel Then adStatus = adStatusCancel
End Sub

Private Sub cmdAdd_Click()
  On Error GoTo AddErr
  With adoPrimaryRS
    If Not (.BOF And .EOF) Then
      mvBookMark = .Bookmark
    End If
    .AddNew
    lblStatus.Caption = "Add record"
    mbAddNewFlag = True
    SetButtons False
  End With

  Exit Sub
AddErr:
  MsgBox Err.Description
End Sub

Private Sub cmdDelete_Click()
  On Error GoTo DeleteErr
  With adoPrimaryRS
    .Delete
    .MoveNext
    If .EOF Then .MoveLast
  End With
  Exit Sub
DeleteErr:
  MsgBox Err.Description
End Sub

Private Sub cmdRefresh_Click()
  'This is only needed for multi user apps
  On Error GoTo RefreshErr
  adoPrimaryRS.Requery
  Exit Sub
RefreshErr:
  MsgBox Err.Description
End Sub

Private Sub cmdEdit_Click()
  On Error GoTo EditErr

  lblStatus.Caption = "Edit record"
  mbEditFlag = True
  SetButtons False
  Exit Sub

EditErr:
  MsgBox Err.Description
End Sub
Private Sub cmdCancel_Click()
  On Error Resume Next

  SetButtons True
  mbEditFlag = False
  mbAddNewFlag = False
  adoPrimaryRS.CancelUpdate
  If mvBookMark > 0 Then
    adoPrimaryRS.Bookmark = mvBookMark
  Else
    adoPrimaryRS.MoveFirst
  End If
  mbDataChanged = False

End Sub

Private Sub cmdUpdate_Click()
  On Error GoTo UpdateErr

  adoPrimaryRS.UpdateBatch adAffectAll

  If mbAddNewFlag Then
    adoPrimaryRS.MoveLast              'move to the new record
  End If

  mbEditFlag = False
  mbAddNewFlag = False
  SetButtons True
  mbDataChanged = False

  Exit Sub
UpdateErr:
  MsgBox Err.Description
End Sub

Private Sub cmdClose_Click()
  Unload Me
End Sub

Private Sub cmdFirst_Click()
  On Error GoTo GoFirstError

  adoPrimaryRS.MoveFirst
  mbDataChanged = False

  Exit Sub

GoFirstError:
  MsgBox Err.Description
End Sub

Private Sub cmdLast_Click()
  On Error GoTo GoLastError

  adoPrimaryRS.MoveLast
  mbDataChanged = False

  Exit Sub

GoLastError:
  MsgBox Err.Description
End Sub

Private Sub cmdNext_Click()
  On Error GoTo GoNextError

  If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
  If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
    Beep
     'moved off the end so go back
    adoPrimaryRS.MoveLast
  End If
  'show the current record
  mbDataChanged = False

  Exit Sub
GoNextError:
  MsgBox Err.Description
End Sub

Private Sub cmdPrevious_Click()
  On Error GoTo GoPrevError

  If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
  If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
    Beep
    'moved off the end so go back
    adoPrimaryRS.MoveFirst
  End If
  'show the current record
  mbDataChanged = False

  Exit Sub

GoPrevError:
  MsgBox Err.Description
End Sub

Private Sub SetButtons(bVal As Boolean)
  cmdAdd.Visible = bVal
  cmdEdit.Visible = bVal
  cmdUpdate.Visible = Not bVal
  cmdCancel.Visible = Not bVal
  cmdDelete.Visible = bVal
  cmdClose.Visible = bVal
  cmdRefresh.Visible = bVal
  cmdNext.Enabled = bVal
  cmdFirst.Enabled = bVal
  cmdLast.Enabled = bVal
  cmdPrevious.Enabled = bVal
End Sub
7.4档案的登陆和密码设计
本部分程序主要是提高系统的安全性,以防止非法用户进入本系统,避免不必要的损失。



Login.frm
'是否合法用户
Public password As String
Public user As String
Dim db As Connection
Dim rs As Recordset
Private Sub Command1_Click()
If Trim(Text1.Text) = "" Then
    MsgBox "请输入完整!", vbOKOnly + vbExclamation
Else
    If rs.State = adStateOpen Then rs.Close
   
    rs.Open "select * from 登录 where 用户名='" & Text1.Text & "'", db, 1, 1
    If Not rs.EOF And Not rs.BOF Then
        If rs("密码") = Text2.Text Then
        user = Text1.Text
        password = Text2.Text
            main.Show
            Unload Me
        Else
            MsgBox "密码错误!", vbOKOnly + vbExclamation
        End If
    Else
        MsgBox "无此用户!", vbOKOnly + vbExclamation
    End If

End If

End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Form_Activate()
Text1.SetFocus

End Sub

Private Sub Form_Load()
'Me.Width = 8000
'Me.Height = 6000
  Set db = New Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb;"

  Set rs = New Recordset
End Sub

Private Sub Form_Unload(Cancel As Integer)
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
End Sub

Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
    Text2.SetFocus
End If

End Sub

Private Sub Text2_GotFocus()
Text2.SelStart = 0

Text2.SelLength = Len(Text2.Text)

End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
    Command1.SetFocus
End If

End Sub
7.5、档案的主界面
本系统采用MDI方式,这是系统的所有窗口的父窗口,体统了系统的所有菜单等控制功能。
档案的主界面如下:

Main.frm
Private Sub dacz_Click()
query.Show
End Sub

Private Sub dalr_Click()
frm档案.Show

End Sub

Private Sub datj_Click()
tle.Show
End Sub


Private Sub guanyu_Click()
frmAbout.Show
End Sub

Private Sub MDIForm_Load()
StatusBar1.Panels(1).Text = Date
Me.WindowState = 2
End Sub

Private Sub ynghuxiugai_Click()
edit.Show
End Sub

Private Sub zhuangtai_Click()
If zhuangtai.Checked Then
    zhuangtai.Checked = False
    StatusBar1.Visible = False
Else
    zhuangtai.Checked = True
    StatusBar1.Visible = True
End If
End Sub
7.6、档案的查询、预览、打印功能
本部分能够提供对所需文件的按不同条件的查询、预览、打印等功能,利用了VB访问数据库ADO对象的强大功能,能够实现对所需文件的灵活查询,再利用VB内置的数据报表功能,实现对所需文件的预览和打印。
Query.frm
Dim  db  As  Connection
Dim  rs  As  Recordset
Public  tdata  As  String


Private  Sub  Command1_Click()
On  Error  GoTo  er
If  rs.State=adStateOpen  Then  rs.Close


rs.Open〝select * from 档案 where〝 & Combol.Text & 〝=〝 & Text1.Text & 〝,db,
adOpenStatic,adLockOptimistic
Set DataGrid1.DataSource=rs
DataGrid1.Refresh
Exit Sub
er:
MsgBox 〝请填写合适的查询条件或确认格式正确〝,vbOKOnly+vbQuestion


End Sub


Private Sub Command2_Click()
On Error GoTo er


If rs.State=adStateOpen Then rs.Close
rs.Open 〝select * from 档案  where  发文日期>=#〝 & Text2.text & 〝 and 发文日期<=#〝 &

Text3.Test & 〝#〝,db,adOpenStatic,adLockOptimistic
Set DataGrid1.DataSource=rs
DataGrid1.Refresh
Exit Sub
er:
MsgBox 〝请填写合适的查询条件或确认格式正确〝,vbOKOnly+vbQuestion


End Sub


Private Sub Command3_Click()
  On Error GoTo er


DataGrid1.Col=0
tdatat=DataGrid1.Test
DataReport1.Show
Exit Sub
er:
MsgBox〝请选择要预览的内容〝,vbOKOnly + vbQuestion


‵MsgBox
End Sub


Private Sub Form_Load()
‵Me.Width=10000
‵Me.Height=7000
   Set db=New Commection
   Db.CursorLocation=adUseClient
   db.Open〝PROWIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb; 〝


   Set rs =New Recordset
End Sub


Private Sub Form_Unload(Cancel As Integer)
If rs.State=adStateOpen Then rs.Close
Set rs=Nothing
db.Close
Set db =Nothing


End Sub


Private Sub Option1_Click()
qita.Visible=False
riqi.Visible=True
End Sub


Private Sub Option2_Click()
qita.Visible=True
riqi.Visible=False
End Sub
____________________________________________________________________
7.7、档案的统计功能
本部分能够准确地统计出所录入的档案数目,以便进行档案统计。

Totle.frm
Private Sub Form_Load()
Dim rs As Recordset
Dim db As Connection
  Set db=New Connection
  db.CursorLocation=adUseClient
  db.Open 〝PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb; 〝


Set rs=New Recordset
rs.Open 〝档案〝,db,adOpenStatic,1
Label1.Caption=〝本系统共收集档案: 〝& rs.RecordCount &〝条档案记录〝
End Sub
____________________________________________________________________
7.8、档案的报表
灵活运用了VB的数据报表功能,实现了文件的预览、打印。
Datareport
  Dim db As Connection
  Dim rs As Recordset


Private Sub DataReport_Initialize()
Set db =New Connection
Db.Cursor location=adUseClient
db.Open 〝PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb; 〝


Set rs = New Recordset


  rs.Open 〝select * from 档案 where 编号=〝 & query.tdata,db,1,1
Set DataReport1.DataSource=rs
End Sub
第八章  结束语

经过一个多月的设计和开发,这套档案管理系统已基本结束。主要能实现档案的录入、修改、查找、删除、统计、查询、预览、编辑、打印、打印预览、取消、刷新等功能,此外,在程序中还设计了用户登陆,以确保本系统应用的安全性。本管理系统设计合理、界面美观、操作方便、运行稳定、功能完备,为企业进行现代化的档案管理工作起到了重要作用。但是由于毕业设计时间较短,所以该系统还有一些不尽人意的地方,比如联机文档比较少,用户界面不够美观等问题,这些都有待进一步改善,敬请各位老师指正。
在本次毕业设计中,我从指导老师周朋红老师身上学到了很多东西,周老师认真负责的工作态度、严谨治学的精神和深厚的理论水平都使我受益匪浅。无论在理论上还是在实践中,她都给予我很大的帮助,使我的Visual Basic应用水平得到了很大的提高,这对于我以后的工作和学习都有一种巨大的帮助。
今后的工作中,我一定要充分运用自己所学的计算机知识,并在工作中不断学习和完善,充分发挥一名计算机专业人员的作用,为企业的腾飞和发展贡献自己的力量。
附:主要参考文献
[1]Visual  Basic  6.0使用指南
作者:Bob Reselman, Richard Peasley , Warne Pruchniak。
出版社:电子工业出版社
[2]中文版Microsoft Office 97 自学通
作者:Ned Snell
出版社:机械工业出版社
[3]Visual Basic 6.0 中文版控件大全
作者:Microsoft
出版社:电子工业出版社
[4]中文Access 2000 24学时教程
作者:Craig Eddy, Timothy Buchanan
出版社:机械工业出版社
[5]Vbsual Basic 6.0用户编程手册
作者:林永  张乐强
出版社:人民邮电出版社
[6]Visual Basic 6.X程序设计
作者:陈俊源
出版社:中国铁道出版社