1、数据结构长度是否允许空备注产品编号sto_idChar10否主键产品名称sto_name20是产品库存sto_numberInt产品单位sto_unit5产品单价sto_priceFloat产品类型编号sto_typeId外键产品库房编号sto_houseId产品出产日期sto_proTimeDate产品保质日期sto_life产品净含量sto_weight2.2.2 产品类型jiangxue_type表结构类型编号type_id类型名称type_name3入库表jiangxue_inStorage表结构入库编号in_id入库日期in_timeDatetime入库产品编号in_stoId入库数
2、量in_stonumber产品类型编号in_typeId供应商编号in_supId操作员编号in_opeId入库库房编号in_houseId备注in_comment502.4 出库表jiangxue_outStorage表结构出库编号out_id出库日期out_time出库产品编号out_stoId出库数量out_stonumber产品类型编号out_typeId领取部门编号out_depId出库操作员out_opeId备注out_comment2.2.5 供应商jangxue_supplier表结构供应商编号sup_id供应商名称sup_name供应商电话sup_phone供应商地址sup_
3、address30供应商邮件sup_email供应商邮编sup_postcade6 出货部门jiangxue_department表结构部门编号dep_id部门名称dep_name2.7 操作员jiangxue_operator表结构操作员编号ope_id操作员姓名ope_name操作员性别ope_sex操作员电话ope_phone操作员职位ope_position操作员身份证号ope_idcard2.2。8 库房jiangxue_storeHouse表结构库房编号stohouse_id库房面积stohouse_area管理员stohouse_manager9 用户jiangxue_user表
4、结构用户名username密码password第三章 数据库程序设计3.1 数据库及表的定义3。2 创建索引(加快查询速度)其他表类似。3 创建存储过程3.1 带参数的存储过程 描述:根据产品编号返回对应的产品信息use jiangxue_storageIF EXISTS (SELECT name FROM sysobjects WHERE name = jiangxue_someStorage AND type = P) DROP PROCEDURE jiangxue_someStorage gocreate procedure jiangxue_someStorageid varchar(
5、10)asselect from jiangxue_storagewhere sto_id=id2 带output参数的存储过程返回某产品近期入库的总数量 WHERE name = jiangxue_countInStorage AND type = P) DROP PROCEDURE jiangxue_countInStoragecreate procedure jiangxue_countInStorageid varchar(10),name varchar(20) out,unit varchar(5)out,total int OUTPUTselect total=SUM(in_st
6、onumber),name=jiangxue_storage.sto_name,unit=jiangxue_storage。sto_unitfrom jiangxue_inStorage,jiangxue_storagewhere in_stoId=id andjiangxue_storage.sto_id=jiangxue_inStorage.in_stoIdgroup by jiangxue_inStorage。in_stoId,jiangxue_storage.sto_name,jiangxue_storage。执行:declare name varchar(20),unit varch
7、ar(5),total intexec jiangxue_countInStorage 1, name out ,unit out, total outputprint name +的近期入库总数量:+rtrim(total)+unit3.3 描述:增加一条产品记录create procedure dbo.jiangxue_insertStoragename varchar(20),number int,unit varchar(5),wprice float,typeid varchar(10),houseid varchar(10),protime date,life varchar(10
8、),weight varchar(10)insert into jiangxue_storagevalues(id,name,number,unit,wprice,typeid,houseid,protime,life,weight)4 描述:更新商品信息create procedure dbo。jiangxue_updateStoragename varchar(20),number int,unit varchar(5),typeid varchar(10),houseid varchar(10)update jiangxue_storageset sto_name=name,sto_nu
9、mber=number,sto_unit=unit,sto_wprice=wprice,sto_typeId=typeid,sto_houseId=houseidwhere sto_id=id4 触发器设计4。1 insert触发器描述:当增加出库记录后,库存表jiangxue_storage中对应的产品库存数量sto_number便减去其出库数量out_stonumbercreate trigger updateOutStorage on jiangxue_outStorageafter insertupdate jiangxue_storage set sto_number=sto_num
10、ber - inserted.out_stonumberfrom jiangxue_storage,insertedwheresto_id=inserted。out_stoId当增加入库记录后,库存表jiangxue_storage中对应的产品库存数量sto_number便增加其入库数量in_stonumberCreate trigger dbo。updateInStorage on dbo。jiangxue_inStorageupdate jiangxue_storage set sto_number=sto_number + inserted.in_stonumberjiangxue_st
11、orage.sto_id=inserted。in_stoId4.2 update触发器描述:向库存表jiangxue_storage中插入一条数据后,显示全部产品的记录,便于确认信息create trigger insertStorageon jiangxue_storagefor updateas select from inserted3.5 游标应用将出库表中产品出库数量更新到库存表中对应编号的产品数量.结果:将入库表中产品如库数量更新到库存表中对应编号的产品数量。第四章 用户交互界面4.1 用户登录界面输入用户名及密码,验证输入是否正确,输入错误则弹出错误的对话框。正确则跳到主界面.2
12、 主界面显示当前日期,及登录用户名。4.3 产品管理查询、修改、增加产品信息4 产品类型管理查询、修改、增加产品类型4.5 入库操作在表格内输入入库信息,批量填写入库信息后,点击增加入库信息按钮进行批量入库.4.6 出库操作在表格内输入出库信息,批量填写出库信息后,点击增加出库信息按钮进行批量出库。4.7 供应商管理查询、增加、删除、修改供应商信息8 出货部门管理查询所有部门信息或某部门信息、增加、删除及修改部门9 操作员查询查询操作员信息,不能进行修改4.10 库房管理查询全部仓库信息、通过某仓库号查询该仓库信息,删除及修改仓库信息。第五章 实验中遇到的问题及总结数据库设计(1)设计表时,没
13、有从实际角度出发,刚开始入库表的属性中包含了产品的名称、及产品的其他属性,造成了严重的冗余,未考虑到一般仓库内录入的是库存内已有的产品。如果出现新产品,也应该先从产品表中添加,再进行入库操作。如果属性类型、允许null值及移动属性顺序时候,在数据表设计界面中直接修改会出现如下界面:只能用sql语句进行修改。最后通过查询资料得点击工具选项,弹出如下图所示对话框,去掉勾选“阻止保存要求重新创建表的更改”.1.创建存储过程在入库表中创建带返回参数的存储过程时,出现如下图所示错误,本意选出对应编号的商品数据,输出商品名称及近期入库的总数量.需要设置一个变量name进行赋值即可.加上rtrim将int转
14、化成varchar型2.触发器设计设计了一个insert触发器,当入库操作的产品不在库存表内,则在库存表内增加该商品的信息。验收的时候发现自己表设计上冗余过大。同时在C#编程时也出现了错误,疑问:不知道为什么会出错?USE jiangxue_storageinsertStorageTR) DROP TRIGGER insertStorageGOcreate Trigger insertStorageon jiangxue_inStoragefor insertif (select COUNT(*) from inserted i,jiangxue_storage s where i。in_st
15、oId=s。sto_id)=0) begindeclare id varchar(10),name varchar(20),number int,unit varchar(5),price float,typeid varchar(10),houseid varchar(10),protime date,life varchar(10),weight varchar(10)set id=(select in_stoId from inserted i where i。in_stoId not in (select sto_id from jiangxue_storage) set name=(
16、select in_stoname from inserted where in_stoId=id)set number=(select in_stonumber from inserted where in_stoId=id)set unit=(select in_stounit from inserted where in_stoId=id)set price=(select in_stoprice from inserted where in_stoId=id)set typeid=(select in_typeId from inserted where in_stoId=id)set
17、 houseid=(select in_houseId from inserted where in_stoId=id)set protime=(select in_proTime from inserted where in_stoId=id)set life=(select in_life from inserted where in_stoId=id)set weight=(select in_weight from inserted where in_stoId=id)end insert into jiangxue_storage values(id,name,number,unit
18、, price,typeid,houseid,protime,life,weight)insert into jiangxue_inStoragevalues (2013,2013-12-05,8,蜂蜜水,10,瓶,5,2,3,1,b,20131105,18个月,500g,该食品未在库存内)5。游标设计因为是第一次接触嵌入式sql语句,对于游标的熟练度还是远远不够的。不过游标中fetch的运用跟java中ResultSet语句类似,与原来知识相互联系后加深了对游标的认识。在以后的学习中要懂得知识的相互融通,以不变应万变.注:例子中仓库管理系统的游标设计有问题,while循环内没有fetch next跳到下一条记录的语句,会成了执行时的死循环,一直在执行第一个记录6。用户交互界面的设计初学C编程中的WPF应用程序编程,所以对详细知识没有掌握很透彻.实现了通过下拉框选取编号,来查询对应的产品、部门、供应商、产品类型的信息.但最后未能完全实现入库、出库操作中对于类型编号、产品编号、操作员编号下拉框操作,在DataGrid中增加下拉框有点难度,最终采取了输入文本框的操作,在以后编程中要与实际相结合,便于用户操作。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1