您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 仓库管理系统数据库的设计与实现SQLserver
●实验题目:仓库管理系统数据库的设计与实现描述:设计一个仓库管理系统,实现下列功能:①零件信息登记(包括种类,名称和库存数量等信息);②零件进库登记(包括种类,名称和库存数量等信息);③零件出库登记(包括种类,名称和库存数量等信息);实验代码和实验结果和实验总结:在实验代码中分别应用了相关实验操作的结果,通过上一个结果截图与其随后的结果截图和相关代码对比课已看出相关代码的作用(主要是各个触发器的作用)。----------------------------------------数据库的创建createdatabase仓库管理系统数据库onprimary(name=仓库管理系统数据库_data,filename='E:\仓库管理系统数据库_Data.MDF',size=50,maxsize=500,filegrowth=5)logon(name=仓库管理系统数据库_log,filename='E:\仓库管理系统数据库_Log.LDF',size=10,maxsize=200,filegrowth=5)------------------------------------------数据表的创建use仓库管理系统数据库createtable零件信息登记(零件代号char(10)primarykey,名称char(10)notnull,种类char(10)notnull,价格numeric(10,2)notnull,库存数量intdefault0)createtable零件进库登记(零件代号char(10)foreignkeyreferences零件信息登记(零件代号),进货代号int,进货人工作号char(10),名称char(10)notnull,种类char(10)notnull,价格numeric(10,2)notnull,进库数量intnotnulldefault0,存放位置char(10)notnull,进库时间datetime,primarykey(零件代号,进货代号))createtable零件出库登记(零件代号char(10)foreignkeyreferences零件信息登记(零件代号),出货代号int,出货人工作号char(10)notnull,名称char(10)notnull,种类char(10)notnull,价格numeric(10,2)notnull,出库数量intnotnulldefault0,取货单号char(10)notnull,出库时间datetime,primarykey(零件代号,出货代号))------------------------------------------通过存储过程来实现表中数据的输入createprocedurepro_ins1(@nochar(20),@namechar(20),@classchar(20),@snumeric(10,2),@numint)asinsertinto零件信息登记values(@no,@name,@class,@s,@num)createprocedurepro_ins2(@nochar(20),@jnoint,@wnochar(10),@namechar(20),@classchar(20),@snumeric(10,2),@numint,@mchar(20))asdeclare@timedatetimeset@time=getdate()insertinto零件进库登记values(@no,@jno,@wno,@name,@class,@s,@num,@m,@time)createprocedurepro_ins3(@nochar(20),@jnoint,@wnochar(10),@namechar(20),@classchar(20),@snumeric(10,2),@numint,@mchar(20))asdeclare@timedatetimeset@time=getdate()insertinto零件出库登记values(@no,@jno,@wno,@name,@class,@s,@num,@m,@time)createprocedurepro_selectasbeginselect*from零件信息登记select*from零件进库登记select*from零件出库登记end------------------------------------------------------------通过第一个存储过程来实现零件的信息登录execpro_ins1'20112001','螺栓','金属',5.2,50execpro_ins1'20112002','龙头','金属',9.3,70execpro_ins1'20112003','水杯','塑料',36.8,80execpro_ins1'20112004','书包','布料',52,150execpro_ins1'20112005','电视','电子',4000,50-----------------------------------------------------当零件进库时通过下面的触发器来实现数据的完整性createtriggertri_统一零件管理on零件进库登记insteadofinsertasbeginif(exists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)))beginprint'在库里已经此零件,并且放置成功'update零件信息登记set库存数量=库存数量+(select进库数量frominserted)where零件代号=(select零件代号frominserted)endif(notexists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)))beginprint'库里不存在此零件,已经把此零件加入零件信息登记中'insertinto零件信息登记select零件代号,名称,种类,价格,进库数量frominsertedinsertinto零件进库登记select零件代号,进货代号,进货人工作号,名称,种类,价格,进库数量,存放位置,进库时间frominsertedendEnd----------------------------------------------------------------对触发器“tri_统一零件管理”的相关验证信息execpro_selectexecpro_ins2'20112002',1120,'c2011a','龙头','金属',9.3,70,'一排号'execpro_ins2'20112009',1122,'c2011b','电池','金属',8.3,150,'一排号'execpro_ins2'20112012',1132,'c2011c','水桶','塑料',7.9,130,'二排号'execpro_ins2'20112013',1134,'a2012d','饮料','食品',54,200,'二排号'execpro_select--droptriggertri_统一零件出库-----------------------------------------------------------------------当零件出库时通过下面的触发器来实现数据的完整性createtriggertri_统一零件出库on零件出库登记insteadofinsertasifexists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted))beginprint'次零件存在'ifexists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)and库存数量=(select出库数量frominserted))beginbeginprint'零件库存够出售'update零件信息登记set库存数量=库存数量-(select出库数量frominserted)where零件代号=(select零件代号frominserted)endinsertinto零件出库登记select零件代号,出货代号,出货人工作号,名称,种类,价格,出库数量,取货单号,出库时间frominsertedendelsebeginprint'零件库存数量不够,不能出售!'endendelsebeginprint'仓库里没有此零件,请通知公司'end--对触发器“tri_统一零件管理”的相关验证信息execpro_ins3'20112002',1120,'f112a','龙头','金属',9.3,10,'东华理工'execpro_ins3'20112004',1143,'f113a','书包','布料',52,1000,'南昌'execpro_ins3'20112045',1220,'f114b','铅笔','用具',9.3,10,'江西'execpro_ins3'20112046',1128,'g112a','锁','金属',9.3,10,'云南'execpro_select-------------------------------------------------------------------对“零件进库登记”数据更改是触发对“零件信息登记”的更改--同时防止对“零件进库登记”信息的非法更改createtriggertri_up零件进库on零件进库登记afterupdateasifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)and进货代号=(select进货代号frominserted)and进库数量(select进库时间frominserted))update零件信息登记set库存数量=库存数量+(select进库数量frominserted)-(select进库数量fromdeleted)elseifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)and进货代号=(select进货代号frominserted)and进库数量=(select进库时间frominserted))update零件信息登记set库存数量=库存数量+(select进库数量frominserted)-(select进库数量fromdeleted)elsebeginprint'修改不正确'end-----------------------------------------------------------------------对触发器“tri_up零件进库”的相关验证信息update零件进库登记set进库数量=120where零件代号='20112002'and进货代号=1120update零件进库登记set进库数量=5000where零件代号='20112002'and进货代号=2187execpro_select----------------------------------------------------------对“零件出库登记”数据更改是触发对“零件信息登记”的更改--同时防止对“零件进库登记”信息的非法更改createtriggertri_up零件出库on零件出库登记afterupdateasifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)and出货代号=(select出货代号frominserted)and出库数量=(select出库时间frominserted))update零件信息登记set库存数量=库存数量+(select出库数量f
本文标题:仓库管理系统数据库的设计与实现SQLserver
链接地址:https://www.777doc.com/doc-5310874 .html