目录
1
系统运行环境设计在windows95平台下运行,程序设计语言选择Visual FoxPro 6.0。 系统的硬件要求为586微型计算机,8M以上的内存,500M以上的外存。
一.逻辑结构设计
此阶段的任务是把概念结构设阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构,其转换规则如下:
1. 对于1:1的联系可以转换为一个独立的关系模式,也可一与任意一端对应实体
合并
2. 对于1:n的联系可以转换为一个独立的关系模式,也可一与 n意一端对应实体合并
3. 对于m:n的联系可以转换为一个独立的关系模式
4. 3个或3个以上实体间的一个多元联系可以转换为一个关系模式 5. 各实体分别转换为一个关系模式
因此由上一步E-R图可得到工资管理系统的关系模型为: 部门信息表(部门名称,部门人数,部门负责人)
协管员信息表(协管员编号,姓名,性别,年龄,出生日期,民族,,籍贯,工作时间) 考勤表(工作楼栋,出勤,请假,缺岗,日期)
奖惩表(工作楼栋,请假扣款,缺岗扣款,奖金,时间)
协管员工资表(工作楼栋,应得总计,扣除总计,实发工资) 用户表(用户号,用户名,密码,权限)
二. 数据库物理设计 1.协管员信息表如表1
表1 协管员信息表
编号 1 2 3 4 5 6 7 8 属性 协管员编号 姓名 性别 年龄 出生日期 民族 籍贯 工作时间 数据类型 char char char Int datatime char char datatime 长度 10 10 10 4 8 10 10 8 是否为空 否 是 是 是 是 是 是 是 2.部门信息表如表2
表2 部门信息表 编号 1 2
属性 部门名称 部门人数 数据类型 char int 长度 10 4 是否为空 否 是 2
3 部门负责人 char 10 是
3.考勤表如表3
表3 考勤表
编号 1 2 3 4 5 属性 工作楼栋 日期 出勤 请假 缺岗 数据类型 char datatime int int Int 长度 10 8 4 4 4 是否为空 否 否 是 是 是 4.协管员工资表如表4
表4 协管员工资表 编号 1 3 3 4 属性 工作楼栋 应得工资 扣除总计 发实工资 数据类型 Char mony mony mony 长度 10 8 8 8 是否为空 否 是 是 是 5.奖惩表如表5
表5 奖惩表
编号 1 2 4 5 6 属性 工作楼栋 请假扣款 缺岗扣款 奖金 时间 数据类型 Char mony mony mony Datatime 长度 10 8 8 8 8 是否为空 否 是 是 是 是 6.用户表如表6
表6 用户表
编号 1 2 3 4 属性 用户号 用户名 密码 权限 数据类型 Char varchar int Char 长度 10 50 4 10 是否为空 否 是 是 是 3
三.系统实施
系统实施部分根据上一部分介绍的设计方案,完成了计算机系统的程序设计与调试、系统初始数据的录入以及向计算机系统的转换等工作。
在本工资管理系统里,初次使用系统通过运行比较简单的数据录入、工资查询,报表录入这样一些基本的操作,包括职工证号、姓名及其他信息对照表,部门代码表,以及其他固定数据。之后,如欲修改信息可通过数据维护进行修改。
若有工资变动,可通过建立扣款、补贴文件内各模块可进行当月扣款补贴等变动数据进行录入和修改。
3.1登录语句 Form1.init:
*open data .\\data\\zg-da Form1.activate:
Thisform.txtpass.setfocus Command2.click(进入系统): If used(“setup”) Sele setup Eles
Use.\\data\\setup Endif
Loca for itms=”password” If found () If
Uppe (alltrim(thisform.txtpass.value))==upper(alltrim(valur)) Do form form\\begin Thisform.release Else
E=messagebox(“口令错误请重新输入!”,0+48+0,”警告”)
4
Thisform.txtpass.setfocus Endif Else
Do form form\\begin Thisform.release Endif
Command3.click(退出系统):
If type(“thisform.parent”)=”0” Thisformset.release Else
Thisform.release Endif
Clear events
Release all extended
3.2关系图
5
3.3功能实现语句:
(1)根据等级表的信息设定工种表中员工的基本工资
图3.31工资等级表
update 工种 set 工种.基本工资=等级.基本工资 from 工种,等级where 工种.等级编号=等级.等级编号
(2)根据业绩表的信息设定工种表中员工的月奖金
图3.32奖金等级表
update工种set工种.月奖金=业绩.月奖金 from 工种, 业绩 where工种.部门编号=业绩.部门编号
(3)设每个员工加班一小时可获得50的加班津贴,则每个员的所得津贴为: update津贴 set 所得津贴=加班时间*50
(4)假设每个员工迟到一次应扣的工资为10,缺勤一次应扣的工资为二十,每个员工的考勤情况应扣工资可表示为:
update考勤set 应扣工资=迟到次数*10+缺勤次数*20
(5)每个员工的实发工资应为基本工资扣除应扣工资后的实际工资: update考勤set 实发工资=基本工资-应扣工资
(6)计算每个员工的实发金额:
update月工资set 实发金额=基本工资-应扣工资+所得津贴+月奖金
(7)分别计算每个人的年奖金、年基本工资和年终奖金: update 年终奖金表 set 年奖金=月奖金*12
update 年终奖金表 set 年基本工资=基本工资*12
update 年终奖金表 set 年终奖金=(年奖金+年基本工资)/12
(8)新建一个视图:员工工资情况 create view 员工工资情况 as
select 员工编号,部门编号,等级编号,月奖金,基本工资 from工种
6
(9)在该视图中可进行单个员工工资的查询操作 select * from 员工工资情况
例如:查询部门编号为05的所有员工的奖金情况的语句为:
select 员工编号,月奖金 from 员工工资情况 where 部门编号=05 查询等级编号为02的所有员工的工资情况的语句为:
select 员工编号,基本工资 from 员工工资情况 where 等级编号=02 查询员工编号为06的员工的工资情况的语句为:
select 员工编号,基本工资 from 员工工资情况 where 员工编号=06
(10)管理权限的设置:
把对考勤情况表的查询权限授予所有用户(月工资和津贴表权限同考勤表) grant select on table考勤 to public
把对员工基本信息表的修改权限授予管理员(其余表的修改权限同员工基本信息表)grant update on table 员工 to 管理员
7
因篇幅问题不能全部显示,请点此查看更多更全内容