VB工资管理系统
[摘要] 本系统为工资发放系统,是为了能够对工资发放进行有效的管理而做,采用的开发工具是 Microsoft Visual Basic 6.0。 使用的技术有:数据库的访问;菜单控制。
本系统能够提供对工资发放各明细项目的数据编辑,自动计算出工资发放各项合计数据及代扣项目数据;可自主设定条件从而达到对工资数据的多角度查询功能;方便导入、导出数据及输出报表;并可转换成适合与银行UNIX平台接口的数据形式以便于委托银行办理代发工资业务。财务部门人员以管理员身份登录,对本系统的可登录人员进行管理;而单位其他相关部门人员作为一般用户登录本系统时,数据编辑程序、数据导入程序及增加用户、删除用户程序自动关闭,从而控制本系统的工资数据编辑、数据导入及用户增、删功能只能由财务部门人员操作。实现了财务部门对本单位工资发放系统的集中管理,保证了系统的安全性。是一个功能实用,用户(财务部、其他相关部门、银行)操作方便,简单明了的工资发放软件。
支持运行的环境:Microsoft Window98/95/me
数据库的接口:Microsoft Access Driver。
[关键词]工资;管理系统;Visual Basic 6.0
[Abstract] This system grants system for salary. The developing instrument adopted is Basic 6 of Microsoft Visual. There are the technologies used: the visit of the data base; the menu is controlled. The system can be offered to the data editor granting every detail project to the salary, calculate and publish salary grant data of total lings and take the place of and spike project datum while being automatic; but settle the condition on one's own thus reaches and inquires about the function to much angles of the salary data; and the convertible suitable as bank handle and take the place of business of paying out wages of at authorized banks on UNIX platform the data forms of interfaces. Financial personnel of department log-in as janitors log in to personnel go on and manage to this a systematic one; When other relevant department personnel of unit are regarded as a system of general user's log-in, Editor of data procedure, data channel procedure into and increase user, delete automatic to close procedure user, Thus, data channel copies of systematic salary data editor into control. Grant systematic centralized management to the salary of our unit after realizing the financial department, have guaranteed the systematic security.
Support the environment run: Microsoft Window98/95/me
The interface of the data base: Microsoft Access Driver
[The keyword] Salary; Administrative system; Visual Basic 6.0
第1章 引 言
1.1本课题的研究意义
目前市面上流行的工资发放软件不少。但是,对于企、事业单位的工资发放来说,不需要太大的数据库系统。只需要一个操作方便,功能实用,能同时满足财务部门、单位其他相关部门及代发单位这三方对数据的管理及需求的系统。我们的目标就是在于开发一个功能实用,用户(财务部、其他相关部门、银行)操作方便,简单明了的工资发放软件。
1.2本论文的目的、内容
1.2.1目的
我们的目标就是在于开发一个操作方便,功能实用,能同时满足财务部门、单位其他相关部门及代发单位这三方对数据的管理及需求的系统。
1.2.2内容
实现本单位财务部门对工资发放的集中管理。可供财务人员对本单位的人员工资进行增加、删除、修改、查询、导入、导出文件、输出报表,并对系统的可登录人员进行管理;同时通过菜单关闭功能使本单位其他相关部门的人员对工资的数据编辑无法操作,只能通过查询或导出文件来了解本单位的工资发放情况;对工资发放中的应发工资合计、代扣个人所得税及个人实发工资等项目由系统自动进行计算;同时本系统还可对工资发放情况进行多角度查询,并转换成可与银行UNIX平台接口的数据形式以便于委托银行办理代发工资业务。
在登录管理方面,财务人员以工资发放系统的管理人员身份登录,并对本系统的可登录人员进行管理,有权增加及删除本系统的登录人员,进行自身密码的修改;而本单位其他相关部门的可登录人员在登录本系统后,则只能进行自身密码的修改,而无权增加及删除用户。
第2章 管理信息系统概述
2.1管理信息系统现状
管理信息系统(MIS)是一门边缘学科,集管理科学、信息科学、系统科学、现代通信技术和电子计算机技术于一体。1985年,管理信息系统创始人,明尼苏达大学卡尔森管理学院的著名教授戴维斯(Gordon.B.Davis)给出了一个具有代表性的定义:“管理信息系统是一个利用计算机硬件和软件,手工作业、分析、计划、控制和决策模型以及数据库的用户-机器系统。它能提供信息支持企业或组织的运行、管理和决策功能。”
随着网络技术的出现,管理信息系统又有了新的含义,基于网络的管理信息系统不断出现,管理信息系统的概念模型也发生了相应的变化,许多学者对管理信息系统给出了新的定义。例如劳顿认为:“管理信息系统是一个基于计算机的信息系统,它通过收集、处理、存储和扩散信息,来支持组织的管理、决策、合作、控制、分析活动,并使之可视化。”
因此,我们可以看出,管理信息系统具有几个基本含义:
(1)管理信息系统不是一个单纯的软件系统,而是一个人-机系统,由人和机器协同工作。管理信息系统在支持企业或组织的各项管理活动中,管理人员负责将基础数据及时地输入到计算机中,计算机则根据企业或组织中的各层管理人员的要求对基础数据进行加工处理,并将所得到的信息输出。计算机不断地与最终用户进行着信息的交换,但在对数据的加工处理过程中又需要人的适当干预。
(2)管理信息系统的管理过程就是对数据进行惧、存储、加工处理、传递,并产生信息的过程,因此数据是管理信息系统的灵魂。管理信息系统运用了数据库的技术,对基础数据进行统一规划、存储,供各层管理人员使用,从而实现了数据的一致和共享。
(3)管理信息系统可以解决企业或组织所面临的问题。例如,管理信息系统可以处理企业生产经营活动的全过程,可以解决组织中数据处理效率问题,也可以解决财务管理决策过程等。
管理信息系统应具有如下几个功能。
(1)数据处理功能:
数据处理是管理信息系统最基本的功能,它包括对各种类型数据的收集、加工处理、传递、存储等工作。
(2)实测功能:
通过对数据的加工处理,可以随时了解各部门的实际运行情况,如各生产车间今天生产的产品数量、销售部接受的订单等。
(3)预测功能:
通过运用一定的数学方法和预测模型,对过去的数据进行分析,就可能对未来可能发生的情况进行预测,为高级管理人员进行管理决策提供依据。
(4)控制功能:
通过信息的反馈可以对整个企业生产经营的各个部门、各个环节的运行情况进行监测、协调、控制,保证系统的正常运行。
(5)辅助决策功能:
通过对数据的加工处理,可以快速地获取对决策有影响的信息,从而为合理的配置企业的各项资源,做出最佳的决策提供科学的依据。
目前,管理信息系统的应用已经非常广泛,随着计算机技术、网络技术和通信技术的发展,管理信息系统的功能也日趋完善,并朝着智能化、网络化、集成化等方向发展。如办公自动化(OA)、电子商务(EC)、专家系统(ES)、计算机集成制造系统(CIMS)。
2.2管理信息系统开发方法介绍
目前,常用的管理信息系统的开发方法有生命周期法、原型法和面向对象的开发方法。
下面仅对原型法和面向对象的开发方法进行简单的描述。
(1)原型法:
原型法(Prototyping Method)是20世纪80年代发展起来的,旨在改变生命周期法的缺点的一种系统开发方法。
①原型法的基本思想
首选根据用户的要求,由用户和开发者共同确定系统的基本要求和主要功能,利用系统快速生成工具,建立一个系统模型。再在此基础上与用户交流,将模型不断补充,修改完善,如此反复,最终直至用户和开发者都比较满意为止,就形成了一个相对稳定、较为理想的管理信息系统。
②原型法的开发过程
采用原型法开发管理信息系统可以分为如下几个阶段:
A、确定用户的基本需求。由用户提出对新系统的基本要求,如功能、基本界面形式、所需的数据、应用范围、运行环境等,开发者根据这些信息估算出开发该系统所需的费用,并建立简明的系统模型。
B、开发初步的原型系统。系统开发人员根据用户的要求建立原型系统,但该系统只是一个初步的、不成熟的系统,从系统的工作效率上看也是不完善的。其主要目的是为了描述开发者所理解的用户的基本需求。
C、修改、评价原型系统。将建造好的原型系统交给用户,并投入试运行,用户将使用过程中发现的问题一一记录下来,并与开发人员进行交流。开发人员针对这些问题不断地对系统进行修改、扩充与完善,直至用户满意为止。
D、形成最终的管理信息。对用户满意的原型系统进行进一步的开发,不断补充、完善,最终形成一个适用的管理信息系统。
③原型法的优缺点
原型法的优点是开发周期短,费用较少,同时可以较有效地避免因开发者和用户的认识隔阂所产生的失败,其缺点是系统的开发缺乏统一的规划和开发标准,难以对系统的开发过程加以控制。
原型法一般适用于开发规模不大、不太复杂或需求经常发生变化的系统。
(2)面向对象的开发方法
面向对象(Object Oriented)的技术于20世纪80年兴起,随后广泛地应用于计算机技术的几乎所有领域。面向对象的技术中最重要的概念是对象。
面向对象是基于问题对象的自底向上的一种系统开发方法。在开发过程中,分析和设计阶段独立于程序设计语言,信息系统模型设计好后,最终用具体的程序设计语言、数据库或硬件来实现。面向对象法最主要的特点是对对象为基础,对象是分析问题和解决问题的核心。
①面向对象法的开发过程
面向对象法的开发过程一般分为四个阶段:
A、认识客观世界(如一个企业)中的对象以及行为,分别独立设计各个对象的实体。
B、分析对象之间的联系和相互之间所传递的信息,由此构造客观世界(企业)所对应的信息管理系统的模型。
C、由信息系统的模型转换成计算机软件系统的模型。
D、由计算机软件系统的模型再转化成一个现实系统。
②面向对象法的优缺点:
面向对象法的优点是便于帮助分析者、设计者和用户清楚地表达抽象概念,互相进行交流;交流特定的软件工具模块,直接地完成了从对象的描述到软件体系结构之间的转换,避免了其它的方法在开发过程的客观世界描述和软件结构不一致性和复杂性问题,便于系统开发简单、统一,开发周期短,费用低。
面向对象法的主要缺点与原型法一样,因此这种方法也不适用于开发大的、复杂的系统。
本系统在开发过程中具体是采用了原型法和面向对象两种方法相结合的开发思路,力求在开发过程中尽量吸收这两种方法的长处,而克服它们的短处。
第3章 研究现状及设计目标
3.1相近研究课题的特点及优缺点分析
传统的工资发放,多采用手工的形式,既繁琐又易于出差错,随着电子技术的发展,工资发放多采用电算化的方式进行管理,避免进行简单的重复计算,从而做到准确、快捷。为了适应这个要求,我们工作组经过详细的市场调查,发现市面上工资发放的软件繁多,竞争激烈,为了避免重复生产类似的软件产品,做出自己的特色,我们决定做一个切合单位工资发放实际要求的工资发放系统软件。
3.2研究存在的问题及解决办法
目前的可用的设计技术在设计此类系统上的数据库技术已经非常成熟,可提供的开发工具也很多,例如:Visual C++ ,Visual Basic, PowerBuilder, Delphi, visual FoxPro等,它们都是很好的数据库开发工具,都是可视化开发工具,功能强大,开发容易,开发周期短,对于这些任务都能够胜任。
Visual Basic是一种可视化的、面对对象和调用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
总的来说,Visual Basic具有以下特点:
可视化编程:
用传统程序设计语言设计程序时,都是通过编写程序代码来设计用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察。如果对界面的效果不满意,还要回到程序中修改。有时候,这种编程-编译-修改的操作可能要反复多次,大大影响了软件开发效率。Visual Basic提供了可视化设计工具,把Windows界面设计的复杂性“封装”起来,开发人员不必为界面设计而编写大量程序代码。只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性。Visual Basic自动产生界面设计代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以大大提高程序设计的效率。
面向对象的程序设计
4.0版以后的Visual Basic支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++)不完全相同。在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而Visual Basic则是应用面向对象的程序设计方法(OOP),把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,Visual Basic自动生成对象的程序代码并封装起来。每个对象以图形方式显示在界面上,都是可视的。
结构化程序设计语言
Visual Basic是在BASIC语言的基础上发展起来的,具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式。Visual Basic语句简单易懂,其编辑器支持彩色代码,可自动进行语法错误检查,同时具有功能强大且使用灵活的调试器和编译器。
Visual Basic是解释型语言,在输入代码的同时,解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。在设计Visual Basic程序的过程中,随时可以运行程序,而在整个程序设计好之后,可以编译生成可执行文件(.EXE),脱离Visual Basic环境,直接在Windows环境下运行。
事件驱动编程机制
Visual Basic通过事件来执行对象的操作。一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应。例如,命令按钮是一个对象,当用户单击该按钮时,将产生一个“单击”(CLICK)事件,而在产生该事件时将执行一段程序,用来实现指定的操作。
在用Visual Basic设计大型应用软件时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程。这些过程分别面向不同的对象,由用户操作引发某个事件来驱动完成某种特定的功能,或者由事件驱动程序调用通过过程来执行指定的操作,这样可以方便编程人员,提高效率。
访问数据库
Visual Basic具有强大的数据库管理功能,利用数据控件和数据库管理窗口,可以直接建立或处理Microsoft Access格式的数据库,并提供了强大的数据存储和检索功能。同时,Visual Basic还能直接编辑和访问其他外部数据库,如dBase,FoxPro,Paradox等,这些数据库格式都可以用Visual Basic编辑和处理。
Visual Basic提供开放式数据连接,即ODBC功能,可通过直接访问或建立连接的方式使用并操作后台大型网络数据库,如SQL Server,Oracle等。在应用程序中,可以使用结构化查询语言SQL数据标准,直接访问服务器上的数据库,并提供了简单的面向对象的库操作指令和多用户数据库访问的加锁机制和网络数据库的SQL的编程技术,为单机上运行的数据库提供了SQL网络接口,以便在分布式环境中快速而有效地实现客户/服务器(client/server)方案。
动态数据交换(DDE)
利用动态数据交换(Dynamic Data Exchange)技术,可以把一种应用程序中的数据动态地链接到另一种应用程序中,使两种完全不同的应用程序建立起一条动态数据链路。当原始数据变化时,可以自动更新链接的数据。Visual Basic提供了动态数据交换的编程技术,可以在应用程序中与其他Windows应用程序建立动态数据交换,在不同的应用程序之间进行通信。
对象的链接与嵌入(OLE)
对象的链接与嵌入(OLE)将每个应用程序都看作是一个对象(object),将不同的对象链接(link)起来,再嵌入(embed)某个应用程序中,从而可以得到具有声音、影像、图像、动画、文字等各种信息的集合式的文件。OLE技术是Microsoft公司对象技术的战略,它把多个应用程序合为一体,将每个应用程序看作是一个对象进行链接和嵌入,是一种应用程序一体化的技术。利用OLE技术,可以方便地建立复合式文档(compound document),这种文档由来自多个不同应用程序的对象组成,文档中的每个对象都与原来的应用程序相联系,并可执行与原来应用程序完全相同的操作。
动态链接库(DLL)
Visual Basic是一种高级程序设计语言,不具备低级语言的功能,对访问机器硬件的操作不太容易实现。但它可以通过动态链接库 技术将C/C++或汇编语言编写的程序加入到Visual Basic应用程序中,可以像调用内部函数一样调用其他语言编写的函数。此外,通过动态链接库,还可以调用Windows应用程序接口(API)函数,实现SDK所具有的功能。
3.3系统层次和功能图
层次结构图又称为组织机构图,系统必须设定要实现的功能。功能要以组织结构为背景来识别和调查,因为每个组织都是一个功能机构,都有各自不同的功能。调查时要按部门的层次关系进行,然后用归纳法找出它的功能,形成各层次的功能结构。组织结构与功能结构又不完全一致,各组织、各部门的功能,由于各种原因,有可能重叠,许多功能可能还需要多个部门协力完成。一个部门的功能也不能是惟一的,可能需要完成多种功能,把各部门的功能以及相互之间的功能合作关系用一张二维表格绘制出来,就是组织/功能关系表。
以组织结构图为背景分析清楚各部门的功能后,分层次将其归纳、整理,形成各层次的功能结构图:自上而下逐层归纳、整理,形成以系统目标为核心的整个系统的功能结构图。现行的系统的许多功能多数由手工完成。手工处理慢,处理功能分得较细,环节又多,甚至由于某些历史原因造成一些不合理的处理设置。那么,在分析归纳过程中,就要把不合理的流程取消,把功能相似或工作顺序相近的处理功能尽量合并,分析归纳后的功能是否能达到新系统目标以及应设置的功能是否已经具备等。经分析后的系统功能结构一般是多层次的树型结构,一般最后一级功能是不能再分割的。
3.4本课题要达到的设计目标
实现数据库管理,数据库内包含有单位部门名称、序号、姓名、账号、应发工资合计、基础工资、职务工资、级别工资、补助工资、奖金、福利、代扣失业保险金、代扣养老保险金、代扣住房公积金、代扣个人所得税、实发个人工资等等数据项;还包括登录人员、登录密码等数据项。
通过读取数据库的数据项来管理单位人员的工资发放情况,财务部门人员有权新建工资发放人员记录,添加人员的各项工资明细数据,对于人员应发工资合计、代扣个人所得税、个人实发工资等需计算的工资项目则由系统自动实现。
通过读取数据库的数据项来了解单位人员的工资发放情况,系统的登录人员可按自身对数据的需求情况,自主设定查询条件,从而达到对工资数据的多角度查询;同时,可导出工资数据,并可将工资数据转换成可与银行UNIX平台接口的数据形式以便于委托银行办理代发工资业务。
本系统的最终目的是为了能够对工资发放进行有效的管理。财务部门人员能够高效快捷地对工资数据进行编辑,避免进行简单的重复计算,而单位其他相关部门人员可多角度查询本单位的工资发放情况,从而使工资发放数据既得到安全控制又得到宏观管理。
第4章 建议的方案
工资发放的应用程序不宜太复杂,所以不需使用太多的技术,我们在这里主要使用的技术有:数据库的访问;菜单控制。单位其他相关部门人员在登录本系统时,将数据编辑程序、数据导入程序及增加用户、删除用户程序关闭,从而控制本系统的工资数据编辑及用户增删功能只能由财务部门人员操作。
1、数据库访问:
我们通过DATA控件访问数据库。
2、菜单控制:
在系统一开始运行的时候,我们通过一个全屏幕的,没有控制菜单框的窗体作为用户和密码的登录界面。在核对用户名及密码的一致性后,进入系统的功能界面。单位其他相关部门人员登录本系统,数据编辑、数据导入及增加用户、删除用户菜单将被拒绝操作,只有当财务人员以管理员的身份登录后,才有数据编辑、数据导入及增加用户、删除用户的权力。
第5章 系统结构与模型
5.1推荐方案
根据比较上面的方案,我们认为工资发放系统的实时性要求可以不需要很严格,而实用性才是首要考虑的,因此采用 DATA控件访问ACCESS数据库,由数据库来实现对工资发放数据的管理。
系统结构图
5.2支持环境
图 5.3
首先,单位财务人员以系统管理员身份输入操作员名称和密码,请求登录。若密码与用户相符,登录成功,则允许执行数据编辑、数据查询、数据导入、数据导出、系统管理菜单功能。
其次,在财务人员执行系统管理中的增加用户菜单功能增加用户成功后,作为可登录人员允许单位相关部门人员以一般人员身份输入操作员名称和密码,请求登录。若密码与用户相符,登录成功,则系统关闭数据编辑、数据导入以及系统管理中的增加用户、删除用户等菜单功能,只允许执行数据查询、数据导出和系统管理中的修改密码等菜单功能。
5.5系统管理流程图
系统管理员登录 |
数据库Access |
系统管理 |
增加用户 |
功能界面 |
删除用户 |
密码修改 |
图 5.4
系统管理中的增加用户及删除用户菜单功能只有当管理员登录时才可用,且在增加用户里还需要再次验证管理员密码,而在用户增加密码及修改密码时均需验证两次输入密码的一致性,以加强系统的安全控制。
5.6数据字典
数据流程图是描述系统逻辑模型的主要工具,通过几个特定的符号,可以综合地反映出信息在系统中的使用、加工处理、传递、存储的整体情况。
数据流程图是系统结构化分析行之有效的工具,它抽象地描述了系统数据处理的情况,但却无法表达各个处理的详细内容,因此还要对数据流程图中出现的数据流和处理等做进一步的补充说明,这就是数据字典和变换逻辑说明。
数据字典的任务就是对数据流程图中的出现的所有被命名的图形元素在数据字典中作为一个条目加以定义,便得每一个图形元素的名字都有一个确切的解释。
数字是对数据流程图的补充说明,它的编制和维护是一项非常繁重的工作,一旦建立起来,从系统分析直至系统运行都用到它。
用户名:
|
密码:
|
工资明细表:
|
登录管理表:
|
系统的E-R图
图 5.5
第6章 系统实现技术
6.1系统登陆
管理员登录:管理员在登录工资发放系统时,应当先输入系统管理员的用户名和密码,以供校验管理员的身份。
工资发放明细管理:包括新添人员工资明细、修改已存在的工资明细、删除已存在的工资明细、查询已存在的工资明细等有效编辑功能。
自动计算功能:根据财务人员录入的各项工资发放明细,系统自动计算出应发工资合计数,并根据应发工资合计数自动计算出该人员应代扣个人所得税额,最后由系统自动计算出应发工资扣除代扣失业保险金、代扣养老保险金、代扣住房公积金、代扣个人所得税后的个人实发工资金额。
工资发放分类查询:根据对数据的需要自设查询条件,并将符合条件的信息显示出来。
管理员管理:包括增加新的用户、删除已有的用户。
增加用户:根据本单位其他相关部门对工资发放数据的需要,决定是否允许该部门人员登录本系统。
删除用户:根据本系统用户对工资发放数据的需求情况,决定禁止该用户登录本系统。
修改密码:提供修改密码功能供用户定期修改密码,以确保系统的安全性。
数据导入:当有大量新增工资发放记录时,可通过数据导入功能批量导入数据到数据库中。
数据导出:将工资发放的各项明细导出成文本文件,以便提供给银行代发工资。
报表功能:提供工资明细表及银行代发工资表,可以将工资发放数据导入到报表中并打印出来,作为历史资料留存。
6.2一般用户登录
一般用户登录:一般用户在登录工资发放系统时,应当先输入用户名和密码,以供校验用户的身份。
菜单关闭功能:当系统由非财务部门的其他一般用户登录时,系统自动关闭功能菜单中的数据编辑、数据导入、增加用户及删除用户菜单功能,以确保工资发放数据不被随意修改。
工资发放分类查询:根据对数据的需要自设查询条件,并将符合条件的信息显示出来。
修改密码:用户登录成功后,可任意修改自己的密码。
数据导出:将工资发放的各项明细导出成文本文件,以便提供给银行代发工资。
报表功能:提供工资明细表及银行代发工资表,可以将工资发放数据导入到报表中并打印出来,作为历史资料留存。
6.3性能
系统能够提供对工资发放各明细项目的数据编辑,自动计算工资发放各项合计数据及代扣项目数据;支持多角度的查询功能;方便导出数据及报表;对系统的可登录人员进行控制管理。系统的处理事件能力良好,安全性能好,能够及时响应用户的信息。
6.4数据库特性
我们采用的是Microsoft Access 的数据库引擎,在用户访问数据库时采用DAO方式工作。
在工资发放系统数据库里,我们用数据库表格来纪录工资发放的各项明细信息,表格中的字段有:部门名称、姓名、序号、账号、应发工资合计、基础工资、职务工资、级别工资、补助工资、奖金、福利、代扣失业保险金、代扣养老保险金、代扣住房公积金、代扣个人所得税、实发个人工资等等字段。另一个是登录管理表,用来纪录系统可登录人员的信息,主要有以下字段:用户名、密码等字段。
第7章 详细设计和编码
7.1程序设计语言
这份工资发放系统采用Visual Basic 6.0来写ACCESS数据库的办法,采用DAO访问数据库,运用DATA控件打开、访问并操作已有的数据库,通过编程方式,采用标准的SQL语句进行与对数据库的查询和修改,实现了用户管理本系统的功能。
7.2详细设计
1、数据编辑功能的设计
利用数据控件和各种约束控件操纵已存在的“工资明细表”数据库,使用ADDNEW方法向数据库创建成新记录;用UPDATE方法保存新记录,同时当前记录指针恢复为空值;使用DELETE方法来删除当前记录;使用CLOSE方法来关闭记录集并释放分配给它的资源;使用FIND方法来查询记录;使用MOVENEXT及MOVEPREVIOUS方法来移动记录,并检测记录集的EOF/BOF属性。
2、菜单关闭功能的设计
通过设置用户名对菜单的ENABLED及VALUE属性来达到对一般用户关闭数据编辑、增加用户及删除用户等菜单的功能。
3、导入记录的设计
5、增加用户的程序设计
(1)系统欢迎界面:
代码如下:
Private Sub Command1_Click()
frmlog.Show 注释:显示Frmlog窗体
frmcover.Hide 窗体设置热键
End Sub
Private Sub Command2_Click()
End
End Sub
(2)系统登录界面:
图 7.7
部分代码如下:
Private Sub Command1_Click()
Dim found, right As Boolean 定义VB的一个数据类型(布尔型)
Dim a As Boolean
found = False 错误赋值给found
right = True
Data1.Refresh
Data1.Recordset.MoveFirst 是让指针指向记录集中的第一条记录
Do While Data1.Recordset.EOF = False
If Data1.Recordset.Fields("操作员").Value = frmlog.Combo1.Text Then 取得Recordset.fields(“字段名”)的值
If Data1.Recordset.Fields("密码").Value = frmlog.Text1.Text Then
found = True
Else
found = True
right = False
End If
Exit Do 退出循环
Else
Data1.Recordset.MoveNext 是让指针指向记录集中的下一条记录
End If
Loop
Data1.Recordset.MoveFirst 是让指针指向记录集中的下一条记录
If found = False And right = True Then
a = MsgBox("没有此操作员,登录失败", vbExclamation, " 工资发放系统") 当输入的操作员错误后,提示“没有此操作员,登录失败” 警告
Else
If right = False Then
a = MsgBox("密码出错,重新输入?", vbYesNo + vbQuestion, " 工资发放系统") = vbNo 当输入错误的密码之后,系统提示“密码出错,重新输入?”
frmcover.Show 返回 frmcover.show窗体界面
Else
a = MsgBox("登录成功", vbInformation, " 工资发放系统")
frm工资发放系统.Show 输入正确的操作员和密码之后,显示登录成功
If Combo1.Text = "root" Then 如果操作员为root
frm工资发放系统.BZ.Enabled = True 登陆到Frm工资发放系统界面
frm工资发放系统.CX.Enabled = True 所有功能操作员都可以运行
frm工资发放系统.ZJ.Enabled = True
frm工资发放系统.SC.Enabled = True
frm工资发放系统.import.Enabled = True
frm工资发放系统.XG.Enabled = True
frm工资发放系统.TC.Enabled = True
Else
If Combo1.Text <> "root" Then 如果操作员不等于root
frm工资发放系统.BZ.Enabled = False 只有部分功能对操作员实现
frm工资发放系统.CX.Enabled = True
frm工资发放系统.ZJ.Enabled = False
frm工资发放系统.SC.Enabled = False
frm工资发放系统.XG.Enabled = True
frm工资发放系统.import.Enabled = False
frm工资发放系统.TC.Enabled = True
End If
End If
End If
(3)系统主界面
Private Sub B_Click()
frm分类查询.Show 显示分类查询
End Sub
Private Sub C_Click()
frm浏览.Show 显示浏览
End Sub
Private Sub CC_Click()
frm工资明细.Show 显示工资明细
End Sub
Private Sub DC_Click()
cancel:
End Sub
Private Sub DD_Click()
frm统发工资管理.Show 显示统发工资管理菜单
End Sub
Private Sub DY_Click()
代发工资表.Show 显示代发工资表
End Sub
Private Sub Form_Load()
End Sub
Private Sub GG_Click()
Dim a As Boolean 声明a是一个布尔型变量
On Error GoTo cancel 如果错误则转到退出状态
CommonDialog1.ShowSave打开保存对话框
filepath = CommonDialog1.FileName
'On Error GoTo fileerror 如果出现错误的话直接跳转到fileerror,执行Errhandle中的指令
On Error Resume Next如果出现错误,续续执行下面的语句
Open filepath + ".txt" For Output As #1 打开文件标记为#1,然后输出
s1 = Date$
Print #1, s1 打印文件
Data1.Recordset.MoveFirst 是让指针指向记录集中的下一条记录
Do While Data1.Recordset.EOF = False 循环语句,当data1错误时候
'If Data1.Recordset.Fields("部门名称").Value = Date$ Then
如果部门名称为data时候
s1 = Data1.Recordset.Fields("部门名称").Value 将data1部门名称赋值给s1
s2 = Data1.Recordset.Fields("序号").Value
s3 = Data1.Recordset.Fields("姓名").Value
s4 = Data1.Recordset.Fields("账号").Value
s5 = Data1.Recordset.Fields("应发工资合计").Value
s6 = Data1.Recordset.Fields("实发个人工资").Value
s7 = " "
Print #1, s1 + s7 + s2 + s7 + s3 + s7 + s4 + s7 + s5 + s7 + s6
打印以上的数据,行排列
'End If
Data1.Recordset.MoveNext 是让指针指向记录集中的下一条记录
Loop
Data1.Recordset.MoveFirst是让指针指向记录集中的第一条记录
Close #1 关闭
(4)工资明细:
Private Sub Command6_Click() 按下command6按钮时
End Sub
Private Sub cmdadd_Click()
XG = True
Command2.Visible = True 隐藏一下command2按钮
Command3.Visible = True隐藏一下command3按钮
Command2.Enabled = True 显示command2按钮
Command3.Enabled = True 显示command3按钮
cmdadd.Enabled = False 显示添加按钮
cmdUpate.Enabled = False
cmdDelete.Enabled = False显示删除按钮
cmdClose.Enabled = False显示关闭按钮
cmdFIND.Enabled = False
Command4.Enabled = False
cmdmove1(1).Enabled = False
cmdmove2(2).Enabled = False
Data1.Recordset.AddNew是让指针指向新的添加记录
addNewFlag = True
'Data1.Recordset.Edit是让指针指向编辑记录
Text1.SetFocus 是可以通过这个属性,将光标移到某个地方
End Sub
Private Sub cmdClose_Click() 鼠标单击事件,单击关闭按钮
If MsgBox("确定退出?", vbYesNo, "注意!") = vbYes Then
frm工资发放系统.Show
frm工资明细.Hide 如果单击关闭后显示确定退出提示,则返回工资发放系统主界面
End If 结束条件语句
End Sub
Private Sub cmdDelete_Click()
ss = MsgBox("真的删除这个记录?", vbYesNo + vbInformation, "删除记录") 单击删除按钮,提示真的删除记录?如果单击OK则删除记录
If (ss = vbYes) Then 如果将yes赋值给ss
Data1.Recordset.Delete 是让指针指向删除记录
Data1.Recordset.MoveNext是让指针指向记录集中的下一条记录
If Data1.Recordset.EOF Then
Data1.Recordset.MoveLast是让指针指向记录集中的最后一条记录
cmdmove2(2).Enabled = False 隐藏移动按钮
End If 结束条件语句
End If
End Sub
(5)数据查询:
部分代码如下:
Private Sub Command1_Click() 单击command1事件
On Error GoTo OOPS 如果出现错误,续续执行下面的语句
Dim My_Query As String 声明my query为字符串型类型变量
My_Query = Combo1 & " " & Combo2 & " '" & findtext.Text & "'"
Data1.RecordSource = "SELECT * FROM 工资明细表 WHERE " & My_Query 从ACCESS数据库中调用工资明细表项目
Data1.Refresh
Data1.Recordset.MoveLast 是让指针指向记录集中的最后一条记录
Data1.Recordset.MoveFirst是让指针指向记录集中的第一一条记录
MsgBox Data1.Recordset.RecordCount & " 个匹配"
Exit Sub Data与数据库的绑定程序 最终输出记录个数
OOPS:
MsgBox Err.Description消息框输出信息和标题
End Sub
Private Sub Command2_Click() 单击command2按钮
Data1.RecordSource = "工资明细表" 使用Data控件访问数据库
Data1.Refresh
End Sub
Private Sub Command3_Click() 单击command3按钮
MsgBox "如果你使用比较条件是 Like,你可以使用 * (通配符)完成查询" & vbNewLine & "例如:查询 Ma* 或 M*ria 或 *m*"
End Sub
Private Sub Form_Load()
Combo1.AddItem "部门名称" 在窗口显示部门名称
Combo1.AddItem "序号" 在窗口显示序号名称
Combo1.AddItem "姓名"在窗口显示姓名名称
Combo1.AddItem "账号"在窗口帐号名称
Combo2.AddItem "Like"控件外观初始化设置
Combo2.AddItem "<>"是往Combo1(0)控件中添加列表项
Combo2.AddItem "<="是往Combo1(0)控件中添加列表项
Combo2.AddItem ">=" 是往Combo1(0)控件中添加列表项
Combo1.ListIndex = 0 是设置当前选中项为第1项
Combo2.ListIndex = 0 是设置当前选中项为第2项
End Sub 结束语句
第8章 性能测试与分析
8.1测试
因为软件较小,而且时间较短,所以采用自上而下的渐增式测试方法。因为采用了模块开发,而此模块是直接产生EXE可执行文件的,所以单元测试比较简单。
8.2测试环境
系统:Windows 98/95
在MIS开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,未经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS开发总工作量的40%以上。因此,我们必须重视测试工作。
由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可能暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。
从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随不同阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。
(1)单元测试:
单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作。单元测试一般是由程序员完成,也称程序调试。
(2)组合测试
组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。
(3)确认测试
确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。
(4)系统测试
系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统是否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。
(5)用户验收测试
在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。
在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。
8.3测试方法
一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来看每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。黑盒测试又称为功能测试,白盒测试又称为结构测试。
经过几个月的毕业设计,因为时间和任务的性质的关系,没有完全按照上述的测试方法进行系统的测试,但经过一些简单的步骤的测试,证明本系统具有相当程度的稳定性。
8.4测试方案
功能 | 登录 | 增加、删除用户 | 修改密码 | 查询信息 | 导入、导出文件 | |
预 期 效 果 | 能正确检验用户身份及密码的一致性;若不匹配,能返回错误提示信息。 | 能正确验证只有管理员身份及密码一致才可决定是否增删用户。 | 能正确验证用户身份,及新密码和确认密码的匹配。 | 能够正确返回用户要查询的信息。然后退出程序。 | 能正确将工资数据导入、导出,并通过重启系统将导入数据写入到数据库中的工资明细表中。 |
1、系统开发环境:
系统开发环境包括硬件平台和软件平台两种。
硬件平台是指开发与运行所需要的硬件环境,主要包括计算机机型及硬件配置。由于本系统是一个小型的MIS管理系统,因此对计算机硬件的要求不高,比较经济,只要配备有PII处理器(或以上)、64M内存(或以上)、10G硬盘(或以上)的普通微机即可顺利运行。
软件平台是指系统开发与运行的软件环境。本系统在开发时选用了稳定性较强的Windows XP中文专业版和Visual Basic6.0作为开发语言,同时选用了Access数据库,由于这些软件产品都是Microsoft公司的产品,因此彼此之间的兼容性较好,开发出的应用系统稳定性较高。
Visual Basic 6.0具有可视化的开发环境,可以快速完成系统的开发,内部集成的数据库访问通道,使得可以轻松方便的对数据库管理。
数据库采用MICROSOFT ACCESS,由于我们的系统要求,采用它完全可以适合我们的工作需求,并且它所支持的数据类型十分丰富,维护简便,费用比较低,人员素质要求不是很高,容易升级。
本系统在单机上运行。
2、系统运行与维护:
系统的运行:
2.1初始数据的输入
本系统的输入采用鼠标和键盘相结合的输入方法。
2.2怎样进入系统
A、将本系统所在的文件夹拷贝到硬盘,然后执行其中的工资管理系统的程序文件即可,应注意要将全部文件的属性变以存档,消除只读属性。
B、在随后出现的登录界面上输入正确的用户名和密码即可
2.3怎样使用本系统:
点击鼠标左键即可进行相应功能的选择。
系统的维护:
本系统是个较复杂的人-机系统,由于系统外部环境与内部因素的变化,不断影响系统的运行,同时需要系统不断地适应这些变化,不断地完善系统,以提高系统运行的效率与服务水平,这就需要自始至终进行系统的维护工作。
系统的维护主要包括四个方面:
(1)程序的维护:指的是修改部分或全部程序,这种维护往往是在条件发生变化或原系统的效率低的情况下进行的。
(2)数据文件的维护:指的是按照用户的要求对数据文件进行不定期的修改。
(3)代码的维护:随着系统的发展和变化,可能会出现旧代码不能适应新要求的问题,因此,有必要变更代码,予以维护。
(4)硬件的维护:指的是对系统所使用的设备进行维护。
本系统的日常维护由专人来负责,如果出现一些不能解决的问题,则由开发者来负责。
2.4系统的转换方案:
本次开发的工资管理系统采用了并行转换方式,以保证平衡可靠的过度。即一方面使用本系统来进行工作,另一方面又继续沿用老的方式— 手工方式,这种状况持续了半个月的时间,在这期间发现了一些程序中存在的漏洞和错误,用户也提出一些修改意见,经过程序的进一步完善后,正式投入了使用,中止了以前老的手工的操作方式。
[1]王福成等 编著.Visual Basic 6.0数据库开发指南.北京:清华大学出版社出版 2000
[2]郭振波 编著.深入浅出Visual Basic 6.0中文版.北京:人民邮电出版社出版 1999
[3]林永等 编著.Visual Basic 6.0用户编程手册.北京:人民邮电出版社出版 1999
[4]刘炳文等 编著.Visual Basic 6.0 程序设计教程.北京:清华大学出版社出版 2000
[5]张海藩等 编著.软件工程导轮.北京:清华大学出版社出版 1998
Private Sub Command1_Click()
End Sub
Private Sub Command2_Click()
On Error GoTo error1
XG = True
'Data1.Recordset.Update
Command2.Visible = False
Command3.Visible = False
Command2.Enabled = False
Command3.Enabled = False
cmdadd.Enabled = True
cmdUpate.Enabled = True
cmdDelete.Enabled = True
cmdClose.Enabled = True
cmdFIND.Enabled = True
Command4.Enabled = True
cmdmove1(1).Enabled = True
cmdmove2(2).Enabled = True
Dim s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16 As Single
s6 = Val(Text6.Text)
s7 = Val(Text7.Text)
s8 = Val(Text8.Text)
s9 = Val(Text9.Text)
s10 = Val(Text10.Text)
s11 = Val(Text11.Text)
s12 = Val(Text12.Text)
s13 = Val(Text13.Text)
s14 = Val(Text14.Text)
s15 = Val(Text15.Text)
s5 = s6 + s7 + s8 + s9 + s10 + s11
If s5 <= 800 Then
s15 = s5 * 0
ElseIf s5 > 800 Then
s15 = (s5 - 800) * 0.02
End If
s16 = s5 - s12 - s13 - s14 - s15
Text5.Text = str(s6 + s7 + s8 + s9 + s10 + s11)
Text15.Text = str(s15)
Text16.Text = str(s5 - s12 - s13 - s14 - s15)
Data1.Recordset.Update
If addNewFlag Then
Data1.Recordset.MoveLast
addNewFlag = False
End If
Exit Sub
error1:
MsgBox Err.Description, vbOKOnly, "错误提示"
End Sub
Private Sub Command3_Click()
On Error GoTo error2
XG = True
Data1.Recordset.CancelUpdate
Command2.Enabled = False
Command3.Enabled = False
Command2.Visible = False
Command3.Visible = False
cmdadd.Enabled = True
cmdUpate.Enabled = True
cmdDelete.Enabled = True
cmdClose.Enabled = True
cmdFIND.Enabled = True
Command4.Enabled = True
cmdmove1(1).Enabled = True
cmdmove2(2).Enabled = True
Exit Sub
error2:
MsgBox Err.Description, vbOKOnly, "错误提示"
End Sub
Private Sub Command4_Click()
Data1.Recordset.MoveLast
While Not Data1.Recordset.BOF
Data1.Recordset.Delete
Data1.Recordset.MovePrevious
Wend
cmdmove1(1).Enabled = False
cmdmove2(2).Enabled = False
End Sub
Private Sub Data1_Validate(Action As Integer, Save As Integer)
If Text1.DataChanged Then
Save = True
If Data1.Recordset.RecordCount > 1 Then
cmdmove1(1).Enabled = True
cmdmove2(2).Enabled = True
End If
Else
If Text1.Text = "" And XG = True Then
ss = MsgBox("必须要有'单位编码'和'个人编号'!", -vbOKOnly + vbInformation, "提示")
Action = False
Command2.Visible = True
Command3.Visible = True
cmdadd.Enabled = False
cmdUpate.Enabled = False
cmdDelete.Enabled = False
cmdClose.Enabled = False
cmdFIND.Enabled = False
Command4.Visible = False
cmdmove1(1).Enabled = False
cmdmove2(2).Enabled = False
End If
End If
If Action = data_actionunload Or Action = data_actionclose Then
Save = True
End If
End Sub
Private Sub Form_Load()
On Error Resume Next
Dim i
addNewFlag = False
Data1.Refresh
'Text1.Text = ""
'Text2.Text = ""
'Text3.Text = ""
'Text4.Text = ""
'Text5.Text = ""
'Text6.Text = ""
'Text7.Text = ""
'Text8.Text = ""
'Text9.Text = ""
'Text10.Text = ""
'Text11.Text = ""
'Text12.Text = ""
'Text13.Text = ""
'Text14.Text = ""
'Text15.Text = ""
'Text16.Text = ""
If Data1.Recordset.RecordCount <= 0 Then
cmdmove1(1).Enabled = False
cmdmove2(2).Enabled = False
Else
cmdmove2(2).Enabled = True
End If
Data1.Recordset.MoveLast
Data1.Recordset.MoveFirst
End Sub
Private Sub Timer1_Timer()
Label18.Caption = Time
Label17.Caption = Date
Label19.Caption = "记录:" & (Data1.Recordset.AbsolutePosition + 1) & "/" & Data1.Recordset.RecordCount & "条"
End Sub
六、密码修改
Private Sub Command1_Click()
Dim a As Boolean
If frm修改密码.Combo1 = "" Then
a = MsgBox("请输入管理员姓名", vbInformation, " 工资发放系统")
Else
Dim found, right As Boolean
found = False
right = True
Data1.Refresh
Data1.Recordset.MoveFirst
Do While Data1.Recordset.EOF = False
If Data1.Recordset.Fields("操作员").Value = frm修改密码.Combo1.Text Then
If Data1.Recordset.Fields("密码").Value = frm修改密码.Text1.Text Then
found = True
Else
found = True
right = False
End If
Exit Do
Else
Data1.Recordset.MoveNext
End If
Loop
If found = False And right = True Then
a = MsgBox("此管理员不存在,你没这个权限", vbExclamation, " 工资发放系统")
Else
If right = True Then
frm修改密码.Combo1.Enabled = False
frm修改密码.Text1.Enabled = False
frm修改密码.Text2.Enabled = True
frm修改密码.Text3.Enabled = True
frm修改密码.Text4.Enabled = True
frm修改密码.Command1.Enabled = False
frm修改密码.Command2.Enabled = True
Else
a = MsgBox("密码出错,你没有这个权限", vbExclamation, " 工资发放系统")
End If
End If
End If
End Sub
Private Sub Command2_Click()
Dim a As Boolean
If frm修改密码.Text2.Text = "" Then
a = MsgBox("请输入操作员姓名", vbInformation, " 工资发放系统")
ElseIf frm修改密码.Text2.Text <> frm修改密码.Combo1 Then
a = MsgBox("你输入的操作员不一致,请检查", vbExclamation, " 工资发放系统")
ElseIf frm修改密码.Text3.Text <> frm修改密码.Text4.Text Then
a = MsgBox("你输入的密码不一致,请检查", vbExclamation, " 工资发放系统")
ElseIf MsgBox("真的要修改吗?", vbYesNo + vbQuestion, " 工资发放系统") = vbYes Then
Data1.Recordset.Edit
Data1.Recordset("操作员").Value = frm修改密码.Text2.Text
Data1.Recordset("密码").Value = frm修改密码.Text3.Text
Data1.UpdateRecord
a = MsgBox("修改成功", vbInformation, " 工资发放系统")
Unload Me
Form_Initialize
End If
End Sub
Private Sub Command3_Click()
Unload Me
Call Form_Initialize
End Sub
Private Sub Form_Initialize()
If Data1.Recordset.RecordCount <> 0 Then
Dim i, count As Integer
Dim diffrent As Boolean
diffrent = False
i = 0
count = frm修改密码.Combo1.ListCount
Data1.Recordset.MoveFirst
Do While Data1.Recordset.EOF = False
Do While i <= count
If Data1.Recordset("操作员").Value = frm修改密码.Combo1.List(i) Then
diffrent = True
Exit Do
Else
i = i + 1
End If
Loop
If diffrent = False Then
frm修改密码.Combo1.AddItem Data1.Recordset("操作员")
End If
i = 0
diffrent = False
count = frm修改密码.Combo1.ListCount
Data1.Recordset.MoveNext
Loop
Data1.Recordset.MoveFirst
frm修改密码.Combo1.Text = Data1.Recordset("操作员")
Else
frm修改密码.Combo1.Text = ""
End If
frm修改密码.Text1.Text = ""
frm修改密码.Text2.Text = ""
frm修改密码.Text3.Text = ""
frm修改密码.Text4.Text = ""
frm修改密码.Text2.Enabled = False
frm修改密码.Text3.Enabled = False
frm修改密码.Text4.Enabled = False
frm修改密码.Command2.Enabled = False
End Sub
Private Sub Form_Load()
Dim str As String
str = App.Path
If right(str, 1) <> "\" Then
str = str + "\"
End If
Data1.DatabaseName = str & "\工资发放系统"
Data1.RecordSource = "登录管理表"
Data1.Refresh
End Sub