数据库仓库管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
课程设计题目:
仓库管理系统数据库的设计与实现
专业: 软件工程
班级:
学号:
姓名:
指导教师:
2012年12月1日
目录
一、实验目的 (3)
二、设计要求 (3)
三、实验思路 (3)
四、实验过程(源代码) (6)
五、实验总结 (19)
六、心得体会 (20)
一、目的:
通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。
二、课程设计要求:
1.对各个系统进行系统功能需求分析
描述:设计一个仓库管理系统,实现下列功能:
○1. 零件信息登记(包括种类,名称和库存数量等信息);
○2. 零件进库登记(包括种类,名称和库存数量等信息);
○3. 零件出库登记(包括种类,名称和库存数量等信息);
三、实现思路
①需求分析: 由于货物的种类数量的纷繁复杂,比较难管理,给工作人员的工作带来诸
多不便.此系统的开发就是专门解决工作人员在这些烦琐的问题。
此系统适用于仓库,它是比较完善的系统管理软件。
此系统的采用方便了仓库管理人员对仓库的管理,对管理人员的工作起到重要作用。
通过本系统软件,能帮助工作人员利用计算机,快速方便的对仓库的货物进行管理、输入、输出、查找等操作,将货物的管理具体化、直观化、合理化。
通过该系统所记录的数据,可以使仓库管理者对货物的进出情况管理的更清楚,使仓库管理系统更完善,减轻工作人员的工作负担,使工作简化,从而对货物进行更井井有条的管理。
主要功能如下:
1.零件信息登记
2.零件信息修改
3.零件信息删除
4.零件信息查询
5.入库信息登记
6.入库操作
7.入库信息修改8入库信息删除
9.入库信息查询10.出库信息登记11.出库库操作12.出库信息修改
13.出库信息删除14.出库信息查询15.显示触发器16.各功能创建视
图查询
○2E-R图:
○3创建表:
1.仓库零件信息表(产品编号【主键】,名称【不为空】,种类【不为空】,入库价格【为空】,出库价格【为空】,库存【为空】)
2.入库信息表(产品编号【主键】,产品名称【不为空】,货主名称【不为空】,入库数量【为空】,入库价格【为空】,货主联系电话【为空】)
3.出库信息表(产品编号【主键】,产品名称【不为空】,客户名称【不为空】,出库数量【为空】,出库价格【为空】,客户联系电话【为空】)
具体操作:
仓库零件信息表创建:
create table 仓库零件信息表
(
产品编号int not null primary key,
产品名称varchar(20)not null,
种类varchar(15)not null,
入库价格int,
出库价格int,
库存int
)
入库信息表创建
create table 入库信息表
(
产品编号int not null primary key,
产品名称varchar(20)not null,
货主名称varchar(20) not null,
入库数量int,
入库价格int,
货主联系电话int,
)
出库信息表创建
create table 出库信息表
(
产品编号int not null primary key,
产品名称varchar(20)not null,
客户名称varchar(20) not null,
出库数量int,
出库价格int,
客户联系电话int,
)
/*************仓库零件信息表创建******************/ create table 仓库零件信息表
(
产品编号int not null primary key,
名称varchar(20)not null,
种类varchar(15)not null,
入库价格int,
出库价格int,
库存int
)
insert into 仓库零件信息表values (1,'电脑零件','CPU',1500,1800,20) insert into 仓库零件信息表values (2,'电视零件','CPU',1000,1200,20) insert into 仓库零件信息表values (3,'电脑零件','显示屏',1300,1500,20) insert into 仓库零件信息表values (4,'电脑零件','显卡',800,1000,20)
------drop table 仓库零件信息表
实现如下:
/*************入库信息表创建***************/
create table 入库信息表
(
产品编号int not null ,
产品名称varchar(20)not null,
货主名称varchar(20) not null,
入库数量int,
入库价格int,
货主联系电话int
)
insert into 入库信息表values (1,'电脑零件','张三',10,1500,123456) insert into 入库信息表values (2,'电视零件','李四',10,1000,234567) insert into 入库信息表values (3,'电脑零件','王二',10,1300,7758520) insert into 入库信息表values (4,'电脑零件','阿三',10,800,3344334)
--drop table 入库信息表
实现如下:
/*************出库信息表创建******************/
create table 出库信息表
(
产品编号int not null primary key,
产品名称varchar(20)not null,
客户名称varchar(20) not null,
出库数量int,
出库价格int,
客户联系电话int
)
insert into 出库信息表values (1,'电脑零件','胡二',10,1800,222222)
insert into 出库信息表values (2,'电视零件','刘一',10,1500,4444444)
insert into 出库信息表values (3,'电脑零件','钟三',10,1000,55555)
----drop table 出库信息表
实现如下:
--查询所建的表
select * from 仓库零件信息表
select * from 入库信息表
select * from 出库信息表
/*************索引创建******************/
create unique index 货主索引on 入库信息表(货主联系电话) -- drop index 入库信息表.货主
create unique index 零件索引on 仓库零件信息表(产品编号) -- drop index 仓库零件信息表.零件
create unique index 客户索引on 出库信息表(客户联系电话) -- drop index 出库信息.客户
---创建视图
create view vi_0
as
select 仓库零件信息表.产品编号,产品名称,货主名称,入库数量,入库信息表.入库价格,货主联系电话,出库价格, 种类,库存
from 入库信息表,仓库零件信息表
where 入库信息表.产品编号=仓库零件信息表.产品编号--该视图为联系入库信息表和仓库零件信息表的查询
实现如下:
----------零件信息登记----------
create procedure seve
(
@产品编号int ,
@名称varchar(20),
@种类varchar(15),
@入库价格int,
@出库价格int,
@库存int
)
as
insert into 仓库零件信息表values (@产品编号,@名称,@种类,@入库价格,@出库价格,@库存)
exec seve @产品编号=11,@名称='AMD',@种类='显卡',@入库价格=900,@出库价格=1100,@库存=30 --查看插入产品编号为11的信息在原有零件中
实现如下:
---------零件信息修改-----------
create procedure pro_update
(
@产品编号int ,
@名称varchar(20),
@种类varchar(15),
@入库价格int,
@出库价格int,
@库存int
)
as
update 仓库零件信息表
set 名称=@名称,种类=@种类,入库价格=@入库价格,出库价格=@出库价格,库存=@库存
where 产品编号=@产品编号
update 出库信息表
set 产品名称=@名称,出库价格=@出库价格
where 产品编号=@产品编号
update 入库信息表
set 产品名称=@名称,入库价格=@入库价格
where 产品编号=@产品编号
exec pro_update @产品编号=4,@名称='修改',@种类='已修改',@入库价格=500,@出库价格=700,@库存=25 --查看产品编号为4的修改情况
实现如下:
----------零件信息删除--------------
create procedure pro_delete
(
@产品编号int
)
as
delete
from 仓库零件信息表
where 产品编号=@产品编号
exec pro_delete @产品编号=11
实现如下:
---------零件信息查询---------
create procedure pro_select
(
@产品编号int
)
as
select *
from 仓库零件信息表
where 产品编号=@产品编号
exec pro_select @产品编号=1 --查询产品编号为1的信息
实现如下:
----------入库信息表登记------------
create procedure pro_1
(
@产品编号int,
@产品名称varchar(20),
@货主名称varchar(20),
@入库数量int,
@入库价格int,
@货主联系电话int
)
as
insert into 入库信息表values (@产品编号,@产品名称,@货主名称,@入库数量,@入库价格,@货主联系电话)
exec pro_1 @产品编号=5,@产品名称='AMD',@货主名称='小二',@入库数量=20,@入库价格=900,@货主联系电话=767876
--登记产品编号为5的信息查看
实现如下:
---------------入库操作-------------
create proc pro_7111
(
@产品编号int,
@产品名称varchar(20),
@货主名称varchar(20),
@入库数量int,
@入库价格int,
@货主联系电话int ,
@出库价格int,
@种类varchar(12))
as
if ((select 产品编号from 仓库零件信息表where 产品编号=@产品编号) is not null) --如果原有产品在仓库中存在则执行编号为5的,没有则执行else语句begin
update 仓库零件信息表
set 库存=库存+@入库数量
where 产品编号=@产品编号
insert into 入库信息表values (@产品编号,@产品名称,@货主名称,@入库数量,@入库价格,@货主联系电话)
end
else
begin
insert into 入库信息表values (@产品编号,@产品名称,@货主名称,@入库数量,@入库价格,@货主联系电话)
insert into 仓库零件信息表values (@产品编号,@产品名称,@种类,@入库价格,@出库价格,@入库数量)
end
exec pro_7111 @产品编号=5,@产品名称='ss',@货主名称='ww',@入库数量=31,@入库价格=1500,@货主联系电话=3232323, @出库价格=2323, @种类='fds'
--如果原有仓库有的产品,则插入此行,查看产品编号为5的数量变化
实现如下:
exec pro_711 @产品编号=12,@产品名称='ss',@货主名称='ww',@入库数量=31,@入库价格=1500,@货主联系电话=3232323, @出库价格=2323, @种类='fds'
--如果原有仓库没有的产品,则插入此行,查看产品编号为12的数量变化,重新查看仓库的数量
实现如下:
-----------入库信息修改-----------
create procedure pro_2
(
@产品编号int,
@产品名称varchar(20),
@货主名称varchar(20),
@入库数量int,
@入库价格int,
@货主联系电话int
)
as
update 入库信息表
set 产品名称=@产品名称,货主名称=@货主名称,入库数量=@入库数量,入库价格=@入库价格,货主联系电话=@货主联系电话
where 产品编号=@产品编号
update 出库信息表
set 产品名称=@产品名称
where 产品编号=@产品编号
update 仓库零件信息表
set 名称=@产品名称,入库价格=@入库价格
where 产品编号=@产品编号
select *
from 入库信息表
exec pro_2 @产品编号=12,@产品名称='修改',@货主名称='已修改',@入库数量=20,@入库价格=900,@货主联系电话=767876
-- 利用存储过程查看产品编号为12的修改情况
实现如下:
--------------入库信息删除------------ create proc pro_3
(
@产品编号int
)
as
delete
from 入库信息表
where 产品编号=@产品编号
exec pro_3 @产品编号=4
实现如下:
--------------入库信息查询-------------- create procedure pro_42
(
@产品编号int
)
as
select *
from 入库信息表
where 产品编号= @产品编号
exec pro_42 @产品编号=1
实现如下:
-------------出库信息登记------------
create procedure pro_5
(
@产品编号int ,
@产品名称varchar(20),
@客户名称varchar(20),
@出库数量int,
@出库价格int,
@客户联系电话int
)
as
insert into 出库信息表values (@产品编号,@产品名称,@客户名称,@出库数量,@出库价格,@客户联系电话)
exec pro_5 @产品编号=4,@产品名称='AMD',@客户名称='小三',@出库数量=10,@出库价格=1100,@客户联系电话=98766
--登记编号为5的产品出库情况
实现如下:
-------------出库操作-------------
create procedure pro_111
(
@产品编号int ,
@产品名称varchar(20),
@出库价格int,
@客户名称varchar(20),
@出库数量int,
@客户联系电话int
)
as
if ((select 产品编号from 仓库零件信息表where 产品编号=@产品编号)is null) print '仓库没有该货物' --如果原有仓库没有客户需要的产品直接执行编号为8的语句插入如果有则执行else语句查看出库后剩余的产品数量执行编号为4的语句
else --
begin
insert into 出库信息表values(@产品编号,@产品名称,@客户名称,@出库数量,@客户名称,@客户联系电话)
update 仓库零件信息表
set 库存=库存-@出库数量
where 仓库零件信息表.产品编号=@产品编号
end
exec pro_111 @产品编号=8,@产品名称='ss',@客户名称='123',@出库数量=31,@出库价格=1500,@客户联系电话=3232323
--如果原有仓库没有产品编号为8的执行此行
实现如下:
exec pro_111 @产品编号=4,@产品名称='ss',@客户名称='123',@出库数量=31, @出库价格=2323,@客户联系电话=3232323
--如果原有仓库有产品编号为4的执行此行查询
实现如下:
------------出库信息修改----------------
create procedure pro_6
(
@产品编号int ,
@产品名称varchar(20),
@客户名称varchar(20),
@出库数量int,
@出库价格int,
@客户联系电话int
)
as
update 入库信息表
set 产品名称=@产品名称
where 产品编号=@产品编号
update 出库信息表
set 产品名称=@产品名称,客户名称=@客户名称,出库数量=@出库数量,出库价
格=@出库价格,客户联系电话=@客户联系电话
where 产品编号=@产品编号
update 仓库零件信息表
set 名称=@产品名称,出库价格=@出库价格
where 产品编号=@产品编号
exec pro_6 @产品编号=5,@产品名称='修改',@客户名称='已修改',@出库数量=10,@出库价格=1100,@客户联系电话=98766
--如果需要修改出库的产品信息执行编号为5的
实现如下:
------------出库信息删除--------------
create proc pro_7
(
@产品编号int
)
as
delete
from 出库信息表
where 产品编号=@产品编号
exec pro_3 @产品编号=3
实现如下:
--------------出库信息查询--------------
create procedure pro_8 --drop procedure pro_8
(
@产品编号int
)
as
select *
from 出库信息表
where 产品编号=@产品编号
exec pro_8 @产品编号=1
实现如下:
---------------显示触发器-------------在执行存储过程之前执行触发器方便查看零件入库出库的更新添加修改删除
create trigger tri_1
on 仓库零件信息表
for insert
as
select *
from 仓库零件信息表
create trigger tri_2
on 仓库零件信息表
for delete
as
select *
from 仓库零件信息表
create trigger tri_3
on 仓库零件信息表
for update
as
select *
from 仓库零件信息表
create trigger tri_4
on 入库信息表
for insert
as
select *
from 入库信息表
create trigger tri_5
on 入库信息表
for delete
as
select *
from 入库信息表
create trigger tri_6
on 入库信息表
for update
as
select *
from 入库信息表
create trigger tri_7
on 出库信息表
for insert
as
select *
from 出库信息表
create trigger tri_8
on 出库信息表
for delete
as
select *
from 出库信息表
create trigger tri_9
on 出库信息表
for update
as
select *
from 出库信息表
五、实验总结
此代码大部分功能以实现,但还有不足,代码不够简单。
此次的设计是1个新的体验、新的挑战,我在此过程中不但应用了所学的知识,而且还不断的学习新的知识、工具,以完成设计的需要,在设计的过程中我深深体会到作为1个学习计算机专业的人士,为了实现1个模块的代码、为了1个设计的实现思想、经常绞尽脑汁来达到设计所要达到的目的,虽然我的基础知识不够扎实,但是我在此期间积累了许多宝贵的经验,这都是我以后走上工作岗位的巨大的财富。
六、心得体会
从课程的学习和实验当中我了解到,表是数据库数据当中最重要的一个数据对象,表建立的好坏直接关系到数据库的实际使用效果,表当中的内容越具体对表越有利,同时对数据库的各种应用也有着各种各样的便利,但是表的内容也不能过于的繁琐,当然,这些也只能在今后的实际使用当中多多的应用,才能加深和理解如何对表进行规划才更有利于使用和查询。
在数据库中,数据内容的查询可以使用查询语句的方法查询,也可以使用视图操作的方法进行查询,使用视图操作的方法不仅可以简化数据操作,同时还可以检索数据,在查询时还能向基表当中添加、修改和删除数据,能有效的提高数据库可用性和安全性。
SQL Server 2000 的学习是在老师的悉心教导和上机实验实践当中度过的,经过短暂的学习,让我学会了很多知识,对于我今后的人生和工作有很多有用有帮助的地方,感谢老师的教导,让我又多掌握了一项专业的技术,我会在今后更加努力的学习这方面的专业技术知识,勤于实践、不断提高,以适应时代的发展,更好的把握未来。