毕业设计答辩稿.ppt

vb企业人事工资管理系统+

收藏

资源目录
跳过导航链接。
vb企业人事工资管理系统.rar
企业人事工资管理系统
Form1.frm
Form1.frx
Form10.frm
Form10.frx
Form11.frm
Form12.frm
Form13.frm
Form14.frm
Form14.frx
Form15.frm
Form15.frx
Form16.frm
Form16.frx
Form17.frm
Form17.frx
Form18.frm
Form19.frm
Form2.frm
Form2.frx
Form20.frm
Form21.frm
Form21.frx
Form22.frm
Form22.frx
Form23.frm
Form23.frx
Form24.frm
Form3.frm
Form3.frx
Form3.log
Form4.frm
Form5.frm
Form6.frm
Form6.frx
Form7.frm
Form7.frx
Form8.frm
Form8.frx
Form9.frm
Form9.frx
Module1.bas
MSSCCPRJ.SCC
Project1.vbp
Project1.vbw
rsgz.mdb
VB16.tmp
VB17.tmp
_desktop.ini
毕业论文
压缩包内文档预览:

资源预览需要最新版本的Flash Player支持。
您尚未安装或版本过低,建议您

vb企业人事工资管理系统+,vb,企业,人事,工资管理,系统
编号:58670504    类型:共享资源    大小:686.05KB    格式:RAR    上传时间:2020-03-17 上传人:qq77****057 IP属地:江苏
7.2
积分
关 键 词:
vb 企业 人事 工资管理 系统
资源描述:
vb企业人事工资管理系统+,vb,企业,人事,工资管理,系统
内容简介:
广东汕尾电大2004级计算机科学与技术专业本科毕业论文钟长锋.企业人事工资管理系统的实现内 容 摘 要工资管理信息系统是采用面向对象的程序设计技术来设计生成的一个数据库管理系统,面向对象的编程技术是目前最流行的一种编程方法,它具有强大的功能和更大的灵活性,通过对工资管理系统体系进行的总体设计,功能分析,程序设计,我们建立了一个较为完善的工资管理。本设计说明书主要讲述了VISAUL BASIC6.0的基本功能及设计基本方法,系统数据库设计,面向对象的设计思想,窗体的设计,应用程序的开发方法等内容。本系统具有数据输入,数据存储,档案查询,输入报表等功能。系统的人机对话界面友好。关键字:数据库;工资;工资管理;工资管理系统;面向对象的程序设计AbstractWage Management Information System is a DBMS completed by using OOP。 OOP is the most popular programming techinque,thar has huge effect。Through System overall design,functional analysis and program design,we set up the more perfected wage MIS。In this report,many things,such as basic funtion of Visual Basic6.0,design language selecting,systematic database design,OOP design stategory,design method of report setup and screen setup,application developing,are elabrorated。This MIS has many functions such as data input,date save,recode query,report print,and dialog system is very perfect,using screen builder to product to product nice funtion interface is a charactaristic of our design。KEYWORD:database;wage;wage management; wage management information system ;OOP目 录内 容 摘 要1Abstract2目 录3前 言5第一章 绪论61.1 问题的提出61.2本课题的研究意义61.3 可行性分析71.3.1 技术上可行性71.3.2 经济可行性71.3.3 操作可行性81.3.4 人员的可行性8第二章 需求分析82.1业务流程图82.2 新系统的数据流图92.3 新系统的数据字典11第三章 总体设计143.1 系统流程图143.2 功能模块结构图153.2.1人事档案管理163.2.2业务档案管理173.2.3工资管理183.2.4考勤管理193.2.5系统管理203.3 数据库设计203.3.1数据库概念结构设计213.3.2数据库的逻辑结构设计213.3.3 数据库结构的实现25第四章 系统的详细设计274.1开发环境简介274.2 系统界面的设计284.3员工基本信息录入窗体的设计294.4员工基本信息维护窗体的设计374.5员工业务界面设计394.6创建考勤表424.7 考勤表的维护464.8 员工工资表窗体的设计48第五章 系统测试565.1 测试概述565.2 测试计划565.3 测试结果分析58第六章 系统使用说明59第七章 结束语60致谢61参考文献62前 言我们赖以生存的世界是一个物质的世界,同时也是一个信息的世界。这有两个方面的特征:其一,物质的存在伴随着信息的存在,物质是信息的基础,信息是物质的抽象反映。例如:反映学生学习情况的学生成绩信息,商店中商品和关于这些商品的各种特征的信息(商品名称、规格、颜色、数量、单价等等)。其二,物质的变化(表现形式的变更、数量的增减、地域的变迁等)会引起信息的相应变化(对旧信息的修改或剔除、新信息的产生和传播等)。而信息依赖数据存在,数据组合构成且具体生动地表现信息。随着计算机的普及,计算机也不再仅是普遍地用于处理数值计算问题,而是广泛应用于事务数据处理一类的非数值应用的各种领域中。诸如企业管理、情报检查、病历分析、计划统计、图象处理、文字翻译和汉字处理等。利用计算机进行数据处理就是把原始数据和要对数据做的处理算法交给计算机,由计算机对这批数据按照给定的算法进行加工处理,最后产生出结果数据。对某一特定课题而言,处理算法在一个时期内是相对稳定的。而原始数据却随着时间的推移而不尽相同,且多是大量的。从数据的输入,到数据在计算机内存储和处理,再到数据的输出,特别是数据的存储期间,都有一个数据组织的问题,而数据库方法提供了一种完美、高级的数据管理方法。它的思想是对所有的数据实行统一的、集中的、独立的管理,使得数据的存储不依赖于使用数据的应用程序,从而大大提高了应用程序的生产率。随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。随着我国国企改革的深入和社会主义市场经济的日趋繁荣,导致各企业间的竞争日益激烈,迫使企业采取先进的计算机硬件设备以及高质量的辅助软件来管理企业的各项运作,以提高本企业的劳动生产率以及人员效率。第一章 绪论1.1 问题的提出某企业拥有干部和员工共400多人,主要有领导干部,技术人员,销售人员,操作人员。公司下设机关,销售公司,成品车间,调和车间,为了便于员工工资管理,并且还专设置了人事工资管理系统,根据员工每个人的工作年限和医疗保险,住房补贴,岗位工资的来计算每个员工的工资的工资系统,也便于查询员工工资。随着公司逐年的发展,公司的人事工资等事务纷繁芜杂,但大体上这些事务可包括以下几个方面的内容:人事基本信息管理,员工的业务档案管理、员工的工作评价管理、员工的考勤管理、员工的工资管理等。以上各项中的每一个部分都有该方面的管理明细,以员工的基本信息管理为例,包含的明细有:员工编号、姓名、性别、部门、民族、出生年月、政治面貌、家庭住址、联系电话、毕业学校、最高学历等。若用人工的方法来管理这些数据,不但会造成人力、物力、财力上的浪费,而且因为要处理的信息量过大不容易进行统计和分析。依靠传统的手工管理越来越跟不上公司的发展需要,为了精简人员,提高办事效率和节约公司运营成本,特别需要改变以前单纯依赖人工管理的模式。随着经济水平的发展,知识经济时代给企事业工资信息管理提出了更高的要求,除了以往的工资利用计算机软件excel可以管理外,公司更希望能够对以往的各种的人事信息,考勤信息,工作评价信息,工资信息等统一管理起来。高效的、准确的人事工资管理,不仅能促进员工不断提高自身素质、提高工作积极性。从而提高员工工作质量和效率。人事工资管理中数据的正确性、安全性,操作的高效性、可靠性,无一不影响着员工队伍的建设和管理。1.2本课题的研究意义 目前市面上流行的工资发放软件不少。但是,对于企、事业单位的工资发放来说,不需要太大的数据库系统。只需要一个操作方便,功能实用,能同时满足财务部门、单位其他相关部门及代发单位这三方对数据的管理及需求的系统。我们的目标就是在于开发一个功能实用,用户(财务部、其他相关部门、银行)操作方便,简单明了的工资发放软件。1.3 可行性分析可行性研究的目的就是要用最小的代价在尽可能短的时间内确定问题是否能够解决。当然不能靠主观猜想而是要靠客观分析。必须分析几种主要的可能解法的利弊,从而判原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得去投资开发这个系统的程度。因此,可行性研究实质上是要进行依次大大地压缩简化了的系统分析和设计的过程,也就是在较高层次以较抽象的方式进行的系统分析和设计的过程。可行性研究主要从以下五个方面来进行。1.3.1 技术上可行性 使用现有的技术能不能实现这个系统。由于本管理系统的对象单一,仅对本单位的人事信息进行管理,且在对人事信息进行增减、修改、删除及统计操作时基本不涉及到计算过程,因此,这个管理系统比较适合采用数据库来设计。在计算机硬件和软件快速发展的今天,计算机硬件和软件已经远远满足本管理系统的要求。在数据库编程工具方面,各种可视化编程方法的出现,一改过去程序设计的概念和方法,用户用鼠标就可以快速、简捷地创建应用程序,极大地提高了编程效率。在作者所了解数据库系统中,因为学过Visual Basic 6.0,对ACCESS数据库比较熟悉,因此决定采用VisualBasic 6.0及ACCESS来完成人事工资管理系统的设计。VisualBasic 6.0和ACCESS共同完成人事工资管理系统,它提供了面向对象的编程技术,编写少量或不用编写程序代码就能快速地创建出功能强大的可视化应用程序,可简化数据库管理,使开发应用程序这项艰辛的工作就象堆积木那样简单方便。另外,用ACCESS数据库开发的应用程序可以独立运行于windows平台, 而且ACCESS产生的数据库(表)适用范围广。 1.3.2 经济可行性 这个系统的经济效益能不能超过它的开发成本。本人事工资管理系统是基于VisualBasic 6.0及ACCESS基础上开发的小型数据库应用程序,不需要多少人力和物力就可以设计的。但本系统一旦投入使用,将大大减少人事工资管理人员的工作量,提高了工作效率,其经济效益是显儿易见的。1.3.3 操作可行性 系统的操作方式在这个用户组织内能不能行得通。在进行需求分析时,就对用户组织进行了调查,针对他们的情况,设计出适合这个用户组织的人机界面,使操作方式简单明了。1.3.4 人员的可行性本人事工资管理系统是用VisualBasic 6.0及ACCESS设计的小型数据库应用程序,无须多少人员就可以设计成功的。通过对人事工资管理系统的可行性分析,所提出的功能是适合人事工资管理的,也完全可以实现的。第二章 需求分析本系统开发思想是采用现代化先进的人事工资信息化高效管理思想,综合多种人事工资信息管理软件开发商优点以及结合我们单位实际情况而开发。2.1业务流程图通过对调研单位的财务管理人员和该单位的相关负责人的交谈,深入了解获知该单位人事工资的操作流程。对现行系统进行详细调查的重点是对管理业务的流程进行描述,通过采用业务流程图中的图形工具来描述管理业务活动可以帮助我直观的理解系统业务过程,找出业务流程中的不合理现象。管理业务流程图的图形符号说明:系统中人员系统外实体单据、报表、帐目处理数据流向存储绘制出的业务流程图如图所示:单位管理人员其他信息个人信息用户财 务人 员工资信息单位管理人员考勤信息工资账目图2-1业务流程图2.2 新系统的数据流图根据上面的业务流程分行,得到该系统的逻辑方案,该方案通过数据流程图和数据字典二个方面来说明。数据流程图就是组织中信息运动的抽象,是管理信息系统逻辑模型的主要形式。这个模型不涉及硬件、软件、数据结构与文件组织,它与对系统的物理描述无关,只是用一种图形及与此相关的注释来表示系统的逻辑功能,即开发的系统在管理信息处理方面要做什么。由于图形描述简明,清晰,不涉及到技术细节,所描述的内容是面向用户的,所以即使完全不懂信息技术的用户单位的人员也容易理解。因此数据流程图是系统分析人员与用户进行交流的有效手段,也是系统设计的主要依据之一。 管理员 1D1 人事信息表 人事信 息处理 2 4.1D2 业务档案表 业务档 生成 案处理 工资D4 工资信息表 3D3 考勤信息表 考勤信 息处理 4.2 工资查询 工资报表 统计报表图2-2新系统数据流程图员工人事工资管理系统是针对企事业部门的大量业务处理工作用计算机进行全面现代化管理。主要包括员工人事档案管理、业务档案、工作评价管理、工资管理、和考勤管理等几个方面的功能,以实现用户方便的输入、查询、统计、打印相关报表的业务需求。 根据数据流程图可以看出新系统逻辑模型中具体系统功能如下:(1)人事档案管理包括在职职工信息,离职教职工信息和部门信息。提供对“职工履历表”数据输入、组合条件查询、统计、打印功能,实现”职工花名册”数据生成、查询、统计、打印功能。(2)业务档案管理提供对“职工业务档案记载表”数据输入,组合条件查询,统计,打印功能。(3)员工工作评价管理提供对员工的每年度的工作考核进行录入,维护和浏览以及报表等功能。(4)员工考勤管理提供对各部门“月考勤登记表”数据的录入、查询、统计功能;根据“月考勤登记表”数据分部门按各种日考勤标志进行分类统计,且生成“员工月考勤统计表”,数据及“员工月考勤统计汇总表”数据,实现该表的查询、打印功能。(5)职工工资管理提供对“员工工资表”数据的输入、查询、按月份统计、打印功能,完成每月对“员工工资表”数据的月统计,以此生成“员工工资总额构成情况表”实现该表的查询、打印功能。人事工资档案是管理职工自身信息,包括学历、职称、社会经历等;业务档案是用于对员工岗位,业务进行管理登记;考勤管理是指职工出勤率登记,以便日后留档查询,跟效益工资挂钩。工资管理是指按不同资历员工有不同档次的工资计算标准,不同职务的人员有不同的岗位津贴,此外,还跟基本工资、加班工资、出勤情况有关,从而更加准确公平的发放员工实际工资; 人事管理 评价管理 业务档案 企事业工资 管理系统 系统管理 考勤管理 工资管理 图2-3企事业工资管理系统图人事工资管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对员工信息、业务信息、考勤信息的管理和统计、工作人员和管理人员信息查看及维护。超级管理员可以浏览、查询、添加、删除、修改、统计员工人事信息等普通管理操作员只能按指定范围功能的操作权限。2.3 新系统的数据字典上文中的数据流图只能给出系统逻辑功能的一个总框架而缺乏详细、具体的内容。数据词典的作用是给数据流图上的每一个成分以定义和说明。除此之外,数据词典还要对系统分析中其它需要说明的问题进行定义和说明。本文的数据词典描述的主要内容有:数据元素、数据结构、数据流、数据存储、处理逻辑和外部项。在系统分析的过程中,产生了大量的数据词典。限于篇幅,我采用图表格式仅就这几项条目各举一例来说明。数据元素条目数据元素系统名:人事工资管理条目名:员工编号编号:E1别名:员工号存储处:D1 基本信息表D2 业务档案表D3 考勤表D4 工资表数据元素值:代码类型字符型长度:10简要说明:员工编号是员工的识别符,每个员工都有唯一的编号。修改记录:编写日期2005-4-25审核日期表2-1数据元素条目举例表数据结构条目数据结构系统名:人事工资管理条目名:人事信息编号:I1别名:无结构:员工编号姓名性别部门民族出生年月政治面貌家庭住址学历基本工资有关数据存储:D1 员工信息表有关数据流:简要说明:员工在进入单位后需要首先提供个人资料,单位并确定基本工资。修改记录:编写日期2005-4-25审核日期表2-2数据结构条目举例表数据流条目数据流系统名:人事工资管理条目名:工资查询统计报表编号:F5别名:无来源:工资表去处:打印报表数据流结构:库存数据=员工编号+姓名+基本工资+岗位津贴+加班津贴+考勤工资+行政性扣款+应发工资+个人所得税+实发工资简要说明:对工资表中的已经创建的信息进行查询并且输出打印。修改记录:编写日期2005-4-25审核日期表2-3数据流条目举例表数据存储条目数据存储系统名:人事工资管理条目名:工资表编号:D4别名:无存储组织:每个员工一条工资记录按员工编号顺序排列主关键字:员工编号辅关键字:年月记录组成:项名:员工编号基本工资岗位津贴加班津贴考勤工资行政扣款应发工资所得税实发工资年月长度:(byte)10666666666简要说明:员工的所有的创建的工资信息都存储在这里。修改记录:编写日期2005-4-25审核日期表2-4数据存储条目举例表数据处理逻辑条目处理逻辑系统名:人事工资管理条目名:生成工资表编号:别名:无输入:取自基本信息,业务档案信息,考勤信息,年月等。输出:员工当月的工资表加工逻辑:应发工资=基本工资+岗位工资+加班津贴+考勤工资-行政扣款个人所得税=(基本工资+岗位工资+加班津贴+考勤工资-行政扣款-800)*02实发工资=应发工资-个人所得税简要说明:工资表每月创建一次。修改纪录:编写日期2005-4-25审核日期表2-5 数据处理逻辑条目举例表第三章 总体设计由于该单位的工资信息管理系统是属于中小型系统,其具体方案设计模型如下: 员工 查询 数据管理 管理员 工资管理系统 浏览 DB 图3-1系统方案设计模型图3.1 系统流程图工资管理系统的输出结果是对员工工作的一个评价,在本系统中,计算工资的基本依据是考勤管理系统的统计结果,同时,在统计和查询时需要用到人事管理系统中员工信息和部门信息。本系统的数据流程如图所示:工资系数调整月考勤表员工工资系数调整表工资计算月工资表工资发放 图3-2系统流程图3.2 功能模块结构图软件所实现的功能强弱是衡量一个软件的最根本的标准。经过对系统的可行性分析、需求分析、数据分析后,结合调研的情况,确定了本子系统的功能模块如下图所示。 工资管理系统 人事档案 业务档案 工资管理 考勤管理 系统管理档 档 档 档 档 档 评 评 工 工 工 工 初 考 考 考案 案 案 案 案 案 价 价 资 资 资 资 始 勤 勤 勤输 更 查 统 输 查 输 维 生 查 统 报 化 更 查 报入 新 询 计 入 询 入 护 成 询 计 表 新 询 表 用 系 关 系户 数 于 统 管 维 系 退 理 护 统 出图3-3功能模块结构图本人事管理系统分五大模块,具体如下:3.2.1人事档案管理 人事管理是员工基本信息的录入:人事档案档案更新档案查询档案统计档案输出图3-4人事档案管理流程图档案更新:包括对人事档案的修改,删除,增加(新建档案)档案查询:可以按姓名、职称或任意条件查询个人或一部分人的情况; 档案统计:按多种条件进行数据统计并显示,包括统计学历、职称、年龄、政治面貌等。档案输出:可以输出个人档案,全部档案,花名册,团员名册,党员名册等3.2.2业务档案管理业务档案业务编辑业务查询评价编辑评价维护图3-5业务档案流程图档案编辑:包括新建,修改,删除员工的业务档案。档案查询:可以按姓名、职称或任意条件查询个人或一部分人的情况评价编辑:包括对员工每年的考核评价等级等情况进行录入和浏览。评价维护:可以输出员工的评价资料进行维护修改。3.2.3工资管理工资管理创建工资工资查询工资统计工资输出图3-6工资管理流程图创建工资表:通过输入的年月来完成对员工工资表的创建,创建工资表是将系统中其它的数据库表中的数据关联起来,综合得到的员工的某年月的工资。工资查询:可按员工编号和年月等进行员工工资状况查询;工资统计:按多种条件进行数据统计并显示。工资输出:可以输出个人工资单,或输出全体人员工资汇总清单。本系统的输入报表是通过导出到excel完成报表的。3.2.4考勤管理考勤管理创建考勤考勤维护考勤查询统计输出图3-7考勤管理流程图考勤表的创建:按照年月对考勤表完成初始化创建。考勤维护: 考勤表创建时初始化数据暂时为0,其中的字段的值需要通过考勤表维护功能来进行修改。考勤查询: 按姓名或员工编号查询个人出勤情况。统计输出:按多种条件进行数据统计并显示在表格中,也可将统计计结果打印出来。本系统的输出报表是通过将输出的数据对象导出到报表专家excel后通过excel完成报表。 3.2.5系统管理系统管理参数设置添加用户关于系统退出系统图3-8系统管理流程图添加用户:系统用户分为:系统管理员级别的超级用户,一般用户即系统操作员。管理员有添加操作员,添加和修改员工人事数据库中的重要数据的权限。而一般用户没有添加操作员的权限,他们只具备一般的数据浏览,查询,统计,报表,和少数数据的添加,修改等权限。参数设置:该操作属于管理员权限的用户的操作权限。该模块的功能是设置和修改员工工资表的相关工资系数,比如迟到一次的扣出多少,早退一次扣除多少。该参数的设置直接影响员工的工资表。3.3 数据库设计“数据库”就是为了实现一定的目的按某种规则组织起来的“数据”的“集合”。它由一个称为数据库管理系统的软件进行管理。数据的存取方式独立于使用它的应用程序。 数据库的主要特征: l 数据共享 l 数据具有最小冗余度 l 数据的完整性 l 数据的安全性 l 数据的独立性 数据库结构的设计是软件开发的首要条件,设计较好、全面的数据库结构,对于软件开发来说是成功的基石,数据库结构设计不全面,会严重影响软件的开发利用率与进程。3.3.1数据库概念结构设计这一设计是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。本系统根据上面的设计规划出的实体有:员工实体、员工工资实体、工资等级实体、部门岗位实体、工龄实体、公司福利实体。实体与实体之间的关系E-R图如下图3-9所示: 员工 对应 员工工资 包含 基 岗 加 行 考础 位 班 政 勤 工 工 工 费 工 资 资 资 用 资 对应 对应 对应 对应 对应工资等级 部门岗位 工龄 行政扣除 单位考勤图3-9实体与实体之间的关系E-R图3.3.2数据库的逻辑结构设计将以上的E-R图转换成如下关系模式:员工信息表(员工编号、姓名、部门、性别、民族、出生年月、政治面貌、家庭住址、联系电话、毕业学校、最高学历、所学专业、职务、专业技术职称、职称时间、个人简历、奖惩情况)。员工业务档案表(员工编号、岗位编号、业务档案等)。员工考勤表(员工编号、迟到次数、早退次数、缺席次数、离岗次数、备注、年月)。员工工资表(员工编号、基本工资、岗位工资、加班津贴、考勤工资、行政性扣款、个人所得税、实发工资、年月)。依据上面的关系模式,设计数据库表如下:(1) 员工信息表(ygInfo):该表来记录员工基本信息。列名数据类型宽度可否为空员工编号(主键)文本型6不能为空姓名文本型8可为空性别文本型2可为空部门文本型10可为空民族文本型20可为空出生年月日期/时间型8可为空政治面貌文本型10可为空家庭住址文本型50可为空联系电话文本型11可为空毕业学校文本型50可为空最高学历文本型6可为空所学专业文本型20可为空职务文本型8可为空专业技术职称文本型20可为空职称时间日期/时间型8可为空基本工资数字型单精度可为空奖惩情况备注型Meno可为空个人简历备注型Meno可为空表3-1员工信息表(2) 业务档案表 (TBInfo):该表记录员工业务相关档案信息列名数据类型宽度可否为空员工编号(主键)文本型6不能为空岗位编号文本型20不能为空业务档案备注型Meno不能为空表3-2业务档案表(3)考勤表(attendanceInfo):该表记录员工考勤信息列名数据类型宽度可否为空员工编号(主键)文本型6不能为空迟到次数数字型2不能为空早退次数数字型2不能为空缺席次数数字型2不能为空离岗次数数字型2不能为空备注备注型Meno不能为空年月文本型6不能为空表3-3员工考勤信息表(4)工资表(wageInfo):该表记录员工工资信息列名数据类型宽度可否为空员工编号(主键)文本型6不能为空基本工资数字型(单精度)6不能为空岗位工资数字型(单精度)6不能为空加班津贴数字型(单精度)6不能为空考勤工资数字型(单精度)6不能为空行政性扣款数字型(单精度)6不能为空个人所得税数字型(单精度)6不能为空实发工资数字型(单精度)6不能为空年月文本型6不能为空表3-4员工工资信息表(5)加班表(jbinfo):该表记录员工的加班信息列名数据类型宽度可否为空员工编号(主键)文本型6不能为空加班天数数字型2不能为空加班类别文本型1不能为空年月文本型6不能为空备注备注型Meno不能为空表3-5员工的加班信息表(6)xsinfo表:该表记录工资系数列名数据类型宽度可否为空行政性扣款数字型(单精度)6不能为空迟到数字型(单精度)6不能为空早退数字型(单精度)6不能为空离岗数字型(单精度)6不能为空缺席数字型(单精度)6不能为空平时加班数字型(单精度)6不能为空双休加班数字型(单精度)6不能为空节日加班数字型(单精度)6不能为空表3-6员工工资系数表(7)gwinfo表:岗位工资表 列名数据类型宽度可否为空岗位编号文本型6不能为空岗位名称文本型10不能为空岗位工资数字型(单精度)6不能为空职责备注型Meno可为空表3-7员工岗位工资表(8)user表:改变记录系统用户列名数据类型宽度可否为空用户名文本型20不能为空密码文本型20不能为空级别文本型6不能为空联系电话文本型11可为空表3-8系统用户记录表3.3.3 数据库结构的实现本系统的后台数据库选择为ACCESS,在以上的数据库概念结构设计和逻辑结构设计完成后,就可以实现为ACCESS数据库了。在实现之前,这里简介一下该数据库:Access是Office办公套件中一个极为重要的组成部分。刚开始时微软公司是将Access单独作为一个产品进行销售的,后来微软发现如果将Access捆绑在OFFICE中一起发售,将带来更加可观的利润,于是第一次将Access捆绑到OFFICE97中,成为OFFICE套件中的一个重要成员。现在它已经成为Office办公套件中不可缺少的部件了。自从1992年开始销售以来,已经成为世界上最流行的桌面数据库管理系统。Access的新版本功能变得更加强大。不管是处理公司的客户订单数据,管理自己的个人通讯录,还是大量科研数据的记录和处理,人们都可以利用它来解决大量数据的管理工作。 ACCESS具有三大功能: 建立数据库;数据库操作;数据通讯。 ACCESS的内部结构 ACCESS数据库是关系型数据库,具有表的特性,在ACCESS数据库中,包括表、查询、窗体、报表、页、宏和模块七个对象,这些对象用于收集、存储和操作各种不同的信息。它们功能如下 :(1)利用表对象存储信息;(2)利用查询对象搜索信息;(3)利用窗体对象查看信息;(4)利用报表对象显示信息;(5)利用页对象显示数据访问页信息;(6)利用宏对象完成自动化工作;(7)利用嵌入模块实现复杂功能。 ACCESS数据库的构成 ACCESS数据库是一系列数据基本表、表与表之间的关系、查询、窗体、报表、页、宏和模块的集合,这些成分统一组织在一个以.mdb为后綴的数据库文件中。 这里重点介绍一下表与表之间的关系: 表是保存数据或信息的主要场所,它是一个二维表,二维表的行称为一个记录,存储某个实体的整体信息,是表的基本单位。表的一列称为一个字段,存储实体的一个属性的信息,是表的可访问的最小逻辑单位。表都应有至少一个关键字,它可使表中的记录惟一。 在需求分析、概念结构设计的基础上得到数据库的逻辑结构设计之后,我们就可以在Visual Basic6.0中实现该逻辑结构。实现方法和步骤如下:以英文版本为例:通过菜单栏:Add-InsVisual Data Manager点击出现VisData界面,点击菜单FileNewMicrosoft AccessVision 7.0 MDB弹出保存数据库文件的存放位置和数据库的文件名的对话框,命名为rsgz.mdb保存到当前系统存放的文件下。这时出现Database Windows设计界面,鼠标右键选择新建表。所设计的表的字段就是逻辑结构表中的列名。第四章 系统的详细设计数据库中的数据被用户利用的方式可以通过数据管理系统提供的操作功能来使用,也可通过应用程序操作数据库。 应用程序是利用数据管理,为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。图4-1应用程序操作数据库图在本系统的后台数据库已经设计完成后,现在就可以对系统分析阶段设计的功能模块通过编码设计成一个应用程序,最终来完成对数据库中数据的管理和应用的目的。4.1开发环境简介 Visual Basic 是一个可视化的、面向对象的、采用事件驱动的结构化高级程序设计语言,它具有强大的数据库操作功能,提供了数据管理器(Data Manager)、数据控件(Data Control)、以及ADO(Activex数据对象)等强大工具,利用它能够建立多种类型的数据库并可以管理维护和使用这些数据。当设计好系统的数据库结构后,就可以开始在Visual Basic6.0中开始设计系统功能模块相应的窗体了。设计窗体就是将前面分析得到系统的功能模块通过在Visual Basic6.0设计出具体的窗体,通过窗体的操作来实现预订的模块的功能。由于Visual Basic6.0是一种面向对象的编程软件,设计窗体和控件可以轻松通过系统得到,所以编程的时可以集中精力来设计控件的事件。面向对象的编程软件就是通过控件这种对象,发出不同的消息,去触发相应事件的发生。在Visual Basic6.0中设计数据库管理系统从新建一个Project文件开始。图4-2 Project界面功能图即选择菜单:FileNew Project从而弹出如图所示的界面,选择Standard EXE,单击OK,系统此时创建了一个工程文件Project1和一个窗体Form1。通过菜单FileSave Project。接下来就可以开始设计第一个窗体Form1了。4.2 系统界面的设计图4-3系统主界面图系统主界面主要有系统菜单和运行界面。系统用户通过菜单的操作来完成系统设计的各项功能。该界面提供的菜单如下表所示:员工基本信息档案管理评价管理出勤管理工资管理系统管理基本信息录入档案录入评价初始化月考勤表月工资表系数设置基本信息维护档案维护评价维护考勤维护工资查询添加操作员基本信息查询档案查询考勤查询岗位工资维护基本信息统计档案统计加班维护退出表4-1系统界面提供的菜单表菜单的设计是本窗体的重点,菜单设计的过程通过系统的菜单栏ToolsMenu Editor进入菜单编辑器。添加如上图所示的菜单后,关闭菜单。回到该界面窗体的。可以看到该窗体的上面已经有了这些设计的菜单,通过点击设计的菜单栏,即可进入源代码设计环境,通过添加clcik事件源代码后,即完成了该窗体的设计。4.3员工基本信息录入窗体的设计本功能实现了人事管理过程,编程采用ADODB.connection和ADODB.command 的VB内置对象,其主要作用是实现了数据库连接及SQL查询语言的使用。该功能使用Connection对象以下相关属性:Attributes属性可读写Long类型,通过两个常数之和指定是否使用保留事务(retainning transactions)。常数adXactCommitRetaining表示调用CommitTrans方法时启动一个新事务;常数adXactAbortRetaning表示调用 RollbackTrans方法时启动一个新事务。默认值为0,表示不使用保留事务。 CommandTimeout 可读写Long类型,指定中止某个相关Command对象的Execute调用之前必须等待的时间。默认值为30秒。 ConnectionString 可读写String类型,提供数据提供者或服务提供者打开到数据源的连接所需要的特定信息 ConnectionTimeout 可读写Long类型,指定中止一个失败的Connection.Open方法调用之前必须等待的时间,默认值为15秒。 CursorLocation 可读写Long类型,确定是使用客户端(adUseClient)游标引擎,还是使用服务器端(adUseServer)游标引擎。默认值是adUseServer。 DefaultDatabase 可读写String类型,如果ConnectString中未指定数据库名称,就使用这里所指定的名称,对SQL Server而言,其值通常是pubs IsolationLevel 可读写Long类型,指定和其他并发事务交互时的行为或事务。见Mode Long类型,指定对Connection的读写权限。见Mode常数Provider 可读写String类型,如果ConnectionString中未指定OLE DB数据或服务提供者的名称,就使用这时指定的名称。默认值是MSDASQL(Microsoft OLE DB Provider for ODBC)。 State 可读写Long类型,指定连接是处于打开状态,还是处于关闭状态或中间状态。见State常数 Version 只读String类型,返回ADO版本号。 员工档案信息录入功能如下图:图4-4员工档案信息录入功能界面图通过以上相关技术的引用,员工基本信息录入功能编写很快就可以完成了。该窗体设计包括13个文本框控件、5个组合框控件、2个按钮控件。文本框控件和组合框控件用来输入员工基本信息。其中的记录个人情况等的文本框对应的字段是备注型,所以将该文本框的Multiline属性设置为True。开该属性的设置可以使文本框多行显示,Scrollbars的值设定为2,该值的设定可以使组合框的有上下的滚动下拉条。其它的几个备注型的文本框属性值设定一样。其中组合框的值不用用户输入,只需用户选择,选择值的设定可以通过设定组合框的list属性值来完成,比如设置性别对应的组合框的list值为:男,女。按钮控件用来触发它们相应的事件的发生。其中记载按钮的click事件:当单击该按钮时,首先检查文本框输入的是否为空,接着连接数据库,建立记录集,并利用记录集打开查询,最后对该查询记录集增加一条记录,语句:adoPrimaryRS.AddNew。并设置增加的记录的相应字段值为文本框和组合框的输入值,记录集更新记录。语句:adoPrimaryRS.Update。更新语句是很重要的,如果没有更新语句,最后数据库中的记录不能得到修改和添加。这样就完成了对员工基本信息表的添加记录。退出按钮的click事件是关闭该窗体,语句是:unload me。该窗体的源代码具体如下:Dim WithEvents adoPrimaryRS As RecordsetPrivate Sub Command1_Click() If Text1.Text = Then MsgBox 员工编号不能为空!, vbOKOnly + vbExclamation, 警告 Text1.SetFocus Exit Sub End If If Text2.Text = Then MsgBox 姓名不能为空!, vbOKOnly + vbExclamation, 警告 Text2.SetFocus Exit Sub End If If Combo1.Text = Then MsgBox 性别不能为空!, vbOKOnly + vbExclamation, 警告 Combo1.SetFocus Exit Sub End If If Combo2.Text = Then MsgBox 部门不能为空!, vbOKOnly + vbExclamation, 警告 Combo2.SetFocus Exit Sub End If If Text3.Text = Then MsgBox 民族不能为空!, vbOKOnly + vbExclamation, 警告 Text3.SetFocus Exit Sub End If If Text4.Text = Then MsgBox 出生年月不能为空!, vbOKOnly + vbExclamation, 警告 Text4.SetFocus Exit Sub End If If Not IsDate(Text4.Text) Then MsgBox 生日应输入日期(yyyy-mm-dd)!, vbOKOnly + vbExclamation, 警告 Text4.SetFocus Exit Sub Else Text4.Text = Format(Text4.Text, yyyy-mm-dd) End If If Combo3.Text = Then MsgBox 政治面貌不能为空!, vbOKOnly + vbExclamation, 警告 Combo3.SetFocus Exit Sub End If If Text5.Text = Then MsgBox 家庭住址不能为空!, vbOKOnly + vbExclamation, 警告 Text5.SetFocus Exit Sub End If If Text6.Text = Then MsgBox 联系电话不能为空!, vbOKOnly + vbExclamation, 警告 Text6.SetFocus Exit Sub End If If Text7.Text = Then MsgBox 毕业学校不能为空!, vbOKOnly + vbExclamation, 警告 Text7.SetFocus Exit Sub End If If Combo4.Text = Then MsgBox 最高学历不能为空!, vbOKOnly + vbExclamation, 警告 Combo4.SetFocus Exit Sub End If If Text8.Text = Then MsgBox 所学专业不能为空!, vbOKOnly + vbExclamation, 警告 Text8.SetFocus Exit Sub End If If Combo5.Text = Then MsgBox 技术职称不能为空!, vbOKOnly + vbExclamation, 警告 Combo5.SetFocus Exit Sub End If If Text10.Text = Then MsgBox 职称时间不能为空!, vbOKOnly + vbExclamation, 警告 Text10.SetFocus Exit Sub End If If Not IsDate(Text10.Text) Then MsgBox 职称应输入日期(yyyy-mm-dd)!, vbOKOnly + vbExclamation, 警告 Text10.SetFocus Exit Sub Else Text10.Text = Format(Text10.Text, yyyy-mm-dd) End If If Text11.Text = Then MsgBox 基本工资不能为空!, vbOKOnly + vbExclamation, 警告 Text11.SetFocus Exit Sub End If Dim db As Connection Set db = New Connection db.CursorLocation = adUseClient db.Open PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=rsgz.mdb; Set adoPrimaryRS = New Recordset a = Text1.Text adoPrimaryRS.Open select * from ygInfo where 员工编号= & a & , db, adOpenStatic, adLockOptimistic If Not adoPrimaryRS.EOF Then MsgBox 该编号重复!, vbOKOnly + vbExclamation, 警告 Exit Sub Else adoPrimaryRS.AddNew adoPrimaryRS.Fields(员工编号) = Text1.Text adoPrimaryRS.Fields(姓名) = Text2.Text adoPrimaryRS.Fields(性别) = Combo1.Text adoPrimaryRS.Fields(部门) = Combo2.Text adoPrimaryRS.Fields(民族) = Text3.Text adoPrimaryRS.Fields(出生年月) = Text4.Text adoPrimaryRS.Fields(政治面貌) = Combo3.Text adoPrimaryRS.Fields(家庭住址) = Text5.Text adoPrimaryRS.Fields(联系电话) = Text6.Text adoPrimaryRS.Fields(毕业学校) = Text7.Text adoPrimaryRS.Fields(最高学历) = Combo4.Text adoPrimaryRS.Fields(所学专业) = Text8.Text If Text9.Text = Then adoPrimaryRS.Fields(职务) = 无 Else adoPrimaryRS.Fields(职务) = Text9.Text End If adoPrimaryRS.Fields(专业技术职称) = Combo5.Text adoPrimaryRS.Fields(职称时间) = Text10.Text adoPrimaryRS.Fields(基本工资) = Text11.Text If Text12.Text = Then adoPrimaryRS.Fields(奖惩情况) = 无 Else adoPrimaryRS.Fields(奖惩情况) = Text12.Text End If If Text13.Text = Then adoPrimaryRS.Fields(个人简历) = 无 Else adoPrimaryRS.Fields(个人简历) = Text13.Text End If adoPrimaryRS.Update MsgBox 记载成功!, vbOKOnly + vbExclamation, 提示End IfText1.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 = Combo1.Text = Combo2.Text = Combo3.Text = Combo4.Text = Combo5.Text = End SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Left = (Screen.Width - Width) 2Top = (Screen.Height - Height) 2End Sub通过该窗体的操作,系统可以完成对员工的基本信息的录入。录入后员工的基本信息的维护,包括信息的修改,删除,浏览,简单的查找等操作,可以通过员工基本信息维护窗体来完成。4.4员工基本信息维护窗体的设计 通过上面的员工基本信息输入窗体可以得知,员工基本信息的输入窗体是不具备数据的维护功能的,员工的基本信息的维护功能是通过另外设计的窗体完成的。图4-5 员工基本信息界面图该窗体包括的控件有文本框和组合框,按钮等控件,文本框和组合框可以显示数据库中员工基本信息表的记录,默认的记录定位为第一条记录,用户可以通过按钮的导航,浏览数据库中其它记录。第一条,上一条,下一条,最后条的按钮的click事件分别是将记录集进行移动,实现文本框,组合框的不同的显示。导航按钮的事件源代码主要分别是:adoPrimaryRS.MoveFirst(移到第一条),adoPrimaryRS.MovePrevious(移到上一条),adoPrimaryRS.MoveNext(移到下一条),adoPrimaryRS.MoveLast(移到最末一条)。其它按钮还有修改按钮,添加按钮,删除按钮,查找按钮。分别实现信息表中的数据的修改更新,添加信息,删除当前记录 ,实现简单的查找定位。下面简单介绍查找定位按钮的click事件,其它按钮的事件源代码可以参考附件和程序。事件源代码:a = Text14.TextadoPrimaryRS.MoveFirstDo While (adoPrimaryRS.EOF = False) If adoPrimaryRS.Fields(员工编号) a Then adoPrimaryRS.MoveNext Else Text1.Text = adoPrimaryRS.Fields(员工编号) Text2.Text = adoPrimaryRS.Fields(姓名) Exit Sub End IfLoopIf adoPrimaryRS.EOF Then MsgBox 员工基本信息表中没有该记录!, vbOKOnly + vbExclamation, 提示!End If通过输入员工编号,源代码功能原理分析:首先利用循环语句Do While (adoPrimaryRS.EOF = False)loop来判断员工记录集是否越下标界限。当未越界的时候,一直循环。接着利用语句If adoPrimaryRS.Fields(员工编号) a Then adoPrimaryRS.MoveNext Else显示记录endif来判断记录集是否下移,当当前记录集的员工字段编号不等于输入的员工编号值时,记录集就下移。这样当最后下标越界的时候,说明没有找到该记录,如果存在adoPrimaryRS.Fields(员工编号) =a则文本框显示记录。4.5员工业务界面设计该功能与上图功能十分相似,使得管理都觉似曾相识,这样就给初学者减轻的心里的负担,从而很快地熟练该人事信息管理软件的使用。本功能采用与人事档案相同对象编程技术,固源码得到了重用,这是软件工程所提供的源码重用过程,这样不仅可以缩短开发周期及减少开发费用。从更早的将人事信息管理系统投入到实际的应用中。如下图:图4-6早期人事信息管理系统图窗体的设计包括2个文本框和1个组合框,其中1个文本框对应的字段由于是备注型,所以文本框的属性值设定为: Multiline属性设置为True。,Scrollbars的值设定为2。按钮的click事件和员工基本信息输入的界面按钮类似,不同是该按钮触发的事件连接的数据库表是员工业务档案表,而上面是员工基本信息表而已。通过该窗体的操作,系统可以完成对员工的档案信息的录入。录入后档案的信息的维护,包括信息的修改,删除,等操作,可以通过档案信息维护窗体来完成。该窗体的设计过程这里不再介绍。 具体代码如下:Dim WithEvents adoPrimaryRS As RecordsetPrivate Sub Command1_Click() If Text1.Text = Then MsgBox 员工编号不能为空!, vbOKOnly + vbExclamation, 警告 Text1.SetFocus Exit Sub End If If Combo1.Text = Then MsgBox 岗位编号不能为空!, vbOKOnly + vbExclamation, 警告 Text2.SetFocus Exit Sub End If If Text2.Text = Then MsgBox 业务档案不能为空!, vbOKOnly + vbExclamation, 警告 Text2.SetFocus Exit Sub End If Set adoPrimaryRS = New Recordset a = Text1.Text adoPrimaryRS.Open select * from TBInfo where 员工编号= & a & , db, adOpenStatic, adLockOptimistic If Not adoPrimaryRS.EOF Then MsgBox 该编号重复!, vbOKOnly + vbExclamation, 警告 Exit Sub Else adoPrimaryRS.AddNew adoPrimaryRS.Fields(员工编号) = Text1.Text adoPrimaryRS.Fields(岗位编号) = Combo1.Text If Text2.Text = Then adoPrimaryRS.Fields(业务档案) = 无 Else adoPrimaryRS.Fields(业务档案) = Text2.Text End If adoPrimaryRS.Update MsgBox 记载成功!, vbOKOnly + vbExclamation, 提示 End IfText1.Text = Text2.Text = Combo1.Text = End SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Left = (Screen.Width - Width) 2Top = (Screen.Height - Height) 2 Set adoPrimaryRS = New Recordset adoPrimaryRS.Open select * from gwxsinfo , db, adOpenStatic, adLockOptimistic With Combo1 For i = 1 To adoPrimaryRS.RecordCount .AddItem adoPrimaryRS.Fields(岗位编号) adoPrimaryRS.MoveNext Next i End With adoPrimaryRS.CancelEnd Sub4.6创建考勤表员工的考勤是员工工资核算的重要的组成部分之一。由于员工的考勤工资部分是动态的,也就是说相对其它的基本工资,岗位工资而言,每个月都是变化的,所以为了科学管理、核算员工的考勤工资部分,这里分成二个子模块来完成员工的考勤管理。这二个子模块是:创建考勤表,维护考勤表。下面先介绍创建考勤表的设计过程。下面是创建考勤表的界面图:该窗体同时也完成浏览已经创建的考勤表的浏览和报表功能。图4-7系统考勤表界面图该窗体包括一个表格控件、一个文本框控件、一个组合框控件、四个按钮控件。表格控件用来显示所设定的年月的员工的考勤表,比如设定2000年1月,通过点击相关按钮触发事件的发生后,该表格就可以显示2000年1月的员工的考勤记载表。用户可以通过该表格来浏览考勤西信息,但是不能通过表格显示的数据来修改信息,信息的修改可以通过考勤信息维护窗体的功能来完成。文本框控件用于输入年,组合框用于选择考勤的月份。创建/浏览考勤按钮的click事件:根据输入的年、月在考勤表中查询,如果记录集为空,则表明该月的考勤表还没有创建,则开始创建考勤表,初始化的数据中迟到次数、早退次数、缺席次数等为0,考勤记录以后可以通过考勤维护窗体对该员工的出勤情况进行修改。如果记录集非空,则表明该月的考勤表已经创建,那么统给出提示后用户可以浏览。通过记录集来创建考勤表的原理如下:当用记录集来完成了对考勤表按照年月为查询条件查询后,如果记录集为空,通过adoPrimaryRS.AddNew语句来对记录集增加一条员工记录,接着设置adoPrimaryRS.Fields(员工编号),adoPrimaryRS.Fields(迟到次数),等记录集的字段值,再通过一个循环语句逐一完成上述的每位员工的操作,这样就完成了对考勤表的设定的年月的数据值的创建。导出到excel按钮的click事件将记录集中的数据导出到excel表中实现报表打印。具体代码如下:Dim WithEvents adoPrimaryRS As RecordsetDim WithEvents adoPrimaryRS1 As RecordsetPrivate Sub Command1_Click() If Text1.Text = 输入年 Or Combo1.Text = 选择月 Then MsgBox 年月不能为空!, vbOKOnly + vbExclamation, 警告 Exit Sub End If a = Text1.Text b = Combo1.Text c = a & b Set adoPrimaryRS = New Recordset a = Text1.Text adoPrimaryRS.Open select * from kqinfo where 年月= & c & , db, adOpenStatic, adLockOptimistic If adoPrimaryRS.EOF Then Set adoPrimaryRS1 = New Recordset adoPrimaryRS1.Open select * from ygInfo , db, adOpenStatic, adLockOptimistic adoPrimaryRS1.MoveFirst Do While Not adoPrimaryRS1.EOF adoPrimaryRS.AddNew adoPrimaryRS.Fields(员工编号) = adoPrimaryRS1.Fields(员工编号) adoPrimaryRS.Fields(迟到次数) = 0 adoPrimaryRS.Fields(早退次数) = 0 adoPrimaryRS.Fields(缺席次数) = 0 adoPrimaryRS.Fields(离岗次数) = 0 adoPrimaryRS.Fields(备注) = 无 adoPrimaryRS.Fields(年月) = c adoPrimaryRS1.MoveNext Loop adoPrimaryRS.Update Else MsgBox 该月考勤表已经创建,确认开始浏览!, vbOKOnly + vbExclamation, 警告 End If adoPrimaryRS.Close adoPrimaryRS.Open select kqinfo.员工编号,yginfo.姓名,kqinfo.迟到次数,kqinfo.早退次数,kqinfo.缺席次数,kqinfo.离岗次数,kqinfo.备注,kqinfo.年月 from kqinfo,ygInfo where kqinfo.员工编号=yginfo.员工编号 and kqinfo.年月= & c & , db, adOpenStatic, adLockOptimistic With myFlexGrid .Rows = 2 .CellAlignment = 4 .TextMatrix(1, 0) = 员工编号 .TextMatrix(1, 1) = 姓名 .TextMatrix(1, 2) = 迟到次数 .TextMatrix(1, 3) = 早退次数 .TextMatrix(1, 4) = 缺席次数 .TextMatrix(1, 5) = 离岗次数 .TextMatrix(1, 6) = 备注 .TextMatrix(1, 7) = 年月 adoPrimaryRS.MoveFirst Do While Not adoPrimaryRS.EOF .Rows = .Rows + 1 .CellAlignment = 4 For j = 0 To adoPrimaryRS.Fields.Count - 1 .TextMatrix(.Rows - 1, j) = adoPrimaryRS.Fields(j) Next j adoPrimaryRS.MoveNext Loop End With Command3.Enabled = True End SubPrivate Sub Command2_Click() Dim i As Integer, j As Integer Dim xlapp As Excel.Application Dim xlbook As Excel.Workbook Dim xlsheet As Excel.Worksheet Set xlapp = CreateObject(excel.application) xlapp.Visible = True Set xlbook = xlapp.Workbooks.Add Set xlsheet = xlbook.Worksheets(1) xlsheet.Cells(1, 1) = 员工编号 xlsheet.Cells(1, 2) = 迟到次数 xlsheet.Cells(1, 3) = 早退次数 xlsheet.Cells(1, 4) = 缺席次数 xlsheet.Cells(1, 5) = 离岗次数 xlsheet.Cells(1, 6) = 备注 xlsheet.Cells(1, 7) = 年月 adoPrimaryRS.MoveFirst i = 0 Do While (adoPrimaryRS.EOF = False) For j = 0 To adoPrimaryRS.Fields.Count - 1 xlsheet.Cells(i + 2, j + 1) = adoPrimaryRS.Fields(j) Next j adoPrimaryRS.MoveNext i = i + 1 Loop Set xlapp = Nothing Set xlbook = NothingEnd SubPrivate Sub Command3_Click() Text1.Text = 输入年 Combo1.Text = 选择月 With myFlexGrid .Rows = 2 End With adoPrimaryRS.Close Command3.Enabled = FalseEnd SubPrivate Sub Command4_Click()Unload MeEnd SubPrivate Sub Form_Load()Left = (Screen.Width - Width) 2Top = (Screen.Height - Height) 2 With myFlexGrid .Rows = 2 .CellAlignment = 4 .TextMatrix(1, 0) = 教师编号 .TextMatrix(1, 1) = 迟到次数 .TextMatrix(1, 2) = 早退次数 .TextMatrix(1, 3) = 缺席次数 .TextMatrix(1, 4) = 离岗次数 .TextMatrix(1, 5) = 备注 .TextMatrix(1, 6) = 年月 End WithEnd SubPrivate Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)End SubPrivate Sub Text1_Click() Text1.Text = End Sub4.7 考勤表的维护上面已经完成了对所有员工按照给定年月创建了或者说初始化了员工的考勤表。初始化的时候,员工的考勤比如迟到,早退等次数设定为0。当员工在该年月中有迟到等情况发生时,管理员可以通过操作该窗体来记载该员工的迟到,早退等考勤情况。每记载一次比如迟到,数据库中迟到的次数就被加1。最后根据实际迟到的总次数来计算扣除的考勤工资。下面是该窗体的设计界面图:图4-8操作窗体界面图该窗体共有4个文本框控件,1个组合框控件,4个复选框按钮控件,2个按钮控件。文本框和组合框用来输入和显示考勤表记载的字段信息,复选框按钮控件用来维护考勤情况。按钮控件用来触发相应事件的发生。下面简单分析一下记载按钮的click事件:首先通过语句:adoPrimaryRS.Open select * from kqinfo where 员工编号= & a & and 年月= & d & , db, adOpenStatic, adLockOptimistic If adoPrimaryRS.EOF Then MsgBox 输入可能有误,考勤表中没有相应的考勤记录!, vbOKOnly + vbExclamation, 警告 Exit Sub来对考勤表中该员工的在输入年月的情况下查询,如果记录集为空,则表明该考勤表中还没有该考勤记录存在,所以还不能进行考勤维护。需要先创建相应的考勤表后来维护。如果记录集非空,则根据复选框的值来进行考勤字段的维护。具体就是在考勤字段的基础上加1。实现的语句如下:If Check1.Value = 1 Then adoPrimaryRS.Fields(迟到次数) = adoPrimaryRS.Fields(迟到次数) + 1 End If If Check2.Value = 1 Then adoPrimaryRS.Fields(早退次数) = adoPrimaryRS.Fields(早退次数) + 1 End If If Check3.Value = 1 Then adoPrimaryRS.Fields(缺席次数) = adoPrimaryRS.Fields(缺席次数) + 1 End If If Check4.Value = 1 Then adoPrimaryRS.Fields(离岗次数) = Text3.Text End If4.8 员工工资表窗体的设计通过管理人员输入年、月,系统即可生成当月的员工工资表。如果输入的年月工资表已经生成,则系统给出提示,并可以浏览当月工资表。图4-9员工工资表浏览界面图书馆该窗体包括一个表格控件、一个文本框控件、一个组合框控件、四个按钮控件。文本框控件用于输入年,组合框用于选择工资的月份。创建/浏览月工资表按钮的click事件:根据输入的年月在工资表中查询,如果没有该月的工资则系统开始创建该月的员工工资记录。创建时需要根据员工基本信息表中的基本工资、考勤表的该员工编号的考勤工资、加班表中的该员工编号的加班工资、业务档案表中的岗位工资、系数表中的工资系数进行计算分别得出员工的工资表中的每项记录。最后生成的工资项有:员工号、姓名、基本工资、岗位工资、加班津贴、考勤工资、行政性扣款、应发工资、个人所得税、实发工资、年月。应发工资最后实现的语句:x = adoPrimaryRS.Fields(基本工资) + adoPrimaryRS.Fields(岗位津贴) + adoPrimaryRS.Fields(加班津贴) - adoPrimaryRS.Fields(考勤工资) - adoPrimaryRS.Fields(行政性扣款) adoPrimaryRS.Fields(应发工资) = x通过以上语句可以看出,应发工资是有基本工资岗位工资加班津贴考勤工资个人所得税。个人所得税是在应发工资的基础上800的差乘20%得到的。实现的语句:y = x - 800 If y 0 Then adoPrimaryRS.Fields(个人所得税) = y * 0.2 Else adoPrimaryRS.Fields(个人所得税) = 0 End If计算完应发工资和个人所得税后最终的实发工资就可以计算出来了。实现的语句是:adoPrimaryRS.Fields(实发工资) = x - adoPrimaryRS.Fields(个人所得税)如果该月工资已经创建,则系统给出提示后,用户可以浏览该月的工资表记录。导出到EXCEL表按钮的clcik事件:将工资记录集中的数据导出到excel表中,通过excel表完成报表打印。具体代码如下:Dim WithEvents adoPrimaryRS As RecordsetDim WithEvents adoPrimaryRS1 As RecordsetDim WithEvents adoPrimaryRS2 As RecordsetDim WithEvents adoPrimaryRS3 As RecordsetDim WithEvents adoPrimaryRS4 As RecordsetDim WithEvents adoPrimaryRS5 As RecordsetDim WithEvents adoPrimaryRS6 As RecordsetPrivate Sub Command1_Click() If Text1.Text = 输入年 Or Combo1.Text = 选择月 Then MsgBox 年月不能为空!, vbOKOnly + vbExclamation, 警告 Exit Sub End If a = Text1.Text b = Combo1.Text c = a & b Set adoPrimaryRS = New Recordset adoPrimaryRS.Open select * from wageInfo where 年月= & c & , db, adOpenStatic, adLockOptimistic If adoPrimaryRS.EOF Then Set adoPrimaryRS6 = New Recordset adoPrimaryRS6.Open select * from tbInfo , db, adOpenStatic, adLockOptimistic kk1 = adoPrimaryRS6.RecordCount Set adoPrimaryRS1 = New Recordset adoPrimaryRS1.Open select * from ygInfo , db, adOpenStatic, adLockOptimistic kk2 = adoPrimaryRS1.RecordCount If kk1 kk2 Then MsgBox 员工信息和业务信息不一致,请检查!, vbOKOnly + vbExclamation, 警告 Exit Sub End If For pp = 1 To kk2 adoPrimaryRS6.MoveFirst adoPrimaryRS1.MoveFirst If adoPrimaryRS6.Fields(员工编号) adoPrimaryRS1.Fields(员工编号) Then MsgBox 员工信息和业务信息不一致,请检查!, vbOKOnly + vbExclamation, 警告 Exit Sub End If adoPrimaryRS1.MoveNext adoPrimaryRS6.MoveNext Next pp adoPrimaryRS1.MoveFirst Do While Not adoPrimaryRS1.EOF m = adoPrimaryRS1.Fields(员工编号) Set adoPrimaryRS2 = New Recordset adoPrimaryRS2.Open select gwxsinfo.岗位工资 from TBInfo,gwxsInfo where TBInfo.岗位编号=gwxsInfo.岗位编号 and TBInfo.员工编号= & m & , db, adOpenStatic, adLockOptimistic Set adoPrimaryRS3 = New Recordset adoPrimaryRS3.Open select * from jbinfo where 员工编号= & m & and 年月= & c & , db, adOpenStatic, adLockOptimistic Set adoPrimaryRS4 = New Recordset adoPrimaryRS4.Open select * from kqinfo where 员工编号= & m & and 年月= & c & , db, adOpenStatic, adLockOptimistic If adoPrimaryRS4.EOF Then MsgBox 本月的考勤还未创建,不能计发工资!, vbOKOnly + vbExclamation, 警告 adoPrimaryRS4.Cancel Unload Me Exit Sub End If Set adoPrimaryRS5 = New Recordset adoPrimaryRS5.Open select * from xsinfo , db, adOpenStatic, adLockOptimistic If adoPrimaryRS5.EOF Then MsgBox 工资系数未设定,不能计发工资!, vbOKOnly + vbExclamation, 警告 Exit Sub End If adoPrimaryRS.AddNew adoPrimaryRS.Fields(员工编号) = adoPrimaryRS1.Fields(员工编号) adoPrimaryRS.Fields(基本工资) = adoPrimaryRS1.Fields(基本工资) adoPrimaryRS.Fields(岗位津贴) = adoPrimaryRS2.Fields(岗位工资) If adoPrimaryRS3.EOF Then adoPrimaryRS.Fields(加班津贴) = 0 Else If adoPrimaryRS3.Fields(加班类别) = 1 Then adoPrimaryRS.Fields(加班津贴) = adoPrimaryRS3.Fields(加班天数) * adoPrimaryRS5.Fields(平时加班) Else If adoPrimaryRS3.Fields(加班类别) = 2 Then adoPrimaryRS.Fields(加班津贴) = adoPrimaryRS3.Fields(加班天数) * adoPrimaryRS5.Fields(双休加班) Else adoPrimaryRS.Fields(加班津贴) = adoPrimaryRS3.Fields(加班天数) * adoPrimaryRS5.Fields(节日加班) End If End If End If adoPrimaryRS.Fields(考勤工资) = adoPrimaryRS4.Fields(迟到次数) * adoPrimaryRS5.Fields(迟到) + adoPrimaryRS4.Fields(早退次数) * adoPrimaryRS5.Fields(早退) + adoPrimaryRS4.Fields(缺席次数) * adoPrimaryRS5.Fields(缺席) + adoPrimaryRS4.Fields(离岗次数) * adoPrimaryRS5.Fields(离岗) adoPrimaryRS.Fields(行政性扣款) = adoPrimaryRS5.Fields(行政性扣款) X = adoPrimaryRS.Fields(基本工资) + adoPrimaryRS.Fields(岗位津贴) + adoPrimaryRS.Fields(加班津贴) - adoPrimaryRS.Fields(考勤工资) - adoPrimaryRS.Fields(行政性扣款) adoPrimaryRS.Fields(应发工资) = X Y = X - 800 If Y 0 Then adoPrimaryRS.Fields(个人所得税) = Y * 0.2 Else adoPrimaryRS.Fields(个人所得税) = 0 End If adoPrimaryRS.Fields(实发工资) = X - adoPrimaryRS.Fields(个人所得税) adoPrimaryRS.Fields(年月) = c adoPrimaryRS1.MoveNext adoPrimaryRS2.Close adoPrimaryRS3.Close adoPrimaryRS4.Close adoPrimaryRS5.Close Loop adoPrimaryRS1.Close adoPrimaryRS.Update Else MsgBox 该月工资表已经创建,确认开始浏览!, vbOKOnly + vbExclamation, 警告 End If adoPrimaryRS.Close Set adoPrimaryRS = New Recordset adoPrimaryRS.Open select wageInfo.员工编号,ygInfo.姓名,wageInfo.基本工资,wageInfo.岗位津贴,wageInfo.加班津贴,wageInfo.考勤工资,wageInfo.行政性扣款,wageInfo.应发工资,wageInfo.个人所得税,wageInfo.实发工资,wageInfo.年月 from wageInfo,ygInfo where wageInfo.员工编号=ygInfo.员工编号 and 年月= & c & , db, adOpenStatic, adLockOptimistic With myFlexGrid .Rows = 2 .CellAlignment = 4 .TextMatrix(1, 0) = 员工编号 .TextMatrix(1, 1) = 姓名 .TextMatrix(1, 2) = 基本工资 .TextMatrix(1, 3) = 岗位津贴 .TextMatrix(1, 4) = 加班津贴 .TextMatrix(1, 5) = 考勤工资 .TextMatrix(1, 6) = 行政性扣款 .TextMatrix(1, 7) = 应发工资 .TextMatrix(1, 8) = 个人所得税 .TextMatrix(1, 9) = 实发工资 .TextMatrix(1, 10) = 年月 adoPrimaryRS.MoveFirst Do While Not adoPrimaryRS.EOF .Rows = .Rows + 1 .CellAlignment = 4 For j = 0 To adoPrimaryRS.Fields.Count - 1 .TextMatrix(.Rows - 1, j) = adoPrimaryRS.Fields(j) Next j adoPrimaryRS.MoveNext Loop End With Command3.Enabled = True End SubPrivate Sub Command2_Click() Dim i As Integer, j As Integer Dim xlapp As Excel.Application Dim xlbook As Excel.Workbook Dim xlsheet As Excel.Worksheet Set xlapp = CreateObject(excel.application) xlapp.Visible = True Set xlbook = xlapp.Workbooks.Add Set xlsheet = xlbook.Worksheets(1) xlsheet.Cells(1, 1) = 员工编号 xlsheet.Cells(1, 2) = 姓名 xlsheet.Cells(1, 3) = 基本工资 xlsheet.Cells(1, 4) = 岗位津贴 xlsheet.Cells(1, 5) = 加班津贴 xlsheet.Cells(1, 6) = 考勤工资 xlsheet.Cells(1, 7) = 行政性扣款 xlsheet.Cells(1, 8) = 应发工资 xlsheet.Cells(1, 9) = 个人所得税 xlsheet.Cells(1, 10) = 实发工资 xlsheet.Cells(1, 11) = 年月 adoPrimaryRS.MoveFirst i = 0 Do While (adoPrimaryRS.EOF = False) For j = 0 To adoPrimaryRS.Fields.Count - 1 xlsheet.Cells(i + 2, j + 1) = adoPrimaryRS.Fields(j) Next j adoPrimaryRS.MoveNext i = i + 1 Loop Set xlapp = Nothing Set xlbook = NothingEnd SubPrivate Sub Com
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:vb企业人事工资管理系统+
链接地址:https://www.renrendoc.com/p-58670504.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!