工资管理系统概述_第1页
工资管理系统概述_第2页
工资管理系统概述_第3页
工资管理系统概述_第4页
工资管理系统概述_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 工资管理系统概述1.1系统的主要功能工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、增加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,快速打印出工资报表,针对系统服务对象的具体要求,设计了工资管理系统。工资管理系统主要有以下几大功能:(1)对职工的工资进行计算、修改。可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算应发金额、应扣金额及实发金额等。(2)查询功能。要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某部门工资数在某一范围的职工的工资情况等(3)报表打印功能。每月发放工资时

2、,要求能够打印本月的工资表、随工资发给每个职工的工资条以及工资统计表1.2系统的设计技巧本工资管理系统是采用面向对象的程序设计思想进行编制的,整个系统由若干个表单、类、报表以及一个主菜单组成,有项目管理器统一管理全部程序的编写和调试。用户可以通过主菜单或总表单调用系统的各项功能。1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因

3、此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。4、面向对象设计的核心是类的设计。例如:可以定义一个“工资查询表单”类,该类中可以定义查询的姓名、年龄、jr资等等信息,则以此类为原型可以

4、设计出众多的“工资查询表单”类的对象实例,这些实体都具有类中所定义的特征。5、设计的工资管理系统也是建立在一系列类基础之上的,其编程的思想是:先根据一定的需要创建一系列的子类或直接调用vfp提供的基类,编制程序时,由这些类派生出相应的对象,所派生出的对象继承了其父类所有的功能,而且具有很好的封装性,这样就可利用派生出的对象像搭积木一样来设计自己的程序。打个比方,就比如要制造一台机器,首先要制造各种零件的模具,然后用制造好的模具生产出所需的零件,所有这些做完后,剩下的就只是如何把这些零件组装起来,这样一台机器就很容易制造出来了。实际编程也是如此。每个表单都是由一定数量的对象按某一种方式组合在一起

5、的,程序编制的核心是类的设计。1.3据库技术的现状与发展数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论和时间上都得到了和很大的发展。现在,数据库是数据处理的主要工具,是管理信息系统(MIS)的核心部分。数据库系统是当今计算机信息系统的核心,是计算机技术和应用发展的关键。传统的数据库系统旨在处理永久、稳定的数据,强调维护数据的完整性、一致性。数据库理论与技术的发展极其迅速,其应用日益广泛,在当今的信息社会中,它几乎无所不在。以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得了极大成功。计算机世界报社与IBM公司联合举

6、办了”21世纪数据库技术发展专家研讨会”。IBM DB2的创始人Donald Haderle先生与国内著名数据库专家,就下世纪数据库发展的趋势、数据库领域革命性的突破、IBM DB2的应用、数据仓库的实施、我国据库技术和应用的现状及趋势、我国数据库用户的需求等问题,进行了广泛而深入的讨论。1.4数据库系统的选择原则 (1)数据库系统采用易于集成的,开放的技术。 (2)产品质量优异,可靠性高,适于长期运行,能支持关键应用。 (3)数据安全,保安型高。 (4)能提供分布式数据库功能。 (5)支持多种开发环境,软件开发容易。(6)扩充性和升级能力强。1.5系统开发工具的选择现在市场上有很多管理系统的

7、开发工具,如:Visual basic、delphi、ASP等等,数据库开发工具又有很多种,如:Access,SQL Sever,Oracle等等。这些都是很出色的管理信息系统及数据库的开发工具。不过Visual foxpro6.0有着以下几项特点:Visual foxpro是microsoft公司推出的全新的pc平台关系数据库管理系统。它具有强大的性能、无与匹敌的速度、完整而丰富的工具、及其友好的图形用户界面、简单得数据存取方式、良好的兼容性、独一无二的跨平台特性及真正的可编译性,是系统成为目前最快、最完美的数据库系统。不但兼容早期的dbase以及foxbase各种版本,同时还提供了许多基于

8、windows的崭新功能。Visum foxpro作为具有windows95兼容标志的应用软件,具有快速开发应用程序、面向对象和客户机服务器的强大功能,它是多年来出现在关系数据库方面最重要的产品。随着桌面操作系统有windows98逐渐向windowsXP升级的发展潮流,visual foxpro必将成为今后数据库产品中的主流。Microsoft visual foxpro是一个32位的数据库开发:系统可运行window98和windowsxp操作系统。Visual foxpro既具有Visual系列的功能强大、直观易用、面向对象等优点,又兼具windows和foxpro的长处。提供了“向导”

9、、“设计器”和“生成器”等工具,使的数据库的管理工作变的容易。Visual foxpro的易用性使初学者和那些想避免涉及foxpro复杂命令的人能很快用它来管理自己的数据库,制作各种报表、标签等;增添的面向对象的编程方式等新特色,使它成为应用程序开发人员强有力工具:其兼容性使原来的广大Xbase用户能迅速转为使用visual foxpro;visual foxpro还能广泛地与其他许多软件共享和交换数据。正是由于其易用性、先进性和广泛性,使Visual foxpro真正做到了面向各种水平的用户。(1)简单,易学,易用快速完成应用任务Visual Foxpr060提供了向导,生成器和设计器三种工

10、具,这三种工具都使用图形交互界面方式,使用户能够最简单而义最快速地完成数据操作任务。操作向导提供了用户要完成某一项任务所需的详细地操做步骤,在这些步骤的指导下,用户可以一步步地很简单完成任务。例如:此工资管理系统中的各项工资数据输入的表单就是用表单向导和生成器来制作的。生成器也是一种具有友好界面的图形工具,它的主要功能是在用户自己的应用程序中加入一定的控制功能,例如列表框生成器就是一个带有标签的对话界面,利用列表框,生成器,用户可以在窗体中设计出一个列表框,并且可以在这种生成器中设计一个列表框的共同特征,如有手写输入,可以加入到表单中去,减少用户输入繁琐的,大量的工作,用户只要从列表下拉框中选

11、择即可,本系统在查询设置均使用了这种方法。如果用户想突破向导和生成器本身的限制,想要自己对应程序进行更复杂或更灵活的控制,可以利用另一种Visual Foxpro60提供的方便有效的工具设计器,设计器也提供了一个友好的图形应州程序开发接口,通过它对用户能建立起白己的应用程序。例如:用户可以用窗体设计器定义和生成一个窗体,用数据表设计器定义和生成一个数据表。使用方便的工具栏象许多其他Microsoft产品一样,Visual Foxpr06.0也给用户提供了使用方便的工具栏,工具栏里有许多按钮,他们代表着菜单里的某些选项。一般来说,用户经常执行的操作或使用的对象多对应一个按钮,用户可以通过选择这些

12、按钮方便而迅速地完成操作,而不必通过菜单选项。不编程而建立应用程序界面Visual Foxpro6.0提供的窗体设计器是一种功能强大的工具,用户能够不编程或使用很少的代码来实现友好的交互式应用程序界面以及对界面的控制。例如:用户可以用栅格控制很容易地建立一对多的窗体;,用户只需把一个数据表拖到一个窗体上就可以了。也可以利用页格式控件来建立有标签的对话框话或用户自己的生成器界面。用项目管理器统一界面visual Foxpro6.0提供的另一高效易用的工具是项目管理器。通过项目管理器,用户可以集中地管理数据,文档,类库,源代码等各种资源。例如用户可以建立和更新数据库,设计或改变窗体和报表,定义或改

13、变类库,生成或重新生成自己的应用程序。另外,用户也可以在项目管理器中使用 Visual Foxpr06.0提供的简单而有效的其他工具,如向导,生成器,工具栏等。所有这些,使用户能够对工作进行集中管理而又简单有效。(2)功能更强大VisualFoxpro6.0比以前的数据库管理系统具有更强大的功能。它通过使用快速查询技术和对系统的优化而使用户最大限度地体会到Visual Foxpro6.0快速而又功能强大的优点。具有面向对象编程的能力Visual Foxpro6.0在支持标准的Xbase传统编程方式的同时,也提供了完全的面向对象编程的能力。在Visual Foxpro6.0的对象模式下,用户可以

14、利用所有的面向对象编程特性,这些特性包括继承,封装,多态性以及分类,他们都作为用户所熟悉的Xbase编程语言的扩展集两实现。Visual Foxpro6.0提供了一套基类,包括窗体、工具栏、页格式等,使用这些类,用户可以建立基本的窗体、工具栏、页格式,这样就可以一方面减少用户编程工作量,另一方面又加快程序开发过程。再进一步,用户可以将自己定义的类再进行分类,这样可利用用户已有的代码或窗体。例如,用户可以将基本的窗体类再进行分类而建立自己的子类,这个子类将根据用户的要求自动地在应用程序中建立起一个用户希望看到的窗体,它的结构是由用户分类来决定的。Visual Foxpro6.0类模式能够在用户应

15、用程序中对对象进行深入而全面的控制,例如用户在设计时可用窗体设计器对窗体中的对象进行完全的控制,二类模式下当用户运行程序时客队窗体中的表现和行为提供相同的控制。在Visual Foxpro6.0中,用户可以用类设计器交互式地建立一个类,或者用DEFINECLASS命令来编程建立。更容易处理事件Visual Foxpro6.0包含一种事件模式,它能够帮助用户自动地处理事件。在这种事件模式下,用户可以获取并控制所有标准的WINDOWS Visual Foxpro6.0事件,例如鼠标的移动,通过处理这一事件,用户可以拖动和放置一个对象,用户可以用两种方式来控制事件:一种是通过特性窗体来可视地控制;另

16、一种是通过Visual Foxpro6.0的编程语言来控制这两种方法都能使用户很容易的建立起完全的事件驱动应用程序而不用考虑READ层次及浏览窗口限制,也不用编写事件处理程序。最优化系统Visual Foxpro6.0能通过优化用户的实际来提高自身的性能。在所有的优化措施中,做有效的方法是尽可能多地增加用户的扩展内存或减少被其他程序所占用的内存。其余的提高Visual Foxpro6.0性能的措施包括加快启动速度和优化设置指令。使用快速查询技术快速查询技术是一种专用的数据查询技术,他能够迅速从数据库中选择出一组满足用户要求的记录。使用这种即使能将数据查询所需的时间大大缩短,这样可以极大的提高数

17、据查询效率。真正的数据库概念以前的Xbase软件中称.DBF文件为数据库,使人容易产生一个数据库就是一个二维表的错误认识。而visual foxpro废除了以前Xbase不合理的数据库概念,采用独特的数据库容器,为用户管理应用系统中的表、查询、表单、报表、程序等数据提供了方便,支持长数据库文件名和字段名设置的显示标题,为字段指定默认值,设置字段级和记录级的有效性规则,设置表的插入、删除和改变记录的触发程序得集合,合理得体现了关系型数据库的思想与关系数据库理论统一了起来。新的数据库把有关系的表封装在一起,关系清晰、合理且处理方便。Visual Foxpro由于使用了这种真正的数据库概念,使得它数

18、据库结构与sql等标准结构统一,从而使数据库的实现更加标准、合理、方便。可视化编程技术Visual Foxpro用于visual c+、visual basic同样的编程技术,这是他取名为Visual foxpro的原因。可视化编程技术给人一种所见即所得的感受,在您编辑屏幕表单、报表、菜单时,可以直接运行,不必来回调试,极为方便。新增许多命令和函数,功能大大加强,sql语句更加丰富增加了7种新的字段类型:整型、货币型、日期时间型、双精度型、通用型、二进制型和二进制备注型。在结构化的复合索引中可以建立4种类型的索引:主索引、候选索引、普通索引和唯一索引。允许在表中使用空值null,以保证与采用s

19、ql标准的数据库管理系统的兼容和数据共享。32位方式Visual Foxpro使用32位方式,其运算速度、存储能力大大提高。第二章 系统分析2.1系统目标工资管理系统所要达到的目标就是要对工资管理的日常的工资发放进行数据输入,并对各项工资条款进行计算。汇总各项数据生成员工个人台帐,打印工资报表。采用用户名,密码安全机制,分用户权限登陆访问,保证系统资源不受人为因素的干扰。2.2系统可行性分析研究可行性研究的目的使用最小的代价在尽可能短的时间里确定问题是否能解决,通过复杂系统的规模与目标,研究与此类似的系统后,因此此我们主要从技术和经济两个方面来进行分析:(1)技术上的可行性由于对企业工资管理系

20、统这一类的企业财务系统进行开发已有一定的时期,有很多成功的实例,技术基础也已经非常雄厚,因而技术上的准备应该不成问题。(2)经济上的可行性由于对企业工资管理系统是一个比较小型的系统,要开发的话从人力、物力、财力方面来说都是可行的。2.3需求分析对用户需求的分析应该全面、深入、发展,全面是指考查由M I S管理的信息是否有纰漏,必须保证各静态、动态信息的完全;深入是指对信息的内容、结构、含义、变换、生存周期的分析和认识;发展是指对信息未来发展变化的预测,因为信息在某个系统、机构内的变化往往存在着自身特有的发展规律,需求分析应该遇见这种规律,否则就会缩短MIS的使用寿命。为了保证需求分析的完备性,

21、就必须保证需求分析的时间。2.4系统功能模块图本系统在设计时采用自顶向下的设计方法,主要是通过系统界面上的菜单来调用各个表单,系统的功能模块本结构图如图所示:图 2-12.5系统功能要求及说明整体结构合理,风格一致,模块化结构,界面清晰,接口灵活,操作简便。开发方法,文档规范化,便于管理,可扩充。完善的数据输入,维护,输出。自检性能高,用户误输、错输均有提示。容错性能高,某个用户的操作错误不会引起整个系统的瘫痪,每一功能的操作都有信息。提示以免重复操作,错误操作有警告,以便用户及时改正。本系统大致分为如下四大功能模块。1.登陆模块分为登陆界面和用户登陆注册,新用户可以现在用户注册登陆界面进行注

22、册后再登陆,而已经注册的用户可以直接进入登陆界面登陆,进入系统。2.个人工资查询此查询分为按职工姓名查询、按职工号查询。同时相关的信息以表的形式显示。3.修改包括对基本工资、岗位工资、工龄工资的设定。基本工资的设定包括工资等级、工资额的设定,可以对工资等级及相应的工资额进行修改、添加、删除。岗位工资的设定包括岗位名称、岗位工资额的设定,可以对岗位名称及相应的岗位工资额进行修改、添加、删除。工龄工资的设定包括工龄、工资额的设定,可以对各个工龄段及相应的工龄工资额进行修改、添加、删除。备份此备份分为备份记录和照片上传。退出此功能块为退出系统。进入退出界面。第三章 详细设计与实现下面是针对我的设计过

23、程进行的阐述,具体包括登陆模块、数据库表、数据库的索引、数据库的查询、数据库的维护、菜单、退出模块的实现。3.1登陆模块的设计主界面图3-1表单的代码为:LPARAMETERS nButton,nShift,nXCoord,nYCoord clear screen clear events set defa to d:qygz open database databasesalary do salarymain.mpr do form salaryformksjm read events if nButton=l do form forms用户登陆.SCX thisform.release e

24、ndif主界面上显示了一些设计信息,通过运行程序主界面来运行登录表单。2.用户注册与登陆(1)注册图3-2 “确定” 按钮有关代码:use 用户资料.dbfif len(alltrim(thisform.text1.value)>0INSERT INTO 用户资料(用户名,口令); VALUES(ALLTRIM(THISFORM.TEXT1.VALUE),ALLTRIM(THISFORM.TEXT2.VALUE)USE IN 用户资料messagebox("恭喜你,你已注册成功了!请记住:"+chr(13)+"你的用户名:"+ALLTRIM(THI

25、SFORM.TEXT1.VALUE)+" "+chr(13)+" 你的密码为:"+ALLTRIM(THISFORM.TEXT2.VALUE)+" ",64,"成功")RELEASE THISFORMELSEmessagebox("你试入的资料不能这空,"+chr(13)+"请重新输入!",16,"出错")ENDIF“取消” 按钮有关代码:thisform.release当用户在注册表中输入用户名和口令如果输入的字符不等于零那么弹出对话框显示“恭喜你,你已注

26、册成功了!请记住你的用户名和口令”。如果输入的用户名字符长度为零,那么弹出对话框显示“你填入的资料不能为空,请重新输入!”(2) 登陆图 3-3“确定” 按钮有关代码:USE 用户资料LOCATE ALL FOR ALLTRIM(用户名) = ALLTRIM(THISFORM.TEXT1.VALUE) .AND. ALLTRIM(口令) = ALLTRIM(THISFORM.TEXT2.VALUE)IF FOUND()do form forms数据操作.scxUSE IN 用户资料THISFORM.hideelsea=a+1MESSAGEBOX("用户验证失败",16,&q

27、uot;失败信息")thisform.setall("value"," ","textbox")USE IN 用户资料ENDIFif a=3MESSAGEBOX("你已经输入密码出错3次了,程序将被关闭!",16,"超时退出")quit(0)endif“新用户注册” 按钮有关代码do form forms新用户注册.scx“退出” 按钮有关代码:n=messagebox("确实要退出吗?",65,"退出")if n=1do form forms退

28、出界面.scxthisform.releaseendifthisform.refresh3.2 数据库设计在设计数据库之前先来认识一下概念数据模型,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是

29、设计数据库结构的基础。概念设计中自顶向下的实体分析方法,即常用的实体联系模型(简称ER模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。E-R模型是建立概念性数据模型的有力工具。本系统一共用到了3个表。如下:工资记录表(工资记录.dbf)(包括职工号,姓名,基本工资,效益工资,退休保险,津贴,工作日期,工龄工资,岗位工资,部门,病假扣款)用户资料(用户资料.dbf)(包括口令,用户名)职工资料(职工资料.dbf)(包括出生日期,家庭地址,性别,手机号码,职工号,姓名)。图 3-4 为本系统中工人信息的实体集及有关属性的图例:员工手机号码性别出生

30、日期家庭住址职工号姓名图 3-53.2.2 实体和实体之间的关系E-R图如图3-6部门工资工龄属于具有工作员工具有工资结构薪水账目具有1:N1:N图 3-63.3数据索引的建立下面以“职工工资”数据库中的“工资记录”表为例来介绍索引的过程。先在项目管理器中选择“工资记录”表,然后单击右边的“修改”按钮,打开表设计器,单击“索引”标签,打开“索引”选项卡。在“索引名”中键入索引的名称如“职工号”、“姓名”等。在“类型”中选择是“普通索引”还是“主索引”。在“表达式”中键入表达式如“职工号”、“姓名”等。建好后如图所示:图 3-73.4查询模块的设计主界面如下图:图 3-8以下是有关程序的代码:1

31、.Text1.InteractiveChange 事件代码:set safety offset exact off store " " to str1,str2store " " to mark1,mark2ZGH=alltrim(thisform.pageframe1.page1.text1.value)XM=alltrim(thisform.pageframe1.page1.text2.value)str1=thisform.pageframe1.page1.label5.caption+"="+mark1+ZGH+mark2st

32、r2=thisform.pageframe1.page1.label6.caption+"="+mark1+XM+mark2thisform.pageframe1.page1.grid1.recordsourcetype=4if len(ZGH)>0thisform.pageframe1.page1.text2.value=" "thisform.pageframe1.page1.text2.backcolor=rgb(192,192,192)thisform.pageframe1.page1.text1.backcolor=rgb(255,255

33、,255)SET FILTER TO &&筛选数据thisform.pageframe1.page1.grid1.recordsource="select * from 工资记录 where "+str1+" into dbf 查询结果"thisform.pageframe1.page1.label7.caption="你当前输入的条件是:"+str1+" " endifif len(XM)>0thisform.pageframe1.page1.text1.value=" "

34、;thisform.pageframe1.page1.text1.backcolor=rgb(192,192,192)thisform.pageframe1.page1.text2.backcolor=rgb(255,255,255)SET FILTER TO &&筛选数据thisform.pageframe1.page1.grid1.recordsource="select * from 工资记录 where "+str2+" into dbf 查询结果"thisform.pageframe1.page1.label7.caption=

35、"你当前输入的条件是:"+str2+" "endifGO TOPTHISFORM.REFRESH2.Text2.InteractiveChange 事件代码:set safety offset exact off store " " to str1,str2store '"' to mark1,mark2ZGH=alltrim(thisform.pageframe1.page1.text1.value)XM=alltrim(thisform.pageframe1.page1.text2.value)str1=

36、thisform.pageframe1.page1.label5.caption+"="+mark1+ZGH+mark2str2=thisform.pageframe1.page1.label6.caption+"="+mark1+XM+mark2thisform.pageframe1.page1.grid1.recordsourcetype=4if len(ZGH)>0thisform.pageframe1.page1.text2.value=" "thisform.pageframe1.page1.text2.backcol

37、or=rgb(192,192,192)thisform.pageframe1.page1.text1.backcolor=rgb(255,255,255)SET FILTER TO &&筛选数据thisform.pageframe1.page1.grid1.recordsource="select * from 工资记录 where "+str1+" into dbf 查询结果"thisform.pageframe1.page1.label7.caption="你当前输入的条件是:"+str1+" "

38、; endifif len(XM)>0thisform.pageframe1.page1.text1.value=" "thisform.pageframe1.page1.text1.backcolor=rgb(192,192,192)thisform.pageframe1.page1.text2.backcolor=rgb(255,255,255)SET FILTER TO &&筛选数据thisform.pageframe1.page1.grid1.recordsource="select * from 工资记录 where "+

39、str2+" into dbf 查询结果"thisform.pageframe1.page1.label7.caption="你当前输入的条件是:"+str2+" "endifGO TOPTHISFORM.REFRESH查询模块的功能是即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某部门工资数在某一范围的职工的工资情况等,快速查询技术是一种专用的数据查询技术,他能够迅速从数据库中选择出一组满足用户要求的记录。使用这种即使能将数据查询所需的时间大大缩短,这样可以极大的提高数据查询效率。3.5打印模块的设计图 3-91

40、.打印按钮事件代码:XYZ=RECNO() &&记住当前记录位置DO CASE CASE THISFORM.pageframe1.page4.OPTIONGROUP1.VALUE=1 IF THISFORM.pageframe1.page4.OPTIONGROUP2.VALUE=1 REPORT FORM reports/职工资料.FRX FOR RECNO()=XYZ TO PRINTER NOCONSOLE ELSEREPORT FORM reports/职工工资条.FRX FOR RECNO()=XYZ TO PRINTER NOCONSOLE ENDIF CASE TH

41、ISFORM.pageframe1.page4.OPTIONGROUP1.VALUE=2 IF THISFORM.pageframe1.page4.OPTIONGROUP2.VALUE=1 REPORT FORM reports/职工资料.FRX FOR RECNO()=str1 TO PRINTER NOCONSOLE ELSE REPORT FORM reports/职工工资条.FRX FOR RECNO()=str1 TO PRINTER NOCONSOLE ENDIF CASE THISFORM.pageframe1.page4.OPTIONGROUP1.VALUE=3 IF THIS

42、FORM.pageframe1.page4.OPTIONGROUP2.VALUE=1 REPORT FORM reports/职工资料.FRX TO PRINTER NOCONSOLE ELSE REPORT FORM reports/职工工资条.FRX TO PRINTER NOCONSOLE ENDIF ENDCASE2.预览按钮事件代码:YZ=RECNO &&记住当前记录位置DO CASECASE THISFORM.pageframe1.page4.OPTIONGROUP1.VALUE=1 &&如何打印当前记录 IF THISFORM.pageframe1

43、.page4.OPTIONGROUP2.VALUE=1 REPORT FORM reports/职工资料.FRX FOR RECNO()=XYZ preview ELSE REPORT FORM reports/职工工资条.FRX FOR RECNO()=XYZ preview ENDIF CASE THISFORM.pageframe1.page4.OPTIONGROUP1.VALUE=2 IF THISFORM.pageframe1.page4.OPTIONGROUP2.VALUE=1 REPORT FORM reports/职工资料.FRX FOR RECNO()=XYZ preview

44、 ELSE REPORT FORM reports/职工工资条.FRX FOR RECNO()=XYZ preview ENDIF CASE THISFORM.pageframe1.page4.OPTIONGROUP1.VALUE=3 IF THISFORM.pageframe1.page4.OPTIONGROUP2.VALUE=1 REPORT FORM reports/职工资料.FRX TO PRINTER NOCONSOLE ELSE REPORT FORM reports/职工工资条.FRX TO PRINTER NOCONSOLE ENDIF ENDCASE 打印模块的功能是每月发放

45、工资时,能够打印本月的工资表、随工资发给每个职工的工资条以及工资统计表,快速打印出工资报表,使企事业单位工资管理实现计算机管理,使管理员能够有序的管理每一位职工的各项工资条款的发放以及员工个人台帐的生成。本系统的打印可以通过以上代码选择是打印工资条还是打印工资表,使用case语句调用各类报表进行的打印,同时打印之前可以先进行预览。3.6数据维护模块设计图 3-10(1)添加thisform.pageframe1.page2.text1.readonly=.f.thisform.pageframe1.page2.text2.readonly=.f.thisform.pageframe1.page

46、2.text3.readonly=.f.thisform.pageframe1.page2.text4.readonly=.f.thisform.pageframe1.page2.text5.readonly=.f.thisform.pageframe1.page2.text6.readonly=.f.thisform.pageframe1.page2.text7.readonly=.f.thisform.pageframe1.page2.text8.readonly=.f.thisform.pageframe1.page2.text9.readonly=.f.thisform.pagefra

47、me1.page2.text10.readonly=.f.thisform.pageframe1.page2.text11.readonly=.f.append blanksave allthisform.refresh将只读属性取消,运用APPEND命令行记录的添加(2)恢复recallthisform.refresh(3)删除INOTICE=MESSAGEBOX("确定物理删除指定的记录吗?"+CHR(13)+"一经删除,不能恢复!",65,"重要提示")IF INOTICE=1 DELETE RECORD RECNO()else

48、 thisform.refreshENDIF 当用户要物理删除制定的记录,为了不出现误删除,系统弹出对话框“确定物理删除指定的记录吗? 一经删除,不能恢复!”选择确定为删除,否则取消。(4)第一条thisform.pageframe1.page2.text1.readonly=.t.thisform.pageframe1.page2.text2.readonly=.t.thisform.pageframe1.page2.text3.readonly=.t.thisform.pageframe1.page2.text4.readonly=.t.thisform.pageframe1.page2.

49、text5.readonly=.t.thisform.pageframe1.page2.text6.readonly=.t.thisform.pageframe1.page2.text7.readonly=.t.thisform.pageframe1.page2.text8.readonly=.t.thisform.pageframe1.page2.text9.readonly=.t.thisform.pageframe1.page2.text10.readonly=.t.thisform.pageframe1.page2.text11.readonly=.t.dodefault() go t

50、opthisform.refresh将所有文本框属性设为只读,将记录指针定位至记录顶部(5)下一条thisform.pageframe1.page2.text1.readonly=.t.thisform.pageframe1.page2.text2.readonly=.t.thisform.pageframe1.page2.text3.readonly=.t.thisform.pageframe1.page2.text4.readonly=.t.thisform.pageframe1.page2.text5.readonly=.t.thisform.pageframe1.page2.text6

51、.readonly=.t.thisform.pageframe1.page2.text7.readonly=.t.thisform.pageframe1.page2.text8.readonly=.t.thisform.pageframe1.page2.text9.readonly=.t.thisform.pageframe1.page2.text10.readonly=.t.thisform.pageframe1.page2.text11.readonly=.t.dodefault()skip 1if eof() go bottom =messagebox("已经是最后一条记录了,

52、你按上一条查看其它的!",64,"最后一条记录了")endif thisform.refresh(6)上一条thisform.pageframe1.page2.text1.readonly=.t.thisform.pageframe1.page2.text2.readonly=.t.thisform.pageframe1.page2.text3.readonly=.t.thisform.pageframe1.page2.text4.readonly=.t.thisform.pageframe1.page2.text5.readonly=.t.thisform.pa

53、geframe1.page2.text6.readonly=.t.thisform.pageframe1.page2.text7.readonly=.t.thisform.pageframe1.page2.text8.readonly=.t.thisform.pageframe1.page2.text9.readonly=.t.thisform.pageframe1.page2.text10.readonly=.t.thisform.pageframe1.page2.text11.readonly=.t.dodefault()skip -1if bof() go top=messagebox(

54、"已经是第一条记录了,你按下一条查看其它的!",64,"第一条")endif thisform.refresh将文本框属性改为只读属性,如果想要删除一条,指针往上移一条,以此循环,如果达到第一条指针再往上,系统会提示“已经是第一条记录了,你按下一条查看其他的!”(7)最后一条thisform.pageframe1.page2.text1.readonly=.t.thisform.pageframe1.page2.text2.readonly=.t.thisform.pageframe1.page2.text3.readonly=.t.thisform.p

55、ageframe1.page2.text4.readonly=.t.thisform.pageframe1.page2.text5.readonly=.t.thisform.pageframe1.page2.text6.readonly=.t.thisform.pageframe1.page2.text7.readonly=.t.thisform.pageframe1.page2.text8.readonly=.t.thisform.pageframe1.page2.text9.readonly=.t.thisform.pageframe1.page2.text10.readonly=.t.t

56、hisform.pageframe1.page2.text11.readonly=.t.dodefault() go bottomthisform.refresh将文本框属性改为只读属性,将记录指针定位至记录底部,然后释放表单(8)修改thisform.pageframe1.page2.text1.readonly=.f.thisform.pageframe1.page2.text2.readonly=.f.thisform.pageframe1.page2.text3.readonly=.f.thisform.pageframe1.page2.text4.readonly=.f.thisfo

57、rm.pageframe1.page2.text5.readonly=.f.thisform.pageframe1.page2.text6.readonly=.f.thisform.pageframe1.page2.text7.readonly=.f.thisform.pageframe1.page2.text8.readonly=.f.thisform.pageframe1.page2.text9.readonly=.f.thisform.pageframe1.page2.text10.readonly=.f.thisform.pageframe1.page2.text11.readonly=.f.save allthisform.refresh3.7退出模块设计图 3-11滚动字幕的效果可以通过以下代码来实现:speed=3If Thisform.Image2.top>100 thenThisform.Image2.top=Thisform.Image2.top-speedElse Thisform.Timer1.enabled=.F.Endif退出模块的设计比较简单,主要设计的界面风格的设计,对于字幕我是以滚动的形式呈现的,这样使得界面不至于呆板、单调。3.8菜单设计主界面包含有文件、数据操作、作者、打印、帮助等菜单,对于菜单的设计

温馨提示

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

评论

0/150

提交评论