原先我的工资主要由岗位和计件(按趟计算)构成,单位现在把岗位工资和2017年2月出勤天数次数捆绑,

岗位工资的来计算每个员工工资的工资系统
时间: 5:14:55
西北工业大学网络教育学院 毕业论文&&&&毕 业 论 文企业职工工资管理系统王 雪2011910II&&&&西北工业大学网络教育学院毕业论文任务书一、 题目:企业职工工资管理系统二、 指导思想和目的要求:人事工资管理智能化是解决上述问题的最佳方案。 将一些先进的信息技术结合运用到人 事工资信息管理和服务中, 用这些技术来促进企事业管理各部门的协作, 提高人事工资管理 乃至单位管理的效率,是系统开发的主要目的。 整个系统从总体上分为人事档案管理、业务档案管理、考勤管理、系统用户管理五大 部分,各部分要实现的功能如下: 1、 员工档案的输入及查询; 2、 员工基本信息维护:包括修改、删除; 3、 评价的输入及维护功能; 4、 员工工资的生成及查询; ; 5、 员工工资的统计及工资报表的打印; 6、 员工考勤管理的初始化及更新; 7、 工考勤的查询及报表的打印; 8、 对数据库中的员工自定义条件统计; 9、 统管理员实现对系统管理及系统用户对登录密码进行修改。III&&&&三、 主要技术指标:1、 总体方案概要设计 确定人事管理系统实现什么功能,如何实现。1/天 2、 定义框架 初步规划大的模块,确定模块内容和各模块之间的联系。1/天 3、 定义流程 画出流程图,形成业务流程,基本确定整体骨架。1/天 4、 定义数据字典 定义各个业务的数据字典,形成总体数据字典,确定各数据之间的联系。1/天 5、 详细设计 根据总体方案和框架具体设计各模块的内部详细设计,具体到每个操作画面。1/天四、 进度与要求:1、 2011 年 2 月 15 日-----2011 年 2 月 30 日 2、 2011 年 3 月 1 日------2011 年 3 月 10 日 3、 2011 年 3 月 10 日------2011 年 3 月 20 日 4、 2011 年 3 月 21 日----2011 年 4 月 1 日 5、 2011 年 4 月 1 日-----2011 年 4 月 9 日 阅及制作答辩电子讲演稿; 6、 2011 年 4 月 15 日-----2011 年 4 月 15 日了解课题背景,收集资料,准备开题; 熟悉开发工具,开始编程及完成代码; 系统模块编码实现;系统调试并完成论文初稿; 论文定稿并打印论文交指导教师,评阅老师评毕业答辩。IV&&&&五、 主要参考书及参考资料:1、 郑阿奇.Visual Basic 实用教程,电子工业出版社. 2、 Visual Basic 6.0 使用指南 ,电子工业出版社. 3、 Craig Eddy ,Timothy Buchanan.中文 Access 2000 24 学时教程 ,机械工业出版社. 4、 杜军平,黄杰.Access2000 数据库开发.北京机械工业出版社,2001. 5、 张树兵. Visual Basic 6.0.清华大学出版社,1999. 6、 刘云生.数据库系统概论.华中理工大学出版社,1996. 7、 韩润春,佟志臣,王汉新.管理信息系统.河北人民出版社.2003.学习中心:xxxxxxxxxx 专 业: 工商管理 xxx班 学级: 生: xxx指导教师:V&&&&摘要工资管理信息系统是采用面向对象的程序设计技术来设计生成的一个数据 库管理系统,面向对象的编程技术是目前最流行的一种编程方法,它具有强大的 功能和更大的灵活性,通过对工资管理系统体系进行的总体设计,功能分析,程 序设计,我们建立了一个较为完善的工资管理。 本设计说明书主要讲述了 VISAUL BASIC6.0 的基本功能及设计基本方法,系 统数据库设计, 面向对象的设计思想, 窗体的设计, 应用程序的开发方法等内容。 本系统具有数据输入,数据存储,档案查询,输入报表等功能。系统的人机 对话界面友好。关键词:数据库;工资;工资管理;工资管理系统;面向对象的程序设计I&&&&目录II&&&&西北工业大学网络教育学院毕业论文第一章 绪论1.1 问题的提出某企业拥有干部和员工共 400 多人, 主要有领导干部, 技术人员, 销售人员, 操作人员。公司下设机关,销售公司,成品车间,调和车间,为了便于员工工资 管理,并且还专设置了人事工资管理系统,根据员工每个人的工作年限和医疗保 险,住房补贴,岗位工资的来计算每个员工工资的工资系统,也便于查询员工工 资。 随着公司逐年的发展,公司的人事工资等事务纷繁芜杂,但大体上这些事务 可包括以下几个方面的内容:人事基本信息管理,员工的业务档案管理、员工的 工作评价管理、员工的考勤管理、员工的工资管理等。以上各项中的每一个部分 都有该方面的管理明细, 以员工的基本信息管理为例, 包含的明细有: 员工编号、 姓名、性别、部门、民族、出生年月、政治面貌、家庭住址、联系电话、毕业学 校、最高学历等。若用人工的方法来管理这些数据,不但会造成人力、物力、财 力上的浪费,而且因为要处理的信息量过大不容易进行统计和分析。依靠传统的 手工管理越来越跟不上公司的发展需要,为了精简人员,提高办事效率和节约公 司运营成本,特别需要改变以前单纯依赖人工管理的模式。 随着经济水平的发展, 知识经济时代给企事业工资信息管理提出了更高的要 求,除了以往的工资利用计算机软件 excel 可以管理外,公司更希望能够对以往 的各种的人事信息,考勤信息,工作评价信息,工资信息等统一管理起来。高效 的、 准确的人事工资管理, 不仅能促进员工不断提高自身素质、 提高工作积极性。 从而提高员工工作质量和效率。人事工资管理中数据的正确性、安全性,操作的 高效性、可靠性,无一不影响着员工队伍的建设和管理。1.2 本课题的研究意义目前市面上流行的工资发放软件不少。但是,对于企、事业单位的工资发放 来说,不需要太大的数据库系统。只需要一个操作方便,功能实用,能同时满足1&&&&西北工业大学网络教育学院毕业论文财务部门、单位其他相关部门及代发单位这三方对数据的管理及需求的系统。我 们的目标就是在于开发一个功能实用,用户(财务部、其他相关部门、银行)操 作方便,简单明了的工资发放软件。1.3 可行性分析可行性研究的目的就是要用最小的代价在尽可能短的时间内确定问题是否 能够解决。当然不能靠主观猜想而是要靠客观分析。必须分析几种主要的可能解 法的利弊,从而判原定的系统目标和规模是否现实,系统完成后所能带来的效益 是否大到值得去投资开发这个系统的程度。因此,可行性研究实质上是要进行依 次大大地压缩简化了的系统分析和设计的过程, 也就是在较高层次以较抽象的方 式进行的系统分析和设计的过程。可行性研究主要从以下五个方面来进行。1.3.1 技术上可行性使用现有的技术能不能实现这个系统。由于本管理系统的对象单一,仅 对本单位的人事信息进行管理,且在对人事信息进行增减、修改、删除及统计操 作时基本不涉及到计算过程,因此,这个管理系统比较适合采用数据库来设计。 在计算机硬件和软件快速发展的今天, 计算机硬件和软件已经远远满足本管理系 统的要求。在数据库编程工具方面,各种可视化编程方法的出现,一改过去程序 设计的概念和方法,用户用鼠标就可以快速、简捷地创建应用程序,极大地提高 了编程效率。 在作者所了解数据库系统中, 因为学过 Visual Basic 6.0, ACCESS 对 数据库比较熟悉,因此决定采用 VisualBasic 6.0 及 ACCESS 来完成人事工资管 理系统的设计。VisualBasic 6.0 和 ACCESS 共同完成人事工资管理系统,它提 供了面向对象的编程技术, 编写少量或不用编写程序代码就能快速地创建出功能 强大的可视化应用程序,可简化数据库管理,使开发应用程序这项艰辛的工作就 象堆积木那样简单方便。另外,用 ACCESS 数据库开发的应用程序可以独立运行 于 windows 平台, 而且 ACCESS 产生的数据库(表)适用范围广。2&&&&西北工业大学网络教育学院毕业论文1.3.2 经济可行性这个系统的经济效益能不能超过它的开发成本。 本人事工资管理系统是基于 VisualBasic 6.0 及 ACCESS 基础上开发的小型数据库应用程序,不需要多少人 力和物力就可以设计的。但本系统一旦投入使用,将大大减少人事工资管理人员 的工作量,提高了工作效率,其经济效益是显儿易见的。1.3.3 操作可行性系统的操作方式在这个用户组织内能不能行得通。在进行需求分析时,就对 用户组织进行了调查,针对他们的情况,设计出适合这个用户组织的人机界面, 使操作方式简单明了。1.3.4 人员的可行性本人事工资管理系统是用 VisualBasic 6.0 及 ACCESS 设计的小型数据 库应用程序,无须多少人员就可以设计成功的。通过对人事工资管理系统的可行 性分析,所提出的功能是适合人事工资管理的,也完全可以实现的。3&&&&西北工业大学网络教育学院毕业论文第二章需求分析本系统开发思想是采用现代化先进的人事工资信息化高效管理思想,综合 多种人事工资信息管理软件开发商优点以及结合我们单位实际情况而开发。2.1 业务流程图通过对调研单位的财务管理人员和该单位的相关负责人的交谈, 深入了解获 知该单位人事工资的操作流程。 对现行系统进行详细调查的重点是对管理业务的流程进行描述, 通过采用业 务流程图中的图形工具来描述管理业务活动可以帮助我直观的理解系统业务过 程,找出业务流程中的不合理现象。 管理业务流程图的图形符号说明:系统中人员 系统外实体 单据、报表、帐目 处理 数据流向 存储绘制出的业务流程图如图所示: 用户 个人信息 其他信息 单位管 理人员单位管 理人员考勤信息财 务 人 员工资信息工资账目 图 2-1 业务流程图4&&&&西北工业大学网络教育学院毕业论文2.2 新系统的数据流图根据上面的业务流程分行,得到该系统的逻辑方案,该方案通过数据流程图 和数据字典二个方面来说明。 数据流程图就是组织中信息运动的抽象, 是管理信息系统逻辑模型的主要形 式。这个模型不涉及硬件、软件、数据结构与文件组织,它与对系统的物理描述 无关,只是用一种图形及与此相关的注释来表示系统的逻辑功能,即开发的系统 在管理信息处理方面要做什么。由于图形描述简明,清晰,不涉及到技术细节, 所描述的内容是面向用户的, 所以即使完全不懂信息技术的用户单位的人员也容 易理解。因此数据流程图是系统分析人员与用户进行交流的有效手段,也是系统 设计的主要依据之一。管理员1 人事信 息处理 表D1 人 事 信 息2 业务档 案处理D2 业务档案表4.1 生成 工资3 考勤信 息处理 D3 考勤信息表D4 工 资 信 息 表4.2 工资查询 工资报表 图 2-2 新系统数据流程图 统计报表员工人事工资管理系统是针对企事业部门的大量业务处理工作用计算机进 行全面现代化管理。主要包括员工人事档案管理、业务档案、工作评价管理、工 资管理、和考勤管理等几个方面的功能,以实现用户方便的输入、查询、统计、 打印相关报表的业务需求。5&&&&西北工业大学网络教育学院毕业论文·根据数据流程图可以看出新系统逻辑模型中具体系统功能如下: (1)人事档案管理 包括在职职工信息,离职教职工信息和部门信息。提供对“职工履历表”数 据输入、组合条件查询、统计、打印功能,实现”职工花名册”数据生成、查询、 统计、打印功能。 (2)业务档案管理 提供对“职工业务档案记载表”数据输入,组合条件查询,统计,打印功能。 (3)员工工作评价管理 提供对员工的每年度的工作考核进行录入,维护和浏览以及报表等功能。 (4)员工考勤管理 提供对各部门“月考勤登记表”数据的录入、查询、统计功能;根据“月考勤登 记表”数据分部门按各种日考勤标志进行分类统计,且生成“员工月考勤统计 表” ,数据及“员工月考勤统计汇总表”数据,实现该表的查询、打印功能。 (5)职工工资管理 提供对“员工工资表”数据的输入、查询、按月份统计、打印功能,完成每 月对“员工工资表”数据的月统计,以此生成“员工工资总额构成情况表”实现 该表的查询、打印功能。 人事工资档案是管理职工自身信息,包括学历、职称、社会经历等;业务档案是 用于对员工岗位,业务进行管理登记;考勤管理是指职工出勤率登记,以便日后 留档查询,跟效益工资挂钩。工资管理是指按不同资历员工有不同档次的工资计 算标准,不同职务的人员有不同的岗位津贴,此外,还跟基本工资、加班工资、 出勤情况有关,从而更加准确公平的发放员工实际工资;6&&&&西北工业大学网络教育学院毕业论文人事管理 评价管理 业务档案企事业工资 管理系统 系统管理 考勤管理工资管理 图 2-3 企事业工资管理系统图人事工资管理人员功能的信息量大,数据安全性和保密性要求最高。本功能 实现对员工信息、业务信息、考勤信息的管理和统计、工作人员和管理人员信息 查看及维护。超级管理员可以浏览、查询、添加、删除、修改、统计员工人事信 息等普通管理操作员只能按指定范围功能的操作权限。2.3 新系统的数据字典上文中的数据流图只能给出系统逻辑功能的一个总框架而缺乏详细、具体的内 容。数据词典的作用是给数据流图上的每一个成分以定义和说明。除此之外,数 据词典还要对系统分析中其它需要说明的问题进行定义和说明。 本文的数据词典描述的主要内容有:数据元素、数据结构、数据流、数据存 储、处理逻辑和外部项。在系统分析的过程中,产生了大量的数据词典。限于篇 幅,我采用图表格式仅就这几项条目各举一例来说明。 数据元素条目数据元素 系统名:人事工资管理 条目名:员工编号 编号:E1 别名:员工号7&&&&西北工业大学网络教育学院毕业论文 存储处: D1 基本信息表 D2 业务档案表 D3 考勤表 D4 工资表 数据元素值: 代码类型 字符型 简要说明: 员工编号是员工的识别符,每个员工都有唯一的编号。 修改记录: 编写 审核 表 2-1 数据元素条目举例表 日期 日期
长度: 10数据结构条目系统名:人事工资管理 条目名:人事信息 结构: 员工编号 姓名 性别 部门 民族 出生年月 政治面貌 家庭住址 学历 基本工资 有关数据流: 数据结构 编号:I1 别名:无 有关数据存储: D1 员工信息表简要说明: 员工在进入单位后需要首先提供个人资料,单位并确定基本工资。 修改记录: 编写 审核 表 2-2 数据结构条目举例表 日期 日期 数据流条目系统名:人事工资管理 条目名:工资查询统计报表 来源: 工资表 数据流 编号:F5 别名:无 去处: 打印报表8&&&&西北工业大学网络教育学院毕业论文 数据流结构: 库存数据={员工编号+姓名+基本工资+岗位津贴+加班津贴+考勤工资+行政性扣款+应发 工资+个人所得税+实发工资 简要说明: 对工资表中的已经创建的信息进行查询并且输出打印。 修改记录: 编写 审核 表 2-3 数据流条目举例表 日期 日期 数据存储条目数据存储 系统名:人事工资管理 条目名:工资表 存储组织: 每个员工一条工资记录按员工编号顺序 排列 记录组成: 项名: 员工 长度: (byte) 简要说明: 员工的所有的创建的工资信息都存储在这里。 修改记录: 编写 审核 表 2-4 数据存储条目举例表 日期 日期
编号 10 基本 工资 6 岗位 津贴 6 加班 津贴 6 考勤 工资 6 编号:D4 别名:无 主关键字:员工编号 辅关键字:年月行政 扣款 6应发 工资 6所得 税 6实发 工资 6年月 6数据处理逻辑条目处理逻辑 系统名:人事工资管理 条目名:生成工资表 输入: 取自基本信息,业务档案信息,考勤信 息,年月等。 编号: 别名:无输出: 员工当月的工资表9&&&&西北工业大学网络教育学院毕业论文 加工逻辑: 应发工资=基本工资+岗位工资+加班津贴+考勤工资-行政扣款 个人所得税=(基本工资+岗位工资+加班津贴+考勤工资-行政扣款-800)*02 实发工资=应发工资-个人所得税 简要说明: 工资表每月创建一次。 修改纪录: 编写 审核 表 2-5 数据处理逻辑条目举例 表 日期 日期 第三章 总体设计由于该单位的工资信息管理系统是属于中小型系统,其具体方案设计模型如下: 员工 查询 数据管理 管理员 浏览 DB 图 3-1 系统方案设计模型图 工资管理系统3.1 系统流程图工资管理系统的输出结果是对员工工作的一个评价, 在本系统中,计算工资 的基本依据是考勤管理系统的统计结果,同时,在统计和查询时需要用到人事管 理系统中员工信息和部门信息。 本系统的数据流程如图所示:工资系数调整 员工工资系数 调整表月考勤表10&&&&西北工业大学网络教育学院毕业论文工资计算月工资表工资发放 图 3-2 系统流程图3.2 功能模块结构图软件所实现的功能强弱是衡量一个软件的最根本的标准。经过对系统的可行 性分析、需求分析、数据分析后,结合调研的情况,确定了本子系统的功能模块 如下图所示。工资管理系统人事档案业务档案工资管理考勤管理系统管理档 案 输 入档 案 更 新档 档 案 案 查 统 询 计档 档 案 案 输 查 入 询评 价 输 入评 工 价 资 维 生 护 成工 工 资 资 查 统 询 计工 初 资 始 报 化 表考 勤 更 新考 考 勤 勤 查 报 询 表用 户 管 理系 数 维 护关 于 系 统系 统 退 出图 3-3 功能模块结构图11&&&&西北工业大学网络教育学院毕业论文本人事管理系统分五大模块,具体如下:3.2.1 人事档案管理人事管理是员工基本信息的录入: 档案更新 人 事 档 案 档案统计 档案查询档案输出图 3-4 人事档案管理流程图档案更新:包括对人事档案的修改,删除,增加(新建档案) 档案查询:可以按姓名、职称或任意条件查询个人或一部分人的情况; 档案统计:按多种条件进行数据统计并显示,包括统计学历、职称、年龄、 政治面貌等。 档案输出:可以输出个人档案,全部档案,花名册,团员名册,党员名册等12&&&&西北工业大学网络教育学院毕业论文3.2.2 业务档案管理业务编辑业 务 档 案业务查询评价编辑评价维护图 3-5 业务档案流程图档案编辑:包括新建,修改,删除员工的业务档案。 档案查询:可以按姓名、职称或任意条件查询个人或一部分人的情况 评价编辑:包括对员工每年的考核评价等级等情况进行录入和浏览。 评价维护:可以输出员工的评价资料进行维护修改。13&&&&西北工业大学网络教育学院毕业论文3.2.3 工资管理创建工资工 资 管 理工资查询工资统计工资输出图 3-6 工资管理流程图创建工资表:通过输入的年月来完成对员工工资表的创建,创建工资表是将 系统中其它的数据库表中的数据关联起来,综合得到的员工的某年月的工资。 工资查询:可按员工编号和年月等进行员工工资状况查询; 工资统计:按多种条件进行数据统计并显示。 工资输出:可以输出个人工资单,或输出全体人员工资汇总清单。本系统的 输入报表是通过导出到 excel 完成报表的。14&&&&西北工业大学网络教育学院毕业论文3.2.4 考勤管理创建考勤考 勤 管 理考勤维护考勤查询统计输出图 3-7 考勤管理流程图考勤表的创建:按照年月对考勤表完成初始化创建。 考勤维护: 考勤表创建时初始化数据暂时为 0,其中的字段的值需要通过考 勤表维护功能来进行修改。 考勤查询: 按姓名或员工编号查询个人出勤情况。 统计输出:按多种条件进行数据统计并显示在表格中,也可将统计计结果打 印出来。 本系统的输出报表是通过将输出的数据对象导出到报表专家 excel 后通 过 excel 完成报表。15&&&&西北工业大学网络教育学院毕业论文3.2.5 系统管理添加用户系 统 管 理参数设置关于系统退出系统 图 3-8 系统管理流程图添加用户:系统用户分为:系统管理员级别的超级用户,一般用户即系统操 作员。管理员有添加操作员,添加和修改员工人事数据库中的重要数据的权限。 而一般用户没有添加操作员的权限,他们只具备一般的数据浏览,查询,统计, 报表,和少数数据的添加,修改等权限。 参数设置:该操作属于管理员权限的用户的操作权限。该模块的功能是设置 和修改员工工资表的相关工资系数,比如迟到一次的扣出多少,早退一次扣除多 少。该参数的设置直接影响员工的工资表。3.3 数据库设计“数据库”就是为了实现一定的目的按某种规则组织起来的“数据”的“集 合” 。它由一个称为数据库管理系统的软件进行管理。数据的存取方式独立于使 用它的应用程序。 数据库的主要特征: ? ? ? ? 数据共享 数据具有最小冗余度 数据的完整性 数据的安全性16&&&&西北工业大学网络教育学院毕业论文?数据的独立性 数据库结构的设计是软件开发的首要条件,设计较好、全面的数据库结构,对于软件开发来说是成功的基石,数据库结构设计不全面,会严重影响软件的开 发利用率与进程。3.3.1 数据库概念结构设计这一设计是在需求分析的基础上,设计出能够满足用户需求的各种实体,以 及它们之间的关系,为后面的逻辑结构设计打下基础。 本系统根据上面的设计规划出的实体有:员工实体、员工工资实体、工资等 级实体、部门岗位实体、工龄实体、公司福利实体。 实体与实体之间的关系 E-R 图如下图 3-9 所示:员工对应员工工资包含基 础 工 资岗 位 工 资加 班 工 资行 政 费 用考 勤 工 资对应对应对应对应对应工资等级部门岗位工龄行政扣除单位考勤图 3-9 实体与实体之间的关系 E-R 图17&&&&西北工业大学网络教育学院毕业论文3.3.2 数据库的逻辑结构设计将以上的 E-R 图转换成如下关系模式: 员工信息表(员工编号、姓名、部门、性别、民族、出生年月、政治面貌、 家庭住址、联系电话、毕业学校、最高学历、所学专业、职务、专业技术职称、 职称时间、个人简历、奖惩情况)。 员工业务档案表(员工编号、岗位编号、业务档案等) 。 员工考勤表(员工编号、迟到次数、早退次数、缺席次数、离岗次数、备注、 年月) 。 员工工资表(员工编号、基本工资、岗位工资、加班津贴、考勤工资、行政 性扣款、个人所得税、实发工资、年月) 。 依据上面的关系模式,设计数据库表如下: (1) 员工信息表(ygInfo):该表来记录员工基本信息。列名 员工编号(主键) 姓名 性别 部门 民族 出生年月 政治面貌 家庭住址 联系电话 毕业学校 最高学历 所学专业 职务 专业技术职称 职称时间 基本工资 奖惩情况 个人简历 数据类型 文本型 文本型 文本型 文本型 文本型 日期/时间型 文本型 文本型 文本型 文本型 文本型 文本型 文本型 文本型 日期/时间型 数字型 备注型 备注型 表 3-1 员工信息表 宽度 6 8 2 10 20 8 10 50 11 50 6 20 8 20 8 单精度 Meno Meno 可否为空 不能为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空 可为空(2) 业务档案表 (TBInfo):该表记录员工业务相关档案信息列名 数据类型 宽度 可否为空18&&&&西北工业大学网络教育学院毕业论文 员工编号(主键) 岗位编号 业务档案 文本型 文本型 备注型 不能为空 不能为空 不能为空6 20 Meno表 3-2 业务档案表(3)考勤表(attendanceInfo):该表记录员工考勤信息列名 员工编号(主键) 迟到次数 早退次数 缺席次数 离岗次数 备注 年月 数据类型 文本型 数字型 数字型 数字型 数字型 备注型 文本型 宽度 6 2 2 2 2 Meno 6 可否为空 不能为空 不能为空 不能为空 不能为空 不能为空 不能为空 不能为空表 3-3 员工考勤信息表(4)工资表(wageInfo):该表记录员工工资信息列名 员工编号(主键) 基本工资 岗位工资 加班津贴 考勤工资 行政性扣款 个人所得税 实发工资 年月 数据类型 文本型 数字型(单精度) 数字型(单精度) 数字型(单精度) 数字型(单精度) 数字型(单精度) 数字型(单精度) 数字型(单精度) 文本型 表 3-4 员工工资信息表 宽度 6 6 6 6 6 6 6 6 6 可否为空 不能为空 不能为空 不能为空 不能为空 不能为空 不能为空 不能为空 不能为空 不能为空19&&&&西北工业大学网络教育学院毕业论文(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 可否为空 不能为空 不能为空 不能为空 可为空20&&&&西北工业大学网络教育学院毕业论文 表 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)利用页21&&&&西北工业大学网络教育学院毕业论文对象显示数据访问页信息;(6)利用宏对象完成自动化工作;(7)利用嵌入模块实 现复杂功能。 ● ACCESS 数据库的构成 ACCESS 数据库是一系列数据基本表、表与表之间的关系、查询、窗体、报 表、页、宏和模块的集合,这些成分统一组织在一个以.mdb 为后缀的数据库文 件中。 这里重点介绍一下表与表之间的关系: 表是保存数据或信息的主要场所,它是一个二维表,二维表的行称为一个记 录,存储某个实体的整体信息,是表的基本单位。表的一列称为一个字段,存储 实体的一个属性的信息,是表的可访问的最小逻辑单位。表都应有至少一个关键 字,它可使表中的记录惟一。 在需求分析、概念结构设计的基础上得到数据库的逻辑结构设计之后,我们 就可以在 Visual Basic6.0 中实现该逻辑结构。实现方法和步骤如下: 以英文版本为例:通过菜单栏:Add-Ins→Visual Data Manager?点击出现 VisData 界面,点击菜单 File→New→Microsoft Access→Vision 7.0 MDB?弹 出保存数据库文件的存放位置和数据库的文件名的对话框,命名为 rsgz.mdb 保 存到当前系统存放的文件下。这时出现 Database Windows 设计界面,鼠标右键 选择新建表。 所设计的表的字段就是逻辑结构表中的列名。22&&&&西北工业大学网络教育学院毕业论文第四章 系统的详细设计数据库中的数据被用户利用的方式可以通过数据管理系统提供的操作功能 来使用,也可通过应用程序操作数据库。 应用程序是利用数据管理, 为解决某个具体的管理或数据处理的任务而编制 的一系列命令的有序集合。图 4-1 应用程序操作数据库图在本系统的后台数据库已经设计完成后, 现在就可以对系统分析阶段设计的 功能模块通过编码设计成一个应用程序, 最终来完成对数据库中数据的管理和应 用的目的。4.1 开发环境简介Visual Basic 是一个可视化的、面向对象的、采用事件驱动的结构化高级 程序设 计语言 ,它 具有 强大的 数据 库操作 功能 ,提供 了数 据管 理器(Data Manager) 、数据控件(Data Control) 、以及 ADO(Activex 数据对象)等强大工23&&&&西北工业大学网络教育学院毕业论文具,利用它能够建立多种类型的数据库并可以管理维护和使用这些数据。 当设计好系统的数据库结构后,就可以开始在 Visual Basic6.0 中开始设计 系统功能模块相应的窗体了。 设计窗体就是将前面分析得到系统的功能模块通过 在 Visual Basic6.0 设计出具体的窗体,通过窗体的操作来实现预订的模块的功 能。由于 Visual Basic6.0 是一种面向对象的编程软件,设计窗体和控件可以轻 松通过系统得到,所以编程的时可以集中精力来设计控件的事件。面向对象的编 程软件就是通过控件这种对象,发出不同的消息,去触发相应事件的发生。 在 Visual Basic6.0 中设计数据库管理系统从新建一个 Project 文件开始。图 4-2 Project 界面功能图即选择菜单:File→New Project 从而弹出如图所示的界面,选择 Standard EXE,单击 OK,系统此时创建了一个工程文件 Project1 和一个窗体 Form1。通过 菜单 File→Save Project。接下来就可以开始设计第一个窗体 Form1 了。4.2 系统界面的设计图 4-3 系统主界面图24&&&&西北工业大学网络教育学院毕业论文系统主界面主要有系统菜单和运行界面。 系统用户通过菜单的操作来完成系统设计的各项功能。 该界面提供的菜单如下表所示:员工基本信息 基本信息录入 基本信息维护 基本信息查询 基本信息统计 档案管理 档案录入 档案维护 档案查询 档案统计 评价管理 评价初始化 评价维护 出勤管理 月考勤表 考勤维护 考勤查询 加班维护 表 4-1 系统界面提供的菜单表 工资管理 月工资表 工资查询 系统管理 系数设置 添加操作员 岗位工资维护 退出菜单的设计是本窗体的重点,菜单设计的过程通过系统的菜单栏 Tools→ Menu Editor 进入菜单编辑器。添加如上图所示的菜单后,关闭菜单。回到该界 面窗体的。可以看到该窗体的上面已经有了这些设计的菜单,通过点击设计的菜 单栏,即可进入源代码设计环境,通过添加 clcik 事件源代码后,即完成了该窗 体的设计。4.3 员工基本信息录入窗体的设计本功能实现了人事管理过程,编程采用 ADODB.connection 和 mand 的 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。25&&&&西北工业大学网络教育学院毕业论文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 值为:男,女。按钮控26&&&&西北工业大学网络教育学院毕业论文件用来触发它们相应的事件的发生。 其中记载按钮的 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 Sub27&&&&西北工业大学网络教育学院毕业论文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.SetFocusExit Sub Else Text4.Text = Format(Text4.Text, &yyyy-mm-dd&) End If If Combo3.Text = && Then28&&&&西北工业大学网络教育学院毕业论文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 = && Then29&&&&西北工业大学网络教育学院毕业论文MsgBox &所学专业不能为空!&, vbOKOnly + vbExclamation, &警告& Text8.SetFocus Exit Sub End IfIf 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.SetFocusExit Sub Else Text10.Text = Format(Text10.Text, &yyyy-mm-dd&) End If If Text11.Text = && Then MsgBox &基本工资不能为空!&, vbOKOnly + vbExclamation, &警告&30&&&&西北工业大学网络教育学院毕业论文Text11.SetFocus Exit Sub End IfDim db As Connection Set db = New Connection db.CursorLocation = adUseClient db.Open &PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=rsgz.& 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.Text31&&&&西北工业大学网络教育学院毕业论文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 If Text1.Text = &&32&&&&西北工业大学网络教育学院毕业论文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 Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Left = (Screen.Width - Width) \ 2 Top = (Screen.Height - Height) \ 2 End Sub 通过该窗体的操作,系统可以完成对员工的基本信息的录入。录入后员工的33&&&&西北工业大学网络教育学院毕业论文基本信息的维护,包括信息的修改,删除,浏览,简单的查找等操作,可以通过 员工基本信息维护窗体来完成。4.4 员工基本信息维护窗体的设计通过上面的员工基本信息输入窗体可以得知,员工基本信息的输入窗体是 不具备数据的维护功能的, 员工的基本信息的维护功能是通过另外设计的窗体完 成的。图 4-5 员工基本信息界面图该窗体包括的控件有文本框和组合框,按钮等控件,文本框和组合框可以显 示数据库中员工基本信息表的记录,默认的记录定位为第一条记录,用户可以通 过按钮的导航,浏览数据库中其它记录。第一条,上一条,下一条,最后条的按 钮的 click 事件分别是将记录集进行移动,实现文本框,组合框的不同的显示。 导航按钮的事件源代码主要分别是:adoPrimaryRS.MoveFirst(移到第一条) , adoPrimaryRS.MovePrevious(移到上一条) ,adoPrimaryRS.MoveNext(移到下 一条) ,adoPrimaryRS.MoveLast(移到最末一条) 。 其它按钮还有修改按钮,添加按钮,删除按钮,查找按钮。分别实现信息表中的 数据的修改更新,添加信息,删除当前记录 ,实现简单的查找定位。 下面简单介绍查找定位按钮的 click 事件, 其它按钮的事件源代码可以参考 附件和程序。 事件源代码:34&&&&西北工业大学网络教育学院毕业论文a = Text14.Text adoPrimaryRS.MoveFirst Do While (adoPrimaryRS.EOF = False) If adoPrimaryRS.Fields(&员工编号&) && a Then adoPrimaryRS.MoveNext Else Text1.Text = adoPrimaryRS.Fields(&员工编号&) Text2.Text = adoPrimaryRS.Fields(&姓名&) ?? Exit Sub End If Loop If 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 员工业务界面设计该功能与上图功能十分相似,使得管理都觉似曾相识,这样就给初学者减 轻的心里的负担,从而很快地熟练该人事信息管理软件的使用。 本功能采用与人事档案相同对象编程技术,固源码得到了重用,这是软件工 程所提供的源码重用过程,这样不仅可以缩短开发周期及减少开发费用。从更早 的将人事信息管理系统投入到实际的应用中。如下图:35&&&&西北工业大学网络教育学院毕业论文图 4-6 早期人事信息管理系统图窗体的设计包括 2 个文本框和 1 个组合框, 其中 1 个文本框对应的字段由于 是备注型, 所以文本 框的属 性值设定 为: Multiline 属性设 置为 True。 , Scrollbars 的值设定为 2。 按钮的 click 事件和员工基本信息输入的界面按钮类似,不同是该按钮触发的 事件连接的数据库表是员工业务档案表,而上面是员工基本信息表而已。 通过该窗体的操作,系统可以完成对员工的档案信息的录入。录入后档案 的信息的维护,包括信息的修改,删除,等操作,可以通过档案信息维护窗体来 完成。该窗体的设计过程这里不再介绍。 具体代码如下: Dim WithEvents adoPrimaryRS As Recordset Private 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, &警 告&36&&&&西北工业大学网络教育学院毕业论文Text2.SetFocus Exit Sub End IfSet 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 IfadoPrimaryRS.Update MsgBox &记载成功!&, vbOKOnly + vbExclamation, & 提示&End IfText1.Text = && Text2.Text = && Combo1.Text = && End Sub Private Sub Command2_Click() Unload Me End Sub37&&&&西北工业大学网络教育学院毕业论文Private Sub Form_Load() Left = (Screen.Width - Width) \ 2 Top = (Screen.Height - Height) \ 2Set 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.Cancel End Sub4.6 创建考勤表员工的考勤是员工工资核算的重要的组成部分之一。 由于员工的考勤工资部 分是动态的, 也就是说相对其它的基本工资, 岗位工资而言, 每个月都是变化的, 所以为了科学管理、核算员工的考勤工资部分,这里分成二个子模块来完成员工 的考勤管理。这二个子模块是:创建考勤表,维护考勤表。下面先介绍创建考勤 表的设计过程。 下面是创建考勤表的界面图: 该窗体同时也完成浏览已经创建的考勤表的浏 览和报表功能。38&&&&西北工业大学网络教育学院毕业论文 图 4-7 系统考勤表界面图该窗体包括一个表格控件、一个文本框控件、一个组合框控件、四个按钮控 件。表格控件用来显示所设定的年月的员工的考勤表,比如设定 2000 年 1 月, 通过点击相关按钮触发事件的发生后,该表格就可以显示 2000 年 1 月的员工的 考勤记载表。用户可以通过该表格来浏览考勤西信息,但是不能通过表格显示的 数据来修改信息,信息的修改可以通过考勤信息维护窗体的功能来完成。文本框 控件用于输入年,组合框用于选择考勤的月份。创建/浏览考勤按钮的 click 事 件:根据输入的年、月在考勤表中查询,如果记录集为空,则表明该月的考勤表 还没有创建,则开始创建考勤表,初始化的数据中迟到次数、早退次数、缺席次 数等为 0,考勤记录以后可以通过考勤维护窗体对该员工的出勤情况进行修改。 如果记录集非空,则表明该月的考勤表已经创建,那么统给出提示后用户可以浏 览。通过记录集来创建考勤表的原理如下:当用记录集来完成了对考勤表按照年 月为查询条件查询后,如果记录集为空,通过 adoPrimaryRS.AddNew 语句来对记 录 集 增 加 一 条 员 工 记 录 , 接 着 设 置 adoPrimaryRS.Fields(& 员 工 编 号 &) , adoPrimaryRS.Fields(&迟到次数&),等记录集的字段值,再通过一个循环语句 逐一完成上述的每位员工的操作, 这样就完成了对考勤表的设定的年月的数据值 的创建。 导出到 excel 按钮的 click 事件将记录集中的数据导出到 excel 表中实 现报表打印。 具体代码如下: Dim WithEvents adoPrimaryRS As Recordset Dim 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.Text39&&&&西北工业大学网络教育学院毕业论文c = a & bSet adoPrimaryRS = New Recordseta = Text1.Text adoPrimaryRS.Open &select * from kqinfo where db, adOpenStatic, adLockOptimistic If adoPrimaryRS.EOF Then Set adoPrimaryRS1 = New Recordset adoPrimaryRS1.Open &select * from ygInfo &, db, adOpenStatic, adLockOptimistic 年月='& & c & &'&,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 Else40&&&&西北工业大学网络教育学院毕业论文MsgBox & 该 月 考 勤 表 已 经 创 建 , 确 认 开 始 浏 览 ! &, vbOKOnly + vbExclamation, &警告& End If adoPrimaryRS.CloseadoPrimaryRS.Open &select kqinfo.员工编号,yginfo.姓名,kqinfo. 迟到次数,kqinfo.早退 次数,kqinfo. 缺席次数,kqinfo.离岗 次数,kqinfo.备 注,kqinfo.年月 from kqinfo,ygInfo where kqinfo.员工编号=yginfo.员工编 号 and kqinfo.年月='& & c & &'&, db, adOpenStatic, adLockOptimisticWith 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)41&&&&西北工业大学网络教育学院毕业论文Next jadoPrimaryRS.MoveNext LoopEnd With Command3.Enabled = TrueEnd 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) = &年月&42&&&&西北工业大学网络教育学院毕业论文adoPrimaryRS.MoveFirst i = 0 Do While (adoPrimaryRS.EOF = False)For j = 0 To adoPrimaryRS.Fields.Count - 1xlsheet.Cells(i + 2, j + 1) = adoPrimaryRS.Fields(j) Next j adoPrimaryRS.MoveNext i = i + 1 Loop Set xlapp = Nothing Set xlbook = Nothing End SubPrivate Sub Command3_Click() Text1.Text = &输入年& Combo1.Text = &选择月& With myFlexGrid .Rows = 2End With adoPrimaryRS.Close Command3.Enabled = False End SubPrivate Sub Command4_Click()43&&&&西北工业大学网络教育学院毕业论文Unload Me End SubPrivate Sub Form_Load() Left = (Screen.Width - Width) \ 2 Top = (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 With End SubPrivate Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)End SubPrivate Sub Text1_Click() Text1.Text = &&44&&&&西北工业大学网络教育学院毕业论文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 ?? 来对考勤表中该员工的在输入年月的情况下查询,如果记录集为空,则表明45&&&&西北工业大学网络教育学院毕业论文该考勤表中还没有该考勤记录存在,所以还不能进行考勤维护。需要先创建相应 的考勤表后来维护。 如果记录集非空, 则根据复选框的值来进行考勤字段的维护。 具体就是在考勤字段的基础上加 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(&离岗次数&) = End If 次 数 &) =次数&)=次数&)=Text3.Text4.8 员工工资表窗体的设计通过管理人员输入年、月,系统即可生成当月的员工工资表。如果输入的年 月工资表已经生成,则系统给出提示,并可以浏览当月工资表。图 4-9 员工工资表浏览界面图书馆该窗体包括一个表格控件、一个文本框控件、一个组合框控件、四个按钮控 件。文本框控件用于输入年,组合框用于选择工资的月份。创建/浏览月工资表 按钮的 click 事件:根据输入的年月在工资表中查询,如果没有该月的工资则系 统开始创建该月的员工工资记录。创建时需要根据员工基本信息表中的基本工46&&&&西北工业大学网络教育学院毕业论文资、考勤表的该员工编号的考勤工资、加班表中的该员工编号的加班工资、业务 档案表中的岗位工资、 系数表中的工资系数进行计算分别得出员工的工资表中的 每项记录。最后生成的工资项有:员工号、姓名、基本工资、岗位工资、加班津 贴、考勤工资、行政性扣款、应发工资、个人所得税、实发工资、年月。应发工 资最后实现的语句: 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 Recordset Dim WithEvents adoPrimaryRS1 As Recordset Dim WithEvents adoPrimaryRS2 As Recordset Dim WithEvents adoPrimaryRS3 As Recordset Dim WithEvents adoPrimaryRS4 As Recordset Dim WithEvents adoPrimaryRS5 As Recordset Dim WithEvents adoPrimaryRS6 As Recordset Private Sub Command1_Click() If Text1.Text = &输入年& Or Combo1.Text = &选择月& Then MsgBox &年月不能为空!&, vbOKOnly + vbExclamation, &警告&47&&&&西北工业大学网络教育学院毕业论文End a = b = c =Exit Sub If Text1.Text Combo1.Text a & bSet adoPrimaryRS = New RecordsetadoPrimaryRS.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(&员工编号&)48&&&&西北工业大学网络教育学院毕业论文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.AddNewadoPrimaryRS.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(&平时加班&) Else49&&&&西北工业大学网络教育学院毕业论文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(& 实 发 工 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 If50资&)=X-&&&&西北工业大学网络教育学院毕业论文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 Sub Private Sub Command2_Click() Dim i As Integer, j As Integer51=&&&&西北工业大学网络教育学院毕业论文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 - 1xlsheet.Cells(i + 2, j + 1) = adoPrimaryRS.Fields(j) Next j adoPrimaryRS.MoveNext i = i + 1 Loop Set xlapp = Nothing Set xlbook = Nothing End Sub Private Sub Command3_Click() Text1.Text = &输入年& Combo1.Text = &选择月& With myFlexGrid .Rows = 2 End With52&&&&西北工业大学网络教育学院毕业论文adoPrimaryRS.Close Command3.Enabled = False End Sub Private Sub Command4_Click() Unload Me End Sub Private Sub Form_Load() Left = (Screen.Width - Width) \ 2 Top = (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) = &行政性扣款& .TextMatrix(1, 7) = &应发工资& .TextMatrix(1, 8) = &个人所得税& .TextMatrix(1, 9) = &实发工资& .TextMatrix(1, 10) = &年月& End With End SubPrivate Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single) End Sub Private Sub Text1_Click() Text1.Text = && End Sub53&&&&西北工业大学网络教育学院毕业论文第五章 系统测试5.1 测试概述为了保证人事工资管理系统的各项功能可靠的实现,特编写了此测试计划, 对所开发软件的各功能模块和事例系统进行测试。 本测试计划供程序员在程序测 试阶段参考,在系统测试阶段提供测试依据。本测试计划主要用于发现系统开发54&&&&西北工业大学网络教育学院毕业论文过程中出现和各种不妥判之处, 发现软件设计中的错误, 要求的测试环境是 BASIC 6.0 测试条件是各数据库文件框架已经建立,内容为空。5.2 测试计划【测试方案】 测试工件为四个阶段:单元测试、组装测试、确认测试、系统测试。 单元测试:采用白盒法和黑盒法相结合的方法,对于逻辑结构复杂的模块采 用白盒法,对于以输入、输出为主的模块采用黑盒法测试,以提高测试的效率。 组装测试:自底向上的增式测试。 确认测试:由用户参与按需求规格说明书验收。 系统测试:采用人工测试方法。 【测试项目】 (1) 系统环境模块测试 本测试是为了检测系统环境模块,数据连接是否正确,数据能否正确,并进 行仔细核对。 预计测试时间:5 小时 (2) 基本信息和工资模块测试 基本信息和工资模块是本系统的二个重要模块, 本模块能否正确运行关系到 系统设计成败的关键,所以有必要专门对这二个之模块进行严格的测试。以弥补 设计过程中的不足。及早发现和修改问题。 预计测试时间:6 小时。 (3) 查询模块的测试 所有的数据库管理软件设计的目的之一都是为了人们提供快捷方便的数据 查询功能,查询设计的是否合理和正确是系统的又一关键之所在。 预计测试时间:4 小时。 【实例测试】 下面对开始对工资管理模块进行单元测试: 准备数据如下:员工编 姓名 性别 部门 民族55住址毕业学学历基本工&&&&西北工业大学网络教育学院毕业论文号 002 100003 ? 武松 刘备 王五 ? 男 男 男 ? 保安 财会 财会 ? 汉族 汉族 汉族 ? 北京 1 北京 2 北京 3 ?校 北大 清华 科技 ? 本科 本科 本科 ?资 00 ?表 5-1 工资管理模块表测试目的:对基本管理模块中浏览、添加、修改,删除等子功能模块实现情 况进行测试。 测试过程:当新建数据库后,图书表是空的,所以: 第一步:测试添加功能的之模块。经过测试,系统可以正确完成添加图书信 息。 第二步:测试浏览子模块:将上面准备的数据添加到数据库后,就可以测试 浏览子功能模块。 测试时未发现问题。可以正确实现最首,上一条,下一条,最末等浏览导航 显示。 第三步:测试修改子模块,在运行的窗体中对数据进行修改,保存。修改功 能正常。 第四步:修改删除子模块:删除记录测试时分别对数据记录中间,首,末等 进行删除测试, 并且测试结合浏览模块测试。 在测试中发现当数据库记录非空时, 对中间,首,末记录删除时都达到预期的效果,但是在删除最后一条记录后即当 数据库空时, 窗体运行出错。 分析原因, 是编码时忽视了当数据库为空时的考虑。 经过测试,修改,再测试,再修改??,最后完成了对图书信息模块的单元 测试。 按照同样的测试步骤, 在相应的测试数据的支持下, 完成了所有模块的单元测试。 集成测试: 集成测试是组装软件的系统技术,例如,子系统测试即是在把模块按照设计 要求组装起来的同时进行测试,主要目标是发现与接口有关的问题。例如:数据 穿越接口时可能丢失,一个模块对另一模块可能有由于疏忽而造成有害影响。把 子功能组合起来可能不产生预期的主功能, 个别看来是可以接受的误差可能累积56&&&&西北工业大学网络教育学院毕业论文到不能接受的程度,全程数据结构可能有问题等等,不幸,可能发生的接口问题 夺得不胜枚举。 集成测试的方案:自顶向下结合,自顶向下结合方法是一个日益为人们广泛 采用的组装软件的途径,从主程序开始,沿着软件的控制层次向下移动,从而逐 渐把各个模块结合起来。 测试方案如下图所示:主程序员 工 信 息 模 块考 勤 信 息 模 块工 资 管 理 模 块浏 览 子 模 块添 加 修 改 模 块删 除 子 模 块查 询 报 表 模 块图 5-1 集成测试方案图在集成测试中,重点测试员工基本工资,工资其它系数,考勤情况对工资生 成的计算和生成是否准确, 以及由于这些相关工资对员工最后工资生成的影响和 容错性的测试。 其它测试方法我们这里不再叙述。5.3 测试结果分析因为在测试过程中大量采用了黑盒测试,且以等价类划分原则选取测试用 例,所以测试不够全面,过于简单,建议在实际操作过程中应采用多条多方面的57&&&&西北工业大学网络教育学院毕业论文测试。测试结果表明软件的各主要的功能均能基本实现,测试中出现的一些小问 题不足以影响整个系统工作,可在短期内解决。对于测试分析报告中的问题,可 以在软件维护阶段加以完善。该软件基本可以投入使用。结 语通过开发本系统,我较全面的掌握了 VB 的基本知识和编程技巧,并在开发 过程中我的 VB 开发能力得到了进一步的提高。如:更进一步的深入 ADO 数据对 象技术,SQL 语言的使用;以前学过的软件工程知识、数据库原理及操作也得到 了充分的应用。 在开发过程中我学到了一些经验: 系统分析的好坏将决定着的系统开发成功 与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编 程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文 档等。然后再开始编写程序代码,这样做到每写一步代码心底有数,有条不絮。 当然也有些还需待继续深入地方如:COM 技术等。58&&&&西北工业大学网络教育学院毕业论文此外,我还觉得,我个人在这次设计中走了很多弯路。主要是因为平时很少 接触软件开发工作,尽管相关理论考试已经通过了,但在应用方面缺乏经验,如 果及时得到老师或专家的指点,象这样的系统开发起来应该还比较容易。参考文献[1] 郑阿奇.Visual Basic 实用教程.电子工业出版社. [2] 温贤发.Visual Basic 6.0 使用指南 .电子工业出版社. [3] Craig Eddy ,Timothy Buchanan.中文 Access 2003 24 学时教程 .机械工 业出版社. [4] 杜军平,黄杰.Access2000 数据库开发.北京机械工业出版社.2002. [5] 张树兵. Visual Basic 6.0.清华大学出版社.2002. [6] 刘云生.数据库系统概论.华中理工大学出版社.2004. [7] 韩润春,佟志臣,王汉新.管理信息系统.河北人民出版社.2003.59&&&&西北工业大学网络教育学院毕业论文致 谢感谢我的指导老师在课题的研究上大力支持和指导。在此表示衷心的感谢。 他认真负责的工作态度、严谨的治学风格,使我深受启发;同时也感谢其他老师 及同学们给我的指导和帮助, 以及给我提供的良好的开发环境, 在他们的帮助下, 我才能完成这个系统。 在此感谢所有给予我帮助的老师、同学们!60

我要回帖

更多关于 出勤表格式范本 的文章

 

随机推荐