工资管理系统数据库的设计与实现

  • 格式:wps
  • 大小:143.00 KB
  • 文档页数:6

课程设计报告课程设计题目:工资管理系统数据库的设计与实现专业:软件工程班级:10211115姓名:刘国华学号: 1021111511指导教师:邓薇地点:软件楼3082011年12 月03 日create database mysalarycreate table worker( wno char(10) primary key,wname char(10), wtime datetime,age int ,sex char(2) check(sex='男' or sex='女') ) create table workersd( wno char(10)primary key,dept char(10),pro char(10),salary money)create table proinf( dept char(10),pro char(10),salary money)create table deptinf( dept char(10),dtotal int,tsalary money)create table workerinf( wno char(10),reward money,punitive money,itime datetime)create procedure worker_pro(@wno char(10),@wname char(10), @wtime datetime,@age int ,@sex char(2))asinsert into workervalues(@wno,@wname,@wtime,@age,@sex)create procedure proinf_pro( @dept char(10),@pro char(10),@psalary money)asinsert into proinfvalues(@dept,@pro,@psalary)create procedure workerinf_pro(@wno char(10),@reward money,@punitve money,@dtime datetime)asinsert into workerinfvalues(@wno,@reward,@punitve,@dtime)create procedure workersd_pro(@wno char(10),@dept char(10),@pro char(10))asif exists(select * from worker where wno=@wno)if exists(select * from proinf where(dept=@dept and pro=@pro))begininsert into workersd values(@wno,@dept,@pro,0)endelseprint '未建立该部门,请先建立'elseprint '未建立该员工,请先建立'create trigger 完善工资信息on workersdfor insertasdeclare @s1 money,@s2 money,@wno char(10)set @wno=(select wno from inserted)select @s1=100*datediff(year,(select wtime from worker where wno=@wno),getdate())set @s2=(select salary from proinf where((dept=(select dept from inserted))and(pro=(select pro from inserted))))update workersdset salary=salary+@s1+@s2where wno=@wnoexec workersd_pro 'w1002','研发','经理'create procedure deptinf_pro(@dept char(10))asinsert into deptinfvalues(@dept,0,0)create trigger worker_trion workerfor updateasif exists(select * from workersd where wno=(select wno from inserted))beginupdate workersdset salary=salary-100*(datediff(year,(select wtime from deleted),(select wtime from inserted))) where wno=(select wno from inserted) endcreate trigger proinf_trion proinffor updateasif exists(select * from workersd where((dept=(select dept from inserted))and(pro=(select pro from inserted))))beginupdate workersdset salary=salary+(select salary from inserted)-(select salary from deleted)where (dept=(select dept from inserted)and(pro=(select pro from inserted)))endcreate trigger deptinf_trion workersdfor insertasif exists(select * from deptinf where (dept=(select dept from inserted)))begin update deptinfset dtotal=dtotal+1,tsalary=tsalary+(select salary from inserted)where dept=(select dept from inserted)endelsebeginprint '该部门还未建立,还不能输入信息'rollbackendcreate trigger deptinf1_trion workersdfor updateasif exists(select * from deptinf where (dept=(select dept from inserted)))begin update deptinfset tsalary=tsalary+(select salary from inserted)-(select salary from deleted)where dept=(select dept from inserted)endelsebeginprint '该部门还未建立,还不能输入信息'endexec workersd_pro 'w1002','研发','经理'exec worker_pro 'w1002','sb','2008',25,'男' exec worker_pro 'w1101','sb','2008',25,'女'exec worker_pro 'w1001','sa','2008',25,'男' exec worker_pro 'w1201','sd','2008',25,'女'exec proinf_pro '研发','经理',5000 exec proinf_pro '财政','经理',4000 exec proinf_pro '市场','经理',3500exec workersd_pro 'w1001','研发','经理' exec workersd_pro 'w1101','财政','经理'exec deptinf_pro '研发' exec deptinf_pro '财政' exec deptinf_pro '市场'exec workersd_pro 'w1201','市场','经理'create trigger workerinf_trion workerinffor insert,updateasif exists(select * from workersd where wno=(select wno from inserted))beginupdate workersdset salary=salary-(select reward from deleted)+(select punitive from deleted)where wno=(select wno from deleted)update workersdset salary=salary+(select reward from inserted)-(select punitive from inserted)where wno=(select wno from inserted)endelsebeginprint '你还未建立该员工,输入信息失败'rollbackendcreate procedure 核对基本信息asselect dtotal,tsalary from deptinfselect count(wno)as 员工总人数,sum(salary)员工总工资from workersdexec 核对基本信息exec workerinf_pro 'w1001',100,50,'2011'exec workerinf_pro 'w1101',100,50,'2011'create procedure deletewno(@wno char(10))asdeletefrom workersd where wno=@wnocreate trigger dwno_trigon workersdfor deleteasbegindelete from worker where wno=(select wno from deleted)delete from workerinf where wno=(select wno from deleted)update deptinfset dtotal=dtotal-1,tsalary=tsalary-(select salary from deleted)where(dept=(select dept from deleted))endexec deletewno 'w1001'create procedure 个人基本工资( @wno char(10))as select wno,proinf.dept,proinf.pro,proinf.salary,workersd.salaryfrom workersd,proinfwhere( workersd.wno=@wno and proinf.pro=workersd.pro and proinf.dept=workersd.dept) create procedure 奖罚信息(@wno char(10))asselect * from workerinf where wno=@wnoexec 奖罚信息'w1101' exec 奖罚信息'w1001'exec 个人基本工资'w1101'select * from workersdselect * from proinfalter procedure my_proasdeclare @wno char(10),@dept char(10),@pro char(10),@salary money,@message varchar(100) declare my_cursor cursorfor select wno,dept,pro,salary from workersdopen my_cursorfetch next from my_cursor into@wno,@dept,@pro,@salarywhile @@fetch_status=0beginprint '工资列表'select @message='编号'+@wno+'部门'+@dept+'职位'+@pro+'工资'+convert(varchar(10),@salary)print @messagefetch next from my_cursor into @wno,@dept,@pro,@salaryendclose my_cursordeallocate my_cursorexec my_procreate unique index ssalary on workersd(wno,salary)create unique index deptalary on deptinf(dept,tsalary)create view wno_vieas select worker.wno,wname,sex,age,dept,pro,salaryfrom worker,workersdwhere worker.wno=workersd.wnoselect * from wno_vie。