仓库管理系统实验报告Word格式.docx
《仓库管理系统实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《仓库管理系统实验报告Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
数据结构
长度
是否允许空
备注
产品编号sto_id
Char
10
否
主键
产品名称sto_name
20
是
产品库存sto_number
Int
产品单位sto_unit
5
产品单价sto_price
Float
产品类型编号sto_typeId
外键
产品库房编号sto_houseId
产品出产日期sto_proTime
Date
产品保质日期sto_life
产品净含量sto_weight
2.2.2产品类型jiangxue_type表结构
类型编号type_id
类型名称type_name
3入库表jiangxue_inStorage表结构
入库编号in_id
入库日期in_time
Datetime
入库产品编号in_stoId
入库数量in_stonumber
产品类型编号in_typeId
供应商编号in_supId
操作员编号in_opeId
入库库房编号in_houseId
备注in_comment
50
2.4出库表jiangxue_outStorage表结构
出库编号out_id
出库日期out_time
出库产品编号out_stoId
出库数量out_stonumber
产品类型编号out_typeId
领取部门编号out_depId
出库操作员out_opeId
备注out_comment
2.2.5供应商jangxue_supplier表结构
供应商编号sup_id
供应商名称sup_name
供应商电话sup_phone
供应商地址sup_address
30
供应商邮件sup_email
供应商邮编sup_postcade
6出货部门jiangxue_department表结构
部门编号dep_id
部门名称dep_name
2.7操作员jiangxue_operator表结构
操作员编号ope_id
操作员姓名ope_name
操作员性别ope_sex
操作员电话ope_phone
操作员职位ope_position
操作员身份证号ope_idcard
2.2。
8库房jiangxue_storeHouse表结构
库房编号stohouse_id
库房面积stohouse_area
管理员stohouse_manager
9用户jiangxue_user表结构
用户名username
密码password
第三章数据库程序设计
3.1数据库及表的定义
3。
2创建索引(加快查询速度)
其他表类似。
3创建存储过程
3.1带参数的存储过程
描述:
根据产品编号返回对应的产品信息
usejiangxue_storage
IFEXISTS(SELECTnameFROMsysobjects
WHEREname='
jiangxue_someStorage’ANDtype=’P’)
DROPPROCEDUREjiangxue_someStorage
go
createprocedurejiangxue_someStorage
@idvarchar(10)
as
select*fromjiangxue_storage
wheresto_id=@id
2带output参数的存储过程
返回某产品近期入库的总数量
WHEREname=’jiangxue_countInStorage'
ANDtype='
P'
)
DROPPROCEDUREjiangxue_countInStorage
createprocedurejiangxue_countInStorage
@idvarchar(10),
@namevarchar(20)out,
@unitvarchar(5)out,
@totalintOUTPUT
select
@total=SUM(in_stonumber),
@name=jiangxue_storage.sto_name,
@unit=jiangxue_storage。
sto_unit
fromjiangxue_inStorage,jiangxue_storage
wherein_stoId=@idand
jiangxue_storage.sto_id=jiangxue_inStorage.in_stoId
groupby
jiangxue_inStorage。
in_stoId,jiangxue_storage.sto_name,
jiangxue_storage。
执行:
declare@namevarchar(20),
@unitvarchar(5),@totalint
execjiangxue_countInStorage1,@nameout,@unitout,@totaloutput
print@name+'
的近期入库总数量:
’+rtrim(@total)+@unit
3.3描述:
增加一条产品记录
createprocedure[dbo].[jiangxue_insertStorage]
@namevarchar(20),
@numberint,
@unitvarchar(5),
@wpricefloat,
@typeidvarchar(10),
@houseidvarchar(10),
@protimedate,
@lifevarchar(10),
@weightvarchar(10)
insertintojiangxue_storage
values(@id,@name,@number,@unit,@wprice,@typeid,@houseid,@protime,@life,@weight)
4描述:
更新商品信息
createprocedure[dbo]。
[jiangxue_updateStorage]
@namevarchar(20),
@numberint,
@unitvarchar(5),
@typeidvarchar(10),
@houseidvarchar(10)
updatejiangxue_storage
setsto_name=@name,sto_number=@number,sto_unit=@unit,
sto_wprice=@wprice,sto_typeId=@typeid,sto_houseId=@houseid
wheresto_id=@id
4触发器设计
4。
1insert触发器
描述:
当增加出库记录后,库存表jiangxue_storage中对应的产品库存数量sto_number便减去其出库数量out_stonumber
createtriggerupdateOutStorageonjiangxue_outStorage
afterinsert
updatejiangxue_storagesetsto_number=sto_number-inserted.out_stonumber
fromjiangxue_storage,inserted
where
sto_id=inserted。
out_stoId
当增加入库记录后,库存表jiangxue_storage中对应的产品库存数量sto_number便增加其入库数量in_stonumber
Createtrigger[dbo]。
[updateInStorage]on[dbo]。
[jiangxue_inStorage]
updatejiangxue_storagesetsto_number=sto_number+inserted.in_stonumber
jiangxue_storage.sto_id=inserted。
in_stoId
4.2update触发器
描述:
向库存表jiangxue_storage中插入一条数据后,显示全部产品的记录,便于确认信息
createtriggerinsertStorage
onjiangxue_storage
forupdate
asselect*frominserted
3.5游标应用
将出库表中产品出库数量更新到库存表中对应编号的产品数量.
结果:
将入库表中产品如库数量更新到库存表中对应编号的产品数量。
第四章用户交互界面
4.1用户登录界面
输入用户名及密码,验证输入是否正确,输入错误则弹出错误的对话框。
正确则跳到主界面.
2主界面
显示当前日期,及登录用户名。
4.3产品管理
查询、修改、增加产品信息
4产品类型管理
查询、修改、增加产品类型
4.5入库操作
在表格内输入入库信息,批量填写入库信息后,点击增加入库信息按钮进行批量入库.
4.6出库操作
在表格内输入出库信息,批量填写出库信息后,点击增加出库信息按钮进行批量出库。
4.7供应商管理
查询、增加、删除、修改供应商信息
8出货部门管理
查询所有部门信息或某部门信息、增加、删除及修改部门
9操作员查询
查询操作员信息,不能进行修改
4.10库房管理
查询全部仓库信息、通过某仓库号查询该仓库信息,删除及修改仓库信息。
第五章实验中遇到的问题及总结
数据库设计
(1)设计表时,没有从实际角度出发,刚开始入库表的属性中包含了产品的名称、及产品的其他属性,造成了严重的冗余,未考虑到一般仓库内录入的是库存内已有的产品。
如果出现新产品,也应该先从产品表中添加,再进行入库操作。
如果属性类型、允许null值及移动属性顺序时候,在数据表设计界面中直接修改会出现如下界面:
只能用sql语句进行修改。
最后通过查询资料得点击工具—〉选项,弹出如下图所示对话框,去掉勾选“阻止保存要求重新创建表的更改”.
1.创建存储过程
在入库表中创建带返回参数的存储过程时,出现如下图所示错误,本意选出对应编号的商品数据,输出商品名称及近期入库的总数量.
需要设置一个变量@name进行赋值即可.
加上rtrim将int转化成varchar型
2.触发器设计
设计了一个insert触发器,当入库操作的产品不在库存表内,则在库存表内增加该商品的信息。
验收的时候发现自己表设计上冗余过大。
同时在C#编程时也出现了错误,疑问:
不知道为什么会出错?
USEjiangxue_storage
insertStorage'
TR’)
DROPTRIGGERinsertStorage
GO
createTriggerinsertStorage
onjiangxue_inStorage
forinsert
if((selectCOUNT(*)frominsertedi,jiangxue_storageswherei。
in_stoId=s。
sto_id)=0)
begin
declare@idvarchar(10),@namevarchar(20),@numberint,@unitvarchar(5),@pricefloat,
@typeidvarchar(10),@houseidvarchar(10),@protimedate,@lifevarchar(10),@weightvarchar(10)
set@id=(selectin_stoIdfrominsertediwherei。
in_stoIdnotin(selectsto_idfromjiangxue_storage))
set@name=(selectin_stonamefrominsertedwherein_stoId=@id)
set@number=(selectin_stonumberfrominsertedwherein_stoId=@id)
set@unit=(selectin_stounitfrominsertedwherein_stoId=@id)
set@price=(selectin_stopricefrominsertedwherein_stoId=@id)
set@typeid=(selectin_typeIdfrominsertedwherein_stoId=@id)
set@houseid=(selectin_houseIdfrominsertedwherein_stoId=@id)
set@protime=(selectin_proTimefrominsertedwherein_stoId=@id)
set@life=(selectin_lifefrominsertedwherein_stoId=@id)
set@weight=(selectin_weightfrominsertedwherein_stoId=@id)
end
insertintojiangxue_storage
values(@id,@name,@number,@unit,
@price,@typeid,@houseid,@protime,@life,@weight)
insertintojiangxue_inStorage
values(2013,’2013-12-05'
8,’蜂蜜水'
10,'
瓶'
5
2,3,1,’b'
'
2013—11—05’,'
18个月’,’500g’,'
该食品未在库存内’)
5。
游标设计
因为是第一次接触嵌入式sql语句,对于游标的熟练度还是远远不够的。
不过游标中fetch的运用跟java中ResultSet语句类似,与原来知识相互联系后加深了对游标的认识。
在以后的学习中要懂得知识的相互融通,以不变应万变.
注:
例子中仓库管理系统的游标设计有问题,while循环内没有fetchnext跳到下一条记录的语句,会成了执行时的死循环,一直在执行第一个记录
6。
用户交互界面的设计
初学C#编程中的WPF应用程序编程,所以对详细知识没有掌握很透彻.实现了通过下拉框选取编号,来查询对应的产品、部门、供应商、产品类型的信息.但最后未能完全实现入库、出库操作中对于类型编号、产品编号、操作员编号下拉框操作,在DataGrid中增加下拉框有点难度,最终采取了输入文本框的操作,在以后编程中要与实际相结合,便于用户操作。