课程设计报告课程设计题目:仓库管理系统数据库的设计与实现软件工程业: 专: 级班号: 学名: 姓: 指导教师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.各功能创建视图查询E-R图:○2入库价格产品编号入库时间入库价格产品名称入库信息货主联系电话货主名称入库入库价格产品名称种类产品编号仓库零件信出库价库出客户姓客户姓种出库时出库信出库价产品名出库时创建表:○31.仓库零件信息表(产品编号【主键】,名称【不为空】,种类【不为空】,入库价格【为空】,出库价格【为空】,库存【为空】)2.入库信息表(产品编号【主键】,产品名称【不为空】,货主名称【不为空】,入库数量【为空】,入库价格【为空】,货主联系电话【为空】)3.出库信息表(产品编号【主键】,产品名称【不为空】,客户名称【不为空】,出库数量【为空】,出库价格【为空】,客户联系电话【为空】)具体操作:仓库零件信息表创建:create table 仓库零件信息表(产品编号int not null primary key,产品名称varchar(20)not null,种类varchar(15)not null,入库价格int,出库价格int,库存int)列名字段类型长度允许为空Primary key产品编10intNot null10Varchar产品名Not null10Varchar种Not null入库价10IntNot nullInt出库价10Not null200Int库入库信息表创建入库信息表create table(int not null primary key, 产品编号varchar(20)not null, 产品名称varchar(20) not null, 货主名称int, 入库数量int, 入库价格int, 货主联系电话)长度允许为空字段类型列名Not null Int 10 产品编号Not null20Varchar 产品名称.货主名称Varchar 20 Not nullNot null Int 13 入库数量Not null 入库价格10 IntYInt 20 货主联系电话出库信息表创建create table 出库信息表(产品编号int not null primary key,产品名称varchar(20)not null,客户名称varchar(20) not null,出库数量int,出库价格int,客户联系电话int,)列名字段类型长度允许为空产品编号int 20 primary key产品名称varchar 20 not null客户名称varchar 20 not null出库数量int, 20 Y出库价int,20Y客户联系电int,20Y四、实现过产品编号种类产品名称入库价格出库价格库存1 电脑零件CPU 1500 1800 202 电视零件CPU 1000 1200 203 电脑零件显示屏1300 1500 204 电脑零件显卡800 1000 20---仓库管理系统数据库查询与设计---/*************仓库零件信息表创建******************/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,)insert into 入库信息表values (2,'电视零件','李四',10,1000,)insert into 入库信息表values (3,'电脑零件','王二',10,1300,)insert into 入库信息表values (4,'电脑零件','阿三',10,800,)--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,)insert into 出库信息表values (2,'电视零件','刘一',10,1500,)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_0asselect 仓库零件信息表.产品编号,产品名称,货主名称,入库数量,入库信息表.入库价格,货主联系电话,出库价格, 种类,库存from 入库信息表,仓库零件信息表where 入库信息表.产品编号=仓库零件信息表.产品编号--该视图为联系入库信息表和仓库零件信息表的查询实现如下:----------零件信息登记----------create procedure seve(@产品编号int ,@名称varchar(20),@种类varchar(15),@入库价格int,@出库价格int,@库存int)asinsert into 仓库零件信息表values (@产品编号,@名称,@种类,@入库价格,@出库价格,@库存)exec seve @产品编号=11,@名称='AMD',@种类='显卡',@入库价格=900,@出库价格=1100,@库存=30 --查看插入产品编号为11的信息在原有零件中实现如下:---------零件信息修改-----------create procedure pro_update(@产品编号int ,@名称varchar(20),@种类varchar(15),@入库价格int,@出库价格int,@库存int)asupdate 仓库零件信息表set 名称=@名称,种类=@种类,入库价格=@入库价格,出库价格=@出库价格,库存库存=@.where 产品编号=@产品编号update 出库信息表set 产品名称=@名称,出库价格=@出库价格where 产品编号=@产品编号update 入库信息表set 产品名称=@名称,入库价格=@入库价格where 产品编号=@产品编号exec pro_update @产品编号=4,@名称='修改',@种类='已修改',@入库价格=500,@出库价格=700,@库存=25 --查看产品编号为4的修改情况实现如下:----------零件信息删除--------------create procedure pro_delete(@产品编号int)asdeletefrom 仓库零件信息表where 产品编号=@产品编号exec pro_delete @产品编号=11实现如下:---------零件信息查询---------create procedure pro_select(@产品编号int)asselect *from 仓库零件信息表where 产品编号=@产品编号exec pro_select @产品编号=1 --查询产品编号为1的信息实现如下:----------入库信息表登记------------create procedure pro_1(@产品编号int,@产品名称varchar(20),@货主名称varchar(20),@入库数量int,@入库价格int,@货主联系电话int)asinsert into 入库信息表values (@产品编号,@产品名称,@货主名称,@入库数量,@入库价格,@货主联系电话)exec pro_1 @产品编号=5,@产品名称='AMD',@货主名称='小二',@入库数量=20,@入库价格=900,@货主联系电话=--登记产品编号为5的信息查看实现如下:---------------入库操作-------------create proc pro_7111(@产品编号int,varchar(20),产品名称@.@货主名称varchar(20),@入库数量int,@入库价格int,@货主联系电话int ,@出库价格int,@种类varchar(12))asif ((select 产品编号from 仓库零件信息表where 产品编号=@产品编号) is not null) --如果原有产品在仓库中存在则执行编号为5的,没有则执行else语句beginupdate 仓库零件信息表set 库存=库存+@入库数量where 产品编号=@产品编号insert into 入库信息表values (@产品编号,@产品名称,@货主名称,@入库数量,@入库价格,@货主联系电话)endelsebegininsert into 入库信息表values (@产品编号,@产品名称,@货主名称,@入库数量,@入库价格,@货主联系电话)insert into 仓库零件信息表values (@产品编号,@产品名称,@种类,@入库价格,@出库价格,@入库数量)endexec pro_7111 @产品编号=5,@产品名称='ss',@货主名称='ww',@入库数量=31,@入库价格=1500,@货主联系电话=, @出库价格=2323, @种类='fds'--如果原有仓库有的产品,则插入此行,查看产品编号为5的数量变化实现如下:exec pro_711 @产品编号=12,@产品名称='ss',@货主名称='ww',@入库数量=31,@入库价格=1500,@货主联系电话=, @出库价格=2323, @种类='fds'--如果原有仓库没有的产品,则插入此行,查看产品编号为12的数量变化,重新查看仓库的数量实现如下:-----------入库信息修改-----------create procedure pro_2(@产品编号int,@产品名称varchar(20),@货主名称varchar(20),@入库数量int,@入库价格int,@货主联系电话int)asupdate 入库信息表set 产品名称=@产品名称,货主名称=@货主名称,入库数量=@入库数量,入库价格=@入库价格,货主联系电话=@货主联系电话where 产品编号=@产品编号update 出库信息表set 产品名称=@产品名称where 产品编号=@产品编号update 仓库零件信息表set 名称=@产品名称,入库价格=@入库价格where 产品编号=@产品编号select *from 入库信息表exec pro_2 @产品编号=12,@产品名称='修改',@货主名称='已修改',@入库数量=20,@入库价格=900,@货主联系电话=--利用存储过程查看产品编号为12的修改情况实现如下:--------------入库信息删除------------create proc pro_3(@产品编号int)asdeletefrom 入库信息表where 产品编号=@产品编号exec pro_3 @产品编号=4实现如下:--------------入库信息查询--------------create procedure pro_42(@产品编号int)asselect *from 入库信息表where 产品编号= @产品编号exec pro_42 @产品编号=1实现如下:-------------出库信息登记------------create procedure pro_5(@产品编号int ,@产品名称varchar(20),@客户名称varchar(20),@出库数量int,@出库价格int,@客户联系电话int)asinsert into 出库信息表values (@产品编号,@产品名称,@客户名称,@出库数量,@出库价格,@客户联系电话)exec pro_5 @产品编号=4,@产品名称='AMD',@客户名称='小三',@出库数量=10,@出库价格=1100,@客户联系电话=98766--登记编号为5的产品出库情况实现如下:-------------出库操作-------------create procedure pro_111(@产品编号int ,@产品名称varchar(20),@出库价格int,@客户名称varchar(20),@出库数量int,@客户联系电话int)asif ((select 产品编号from 仓库零件信息表where 产品编号=@产品编号)is null) print '仓库没有该货物' --如果原有仓库没有客户需要的产品直接执行编号为8的语句插入如果有则执行else语句查看出库后剩余的产品数量执行编号为4的语句else --begininsert into 出库信息表values(@产品编号,@产品名称,@客户名称,@出库数量,@客户名称,@客户联系电话)仓库零件信息表updateset 库存=库存-@出库数量where 仓库零件信息表.产品编号=@产品编号endexec pro_111 @产品编号=8,@产品名称='ss',@客户名称='123',@出库数量=31,@出库价格=1500,@客户联系电话=--如果原有仓库没有产品编号为8的执行此行实现如下:exec pro_111 @产品编号=4,@产品名称='ss',@客户名称='123',@出库数量=31, @出库价格=2323,@客户联系电话=--如果原有仓库有产品编号为4的执行此行查询实现如下:------------出库信息修改----------------create procedure pro_6(@产品编号int ,@产品名称varchar(20),@客户名称varchar(20),@出库数量int,@出库价格int,@客户联系电话int)asupdate 入库信息表set 产品名称=@产品名称where 产品编号=@产品编号update 出库信息表出库价,出库数量=@出库数量,客户名称=@客户名称,产品名称=@产品名称set 格=@出库价格,客户联系电话=@客户联系电话where 产品编号=@产品编号update 仓库零件信息表set 名称=@产品名称,出库价格=@出库价格where 产品编号=@产品编号exec pro_6 @产品编号=5,@产品名称='修改',@客户名称='已修改',@出库数量=10,@出库价格=1100,@客户联系电话=98766--如果需要修改出库的产品信息执行编号为5的实现如下:------------出库信息删除--------------create proc pro_7(@产品编号int)asdeletefrom 出库信息表where 产品编号=@产品编号exec pro_3 @产品编号=3实现如下:--------------出库信息查询--------------create procedure pro_8 --drop procedure pro_8 (@产品编号int)asselect *from 出库信息表where 产品编号=@产品编号exec pro_8 @产品编号=1实现如下:---------------显示触发器-------------在执行存储过程之前执行触发器方便查看零件入库出库的更新添加修改删除create trigger tri_1on 仓库零件信息表for insertasselect *from 仓库零件信息表create trigger tri_2on 仓库零件信息表for deleteasselect *from 仓库零件信息表create trigger tri_3on 仓库零件信息表for updateasselect *from 仓库零件信息表create trigger tri_4on 入库信息表for insertasselect *from 入库信息表create trigger tri_5入库信息表onfor deleteasselect *入库信息表fromcreate trigger tri_6入库信息表onfor updateasselect *from 入库信息表create trigger tri_7on 出库信息表for insertasselect *from 出库信息表create trigger tri_8on 出库信息表for deleteasselect *出库信息表fromcreate trigger tri_9出库信息表onfor updateasselect *from 出库信息表五、实验总结此代码大部分功能以实现,但还有不足,代码不够简单。