华北科技学院课程设计说明书班级: 信管B072 姓名:_娄小云______设计题目:____小型超市商品管理系统_________设计时间: 2010年6月28日至2010年7月2日指导教师:____郭慧_________________________评语:_____________________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:____评阅教师:_____一.系统概述所做的是一个小型超市的商品管理系统,主要负责小型超市进货的记录,进货到库存的周转,库存情况,及销售中的商品的管理。
通过该系统,可以较好地协调库存和在超市货架上销售的商品的数量,使得商品的供求达到平衡。
系统有进货管理,库存管理和销售管理三大部分组成,完成从商品进货,入库到销售再进货入库的流程。
系统中在SQL SERVER 中存有7张表,即goodsinform表(商品基本信息表,记录了各种商品的目录),gonghuoshang表(供货商表,记录了为超市提供商品的供货商的基本信息),jinhuo表(进货信息表,记录了进货的信息),kucun表(入库信息表,记录了入库的基本信息),kucunzhuangtai表(库存状态表,记录了库存的基本状态信息),xiaoshou表(在架销售表,记录了销售中的商品的基本信息),另外还有一张yonghu表(用户表,记录了用户的登录名和密码)。
二.总体设计(1)功能模块图1 系统功能结构图如图1所示,展示了系统的主要功能。
系统分为登录模块,进货管理,库存管理,销售管理四个大的模块。
其中进货管理中又可以对供货商进行添加和删除管理,进货管理,库存管理和销售管理又分别分为添加,修改,删除和查看四个小的模块。
这些模块一起,可以对商品的进货,库存和销售进行较全面的管理。
(2)ER图系统中涉及到的主要实体:用户,商品,供货商图2图3如图2所示,商品和供货商是多对多的关系,一个供货商可以提供多种商品,同一种商品也可由多个供货商提供。
(3)数据库中的表该数据库中共建了7张表。
如下:*用户信息表yonghu (用户编号,用户名,密码) 用于存储授权可登录系统的用户信息。
*商品基本信息表goodsinform (商品编号,商品名称,商品类型,商品进价,销售价格)该表用于存储商品的基本信息。
*供货商表Gonghuoshang(供货商编号,供货商名,商品编号,联系方式)记录了为超市提供商品的供货商的基本信息。
*进货信息表Jinhuo(进货id,商品编号,商品进价,进货数量,供货商编号,进货日期,入库状态)记录了进货的相关信息。
*入库信息表kucun表(入库id,商品编号,库存数量,入库日期)记录了入库的基本信息,存储商品由进货到库存中的周转状态数据。
*库存状态表Kucunzhuangtai(商品编号,库存数量)记录了商品的库存信息。
*在架销售表Xiaoshou(销售id,商品编号,数量)记录了商品的销售状态信息。
三.详细设计和实现(1)用户登录创建用户信息表,存储用户的登录名和密码。
创建表如下:create table yonghu/*用户信息表*/.进入系统后点击“登录”,进入登录界面,填写用户名和密码,点击“登录”按钮后,检验该用户名在数据库yonghu表中是否存在,存在,则赋予该用户操作系统的权限,否则提示错误。
匹配的代码如下:sql1 = "select * from yonghu where 用户名='" & Trim(Text1.Text) & "'" & "and 密码='" & Trim(Text2.Text) & "'"Set mrc = cnn.Execute(sql1)If mrc.EOF = False Thenmrc.Closeflag = 1Unload MeElseMsgBox "密码不正确,请重新输入!", , "Form1"Text1.Text = ""Text2.Text = ""Text1.SetFocusText1.SelStart = 0End If当进入系统时,只有输入的用户名和登录密码都正确时,才允许进入系统进行查看和操作。
(2)进货管理进货管理下有供货商管理和进货商品的管理。
可以对供货商的信息进行添加和删除操作,也可以对进货商品进行相应的添加,修改,删除和查看操作。
在进货表上建立了一更新的存储过程,即update_jinhuo,用于更新进货表的信息。
代码如下:create procedure jinhuo_update @a char(4),@b char(4),@c float ,@d int,@e char(4),@f datetimeasupdate jinhuoset 商品编号=@b,商品进价=@c,进货数量=@d,供货商编号=@e,进货日期=@fwhere 进货id=@a另外,在jinhuo表上建立了一个名为jinhuo的视图,显示进货的详细信息,代码如下:create view jinhuo_viewasselect jinhuo.进货id,jinhuo.商品编号,goodsinform.商品名称,jinhuo.供货商编号,jinhuo.进货数量,jinhuo.商品进价,jinhuo.进货日期from jinhuo,goodsinformwhere jinhuo.商品编号=goodsinform.商品编号同时,为了显示进货状态,在jinhuo表上添加了一新的属性,“入库状态”,默认为“未入库”。
代码如下:alter table jinhuoadd 入库状态char(6) not null default '未入库'当商品入库后,状态改为“已入库”。
(3)库存管理在该销售商品管理系统中,已进货的商品需要及时入库,这样需要建立cucun表,来存储入库的信息,将进货商品入库。
库存表如下:kucun表(入库id,商品编号,库存数量,入库日期)当添加入库信息成功后,kucunzhuangtai表中会增添入库信息。
添加,删除,修改入库商品的代码如下:Private Sub Command1_Click()sql2 = "select * from kucun where 入库id='" & Trim(Text1(0).Text) & "'"Set mrc = cnn.Execute(sql2)If mrc.EOF = False ThenMsgBox "此入库id编号已存在!", vbOKOnly + vbExclamation, "警告"Text1(0).Text = ""Text1(1).Text = ""Text1(2).Text = ""Text1(3).Text = ""Text1(0).SetFocusmrc.CloseElsesql1 = "insert into kucun values('" & Trim(Text1(0).Text) & "','" & Trim(Text1(1).Text) & "','" & Trim(Text1(2).Text) & "','" & Trim(Text1(3).Text)& "')"cnn.Execute (sql1)sql2 = "insert into kucunzhuangtai values('" & Trim(Text1(1).Text) & "','" & Trim(Text1(2).Text) & "')"cnn.Execute (sql2)MsgBox "数据已保存!", vbOKOnly + vbExclamation, "提示"sql1 = "select * from jinhuo where jinhuo.进货id='" &Trim(Combo1.Text) & "'"Set mrc = cnn.Execute(sql1)If Not mrc.EOF Thencnn.Execute "exec jinhuo1_update'" & 已入库& "'"cnn.CloseEnd Ifmrc.CloseText1(1).Text = ""Text1(2).Text = ""Text1(3).Text = ""End IfEnd Sub/*修改和保存入库商品*/If kucunflag = 1 Thencnn.Execute "exec kucun_update '" & Trim(Combo1.Text) & "','" & Trim(Text1(0).Text) & "','" & Trim(Text1(1).Text) & "','" & Trim(Text1(2).Text) & "'"cnn.CloseMsgBox "数据已更新!", vbOKOnly + vbExclamation, "提示"Else: kucunflag = 2sql1 = "delete from kucun where 入库id='" &Trim(Combo1.Text) & "'"Set mrc = cnn.Execute(sql1)MsgBox "数据已删除!", vbOKOnly + vbExclamation, "提示"For iCount = 0 T o Combo1.ListCount - 1If Combo1.List(iCount) = Combo1.Text And Combo1.Text <> "" ThenCombo1.RemoveItem iCountEnd IfNext iCountsql1 = "select * from kucun"Set mrc = cnn.Execute(sql1)Do While Not mrc.EOFText1(0).Text = ""Text1(1).Text = ""Text1(2).Text = ""mrc.MoveNextLoopmrc.CloseEnd If在kucun表上建立有一更新过程,代码如下:create procedure kucun_update @a char(4),@b char(4),@c int,@d datetimeasupdate kucunset 商品编号=@b,库存数量=@c,入库日期=@dwhere 入库id=@a在kucun表上建立了一触发器,当添加入库商品时,kucunzhuangtai表中的信息更新,代码如下:if exists(select name from sysobjectswhere name='ruku_tri'and type='TR')drop trigger ruku_trigocreate trigger ruku_tri on kucunfor insert ,updateasbeginupdate kucunzhuangtaiset 库存数量=库存数量+(select inserted.库存数量from inserted)where kucunzhuangtai.商品编号in(select inserted.商品编号from inserted)end同时,jinhuo表中的商品信息“入库状态”改写为“已入库”。