1、 商店进销存管理系统 数据库设计说明书 拟制人 吴静 杜茂坤 审核人 批准人_ 【2013 年 1 月 18 日星期五】 数据库设计说明书 1.引言 1.1 编写目的 随着计算机技术的高速发展,人们对计算机的依赖性越来越强,特别是用 计算机开发的数据库以及数据管理系统在生活应用中表现得更为突出。随着超 市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增 长。超市时时刻刻都需要对商品各种信息进行统计分析。 作为国内市场的一 些中小型商店,它们在信息化过程中的步伐要落后于大型超市,而对于这些企 业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要 有高效的处理方式
2、和管理方法。因此,针对中小型商店开发一个商店进销存管 理系统是非常必要的。 通过使用商店进销存管理系统,使商店的管理工作系统化、规范化、自动 化、简易化、智能化,从而达到提高超市进销存管理效率的目的。商店进销存 管理系统其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两 个方面。对于前者要求建立数据一致性和完整性强,数据安全性好的数据库。 而对于后者则要求应用程序功能完备,易使用等特点。系统实现了商品信息管 理,商品进货操作,商品出货操作,库存信息查询等功能。本文详细地介绍了 软件的开发环境、数据库的设计、各个模块的设计和实现及具体界面的设计和 功能。 1.2 背景 a. 待开发软件
3、系统的名称: 商店进销存管理系统 b. 本项目的任务提出者: 石河子大学 c. 本项目开发者: 吴静,杜茂坤 d. 本项目用户: 商店员工 1.3 参考资料 1 Mark Priestley.面向对象设计 uml 实践 M.龚晓庆,卞雷等译.北京:清 华大学出版社,2005. 2 郑人杰,马素霞,殷人昆.软件工程概论 M.北京:机械工业出版社, 2011. 3 王珊,萨师煊.数据库系统概论概论 M.北京:高等教育出版社,2005. 4 卢瀚,王春斌.java web 开发实战 1200 例M.北京:清华大学出版社, 2011. 2.结构设计 2.1 界面设计 整个系统从符合操作简便、界面友好、
4、灵活、实用、安全的要求出发,完 成进货、销售、库存管理的全过程。 系统的登录界面如图 2.1。 图 2.1 系统登陆界面 系统首页如图 2.2 所示。 图 2.2 系统首页 商品添加页面如图 2.3 所示。 图 2.3 商品添加页面 商品查询界面如图 2.4 所示。 图 2.4 商品查询界面 密码修改界面如图 2.5 所示。 图 2.5 密码修改界面 2.2 逻辑结构设计 (1)局部 E-R 图 商品及商品属性之间存在属于的关系,如图 2.6 所示。 图 2.6 商品、供应商及之间存在着供应入库的关系,E-R 图如图 2.7 所示。 图 2.7 商品和仓库之间存在图 2.8 所示关系。 图 2
5、.8 商品和顾客之间存在销售的关系,如图 2.9 所示。 图 2.9 (2)全局 E-R 图 图 2.10 2.3 关系模型设计 商品类型(类型号,类型名,说明) 商品(商品号,商品名,类型号,单价,单位,规格,说明) 供应商(供应商号,供应商全称,地址,联系人,电话,电子邮箱,开户 银行,开户账号) 顾客(顾客号,顾客全称,地址,联系人,电话,电子邮箱,开户银行, 开户账号) 业务员(业务员号,工资,登陆名,密码) 仓库(仓库号,面积,单位) 入库单(供应单号,供应商号,业务员号,应付,实付,未付,是否付清, 日期) 入库详单(商品号,仓库号,供应单号,数量,金额) 销售单(流水号,业务员,
6、应收,实收,未收,是否结清,销售日期) 销售详单(商品号,流水号,数量,金额) 转仓详单(转仓单号,商品号,转出仓库,转入仓库) 库存(仓库号,商品号,库存量) 2.4 关系图 (1) 入库管理关系图 图 2.11 (2)销售管理关系图 . 图 2.12 (3)转仓关系图 图 2.13 2.5 物理结构设计 表 2-1 splb(商品类别) 字段名 数据类型 长度 说明 意义 ID varchar 20 Primary key 类型号 lxname varchar 20 Not null 类型名 memo varchar 100 说明 表 2-2 tb_brand(商品) 字段名 数据类型 长
7、度 说明 意义 ID varchar 20 Primary key 商品号 spname varchar 20 Not nul 商品名 splb varchar 10 Foreign key 类型号 dj money not null 单价 dw Varchar 10 not null 单位 gg Varchar 50 规格 memo varchar 100 说明 表 2-3 tb_ck(仓库) 字段名 数据类型 长度 说明 意义 ID Int Primary key 仓库号 ckmj Float 面积 mjdw Varchar 6 单位 memo varchar 100 说明 表 2-4 t
8、b_supplier(供应商) 字段名 数据类型 长度 说明 意义 ID Int Primary key 供应商编号 gysname varchar 50 Not null 供应商全称 address varchar 100 Not null 地址 Lxr varchar 50 联系人 lxrtell varchar 50 Not null 联系电话 khyh varchar 50 开户银行 gysemail varchar 50 电子信箱 表 2-5 tb_customer(顾客) 字段名 数据类型 长度 说明 意义 ID Int Primary key 客户编号 khname varcha
9、r 50 Not null 客户全称 address varchar 100 Not null 地址 Lxr varchar 50 联系人 lxrtell varchar 50 Not null 联系电话 khyh varchar 50 开户银行 gysemail varchar 50 电子信箱 表 2-6 tb_user(业务员) 字段名 数据类型 长度 说明 意义 ID Int Primary key 业务员编号 username Varchar 40 用户名 Password varchar 40 密码 表 2-7 tb_rkd(入库单) 字段名 数据类型 长度 说明 意义 ID var
10、cahr 20 Primary key 供应单号 GysID Int Foreign key 供应商号 czy varcahr 10 操作员 yf Money 应付 sf Money 实付 Wf Money 未付 whether Varchar 2 是否付清 rkdate datetime 验收日期 表 2-8 tb_ruku(供应详单) 字段名 数据类型 长度 说明 意义 spID Varchar 20 Foreign key 商品号 ckID Varchar 20 Foreign key 供应单号 sl Int 数量 Je Money 金额 Rkid Varchar 20 入库单号 表 2
11、-9 tb-selld(销售单) 字段名 数据类型 长度 说明 意义 ID Varchar 20 Primary key 流水号 kyID Int Foreign key 客户号 ys money 应收 ss money 实收 Ws Money 未收 jq Varchar 2 是否结清 xsdate date 销售日期 表 2-10 tb_sell(销售详单) 字段名 数据类型 长度 说明 意义 spID Varchar 10 Foreign key 商品号 Selld Varchar 20 Foreign key 流水号 sl int 数量 je Money 金额 表 2-11 tb_zc(
12、转仓单) 字段名 数据类型 长度 说明 意义 ID varchar 20 主键 spID Varchar 20 Foreign key 商品号 Zcck Int Foreign key 转出库编号 Zrck Int Foreign key 转入库编号 表 2-12 tb_kc(库存) 字段名 数据类型 长度 说明 意义 ckID Varchar 20 Foreign key 仓库号 spID Varchar 20 Foreign key 商品号 kcSl int 库存量 kcje Money 金额 3 存储过程脚本 (1)创建存储过程统计指定时间段内各种商品的进货数量 create proc
13、pro_rksl starttime datetime,endtime datetime,spid varchar(20),totalsl int output,totalje money output as select totalsl=sum(sl),totalje=sum(je) from tb_ruku,tb_rkd where tb_rkd.ID=tb_ruku.rkd and rkdate between starttime and endtime group by spid having spid=spid (2)创建存储过程统计指定时间段内各种商品的销售数量 create pr
14、oc pro_xssl starttime datetime,endtime datetime,spid varchar(20),totalsl int output ,totalje money output as select totalsl=sum(sl),totalje=sum(je) from tb_sell,tb_selld where tb_selld.ID=tb_sell.selld and xsdate between starttime and endtime group by spid having spid=spid 4 触发器脚本 (1)当商品入库时自动增加该商品的库
15、存量 create trigger tri_sprk on tb_ruku for insert as declare oldsl int,oldje money,spid varchar(20),ckid int,ckid1 int,rksl int,rkje money select ckid1=0 select spid=spid,ckid=ckid,rksl=sl,rkje=je from inserted select ckid1=ckid from tb_kucun where spid=spid if rksl0 begin if ckid=ckid1 begin select
16、oldsl=kcsl,oldje=kcje from tb_kucun where spid=spid update tb_kucun set kcsl=oldsl+rksl,kcje=oldje+rkje where spid=spid return end if ckid1=0 begin insert into tb_kucun values(spid,ckid,rksl,rkje) return end end rollback transaction (2)当商品销售时自动修改各仓库的库存量 create trigger tri_spxs on tb_sell for insert
17、as declare oldsl int,spid varchar(11),xssl int,oldje money,xsje money select spid=spid,xssl=sl,xsje=je from inserted select oldsl=kcsl,oldje=kcje from tb_kucun where spid=spid if xssl0 and oldslxssl begin update tb_kucun set kcsl=oldsl-xssl,kcje=oldje-xsje where spid=spid return end rollback transac
18、tion (3)当商品转仓时自动修改各仓库的库存量 create trigger tri_spzc on tb_zc for insert as declare kcsl int,kcje money,zcck int,zrck int,spid varchar(20) select spid=spid,zcck=zcck,zrck=zrck from inserted select kcsl=kcsl,kcje=kcje from tb_kucun where spid=spid and ckid=zcck if kcsl0 begin delete from tb_kucun where
19、spid=spid and ckid=zcck insert into tb_kucun values(spid,zrck,kcsl,kcje) return end rollback transaction 5 数据库恢复与备份 (1)数据库的完全备份 backup database db_shopping to disk=E:备份数据库fullback_shop with init (2)数据库的恢复 restore database db_shopping from disk=E:备份数据库fullback_shop with replace (3)数据库差异备份 backup database db_shopping to disk=E:备份数据库defback_shop with differential (4)数据库的恢复 restore database db_shopping from disk=E:备份数据库defback_shop with replace