Oracle仓库管理系统课程设计报告数据库部分含Oracle代码.docx
《Oracle仓库管理系统课程设计报告数据库部分含Oracle代码.docx》由会员分享,可在线阅读,更多相关《Oracle仓库管理系统课程设计报告数据库部分含Oracle代码.docx(15页珍藏版)》请在冰豆网上搜索。
Oracle仓库管理系统课程设计报告数据库部分含Oracle代码
宁波工程学院
电信学院
实验报告
实验名称Oracle仓库管理系统设计
专业、班级计科111班
姓名XXX学号XXXXXXXX
日期2014.5.27
指导教师XXX老师
一、系统描述
仓库管理系统的功能:
1)、进仓管理:
在货物送到仓库时,对货物信息进行了解并将相关信息输入到数据库
中,同时更新数据库。
2)、出仓管理:
在货物运出仓库时,进行货物信息统计并将数据保存到数据库中,同
时更新数据库。
3)仓库货物信息提醒:
当货物少于某一规定的值时,或者货物保质期将至时将发出
提醒。
4)、仓库数据管理:
当仓库中的货物少于要出仓的货物时不允许出仓;当仓库货物为
满时,不允许其他货物进仓。
5)、查询修改:
管理员可以进行一系列查询:
查询货物类别及货物的信息、数量和货
物流动的规则(对货物出仓进仓的要求);并可以对以上查询进行修
改;可以查询某一天货物流动的信息,以及出仓及入仓的详细信息。
二、系统需求分析
利用用例图、类图、E-R图对系统进行需求分析。
仓库管理系统可以实现对仓库货物信息、出仓货物管理、进仓货物管理、货物数量管理以及货物出入仓限制规则,以下为其用例图、类图及E-R图。
仓库管理系统用例图
类图
表1:
产品信息表PRO
字段名
数据类型
长度
约束
说明
PROID
NUMBER
11
主码
产品编号
PRONAME
VARCHAR2
20
NOTNULL
产品名称
PRODRESS
VARCHAR2
50
产品地址
DREPHONE
NUMBER
20
产品地址号码
BDATE
NUMBER
5
NOTNULL
保质天数
DEMO
VARCHAR2
100
说明
表2:
产品信息管理PRO_MAN
字段名
数据类型
长度
约束
说明
PROID
NUMBER
11
主码,外码
产品编号
BIRDATE
DATE
主码
产品生产日期
ZNUM
NUMBER
20
NOTNULL
产品数量
DEMO
VARCHAR2
100
说明
表3:
产品出库管理C_PRO
字段名
数据类型
长度
约束
说明
PROID
NUMBER
11
主码,外码
产品编号
CDATE
DATE
主码
出库日期
BIRDATE
DATE
NOTNULL
生产日期
CNUM
NUMBER
10
NOTNULL
出库数量
DEMO
VARCHAR2
100
说明
表4:
产品入库日期R_PRO
字段名
数据类型
长度
约束
说明
PROID
NUMBER
11
主码,外码
产品编号
RDATE
DATE
主码
入库日期
BIRDATE
DATE
NOTNULL
生产日期
RNUM
NUMBER
10
NOTNULL
入库数量
DEMO
VARCHAR2
100
说明
表5:
产品仓库限制规则
字段名
数据类型
长度
约束
说明
PROID
NUMBER
11
主码,外码
产品编号
BIRDATE
DATE
主码
生产日期
ZNUM
NUMBER
20
NOTNULL
产品数量
DEMO
VARCHAR2
100
说明
表6:
管理员表ADMIN
字段名
数据类型
长度
约束
说明
ID
NUMBER
11
主码
管理员编号
USERNAME
VARCHAR2
10
NOTNULL
管理员账号
PASSORD
VARCHAR2
11
NOTNULL
账号密码
E-R图
三、数据库对象设计
1、表设计
通过对仓库管理系统的业务分析及查询资料了解,设计该系统的6个关系表,详情见上边类图部分。
2、序列设计
为了方便仓库产品管理,在数据库中用以下序列产生相应编号
C_R_VIEW:
产生产品编号,起始值100。
3、视图设计
为了方便仓库管理员查询出入库情况、每个生产日期的库存信息及产品的总数量,创建下列视图。
(1)创建名为“C_R_PRO_VIEW”的视图,用于查看产品的出入库汇总情况,包
括出库的产品编号,入库的产品编号,产品名称,入库日期,出库日期,出库产品
的生产日期,入库产品的生产日期,出库数量,入库数量。
(2)创建名为“SNUM”的视图,用于查询一种产品的总库存量,包括产品编号,
产品总数量。
(3)创建名为“ZNUM_PRO_VIEW”的视图,用于查询产品的库存信息,包括不同
生产日期的库存量。
4、PL/SQL功能模块设计
利用PL/SQL程序创建下列各种数据库对象。
(1)创建一个当仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产
日期及保质期的函数。
(2)创建一个计算距保质期时间的存储过程。
(3)创建一个计算出库后数量的函数。
(4)创建一个计算入库后数量的函数。
四、数据库对象创建
描述数据库对象中表的创建、序列的创建、视图的创建、存储过程的创建,触发器的创建等内容,实现系统的基本功能。
1、表的创建
(1)产品信息PRO:
CREATETABLE"USERS"."PRO"(
"PROID"NUMBER(11)NOTNULL,
"PRONAME"VARCHAR2(20)NOTNULL,
"PRODRESS"VARCHAR2(50),
"DREPHONE"NUMBER(20),
"BDATE"NUMBER(5)NOTNULL,
"DEMO"VARCHAR2(100),
PRIMARYKEY("PROID")VALIDATE)
TABLESPACE"USERS"
(2)仓库产品管理PRO_MAN
CREATETABLE"USERS"."PRO_MAN"(
"PROID"NUMBER(11)NOTNULL,
"BIRDATE"DATENOTNULL,
"ZNUM"NUMBER(20)NOTNULL,
"DEMO"VARCHAR2(100),
PRIMARYKEY("PROID","BIRDATE")VALIDATE,
FOREIGNKEY("PROID")REFERENCES"SYS"."PRO"("PROID")VALIDATE)
TABLESPACE"USERS"
(3)创建入库管理表R_PRO
CREATETABLE"USERS"."R_PRO"(
"PROID"NUMBER(11)NOTNULL,
"RDATE"DATENOTNULL,
"BIRDATE"DATENOTNULL,
"RNUM"NUMBER(10)NOTNULL,
"DEMO"VARCHAR2(100),
PRIMARYKEY("PROID","RDATE")VALIDATE,
FOREIGNKEY("PROID")REFERENCES"SYS"."PRO"("PROID")VALIDATE)
TABLESPACE"USERS"
(4)出库产品管理C_PRO
CREATETABLE"USERS"."C_PRO"(
"PROID"NUMBER(11)NOTNULL,
"CDATE"DATENOTNULL,
"BIRDATE"DATENOTNULL,
"CNUM"NUMBER(10)NOTNULL,
"DEMO"VARCHAR2(100),
PRIMARYKEY("PROID","CDATE")VALIDATE,
FOREIGNKEY("PROID")REFERENCES"SYS"."PRO"("PROID")VALIDATE)
TABLESPACE"USERS"
(5)管理规则PRO_LIM
CREATETABLE"USERS"."PRO_LIM"(
"PROID"NUMBER(11)NOTNULL,
"MINUM"NUMBER(10)NOTNULL,
"MAXUM"NUMBER(10)NOTNULL,
"LBIRDATE"NUMBER(5)NOTNULL,
"DEMO"VARCHAR2(100),
PRIMARYKEY("PROID")VALIDATE,
FOREIGNKEY("PROID")REFERENCES"SYS"."PRO"("PROID")VALIDATE)
TABLESPACE"USERS"
(6)管理员表ADMIN
CREATETABLE"USERS"."ADMIN"(
"ID"NUMBER(11)NOTNULL,
"USERNAME"VARCHAR2(10)NOTNULL,
"PASSWORD"VARCHAR2(11)NOTNULL,
PRIMARYKEY("ID")VALIDATE)TABLESPACE"USERS"
2、序列的创建
CREATESEQUENCEC_R_VIEWNOCYCLENOORDERNOCACHENOMAXVALUEMINVALUE100INCREMENTBY1STARTWITH100
3、视图的创建
(1)产品的出入库情况C_R_PRO_VIEW
CREATEORREPLACEVIEWC_R_PRO_VIEW
AS
SELECTCPROID,RPROID,PRONAME,RDATE,CDATE,CBIRDATE,RBIRDATE,CNUM,RNUMFROMPRO,
(SELECT
C_PRO.PROIDASCPROID,R_PRO.PROIDASRPROID,RDATE,CDATE,C_PRO.BIRDATEASCBIRDATE,R_PRO.BIRDATEASRBIRDATE,CNUM,RNUMFROMC_PROFULLJOINR_PROONC_PRO.PROID=R_PRO.PROIDandCDATE=RDATEORDERBYRPROID)R_CWHEREPRO.PROID=CPROIDANDPRO.PROID=RPROID
(2)产品总数量:
SNUM
CREATEORREPLACEVIEWSNUM
AS
SELECTPRO.PROID,SUM(ZNUM)SNUMFROMPRO,PRO_MAN
WHEREPRO.PROID=PRO_MAN.PROIDGROUPBYPRO.PROID
(3)产品的库存信息:
ZNUM_PRO_VIEW
CREATEORREPLACEVIEWZNUM_PRO_VIEW
AS
SELECTPRO_MAN.PROID,PRONAME,BIRDATE,BDATE,ZNUMFROM
PRO,PRO_MANWHERPRO.PROID=PRO_MAN.PROID
4、PL/SQL程序设计
(1)仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产日期及保质期来:
CREATEORREPLACEFUNCTIONMIN_MAX_NUM_SHOW(
V_PROIDNUMBER,V_BIRDATEOUTDATE,V_BDATEOUTNUMBER)
RETURNNUMBER
AS
V_SNUMNUMBER;V_MINUMNUMBER;V_MAXUMNUMBER;
BEGIN
SELECTSUM(ZNUM)INTOV_SNUMFROMPRO_MANWHEREPROID=V_PROID;
SELECTMINUM,MAXUMINTOV_MINUM,V_MAXUMFROMPRO_LIMWHEREPROID=V_PROID;
SELECTBIRDATEINTOV_BIRDATEFROMPRO_MANWHEREPROID=V_PROID;
SELECTBDATEINTOV_BDATEFROMPROWHEREPROID=V_PROID;
IFV_SNUM-V_MINUM<=0ORV_SNUM-V_MAXUM>=0THEN
RETURNV_SNUM;
ENDIF;
END;
(2)计算距保质期时间:
CREATEORREPLACEPROCEDUREPRO_B(
V_PROIDNUMBER)
AS
V_DAYSNUMBER;
V_LBIRDATENUMBER;
CURSORC_BIRDATEISSELECTBIRDATEFROM
PRO_MANWHEREPROID=V_PROID;
BEGIN
SELECTLBIRDATEINTOV_LBIRDATEFROMPRO_LIM
WHEREPROID=V_PROID;
FORV_BIRDATEINC_BIRDATELOOP
IFV_DAYS:
=(SYSDATE-V_BIRDATE)>=V_LBIRDATETHEN
DBMS_OUTPUT.PUTLINE(V_DAYS);
ENDIF;
ENDLOOP;
END;
(3)计算出库后数量:
CREATEORREPLACEFUNCTIONA_C_NUM(
V_PROIDNUMBER,V_BIRDATEOUTDATE)
RETURNNUMBER
AS
V_CZNUMNUMBER;
BEGIN
SELECTBIRDATEINTOV_BIRDATEFROMC_PROWHEREPROID=V_PROID;
SELECTZNUM-CNUMINTOV_CZNUMFROM(
SELECTPRO_MAN.PROID,PRO_MAN.BIRDATECBIRDATE,CNUM,ZNUMFROM
C_PRO,PRO_MANWHERE
PRO_MAN.PROID=C_PRO.PROIDANDPRO_MAN.BIRDATE=C_PRO.BIRDATE)A_C
WHEREPROID=V_PROIDANDA_C.CBIRDATE=V_BIRDATE;
RETURNV_CZNUM;
END;
(4)计算入库后数量:
CREATEORREPLACEFUNCTIONA_R_NUM(
V_PROIDNUMBER,V_BIRDATEOUTDATE)
RETURNNUMBER
AS
V_RZNUMNUMBER;
BEGIN
SELECTBIRDATEINTOV_BIRDATEFROMR_PROWHEREPROID=V_PROID;
SELECTZNUM+RNUMINTOV_RZNUMFROM(
SELECTPRO_MAN.PROID,PRO_MAN.BIRDATERBIRDATE,RNUM,ZNUMFROM
R_PRO,PRO_MANWHERE
PRO_MAN.PROID=R_PRO.PROIDANDPRO_MAN.BIRDATE=R_PRO.BIRDATE)A_R
WHEREPROID=V_PROIDANDA_R.RBIRDATE=V_BIRDATE;
RETURNV_RZNUM;
END;
五、总结
在这次的数据库实践中,我学到了很多,也收获了很多经验。
刚刚开始时由于认识不足以及搜素资料不完善,将此数据库系统设计不完善,使系统无法实现。
在老师的教导下,我又重新将仓库管理系统进行分析,并找同学讨论,不断完善,经过一番努力后,将此系统完成,虽然不是很复杂,功能也不是很多,但是这注入了我全部的思想。
由此次试验,我学会了做事情要循序渐进,不可能一次性就能将事情做到十全十美,在做的过程中不断思考,将事情渐渐完善。
此次的实践还让我的数据库知识更扎实,在试验中运用了存储过程,视图等功能,让我学到的知识能更加熟练掌握。