..a《DatabaseprogrammingwithRDBMS》课程设计职工工资管理统指导老师:郭小芳学号:1441904103姓名:高嘉威..a《DatabaseprogrammingwithRDBMS》考查命题1、根据周围的实际情况,自选一个小型的数据库应用项目,并深入到应用项目中调研,进行分析和设计。例如可选择职工工资管理系统、人事管理系统、教材管理系统和小型超市商品管理系统和图书管理系统等。要求写出数据库设计报告。一、功能需求系统的基本流程是:用户登入—主界面—选择各项子系统。模块设计和功能说明(一)权限说明:对于不同的用户可以对其赋予不同的权限级别。部门主管拥有最高的权限,能够对员工的资料进行增删,对部门的信息进行增删。1)用户登入:填入用户名称,填写正确的密码,选择用户类型。2)用户登入后,可以对自己的密码进行修改。3)用户可以查看个人资料。以下是各部门主管所特有的权限,其他员工均没有该权限,不能实现一下的操作。4)部门主管可以对员工信息进行浏览、查询、编辑、插入、删除。5)部门主管可以对该公司的部门信息进行浏览、查询、编辑、插入、删除。(二)系统的要求:职工工资管理系统开发时,应该满足以下几点1)方便,容易操作,快捷的原则。2)对于不同的用户,应该有不同的使用权限。3)各主管的任务是管理部门、职工、工资信息,即时更新、登记、发布信息,普通职工可以查询、核对自己的基本信息和工资信息。整个系统模块划分如下图:职工工资管理系统系统管理信息管理信息查询用户登入退出系统修改密码部门信息管理员工信息管理基本信息管理薪资信息管理基本信息查询薪资信息查询..a系统管理:1)用户登录:普通用户登录:只可查询信息,不可插入、修改、删除;主管登录:可插入、修改、查询、删除信息;2)修改密码:凡是该系统的用户都可以修改自己的密码;3)退出系统信息管理:1)部门信息管理:主管可以插入,删除,更改部门信息;2)员工信息管理:主管可以插入,删除,更改员工的基本信息和薪资信息;信息查询:普通员工可以查询自己的基本信息和薪资信息;二、E-R图三、关系模型:1.部门信息(部门编号,部门名称)2.员工信息(员工编号,,性别,学历,出生日期,职务,部门编号,密码)3.薪资信息(账号,员工编号,基本工资,福利,缺勤时间及原因,惩罚金额,应缴税费,总薪资)2、如创建职工工资管理系统中,一个名称为factory的数据库,要求:(1)将主数据库文件factory.mdf放置在H:\DBF文件夹中,其文件大小自动增长为按5MB增长。..a(2)将事务日志文件factory_log.ldf放置在H:\DBF文件夹中,其文件大小自动增长为按1MB增长。createdatabasefactoryon(name=factory,FILENAME='H:\DBF\factory.mdf',size=3mb,filegrowth=5mb)logon(name=factory_log,FILENAME='H:\DBF\factory_log.ldf',size=1mb,filegrowth=1mb)3、在上机面所创建的数据库factory中,完成如下各题操作。(1)用create语句建立职工表worker,其结构为:职工号,int;,char(8);性别,char(2);出生日期,datetime;党员否char(2);参加工作,datetime;部门号,int。其中“职工号”为主键。并用insert语句在worker表中输入如下记录:职工号性别出生日期党员否参加工作部门号1孙华男01/03/52是10/10/701012陈明男05/08/45否01/01/651023程西女06/10/80否07/10/021014孙天奇女03/10/65是07/10/871025刘夫文男01/11/42否08/10/601026刘欣男10/08/52否01/07/701017余慧男12/04/80否07/10/021038张旗男11/10/80否07/10/02102usefactorygocreatetableworker(职工号intprimarykey,char(8),性别char(2),出生日期datetime,党员否char(2),参加工作datetime,部门号int,);insertintoworkervalues(1,'孙华','男',01/03/52,'是',10/10/70,101),(2,'陈明','男',05/08/45,'否',01/01/65,102),..a(3,'程西','女',06/10/80,'否',07/10/02,101),(4,'孙天奇','女',03/10/65,'是',07/10/87,102),(5,'刘夫文','男',01/11/42,'否',08/10/60,102),(6,'刘欣','男',10/08/52,'否',01/07/70,101),(7,'余慧','男',12/04/80,'否',07/10/02,103),(8,'张旗','男',11/10/80,'否',07/10/02,102)(2)用create语句建立部门表depart,其结构为:部门号,int;部门名,char(10)。其中,“部门号”为主键。并用insert语句在depart表中输入如下记录:部门号部门名101财务处102人事处103市场部usefactorygocreatetabledepart(部门号intprimarykey,部门名char(10));insertintodepartvalues(101,'财务处'),(102,'人事处'),(103,'市场部')(3)用create建立职工工资表salary,其结构为:职工号,int;,char(8);日期,datetime;工资,decimal(6,1)。其中,“职工号”和“日期”为主键。并用insert语句在salary表中输入如下记录:职工号日期工资1孙华01/04/041201.52陈明01/04/041350.63程西01/04/04750.84孙天奇01/04/04900.05刘夫文01/04/042006.86刘欣01/04/041250.07余慧01/04/04725.08张旗01/04/04728.0usefactorygocreatetablesalary(职工号intprimarykey,char(8),日期datetime,工资decimal(6,1)..a);insertintosalaryvalues(1,'孙华',01/04/04,1201.5),(2,'陈明',01/04/04,1350.6),(3,'程西',01/04/04,750.8),(4,'孙天奇',01/04/04,900.0),(5,'刘夫文',01/04/04,2006.8),(6,'刘欣',01/04/04,1250.0),(7,'余慧',01/04/04,725.0),(8,'张旗',01/04/04,728.0)(4)建立worker、depart和salary3个表之间的关系。4、在建立的factory数据库上,完成如下各题的程序,要求以文本格式显示结果。(1)显示所有职工的年龄,并按职工号递增排序。USEfactoryGOSELECT职工号,YEAR(参加工作)-YEAR(出生日期)AS年龄FROMworkerORDERBY职工号ASCGO(2)求出各部门的党员人数。USEfactoryGOSELECT部门号,COUNT(党员否)AS党员人数FROMworkerGROUPBY部门号GO(3)显示所有职工的姓名和2004年1月份的工资。USEfactoryGOSELECTworker.,工资FROMworker,salaryWHEREworker.职工号=salary.职工号GO(4)显示所有职工的职工号、姓名和平均工资。USEfactoryGOSELECTworker.职工号,worker.,AVG(工资)AS平均工资FROMworker,salaryGROUPBYworker.职工号,worker.GO..a(5)显示所有职工的职工号、、部门名和2004年2月份的工资,并按部门名的顺序排列。USEfactoryGOSELECTworker.职工号,worker.,部门名,工资FROMworker,depart,salaryWHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号ORDERBY部门名GO(6)显示各部门名和该部门的所有职工平均工资。USEfactoryGOSELECT部门名,AVG(工资)AS平均工资FROMworker,depart,salaryWHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号GROUPBY部门名GO(7)显示所有平均工资高于1200的部门名和对应的平均工资。USEfactoryGOSELECT部门名,AVG(工资)AS平均工资FROMworker,depart,salaryWHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号GROUPBY部门名HAVINGAVG(工资)1200GO(8)显示所有职工的职工号、姓名和部门类型,其中财务部和人事部属于管理部门,市场部属于市场部门。USEfactoryGOSELECT职工号,,部门类型=CASEWHEN部门名='财务处'THEN'管理部门'WHEN部门名='人事处'THEN'管理部门'WHEN部门名='市场部'THEN'市场部门'ENDFROMworker,departWHEREworker.部门号=depart.部门号GO(9)若存在职工号为10的职工,则显示其工作部门名称,否则显示相应提示信息。USEfactoryGOIFEXISTS(SELECT*FROMworkerWHERE职工号=10)BEGINSELECT部门名FROMworker,departWHEREworker.部门号=depart.部门号AND职工号=10..aENDELSEPRINT'不存在职工号为‘’的员工。'GO(10)求出男女职工的平均工资,若男职工平均工资高出女职工平均工资50%,则显示“男职工比女职工的工资高多了”的信息;若男职工平均工资与女职工平均工资比率在1.5~0.8之间,则显示“男职工跟女职工的工资差不多”的信息;否则显示“女职工比男职工的工资高多了”的信息。USEfactoryGOSELECT性别,AVG(工资)AS平均工资FROMworker,salaryWHEREworker.职工号=salary.职工号GROUPBY性别GODECLAREmdecimalDECLAREfdecimalSELECTm=AVG(工资)FROMworker,salaryWHEREworker.职工号=salary.职工号AND性别='男'SELECTf=AVG(工资)FROMworker,salaryWHEREworker.职工号=salary.职工号AND性别='女'IF((m-f)/f=0.5)PRINT'男职工比女职工的工资高多了。'ELSEIF(m/f=0.8ANDm/f=1.5)PRINT'男职工跟女职工的工资差不多。'ELSEPRINT'女职工比男职工的工资高多了。'GO5、在上机实验题4建立的factory数据库上,完成如下各题(所有SELECT语句的查询结果以文本格式显示)。(1)删除factory数据库上各个表之间建立的关系。ALTERTABLEsalaryDROPCONSTRAINTFK_salary_workerGOALTERTABLEworkerDROPCONSTRAINTFK_worker_departGO(2)显示各职工的工资记录和相应的工资小计。usefactorygoselect职工号,,工资fromsalaryorderby职工号compu