企业工资管理系统文档_第1页
企业工资管理系统文档_第2页
企业工资管理系统文档_第3页
企业工资管理系统文档_第4页
企业工资管理系统文档_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

年6月23日企业工资管理系统文档资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。工资管理系统摘要本系统基本上能够满足现代化企业工资管理的需求。现代化工资管理系统中使用了各种表格,保存相关的工资信息,方便查询,浏览,修改等操作。本系统的前提条件是必须有员工的考勤信息作为基础,因为本系统是使用员工考勤信息来计算员工的工资,在使用的时候必须要保证员工的人事信息数据库和工资数据库在同一个文件夹中。本系统结合实际的人事、财务制度,经过实际的需求分析,采用功能强大的VB作为开发工具、Access作为数据库开发出来的企业工资管理系统。本文首先分析了企业工资管理系统的应用现状,阐述了本工资管理系统的开发目的。经过对数据库技术的现状与发展、数据库系统的选择原则、系统开发工具的选择一系列问题的分析,确定了系统的开发平台。接着详细给出了从工资管理系统分析到总体设计详细设计与实现及测试的各个环节,最后对本系统作出了客观评价,指明了系统的现实意义、缺点以及系统的升级方向。引言随着计算机技术的飞速发展,计算机在企业管理中的应用越来越普及,利用计算机实现企业工资的管理显得越来越重要。对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;而工资管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,一般不允许出错,如果实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行工资发放工作,不但能够保证工资核算准确无误、快速输出,而且还能够利用计算机对有关工资的各种信息进行统计,服务于财务部门其它方面的核算和财务处理,同时计算机具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事工资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。企业的工资管理是公司管理的一个重要内容。随着当今企业人员数量增加,企业的工资计算也变得越来越复杂。如果能够实现工资管理的自动化,无疑是给企业管理部门带来很大的方便。资金是企业生存的主要元素。资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分,因为企业每个月都要涉及发放企业员工工资的问题。企业员工的人数越多,工资的统计工作就越多,工资的发放困难就越大。最初的工资统计和发放都是使用人工方式处理,工作的时候,出现错误的机率也随之升高。工资管理系统就是使用电脑代替大量的人工统计和计算,完成众多工资信息的处理,同时使用电脑还能够安全地保存大量的工资记录。企业工资管理系统,为个人提供工资查询服务,为企业提供工资计算,工资统计等服务。传统的纸张材料的数据信息管理已经不适合现代企业公司的发展了,实现工资管理的系统化、规范化、自动化,将成为现在公司管理工资的首选。本系统实现的工资管理系统基本上能够满足现代化企业工资管理的需求。2、企业工资管理系统概述2.1系统的主要功能企业工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、增加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,快速打印出工资报表,针对系统服务对象的具体要求,设计了企业工资管理系统。企业工资管理系统主要有以下几大功能:(1)对单位人员的变动进行处理。一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位内部调动。因此,设计系统是应考虑到这些情况。(2)对职工的工资进行计算、修改。能对各职工的工资进行计算,即计算应发金额、应扣金额及实发金额等。(3)查询统计功能。要求即能够单项查询,比如查看某个职工的工资情况等;也能够查询全部。(4)报表打印功能。每月发放工资时,要求能够打印本月的工资表、随工资发给每个职工的工资条以及工资统计表。2.2企业工资管理系统的应用现状2.2.1开发背景随着中国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改进服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统,仅凭手工操作来实现不但容易出错,而且也造成资源的不必要浪费,因此开发这个工资管理系统是很有必要的。2.2.2开发环境系统运行环境腾II或以上64MB内存或以上Windows95或以上装了VisualBasic6.0开发工具1、VB的选用和简介现在,市场上能够选购的应用开发产品很多,流行的也有数十种。当前在中国市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有:Microsoft公司的VisualBasicMicrosoft公司的VisualCBorland公司的DelphiSun公司的Java等等在当前市场上这些众多的程序开发工具中,有些强调程序语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的提高,各有各的优点和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必须要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程序语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间。作为数据库系统的开发,VB是一个非常理想选择。VB因简单易学、功能强大、编译速度快而从众多的软件开发工具中脱颖而出。它提供了灵活的可视化设计工具,将可视化界面与面向对象技术完善、紧密地结合起来,并封装了Windows编程的复杂性。程序的规模小到简单的个人数据库应用,大到复杂的企业的多层次分布式系统,都能够使用VB进行开发,其友好的集成开发界面,可视化的双向开发模式,良好的数据库应用支持高效的程序开发和程序运行,备受广大程序开发人员的好评。特别是VB对数据库应用的强大支持,大大提高了数据库应用软件开发的效率,缩短了开发周期,深受广大数据库应用程序设计人员的喜爱。VB为数据库应用开发人员提供了丰富的数据库开发组件,使数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快,VB是微软公司出品的一个快速可视化程序开发工具软件,借助微软在操作系统和办公软件的垄断地位,VB在短短的几年内风靡全球。VB是极有和功能强大的软件,主要表现在:所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,较易维护的生成代码。美国微软公司在1991年推出VB1.0至今已经经历了6个版本,VB6.0运行在win9x或winme,win,winxp,windowsNT等操作系统下,是一个32位的应用程序开发工具。VB程序语言具有许多优秀的特性,用其设计应用程序时有两个基本特点:可视化设计和事件驱动编程。VisualBasic系统除了一般高级语言所具有的一些名词术语外,还有几个系统常见的名词。其基本含义如下:视窗(Form)视窗是进行人机交互的界面或接口,也叫窗体。VB系统的人机交互界面或接口,无论是在设计时或是在运行时,都是Windows系统的标准视窗。对象(Object)对象是VB系统内部提供给设计者能够直接使用的处理输出的控制工具。本程序所应用到的对象类型有标签框(LabelBox),文本框(TextBox),命令按扭(CommandButton),网格(DataGrid),ADO控件(Adodc1)等。当把这些工具放置到用户界面对应的窗体上时,被称为对象或控件。用户能够经过设置对象的”属性”和”方法”,便于对象适应自己所设计应用程序的输入输出内容,对象的生成过程及结构都被封装起来。正确使用对象能够减少程序和开发时间,提高程序设计者的工作效率。属性(Properties)属性是VB系统提供的有关对象的参数或数据接口。用户经过适当地设置或改变对象的属性来确定对象的外观及性能特征,从而有效地使用系统提供的对象。比如,对象的名称、在屏幕上显示的位置、大小、颜色、接收或容纳的数据内容及数据的表现格式等。事件(Events)事件是指用户或操作者对计算机进行的某一操作(如击键、单击或移动鼠标等)的行为或系统状态发生的变化。VB系统常见事件来引导计算机执行一段程序。程序所用的键盘事件有KeyPress(按键)事件,KeyDown事件和KeyUp事件;鼠标事件有Click(单击鼠标)事件,DbDlicd(双击鼠标)。方法(Method)方法主要是指对一个对象使用某种作用的过程。它是在程序执行的过程中要计算机执行的某种操作。其程序的方法有Show(显示)方法,Hide(隐藏)方法,Refresh(刷新)方法。过程(Procedure)过程是指经过定义或说明的,或基于某一对象对应的事件所引发的程序段。模块(Module)模块是指一些运算量或过程进行声明或定义的一个集合。系统程序大致可分成四个模块:数据输入、根据查询、数据打印和通讯。2、可视化设计同其它的一些可视化程序开发工具一样,VB具有可视化设计的特点,微软的Word在刚刚进入市场时,同WPS竞争的一个重要的功能砝码就是"所见即所得"的字处理功能,VB在设计应用程序界面时也能够说是"所见即所得".在设计时,头脑中所想象的应用程序界面,完全能够经过键盘鼠标以及徒手画出来,而不是编制大量的代码然后再编译生成,如果需要修改,也是利用键盘鼠标和手画,而底层的一些程序代码由VB自动生成或修改。VB为用户提供大量的界面元素(在VB中称为控件对象),这些控件对象对于熟悉Windows应用程序的用户而言是一点也不陌生,如"窗体"、"菜单"、"命令按钮"、"工具按钮"、"检查框"等等,用户只需要利用鼠标、键盘把这些控件对象拖动到适当的位置,设置它们的大小、形状、属性等,就能够设计出所需的应用程序界面。3、事件驱动编程Windows操作系统出现以来,图形化的用户界面和多任务多进程的应用程序要求程序设计不能是单一性的,在使用VB设计应用程序时,必须首先确定应用程序如何同用户进行交互.例如发生鼠标单击、键盘输入等事件时,由用户编写的代码控制这些事件的响应,这就是所谓的事件驱动编程。4、实现菜单选项菜单是程序最重要的特性之一,大多数程序都依赖一个定义良好的菜单使程序易于使用和维护,VisualBasic也提供了强大的创立菜单功能是程序更加标准。本系统使用VisualBasic的菜单编辑器建立菜单或者修改已经存在的菜单,您也能够使用VisualBasic的ApplicationWizard来操作。5、实现工具栏CoolBar控件与Office中看到的CoolBar是类似的。CoolBar就是一个能够在窗体上浮动的工具,同时也是其它ActiveX的容器。经过在CoolBar中迁入其它空间你也能够向用户提供更好的灵活性和义用性。选择”工程”下拉菜单中的”部件”选项,显示”部件”对话框。在”控件”选项卡列表中选择”MicrosoftWindowsCommonControls6.0”本系统就用了Cool工具中的Statubar控件,在系统这一界面中,添加了状态栏,在第一个栏中,在样式这一栏中选择了文本,在第二个栏中,选择了系统日期,第三个栏中选择了系统时间,这样,任何时候操作本系统,都能够看到当前的时间和日期。使用Access实现关系型数据库数据库的概念数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表示信息,简而言之,数据库就是信息的集合。计算机的数据库能够分为两类:非关系数据库(flat-file)和关系数据库(relational)。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,对象记录、域等。新建一个数据库创立任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创立一个数据库结构的过程被认为是数据模型设计。1.标识需要的数据;2.收集被标识的字段到表中;3.标识主关键字字段;4.绘制一个简单的数据图表;5.规范数据;6.标识指定字段的信息;7.创立物理表。修改已建的数据库数据库的修改分为:添加、编辑和删除记录。这三种操作均可由VisualBasic创立的程序来完成,下面的章节将详细描述实现的具体方法。6、实现数据库之间的联系数据库之间的关系指明两个库之间共享一个共同的关键字值。一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录。一个更高级的连接形式称为自连接。这种连接是指一个表被连接到它自己的一个字段,或在不同的记录中由重复数据的组合字段。数据库中有三种不同类型的关键字:主关键字、组合关键字和外关键字。在表中使用的关键字类型用于描述库表示什么以及在数据库中如何与其它的库建立关系。2.2.3数据库数据库是经过数据库管理系统(DBMS-DATABASEMANAGEMENTSYSTEM)软件来实现数据的存储、管理与使用的DBASELL就是一种数据库管理系统软件。(1)数据库的概念数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的,和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个"数据库集合"。(2)数据库的优点使用数据库能够带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间;实现数据资源的充分共享等等。另外,数据库技术还为用户提供了非常简便的使用手段使用户易于编写有关数据库应用程序。(3)数据库文件的特征无论使用哪一种数据库管理系统,由它们所建立的数据库文件都能够看成是具有相同性质的记录的集合,因而这些数据库文件都有相同的特性:文件的记录格式相同,长度相等。不同的行是不同的记录,因而具有不同的内容。不同的列表示不同的字段名,同一列中的数据的性质(属性)相同。每一行各列的内容是不能分割的,但行的顺序和列的顺序不影响文件内容的表示。3系统分析3.1系统需求分析本系统的开发宗旨以及总体任务就是帮助企业的财务主管部门提高工作效率,实现企业工资信息管理的自动化、规范化和系统化。因此为了能够实现编制这个系统所设定的目标,在程序的开发之前,需求分析是必不可少的。需求分析的第一步描述工资管理系统的功能,即定义用例,以此确定系统的功能需求。工资管理系统的用例分析主要是找出系统中所有的用例,因此要和工资管理系统的潜在用户进行讨论。系统最终实现的主要功能如下。工资管理系统的用例包括:(1)系统管理(2)工资设置(3)工资统计(4)工资查询(5)工资表导出(6)打印报表系统管理用例包括添加用户和修改密码。都经过其相应的窗口来实现。工资设置用例包括基本工资设置和其它项目设置。其它项目设置有奖金、津贴、福利、扣发等项目。工资统计用例能够根据不同的月份对其进行相应地统计。工资查询用例包括单人查询和查询所有,能够显示员工基本工资、员工其它项目情况,以及员工工资具体统计情况。工资表导出用例可根据所需的月份把工资表导出并可直接显示在Excel表格中,而且能够加以保存。打印报表用例是一个很重要的一个用例,它提供给用户生成报表和报印的功能,能够很方便地将员工的工资情况表打印出来。3.1.1系统目标采用公司现有的软硬件及科学的管理系统开发方案,建立工资管理系统,实现企业工资管理的计算机自动化。系统应符合公司人事、工资管理制度,并达到操作直观、方便、实用、安全等要求。3.1.2数据流程图基本工资等设置基本工资等设置月度员工考勤表基本工资奖金等表计算工资导出或打印工资表月度工资发放工资图3-1数据流程图3.2系统功能调查系统从总体上能够分为系统管理、工资信息设置、工资信息管理、打印报表等功能。3.2.1系统管理功能(1)添加用户:使用这个用户登录后,能够添加其它用户(2)修改密码:每一个用户都能够更改自己的密码3.2.2工资信息设置功能(1)基本工资设置:按照员工编号或职务设置员工的基本工资信息。(2)其它项目设置:设置单个员工的奖金,福利、津贴、出差费、加班费等信息。(3)工资计算公式设置:设置员工实发工资的计算公式信息。3.2.3工资信息管理功能出勤统计:按照月份统计员工的当月出勤信息。计算实发工资:计算当月员工实发工资的金额。查询工资:能够按月查询所有员工工资信息或查询个人工资信息。(4)导出工资表:把数据库中员工的工资信息导出到Excel中。3.2.4打印报表功能(1)基本工资列表打印:打印出基本工资列表(2)其它项目打印:打印其它项目列表(3)工资统计列表打印:打印工资统计列表3.3系统功能模块图基本工资设置基本工资设置其它项目设置计算公式设置员工资料设置添加用户退出修改密码工资信息设置系统管理工资信息管理打印报表企业工资管理系统工资统计打印其它项目打印基本工资打印工资表导出查询工资计算实发工资出勤统计图3-2系统功能模块图4系统概要设计4.1系统总体结构设计设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据库结构的基础。概念设计中自顶向下的实体分析方法,即常见的实体联系模型(简称E-R模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。E-R模型是建立概念性数据模型的有力工具。经过对企业员工管理内容、工资管理内容和过程的分析,本系统设计的实体和属性如下及图4-1和图4-2:员工(包括员工编号、员工姓名、性别、籍贯、年龄、生日、学历、专业、住址、邮编、电话、Email、参加工作时间、进入公司时间、起薪时间、备注)部门(员工编号、部门名称)职务(员工编号、职务名称)职称(员工编号、职称名称)工资结构(员工编号、正常加班工资、特殊加班工资、出差工资、旷工工资、迟到早退)工资帐目(工资帐目代号、工资帐目名称)员工员工员工姓名性别员工编号籍贯年龄生日学历专业住址邮编电话Email参加工作时间进入公司时间起薪时间备注图4-1员工信息图部门部门部门代号部门名称职务职务代号职务名称职称职称代号职称名称工资账目工资账目代号工资账目名称工资结构员工编号正常加班工资特殊加班工资出差工资旷工工资迟到早退图4-2工资管理内容分析图4.2实体和实体之间的关系E-R图部门部门属于职称职务员工具有担任具有工资结构工资账目具有图4-3实体之间的关系E-R图4.3数据库设计Access在VB中的应用非常广泛,为此我选用Access数据库来进行数据库的逻辑设计。根据前面定义的实体及实休之间的关系,形成数据库的表格以及各个表之间的关系。4.3.1Person数据库(员工数据库)(1)StuffInfo(员工资料表):员工基本信息表用于存储员工基本信息,为保证数据的一致和历史资料的完整,表的记录在一般的情况不能被删除。表4-1StuffInfo(员工资料表)序号字段名字段中文名类型1SID员工编号文本2SName员工姓名文本3SGender性别文本4SPlace籍贯文本5SAge年龄长整型6SBirthday生日日期/时间7SDegree学历文本8SSpecial专业文本9SAddress住址文本10SCode邮编文本11STel电话文本12SEmailEmail文本13SWorkTime参加工作时间日期/时间14SInTime进入公司时间日期/时间15SDept部门文本16SPayTime起薪时间日期/时间17SPosition职务文本18SRemark备注文本(2)UserInfo(用户口令表):为了便于多个用户管理该系统,建立此表,记录用户的登录用户名和口令。表4-2UserInfo(用户口令表)序号字段名字段中文名类型1UserID用户名称文本2UserPWD用户密码文本(3)OverTimeInfo(加班情况表):用于存储员工加班的情况,在计算工资时便于统计。表4-5OverTimeInfo(加班情况表)序号字段名字段中文名类型1OID记录编号自动编号2OStuffID员工编号文本3OSpeciality特殊加班天数数字4OCommon正常加班天数数字5OFromday加班日期日期/时间4.3.2Salary数据库(工资数据库)(1)AttendanceStatistics(员工出勤表):用于统计员工的出勤情况,为统计工资时提供方便。表4-7AttendanceStatistics(员工出勤表)序号字段名字段中文名类型1StuffID员工编号文本2StuffName员工姓名文本3RecordMonth统计时间日期时间4Attendance出勤天数日期/时间5LateEarly迟到早退次数数字6Absent旷工次数数字7OverTimeCom正常加班次数数字8OverTimeSpe特殊加班次数数字9Errand出差次数数字(2)FormulaSetting(工资设置表):用于设置工资的各项情况。表4-8FormulaSetting(工资设置表)序号字段名字段中文名类型1OvertimeCom正常加班工资百分比数字2OvertimeSpe特殊加班工资百分比数字3Errand出差工资数字4Absent旷工工资数字5Le迟到早退数字(3)Salaryother(其它工资项目表):用于存储不同名称的其它工资,比如奖金、津贴、福利等。表4-9Salaryother(其它工资项目表)序号字段名字段中文名类型1StuffID员工编号文本2YearMonth年月日期/时间3Type类型数字4Name名称文本5Money金额货币6Remark备注备注(4)SalarySetting(基本工资设置):用于存储不同职称的员工的基本工资。表4-10SalarySetting(基本工资设置)序号字段名字段中文名类型1StuffID员工编号文本2Sposition员工职务文本3Salary基本工资货币(5)UserInfo(用户表):用于存储新添加的用户,当添加完用户时,就被存储在此表中。表4-11UserInfo(用户表)序号字段名字段中文名类型1UserID用户名称文本2UserPWD用户密码文本(6)SalaryStatistics(工资情况表):用于存储员工的工资情况表,便于明确查看。表4-12SalaryStatistics(工资情况表)序号字段名字段中文名类型1StuffName员工编号文本2Stuffname员工姓名文本3YearMonth时间日期/时间4Basicsalary基本工资货币5Bonus奖金货币6Welfare福利货币7Allowance津贴货币8Abatement扣发货币9LeSub迟到早退扣发货币10AbsentSub旷工扣发货币11Overtime加班费货币12Others其它金额货币13Total总额货币5详细设计根据系统分析、系统概要设计的结果,采用VB作为开发工具,实现公司工资管理各模块的功能。系统运行时,首先出现在用户面前的就是一个登录窗口。5.1登录窗体设计5.1.1功能说明它主要是控制员工登录,防止非法用户闯入本系统,保证系统的安全,输入口令时屏幕显示为”*”以利保密。在开发过程当中,我还给系统限制了登录出错的次数,如果用户名或密码出错超过三次,那就自动退出系统。系统登陆时,要求正确输入用户名和密码。成功登陆后显示如图4-2所示工资管理系统主界面。用户名分为管理员用户和普通用户。如图4-1所示: 图4-1登录窗口实现功能的部分主要代码:PrivateSubComok_Click()OnErrorGoToDealerrorDimstrSqlAsStringDimstrMsgAsString'OnErrorGoToDealerrorDimobjCnAsNewConnectionstrcn=CS()objCn.ConnectionString=strcnobjCn.OpenSetobjRs=NewRecordsetSetobjRs.ActiveConnection=objCnobjRs.CursorLocation=adUseClientstrSql="SELECT*FROM系统用户"objRs.OpenstrSqlobjRs.ActiveConnection=NothingobjCn.CloseSetobjCn=NothingIfLogontimes>=3ThenMsgBox"你已经超过最大登陆次数!退出系统",vbOKOnly+vbCritical,"系统登录"EndElseobjRs.MoveFirstobjRs.Find"用户名='"&txtUserName&"'"IfobjRs.EOFThenMsgBox"用户名错误!",vbOKOnly+vbCritical,"系统登录"txtUserName.SetFocustxtUserName.Text=""ElseIfobjRs!口令<>txtPasswordThenMsgBox"密码错误!请重新输入!",vbOKOnly+vbCritical,"系统登录"txtPassword.SetFocustxtPassword.Text=""Else'MsgBox"欢迎使用工资管理系统",vbOKCancel+vbOKOnly,"系统登录"strusername=txtUserNameuserpassword=txtPassword IfCmbStatus=""Then MsgBox"请选择登陆身份!",vbOKOnly+vbCritical,"系统登录" CmbStatus.SetFocus Else IfCmbStatus.ListIndex=0AndobjRs!admin=TrueThen UserAdmin=1 EndIf IfCmbStatus.ListIndex=0AndobjRs!admin=FalseThen X=MsgBox("你不是管理员,将以普通用户登陆",vbOKCancel+vbOKOnly,"系统登录") EndIf IfX=2Then txtUserName.SetFocus txtUserName.Text="" txtPassword.Text="" Else '添加操作员登陆时间 strSql="insertintot_login(用户,登录时间)values('"&txtUserName&"','"&Now&"')" SetobjRs=ExecuteSQL(strSql,strMsg) UnloadMe MDIForm1.Show EndIfEndIfEndIfEndIfEndIfLogontimes=Logontimes+1'登陆次数ExitSubDealerror:msg="程序执行出错,错误信息如下:"&vbCrLf&Err.DescriptionShowErrormsgEndSubDimobjRsAsRecordsetDimiAsIntegerDimLogontimesAsIntegerPrivateSubComcancle_Click()n=MsgBox("你选择了退出系统登陆,退出将不能启动管理系统!"&vbCrLf&"是否真的退出?",vbYesNo,"系统验证")Ifn=vbYesThenUnloadMeEndIfEndSub5.2主窗口设计5.2.1功能说明界面采用MDI方式,可同时打开几个子窗体,在界面上放置了菜单栏,它集中了系统操作的入口,各功能模块的执行从此进入。其总体模块图如下所示:主菜单主菜单系统管理工资信息设置工资信息管理打印报表图5-2总体模块图5.3系统管理模块5.3.1功能说明系统管理模块主要实现的是添加用户和修改密码的功能,当想要添加用户时,就可直接在添加用户这个窗体上进行录入;而用户想要修改密码时则能够在修改密码这个窗口上进行操作,此时用户必须记得原先的密码才能进行修改,而且修改密码时设置了再次确认密码,以免由于误输而导致操作无法完成。添加用户窗体代码如下:PrivateSubcmdCancel_Click()UnloadMeExitSubEndSubPrivateSubcmdOK_Click()DimsqlAsStringDimrsAsADODB.RecordsetIfTrim(username.Text)=""ThenMsgBox"请输入用户名称",vbOKOnly+vbExclamation,"警告"'ExitSubusername.SetFocusElsesql="select*from系统用户where用户名='"&username&"'"Setre=getrs(sql,"gzgl")Ifre.EOF=FalseThenMsgBox"这个用户已经存在,请重新输入用户名",vbOKOnly+vbExclamation,"警告"username.SetFocususername.Text=""password.Text=""confirmpwd.Text=""ExitSubElseIfTrim(password.Text)<>Trim(confirmpwd.Text)ThenMsgBox"两次输入密码不一致,请重新输入密码",vbOKOnly+vbExclamation,"警告"password.Text=""confirmpwd.Text=""password.SetFocusExitSubElseIfTrim(password.Text)=""ThenMsgBox"密码不能为空",vbOKOnly+vbExclamation,"警告"password.Text=""confirmpwd=""password.SetFocusElseIfAdminCheck=FalseThensql="insertinto系统用户(用户名,口令)values('"&usernamesql=sql&"','"&password&"')"Calltransactsql(sql,"gzgl")Elsesql="insertinto系统用户(用户名,口令,admin)values('"&usernamesql=sql&"','"&passwordsql=sql&"','"&UserAdmin&"')"EndIfCalltransactsql(sql,"gzgl")MsgBox"添加成功",vbOKOnly+vbExclamation,"添加结果"username.Text=""password.Text=""confirmpwd.Text=""username.SetFocusIfCheck1=FalseThenUnloadMeEndIfEndIfEndIfEndIfEndSubPrivateSubForm_Load()Me.Left=ReadIni("添加用户","left")Me.Top=ReadIni("添加用户","top")EndSubPrivateSubForm_Unload(CancelAsInteger)CallWriteIni("添加用户","left",Me.Left)CallWriteIni("添加用户","top",Me.Top)EndSub修改密码窗体代码如下:PrivateSubcmdCancel_Click()UnloadMeExitSubEndSubPrivateSubcmdOK_Click()DimsqlAsStringDimrsAsADODB.RecordsetIfTrim(oldpwd.Text)=""ThenMsgBox"请输入旧密码",vbOKOnly+vbExclamation,"提示"oldpwd.SetFocusExitSubElseIfTrim(oldpwd.Text)<>Trim(userpassword)ThenMsgBox"旧密码与登录的密码不同,请重新输入!",vbOKOnly+vbExclamation,"提示"oldpwd.Text=""oldpwd.SetFocusElseIfTrim(newpwd.Text)=""ThenMsgBox"请输入新密码",vbOKOnly+vbExclamation,"提示"newpwd.SetFocusExitSubElseIfTrim(newpwd.Text)<>Trim(confirmpwd.Text)ThenMsgBox"两次密码不同",vbOKOnly+vbExclamation,"警告"newpwd.Text=""confirmpwd.Text=""newpwd.SetFocusElseuserpassword=newpwdsql="update系统用户set口令='"&newpwd&"'where用户名='"&strusername&"'"Calltransactsql(sql,"gzgl")MsgBox"密码已经修改",vbOKOnly+vbExclamation,"修改结果"UnloadMeEndIfEndIfEndSubPrivateSubForm_Load()Me.Left=ReadIni("修改密码","left")Me.Top=ReadIni("修改密码","top")EndSubPrivateSubForm_Unload(CancelAsInteger)CallWriteIni("修改密码","left",Me.Left)CallWriteIni("修改密码","top",Me.Top)EndSub5.4工资信息设置模块5.4.1功能说明工资信息设置基基本工资设置工资信息设置基基本工资设置其它项目设置基员工资料设置图5-5分解模块图员工基本档案信息的实现:员工基本档案信息管理,在窗体中完成员工基本信息的录入工作。根据提示在该窗体中输入相应的信息,最后单击”保存”按钮,进行信息的保存。如图4-3所示图4-3员工基本档案信息录入窗口相应部分代码如下:'添加员工基本信息PrivateSubcmdOK_Click()DimrsAsADODB.RecordsetDimstrSqlAsStringDimstrMsgAsStringDimtmpPathAsStringDimiStmAsADODB.Stream'如果是修改(保存照片--删除原记录--保存记录)IfblnChange=TrueThen'如果不要删除IfblnDelPhoto=FalseThen strSql="select*fromt_brwhere工号='"&txtGH.Text&"'" Setrs=ExecuteSQL(strSql,strMsg) '保存到文件 tmpPath=App.path&"\temp.jpg" IfNotIsNull(rs.Fields("照片").Value)Then SetiStm=NewADODB.Stream WithiStm.Mode=adModeReadWrite.Type=adTypeBinary.Open.Writers.Fields("照片").Value.SaveToFiletmpPath blnDel=True EndWith strFileName=tmpPath 'pic.Picture=LoadPicture(tmpPath) iStm.CloseElseblnDel=FalseEndIfrs.CloseEndIf'删除记录strSql="delete*fromt_brwhere工号='"&txtGH.Text&"'"Setrs=ExecuteSQL(strSql,strMsg)ElsestrSql="select*fromt_brwhere工号='"&txtGH.Text&"'"Setrs=ExecuteSQL(strSql,strMsg)Ifrs.EOF=FalseThenMsgBox"已有相同的工号,无法添加到数据库!",vbOKOnly+vbExclamation,"警告"TextFocustxtGHExitSubEndIfrs.CloseEndIfstrSql="select*fromt_br"Setrs=ExecuteSQL(strSql,strMsg)rs.AddNewrs.Fields("工号")=txtGH.Textrs.Fields("姓名")=txtName.TextIfcboPayStyle.Text=""Then rs.Fields("工资类别")=NullElse rs.Fields("工资类别")=cboPayStyle.TextEndIfIfcboHealthy.Text=""Then rs.Fields("健康状况")=NullElse rs.Fields("健康状况")=cboHealthy.TextEndIfIfcboSex.Text=""Then rs.Fields("性别")=NullElse rs.Fields("性别")=cboSex.TextEndIfIfcboEmployeeStyle.Text=""Then rs.Fields("职工类型")=NullElse rs.Fields("职工类型")=cboEmployeeStyle.TextEndIfIfcboPart.Text=""Then rs.Fields("部门")=NullElse rs.Fields("部门")=cboPart.TextEndIfIfcboDuty.Text=""Then rs.Fields("职务")=NullElse rs.Fields("职务")=cboDuty.TextEndIfIfcboCulture.Text=""Then rs.Fields("文化程度")=NullElse rs.Fields("文化程度")=cboCulture.TextEndIfIfcboNation.Text=""Then rs.Fields("民族")=NullElse rs.Fields("民族")=cboNation.TextEndIf'数字型IftxtMoney.Text=""Then rs.Fields("薪金")=0Else rs.Fields("薪金")=txtMoney.TextEndIfIfcboSpec.Text=""Then rs.Fields("所学专业")=NullElse rs.Fields("所学专业")=cboSpec.TextEndIf'年龄为数字型IftxtAge.Text=""Then rs.Fields("年龄")=0Else rs.Fields("年龄")=txtAge.TextEndIf'日期型rs.Fields("生日")=dtpBirthday.ValueIfcboPolity.Text=""Then rs.Fields("政治面貌")=NullElse rs.Fields("政治面貌")=cboPolity.TextEndIfIfcboMarry.Text=""Then rs.Fields("婚姻状况")=NullElse rs.Fields("婚姻状况")=cboMarry.TextEndIfIfcboNativePlace.Text=""Then rs.Fields("籍贯")=NullElse rs.Fields("籍贯")=cboNativePlace.TextEndIfIftxtHandset.Text=""Then rs.Fields("手机")=0Else rs.Fields("手机")=txtHandset.TextEndIfIftxtIdentity.Text=""Then rs.Fields("身份证号")=NullElse rs.Fields("身份证号")=txtIdentity.TextEndIfIftxtTelphone.Text=""Then rs.Fields("联系电话")=NullElse rs.Fields("联系电话")=txtTelphone.TextEndIfIftxtHomeAddress.Text=""Then rs.Fields("家庭住址")=NullElse rs.Fields("家庭住址")=txtHomeAddress.TextEndIf'日期型rs.Fields("合同开始时间")=dtpBBargain.Valuers.Fields("合同终止时间")=dtpEBargain.ValueIftxtLong.Text=""Then rs.Fields("工龄")=0Else rs.Fields("工龄")=txtLong.TextEndIf'添加照片SetiStm=NewADODB.StreamIfLen(strFileName)>0Then WithiStm .Type=adTypeBinary'二进制模式 .Open .LoadFromFilestrFileName EndWith rs.Fields("照片")=iStm.Read rs.Update iStm.CloseElse rs.UpdateEndIfrs.CloseSetrs=NothingcmdDel.Enabled=TrueCallDisabledControlcmdNew.Enabled=TrueMsgBox"添加成功"IfblnDelThen IftmpPath<>""Then KilltmpPathEndIfEndIfCallRefreshGridEndSub5.5工资信息管理模块5.5.1功能说明此模块是整个系统中最重要的一部分,包括出勤统计、计算实发工资、查询工资和导出工资表这些功能,其分解模块图如下:工资信息管理工资信息管理出勤统计计算实发工资查询工资导出工资表图5-8分解模块图出勤统计这个窗口是为管理员统计员工的出勤情况而提供的,管理员能够选择所需的月份来统计员工的当月出勤信息,同时这个统计结果也为计算员工的本月工资提供了方便。设计这个功能时我考虑到了这个月份是否存在,如果存在还要看是否已经被统计过了,如果已经统计过了则提示”已经统计”,未统计的在进行统计后则提示”完成统计”;如果这个月份不存在时则提示”请重新选择”。计算实发工资这个窗口的界面和出勤统计的界面几乎类似,设计思路也和出勤统计类似。当要统计的月份的记录不存在时,则提示”请重新选择”并要求用户选择别的月份进行统计,统计完成后,将会把结果以表格的形式显示出来。导出工资表能够把数据库中员工的工资信息导出到Excel中,便于更清楚地查看结果。添加员工考勤信息1、添加上下班信息窗体如图4-5所示,填入相应的信息,部分代码如下:图4-5添加员工考勤信息添加上下班信息PrivateSubcmdOK_Click()DimsqlAsStringDimsql2AsStringDimrsAsNewADODB.RecordsetDimstrMsgAsStringDimstrmsg2AsStringDimrsTimeAsNewADODB.RecordsetDimtmsetswsb,tmsetswxb,tmsetxwsb,tmsetxwxbAsDateDimtmsb1,tmxb1AsDatesql="select*fromAttendanceInfoorderbyIDdesc"sql2="select*fromTimeSetting"Setrs=ExecuteSQL(sql,strMsg)SetrsTime=ExecuteSQL(sql2,strmsg2)IfInFlag=FalseAndOutFlag=FalseThenMsgBox"请选择上下班",vbOKOnly+vbExclamation,"警告!"EndIf'添加上班信息IfInFlag=TrueThenIftxtID.Text=""OrtxtName.Text=""ThenMsgBox"要添加上班信息,员工编号与姓名不能为空,请输入",vbOKOnly,"提示"ExitSubEndIf'判断上下午上班时间是否迟到tmsb1=dtpBT.Valueh=Hour(tmsb1)m=Minute(tmsb1)s=Second(tmsb1)tmsb1=CDate(h&":"&m&":"&s)tmsetswsb=CDate(rsTime.Fields("上午上班时间"))tmsetswxb=CDate(rsTime.Fields("上午下班时间"))tmsetxwsb=CDate(rsTime.Fields("下午上班时间"))'判断上午上班时间是否迟到Iftmsb1<tmsetswxbThenIftmsb1>tmsetswsbThenilate=1MsgBox"迟到"Elseilate=0MsgBox"正常上班"EndIf'判断下午上班时间是否迟到Else Iftmsb1>tmsetxwsbThenilate=1MsgBox"迟到"Elseilate=0MsgBox"正常上班"EndIfEndIfaflag="入"rs.AddNewrs.Fields("工号")=txtID.Textrs.Fields("姓名")=txtName.Textrs.Fields("当前日期")=dtpET.Valuers.Fields("上班时间")=dtpBT.Hour&":"&dtpBT.Minute&":"&dtpBT.Secondrs.Fields("出入标志")=aflagrs.Fields("迟到次数")=ilaters.Updaters.CloseMsgBox"已完成添加上班信息",vbOKOnly+vbInformation,"添加结果!"UnloadMeExitSubEndIf'添加下班信息IfOutFlag=TrueThenIftxtID.Text=""OrtxtName.Text=""ThenMsgBox"要添加下班信息,员工编号与姓名不能为空,请输入",vbOKOnly+vbExclamation,"警告"ExitSubEndIf'判断上下午下班时间是否早退tmxb1=DTPicker1.Valueh=Hour(tmxb1)m=Minute(tmxb1)s=Second(tmxb1)tmxb1=CDate(h&":"&m&":"&s)tmsetxwsb=CDate(rsTime.Fields("下午上班时间"))tmsetswxb=CDate(rsTime.Fields("上午下班时间"))tmsetxwxb=CDate(rsTime.Fields("下午下班时间"))'判断上午下班时间Iftmxb1<tmsetxwsbThenIftmxb1<tmsetswxbTheniearly=1MsgBox"早退"Elseiearly=0MsgBox"正常下班"EndIf'判断下午下班时间ElseIftmxb1<tmsetxwxbTheniearly=1MsgBox"早退"Elseiearly=0MsgBox"正常下班"EndIfEndIfaflag="出"rs.AddNewrs.Fields("工号")=txtID.Textrs.Fields("姓名")=txtName.Textrs.Fields("当前日期")=dtpET.Valuers.Fields("下班时间")=DTPicker1.Hour&":"&DTPicker1.Minute&":"&DTPicker1.Secondrs.Fields("出入标志")=aflagrs.Fields("早退次数")=iearlyrs.Updaters.CloseMsgBox"已完成添加下班信息",vbOKOnly+vbInformation,"添加结果!"UnloadMeExitSubEndIfEndSubPrivateSubForm_Load()dtpET.Value=Date'初始化为当天时间EndSub2、设置员工每日产量考勤在该窗体中输入相应的信息,完成每日产量考勤具体如图4-6所示,相应部分代码如下:图4-6员工每日产量考勤”保存”按钮代码如下:PrivateSubcmdOK_Click()DimrsAsADODB.RecordsetDimstrSqlAsStringDimstrMsgAsString'根据需要进行字段限制IfChkBoxJJ.Value=TrueThenIfCombo1.Text=""ThenMsgBox"产品类型不能为空"TextFocusCombo1ExitSubEndIfIfChkBoxCP.Value=TrueThenIfCombo2.Text=""ThenMsgBox"产品类型二不能为空"TextFocusCombo2ExitSubEndIfIfTxt3.Text=0ThenMsgBox"数量不能为空"TextFocusTxt3ExitSubEndIfEndIfIfChkBoxCR.Value=TrueThenIfCombo3.Text=""ThenMsgBox"产品类型三不能为空"TextFocusCombo3ExitSubEndIfIfTxt5.Text=0ThenMsgBox"数量不能为空"TextFocusTxt5ExitSubEndIfEndIfEndIf

温馨提示

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

评论

0/150

提交评论