1、目录第1章需求分析11.1需求调查11.2 系统功能分析11.3 面对用户需求分析2第2章面向对象分析和设计3第3章逻辑结构设计6类和对象向关系模式转换7第4章数据库物理结构设计94.1存取方法设计94.2存储结构设计94.3物理设计9第5章数据库完整性设计125.1 主键及唯一性索引125.2参照完整性设计125.3Check约束125.4Default约束125.5触发器设计13第6章 数据库视图设计16第7章 数据库存储过程设计17总结21参考文献:21数据库原理及应用课程设计报告第1章需求分析1.1需求调查通过对高校各个职员的调查,该学校的工资管理系统有如下需求:1)学校职员信息的管理
2、:职员的基本信息,职员职位的变更,职员信息的修改2)职员出勤情况的控制与管理:对员工的加班、缺勤情况进行限制,调查出勤情况3)职员工资的核算与发放:对于不同职称的职员基本工资也不同,对于加班和缺勤的职员要对其工资进行相应的增加与减少,对于职位变更的职员,工资也要及时更新4)工资历史的查询:职员如果对自己的工资有疑问,可以通过工资历史表进行相关查询,对以往的工资发放情况也可以进行查询。学校的工资管理系统1.2 系统功能分析工资发放管理考勤情况管理工资历史管理职员信息管理信息修改管理1)职员信息管理:职员的基本信息要进行统一的管理,具体包括了职工编号,姓名,性别、年龄、系别、职称。2)信息修改管理
3、:信息修改包括很多内容的变更,比如职位的修改,系别的修改。修改之后要及时对职员信息经行更新。3)考勤情况的管理:为实现学校的工作的高效,要对职工的出勤情况进行限制与管理,对职工的加班与缺勤情况要及时的记录下来,并对每一天职工加班以及缺勤的次数进行限制与约束。4)工资发放的管理:由于职称的不同,各个职员的基本工资也不一样。由于又涉及到职员信息的变更以及出勤的情况的不同要对加班以及缺勤的职员进行相应的工资变动,保证正确的核算与发放。5)工资历史的管理:职员如果对自己的工资发放有疑问,可以查询工资历史表,里面列明了每一项工资发放的情况,还可以对以往的工资发放进行查询1.3 面对用户需求分析 学校的工
4、资管理系统主要为学校的职员以及管理者查询、发放工资提供需求。具体实施过程其实包含了很多细节。首先,学校的职工信息要实现统一管理,在管理过程中涉及到职员信息的变更,这就需要对职员信息修改更新;其次,对于职员的出勤情况也要进行及时的统计,还要限制职员加班缺勤的次数;再者就是工资的管理与发放了,由于职员可能有职位的变更、有出勤情况的不同,我们就应该对应相应的职工情况进行工资核算与发放,工资发放完了之后用户可能对之前的工资发放有疑问,就可以查询自己工资发放的具体细节,还可以查询之前的工资发放情况,所以工资历史表就会为用户提供需求。这些功能涵盖了所有用户的基本需求。第2章面向对象分析和设计 类和对象设计
5、如下: 高校职员职工编号 char(9) primary key,姓名 varchar(12),性别 varchar(9),年龄 tinyint,系别 varchar(20),职称 varchar(20),添加()删除()查询()修改()考勤表职工编号 char(9),出勤情况 varchar(10) 日期 date ,foreign key (职工编号) references 高校职员(职工编号),添加()修改()删除()查询()职位变更职工编号 char(9),初始职位 varchar(10),现在职位 varchar(10),变更日期 date,查询()添加()修改()工资参照表职称 v
6、archar(20) primary key ,金额 int ,添加()修改()工资表职工编号 char(9) primary key ,基本工资 int default(0),加班工资 int default(0),应扣工资 int default(0),应发工资 int default(0),查询()发放()更新()工资历史职工编号 char(9),发放金额 tinyint,发放日期 date ,查询()加班情况查询职工编号 char(9),姓名 varchar(12),加班 varchar(12),日期 date,查询()修改()工资核对职工编号 char(9) primary key
7、,基本工资 int default(0),应发工资 int default(0)发放金额 int default(0),日期 date查询()修改() 缺勤情况查询职工编号 char(9),姓名 varchar(12),缺勤 varchar(12),日期 date,查询()删除()职位统计职工编号 char(9),姓名 varchar(12),系别 varchar(20),职称 varchar(20),查询()第3章逻辑结构设计局部E-R图 图3-1 高校职员 图3-2 出勤情况 图3-3 职位变更 图3-4 工资表 图3-5 工资历史 图 3-6 财务主管全局E-R图:类和对象向关系模式转换
8、高校职员(职工编号,姓名,性别,年龄,系别,职称)职位变更(流水码,职工编号,初始职位,现在职位,变更日期)考勤表(流水码,职工编号,出勤情况,日期)工资参照表(职称,金额)工资表(职工编号,基本工资,加班工资,应扣工资,应发工资)工资历史(职工编号,发放金额,发放日期)第4章数据库物理结构设计4.1 存取方法设计数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。对于学校的工资管理系统来说,为了提高某些属性(如:职工编号,姓名,出勤情况,工资发放)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。4.2存储结构设计
9、学校的工资管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器(B/S),客户端/服务器(C/S)混合的应用体系结构来建设教务管理系统。数据库管理系统采用Microsoft 公司推出的SQL Server 2012 或以上版本,并用SQL进行数据库的建立和数据库中数据的维护和查询。4.3物理设计实现该设计的环境为Windows win7 + SQL Server 2012或以上版本。1、 建立教务管理数据库create database 学校的工资管理系统2、 建立高校职员表create table 高校职员职工编号 char(9) primary key,姓名 varchar(
10、12),性别 varchar(9) check (性别in (男女), /check约束年龄 tinyint,系别 varchar(20),职称 varchar(20),3、 建立考勤表create table 考勤表流水码 bigint primary key identity(1,1),职工编号 char(9),出勤情况 varchar(10)check (出勤情况 in (加班缺勤), /check约束日期 date ,foreign key (职工编号) references 高校职员(职工编号),4、建立工资历史表create table 工资历史流水码 bigint primary
11、 key identity(1,1),职工编号 char(9),发放金额 tinyint,发放日期 date ,foreign key (职工编号) references 高校职员(职工编号),建立开设课程表Create table 开设课程(课程号 varchar(12) primary key,教职工号 char(12),开课年度 int,开课学期 varchar(10) default(春季) check (开课学期in (春季夏季秋季冬季),开课学院 varchar(20),开课班级 varchar(20),上课地点 varchars(20),上课时间 varchar(20),班级限制
12、人数 int)4、 建立职位变更表create table 职位变更(流水码 bigint primary key identity(1,1),职工编号 char(9),初始职位 varchar(10),现在职位 varchar(10),变更日期 date,foreign key (职工编号) references 高校职员(职工编号), /参照完整性);5、 建立工资参照表create table 工资参照表(职称 varchar(20) primary key ,金额 int ,);6、 建立工资表create table 工资表(职工编号 char(9) primary key ,基本工
13、资 int default(0),加班工资 int default(0),应扣工资 int default(0),应发工资 int default(0),foreign key (职工编号) references 高校职员(职工编号), /参照完整性);第5章数据库完整性设计5.1 主键及唯一性索引表名主键建立唯一性索引高校职员(职工编号)create unique index 高校职员 on 高校职员 (职工编号)考勤信息(职工编号)create unique index 考勤信息 on 考勤表 (职工编号)工资表(职工编号)create unique index 工资表 on 工资表 (职
14、工编号)工资历史(职工编号)create unique index 工资历史 on 工资历史 (职工编号5.2 参照完整性设计1、 考勤表的职工编号设计为外键foreign key (职工编号) references 高校职员(职工编号),2、工资历史表中将工资编号为外键foreign key (职工编号) references 高校职员(职工编号),3、职位变更表中将职工编号设计为外键foreign key (职工编号) references 高校职员(职工编号),4、工资表中将职工编号设计为外键foreign key (职工编号) references 高校职员(职工编号),5.3Chec
15、k约束1、高校职员表中将性别进行check约束:check (性别in (男女)2、考勤表中将缺勤情况进行check约束:check (出勤情况in (加班缺勤) ,5.4Default约束1、工资表中基本工资默认值设为:0。default(0)2、工资表中加班工资默认值设为:0。default(0)3、工资表中应扣工资默认值设为:0。default(0)4、工资表中应发工资默认值设为:0。default(0)5.5 触发器设计1、在考勤表表中建立插入考勤信息触发器create trigger 插入考勤信息 on 考勤表for insert as begindeclare num int se
16、lect num=inserted.流水码 from inserted select 信息插入成功 提示,该职员缺勤 提示select 考勤表.职工编号,考勤表.日期,考勤表.出勤情况,高校职员.姓名 from 考勤表,高校职员where num=考勤表.流水码 endgo2、在高校职员表中建立员工信息插入触发器create trigger 员工信息插入 on 高校职员for insert asbegindeclare 职工编号 int select 职工编号=inserted.职工编号 from inserted select 职员信息插入成功 提示,以下为该职员信息提示 select *
17、from 高校职员 where 职工编号=高校职员.职工编号end go3、在高校职员表中建立职员信息修改触发器create trigger 职员信息修改 on 高校职员for updateasbegindeclare 职工编号 int select 职工编号=inserted.职工编号 from insertedselect 修改成功提示,操作成功说明select *from 高校职员 where 职工编号=高校职员.职工编号declare 职位1 varchar(20)select 职位1=deleted.职称 from deleted declare 职位2 varchar(20)sel
18、ect 职位2 =高校职员.职称 from 高校职员 where 职工编号=高校职员.职工编号if 职位1!=职位2begininsert into 职位变更(职工编号,初始职位,现在职位,变更日期)values (职工编号,职位1,职位2,getdate()endend go4、在高校职员表中建立默认工资触发器create trigger 默认工资 on 高校职员for insertasbegindeclare 基本工资 int,no char(9)select no =inserted.职工编号 from insertedselect 基本工资=工资参照表.金额 from 工资参照表,in
19、serted where 工资参照表.职称=inserted.职称insert into 工资表(职工编号,基本工资) values(no,基本工资)endgo5、在考勤表中建立加班工资触发器create trigger 加班工资 on 考勤表for insert asbegindeclare no char(9)declare 出勤情况 varchar(20)declare a intdeclare b intselect no=inserted.职工编号 from insertedselect 出勤情况=inserted.出勤情况 from insertedselect a=加班工资 fr
20、om 工资表 where 工资表.职工编号=noselect b=应扣工资 from 工资表 where 工资表.职工编号=no if 出勤情况=加班 update 工资表 set 工资表.加班工资=a+200 where 工资表.职工编号=no if 出勤情况=缺勤 update 工资表 set 工资表.应扣工资=b-100 where 工资表.职工编号=no endgo6、在职位变更表中建立职位变更工资触发器create trigger 职位变更工资 on 职位变更for update,insertasbegindeclare a varchar(20)declare b char(9)d
21、eclare c intdeclare d intselect a=inserted.现在职位 from inserted select b=inserted.职工编号 from insertedselect c=工资表.加班工资 from 工资表,inserted where 工资表.职工编号=bselect d=工资表.应扣工资 from 工资表,inserted where 工资表.职工编号=bif a=清洁工update 工资表 set 工资表.基本工资=2000, 工资表.应发工资=2000+c+d where b=工资表.职工编号if a=教授update 工资表 set 工资表.
22、基本工资=5000, 工资表.应发工资=5000+c+d where b=工资表.职工编号if a=博士update 工资表 set 工资表.基本工资=6000,工资表.应发工资=6000+c+d where b=工资表.职工编号endgo第6章 数据库视图设计1、建立工资核对视图create view 工资核对(职工编号,基本工资,应发工资,发放金额,日期)asselect 工资表.职工编号,基本工资,应发工资,发放金额,发放日期from 工资表,工资历史where 工资表.职工编号=工资历史.职工编号2、建立加班情况查询视图create view 加班情况查询(职员编号,姓名,加班,日期)
23、as select 考勤表.职工编号,姓名,考勤表.出勤情况,考勤表.日期from 高校职员,考勤表where 考勤表.出勤情况=加班3、建立缺勤情况查询视图create view 缺勤情况查询(职员编号,姓名,加班,日期)as select 考勤表.职工编号,姓名,考勤表.出勤情况,考勤表.日期from 高校职员,考勤表where 考勤表.出勤情况=缺勤4、建立谁是教授视图create view 谁是教授(职工编号,姓名,系别,职称)asselect 职工编号,姓名,系别,职称from 高校职员where 高校职员.职称=教授第7章 数据库存储过程设计1、建立员工信息查询存储过程(按姓名)c
24、reate procedure 员工信息查询 姓名 varchar(20) as beginselect * from 高校职员 where 高校职员.姓名 like 姓名 end go2、建立员工信息查询存储过程(按职工号)create procedure 员工信息查询2 职工号 char(9) as beginselect * from 高校职员 where 高校职员.职工编号 like 职工号 end go3、建立缺勤信息插入存储过程 create procedure 考勤信息插入1 职工号 char(9) as begindeclare 职工号2 char(9)select 职工号2=
25、考勤表.职工编号 from 考勤表 where 考勤表.日期=CONVERT(varchar(100), GETDATE(), 23) and 考勤表.职工编号=职工号 if 职工号2 is null begininsert into 考勤表(职工编号,日期,出勤情况)values(职工号,getdate(), 缺勤)endendgo4、建立加班信息插入存储过程create procedure 考勤信息插入2 职工号 char(9) as begindeclare 职工号2 char(9)select 职工号2=考勤表.职工编号 from 考勤表 where 考勤表.日期=CONVERT(va
26、rchar(100), GETDATE(), 23) and 考勤表.职工编号=职工号 if 职工号2 is null begin insert into 考勤表(职工编号,日期,出勤情况)values(职工号,getdate(), 加班) endend go5、建立查询考勤信息存储过程create procedure 查询考勤信息职工号 char(9)asbeginselect * from 考勤表 where 考勤表.职工编号=职工号endgo6、建立查询考勤历史存储过程create procedure 考勤历史职工号 char(9),起始日 date,终止日 dateas beginse
27、lect * from 考勤表 where 日期=起始日 and 日期=起始日 and 日期=终止日 and 职工编号=职工编号 and 出勤情况=缺勤group by 职工编号 endgo7、建立插入职工信息存储过程create procedure 插入员工信息职员编号 char(9),姓名 varchar(12),性别 varchar(9),年龄 tinyint ,系别 varchar(20),职称 varchar(20)asbegininsert into 高校职员(职工编号,姓名,性别,年龄,系别,职称)values(职员编号,姓名,性别,年龄,系别,职称)endgo 8、建立修改职工
28、信息存储过程(系别)create procedure 修改职员信息职工编号 char(9),系别 varchar(20)asbeginupdate 高校职员set 系别=系别where 职工编号=职工编号endgo9、建立修改职工信息存储过程(职称)create procedure 修改职员职称职工编号 char(9),职称 varchar(20)asbeginupdate 高校职员set 职称=职称where 职工编号=职工编号endgo9、建立制定工资存储过程create procedure 制定工资as begindeclare 职工编号 char(9) select 职工编号=高校职员
29、.职工编号 from 高校职员declare 职员职位 varchar(20) select 职员职位=高校职员.职称 from 高校职员,工资表 where 工资表.职工编号=高校职员.职工编号declare 基本工资 int select 基本工资=工资参照表.金额 from 工资参照表,高校职员 where 工资参照表.职称=职员职位 insert into 工资表(基本工资) values(基本工资)endgo10、建立发工资存储过程create procedure 发工资职工编号 char(9)as begindeclare 金额 int select 金额=工资表.应发工资 fro
30、m 工资表 where 职工编号=工资表.职工编号insert into 工资历史(职工编号,发放金额,发放日期)values(职工编号,金额,getdate()endgo总结 本来觉得很复杂庞大的数据库课程设计终于做完了,好有成就感啊! 数据库这门课程一直在计算机专业中都是很主要核心的课程,所以在课堂上一直都很认真听讲,本来以为课上讲的东西很简单,实际上看似简单的东西在运用的时候关系就越容易弄混淆,简单的例子做起来还觉得挺轻松,当遇到复杂的关系时就麻烦了,这时候我们一定要静下心来理清思路。实践是检验真理的唯一标准,理论上学的很好的的东西在运用的时候可能还会出现各种差错,在不断地运用中我们才能
31、把知识更好的学好。而且,更重要的一点是在遇到问题的时候不能退缩,要积极的想办法来解决它,只有主动的去学习、去探索才能学到更多知识。总之,在这次的课程设计中学到的不只是理论是上的知识,更是一种学习态度、一种学习精神!参考文献:1. 赵乃真等. 信息系统设计与应用. 清华大学出版社,2005 2. 王珊,萨师煊 .数据库系统概论M. 高等教育出版社,20053. 郑阿奇等. SQLserver实用教程(第3版)M . 电子工业出版社,2009附录:注意:附录部分写正文代码以外的的代码,不要超过5页,如没有就去掉该页。最后一页是评分标准,打印之后装订时候让该页正面朝外。评分标准后面有一页空白页去不掉
32、,不需要打印。数据库原理及应用课程设计报告评分标准选题及功能设计选题合理,功能简单 (D)有一定的工作量和实用价值 (C)功能设计丰富,有一定的难度系数 (B)功能设计合理全面,能体现数据库的存储和整理数据的功能 (A)数据表和数据量具备基本的数据表,数据量较少,但能够实现系统基本需要 (D)具备基本的数据表,数据量适中,实现了一定的数据完整性 (C) 有多个数据表,数据量适中,有完善的数据完整性(B) 有多个数据表,数据量充足,具有较强的数据安全性和数据完整性 (A)数据库对象具备基本的数据表,有主外键约束 (D)创建了若干种的数据库对象,并加以利用 (C) 在实际应用中合理利用了各类数据库对象 (B)具有身份验证、数据备份等较复杂的数据管理功能(A)功能实现利用存储过程实现了各种查询功能 (D)除查询功能,还实现了各种数据操作功能 (C)在上一条基础上,还实现了数据统计汇总功能 (B)合理利用函数、存储过程、触发器实现各种数据查询、操作、管理功能 (A)设计报告完成设计报告,阐述了系统功能,结构较完整 (D)开题报告反映设计思路,结构完整,格式较规范 (C)报告内容完整,图表使用准确,格式清晰,功能描述详尽 (B)报告内容完整,图表使用准确,描述详细,代码阐述清楚,反映系统执行流程 (A)教师签字:总评成绩:24
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922