一.任务要求

  1. 设计内容描述
    某单位要开发一个小型仓储管理系统。系统需要记录物品的名称、数量单价、采购金额、供应商、生产日期和采购人等信息。对于工作人员需要记录每个人的姓名、电话、出生日期、职务、经理等。对于供应商需要记录供应商的名字和联系电话。物品入库需要填写入库单,入库单自动生成流水号作为唯一标识。出库需要填写出库单。仓库需要保证每种商品应该满足最低的存储数量,每种商品最低存储不同。另外,还需要完成商品的按月盘存和必要的统计功能。
  2. 系统基本功能要求
    a. 建立基本不
    b. 录入物品的最低存储数量(存储过程完成)。
    c. 填写入库单(存储过程完成)。
    d. 填写出库单。(存储过程完成,检查如果出库后商品低于最低存储量,打印报警信息。提示:这是一个带有事务操作的存储过程,不得使用触发器)。
    e. 录入员工信息。(存储过程完成)。
    f. 录入供应商信息。(存储过程完成)。
    g. 查询物品的最低存储数量。(函数完成)。
    h. 按日打印入库单(存储过程完成)。
    输入:日期
    输出:
    XXX公司物品入库单 2015-03-05
    物品编号 物品名 数量 金额 供应商 经手人

102832938 打印纸 10 119 得力 张红
121222222 文件夹 87 19 齐心 王博
。。。。。。。。。。。。。。。。。。。
i. 为了优化仓储,需要统计每种出库物品占所有物品的百分比(存储过程完成)。
输入:起始时间
输出:
出库物品统计
2014-12-23 至2015-06-30

   物品      出库数量       百分比

       物品A      150          15.2%物品B      208           28.7%……

j. 编写函数,查询指定物品的剩余数量
k. 录入盘存数据,当物品实际数量与盘存数量不一致时,用触发器给出报警。
l. 编写函数,返回某个月的盘粗情况
输入:年月(格式YYYY-MM)
输出:


序号 商品编号 商品名称 账面数量 实际数量 备注

1 102832938 打印纸 89 80 不一致
2 121222222 文件夹 50 50 一致
… …

  1. 设计T-SQL批处理驱动程序测试你的程序。
    逻辑结构设计
Commodity( commodityname,commoditynumber,savenumber,commoditynumberprice,lessnumber)// 主码 commoditynumber
Worker(workname,worknumber,workphone,workbrithday,workduty,managernumber)
//主码worknumber
Supplier(suppliername,suppliernumber,supplierphone)//主码suppliernumber
Godown(purchasemount,purchasenumber,data,commoditynumber,commodityname,workname,suppliername,workname,suppliername,suppliernumber)//主码number流水单号
外码 commoditynumber,worknumber
Outbound(data,commodityname,commoditynumber,number,workname,aanumber,worknumber)//主码aanumber  外码 commoditynumber,worknumber (number为出库数量,aanumber为流水单号)
True(commoditynumber,commodityname,papernumber,turenumber,data)//主码commoditynumber

四.问题及其解决SQL语句
A建立基本表

create table commodity(
commodityname varchar(20) ,--商品名称
commoditynumber varchar(20) primary key,--商品编号
savenumber int, /*存储数量*/
commoditynumberprice int,--商品单价
lessnumber int,--最低存储数量);
create table worker(    --工作人员
workname varchar(20) , --姓名
worknumber varchar(20) primary key,--编号
workphone varchar(20),  --电话
workbirthday varchar(20),  --出生日期
workduty varchar(20),   --职位
managernumber varchar(20)  --经理编号);
create table supplier(  --供应商
suppliername varchar(20) ,--姓名
suppliernumber varchar(20) primary key,--编号
supplierphone varchar(20),--联系电话);create table godown(--入库单purchaseamount int,--采购金额purchasenumber int,--采购数量data date,--入库日期commoditynumber varchar(20) ,--商品编号commodityname varchar(20),--商品名称workname varchar(20),--工作人员姓名suppliername varchar(20),--供应商姓名number varchar(20),--流水单号worknumber varchar(20),--工作人员编号suppliernumber varchar(20),--供应商编号primary key(number),foreign key(commoditynumber)references commodity(commoditynumber),foreign key(worknumber)references worker(worknumber),foreign key(suppliernumber)references supplier(suppliernumber),
);
create table outbound(--出库单
data date,--出库日期
commodityname varchar(20),--商品名称
commoditynumber varchar(20) ,--商品编号
number int ,--出库数量
workname varchar(20),--工作人员姓名
aanumber varchar(20),--流水单号
worknumber varchar(20),--工作人员编号
primary key(aanumber),
foreign key(commoditynumber)references commodity(commoditynumber),
foreign key(worknumber)references worker(worknumber),
);
create  table true( --盘存表
commoditynumber varchar(20) primary key,--商品编号
commodityname varchar(20),--商品名称
papernumber int,--账面数量
turenumber int,--实际数量
data date--盘存日期
);

B 录入物品的最低存储数量(存储过程完成)。

create Procedure commodity_lessnumber( @cname varchar(20),@cnumber varchar(20),
@snumber int,@cprice int,@lnumber int)--商品名称,编号,存储数量,单价,最低存储数量
as
begin
insert
into commodity
values(@cname,@cnumber,@snumber,@cprice,@lnumber)
end

C 填写入库单(存储过程完成)

alter Procedure godown_write(@purchaseamount int,@purchasenumber int,@data date,@commoditynumber varchar(20) ,@commodityname varchar(20),@workname varchar(20),@suppliername varchar(20),@worknumber varchar(20),@suppliernumber varchar(20))--采购金额,采购数量,入库日期,商品编号,商品名称供,工作人员姓名,供应商姓名,工作人员编号,供应商编号
as
begin
declare @number varchar(20)
set @number=RAND()*1000000
while exists(select number from godown where @number=number)
beginset @number=RAND()*1000000
end
insert
into godown
values(@purchaseamount ,@purchasenumber ,@data,@commoditynumber,@commodityname,
@workname,@suppliername,@number,@worknumber,@suppliernumber)
update commodity
set savenumber=savenumber+@purchasenumber
where commodity.commoditynumber=@commoditynumber
end

D填写出库单(存储过程完成)

alter Procedure outbound_write(@data date,--出库日期
@commodityname varchar(20),--商品名称
@commoditynumber varchar(20) ,--商品编号
@number int ,--出库数量
@workname varchar(20),--工作人员姓名
@worknumber varchar(20)--工作人员编号
)
as
begin
declare @aanumber varchar(20)--流水单号
set @aanumber=RAND()*1000000
while exists(select number from outbound where @aanumber=aanumber)
beginset @aanumber=RAND()*1000000
endbegin transactionif (select savenumber-lessnumber from commodity where commodity.commoditynumber=@commoditynumber)>@numberbegininsertinto outboundvalues(@data,@commodityname,@commoditynumber,@number,@workname,@aanumber,@worknumber)update commodityset savenumber=savenumber-@numberwhere commodity.commoditynumber=@commoditynumbercommitendelsebeginprint'出库数量不合理,当出库后仓库存储数量小于最低存储数量'rollbackend
end

E录入员工信息(存储过程完成)

create ProceDure worker_write(@workname varchar(20) , --姓名
@worknumber varchar(20),--编号
@workphone varchar(20),  --电话
@workbirthday varchar(20),  --出生日期
@workduty varchar(20),   --职位
@managernumber varchar(20) ) --经理编号
as
begin
insert
into worker
values(@workname,@worknumber,@workphone,@workbirthday,@workduty,@managernumber)
end

F录入供应商信息。(存储过程完成)。

create Procedure supplier_write(@suppliername varchar(20) ,--姓名
@suppliernumber varchar(20) ,--编号
@supplierphone varchar(20))--联系电话
as
begin
insert
into supplier
values(@suppliername,@suppliernumber,@supplierphone)
end

G查询物品的最低存储数量。(函数完成)。

create function check_lessnumber(@commoditynumber varchar(20))--商品编号
returns intasbeginreturn(select lessnumberfrom commoditywhere commodity.commoditynumber=@commoditynumber)end

H 按日打印入库单(存储过程完成)。
输入:日期
输出:
XXX公司物品入库单 2015-03-05
物品编号 物品名 数量 金额 供应商 经手人

102832938 打印纸 10 119 得力 张红
121222222 文件夹 87 19 齐心 王博
。。。。。。。。。。。。。。。。。。。

alter Procedure print_godown(@data date)
as
begindeclare @purchaseamount intdeclare @purchasenumber intdeclare @commoditynumber varchar(20) declare @commodityname varchar(20)declare @workname varchar(20)declare @suppliername varchar(20)declare godown1 cursor forselect commoditynumber,commodityname,purchasenumber,purchaseamount,suppliername,worknamefrom godownwhere godown.data=@dataopen godown1fetch godown1 into @commoditynumber,@commodityname,@purchasenumber,@purchaseamount,@suppliername,@worknameprint '输入:'+cast(@data as varchar)print '输出:'print '***公司物品入库单         '+cast(@data as varchar)print '物品编号   物品名    数量   金额    供应商   经手人 'print '---------------------------------------------------------- 'while @@FETCH_STATUS=0 beginprint @commoditynumber+space(3)+@commodityname+space(5)+cast(@purchasenumber as varchar)+space(5)+cast(@purchaseamount as varchar)+space(8)+@suppliername+space(8)+@worknamefetch godown1 into @commoditynumber,@commodityname,@purchasenumber,@purchaseamount,@suppliername,@worknameendclose godown1deallocate godown1
end

I为了优化仓储,需要统计每种出库物品占所有物品的百分比(存储过程完成)。
输入:起始时间
输出:
出库物品统计
2014-12-23 至2015-06-30

   物品      出库数量       百分比

       物品A      150          15.2%物品B      208           28.7%……
alter procedure number_precent(@starttime date,@endtime date)
as
begindeclare @total intdeclare @ccommodityname varchar(20)declare @totalnumber floatset @total=(select sum(number)  from outboundwhere  outbound.data >@starttime and outbound.data <@endtime)declare outbound1 cursor forselect commodityname,sum(number) totalnumberfrom outboundwhere outbound.data >@starttime and outbound.data <@endtimegroup by(commodityname)open outbound1fetch outbound1 into @ccommodityname,@totalnumberprint '输入: 起始时间和终止日期'print '输出:'print '                 出库物品统计             'print  space(3)+cast(@starttime as varchar)+' 至'+cast(@endtime as varchar)print  '------------------------------------------'print  '  物品     出库数量      百分比        'print  '------------------------------------------'while @@FETCH_STATUS=0 beginprint cast(@ccommodityname as varchar)+space(7)+cast(@totalnumber as varchar)+space(6)+cast(@totalnumber/@total*100 as varchar)+'%'fetch outbound1 into @ccommodityname,@totalnumberendclose outbound1deallocate outbound1
end

J编写函数,查询指定物品的剩余数量

create function refer_number(@commoditynumber varchar(20))--传递商品编号
returns int
as
beginreturn(select savenumber from commodity where commodity.commoditynumber=@commoditynumber)end

K录入盘存数据,当物品实际数量与盘存数量不一致时,用触发器给出报警。

create Procedure true_write(@commoditynumber varchar(20),--商品编号
@commodityname varchar(20),--商品名称
@papernumber int,--账面数量
@data date
)as
begin
declare @anumber int
set @anumber=(select savenumber from commodity where commodity.commoditynumber=@commoditynumber)
insert
into true
values(@commoditynumber,@commodityname,@papernumber,@anumber,@data)
endgo
create trigger true_insert on true
for insert
as
beginif((select inserted.papernumber FROM inserted)!=(select inserted.turenumber FROM inserted))begin print'所输入盘存物品实际数量与盘存数据不一样'endend

L编写函数,返回某个月的盘粗情况
输入:年月(格式YYYY-MM)
输出:


序号 商品编号 商品名称 账面数量 实际数量 备注

1 102832938 打印纸 89 80 不一致
2 121222222 文件夹 50 50 一致
… …

create function return_remark(@data date)-- 传递日期
returns @temptable table(
commoditynumber varchar(20) primary key,--商品编号
commodityname varchar(20),--商品名称
papernumber int,--账面数量
turenumber int--实际数量
)
asbegininsertinto @temptable(commoditynumber,commodityname,papernumber,turenumber )select commoditynumber,commodityname,papernumber,turenumberfrom truewhere substring(cast(@data as varchar),1,7)=substring(cast(true.data as varchar),1,7)returnendgo alter Procedure print_remark(@data date)as begindeclare @commoditynumber varchar(20)--商品编号declare @commodityname varchar(20)--商品名称declare @papernumber int--账面数量declare @turenumber int--实际数量declare @i int --序号set @i=1declare print1 cursor forselect *from dbo.return_remark(@data)print '输入:年月'+substring(cast(@data as varchar),1,7)+'(格式YYYY-MM)'print '输出:'print '----------------------------------------------------------'print '序号    商品编号 商品名称 账面数量  实际数量    备注'print '-------------------------------------------------------------'open print1fetch print1 into @commoditynumber,@commodityname,@papernumber,@turenumberWHILE @@FETCH_STATUS=0BEGINif(@papernumber=@turenumber)beginprint cast(@i as varchar)+space(8)+@commoditynumber+space(2)+@commodityname+space(4)+cast(@papernumber as varchar)+space(10)+cast(@turenumber as varchar)+space(6)+'一致'endelse print cast(@i as varchar)+space(8)+@commoditynumber+space(2)+@commodityname+space(4)+cast(@papernumber as varchar)+space(10)+cast(@turenumber as varchar)+space(6)+'不一致'fetch print1 into @commoditynumber,@commodityname,@papernumber,@turenumber set @i=@i+1ENDclose print1deallocate print1end

M. 设计T-SQL批处理驱动程序测试你的程序。

--填写最低数量exec commodity_lessnumber '打印纸','102832938',100,1,10--商品名称,编号,存储数量,单价,最低存储数量exec commodity_lessnumber '文件夹','121222222',50,3,5exec commodity_lessnumber '手机壳','747411111',20,300,10--录入工作人员信息exec worker_write '徐一','123456','13733','1998-01-01','CEO','123456'--姓名编号联系电话,出生日期职务经理编号exec worker_write '宋二','789012','89898','1998-02-02','外卖员','123456'exec worker_write '黄三','345678','90909','1998-03-03','会计','123456'--录入供应商信息exec supplier_write '李四','1711030301','1864236'--姓名 编号 联系电话exec supplier_write '张三','1711030302','1234567'exec supplier_write '王五','1711030303','9876543'--填写入库单--采购金额,采购数量,入库日期,商品编号,商品名称,工作人员姓名,供应商姓名,工作人员编号,供应商编号exec godown_write 1,200,'1999-02-13','102832938','打印纸','徐一','李四','123456','1711030301'exec godown_write 1,300,'1999-04-18','102832938','打印纸','徐一','张三','123456','1711030302'exec godown_write 1,500,'1999-06-23','102832938','打印纸','宋二','李四','789012','1711030301'exec godown_write 3,100,'1999-07-21','121222222','文件夹','黄三','王五','345678','1711030303'exec godown_write 300,20,'2000-11-27','747411111','手机壳','宋二','李四','789012','1711030301'--填写出库单--日期,名称,编号,出库数量,工作人员姓名,工作人员编号exec outbound_write '1999-03-18','打印纸','102832938',193,'黄三','345678'exec outbound_write '1999-07-28','打印纸','102832938',120,'黄三','345678'exec outbound_write '1999-08-11','打印纸','102832938',400,'黄三','345678'exec outbound_write '1999-03-18','文件夹','121222222',13,'黄三','345678'exec outbound_write '2002-03-18','手机壳','747411111',3,'黄三','345678'--填写盘存表exec true_write '102832938','打印纸','100','1999-02-13'--编号,名称,账面数量,日期exec true_write '121222222','文件夹','50','1999-02-13'exec true_write '747411111','手机壳','19','1999-02-13'exec print_remark'1999-02-15'--查询物品最低存储数量print '商品编号为的物品最低存储数量为'print dbo.check_lessnumber('747411111')--按照日期打印入库单exec print_godown '1999-04-18'--按照日期查找百分比exec number_precent '1999-02-12','2002-03-19'--查询指定物品的盘存数量print '商品编号为的物品存储存储数量为'print dbo.refer_number('747411111')--某个月的盘存情况exec print_remark '1999-02-13'

小型仓库管理系统MySQL相关推荐

  1. 最新springboot选题推荐-应急物资仓库管理系统(mysql)-JAVA.VUE【数据库设计、论文、毕设源码、开题报告】

    摘 要 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化.信息化建设迈进.以前相关行业对于常规应急物资信息的管理和控制,采用人工登记的方式保存相关数据,这种以人力为主的管理 ...

  2. SSM毕设项目仓库管理系统lyf55(java+VUE+Mybatis+Maven+Mysql)

    SSM毕设项目仓库管理系统lyf55(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(W ...

  3. python基于PHP+MySQL的连锁商店仓库管理系统

    我的得适应当前高速发展的社会环境,很多商店都是以连锁的方式在进行管理.连锁商店相对应的一个管理核心就是对仓库的管理,因为每一个分店可能都会需要进行货物的调拨和进销存,所以如何能够对这些连锁店的库存信息 ...

  4. 基于PHP+MySQL的仓库管理系统

    随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现管理企业势在必行.而仓库管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.对前者要 ...

  5. Eclipse+Java+Swing+Mysql实现仓库管理系统

    目录 一.系统介绍 1.软件环境 2.系统功能 3.数据库 4.工程截图 二.系统展示 1.用户-登录页 2.用户-登录成功 3.用户-主页面 4.用户-用户管理-个人信息 5.用户-用户管理-修改密 ...

  6. SSM毕设项目仓库管理系统n30qt(java+VUE+Mybatis+Maven+Mysql)

    SSM毕设项目仓库管理系统n30qt(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(W ...

  7. 基于javaweb的仓库管理系统(java+springboot+layui+html+thymeleaf+mysql+实训报告)

    基于javaweb的仓库管理系统(java+springboot+layui+html+thymeleaf+mysql+实训报告) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse ...

  8. c winform mysql_c#winform开发仓库管理系统,vs2010,mysql数据库

    [实例简介] 用vs2010开发的简单的winform仓库管理系统,数据库用的mysql,源码包含数据库一并传上去,绝对可以运行- [实例截图] [核心代码] 入库出库管理系统 ├── menages ...

  9. 【Java课程设计】商品仓库管理系统jsp+servlet+mysql仓库管理系统

    软件环境 idea,jdk8,mysql8,tomcat8 技术栈 后端:jsp+servlet+jdbc 前端:html+js+css+layui 拓展 本项目虽然是导入在webapp/WEB-IN ...

最新文章

  1. 61种常用JavaScript
  2. Java中的CopyOnWrite
  3. select函数及fd_set介绍
  4. 《01》ECMAScript 6 简介
  5. oracle 11g 监听bug,oracle 11g数据库使用XML Table的BUG解决
  6. [SoapUI]怎样保存response到本地文件夹
  7. JS 案例 个人所得税计算器
  8. 引用第三方SDK产生依赖冲突
  9. SLAM传感器篇:Velodyne激光雷达
  10. 虹科干货 | 零售业数智升级不掉队,get数据,get未来!
  11. Vue官网提供表单验证cnpm i vee-validate@2 --save
  12. 苹果cms的php.ini,苹果cms伪静态设置教程
  13. 这次,认真搞了个外包兼职搞钱群!
  14. 三本计算机的专业需要考研嘛,三本计算机考研难吗
  15. python论文结论_Python学习总结
  16. 获取服务器微信头像更改不同规格图片大小
  17. 【opencl】——AMD APP SDK下载地址
  18. Spring Security Oauth2 授权码模式下 自定义登录、授权页面
  19. 入离职管理系统——类的抽取和注册登录功能
  20. 基于NVIDIA TX2的usb basyer工业相机编码推流

热门文章

  1. 明天就会有阳光...
  2. 童瑶正式成为NEIWAI内外品牌大使
  3. 「干货」用 Vue + Echarts 打造你的专属可视化界面(上)
  4. Gardner定时同步的matlab实现
  5. 在网站发布到IIS后设置主页
  6. 福尔摩斯基本演绎法第一季/全集Elementary迅雷下载
  7. mac里python注释的快捷键_Mac 版的Python IDEL, 按什么快捷键可以快速显示上一条命令,下一条命令?...
  8. 阿里云中间件是什么-阿里云中间件介绍
  9. Android判断GPS是否开启和让用户打开GPS
  10. ayo开发笔记2016-5-3