档案管理系统设计与实现

摘  要

近年来,随着企业彼此间的竞争日趋激烈,信息技术在企业的发展中占据着越来越重要的地位。在企业的运输生产中,档案已成为企业运输经营中不可或缺的一部分,为管理者进行管理决策和进行各种经营活动提供了重要的依据,在运输生产中发挥了越来越重要的作用。

档案管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以档案管理系统能够为用户提供充足的信息和快捷的查询手段。用Visual  Basic构建的档案管理系统,能实现档案的录入、修改、查找、删除、统计、查询、预览、编辑、打印、打印预览、取消、刷新、视图、系统维护、帮助等功能,此外,在程序中还设计了用户登陆,并设定了密码,以确保本系统应用的安全性。本管理系统设计合理、界面美观、操作方便、运行稳定、功能完备,为进行现代化的档案管理工作起到了重要作用,具有较高的实用价值。

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


目  录

第一章  概述 ---------------------------------------------------------------------------------3

第二章  目标分析和方案确定--------------------------------------------------------4第三章  开发档案管理系统的基本思路----------------------------------------6

3.1 使用VB6.0编写代码------------------------------------------------------6

3.2 使用Access2000建立数据库-------------------------------------------63.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

第七章  分模块设计------------------------------------------------------------------------127.1档案的系统维护---------------------------------------------------------------127.2档案的版本和系统信息-----------------------------------------------------137.3档案的录入、编辑、删除、刷新---------------------------------------177.4档案的登陆和密码设计-----------------------------------------------------247.5档案的主界面------------------------------------------------------------------277.6档案的查询、预览、打印功能------------------------------------------287.7档案的统计功能---------------------------------------------------------------317.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程序设计

 作者:陈俊源

 出版社:中国铁道出版社

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/81132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序地址空间

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——程序地址空间 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;我们一直随口就能说出来的栈区&#xff0c;堆区&#xff0c;常量…

基于Java的大学生选修选课系统设计与实现(亮点:多角色、贴近现实的选课流程、好看的系统外观)

大学生选修选课系统 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统实现5.1 管…

【基础篇】ClickHouse 表引擎详解

文章目录 0. 引言1. 什么是表引擎2. 不同表引擎使用场景1. MergeTree:2. Log:3. Memory:4. Distributed:5. Kafka:6. MaterializedView:7. File和URL: 3. MergeTree 家族3.1. MergeTree:3.2. ReplacingMergeTree:3.3. SummingMergeTree:3.4. AggregatingMergeTree:3.5. Collaps…

理解HTTPS/TLS/SSL(二)可视化TLS握手过程并解密加密数据

文章目录 WireShark抓包TLS握手过程Client HelloServer HelloEncryped Extenstions, Certificate, Certificate VerifyChange Ciper Spec, FinshedTLS 1.2和TLS 1.3的区别能不能在进一步&#xff1f; 解密WireShark中抓到的TLS包参考资料 上一篇文章已经在本地使用了生成自签名…

【Linux操作系统】信号的产生捕获

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️林 子       &#x1f6f0;️博客专栏&#xff1a;✈️ Linux       &#x1f6f0;️社区 :✈️ 进步学堂       &#x1f6f0…

The driver has not received any packets from the server

在测试数据迁移时遇到的错误。 目录 一、错误 二、解决 三、数据迁移测试 3.1 环境 3.2 源码及测试 3.2.1 源码 3.2.2 测试结果&#xff08;太慢&#xff09; 3.2.3 源码修改 3.2.4 异常及解决 一、错误 The driver has not received any packets from the server. 二…

数学建模——微分方程介绍

一、基础知识 1、一阶微分方程 称为一阶微分方程。y(x0)y0为定解条件。 其常规求解方法&#xff1a; &#xff08;1&#xff09;变量分离 再两边积分就可以求出通解。 &#xff08;2&#xff09;一阶线性求解公式 通解公式&#xff1a; 有些一阶微分方程需要通过整体代换…

四种常用的自动化测试框架

一直想仔细研究框架&#xff0c;写个流水账似的测试程序不难&#xff0c;写个低维护成本的测试框架就很难了&#xff0c;所以研究多种测试框架还是很有必要的&#xff0c;知道孰优孰劣&#xff0c;才能在开始编写框架的时候打好基础&#xff0c;今天读到了KiKi Zhao的翻译文章&…

Java实现Ip地址获取

Java实现Ip地址获取 一、两种实现方式二、测试结果 一、两种实现方式 package com.lyp;import org.apache.commons.lang3.ObjectUtils;import java.net.*; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.Optional;/***…

Linux Ubuntu20.04深度学习环境快速配置命令记录

一、驱动安装 1、更新系统包 sudo apt-get updatesudo apt-get upgrade 2、安装显卡驱动 使用apt方式安装驱动&#xff0c;多数情况不容易成功&#xff0c; 使用一下方法更佳&#xff1a; 1.查看合适显卡的驱动版本 ubuntu-drivers devices NVIDIA GeForce 驱动程序 - …

git压缩仓库

git 压缩仓库 git gc命令压缩增量存储单元,节省磁盘空间 du -sh 查看当前文件夹占用多少K 快照的存储: 对于修改的内容,做快照处理并保存. 对于未修改的文件,做引用处理.

SOLIDWORKS Composer位置关键帧的使用

SOLIDWORKS Composer是专业的SOLIDWORKS及3D文件处理的动画制作软件&#xff0c;作为SOLIDWORKS 产品线下的一个明星存在。 SOLIDWORKS Composer几乎可以处理任何SOLIDWORKS的模型文件并将之转化成可以动作的机械动画&#xff0c;可以引用在企业的网站、产品说明书以及工作指导…

MySQL 面试题——MySQL 基础

目录 1.什么是 MySQL&#xff1f;有什么优点&#xff1f;2.MySQL 中的 DDL 与 DML 是分别指什么&#xff1f;3.✨数据类型 varchar 与 char 有什么区别&#xff1f;4.数据类型 BLOB 与 TEXT 有什么区别&#xff1f;5.DATETIME 和 TIMESTAMP 的异同&#xff1f;6.✨MySQL 中 IN …

STM32F4X SPI W25Q128

STM32F4X SPI W25Q128 什么是SPISPI的特点SPI通信引脚SPI接线方式SPI速率SPI通信方式SPI时钟相位和时钟极性 STM32F4X SPISTM32F4X SPI配置STM32F4X SPI频率 W25Q128W25Q128存储结构W25Q128读写操作W25Q128常用指令读取ID命令(0x90)写使能命令(0x06)禁止写使能命令(0x04)读取W2…

黑马JVM总结(七)

&#xff08;1&#xff09;StringTable_编译器优化 “a”“b”对应#4&#xff1a;是去常量池中找ab的这个符号 astore 5&#xff1a;是把这个存入编号为5的局部变量 “ab”对应的指令 #4&#xff0c;跟“a”“b”对应#4下面弄是一样的 在执行s3“ab”这行个代码时&#xf…

在PHP8中向数组添加元素-PHP8知识详解

在php8中向数组添加元素有多种方法&#xff0c;在这里主要讲解几个常用的方法&#xff1a;使用方括号[]添加元素、使用array_unshift()函数&#xff0c;向数组的头部添加元素、使用array_push()函数&#xff0c;向数组的尾部添加元素、使用array_splice()函数添加元素。 1、使用…

学习Bootstrap 5的第十三天

目录 提示框 如何创建提示框 实例 指定提示框的位置 实例 弹出框 如何创建弹出框 实例 指定弹出框的位置 实例 关闭弹出框 实例 提示框 提示框是一个小小的弹窗&#xff0c;在鼠标移动到元素上显示&#xff0c;鼠标移到元素外就消失。 如何创建提示框 Bootstrap…

LeetCode 332. Reconstruct Itinerary【欧拉回路,通路,DFS】困难

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Vue3+ElementUI使用

<!DOCTYPE html> <html> <head><meta charset"UTF-8"><meta name"viewport" content"initial-scale1.0,maximum-scale1.0,minimum-scale1.0,user-scalable0, widthdevice-width"/><!-- 引入样式 --><lin…

【C++】list的模拟实现【完整理解版】

目录 一、list的概念引入 1、vector与list的对比 2、关于struct和class的使用 3、list的迭代器失效问题 二、list的模拟实现 1、list三个基本函数类 2、list的结点类的实现 3、list的迭代器类的实现 3.1 基本框架 3.2构造函数 3.3 operator* 3.4 operator-> 3…