《数据库原理》办公用品管理系统.docx

上传人:b****4 文档编号:24248436 上传时间:2023-05-25 格式:DOCX 页数:25 大小:222.97KB
下载 相关 举报
《数据库原理》办公用品管理系统.docx_第1页
第1页 / 共25页
《数据库原理》办公用品管理系统.docx_第2页
第2页 / 共25页
《数据库原理》办公用品管理系统.docx_第3页
第3页 / 共25页
《数据库原理》办公用品管理系统.docx_第4页
第4页 / 共25页
《数据库原理》办公用品管理系统.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

《数据库原理》办公用品管理系统.docx

《《数据库原理》办公用品管理系统.docx》由会员分享,可在线阅读,更多相关《《数据库原理》办公用品管理系统.docx(25页珍藏版)》请在冰豆网上搜索。

《数据库原理》办公用品管理系统.docx

《数据库原理》办公用品管理系统

《数据库原理》课程设计报告

 

设计题目:

办公用品管理系统

 

计算机与数据科学学院

2019年1月10日

 

第1章概述

1.1选题的背景与意义

随着计算机的普及与发展,人们开始利用计算机解决越来越多的实际问题。

一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:

效率低,保密性差,另外,时间一长,将产生大量的文件和数据,其中有些是冗余的或者针对同一目的的数据不相吻合,这对于查找更新和维护文件等管理工作带来了不少的困难。

建立一个管理信息系统,是一项复杂的实施。

管理信息系统是一个有人和计算机等组成的,能进行管理信息的手机、传递、加工、保存、维护和使用的系统,它能实测国名经济和企业的各种运行情况;利用历史数据预测未来;从全局出发辅助管理决策;利用信息控制企业的行为、帮助实现其规划目标。

办公管理系统是办公自动化管理系统的重要组成部分,它可以对办公用品的入库和领用进行规范化管理,进而提高工作效率,避免资源的浪费。

此系统根据单位的办公用品购买,入库,领用流程而设计的,特别适用于分批次购买,各部门领用的模式,具有完善的输入,统计,查询功能。

这样就更可以合理规范对企业办公用品的管理。

1.2相关技术分析

本系统所涉及的业务逻辑为办公用品的库存、领用等方面。

系统的分析和描述中,可采用系统流程图、业务流程图、数据流程图,功能模块图、E-R图、数据字典等图形进行描述。

数据库系统采用SQLserver2012。

第2章系统功能设计

2.1系统总体结构设计图

图2.1总体结构设计图

2.2系统功能模块

2.2.1模块一.用户基本信息的查询

通过用户的ID和密码可以查询到用户的基本信息,用于用户基本信息的查询。

2.2.2模块二.管理员对办公用品的查询和更新

管理员进入数据库系统后,将完成对办公用品的查询更新操作。

第3章数据库设计

3.1需求分析

功能需求分析:

1.强大完整的查询功能。

2.领用流程,用户可以登录数据库查询自己所需用品。

性能需求分析:

1简便性②方便查询③安全性

数据需求分析:

数据字典

数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

数据项

表3.1.1数据项列表

数据项名

存储结构

备注

用户名

Nvarchar(50)

登录用户名

密码

Nvarchar(50)

用户名密码

商品名称

Nvarchar(50)

办公用品名称

单价

Int

办公用品单价

供货商

Varchar(50)

提供办公用品

领取人

Varchar(50)

领取办公用品

数量

Int

办公用品数量

总金额

Int

办公用品总金额

部门名称

Varchar(50)

领取人所在部门

所有商品

Varchar(50)

所有办公用品

商品数量

Int

办公用品数量

商品编号

Nvarchar(50)

办公用品ID

部门编号

Nvarchar(50)

部门ID

领取数量

Int

领取办公用品数量

商品单价

Nvarchar(50)

办公用品单价

支出金额

Nvarchar(50)

领取办公用品所用金额

领取时间

Nvarchar(50)

领取办公用品时间

 

数据结构

表3.1.2数据结构列表

数据结构

组成

用户信息

用户名、ID、密码

办公用品信息

名称、单价、供货商、领取人、数量、总金额

部门信息

部门名称、所有商品、商品数量

领取信息

商品编号、部门编号、领取数量、领取人、商品名称、部门名称、商品单价、支出金额、领取时间

数据流

表3.1.3数据流列表

数据流名

数据流来源

数据流去向

组成

管理信息

管理员

办公用品表、部门表、领取表、用户表

办公用品信息、部门信息、用户信息、领取信息

用户信息

管理员、用户

办公用品表

用户信息

数据存储

表3.1.4数据存储列表

数据存储名

输入的数据流

输出的数据流

组成

办公用品表

办公用品的信息

办公用品的信息

办公用品的信息

部门表

部门的信息

部门的信息

部门的信息

领取表

领取的信息

领取的信息

领取的信息

用户表

用户的信息

用户的信息

用户的信息

 

数据流图

运用数据库的设计思想和设计方法,针对单位办公用品从入库库存到领用等各阶段的运行情况,开发出具有完善的数据输入功能、精确的库存数量、库存价值统计和库存警示功能;能进行进货统计、各部门及员工个人领用数量和金额统计等功能的管理信息系统.系统数据流图如图所示:

 

图3.1.1总数据流图

 

图3.1.2顶层数据流图

 

 

图3.1.3用户信息查询数据流图

 

 

图3.1.4用户信息数据流图

 

3.2概念结构设计

(1)商品实体图

 

图3.2.1商品实体图

(2)部门实体图

图3.2.2部门实体图

 

(3)用户实体图

 

图3.2.3用户实体图

 

 

3.3逻辑结构设计

将E-R图转换为关系模式并对模式进行判定:

商品:

(商品名称、商品单价、供货商、数量)

关系模式属于第三范式,每个非主属性都不传递函数依赖于主关系键。

在关系模式中,商品名称为主属性,其余的为非主属性。

没有函数依赖性,没有传递性。

领取:

(商品编号,部门编号)

关系模式属于第三范式,每个非主属性都不传递函数依赖于主关系键。

在关系模式中,没有函数依赖性,没有传递性。

部门:

(部门名称、商品数量、所有商品)

关系模式属于第三范式,每个非主属性都不传递函数依赖于主关系键。

在关系模式中,商品名称为主属性,其余的为非主属性。

没有函数依赖性,没有传递性。

这些关系模式都符合第三范式的条件,都没有传递函数依赖。

然后根据所建立的关系模式,可以建立如下视图:

图3.3.1视图一

图3.3.2视图二

图3.3.3视图三

图3.3.4视图四

3.4物理结构设计

为一个逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法),数据库的物理设计通常分为两步:

A、确定数据库的物理结构;B、对物理结构进行时间和空间效率评价。

数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:

(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;

(2)对物理结构进行评价,评价的重点是时间和空间效率。

数据库是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求,物理结构设计的任务之一是根据关系数据管理系统支持的存取方法确定选择哪些存取方法,根据应用要求确定对关系的哪些属性列建立索引。

 

createuniqueindex用户on用户(u_ID)

图3.4.1索引图

3.5数据库实施

创建数据库

createdatabase办公用品

on

name=bangongyongping_data,

filename='f:

\bangongyongpingdata.mdf',

size=10mb,

maxsize=50mb,

filegrowth=5mb)

logon

name=bangongyongping_log,

filename='f:

\bangongyongpingdata.ldf',

size=5mb,

maxsize=25mb,

filegrowth=5mb)

用户信息表

createtable用户

u_用户名varchar(10),

u_IDintnotnull,

u_密码varchar(6)notnull,

 

primarykey(u_用户名))

办公用品信息表

createtable办公用品

w_IDintnotnull,

w_办公用品名称varchar(50),

w_单价int,

w_供货商varchar(50)notnull,

w_领取人varchar(50),

w_数量int,

w_总金额int,

w_备注varchar(50),

primarykey(w_ID,w_办公用品名称))

部门信息表

createtable部门

p_IDintnotnull,

p_部门名称varchar(50),

p_所有商品varchar(50),

p_商品数量int,

primarykey(p_部门名称))

领取信息表

createtable领取

ge_IDintnotnull,

ge_商品编号nvarchar(50)notnull,

ge_部门编号nvarchar(50)notnull,

ge_领取数量intnull,

ge_领取人nvarchar(50),

ge_商品名称nvarchar(50),

ge_部门名称nvarchar(50),

ge_商品单价nvarchar(50),

ge_支出金额nvarchar(50),

ge_领取时间nvarchar(50),

primarykey(ge_ID,ge_商品编号))

insertinto用户(u_用户名,u_ID,u_密码)

values('李娟','01','01')

insertinto用户(u_用户名,u_ID,u_密码)

values('张勇','02','02')

insertinto用户(u_用户名,u_ID,u_密码)

values('顾浩','03','03')

insertinto用户(u_用户名,u_ID,u_密码)

values('王冠','04','04')

insertinto办公用品(w_ID,w_办公用品名称,w_单价,w_供货商,w_领取人,w_数量,w_总金额,w_备注)

values('05','钢笔','1','晨光','李娟','1','1','无')

insertinto办公用品(w_ID,w_办公用品名称,w_单价,w_供货商,w_领取人,w_数量,w_总金额,w_备注)

values('06','圆规','2','慧凯','张勇','1','2','无')

insertinto办公用品(w_ID,w_办公用品名称,w_单价,w_供货商,w_领取人,w_数量,w_总金额,w_备注)

values('07','打印机','100','环星','顾浩','1','100','无')

insertinto办公用品(w_ID,w_办公用品名称,w_单价,w_供货商,w_领取人,w_数量,w_总金额,w_备注)

values('08','文件夹','3','鑫龙','王冠','1','3','无')

insertinto部门(p_ID,p_部门名称,p_所有商品,p_商品数量)

values('9','财务部','打印机','1')

insertinto部门(p_ID,p_部门名称,p_所有商品,p_商品数量)

values('10','市场部','钢笔','1')

insertinto领取(ge_ID,ge_商品编号,ge_部门编号,ge_领取数量,ge_领取人,ge_商品名称,ge_部门名称,ge_商品单价,ge_支出金额,ge_领取时间)

values('5','5','1','9','李娟','打印机','财务部','100','100','00:

00:

00')

图3.5.1所有表图

创建视图

创建办公用品信息视图

createview办公用品_view(w_ID,w_办公用品名称,w_单价,w_供货商,w_领取人,w_数量,w_总金额,w_备注)

as

selectw_ID,w_办公用品名称,w_单价,w_供货商,w_领取人,w_数量,w_总金额,w_备注

from办公用品

创建部门信息视图

createview部门_view(p_ID,p_部门名称,p_所有商品,p_商品数量)

as

selectp_ID,p_部门名称,p_所有商品,p_商品数量

from部门

创建领取信息视图

createview领取_view(ge_ID,ge_商品编号,ge_部门编号,ge_领取数量,ge_领取人,ge_商品名称,ge_部门名称,ge_商品单价,ge_支出金额,ge_领取时间)

as

selectge_ID,ge_商品编号,ge_部门编号,ge_领取数量,ge_领取人,ge_商品名称,ge_部门名称,ge_商品单价,ge_支出金额,ge_领取时间

from领取

创建用户信息视图

createview用户_view(u_用户名,u_ID,u_密码)

as

selectu_用户名,u_ID,u_密码

from用户

图3.5.2所有视图图

基本信息存储过程的建立

(1)建立用户信息的存储过程:

通过用户创建存储过程:

--创建查询用户信息的存储结构

--减少查询登陆表的过程,直接通过输入的用户名和密码查询

createprocedureu_用户_personal(

@用户名char(10),

@密码char(10),

@u_用户名varchar(50),

@u_IDvarchar(50),

@u_密码varchar(50)output

as

select@u_用户名=u_用户名,@u_ID=u_ID,@u_密码=u_密码

from用户

whereu_ID=any(selectu_ID

from用户

whereu_用户名=@用户名andu_密码=@密码)

(2)创建用户登陆信息的存储过程:

通过用户创建存储过:

--创建查询用户登陆基本信息的存储结构

createprocedure用户1(

@u_用户名varchar(50),

@u_IDintoutput,

@u_密码varchar(50)

as

select@u_ID=u_ID

from用户

whereu_用户名=@u_用户名andu_密码=@u_密码

存储过程的查询

1.信息存储过程的查询:

(1)查询用户信息的存储结构

declare@u_用户名varchar(50),@u_IDvarchar(50),@u_密码varchar(50)

exec用户1'3','03',@u_用户名output,@u_IDoutput,@u_密码output

select'用户名'=@u_用户名,'ID'=@u_ID,'密码'=@u_密码

(2)查询用户登陆基本信息的存储结构

declare@用户_u_IDvarchar(50),@用户_u_密码varchar(50)

execu_用户_personal'顾浩',@用户_u_IDoutput,'3'

select'ID'=@用户_u_ID

print@用户_u_ID

图3.5.3存储过程图

触发器

创建触发器(另外四个表也建立相应增删改触发器,因为代码差不多所以在此省略):

建立一个用户的操作审核表,并建立相关触发器,当向用户中插入、更新或删除记录时,生成一条操作记录插入到该操作审核表中,内容包括用户名,ID,密码。

建一个操作审核表

createtable用户_operate

(u_用户名char(8),

u_IDchar(6),

u_密码char(3),

建立相关触发器(DML)

go

createtriggertrigger_用户_insert

on用户

forinsert

as

begin

declare@p1char(8),@p2char(8),@p3char(3)

set@p1=(selectu_用户名frominserted)

set@p2=(selectu_IDfrominserted)

set@p3=(selectu_密码frominserted)

insertinto用户_operatevalues(@p1,@p2,@p3)

end

go

createtriggertrigger_用户_delete

on用户

fordelete

as

begin

declare@p1char(8),@p2char(8),@p3char(3)

set@p1=(selectu_用户名fromdeleted)

set@p2=(selectu_IDfromdeleted)

set@p3=(selectu_密码fromdeleted)

insertinto用户_operatevalues(@p1,@p2,@p3)

end

go

createtriggertrigger_用户_update

on用户

forupdate

as

begin

declare@p1char(8),@p2char(8),@p3char(3)

set@p1=(selectu_用户名fromdeleted)

set@p2=(selectu_IDfromdeleted)

set@p3=(selectu_密码fromdeleted)

insertinto用户_operatevalues(@p1,@p2,@p3)

end

go

createtriggersel_s1on办公用品

forinsert

asifexists(select*frominsertedwherew_办公用品名称in(selectw_办公用品名称from办公用品))

print'successful!

'

else

beginprint'faulse!

!

!

'

end

创建一个DDL触发器,禁止删除数据库中的任何一个表

createtriggersafeondatabase

fordrop_table

asprint'不能进行删除数据表!

'

rollback

3.6数据库运行与维护

相关查询:

通过用户ID和密码查询相应用户的基本信息

select*

from用户

whereu_用户名in(selectu_用户名

from用户a

whereu_ID='1'andu_密码='01')

截图得:

图3.6.1查询图

数据库的备份:

backupdatabase办公用品todisk='D:

\backup\办公用品_full.bak'

还原数据库:

restoredatabase办公用品fromdisk='D:

\backup\办公用品_full.bak'

withreplace

创建登录名和分配相应的权限

设置用户名与管理员

execsp_addlogin'管理员','00','办公用品',null

execsp_adduser'李娟','李娟','db_owner'

图3.6.2分配权限图

授予用户权限

grantselecton办公用品to李娟

图3.6.3授予权限图

 

第4章结束语

通过这次课程设计发现这其中需要的很多知识我们没有接触过,上网查找资料的时候发现我们以前所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。

同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要自己不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。

在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。

这次的数据库课程设计,我课设的题目是办公用品管理系统。

从各种文档的阅读到需求分析E_R、数据库总体设计、代码编写与调试,我都准备了好长时间。

很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。

但真正需要自己想办法去设计一个系统的时候才发现其中的难度。

经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。

在需求分析过程中,我们通过上网查资料,去图书馆查阅相关资料,结合我们的生活经验,根据可行性研究的结果和用户的需要,分析现有情况及问题。

通过本次课程设计,对SQL语言,数据库的创建、修改、删除方法有了一定的了解,学会了数据库的基本操作,学会很多事情不是想象中的那么简单的,它涉及到的各种实体、属性、数据流程、数据处理,安全性的控制等等。

很多时候感觉后面的设计根本无法继续,感觉像是被前面做的各种图限制了。

在做关系模型转换的时候碰到有些实体即可以认为是实体又可以作为属性,为了避免冗余,尽量按照属性处理了。

在开始对数据库进行安全性设置时出现了很多的错误,开始不太理解安全性的设置方法,通过查阅数据和网上查询最终完成了数据库安全性的设置,数据库主要的是安全性,完整性,并发控制,数据库的恢复,在一步一步的实践操作过程中完善数据库,在课程设计过程中了解到了只有不断地去发现并改正就会学到很多之前没有学到的知识,在数据库课设过程中通过同学之间的互相帮助可以学到更多的知识,可能课设时间比较长,但是在这两周的课设中学到了更多,不只是课本知识还有实际操作的能力与知识。

在课设中有很多自己之前没有掌握的知识,通过课设加以完善。

通过这次课程设计的完成,使我对自己所学知识进一步的了解,同时通过实践发现自己的不足,对知识的掌握及运用存在诸多的不完善。

本系统也存在着很多不足,如系统十分简单,实现功能也不够完善,安全性问题也没有很好的解决。

以在今后的学习中我会继续努力,完善自我,同学的帮助、指导老师的用心辅导和学校的精心安排使这个课题能够顺利进行。

但是,由于时间仓促以及本人水平有限,本系统还有很多不完善之处,也难免存在错漏,恳请老师谅解。

 

参考文献

1.《数据库原理及应用教程》第三版陈志泊人民邮电出版社

2.《数据库系统原理教程》王珊清华大学出版社

3.《数据库原理与开发》李昭原科学出版社

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1