您的当前位置:首页正文

工资管理系统论文

2021-12-14 来源:易榕旅网
工 资 管 理 系 统 论 文

摘 要

本系统是一个面向中小型企业的工资管理系统,该系统在成功连编之后,可独立的在windows环境下操作,本模块共分为12个独立的模块,可以完成一些基本的工资管理操作,如基本的数据查找、修改、输入输出、打印以及数据统计的功能,可通过职工的基本信息表与工资表之间的联系来完成对职工工资的各种操作。

本系统包括项目的建立、数据库的建立、表的有关操作、数据库管理的操作、程序设计常用控件的使用、数据表的表单的程序设计、菜单的设计方法、SQL语言的使用等。

关键词:工资管理系统 管理操作 项目建立

1

目 录

第一章. 工资管理系统需求分析与设计 ...................................................... 错误!未定义书签。

1.系统功能需求简介 .............................................................................. 错误!未定义书签。 2、工资结构设置模块 ........................................................................... 错误!未定义书签。 3.目标系统要求 ...................................................................................... 错误!未定义书签。 4.系统平台设计 ...................................................................................... 错误!未定义书签。 第二章.工资管理系统信息概要设计 ......................................................... 错误!未定义书签。

1.工资数据流程图 .................................................................................. 错误!未定义书签。 2.工资管理系统主要模块简介 .............................................................. 错误!未定义书签。

2.1工资管理系统主要文件组成 (数据词典分析) ...................... 错误!未定义书签。 2.2功能模块菜单 ........................................................................... 错误!未定义书签。 3.项目与数据库的建立 .......................................................................... 错误!未定义书签。

3.1项目地建立 ............................................................................... 错误!未定义书签。 3.2数据库及数据库表的建立 ....................................................... 错误!未定义书签。 3.3数据表间关系的建立: .............................................................. 错误!未定义书签。

第三章.工资管理系统模块设计 ................................................................................................. 10

1.系统主菜单设计 .................................................................................................................. 10 2.系统主控表单模块设计 ...................................................................................................... 12

2.1表单的执行屏幕 ....................................................................................................... 12 2.2表单与控件属性设置: ........................................................................................... 12 2.3事件代码 ................................................................................................................... 13 Form表单的Init事件代码: ........................................................................................ 13 3.员工信息管理模块表单设计 .............................................................................................. 13

3.1设计第一页 ............................................................................................................... 13 3.1.1表单的设计与执行 ................................................................................................ 13 3.1.2控件属性设置 ........................................................................................................ 14 3.1.3事件代码 ................................................................................................................ 14 3.2设计第二页 ............................................................................................................... 16 4.员工信息查询模块表单设计 .............................................................................................. 16 4.1表单的执行与设计 ........................................................................................................... 16

4.2表单与控件的属性设置 ........................................................................................... 17 4.3事件代码 ................................................................................................................... 18 5.输入工资数据模块表单设计 .............................................................................................. 18 5.1表单的执行与设计 ........................................................................................................... 18

5.2表单与控件的属性设置 ........................................................................................... 19 5.3事件代码 ................................................................................................................... 19 6.复制上月工资模块表单设计 .............................................................................................. 23

6.1表单的执行与设计 ................................................................................................... 23 6.2表单与控件的属性设置 ........................................................................................... 24 6.2事件代码 ................................................................................................................... 24

2

7.查询模块表单设计 .............................................................................................................. 25

7.1按部门查询表单设计与实现 ................................................................................... 25 7.2按月份查询表单设计与实现 ................................................................................... 26 7.3按工号查询表单设计与实现 ................................................................................... 27 8关于系统模块表单设计 ...................................................................................................... 27 9欢迎界面模块表单设计 ...................................................................................................... 28

9.1表单的设计与执行 ................................................................................................... 28 9.2表单与控件的属性设置 ........................................................................................... 28 9.3事件代码 ................................................................................................................... 28 10登陆模块表单设计 ............................................................................................................ 29

10.1表单设计与执行 ..................................................................................................... 29 11报表表单的设计 ................................................................................................................ 30 第四章.程序的连遍与系统维护 ................................................................................................. 31

1. 将应用程序添加到项目管理器中 .................................................................................... 31 2.工资系统的主程序设计 ...................................................................................................... 31 3.程序的调试 .......................................................................................................................... 32 4.程序的连编 .......................................................................................................................... 33 第五章.系统实施 ......................................................................................................................... 34

5.1编程语言介绍 ................................................................................................................... 34 5.2系统使用说明书 ............................................................................................................... 34 5.3系统存在的问题 ............................................................................................................... 34 参考文献......................................................................................................................................... 35

3

第一章 概述

1.1 系统的开发背景

管理信息系统即MIS(Management Information System),MIS是一门新的学科,它跨越了若干个领域,比如管理科学、系统科学,运筹学、统计学以及计算机科学。在这些学科的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统。其主要任务是最大限度的利用现代计算机及网络通讯技术加强企业的信息管理,通过对企业拥有的人力、物力、财力、设备、技术等资源的调查了解,建立正确的数据,加工处理并编制成各种信息资料及时提供给管理人员,以便进行正确的决策,不断提高企业的管理水平和经济效益。

现代工资管理早就进行信息化管理了,本系统对现代化企业来说是管理企业必不可少的软件,传统的人工管理工资的方式,效率低、易出错、耗费时间长等,对于管理企业以及单位带来了许多不便,因此开发工资管理系统是很有必要的。

1.2 系统的开发目的

工资管理系统是一个小型的管理信息系统(MIS),它的开发过程会涉及到MIS的开发步骤和方法,,通过对本系统的开发和研究,使自身更加熟悉了软件的开发流程以及在设计过程中应该注意的问题。同时在开发工资管理系统的过程中,使我能够运用各学科知识解决问题,把理论转化为实际,做到理论与实际更好的结合,提高了动手能力,并通过收集各方面资料,更加拓宽了自身的知识面,又很好的锻炼了独立完成任务的能力。

1.3 系统的开发意义

工资管理系统使企业的各项管理工作更加科学化、规范化,最终适应激烈的市场竞争,适应改革和发展的需要,更深刻认识到进一步提高工资管理水平的重要性和必要性。因此,开工资管理系统对企业以及单位规范性提高具有重大的社会意义。

4

第二章 系统需求分析及开发工具选择

2.1 需求分析

需求分析就是描述系统的需求,通过定义系统中的关键类域来建立模型。分析的根本目的是在开发者和提出要求者之间建立一种理解和沟通的机制,因此,图书借阅管理系统的需求分析是由开发人员和用户或者客户共同完成的。

工资管理信息系统对企业加强工资管理有着极其重要的作用,就一般的企业来说,它的设计内容非常复杂,拥有工资计算功能,工资统计功能,报表输出功能,而且设计的模块也很多,如工资管理模块,工资统计模块,报表设计模块,打印输出模块,数据查询模块等等。 2.2 可行性分析

可行性分析一般分为经济可行性、技术可行性和操作可行性。 1 经济可行性:

该系统采用visual forpro 6.0进行开发,他集设计与数据库开发于一身,不需要其他工具即可实现,该系统不需要大量的开发人员,节省了时间和费用,开发环境简单一直,提高整体项目的开发效率。因此,在经济可行性上来说,是可行的。

2 技术可行性

在技术特性上,本人学习过软件工程、VISUAL FOXPRO、数据结构等课程,具备软件开发的基本条件,在指导老师的正确指导下,基本上能够完成该系统的开发,在做出详细的需求分析后,保证了信息的正确性和完整性。 3 操作可行性

本系统采用WINDOWS平台的面向对象数据库开发工具进行开发,他具有界面友好,操作简单等特点,一般会电脑基本操作的人员均可操作。

2.3 系统功能分析

该工资管理系统主要实现一些基本的数据管理,主要表单模块,由各种输入、输出、浏览、修改、统计、打印、查询、帮助及退出等功能组成。“工资管理查询系统”要求进行设计,并工资的工作流程,该系统包括13大模块:系统欢迎模块、系统登录模块、系统主菜单模块、员工信息管理模块、员工信息查询模块、输入工资数据模块、复制上月工资模块、按部门查询模块、按月份查询模块、按工号查询模块、打印模块、关于系统、退出等模块组成。

本系统的总体结构如图2-1所示

5

输入工资数据 复制上月工资 设置用户受制登陆系统界面 2.4开发工具的选择 2.5 系统配置 2.5.1 硬件设备

工资录入 按部门查询 按月份查询 工资查询 按工号查询 打印 工资明细打印 关于系统 工资汇总打印 员工信息 员工信息管理 员工信息查询

图2-1系统功能模块组成 退出 工资管理系统是一个典型的MIS,MIS的设计与开发一般涉及后台数据库管理和前台应用界面设计,VFP是Microsoft公司推出的最新可视化数据库管理系统平台,是功能特别强大的32位数据库管理系统。它提供了功能完备的工具、极其友好的用户界面、简单的数据存取方式、独一无二的跨平台技术,交肯有良好的兼容性、真正的可编译性和较强的安全性,是目前最快捷、最实用的数据库管理系统软件之一。 所以,本系统采用vfp作为开发工具。

·CPU为80486以上的品牌或兼容机;

6

·32M以上的内存; 2.5.2 软件配置

操作系统:Windows 2000、windows xp、windows 7 开发环境:Visual FoxPro 6.0 数据库:Visual FoxPro 6.0

第三章 数据库设计

3.1 设计依据

Visual Foxpro 6.0(中文版)是可运行在Windows 95/98, Windows 2000, Windows NT 平台的32位数据库开发系统。它是能充分发挥32位微处理器的强大功能,直观易用的编程工具,正如其名称中冠之的“Visual”一样,它采用了可视化的、面向对象的程序设计方法,大大简化了应用系统的开发过程,并提高了系统的模块性和紧凑性。同时,Visual FoxPro是一种典型的关系型数据库管理系统。关系模型是建立在关系代数基础上的,因而具有坚实的理论基础。与层次模型和网状模型相比,它具有数据结构单一、理论严密、使用方便、易学易用的特点。Visual FoxPro作为一种典型的关系型数据库管理系统,具有界面友好、工具丰富、速度较快等优点,并在数据库操作与管理、可视化开发环境、面向对象程序设计等方面具有较强的功能。

工资管理系统难度不大,主要会设计工资信息表、员工信息表、部门信息表等二维表,软件中所有数据都需要记录在数据库中,而数据库正是Visual Foxpro 6.0的优势所在,从数据库的建立到编程,都在一个开发环境中,减小了开发难度,又可以满足用户的全部需要。因此,对于本系统的开发,选用了Visual Foxpro 6.0作为开发工具。 3.2数据库的概念结构设计

这一设计是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。

实体与实体之间的关系E-R图如图所示:

7

岗位工资 技能工资 年份 月份 姓名 工号 部门号 部门 输入日期 总扣工资 交通费 洗理费 书报费 水电煤气 中晚班津贴 加班工资 工资信息 补发工资 效益工资 事假 失业金 公积金 效益 医疗保险 个税 应发工资 实发工资 养老保险 工号 图3-1 工资信息E-R图

员工 姓名 性别 岗位

图3-2 员工信息 E-R图

8

工龄 部门 部门 部门号 图3-3 部门信息 E-R图

3.3 数据库的逻辑结构设计

将以上的E-R图转化为具体的关系模式:

工资信息表(年份、月份、日期、工号、姓名、部门号、部门、职称、姓名、技能工资、岗位工资、交通费、洗理费、书报费、水电煤气、中晚班津贴、加班工资、补发工资、效益工资、事假、效益、失业金、养老保险、医疗保险、公积金、个税、应发工资、总扣工资、实发工资)

员工信息表(工号、姓名、性别、岗位、工龄) 部门(部门、部门号)

依据上面的关系模式,设计数据库表如下:

工资表结构如下图所示: 字段名称 年份 月份 日期 工号 姓名 部门号 部门 职称 姓名 技能工资 岗位工资 交通费 洗理费 书报费 水电煤气 中晚班津贴 加班工资 补发工资 效益工资 字段类型 N N D N C N C C C N N N N N N N N N N 字段宽度 4 2 8 4 8 2 16 8 8 8 8 8 8 8 8 8 8 8 8 小数点 2 2 2 2 2 2 2 2 2 2 默认值 9

事假 效益 失业金 养老保险 医疗保险 公积金 个税 应发工资 总扣工资 实发工资 N N N N N N N N N N 8 8 8 8 8 8 8 8 8 8 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 员工表结构如下图所示: 字段名称 工号 岗位 姓名 性别 工龄 字段类型 N C C C N 字段宽度 10 6 6 2 8 小数点 0 0 0 0 0 默认值 部门表结构如下图所示: 字段名称 部门 部门号

字段类型 C N 字段宽度 16 2 小数点 0 0 默认值

第四章.工资管理系统模块设计

1.系统主菜单设计

①在“项目管理器”窗口中,选择“其他”选项卡。 ②在其“他选”项卡中选择“菜单”。

③单击新建按钮,屏幕出现“新建菜单对话框”。

④在“新建菜单对话框”中,单击“菜单”命令,系统进入“菜单设计器”窗口。 分别建立“主菜单”及“工资记录管理子菜单”,主菜单包括员工信息、工资录入、工资查

10

询、打印、关于系统、退出,员工信息子菜单中项目包括员工信息管理、员工信息查询,工资录入子菜单中项目包括输入工资数据、复制上月工资,工资查询子菜单中项目包括按部门查询、按月份查询、按工号查询。 ⑤退出系统设计为过程:代码为

byebye=messagebox(\"真的要退出吗?\提示信息\") if byebye=1

close all clear events quit

endif

⑥在“菜单级”中选择“菜单栏”,返回主菜单。 ⑦重复⑤~⑦步,编辑其他子菜单

图7

图 8

11

图 9

⑧输入上述菜单项所对应的系统菜单内部命令生成菜单,其他菜单项调用程序如下所示:(图7、图8、图9)所示: 记录打印菜单:

工资明细打印:repo form 工资管理\\pr preview

工资汇总打印:repo form 工资管理\\pr1 preview 关于系统:do form 工资管理\\xitong

退出系统:byebye=messagebox(\"真的要退出吗?\提示信息\")

if byebye=1 close all clear events

quit

endif

⑨设置顶层表单,保存菜单,菜单名为main2,扩展名.mnx,最后再生成.mpr文件。

⑩退出菜单设计器窗口,将会在“项目管理器”窗口中看到菜单文件,在对其行修改,直到运行无误为止。

2.系统主控表单模块设计

主控表单用来调用系统菜单,用来控制整个系统的控制与管理。

2.1表单的执行屏幕

主控表单执行屏幕如图10所示。

2.2表单与控件属性设置:

Form表单的属性设置:

Caption=”工资管理系统”

showwindow=2-作为顶层表单( 指定该表单位顶层表单) Windowstate=2-最大化(指定表单在运行使最大化)

12

Showtips=.T.(指定表单对象显示“工具提示”)

2.3事件代码

Form表单的Init事件代码:

do 工资管理\\main2.mpr with this,.t. 运行结果如下图所示:图10

3.员工信息管理模块表单设计 3.1设计第一页 3.1.1表单的设计与执行

下图为该表单的设计屏幕,图11

13

3.1.2控件属性设置

Form1的属性设置: Caption改为:“员工信息管理” Picture改为:“f:\\vfp6.0\\工资管理\\7607384ac33167f0d1c86a1f.jpg“ Pageframe1的属性设置: Pagecount改为:2 Page1的属性设置:

caption改为:“员工信息管理“

commandgroup1的bottoncount属性设置为:9

Page2的属性设置:

caption改为:“员工信息一览表“

3.1.3事件代码

表单的form1的Init事件代码

thisform.disp()

thisform.setall('enabled',.f.,'testbox') disp事件代码:

thisform.setall('enabled',.f.,'testbox')

thisform.pageframe1.page1.commandgroup1.command9.enabled=.t. thisform.pageframe1.page1.commandgroup1.command1.enabled=.t. thisform.pageframe1.page1.commandgroup1.command2.enabled=.t. thisform.pageframe1.page1.commandgroup1.command3.enabled=.t. thisform.pageframe1.page1.commandgroup1.command4.enabled=.t. thisform.pageframe1.page1.commandgroup1.command5.enabled=.t.

14

thisform.pageframe1.page1.commandgroup1.command6.enabled=.t. thisform.pageframe1.page1.commandgroup1.command7.enabled=.t. thisform.pageframe1.page1.commandgroup1.command8.enabled=.t. thisform.pageframe1.page1.label1.visible=.f. if delete()=.t.

thisform.pageframe1.page1.label1.visible=.t.

thisform.pageframe1.page1.commandgroup1.command3.enabled=.f. thisform.pageframe1.page1.commandgroup1.command7.enabled=.f. thisform.pageframe1.page1.commandgroup1.command7.enabled=.t. else

thisform.pageframe1.page1.label1.visible=.f.

thisform.pageframe1.page1.commandgroup1.command3.enabled=.t. thisform.pageframe1.page1.commandgroup1.command7.enabled=.t. thisform.pageframe1.page1.commandgroup1.command8.enabled=.f. endif

“第一个“command1按钮的click事件代码:

go top

thisform.refresh thisform.disp()

“前一个“command2按钮的click事件代码: skip -1 IF BOF()

messagebox(\"已是第一个记录\信息窗口\") endif

THISFORM.REFRESH() thisform.disp()

“后一个“command3按钮的click事件代码: skip IF eof()

messagebox(\"已是最后一个记录\信息窗口\") skip -1 endif

THISFORM.REFRESH() thisform.disp()

“最后一个“command4按钮的click事件代码: go bottom

thisform.refresh thisform.disp()

“修改“command5按钮的click事件代码: thisform.setall('enabled',.t.,'textbox')

thisform.pageframe1.page2.grid1.setfocus “添加“command6按钮的click事件代码: append blank thisform.disp()

15

thisform.setall('enabled',.t.,'textbox') thisform.refresh

thisform.pageframe1.page2.grid1.setfocus “删除“command7按钮的click事件代码: delete

thisform.disp()

“恢复“command8按钮的click事件代码: recall

thisform.disp()

“退出“command9按钮的click事件代码: Thisform.release

3.2设计第二页

表单运行屏幕如图12所示

Page2的caption的属性设置:“员工信息一览表“ 添加一个表格控件,并将其name属性改为:“grid1”,其数据来源为“yg.dbf”

4.员工信息查询模块表单设计 4.1表单的执行与设计

下图为表单的执行屏幕及设计屏幕,如图13、图14

16

4.2表单与控件的属性设置

Form1的属性设置:

Caption属性设置为:“员工信息查询” Picture属性设置为:“f:\\vfp6.0\\工资管理\\7607384ac33167f0d1c86a1f.jpg” Label1的属性设置: Caption属性设置:“员工信息查询” Backstyle属性设置:0-透明 Fontsize属性设置:20 Label2的属性设置: Caption属性设置:“请输入工号” Backstyle属性设置:0-透明 Fontsize属性设置:12

Command1的caption属性设置:“查询” Command2的caption属性设置:“返回”

17

4.3事件代码

“查询“command1按钮的click事件代码: set filter to 工号=val(thisform.text1.value) count to zs if zs=0

messagebox(\"没有符合条件的记录!\信息窗口\") thisform.text1.setfocus else go top

thisform.grid1.setfocus endif

“返回“command2按钮的click事件代码: Thisform.release

5.输入工资数据模块表单设计 5.1表单的执行与设计

表单的执行屏幕与设计屏幕如图15、图16所示:

18

5.2表单与控件的属性设置

Form1的属性设置:

Caption属性设置为:“工资录入”

Picture属性设置为:f:\\vfp6.0\\工资管理\\7607384ac33167f0d1c86a1f.jpg Commandgroup1的属性设置: Bottoncount的属性设置为:9

Command1的caption设置为:“|<” Command2的caption设置为:“<” Command3的caption设置为:“>” Command4的caption设置为:“>|” Command5的caption设置为:“添加” Command6的caption设置为:“删除” Command7的caption设置为:“修改” Command8的caption设置为:“取消” Command9的caption设置为:“存储” Commandgroup2的属性设置:

Command1的caption设置为:“批量删除” Command1的caption设置为:“复制上月工资” Command2的caption设置为:“返回”

5.3事件代码

(1)表单Form1的Init的事件代码: nomenu=.t.

public cury,curmh,currq

19

curyh=year(date()) curmh=month(date()) curry=date() select gz this.jls=recc()

this.currno=recno() this.disp

新建disp的事件代码: select gz if this.jls>0

thisform.commandgroup1.command1.enabled=.t. thisform.commandgroup1.command2.enabled=.t. thisform.commandgroup1.command3.enabled=.t. thisform.commandgroup1.command4.enabled=.t. thisform.commandgroup1.command5.enabled=.t. thisform.commandgroup1.command6.enabled=.t. thisform.commandgroup1.command7.enabled=.t. else

thisform.commandgroup1.command1.enabled=.f. thisform.commandgroup1.command2.enabled=.f. thisform.commandgroup1.command3.enabled=.f. thisform.commandgroup1.command4.enabled=.f. thisform.commandgroup1.command5.enabled=.f. thisform.commandgroup1.command6.enabled=.f. thisform.commandgroup1.command7.enabled=.f. endif

thisform.setall(\"enabledhisform.combo1.enabled=.f.

thisform.commandgroup1.command8.enabled=.f. thisform.commandgroup1.command9.enabled=.f.

destory的事件代码: select gz nomenu=.f.

load的事件代码: set multilocks on set dele on set date ansi

新建的jsyf事件代码:

thisform.txtf18.value=thisform.txtf1.value+thisform.txtf2.value+; thisform.txtf3.value+thisform.txtf4.value+thisform.txt5.value+;

thisform.txtf6.value+thisform.txtf7.value+thisform.txtf8.value+thisform.txtf9.value+; thisform.txtf10.value-thisform.txtf11.value-thisform.txtf12.value thisform.txt20.value=thisform.txtf18.value-thisform.txtf19.value 新建的jszk事件代码:

20

thisform.txtf19.value=thisform.txtf13.value+thisform.txtf14.value+; thisform.txtf15.value+thisform.txtf16.value+thisform.txtf17.value thisform.txtf20.value=thisform.txtf18.value-thisform.txtf19.value (2)commandgroup1的命令按钮控件

“|<” command1按钮的click事件代码: select gz if recno()>1 go top else

wait '已到第一条记录!' wind time 0.5 endif

thisform.currno=recno()

thisform.setall(\"enabledhisform.combo1.enabled=.f. thisform.refresh

“<”command2按钮的click事件代码: select gz if recno()>1 skip -1 else

wait'已是第一条记录' wind time 0.5 endif

thisform.currno=recno()

thisform.setall(\"enabled\ thisform.combo1.enabled=.f. THISFORM.REFRESH()

“>”command3按钮的click事件代码: select gz

if recno()wait '已到最后一条记录!' wind time 0.5 endif

thisform.currno=recno() thisform.jls=recc()

thisform.setall(\"enabled\ thisform.combo1.enabled=.f. thisform.refresh

“|>”command4按钮的click事件代码: select gz

if recno()wait '已到最后一条记录!' wind time 0.5

21

endif

thisform.currno=recno() thisform.jls=recc()

thisform.setall(\"enabled\ thisform.combo1.enabled=.f. thisform.refresh

“添加”command5的click事件代码: append blank

thisform.jls=thisform.jls+1 thisform.disp

thisform.setall(\"enabledhisform.txtf18.enabled=.f. thisform.txtf19.enabled=.f. thisform.txtf20.enabled=.f. thisform.combo1.enabled=.t.

thisform.commandgroup1.command8.enabled=.t. thisform.commandgroup1.command9.enabled=.t. thisform.opmode=1 thisform.refresh

thisform.txtf.setfocus

“删除”command6的click事件代码:

if messagebox(\"记录一旦删除便不能恢复,真的要删除吗?\信息提示\")=6 delete

thisform.jls=thisform.jls-1 thisform.opmode=6 thisform.disp thisform.refresh endif

“修改”command7的click事件代码: thisform.setall(\"enabledhisform.txtf18.enabled=.f. thisform.txtf19.enabled=.f. thisform.txtf20.enabled=.f. thisform.combo1.enabled=.t.

thisform.commandgroup1.command8.enabled=.t. thisform.commandgroup1.command9.enabled=.t. thisform.opmode=3 thisform.refresh

thisform.txtxm.setfocus

“取消”command8的click事件代码:

if messagebox(\"是否放弃当前操作?\信息提示\")=6 tablerevert(.f.) this.enabled=.f.

thisform.commandgroup1.command9.enabled=.f.

22

if thisform.opmode=1 thisform.jls=thisform.jls-1 if thisform.jls>0 go thisform.currno endif endif

thisform.setall(\"enabledhisform.combo1.enabled=.f. thisform.disp thisform.refresh() else

thisform.txtxm.setfocus endif

“存储”command9的click事件代码: if tableupdate(.f.)=.f.

=messagebox(\"数据保存不成功!\信息提示\") else

this.enabled=.f.

thisform.commandgroup1.command8.enabled=.f. endif

(3)commandgroup2的命令按钮控件

“批量删除”command1按钮的click事件代码:

if messagebox(\"所有记录一旦删除便不能恢复,真的要删除吗?\信息提示\")=6 count to deljls delete all

thisform.jls=thisform.jls-deljls thisform.disp go top

thisform.refresh endif

(4)“复制上月工资“command1按钮的click事件代码: do form 工资管理\\gz16 (5)“返回“command2按钮的click事件代码: Thisform.release

6.复制上月工资模块表单设计 6.1表单的执行与设计

表单的执行屏幕如图17所示:

23

6.2表单与控件的属性设置

表单form1的Init事件代码: nomenu=.t.

thisform.text1.value=year(date()) thisform.text2.value=month(date()) label1的属性设置: caption设置为:“复制上月工资的功能是将上个月的工资记录全部复制到本月,然后用

户可以对记录进行修改,但是已输入的本月工资记录将全部被覆盖掉。“

fontsize设置为:14 label2的caption设置为:“当前月份:“ label3的caption设置为:“年“ label4的caption设置为:“月“ command1的caption设置为:“确定“ command2的caption设置为:“取消“

6.2事件代码

表单form1的Init事件代码: nomenu=.t.

thisform.text1.value=year(date()) thisform.text2.value=month(date())

“确定“command1的click事件代码: select gz

if thisform.text2.value=1 preyf=thisform.text1.value-1 premf=12 else

preyf=thisform.text1.value

24

premf=thisform.text2.value-1 endif

locate for 年份=preyf and 月份=premf if !found()

messagebox(\"上一月份的工资数据不存在!\信息提示\") else

copy to temp for 年份=preyf and 月份=premf use temp in 0 select temp

repl all 输入日期 with date(),年份 with thisform.text1.value,月份 with thisform.text2.value select gz

delete for 年份=thisform.text1.value and 月份=thisform.text2.value append from temp use in temp

if file('temp.dbf') dele file temp.dbf endif endif

thisform.release

“取消“command2的click事件代码: Thisform.release

7.查询模块表单设计

7.1按部门查询表单设计与实现

(1)表单的设计屏幕如图18所示:

25

(2)表单form1的caption属性设置为:“按部门查询工资“ Label1的caption属性设置为:“员工工资查询“ Fontsize设置为:22 Label2的caption属性设置为:“部门“ Command1的caption属性设置为:“确定“ Command2的caption属性设置为:“取消“ (3)form1的load事件代码: nomenu=.t. set talk off set safe off

“确定“command1的click事件代码: set filter to 部门=alltrim(thisform.text1.value) count to zs if zs=0

messagebox(\"没有符合条件的记录!\信息窗口\") thisform.text1.setfocus else go top

thisform.grid1.setfocus endif

“取消“command2的click事件代码: Thisform.release

7.2按月份查询表单设计与实现

此表单设计与按部门查询表单设计类似,这里不在叙述。设计如图19所示:

26

7.3按工号查询表单设计与实现

此表单设计与按部门查询表单设计类似,这里不在叙述。如图20所示

8关于系统模块表单设计

执行表单屏幕设计如图21所示:

Label1的caption属性设置为:“关于系统” Label2的caption属性设置为:“系统说明” Label3的caption属性设置为:“本工资管理系统是一个相对完整的,关于visual

forpro系统”

Label4的caption属性设置为:“产品名称:企业工资管理系统” Label5的caption属性设置为:“版本 V 1.0”

Label6的caption属性设置为:“版权所有:次仁德吉” Command1的caption属性设置为:“退出” 并根据实际调整字体大小。

“退出”command1的click事件代码:thisform.release

27

9欢迎界面模块表单设计 9.1表单的设计与执行

新建一个表单,保存为“welcome.scx”,其设计设计屏幕如图22所示:

9.2表单与控件的属性设置

Form1的属性设置:

Caption设置为:“工资管理系统” Picture设置为:“f:\\vfp6.0\\工资管理\\3lian_com_0020.jpg” Label1的caption设置为:“欢迎使用” Label2的caption设置为:“工资管理系统” Timer1的interval设置为:500 Commandgroup1的属性设置:

Command1的caption设置为:“进入系统“ Command2的caption设置为:“退出系统“

9.3事件代码

Timer1的timer事件代码:

thisform.label1.left=thisform.label1.left+5 if thisform.label1.left>thisform.width

thisform.label1.left=0-thisform.label1.width endif

“进入系统“command1的click事件代码: do form 工资管理\\check.scx

“退出系统“command2的click事件代码:thisform.release

28

10登陆模块表单设计 10.1表单设计与执行

新建表单,并保存为:check.scx,设计屏幕如图23所示:

Form1的caption属性设置为:“登陆界面“ Label1的caption属性设置为:“用户名“ Label2的caption属性设置为:“密码“ Command1的caption属性设置为:“确定“ Command2的caption属性设置为:“取消“ 并根据实际,设置响应字体大小。

“确定“command1的click事件代码:

if empty(thisform.text1.value) or empty(thisform.text2.value) messagebox(\"输入的信息不完整,请重新输入\警告\") inpswd1=inpswd1+1 if inpswd1>=3

messagebox(\"请不要乱来!!!\警告\") thisform.release &&clear events else

thisform.text1.value=\"\" thisform.text2.value=\"\" thisform.text1.setfocus endif else

use 工资管理\\passwd

locate for 用户名=alltrim(thisform.text1.value) if 密码=alltrim(thisform.text2.value) do form 工资管理\\main2.scx else

messagebox(\"输入的信息有误,请重新输入!\警告\")

29

inpswd1=inpswd1+1 if inpswd1>=3

messagebox(\"请不要乱来!!!\警告\") thisform.release &&clear events else

thisform.text1.value=\"\" thisform.text2.value=\"\" thisform.text1.setfocus endif endif endif

“取消“command2的click事件代码:thisform.release

11报表表单的设计

本系统共需要2个报表,即工资明细报表、工资汇总报表

工资明细报表的设计如图24所示:

工资汇总报表设计如图25所示:

30

设计报表时打开生成器,打开自动生成的报表,使用格式菜单的命令来完成布局,然后利用画图和画框工具来调整布局。

第四章.程序的连遍与系统维护

应用系统的设计,通过项目管理器将表单与菜单、数据库等连在一起,就可以建立可执行程序。利用项目管理器编译成可执行文件很简单,它将在项目管理器中的全部文件编译在一起,形成一个独立的可执行文件。连编必须进行以下4个步骤: 1.将所有的应用程序加入到项目管理器中。 2 .主程序的建立 3 .程序的调试

4 .应用程序的连编。

1. 将应用程序添加到项目管理器中

将全部的应用程序添加到项目管理器中的操作步骤如下: 1 .打开已建立的项目。

2 .选择相应的选项卡,依次把自由表、数据库、表单文件、报表文件、菜单文件以及类库添加到项目。

如果建立应用程序时,上述表及相关文件就已经在项目管理器中,上述步骤可以省略。 3 .为了避免在程序编译后会出现一个VFP窗口,可以在“项目管理器”窗口的“其他”选项卡的“文本文件”中,填加一个Config.fpw文件,文本内容是Screen=Off即可。

2.工资系统的主程序设计

为了连编,必须确定连编的顺序,并确定应用程序的接口,为此,必须编写主程序工资管理系统.prg,确定运行顺序。每个系统都应该有一个主程序,当在程序项目管理器中开始编写第一个程序(如程序文件、菜单、表单等)时,管理器会默认将其作为主程序,但有时可能第一个编辑的程序不是主程序,这时就要重新设置主程序。创建一个可独立运行的

31

Windows程序,就必须建立一个程序文件作为主文件。其操作步骤如下:

1 .在“项目管理器”窗口中,单击“代码”选项卡,选择“程序”,并单击“新建”按钮。即可创建程序文件。 工资主程序的代码如下: set dele on set talk off set safety off set date ansi set cent on

do form 工资管理\\welcome.scx read events

2.单击右上交的“关闭”按钮,在“另存为”对话框中,以“工资管理系统”为文件名保存。 3.用鼠标右键单击文件名“工资管理系统.prg’,在弹出的快捷菜单中,选择“设置主文件“如图26所示,此时可以看到程序工资管理系统变为黑体。

3.程序的调试

如果在程序中有语法性的错误,当程序运行到错误的语句时,系统就会停下来并提示程序有错,通常还会说出是什么错误,如“命令中含有不能识别的短语或关键字”,并给出“取消”、“挂起”、“忽略”、“帮助”四个选择,它们的意思分别是:

“取消”表示中止程序运行,回到命令窗口,相当于执行了Cancel命令,在程序中创建的所有变量被释放(除公共变量),但数据库及数据表一般保持当时的状态,可以用Browse命令查看数据表的内容,如记录指针所在的位置等。

“挂起”表示暂停程序,相当于执行了Suspend命令,这时程序中的所有变量都保持原值,可以用?忽略。

“忽略”表示忽略所有出现的错误,即跳过出错的语句继续执行后面的语句。 “帮助”表示显示有关出错的帮助信息,对于错误做更详细的说明。 如果这时能看出问题出在哪里,可以选择“取消”,然后进到程序中找出错误所在的位置,将其改正。在选择了“取消”后,可能这时有表单是打开的,那么用鼠标点一下该窗口,然

32

后选择“关闭”。如果菜单是自定义菜单,用Set sysmenu to default回到系统菜单。改完后,再次运行程序前,最好将所有的数据库及表关闭,以免在程序打开一个数据表时出现表已打开的错误,比较好的办法是在程序开头先关闭所有的数据库及表。关闭所有数据库的命令是:Close Datagbase All。

关闭所有表的命令是:Close Table All 。

如果不知道问题出在程序的哪个地方,选择“挂起”,系统会弹出一个调试器窗口,显示出错的语句,在跟踪窗口的黄色箭头所指的语句就是可能出错的语句。

4.程序的连编

程序全部编写完成就可以开始编译软件了,操作步骤如下:

1.单击“项目管理器”窗口中的“连编”命令,屏幕出现“连编选项” 对话框,如图27所示:

2.在“操作”框中,选择“连遍可执行文件”,按“确定”按钮。

3.输入编译后的.EXE文件名,然后保存在已建的应用程序所在的目录中。

4.接着系统便进入编译过程,这一过程是计算机自动完成的。在这一过程中系统会首先检查程序是否有错误,如有错误时会给出提示,在提示中可以选择“忽略”、“全部忽略”、“取消”。这里的“忽略”就是不管出现的错误继续编译。当然,一般不应该这样,一旦出现错误提示,应选择“取消”,然后找出相应的错误,改正后再编译。为了容易查找错误,系统还将错误记录下来,在菜单的“项目”—“错误”中可以看到,其中会讲明是什么错误,发生在哪个程序的哪一条语句中。对于有些错误会不给出提示而直接忽略,但它仍然会把错误记录下来。如果系统编译时没有记录错误,那是因为在菜单上的“工具”—“选项”—“常规”—“编程”中的“记录编译错误”没有打开。

5.编译完成后,用户就可以将自己的系统拷贝到其他的机器上运行(即脱离VFP环境)。但是值得注意的是,系统要将相应版本的VFP支持文件拷贝进去,比如,VFP6.0中需要的文件为:VFP6r.dllVFP6renu.dull。

33

第五章.系统实施

5.1编程语言介绍

Visual FoxPro 是Microsoft公司于1991年推出的Windows应用程序开发工具,短短几年的时间,已经成为Windows流行的编程语言,它从根本上改变了传统的程序设计,Visual FoxPro6.0适应Windows3.X到Windows XP等各个操作系统的发展,目前已经发展到Visual FoxPro8.0版本。本次设计采用的是Visual FoxPro6.0开发了一个学生公寓管理系统。

5.2系统使用说明书

在系统测试过程中,我们输入了部分记录,并进行了包括查询、维护、删除、打印在内的各项性能的测试和较长时间的反复运行,总体讲,系统运行较为平稳,所占空间小,各种功能实现灵活,

数据处理准确无误,基本符合设计要求,具有较好的保密性能,基本满足设计要求。

5.3系统存在的问题

经过老师指导和小组同学的共同测试,我们设计的“学生公寓管理系统”基本达到设计要求。但是也存在一些问题主要是:

一、由于系统只是经过短时间、小规模试用行,投入正常使用后,在长时间、大量数据下运行,其稳定性如何,还有待进一步调整。

二、在功能设计上,我们感到由于时间仓促和水平有限,于现代公寓管理的要求还有很大的距离,还需要进一步充实和规范。

三、作为一个产品,其完美的外型设计会起到画龙点睛的作用,就本系统

34

而言,我做的不够好。

参考文献

1. 肖金秀 陈少涌.全国计算机等级考试辅导教程(二级VISUAL FOXPRO程序设计).冶金工业出版社.2003.5

2. 谭浩强.VISUAL FOXPRO 数据库项目案例导航.清华大学出版社.2004.11 3. 罗晟 银华强 刘普艳.VISUAL FOXPRO 8数据库项目案例导航.清华大学出版社.2005.1

35

主控表单(设计受职 权限)表单

36

因篇幅问题不能全部显示,请点此查看更多更全内容