当前位置:文档之家› 数据库课程设计 工资管理系统

数据库课程设计 工资管理系统

课程设计要求:1.对各个系统进行系统功能需求分析2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引5. 根据系统功能需求设计相应的查询视图6. 要求根据系统功能需求建立存储过程7. 根据功能需求建立相应的触发器以保证数据的一致性8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作)一、需求分析企业的工资管理是公司管理的一个重要内容。

随着科学技术的发展,一些公司的规模也越来越大,职工的数量也在不断的增加,企业的管理工作也变得越来越复杂。

工资管理既涉及到企业劳动人事的管理,同时也是企业财务的重要组成部分。

面对如此大的信息量,单凭传统的表格、手工操作已不能满足实际的需要。

因此,我设计工资管理系统来提高财务管理方面的效率。

通过这个系统可以使信息的管理更加规范,统计更科学。

模块功能分析:(1)部门模块:用来管理部门;(2)工资模块:用来管理员工的工资;(3)职工模块:用来管理工厂的职工信息;二、概念结构设计经分析,本系统的e-r图如下:三、逻辑结构设计1.工资管理基本信息表①department(部门)②staff(职工)③salary(工资)①建库create database salary_manageon(name=salary_manage_data,filename='d:\salary_manage_data.mdf', size=25,maxsize=35,filegrowth=5)log on(name=manage_log,filename='d:\salary_manage_data.ldf',size=25,maxsize=35,filegrowth=5)②建表/建立职工表/create table staff(staff_no char(10) primary key,/*职工工号*/staff_name char(20) not null,/*职工姓名*/staff_sex char(25) not null default '男'check( staff_sex in('男','女')),/*性别*/ enducational char(10) default '本科',/*学历*/dapartment_no char(8) not null,/*部门编号*/department_name char(15))/*部门名称*//*建立工资表*/create table salary(staff_no char(10) not null foreign key references staff(staff_no),/*职工工号*/m_salary int default 3000,/*月薪*/allowance int default 0,/*津贴*/out_days int not null check(out_days<=31 and out_days>=0),/*出勤天数*/ work_overtime datetime(10),/*加班时间*/w_overtime_days int default 0 check(w_overtime_days>=0 andw_overtime_days<=31),/*加班天数*/deduct int default 0,/*事故扣薪*/add_money int default 0,/*加班费*/issue_salary int(4) not null,/*应发薪水*/iss_salary int(4) not null)/*实发薪水*//*建立部门表*/create table department(department_no char(8) primary key,/*部门编号*/ department_name char(15) not null,/*部门名称*/ depart_manage char(6) not null,/*部门经理*/depart_people int(6)/*部门人数*/③添加记录insert into departmentvalues('071011','A部门','王经理',100);insert into departmentvalues('071012','B部门','李经理',200);insert into departmentvalues('071013','C部门','张经理',100);insert into staffvalues('0610','李明','男','本科','071011','A部门');insert into staffvalues('0613','张三','男','专科','071011','A部门'); insert into staffvalues('0611','刘丽','女','本科','071012','B部门');insert into staffvalues('0612','张新','男','本科','071013','C部门');insert into salaryvalues('0610',3000,100,30,'2011-10-8',2,50,0,3000,3200);insert into salaryvalues('0611',3000,0,20,'',0,0,500,3000,2500);insert into salaryvalues('0612',3000,100,31,'2011-10-10',1,50,0,3000,3150);四、功能处理1、查询①表查询select * from department /*查询部门表*/select * from staff /*查询职工表*/select * from salary /*查询工资表*/②数据查询select salary.staff_no,staff_name,issue_salary,iss_salaryfrom salary,staffwhere iss_salary>3000 and salary.staff_no=staff.staff_no order by salary.staff_noselect staff_no,staff_name from staffwhere staff_name like '刘%';2、数据更新①插入(前面已插入)②修改update salaryset iss_salary =1.2*iss_salarywhere iss_salary<2600;③删除delete from staffwhere enducational='专科';3.索引①建立索引create index jon salary(staff_no,issue_salary,iss_salary)create unique index index_staffon staff(staff_name)create unique index index_departon department(depart_people)②查询索引exec sp_helpindex salaryexec sp_helpindex staffexec sp_helpindex department③修改索引exec sp_rename 'salary.j','salary_index'④删除索引drop index index4.视图①创建视图create view table_salary(staff_no ,staff_name,issue_salary,iss_salary)as select salary.staff_no,staff_name,issue_salary,iss_salaryfrom salary,staffwhere salary.staff_no=staff.staff_no②查找视图select * from table_salary③/*修改视图*/Alter view table_salary(staff_no ,staff_name ,department_name,issue_salary,iss_salary)as select salary.staff_no,staff_name,department_name,issue_salary,iss_salaryfrom salary,staffwhere salary.staff_no=staff.staff_no;④删除视图drop view table_salary5.存储过程①创建存储过程。

create procedure pro_staff(@staff_no char(10),@staff_name char(25),@staff_sex char(25),@enducational char(10),@department_no char(8),@department_name char(15))asinsert into staff values(@staff_no,@staff_name,@staff_sex,@enducational,@department_no,@department_name)update departmentset depart_people=depart_people+1where department_no=@department_nocreate procedure pro_salaryas(@m_salary int,@allowance int,@add_money int,@deduct int)asupdate salaryset iss_salary = (@m_salary + @allowance+@add_money- @deduct )where m_salary=@m_salary and allowance=@allowance and add_money=@add_money and deduct=@deduct②查看存储过程exec sp_helptext pro_staffexec sp_helptext pro_salary③执行存储过程exec pro_staff @staff_no='0614',@staff_name='王敏',@staff_sex='女', @enducational='本科',@department_no='071011', @department_name='A部门';④删除存储过程drop procedure pro_staff6.触发器①创建触发器create trigger mon salaryfor updateasif update(m_salary)beginrollback transactionprint'月薪不能修改,请联系财务科'endCREATE TRIGGER TRI_salaryON salaryFOR update,insertASBEGINupdate salary set add_money=(w_overtime_days*50)update salary set issue_salary = m_salaryupdate salary set iss_salary = (m_salary+allowance+add_money -deduct )ENDcreate trigger tri_departmenton departmentfor insertasdeclare @staff_no char(8)declare @department_no char(15)update departmentset depart_people=depart_people+1where department_no=@department_nocreate trigger tri_changeon stafffor deleteasbegindeletefrom salarywhere salary.staff_no=any(select staff_no from deleted) update departmentset depart_people=depart_people-1where department_no=any(select department_no from deleted) end②触发器的删除drop trigger tri_department;7.用户与权限/*创建登陆账号*/exec sp_addlogin 'zhangsan','1234','salary_manage',null/*把用户加入到数据库中*/exec sp_adduser 'zhangsan'/*删除登陆账号*/exec sp_droplogin 'zhangsan'/*系统权限*/grant create tableto zhangsan/*收回系统权限*/revoke create tablefrom zhangsan/*对象权限*/grant allon staffto zhangsanwith grant optiongrant selecton salaryto public/*收回系对象权限*/revoke select on salaryfrom zhangsan五.实验总结本报告主要介绍的是对自建的一个工资管理系统数据库,利用在数据库中的表、存储过程、视图、约束等组合,设计出比较实用的应用软件代码;对表中的信息能够进行简单的查询,子查询,视图的创建、修改与删除,与约束的创建,存储过程与触发器的创建与删除等基本操作,加深对SQL Server数据库的进一步研究。

相关主题