drop database if exists Supermarket; create database Supermarket; use Supermarket; drop table if exists User; create table User( id int auto_increment primary key, name varchar(15) unique,/*仓库管理员或收银员名称,一般为工号*/ rname varchar(15), password varchar(20) not null, phone varchar(11), sSuper int not null,/*0为超级管理员,1为仓库管理员,2收银员*/ img varchar(50), delmark int DEFAULT 1 ); insert into User values(null,"z001","陈龙","0.00.0",'666666',"0","static\\userimg\\u1.png","1"); insert into User values("2","a001",'吴鸿发',"0.00.0",'666666',"1","static\\userimg\\u2.png","1"); insert into User values("3","a002",'刘锦生',"0.00.0",'666666',"1","static\\userimg\\u3.png","1"); insert into User values("4","b001",'陆伟逊',"0.00.0",'666666',"2","static\\userimg\\u4.png","1"); insert into User values("5","b002",'殷瑞',"0.00.0",'666666',"2","static\\userimg\\u5.png","1"); /*供应商信息*/ create table SupplierInf( id int auto_increment primary key, name varchar(30) unique, address varchar(50), contact varchar(11), email varchar(50), delmark int DEFAULT 1 ); insert into supplierInf values('1','安徽大兴批发部','安徽省芜湖市','113831280','1138312802@qq.com','1'); insert into supplierInf values('2','湖北良品铺子批发零售转存中心','湖北省武汉市','15354253','153542534@qq.com','1'); insert into supplierInf values('3','深圳百果园实业发展仓库','广东省深圳市','2858710006','2858710006@qq.com','1'); insert into supplierInf values('4','蒙牛乳业股份有限公司','内蒙古自治区呼和浩特市','1138312802','1138312802@qq.com','1'); insert into supplierInf values('5','内蒙古伊利实业集团股份有限公司','内蒙古自治区呼和浩特市','2858710006','2858710006@qq.com','1'); insert into supplierInf values('6','美的集团广东分区批发部','广东省顺德市','153542534','153542534@qq.com','1'); insert into supplierInf values('7','康师傅集团广东分区','广东省珠海市','1138312802','1138312802@qq.com','1'); insert into supplierInf values('8','宝洁公司','美国俄亥俄州辛辛那堤市','2858710006','2858710006@qq.com','1'); /*目录关系,id1为目录第一级,在系统中简化为3个类别食品,电器,生活用品*/ create table ProdCatalog( id varchar(20) primary key, name varchar(20) ); insert into prodCatalog values('01','食品'); insert into prodCatalog values('02','电器'); insert into prodCatalog values('03','乳制品'); insert into prodCatalog values('04','生活用品'); /*商品目录*/ drop table if exists production; create table Production( id varchar(20) primary key, name varchar(20) unique, inPrice float,/*进货单价*/ OutPrice float,/*购买单价*/ life int,/*月份为单位*/ sum int, supplyId int, id2 varchar(20), name2 varchar(20), price float,/*方便把记录插到InBuffer表中*/ delmark int DEFAULT 1, foreign key (id2) references prodCatalog(id) ); insert into production values('01001','猪肉脯','10','15','12','200','1','01','食品','0','1'); insert into production values('01002','芒果干','6','12','12','200','1','01','食品','0','1'); insert into production values('01003','碧根果','13','25','8','200','2','01','食品','0','1'); insert into production values('01004','葡萄','20','35','0.25','50','3','01','食品','0','1'); insert into production values('02001','蒙牛纯甄','40','65','18','300','4','03','乳制品','0','1'); insert into production values('02002','伊利安慕希','45','65','24','350','5','03','乳制品','0','1'); insert into production values('03001','美的变频空调','2400','3500',null,'50','6','02','电器','0','1'); insert into production values('03002','格力节能冰箱','3500','4300',null,'50','7','02','电器','0','1'); insert into production values('04001','海飞丝去屑洗发水','28','35','18','180','8','04','生活用品','0','1'); insert into production values('04002','汰渍洗衣液','24','32','18','180','8','04','生活用品','0','1'); /*超市进货订单信息*/ create table InOrder( iNumber varchar(30) primary key,/*用java根据时间年月日时分秒和柜台号和一个随机数确定*/ allInPrice float,/*这个订单的总价*/ inDate Timestamp, principal varchar(15), status int DEFAULT 2,/*1为已入库,2为待入库,3为取消订单*/ delmark int DEFAULT 1 ); insert into inOrder values('a0011201907272322391','6.5','2019-07-27 23:22:39','a001','1','1'); insert into inOrder values('a0014201907272327143','13100','2019-07-27 23:27:14','a001','1','1'); insert into inOrder values('a0021201907272332006','235','2019-07-27 23:32:00','a002','1','1'); /*进货订单信息*/ create table InRecord( iNumber varchar(30), id varchar(20), sum int, Price float,/*单个物品进货总价*/ foreign key (iNumber) references InOrder(iNumber) ); insert into inRecord values('a0011201907272322391','01001','5','2.5'); insert into inRecord values('a0011201907272322391','01002','5','4'); insert into inRecord values('a0014201907272327143','02001','5','5000'); insert into inRecord values('a0014201907272327143','02002','5','600'); insert into inRecord values('a0014201907272327143','02003','5','7500'); insert into inRecord values('a0021201907272332006','03001','5','115'); insert into inRecord values('a0021201907272332006','03002','5','120'); /*进货时缓冲区*/ drop table if exists InBuffer; create table InBuffer( id varchar(20) primary key, name varchar(20) unique, inPrice float,/*进货单价*/ OutPrice float,/*购买单价*/ life int,/*月份为单位*/ sum int, supplyId int, id2 varchar(20), name2 varchar(20), price float, delmark int DEFAULT 0, foreign key (supplyId) references supplierInf(id), foreign key (id2) references prodCatalog(id) ); /*顾客购买订单信息*/ create table OutOrder( oNumber varchar(30) primary key,/*用java根据时间年月日时分秒和柜台号和一个随机数确定*/ allOutPrice float,/*这个订单的总价*/ oDate Timestamp, principal varchar(15), delmark int DEFAULT 1 ); insert into outOrder values('b0010201907272344271','68','2019-07-27 23:44:27','b001','1'); /*出货记录,即买单记录,订单信息*/ drop table if exists OutRecord; create table OutRecord( oNumber varchar(30), id varchar(20), sum int, Price float,/*单个物品出售总价*/ foreign key (oNumber) references OutOrder(oNumber) ); insert into outRecord values('b0010201907272344271','01001','2','2'); insert into outRecord values('b0010201907272344271','03001','2','66'); /*收银出货时缓冲区*/ drop table if exists OutBuffer; create table OutBuffer( id varchar(20) primary key, name varchar(20) unique, inPrice float,/*进货单价*/ OutPrice float,/*购买单价*/ life int,/*月份为单位*/ sum int, supplyId int, id2 varchar(20), name2 varchar(20), price float, delmark int DEFAULT 0, foreign key (supplyId) references supplierInf(id), foreign key (id2) references prodCatalog(id) ); /*库存*/ /*create table storage( id varchar(20) primary key, sum int ); insert into storage values('01001','8'); insert into storage values('01002','10'); insert into storage values('02001','10'); insert into storage values('02002','10'); insert into storage values('02003','10'); insert into storage values('03001','8'); insert into storage values('03002','10');*/ /*库存日志,在进货和顾客购买时进行增加或删除操作*/ create table storageRecord( theNumber varchar(30), cDate Timestamp, id varchar(20), execute enum("+","-"), num int ); insert into storageRecord values('a0011201907272322391',"2019-07-27 23:22:39","01001","+","5"); insert into storageRecord values('a0011201907272322391',"2019-07-27 23:22:39","01002","+","5"); insert into storageRecord values('a0014201907272327143',"2019-07-27 23:27:14","02001","+","5"); insert into storageRecord values('a0014201907272327143',"2019-07-27 23:27:14","02002","+","5"); insert into storageRecord values('a0014201907272327143',"2019-07-27 23:27:14","02003","+","5"); insert into storageRecord values('a0021201907272332006',"2019-07-27 23:32:00","03001","+","5"); insert into storageRecord values('a0021201907272332006',"2019-07-27 23:32:00","03002","+","5"); insert into storageRecord values('b0010201907272344271',"2019-07-27 23:44:27","01001","-","2"); insert into storageRecord values('b0010201907272344271',"2019-07-27 23:44:27","03001","-","2"); /*-----------收银模块----------*/ /*插入缓冲区并修改sum*/ drop procedure if exists InsertOutBuffer; DELIMITER $$ create procedure InsertOutBuffer(In prodid varchar(10),In addsum int) begin insert into OutBuffer select * from Production where id = prodid; update OutBuffer set sum=addsum,price=addsum*(select outPrice from Production where id = prodid) where id = prodid; END $$ DELIMITER ; /*结账时插入库存日志,商品表中sum值,出货订单记录表,出货订单详细表并清空购物缓冲表记录共五个表*/ drop procedure if exists Account; DELIMITER $$ create procedure Account(In nNumber varchar(30),In tTime Timestamp,In prodid varchar(20),In addsum int ,In pPrice float) begin declare allsum int; select sum into allsum from production where id = prodid; update production set sum=allsum-addsum where id = prodid; insert into outRecord values(nNumber,prodid,addsum,pPrice); insert into storageRecord values(nNumber,tTime,prodid,'-',addsum); delete from OutBuffer; END $$ DELIMITER ; /*-----------进货模块----------*/ /*drop procedure if exists InsertInBuffer; DELIMITER $$ create procedure InsertInBuffer(In prodid varchar(10),In addsum int) begin insert into InBuffer select * from Production where id = prodid; update InBuffer set sum=addsum,price=addsum*(select inPrice from Production where id = prodid) where id = prodid; END $$ DELIMITER ;*/ /*将购物车vector数组插入订单表inOrder和订单详细表inRecord*/ /*drop procedure if exists Stock; DELIMITER $$+ create procedure Stock(In nNumber varchar(30),In tTime Timestamp,In prodid varchar(20),In addsum int ,In pPrice float) begin declare allsum int; select sum into allsum from production where id = prodid; insert into inRecord values(nNumber,prodid,addsum,pPrice); delete from InBuffer; END $$ DELIMITER ;*/