职工工资管理系统论文x.docx

上传人:b****8 文档编号:30391972 上传时间:2023-08-14 格式:DOCX 页数:65 大小:712.27KB
下载 相关 举报
职工工资管理系统论文x.docx_第1页
第1页 / 共65页
职工工资管理系统论文x.docx_第2页
第2页 / 共65页
职工工资管理系统论文x.docx_第3页
第3页 / 共65页
职工工资管理系统论文x.docx_第4页
第4页 / 共65页
职工工资管理系统论文x.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

职工工资管理系统论文x.docx

《职工工资管理系统论文x.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统论文x.docx(65页珍藏版)》请在冰豆网上搜索。

职工工资管理系统论文x.docx

职工工资管理系统论文x

分类

编号

 

经济管理学院

数据库综合训练课程设计

 

课程设计题目工资管理系统

专业班级信管L032

学生姓名路丹

学号031607224

指导教师陈军霞张娜萍

2006年04月08日

1.问题描述

1.1背景

随着经济的发展,企业正向着大型化、规范化发展,而对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加,在这种情况下,单靠人工来处理员工的工资显得力不从心,而且极易出错。

该系统的具体任务就是设计一个企业工资的数据库管理系统,由计算机来代替人工执行一系列诸如增加新员工、删除旧员工、工资修改、查询、统计、打印等操作。

1.2数据需求

●尽量利用企业现有的软硬件环境,采用先进的管理系统开发方案,达到充分利用企业现有资源,提高系统开发水平和应用效果的目的;

●系统符合企业工资管理的规定,满足企业相关人员日常使用的需要,并达到操作过程中的直观、方便、使用、安全等要求;

●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员进行补充、维护。

●系统具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。

1.3事务需求

通过使用该系统,使企业的工资管理工作系统化、规范化、自动化,从而提高企业管理效率。

开发的总体任务是使办公人员可以轻松快捷的完成工资管理任务。

2.解决方案(或数据库系统设计)

2.1E-R模型设计

本实例根据上面的设计规划出的实体有:

员工实体、员工工资实体、工资等级实体、部门岗位体、工资实体、公司福利实体。

实体和实体之间的关系E---R图如图1-1所示。

公司福利

图1-1实体之间关系E-R图

2.2数据字典

数据库需求分析是数据库设计的第一个阶段,是非常重要的一个阶段。

这个阶段主要是确定基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础。

在仔细调查企业工资管理过程的基础上,我们得到本系统所处理的数据流程,如图1-2所示。

员工工资

图1-2数据流程图

通过对企业工资管理的内容和数据流程分析,针对本实例,我们设计的数据项和数据结构如下:

●员工基本情况。

包括的数据库项有员工号、员工姓名、性别,所在部门、身份证号、生日、籍贯、国籍、民族、婚姻状况、健康状况、参加工作时间、员工状态、状态时间、家庭住址、联系电话等。

●工资级别和工资金额。

包括的数据库项有工资等级、工资额。

●企业部门及工资岗位信息。

包括的数据库项由部门名称、工作岗位名称、工作岗位工资等。

●工龄的工资金额。

包括的数据库项有工龄及对应工资额。

●公司福利表。

包含的数据库项有福利名称、福利值。

●工资信息。

包含的数据库项有员工号、员工姓名、员工基础工资、员工岗位工资、员工工龄工资、公司福利、员工实得工资。

2.3数据库逻辑结构设计

在实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。

工资管理系统数据库中各个表格的设计结果见表1-6所示。

每个表格表示在数据库中的一个表(只列出与本例相关的字段)

表1—1为员工基本状况表

PERSONNEL员工基本状况表

列名

数据类型

可否为空

说明

PID

CHARACTER(3)

NOTNULL

员工号(索引)

PNAME

CHARACTER(10)

NULL

员工姓名

PSEX

CHARACTER

(2)

NULL

员工性别

PDEPT

CHARACTER(10)

NULL

所在部门

PJOB

CHARACTER(10)

NULL

所在岗位

PINDATE

CHARACTER

(2)

NULL

工龄

PRANK

CHARACTER

(2)

NULL

工资等级

表1—2为工资等级表

PANK工资等级表

列名

数据类型

可否为空

说明

RNAME

CHARACTER

(2)

NOTNULL

工资等级(索引)

RSALARY

NUMERIC(10,2)

NULL

相应工资额

表1—3为工作岗位情况表

DEPT工作岗位情况表

列名

数据类型

可否为空

说明

JOBNAME

CHARACTER(10)

NULL

工作岗位名称(索引)

JOBSALARY

NUMERIC(10,2)

NULL

岗位工资

表1—4为工龄工资表

GONGLING工龄工资表

列名

数据类型

可否为空

说明

GNAME

CHARACTER

(2)

NOTNULL

工龄(索引)

GSALARY

NUMERIC(10,2)

NULL

工龄工资额

表1—5为公司福利表

WELFARE为公司福利表

列名

数据类型

可否为空

说明

WNAME

CHARACTER(10)

NOTNULL

福利名称(索引)

WMONEY

NUMERIC(10,2)

NULL

福利费用

表1—6为系统的用户口令表

系统的用户口令表USER_PSWD

列名

数据类型

可否为空

说明

TMS_USER

CHARACTER(10)

NOTNULL

用户名(索引)

TMS_PSWD

CHARACTER(10)

NOTNULL

口令

3系统实现

3.1开发环境

开发工具:

VisualFoxPro6.0;

运行环境:

Windows9X或Windows2000。

3.2系统流程图

系统功能分析

●系统数据初始化;

●员工基本信息数据的输入;

●员工基本信息数据的修改、删除;

●企业工资的基本设定;

●员工工资的浏览;

●员工个人工资表的查询;

●工资报表的打印

在系统功能分析的基础上,得到如图1-3所示的系统功能模块图。

打印

图1-3系统功能模块图

3.3程序调试情况

在设计的过程中,预览中发现报表的行之间有空白,无法连接成表,如图1-41所示。

图1-42错误的报表

这是由于报表栏中的细节栏设计又有误,下面是对应的设计,如图1-42所示。

可以看出两个空白是相同的,因此要想打印出没有空白的表,应将小细节的底框紧贴在表的下缘,如图1-43所示。

图1-43错误的细节设置

3.4数据库结构的实现

在需求分析、概念结构设计的继承上得到数据库的结构之后,我们就可以在VisualFoxPro数据库系统中实现该逻辑结构。

首先建一个名为salary(工资)的项目,保存磁盘中。

例如D:

\salary.可以直接在VisualFoxPro的文件中选择“新建”→“项目”。

打开salary项目后,在项目管理器中展开数据文件夹,鼠标选中数据库,单击右键的“新建”按钮,如图1-4所示,存储为D:

\salary\datebase\salary.dbc。

图1-4新建数据库

在弹出的数据库设计器中单击鼠标右键,选择“新建表,如图1-5所示。

为数据库添加数据表,表的具体内容见表1-1—表1-6。

下面以表6为例。

图1-5新建数据表

在选择“新建表”命令后,在弹出的对话框中将表存储为:

D:

salary\datebase\tms.dbf。

在弹出的表设计器中填写表的内容,如图1-6所示。

图1-6设计表的内容

与表1-6比较,可以发现表的字段名就是列名。

要注意的是在以后的编写程序中对数据库的数据的操作通常是引用表的字段,因此在设计字段是要挑选容易理解的名称。

字段设置完成后,单击“确定”按钮后为表输入数据。

3.5各个功能模块的创建

经过前面对系统功能的分析,我们将企业工资管理系统分为4个模块:

系统主界面、员工信息管理、工资基本设定和工资汇总。

3.5.1系统主界面的设计

为了让使用者有一个轻松操作的界面,系统的主界面设计要求界面友好、功能分块明确、美观大方。

下面将以主界面的设计为例,仔细讲解表单的创建。

首先,展开项目管理器中的文档,选中表单,单击右侧“新建”按钮。

如图1-7所示。

图1-7新建表单

在弹出的对话框中单击“新建”按钮后,会弹出“表单设计器”的界面,如图1-8所示。

图1-8为设计的表单

可以根据界面的需要向其中添加控件如图1-9所示。

图1-9向表单中添加控件

更改各个控件的属性值为所属值,各更改值见表1-7。

表1-7控件属性更改值

控件

Caption

Alignment

Picture

Stretch

Form1

企业工资管理系统

Label1

欢迎使用

2-中央

Command

员工基本信息

Command

员工基本设定

Command

工资汇总

Command

个人工资设定

Command

退出

Image1

D:

\salary\main.jpg

2-变比填充

 

Caption属性表示控件的显示名,是为了使用者方便特意设计的名称,为一些常用的提示信息。

Alignment为控件中Caption的位置状态,对于Label(标签),有“0-左(缺省)”、“1-右”、“2-中央”等3种设置。

另外,设置Label的Font(字体)和Fontsize(字体大小)属性可以改变Caption显示的字体及大小。

在Picture中可以把控件的界面设为图象,以便使用者能更形象地使用所开发的软件。

对应Image(图象)控件,则表示显示在其中的图象。

其属性值应为要显示的图象的路径和文件名。

并应设置其Streth属性为“2-变比填充”以使图象能正确显示。

更改之后的表单如图1-10所示。

图1-10更改后的表单

要注意的是向容器中添加按钮时候,必须先添加容器,然后在容器单击鼠标右键,选择编辑,此时容器边缘变为绿色,表明此时容器正处于编辑状态。

此时添加按钮到容器中才能是按钮真正处于容器中,如果直接添加,则按钮实际上处于与容器同一层次上。

可以通过查阅表单的结构层次来理解,如图1-11所示

图1-11表单中的控件的结构

控件添加结束后,表单并未完成设计,此时的表单运行后会发现只有一个空壳,单击其中的按钮没有任何反应。

因此,此时需要为表单设计事件响应。

选中Command1(按钮1),双击后弹出控件“方法程序”对话框,如图1-12所示.

图1-12为控件Command1设置Click事件程序

填写代码如下:

Dofromsalary\form\personnel

*打开下级表单pensonnel..scx,salary\form\personnel为它的路径

对Command2(按钮2)、Command3(按钮3)、Command4(按钮4)、Command5(按钮5)、进行同样的操作。

Command2的Click代码为:

doformsalary\form\dataformat

*打开下级表单dateformat

Command3的Click代码为:

doformsalary\form\result

*打开下级表单result

Command4的Click代码为:

doformsalary\form\grcx

*打开下级表单grect

Command5的Click代码为:

thisform.release

clearevents

*释放表单,结束程序

为了使表单更富动感,这里设计了一个闪烁效果,闪烁的对象为“Label”。

选择Timer(记时器)控件,双击后填写其Timer的事件代码:

ifi=0

thisform.label1.visible=.F.

*使Label1不可见

i=1

else

thisform.label1.visible=.T.

*使Label1可见

i=0

endif

设置Timer的Interval属性为“750”。

其作用是控制Timer的执行间隔时间,单位为ms。

既是每隔0.75s执行一次Timer控件的Timer事件。

应用类型的方法还可以随时间推移转变Image1控件里的图像。

注意Timer事件代码中使用了变量i来控制,因此应先声明该变量。

为表单的Init事件添加代码:

Publici

i=0

*声明全局变量i

到此为止,本程序的主界面已设计完成,记住要储存为“D:

\salary\form\ksjm.scx”,以后设计的表单都会放在“D:

salary\form”目录下,以便其他程序员管理。

接下来进入其他表单的设计。

3.4.2员工信息模块的设计

本模块包含的功能有:

员工信息浏览、增加删除修改员工记录、根据查询条件查询员工记录、显示查询结果。

要实现的功能较多,一个表单不可能容纳下所有空件,所以需要使用表单集或页框。

这里使用页框来实现。

新建表单Personal,存储”D:

\salary\form\personnel.scx”。

直接拉伸表单至合适大小。

向表单中加入控件,如图1-13所示

图1-13表单的基本控件

本表单需要对数据库中的表进行操作,因此必须将该表加入到表单的数据环境中。

在表单中单击鼠标右键,选择”DateEnviroment”(数据环境),在弹出的对话框中添加需要的表,如本表需要添加表”Personnel”。

1.“一览”子页面的设计

将表单数据环境中的表”Personnel”的字段添加到表单中,如图1-14所示。

图1-14推拽字段到表单中

注意,此时添加到表单的字段处于与页框同一层次,将其添加到页框的子页面1种,对页框的操作方法与容器类似。

向子页面1中添加控件,如图1-15所示。

图1-15子页面1控件

下面列出更改值,如图表1-8所示

控件属性更改值表

控件

Caption

Alignment

PageCount

FontSize

Form1

员工信息

Label1

员工信息

2-中央

Page1

一览

3

华文彩云

Command1

增加新记录

Command2

修改这条记录

Command3

删除这条记录

Command4

取消操作

Command5

退出

如图1-15所示,该页面使用了,“类”,在VisualFoxPro中使用类可以大大节省开发时间,简化系统的设计工作,并方便系统的维护和修改。

如图1-16位添加的类——导航条。

图1-16查询子页面

该导航条包含4个基本功能。

●“上一个”按钮使记录后退一个;

●“第一个”按钮使记录后退至表首;

●“下一个”按钮使记录前进;

●“最后一个”按钮使记录前进至表尾;

下面给出按钮的Click事件代码。

按钮“上一个”的Click事件代码:

Skip-1

*记录向后退一个

Ifbof()

*判断是否为第一个记录,如是,bof()返回“真”(.T.)

Messagebox("已是第一个记录","48","信息窗口")

mand1.enable=.f.

mand2.enable=.f.

skip

else

mand1.enable=.t.

mand2.enable=.t.

endif

mand3.enable=.t.

mand4.enable=.t.

*根据实际情况给出各个按钮的状态

Thisfrom.refresh

在按钮“第一个”的Click事件中输入如下代码:

gototop

mand1.enable=.f.

mand3.enable=.t.

mand4.enable=.t.

*根据实际情况给出各个按钮的状态

Thisfrom.refresh

在按钮“下一个”的Click事件中输入如下代码:

Skip

Ifeof()

*判断是否最后一个记录,如是,eof()返回“真”(.T.)

Messagebox("已是最后一条记录","48","信息窗口")

skip-1

mand3.enable=.f.

mand4.enable=.f.

else

mand3.enable=.t.

mand4.enable=.t.

endif

mand1.enable=.t.

mand2.enable=.t.

*根据实际情况给出各个按钮的状态

Thisform.refresh

在按钮“最后一个”的Click事件如下代码:

gotobottom

mand3.enable=.f.

mand1.enable=.t.

mand2.enable=.t.

*根据实际情况给出各个按钮的状态

thisform.refresh

为保证表中的数据不被误操作修改,请将页面中的各文本框的“Enabled”属性设为“.F.”。

按钮“取消操作”的“Enabled”属性设为“.F.”。

为“增添新记录”添加Click事件代码:

thisform.pageframe1.page1.fy1.enabled=.F.

*使导航条不可用

mand2.enabled=.F.

*使“修改”按钮不可用

mand3.enabled=.F.

*使“删除”按钮不可用

mand4.enabled=.T.

*使“取消”按钮可用

ifmand1.caption='增加新记录'

thisform.pageframe1.page1.txtpid.enabled=.T.

thisform.pageframe1.page1.txtpname.enabled=.T.

thisform.pageframe1.page1.txtpsex.enabled=.T.

thisform.pageframe1.page1.txtpjob.enabled=.T.

thisform.pageframe1.page1.txtpindate.enabled=.T.

thisform.pageframe1.page1.txtprank.enabled=.T.

*使各文本框可用

appendblank

*添加空行到表的末尾

mand1.caption='增加确认'

*将本控件的Caption更改为“增加确认”

thisform.pageframe1.page1.refresh

*刷新本页面

thisform.pageframe1.page1.txtpid.setfocus

*将鼠标焦点设定到文本框1else

getid=alltrim(thisform.pageframe1.page1.txtpid.value)

getname=alltrim(thisform.pageframe1.page1.txtpname.value)

getsex=alltrim(thisform.pageframe1.page1.txtpsex.value)

getjob=alltrim(thisform.pageframe1.page1.txtpjob.value)

getindate=alltrim(thisform.pageframe1.page1.txtpindate.value)

getrank=alltrim(thisform.pageframe1.page1.txtprank.value)

ifempty(getid)orempty(getname)orempty(getsex)orempty(getjob)orempty(getindate)orempty(getrank)

*判断填入的资料是否齐全

messagebox("资料不足",48,"错误")

如果错误,弹出提示对话框

else

mand1.caption='增加新记录'

*将本控件的Caption更改为“增加新记录”

tableupdate(.t.)

*表单的更改确认

tableupdate(.t.)

thisform.pageframe1.page1.txtpid.enabled=.F.

thisform.pageframe1.page1.txtpname.enabled=.F.

thisform.pageframe1.page1.txtpsex.enabled=.F.

thisform.pageframe1.page1.txtpjob.enabled=.F.

thisform.pageframe1.page1.txtpindate.enabled=.F.

thisform.pageframe1.page1.txtprank.enabled=.F.

thisform.pageframe1.page1.fy1.enabled=.T.

mand2.enabled=.T.

mand3.enabled=.T.

mand4.enabled=.F.

*恢复本子页面的各控件的状态

endif

endif

上段代码的功能是添加一个新的员工的信息到数据库中。

为“修改这条记录”按钮添加Click事件代码:

mand1.enabled=.F.

*使“增加”按钮不可用

mand3.enabled=.F.

*使“删除”按钮不可用

mand4.enabled=.T.

*使“取消”按钮可用

thisform.pageframe1.page1.fy1.enabled=.F.

*使导航条可用

ifmand2.caption='修改这条记录'

thisform.pageframe1.page1.txtpid.enabled=.T.

thisform.pageframe1.page1.txtpname.enabled=.T.

thisform.pageframe1.pa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1