日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

小型仓库管理系统MySQL

發(fā)布時間:2023/12/15 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小型仓库管理系统MySQL 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.任務要求

  • 設計內(nèi)容描述
    某單位要開發(fā)一個小型倉儲管理系統(tǒng)。系統(tǒng)需要記錄物品的名稱、數(shù)量單價、采購金額、供應商、生產(chǎn)日期和采購人等信息。對于工作人員需要記錄每個人的姓名、電話、出生日期、職務、經(jīng)理等。對于供應商需要記錄供應商的名字和聯(lián)系電話。物品入庫需要填寫入庫單,入庫單自動生成流水號作為唯一標識。出庫需要填寫出庫單。倉庫需要保證每種商品應該滿足最低的存儲數(shù)量,每種商品最低存儲不同。另外,還需要完成商品的按月盤存和必要的統(tǒng)計功能。
  • 系統(tǒng)基本功能要求
    a. 建立基本不
    b. 錄入物品的最低存儲數(shù)量(存儲過程完成)。
    c. 填寫入庫單(存儲過程完成)。
    d. 填寫出庫單。(存儲過程完成,檢查如果出庫后商品低于最低存儲量,打印報警信息。提示:這是一個帶有事務操作的存儲過程,不得使用觸發(fā)器)。
    e. 錄入員工信息。(存儲過程完成)。
    f. 錄入供應商信息。(存儲過程完成)。
    g. 查詢物品的最低存儲數(shù)量。(函數(shù)完成)。
    h. 按日打印入庫單(存儲過程完成)。
    輸入:日期
    輸出:
    XXX公司物品入庫單 2015-03-05
    物品編號 物品名 數(shù)量 金額 供應商 經(jīng)手人

  • 102832938 打印紙 10 119 得力 張紅
    121222222 文件夾 87 19 齊心 王博
    。。。。。。。。。。。。。。。。。。。
    i. 為了優(yōu)化倉儲,需要統(tǒng)計每種出庫物品占所有物品的百分比(存儲過程完成)。
    輸入:起始時間
    輸出:
    出庫物品統(tǒng)計
    2014-12-23 至2015-06-30

    物品 出庫數(shù)量 百分比
    物品A 150 15.2%物品B 208 28.7%……

    j. 編寫函數(shù),查詢指定物品的剩余數(shù)量
    k. 錄入盤存數(shù)據(jù),當物品實際數(shù)量與盤存數(shù)量不一致時,用觸發(fā)器給出報警。
    l. 編寫函數(shù),返回某個月的盤粗情況
    輸入:年月(格式Y(jié)YYY-MM)
    輸出:


    序號 商品編號 商品名稱 賬面數(shù)量 實際數(shù)量 備注

    1 102832938 打印紙 89 80 不一致
    2 121222222 文件夾 50 50 一致
    … …

  • 設計T-SQL批處理驅(qū)動程序測試你的程序。
    邏輯結(jié)構(gòu)設計
  • 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為出庫數(shù)量,aanumber為流水單號) True(commoditynumber,commodityname,papernumber,turenumber,data)//主碼commoditynumber

    四.問題及其解決SQL語句
    A建立基本表

    create table commodity( commodityname varchar(20) ,--商品名稱 commoditynumber varchar(20) primary key,--商品編號 savenumber int, /*存儲數(shù)量*/ commoditynumberprice int,--商品單價 lessnumber int,--最低存儲數(shù)量); create table worker( --工作人員 workname varchar(20) , --姓名 worknumber varchar(20) primary key,--編號 workphone varchar(20), --電話 workbirthday varchar(20), --出生日期 workduty varchar(20), --職位 managernumber varchar(20) --經(jīng)理編號); create table supplier( --供應商 suppliername varchar(20) ,--姓名 suppliernumber varchar(20) primary key,--編號 supplierphone varchar(20),--聯(lián)系電話);create table godown(--入庫單purchaseamount int,--采購金額purchasenumber int,--采購數(shù)量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 ,--出庫數(shù)量 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,--賬面數(shù)量 turenumber int,--實際數(shù)量 data date--盤存日期 );

    B 錄入物品的最低存儲數(shù)量(存儲過程完成)。

    create Procedure commodity_lessnumber( @cname varchar(20),@cnumber varchar(20), @snumber int,@cprice int,@lnumber int)--商品名稱,編號,存儲數(shù)量,單價,最低存儲數(shù)量 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))--采購金額,采購數(shù)量,入庫日期,商品編號,商品名稱供,工作人員姓名,供應商姓名,工作人員編號,供應商編號 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 ,--出庫數(shù)量 @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'出庫數(shù)量不合理,當出庫后倉庫存儲數(shù)量小于最低存儲數(shù)量'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) ) --經(jīng)理編號 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))--聯(lián)系電話 as begin insert into supplier values(@suppliername,@suppliernumber,@supplierphone) end

    G查詢物品的最低存儲數(shù)量。(函數(shù)完成)。

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

    H 按日打印入庫單(存儲過程完成)。
    輸入:日期
    輸出:
    XXX公司物品入庫單 2015-03-05
    物品編號 物品名 數(shù)量 金額 供應商 經(jīng)手人

    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 '物品編號 物品名 數(shù)量 金額 供應商 經(jīng)手人 '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為了優(yōu)化倉儲,需要統(tǒng)計每種出庫物品占所有物品的百分比(存儲過程完成)。
    輸入:起始時間
    輸出:
    出庫物品統(tǒng)計
    2014-12-23 至2015-06-30

    物品 出庫數(shù)量 百分比
    物品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 ' 出庫物品統(tǒng)計 'print space(3)+cast(@starttime as varchar)+' 至'+cast(@endtime as varchar)print '------------------------------------------'print ' 物品 出庫數(shù)量 百分比 '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編寫函數(shù),查詢指定物品的剩余數(shù)量

    create function refer_number(@commoditynumber varchar(20))--傳遞商品編號 returns int as beginreturn(select savenumber from commodity where commodity.commoditynumber=@commoditynumber)end

    K錄入盤存數(shù)據(jù),當物品實際數(shù)量與盤存數(shù)量不一致時,用觸發(fā)器給出報警。

    create Procedure true_write(@commoditynumber varchar(20),--商品編號 @commodityname varchar(20),--商品名稱 @papernumber int,--賬面數(shù)量 @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'所輸入盤存物品實際數(shù)量與盤存數(shù)據(jù)不一樣'endend

    L編寫函數(shù),返回某個月的盤粗情況
    輸入:年月(格式Y(jié)YYY-MM)
    輸出:


    序號 商品編號 商品名稱 賬面數(shù)量 實際數(shù)量 備注

    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,--賬面數(shù)量 turenumber int--實際數(shù)量 ) 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--賬面數(shù)量declare @turenumber int--實際數(shù)量declare @i int --序號set @i=1declare print1 cursor forselect *from dbo.return_remark(@data)print '輸入:年月'+substring(cast(@data as varchar),1,7)+'(格式Y(jié)YYY-MM)'print '輸出:'print '----------------------------------------------------------'print '序號 商品編號 商品名稱 賬面數(shù)量 實際數(shù)量 備注'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批處理驅(qū)動程序測試你的程序。

    --填寫最低數(shù)量exec commodity_lessnumber '打印紙','102832938',100,1,10--商品名稱,編號,存儲數(shù)量,單價,最低存儲數(shù)量exec commodity_lessnumber '文件夾','121222222',50,3,5exec commodity_lessnumber '手機殼','747411111',20,300,10--錄入工作人員信息exec worker_write '徐一','123456','13733','1998-01-01','CEO','123456'--姓名編號聯(lián)系電話,出生日期職務經(jīng)理編號exec worker_write '宋二','789012','89898','1998-02-02','外賣員','123456'exec worker_write '黃三','345678','90909','1998-03-03','會計','123456'--錄入供應商信息exec supplier_write '李四','1711030301','1864236'--姓名 編號 聯(lián)系電話exec supplier_write '張三','1711030302','1234567'exec supplier_write '王五','1711030303','9876543'--填寫入庫單--采購金額,采購數(shù)量,入庫日期,商品編號,商品名稱,工作人員姓名,供應商姓名,工作人員編號,供應商編號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'--填寫出庫單--日期,名稱,編號,出庫數(shù)量,工作人員姓名,工作人員編號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'--編號,名稱,賬面數(shù)量,日期exec true_write '121222222','文件夾','50','1999-02-13'exec true_write '747411111','手機殼','19','1999-02-13'exec print_remark'1999-02-15'--查詢物品最低存儲數(shù)量print '商品編號為的物品最低存儲數(shù)量為'print dbo.check_lessnumber('747411111')--按照日期打印入庫單exec print_godown '1999-04-18'--按照日期查找百分比exec number_precent '1999-02-12','2002-03-19'--查詢指定物品的盤存數(shù)量print '商品編號為的物品存儲存儲數(shù)量為'print dbo.refer_number('747411111')--某個月的盤存情況exec print_remark '1999-02-13'

    總結(jié)

    以上是生活随笔為你收集整理的小型仓库管理系统MySQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。