版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、可视化与面向对象程序设计课程设计报告 题目 工资管理系统指导老师 学号 姓名 目 录一、课题背景及意义2二、需求分析21. 业务需求32. 功能需求33. 数据需求4三、系统体系结构及功能设计51. 系统组成52. 数据库设计5(一)概念结构设计5(二)逻辑结构设计6(三)数据库模式定义6四、数据库详细设计81. 触发器列表82. 存储过程列表8五、系统实现91. 模块简述92. 模块设计10六、参考文献26一、 课题背景及意义工资管理既是企业劳动人事管理的重要方面,同时也是企业财务管理的重要方面,因为它是和人、资都相关的方面。工资管理需要和员工人事管理连接,同时连接工时考勤和加班情况等等,来
2、生成企业每个职工的基本工资、津贴、实际发放工资等。工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。手工进行工资发放工作,需要反复地进行抄写、计算,不仅花费财务人员大量的时间,而且往往由于抄写不慎,出现张冠李戴,或者由于计算机的疏忽,出现工资发放错误的现象。同时工资的发放具有较强的时间限制,必须严格按照单位规定的时间完成计算和发放工作。正是工资管理的这种重复性、规律性、时间性,使得工资管理计算机化成为可能。计算机进行工资发放工作,不仅能够保证工资核算正确无误、快速输出,而且还可以利用工资数据库对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理。不同的企业有着不同
3、的人事制度、财务制度,也就决定了不同的企业具有不同的工资制度。本系统运用了一般公司的工资计算公式,即根据员工的职务工种来确定基本工资,根据出工情况来扣除缺勤费,根据加班情况发放津贴。由于是一个人在做系统,时间上也有限制,所以在保险,年终奖金等方面没有涉及到。但总体上是按照的工资管理的有关原理和技术来做的。二、 需求分析在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统。这里把系统的层次划分为了四个部分:系统用户管理,员工信息管理,工资有关信息设置,月工资管理。主要能够实现以下功能: 实现用户登录,进行系统用户的管理,判断
4、; 能够实现对公司员工的基本信息的查询和编辑管理; 能够修改工资的标准和员工的工作情况; 能够对工资实行查询,简单的统计1. 业务需求从系统用户角度考虑的业务流程图:这里用户是指包括相关部门的所有用户图2.1 业务流程图2. 功能需求表1 系统功能列表编号功能名称功能说明1.1登录用户输入用户名和密码登录系统1.2.1增加用户增加一个系统用户1.2.2删除或修改用户等级修改用户的基本等级或删除用户1.3修改密码用户密码的修改2.1员工信息添加添加员工记录2.2员工信息删改删除或者修改员工的信息2.3.1按姓名检索模糊查询,输入员工姓名查询员工信息2.3.2按部门检索按照部门查询员工信息3.1工
5、作情况更改更改员工的加班,缺勤记录3.2增加加班记录增加一条员工的加班记录3.3增加缺勤记录增加一条员工的缺勤记录4.1更改工资标准更改各职称相应的工资标准4.2增加工资记录向数据库中增加一条工资记录4.3生成工资按月查询工资记录4.4工资统计按部门统计工资情况4.5个人工资查询实现对单个人的工资查询3. 数据需求系统处理的对象有:系统用户信息:用户名,登录密码,用户等级,说明公司员工信息:员工编号,员工姓名,性别,部门编号,职称编号,参加工作时间部门信息:部门编号,部门名称,备注工资标准:职称号,职称名,职称基本工资,职称补贴员工加班信息:员工编号,年月,加班天数,加班补贴员工缺勤信息:员工
6、编号,年月,缺勤天数,缺勤扣除月工资:员工编号,年月,职称基本工资,职称补贴,津贴,扣除,实发工资数据流图和数据字典如下: 顶层数据流图:图2.2 顶层数据流程图 0层数据流图:图2.3 0层数据流程图三、 系统体系结构及功能设计1. 系统组成系统开发的总体目标是实现工资管理的系统化和自动化,保证工资核算正确无误、快速输出。主要任务是对系统用户信息、员工信息、工资信息等操作及外理。本系统为c/s结构、运行平台为微软vc+6.0以上版本。以及sql sever2000以上版本。下图为系统结构图:图3.1 系统结构图2. 数据库设计(一)概念结构设计 概念设计阶段主要是将需求分析阶段得到的用户需求
7、抽象为信息结构(概念模型)的过程。根据之前的分析,数据库应该主要的实体有员工,职称(工资标准),月工资以及工作信息,以及系统用户信息。 最后得到的实体关系图如下: 图3.2 实体关系图 (二)逻辑结构设计 将e-r图转化为关系模式:在设计时,将一个1:n联系的单方主码加至多方。一个实体单独转化成一张表。根据设计原则和以上e-r图,转化为下面四张表:员工表:employees(employee_id, employee_name, sex, department_id, title_id, work_time)部门表: department(department_id,department_na
8、me,note)(职称表)工资标准表:standard(title_id,title_name,title_salary,title_allowance)考勤情况表:attendance(employee_id, absent_month, absent_daynumber,losemoney)加班情况表:jiaban(employee_id, jiaban_month, jiaban_daynumber, getmoney)月工资表:salary(employee_id,salary_date, title_salary,title_allowance,jintie ,kouchu ,rea
9、l_salary)(三)数据库模式定义表3.1:员工信息表列名数据类型取值约束索引否主键/外键可否为空说明employee_idchar(6)0001-9999clustered主键not null员工编号employee_namechar(10)not null员工姓名sexchar(10)男或女not null员工性别department_idchar(10)外键not null所在部门号title_idchar(10)外键not null员工职称号work_timevarchar(50)1990.01 not null参加工作时间 表3.2:部门信息表列名数据类型取值约束索引否主键/外键
10、可否为空说明department_idchar(10)001-050clustered主键not null部门编号department_namechar(10)not null部门名称notevarchar(50)null说明 表3.3:加班情况表列名数据类型取值约束索引否主键/外键可否为空说明employee_idchar(6)clustered外键not null员工编号jiaban_monthvarchar(50)clustered主键not null年月jiaban_daynumberint(4)0-7not null加班天数getmoneymoney(8) not null补贴表3.
11、4:缺勤信息表列名数据类型取值约束索引否主键/外键可否为空说明employee_idchar(6)clustered外键not null员工编号absent_monthvarchar(50)clustered主键not null年月absent_daynumberint(4)0-20not null缺勤天数losemoneymoney(8) not null扣除表3.5:工资标准表列名数据类型取值约束索引否主键/外键可否为空说明title_idchar(10)001-020clustered主键not null职称编号title_namechar(10)not null职称名称title_sa
12、larymoney(8)not null基本工资title_allowancemoney(8) not null职称补助表3.6:月工资表列名数据类型取值约束索引否主键/外键可否为空说明employee_idchar(6)0001-9999clustered外键not null员工编号salary_datevarchar(50)clustered主键not null年月title_salarymoney(8)not null基本工资title_allowancemoney(8) not null职称补助jintiemoney(8)not null补贴kouchumoney(8)not null
13、扣除real_salarymoney(8) not null实际工资表3.7:系统用户表列名数据类型取值约束索引否主键/外键可否为空说明user_namechar(10)clustered外键not null用户名passwordchar(10)not null密码gradeint(4)1-4not null身份等级notechar(50)nul说明四、 数据库详细设计 数据库的建立是直接在企业管理器中建的,数据库中的表清单在之前已经列出,触发器的具体定义和使用原理以及部分存储过程的定义会在详细设计中做具体的说明,这里给出触发器的列表和存储过程的列表和部分存储过程的定义。1. 触发器列表触发器
14、编号表(建立在哪张表上)触发器名称触发器的作用t1attendanceinsert_attendance保证attendance中数据的准确性t2jiabaninsert_jiaban保证jiaban中数据的准确性t3salaryinsertsalary保证插入的数据与工资标准相符合t4salaryinsertsalary1保证插入的数据与工作情况相符合t5salaryinsertsalary2保证插入的数据与工作情况相符合t6salarysalaryupdate自动更新实发工资t7jiabansalaryupdatebutie更改工作情况时自动更新工资表t8attendancesalaryu
15、pdatekouchu更改工作情况时自动更新工资表t9standardstandardupdate更改工资标准时自动更新工资表t10standardstandardupdate1更改工资标准时自动更新工资表2. 存储过程列表存储过程编号存储过程名称作用p1deleteemployee删除一个员工记录p2absentadd增加一条缺勤记录p3jiabanadd增加一条加班记录p4search_by_employeename按员工名模糊查询p5employeeadd增加一条员工记录p6salaryadd增加一条工资记录存储过程deleteemployee的定义:create proc delete
16、employee(id char(6)asbegindelete from employeeswhere employee_id=idendreturn go存储过程employeeadd的定义:use salary_databasegocreate procedure employeeadd(employeeid char(6),employee_name char(10),sex char(10),department_id char(10), title_id char(10),work_time varchar(50)as begininsert into employeesvalue
17、s(employeeid,employee_name,sex,department_id,title_id,work_time)endreturngo五、 系统实现1. 模块简述本工资管理系统主要的所有模块主要是分为系统,人事管理,工资设置,工资管理,连接数据库的类五个部分,下面为这五个部分的再分类,共有20个模块。下面为系统的模块表:模块类别模块编号模块名称公共模块模块功能人事管理c1addemp增加一个员工c2yuangonggengshan更改员工的部门或职称,删除一个员工c3yuangongjiansuo按照部门检索员工信息c4searchbyemployee按照员工的姓名检索员工信息
18、c5employee是员工模块系统c6denglu登录模块,判断用户具有的权限c7user_是用户模块,含有用户表中的字段c8yh_shangeng删除或者更改用户的权限c9tianjiayonghu添加一个用户c10xiugaimima已登录的用户修改密码工资设置c11attendanceandjiaban更改员工的加班及考勤情况c12addjiabanjilu增加一条加班记录c13addqueqinjilu增加一条缺勤记录工资管理c14standardtiaozheng工资标准调整c15addsalary增加工资记录c17gongzishengcheng按月生成工资c18gongzicha
19、xun查询员工的工资记录c19tongji按部门统计某月的工资记录连接模块c20adoconn是连接数据库2. 模块设计下面给出模块的背景,设计思路,算法,界面以及关键代码,比较简单的模块就仅给界面设计以及算法设计,比较复杂的模块会给出相应的数据库有关触发器,存储过程和视图的设计。由于模块太多,功能类似的模块只用一个做具体说明。 (一). user_ 用户模块 user_模块是公共模块,denglu, yh_shangeng,tianjiayonghu,xiugaimima模块都用到了user_模块。user_类是为系统用户表创建的一个类:要利用ado访问数据库,类的成员变量对应表的列,类的成
20、员函数对应表的操作。但本系统不是为每一个表都创建了类。 user_类中的成员变量和数据库中user_表中的字段是一致的,成员函数有如下五个。函数名说明void sql_insert(); 插入一个用户记录的函数,主要是在添加用户的模块中使用void sql_delete(cstring icno);删除一个系统用户记录的函数,在用户更删中用到void sql_update(cstring icno); 更改系统用户权限的函数,在用户更删中用到void sql_xiugaimima(cstring icno1,cstring icno2);修改密码的函数,修改密码模块使用int haveyh(c
21、string icno);判断用户是否存在函数,在插入用户记录模块中使用由于此模块为公共模块,所以具体的算法在一下用到这些函数的模块中给出。(二). denglu 用户登录模块登录模块的主要目的,就是判断用户的身份,在菜单界面上显示次用户可以使用的操作。用户所有的操作都是在已经登录的情况下经行的。所以在登录前,菜单中除了“登录”为已激活状,其他所有的操作都是非激活态。(1). 界面设计: 图4.1 登录界面 图4.1为登录界面的设计。在用户输入用户名及密码之后,如果是合法用户,显示登录成功的消息。如果用户名密码不匹配或是不存在此用户显示核实用户名及密码的消息。登录成功后,在数据库中的user_
22、表中判断该用户的权限,然后更新菜单。由于存在更新激活菜单的功能,所以在view类中响应“确定”消息。在view类中还应该有一个成员变量用于记录用户的权限等级,以便更新界面。(2). 程序流程图:图4.2 登录模块程序流程图 (3). 关键代码:adoconn.oninitadoconn();_bstr_t sql;sql=select grade from user_ where user_name=+dl.m_yhm+ and password=+dl.m_mm+ ;_recordsetptr m_precordset=adoconn.getrecordset(sql);if(m_preco
23、rdset-adoeof=0)yh_dengji=(char *)(_bstr_t)m_precordset-getcollect(grade);messagebox(登录成功);if(m_precordset-adoeof!=0)messagebox(请核实用户名和密码);(三). yh_shangeng 用户更删模块 本模块主要是用来更改用户的权限,或者是删除此用户。采用的是列表控件显示用户信息和单选按钮控件来选择用户的身份,单击一条用户记录后删改用户的权限,更新数据酷里面的用户信息。删改之后重新刷新列表控件,由于代码比较简单,这里给出界面的设计以及程序流程图。(1). 界面设计:图4.3
24、用户删改模块界面设计(2).程序流程图:图4.4用户删改模块程序流程图 (四). tianjiayonghu添加用户模块 添加用户模块主要是给管理人员想数据库中添加一条用户记录。在输入用户名和密码,和新用户的身份级别后才允许向数据库中添加这条新用户的记录。所以在用列表控件的值更新成员变量之后,在插入记录之前要在程序中要判断这个用户是否已存在,是否已输入密码,已输入权限。早插入记录之后,再用haveyh(cstring icno)函数判断是否已经插入成功。(1). 界面设计:图4.5 添加系统用户的模块界面(2).程序流程图: 图4.6 添加系统用户模块程序流程图 (五). xiugaimima
25、修改密码修改密码是提供给用户的修改原始密码的功能的模块。用户在登录后可以使用修改密码 的操作,用户必须输入用户名,原始密码以及新密码才能够修改密码。在修改前先判断原始密码是否与输入的用户名相匹配,以及新输入的新密码是否两次相一致,还有各个需要输入的信息是否已经输入,在输入信息达到要求之后,此模块调用denglu公共模块的void sql_xiugaimima(cstring icno1,cstring icno2)函数,这个函数的第一个参数是新密码,第二个参数是用户名,修改数据库的sql语句为:sqltemp=update user_ set password=+icno1+ where us
26、er_name=+icno2+ ;修改完数据库的表后向用户反馈修改成功的信息。(1). 界面设计:图4.7 修改密码界面设计 (2).程序流程图: 图4.8修改密码模块程序流程图(六). employee,tianjiayonghu(员工模块,添加用户模块)与user_模块类似的,employee模块是公共模块,addemp,yuangonggengshan,yuangongjiansuo,searchbyemployee模块都用到了employee中的成员函数以及成员变量。这里只对用户模块和添加用户模块做详细的说明。employee类中的成员变量和数据库中employees表中的字段是一致的
27、,成员函数有如下五个。函数名说明void sql_update(cstring icno);更改员工的部门和职称,在yuangonggengshan中调用void sql_delete(cstring icno);删除一个员工,在yuangonggengshan中调用void sql_insert();插入一条员工记录,在addemp中调用int haveyg(cstring icno);判断是否存在这个员工,在addemp中调用由于此模块为公共模块,所以具体的算法在一下用到这些函数的模块中给出。说明:addemp(增加员工记录)模块与tianjiayonghu(添加用户)模块相基本相类似,但
28、是先要获得的是用户选择的部门或职称信息,然后在向数据库中选择出该部门或者职称所对应的id号,插入数据库中的是id号,而不是用户选择的部门名和职称名。yuangonggengshan(员工更删)模块和yh_shangeng(用户更删)模块相类似。这里就仅给出插入员工记录的代码,其它就不一一列出了。(1).关键代码:(添加员工记录模块) 先从数据库中提取出所有的部门和职称信息:sql=select distinct department_name from department ;_recordsetptr m_precordset; m_precordset=adoconn.getrecords
29、et(sql);/填充组合框while(m_precordset-adoeof=0)/记录集没有移动到最后m_cdepartment.addstring(char *)(_bstr_t)m_precordset-getcollect(department_name);/下移一条记录m_precordset-movenext();sql=select distinct title_name from standard ; m_precordset=adoconn.getrecordset(sql);/填充组合框while(m_precordset-adoeof=0)/记录集没有移动到最后m_ct
30、itle.addstring(char *)(_bstr_t)m_precordset-getcollect(title_name);/下移一条记录m_precordset-movenext(); 在用户点击选择组合框之后,从数据库中提取选择用户选择的部门的id号,职称号与用户选择的部门的过程相符合的 sql=select department_id from department where department_name=+depart+ ;_recordsetptr m_precordset; m_precordset=adoconn.getrecordset(sql);departme
31、nt=(char *)(_bstr_t)m_precordset-getcollect(department_id);(2).程序流程图(添加员工记录模块): 图4.9 添加员工信息程序流程图(七). yuangongjiansuo按部门检索员工信息模块此模块是按照用户选择的部门使用select语句在建立的employeejiansuo视图中查询相应部门的员工信息.先要初始化控件从数据库中提取部门信息,响应的sql语句为:sql=select distinct department_name from department ,按照部门检索员工信息是在视图employeejiansuo中查询的,
32、相应的sql语句为:sql=select * from employeejiansuo where department_name=+depart+ 。(1).程序流程图: 图4.10部门检索员工信息程序流程图(2).视图employeejiansuo的建立:create view employeejiansuo asselect employee_id,employee_name,department_name,title_name,work_time, datediff(year,left(work_time,4),getdate()-1 as seniority from employe
33、es,standard,departmentwhere employees.title_id=standard.title_id and employees.department_id =department.department_id(3). 界面设计: 图4.11按部门检索员工信息界面设计 (4).关键代码:cstring depart;m_cdepart.getlbtext(m_cdepart.getcursel(),depart);adoconn adoconn;adoconn.oninitadoconn();_bstr_t sql;if(m_cdepart.getcursel()=0
34、)m_list.deleteallitems();sql=select * from employeejiansuo;if(m_cdepart.getcursel()0)m_list.deleteallitems();sql=select * from employeejiansuo where department_name=+depart+ ;_recordsetptr m_precordset;m_precordset=adoconn.getrecordset(sql);/根据记录集,填充列表框adoconn.exitconnect();(八). searchbyemployee按姓名检
35、索员工信息模块 此模块的实现是在存储过程search_by_employeename(name_ char(10)的基础上实现的。此存储过程实现的是模糊查询。用户在编辑框中输入要查询的员工的姓名,不详处用”_”代替,返回所有满足模糊查询的结果集。调用存储过程的语句为sql=exec search_by_employeename %+m_name+%。关键代码与按部门检索员工信息的代码类似。这里只给出存储过程,流程图,和界面设计。(1).存储过程的定义:/*员工名模糊查询*/create procedure search_by_employeename(name_ char(10)as begi
36、nselect * from employeejiansuowhere employee_name like %+name_+%end验证:(2).程序流程图: 图4.12 按姓名检索员工信息程序流程图(3). 界面设计: 图4.13按姓名检索界面设计(九). attendanceandjiaban更改员工的考勤情况及加班情况此模块提供让用户修改数据库中员工的考勤及加班信息的功能,用户登录后使用此模块,先从数据库中导出员工工作情况的视图,显示在列表控件上,用户单击一条记录后修改加班天数或缺勤天数。触动相关触发器操作,之后更新控件。更新数据库的sql语句为: update jiaban set
37、jiaban_daynumber= +jbts+ where employee_id=+m_bh+ and jiaban_month=+m_time+ 以及update attendance set absent_daynumber= +qqts+ where employee_id=+m_bh+ and absent_month=+m_time+ 。注:由于时间关系以及用户编号和年月是连续的,这里做的组合框的初始化没有像之前的增加员工或者检索员工那样用数据库中提取,然后填充组合框的方法,而是手动添加。(1)视图kongzuoqinkuang的建立:create view kongzuoqin
38、kuang as select attendance.employee_id,employee_name,absent_month,absent_daynumber,jiaban_daynumberfrom attendance,jiaban,employeeswhere attendance.employee_id=jiaban.employee_id and attendance.absent_month= jiaban.jiaban_month and employees.employee_id=jiaban.employee_id(2).程序流程图: 图4.14更改工作情况程序流程图(
39、3).触发器的定义:其中,在流程图中提到了触发器,在数据库中一共定义了10个触发器,在此模块中会使用到3个触发器,下面给出这三个触发器的定义和说明。触发器salaryupdatebutie的定义:此触发器的功能是自动更新加班表中的加班补贴字段以及工资表中的与加班补贴相对应的津贴字段,以保证数据库中数据的一致性。create trigger salaryupdatebutieon jiaban for update as beginupdate jiabanset getmoney=100*(select jiaban_daynumber from inserted)where employee
40、_id=(select employee_id from deleted) and jiaban_month=(select jiaban_month from deleted)update salaryset jintie=100*(select jiaban_daynumber from inserted)where salary.employee_id=(select employee_id from deleted)and salary.salary_date=(select jiaban_month from deleted)end触发器salaryupdatekouchu的定义:与
41、前一个触发器类似的,salaryupdatekouchu是在更新缺勤天数时,自动更新的是缺勤表中的缺勤扣除字段,同时也更新月工资表中的响应字段。create trigger salaryupdatekouchuon attendance for update asbeginupdate attendanceset losemoney=100*(select absent_daynumber from inserted)where employee_id=(select employee_id from deleted) and absent_month=(select absent_month
42、 from deleted)update salaryset kouchu=100*(select absent_daynumber from inserted)where salary.employee_id=( selecte mployee_id from deleted) andsalary.salary_date=(select absent_month from deleted)end触发器salaryupdate的定义:salaryupdate的功能是当更新工资表时自动计算salary表中的实际工资字段。这个触发器的触发往往是在前两个触发器执行后。create trigger s
43、alaryupdate on salary for updateas begin update salaryset real_salary=title_salary+title_allowance+jintie-kouchuwhere title_salary in (select title_salary from inserted) or title_allowance in (select title_allowance from inserted) end(4).界面设计:图4.15更改工作情况界面(十).addjiabanjilu和addqueqinjilu增加加班记录和增加缺勤记录
44、由于这两个模块功能类似,所以只拿addjiabanjilu模块做据图说明。增加加班记录和缺勤记录主要是让用户向数据库类增加一条员工某月的加班记录或者缺勤记录.这里添加记录用到的是增加加班记录的存储过程。调用存储过程的sql语句为sqltemp=exec jiabanadd +m_valueid+, +m_date+,+tianshu+,+losemoney+ 。用户只需输入加班的天数,在程序中自动计算出获得的加班补贴。(1). 界面设计: 图4.16增加缺勤记录界面 图4.17增加加班记录界面(2).存储过程的定义:因为两个存储过程类似,这里只具体给出其中一个use salary_databa
45、segocreate procedure absentadd(employeeid char(6),absent _month varchar(50),absent_daynumber int,losemoney money)as begininsert into attendancevalues(employeeid,absent_month,absent_daynumber,losemoney)endreturngo(3).程序流程图: 图4.18增加工作信息程序流程图(4).触发器设计(数据库完整性约束):虽然在程序端做了计算加班补贴和缺勤扣除,但是为了更好的维护数据库的完整性,在数据库
46、中依然做了两个触发器来保证输入的数据的准确性,这两个触发器,是要保证输入数据库的补贴和扣除数据是加班或缺勤天数乘以100,否则不允许插入数据。下面给出两个触发器的定义语句:触发器insert_attendance的定义: create trigger insert_attendance on attendance for insertasbeginif ( select losemoney from inserted )not in(100*(select absent_daynumber from inserted)rollbackend触发器insert_jiaban的定义: create
47、 trigger insert_jiaban on jiaban for insertasbeginif ( select getmoney from inserted )not in(100*(select jiaban_daynumber from inserted)rollbackend(5).关键代码cstring m_date,tianshu,losemoney;int j=atoi(m_valuetianshu.getbuffer(10);m_valuetianshu.releasebuffer();m_date=m_valuenian+.+m_valueyue;tianshu.f
48、ormat(%d,j);losemoney.format(%d,j*100); adoconn adoconn; adoconn.oninitadoconn();/调试_bstr_t sqltemp;sqltemp=exec jiabanadd +m_valueid+,+m_date+,+tianshu+,+losemoney+ ;adoconn.executesql(sqltemp);(十一). standardtiaozheng职称工资及职称补贴调整 工资调整是提供给财务部门修改职称的基本工资和职称津贴的模块。只有财务部门的人员才能够进行此操作。在修改了工资标准之后,在调整时间之后的工资月
49、工资表将会受到改变,并且在之后插入月工资表的数据必须要与职称表相对应。这样的一致性由两个个触发器来保证。程序流程图与之前的工作情况调整类似,这里不再给出。sql语句为update standard set title_name=+m_name+ , title_allowance = +allowance+, title_salary = +basic+ where title_id=+m_bh+ 。(1).触发器设计:触发器standardupdate触发其standardupdate是要求数据库中在日期之后的月工资中的相关记录自发动更新。create trigger standardupd
50、ate on standard for update as beginupdate salaryset title_salary=(select title_salary from inserted)where title_salary=(select title_salary from deleted) and cast(salary_date+.01 as datetime)getdate()end触发器standardupdate与上一个触发器的功能类似,standardupdate是更新的title_salary,standardupdate更新的是title_allowance。create trigger standardupdate1 on standard for update as beginupdate salaryset title_allowance=(select title_allowance from inserted)where title_allowance=(select title_allowan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论