商店商品管理系统
原始需求
背景:商店的货物杂乱,单用人工的方式管理过于麻烦,利用数据库
系统可大大减少工作量,便于统一化管理。
目标:制作商品管理系统,利用数据库原理,对商品进行统一化管理。 人员:1、数据收集人员:对商品的条形码进行录入。 2、管理员:对商品信息进行有序管理。
3、数据使用人员(前台):访问数据,得到商品的价格等信息
并收费。
功能:1、数据收集系统,对商品信息进行收集。 2、数据管理系统,对商品的价格、数量进行管理。 3、数据使用系统,查找商品的信息。
1
商店商品管理系统
需求分析
1.背景介绍
随着社会的不断发展,经济的不断前进,商品的多样性以今非昔比。商品的不断增加,带来了巨大的商品信息,各大商店在出售这些商品的时候,如果仍然像以前一样使用人工方法进行统计分析,效率低下且很费人力。因此,商店中便需求一套高效的分析统计系统来高效、准确地管理商品的信息及销售信息。
2.系统用户
2.1管理员:
管理人员可以对数据进行检查、修改、更新的操作。数据员把商品的本身信息通过条形码输入设备输入到数据库,管理员可以查找到这些数据,如果数据有错误或不合理的地方,可以进行修改,可以进行添加删除商品信息的操作。
2.2数据采集员:
数据采集员的操作就是录入商品条形码,并输入商品价格、数量、商品名。
2.3销售人员:
销售人员通过终端系统,对商品信息进行查找,得出商品的出售价格,进行商品的交易。每当卖出一件商品,对此件商品的数量做出记录,每天店面结束时便对数据库进行结算保存,以保证数据的准确性。
3.系统功能
3.1数据录入系统
通过条形码扫描仪将商品的条形码输入,并对应输入商品的名字、商品价格以及商品的数量,然后在后台将这些数据经过处理制表写入数据库。
2
3.2数据管理系统
管理员系统,此系统可以提供查询功能、修改功能、保存功能。管理员通过管理系统界面对商品的信息进行查找,可以浏览到数据库里的商品信息,同时可以通过相关操作修改商品的信息,操作包括:删除信息、替换信息、添加信息、添加商品、删除商品。最后将管理后的数据进行保存。
3.3数据查找系统
商品在前台结账时,收费员通过此系统利用条形码查找出商品的商品名、商品价格信息,以此卖出商品。在对商品的条形码扫描后在数据库中迅速查找出该商品对应的销售信息,在卖出一件后进行记录,在每天结束营业的时候结算,比按卖出的数量对数据库做相应的数量减除。
4.业务结构
4.1总系统结构
数据录入 商品信息 商品管理 商品出售 3
4.2数据录入系统结构
数据录入 商品名称 商品价格 商品数量 条形码
4.3数据管理系统结构
数据管理 添加商品 添加信息 替换信息 商品名称
删除商品 删除信息 商品价格 商品数量 条形码 4
4.4销售系统结构
商品出售 商品名称 商品价格 商品数量 条形码 5.数据库系统流程
系统准备 手动输入商品的信息 将数据传输到数据库服务器 3 数据库系统处理数据 4 1 2 销售终端查询数据库信息 5 数据制表存储 管理员对数据库进行管理 6
系统所操作的数据:
1过程:条形码、商品名、商品价格、商品数量、商品售价。 2过程:条形码、商品名、商品价格、商品数量、商品售价。 3过程:条形码、商品名、商品价格、商品数量、商品售价。
5
4过程:条形码、商品名、商品价格、商品数量、商品售价。 5过程:条形码、商品名、商品数量、商品售价。 6过程:商品数量、商品售价。
6.各个环节的数据流向
6.1数据录入系统:
商品条形码 价格 售价 数量 名称 数据采集员录入 从采集系统输入后的数据流 商品条形码、价格、售价、数量、名称
6.2数据库管理系统
从数据采集员得来的: 商品条形码 价格 售价 数量 名称 制表 数据库处理制表的数据: 商品条形码 价格 售价 数量 名称 存储 由数据库存储在电脑的数据: 商品条形码 价格 售价 数量 名称
6
6.3数据库管理员系统
数据库表 管理 商品售价 商品数量
6.4销售系统
商品名 数据库表 读取查询 商品售价 商品数量 条形码
7
7.数据库E-R图
售价 商品 商品价格 数量 管理 管理员账号 管理员 管理员名 8
数量 商品 商品名 商品价格 售价 条形码 数据收集 数据收集员 数据员账号 数据收集员名
条形码 商品 数量 售价 商品名 购买 购物者 购物者名
9
8.数据库建模
9.数据库的创建
脚本:
use master go
create database goodsmanage on primary ( ) log on ( )
name=goodsmanage_log,
filename='D:\\SQL2008\\Database\\goodsmanage_log.ldf', size=10, maxsize=2000, filegrowth=10%
name=goosmanage_data,
filename='D:\\SQL2008\\Database\\goodsmanage_data.mdf', size=10,
maxsize=unlimited, filegrowth=5
10
9.1数据库表的建立
脚本:
create table GoodsBrand(
)
cBrandID CBrandName
char(10) char(20)
PRIMARY KEY, NOT NULL,
create table Category( )
cCategoryID cCategory
char(10)
PRIMARY KEY,
char(20)
NOT NULL,
vDescription varchar(100) NUll,
create table Factory( )
cFactoryID
char(10)
PRIMARY KEY, NOT NULL, NOT NULL,
cFactoryName char(20) cFactoryPhone char(15)
vFactorySite varchar(100) NOT NULL,
create table Sale(
cSaleID char(10) PRIMARY KEY,
11
)
cGoodsID dSaleTime siSaleQoh mSaleMoney
char(10) datetime smallint money
references goods(cGoodsID), NOT NULL, NOT NULL, NOT NULL,
create table Manager( )
cManagerID
char(10)
PRIMARY KEY, NOT NULL, NOT NUll,
cManagerName char(20) cManagerPass char
create table Collector( cCollectorID )
cCollectorName cCollectorPass
char(10)
char
PRIMARY KEY,
NOT NULL, NOT NUll,
char(20)
create table Shopper( )
cShopperID
char(10) char(20) char(15)
PRIMARY KEY, NOT NULL, NOT NULL,
cShopperName cShopperPhone
12
create table goods( )
cGoodsID
char(10)
PRIMARY KEY,
NOT NULL,
vGoodsName varchar(20) mGoodsRate money siGoodsQoh cCategoryID mGoodsSale cFactoryID
vGoodsDescription varchar(250) NULL,
NOT NULL,
references GoodsBrand(cBrandID), NOT NULL,
references Category(cCategoryID),
cBrandID char(10)
smallint
siGoodsWeight smallint NOT NUll,
char(10)
money
NOt NULL,
references Factory(cFactoryID),
char(10)
9.2数据输入
脚本
insert Category(cCategoryID,cCategory,vDescription)
13
values('00001','riyong','日用品'),
('00002','shipin','食品'), ('00003','yinliao','饮料'), ('00004','jiayong','家用品'), ('00005','wenju','文具')
insert Collector(cCollectorID,cCollectorName,cCollectorPass) values('00011','zhangsan','001001'), ('00012','zlisi','001002'), ('00013','wangwu','001003'), ('00014','mazi','001004')
insert Manager(cManagerID,cManagerName,cManagerPass) values('00021','xiaoli','002001'), ('00022','xiaozhao','002002'), ('00023','xiaosun','002003'), ('00024','xiaoqian','002004')
insert Factory(cFactoryID,cFactoryName,vFactorySite,cFactoryPhone) values('00031','chengduyouixangonsi','chengdu','005'), ('00032','chengduyouixangonsi2','shanghai','006'), ('00033','chengduyouixangonsi3','beijin','007'), ('00034','chengduyouixangonsi4','dalian','008'), ('00035','chengduyouixangonsi5','shijiazhuang','009')
14
insert GoodsBrand(cBrandID,CBrandName) values('00041','dazhong'), ('00042','baoma'), ('00043','xuefulai'), ('00044','aodi'), ('00045','benchi')
insert Shopper(cShopperID,cShopperName,cShopperPhone) values('00051','laoli','32580'), ('00052','laozhao','32581'), ('00053','laosun','32582'), ('00054','laoliu','32583'), ('00055','laoxiao','32584'), ('00056','laowang','32585'), ('00057','laoguo','32586')
insert
goods(cGoodsID,vGoodsName,vGoodsDescription,mGoodsRate,cBrandID,siGoodsQoh,
siGoodsWeight,cCategoryID,mGoodsSale,cFactoryID)
values('00061','qianbi','铅笔','1','00041',10,12,'00005',2,'00031'), ('00062','maojin','毛巾','5','00042',12,12,'00001',2,'00033'), ('00063','xuebi','雪碧','2','00043',22,40,'00003',2,'00032'),
15
('000','binggan','饼干','1','00043',7,22,'00002',2,'00035'), ('00065','saoba','扫把','10','00044',5,78,'00004',2,'00034')
insert Sale(cSaleID,cGoodsID,dSaleTime,siSaleQoh,mSaleMoney) values('00071','00061','2011-1-1',2,'2'), ('00072','00062','2011-4-1',2,'7'), ('00073','00063','2011-1-6',5,'7'), ('00074','000','2011-5-3',3,'3'), ('00075','00065','2011-2-7',1,'15')
10数据的查询
多条件查询:
1.显示数量大于10,重量大于3的货物信息
use goodsmanage select
cGoodsID,vGoodsName,vGoodsDescription,mGoodsRate,siGoodsQoh,siGoodsWeight,mGoodsSale from goods
where siGoodsQoh>10 and siGoodsWeight>3
2.显示sale中数量大于2,卖价小于20的卖货信息
use goodsmanage
select cSaleID,cGoodsID,siSaleQoh,mSaleMoney from Sale where siSaleQoh>2 and mSaleMoney<20
16
分组统计查询:
1.显示货物进价的最大值、数量的最小值和重量的平均值
use goodsmanage
select MAX(mGoodsRate),MIN(siGoodsQoh),AVG(siGoodsWeight) from goods
2.显示卖货的总价及平均值
use goodsmanage
select SUM(mSaleMoney),AVG(mSaleMoney) from Sale
排序:
1.按照数量从大到小的顺序查询goods表内的数据
use goodsmanage select
cGoodsID,vGoodsName,vGoodsDescription,mGoodsRate,siGoodsQoh,siGoodsWeight,mGoodsSale from goods order by siGoodsQoh desc
2.按照卖价的从高到低显示出卖货信息
use goodsmanage
select cSaleID,cGoodsID,dSaleTime,siSaleQoh,mSaleMoney from Sale order by mSaleMoney desc
嵌套查询:
在goods表中查找重量最重的货物名称及描述
17
use goodsmanage
select vGoodsName,vGoodsDescription from goods
where siGoodsWeight=(select MAX(siGoodsWeight)from goods)
模糊查询:
查找goods表中含有字母a的商品信息
use goodsmanage select
cGoodsID,vGoodsName,vGoodsDescription,mGoodsRate,siGoodsQoh,siGoodsWeight,mGoodsSale from goods where vGoodsName like '%a%'
18