《最新Oracle仓库管理系统课程设计报告(数据库部分-含Oracle代码).doc》由会员分享,可在线阅读,更多相关《最新Oracle仓库管理系统课程设计报告(数据库部分-含Oracle代码).doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateOracle仓库管理系统课程设计报告(数据库部分-含Oracle代码)宁 波 工 程 学 院宁 波 工 程 学 院电 信 学 院实验报告实验名称 Oracle仓库管理系统设计 专业、班级 计科111班 姓名 XXX 学号 XXXXXXXX 日期 2014.5.27 指导教师 XXX老师 一、 系统描述 仓库管理系统的功能: 1)、进仓管理:在货物送到仓库时,对货物信息
2、进行了解并将相关信息输入到数据库 中,同时更新数据库。 2)、出仓管理:在货物运出仓库时,进行货物信息统计并将数据保存到数据库中,同 时更新数据库。 3)仓库货物信息提醒:当货物少于某一规定的值时,或者货物保质期将至时将发出 提醒。 4)、仓库数据管理:当仓库中的货物少于要出仓的货物时不允许出仓;当仓库货物为 满时,不允许其他货物进仓。 5)、查询修改:管理员可以进行一系列查询:查询货物类别及货物的信息、数量和货 物流动的规则(对货物出仓进仓的要求);并可以对以上查询进行修 改;可以查询某一天货物流动的信息,以及出仓及入仓的详细信息。二、 系统需求分析利用用例图、类图、E-R图对系统进行需求分
3、析。仓库管理系统可以实现对仓库货物信息、出仓货物管理、进仓货物管理、货物数量管理以及货物出入仓限制规则,以下为其用例图、类图及E-R图。 仓库管理系统用例图 类图表1:产品信息表PRO字段名数据类型长度约束说明PROIDNUMBER11主码产品编号PRONAMEVARCHAR220NOT NULL产品名称PRODRESSVARCHAR250产品地址DREPHONENUMBER20产品地址号码BDATENUMBER5NOT NULL保质天数DEMOVARCHAR2100说明表2:产品信息管理PRO_MAN字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号BIRDATEDATE
4、主码产品生产日期ZNUMNUMBER20NOT NULL产品数量DEMOVARCHAR2100说明表3:产品出库管理C_PRO字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号CDATEDATE主码出库日期BIRDATEDATENOT NULL生产日期CNUMNUMBER10NOT NULL出库数量DEMOVARCHAR2100说明表4:产品入库日期R_PRO字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号RDATEDATE主码入库日期BIRDATEDATENOT NULL生产日期RNUMNUMBER10NOT NULL入库数量DEMOVARCHAR2
5、100说明表5:产品仓库限制规则字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号BIRDATEDATE主码生产日期ZNUMNUMBER20NOT NULL产品数量DEMOVARCHAR2100说明表6:管理员表ADMIN字段名数据类型长度约束说明IDNUMBER11主码管理员编号USERNAMEVARCHAR210NOT NULL管理员账号PASSORDVARCHAR211NOT NULL账号密码E-R图三、 数据库对象设计1、 表设计 通过对仓库管理系统的业务分析及查询资料了解,设计该系统的6个关系表,详情见上边类图部分。 2、序列设计 为了方便仓库产品管理,在数据库中
6、用以下序列产生相应编号 C_R_VIEW:产生产品编号,起始值100。 3、视图设计 为了方便仓库管理员查询出入库情况、每个生产日期的库存信息及产品的总数量,创建下列视图。 (1)创建名为“C_R_PRO_VIEW”的视图,用于查看产品的出入库汇总情况,包 括出库的产品编号,入库的产品编号,产品名称,入库日期,出库日期,出库产品 的生产日期,入库产品的生产日期,出库数量,入库数量。 (2)创建名为“SNUM”的视图,用于查询一种产品的总库存量,包括产品编号, 产品总数量。 (3)创建名为“ZNUM_PRO_VIEW”的视图,用于查询产品的库存信息,包括不同 生产日期的库存量。 4、PL/SQL
7、功能模块设计 利用PL/SQL程序创建下列各种数据库对象。 (1)创建一个当仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产 日期及保质期的函数。 (2)创建一个计算距保质期时间的存储过程。 (3)创建一个计算出库后数量的函数。 (4)创建一个计算入库后数量的函数。四、 数据库对象创建描述数据库对象中表的创建、序列的创建、视图的创建、存储过程的创建,触发器的创建等内容,实现系统的基本功能。1、 表的创建 (1) 产品信息PRO: CREATE TABLE USERS.PRO ( PROID NUMBER(11) NOT NULL , PRONAME VARCHAR2(20) NOT
8、NULL , PRODRESS VARCHAR2(50), DREPHONE NUMBER(20), BDATE NUMBER(5) NOT NULL , DEMO VARCHAR2(100), PRIMARY KEY (PROID) VALIDATE ) TABLESPACE USERS (2)仓库产品管理PRO_MAN CREATE TABLE USERS.PRO_MAN ( PROID NUMBER(11) NOT NULL , BIRDATE DATE NOT NULL , ZNUM NUMBER(20) NOT NULL , DEMO VARCHAR2(100), PRIMARY K
9、EY (PROID, BIRDATE) VALIDATE , FOREIGN KEY (PROID) REFERENCES SYS.PRO (PROID) VALIDATE ) TABLESPACE USERS(3)创建入库管理表R_PRO CREATE TABLE USERS.R_PRO ( PROID NUMBER(11) NOT NULL , RDATE DATE NOT NULL , BIRDATE DATE NOT NULL , RNUM NUMBER(10) NOT NULL , DEMO VARCHAR2(100), PRIMARY KEY (PROID, RDATE) VALI
10、DATE , FOREIGN KEY (PROID) REFERENCES SYS.PRO (PROID) VALIDATE ) TABLESPACE USERS (4)出库产品管理C_PRO CREATE TABLE USERS.C_PRO ( PROID NUMBER(11) NOT NULL , CDATE DATE NOT NULL , BIRDATE DATE NOT NULL , CNUM NUMBER(10) NOT NULL , DEMO VARCHAR2(100), PRIMARY KEY (PROID, CDATE) VALIDATE , FOREIGN KEY (PROI
11、D) REFERENCES SYS.PRO (PROID) VALIDATE ) TABLESPACE USERS (5)管理规则PRO_LIM CREATE TABLE USERS.PRO_LIM ( PROID NUMBER(11) NOT NULL , MINUMNUMBER(10) NOT NULL , MAXUM NUMBER(10) NOT NULL , LBIRDATE NUMBER(5) NOT NULL , DEMO VARCHAR2(100), PRIMARY KEY (PROID) VALIDATE , FOREIGN KEY (PROID) REFERENCES SYS
12、.PRO (PROID) VALIDATE ) TABLESPACEUSERS (6)管理员表ADMIN CREATE TABLE USERS.ADMIN ( ID NUMBER(11) NOT NULL , USERNAME VARCHAR2(10) NOT NULL , PASSWORD VARCHAR2(11) NOT NULL , PRIMARY KEY (ID) VALIDATE ) TABLESPACE USERS2、 序列的创建 CREATE SEQUENCE C_R_VIEW NOCYCLE NOORDER NOCACHE NOMAXVALUE MINVALUE 100 INC
13、REMENT BY 1 START WITH 100 3、视图的创建 (1)产品的出入库情况C_R_PRO_VIEWCREATE OR REPLACE VIEW C_R_PRO_VIEWAS SELECT CPROID,RPROID,PRONAME,RDATE,CDATE,CBIRDATE,RBIRDATE,CNUM,RNUM FROM PRO, (SELECT C_PRO.PROID AS CPROID,R_PRO.PROID AS RPROID,RDATE,CDATE,C_PRO.BIRDATE AS CBIRDATE,R_PRO.BIRDATE AS RBIRDATE,CNUM,RNUM
14、 FROM C_PRO FULL JOIN R_PRO ON C_PRO.PROID=R_PRO.PROID and CDATE=RDATE ORDER BY RPROID) R_C WHERE PRO.PROID=CPROID AND PRO.PROID=RPROID (2)产品总数量:SNUMCREATE OR REPLACE VIEW SNUMASSELECT PRO.PROID,SUM(ZNUM) SNUM FROM PRO,PRO_MAN WHERE PRO.PROID=PRO_MAN.PROID GROUP BY PRO.PROID (3)产品的库存信息:ZNUM_PRO_VIEW
15、CREATE OR REPLACE VIEW ZNUM_PRO_VIEWASSELECT PRO_MAN.PROID,PRONAME,BIRDATE,BDATE,ZNUM FROMPRO,PRO_MAN WHER PRO.PROID=PRO_MAN.PROID4、 PL/SQL程序设计 (1)仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产日期及保质期来:CREATE OR REPLACE FUNCTION MIN_MAX_NUM_SHOW ( V_PROID NUMBER,V_BIRDATE OUT DATE,V_BDATE OUT NUMBER) RETURN NUMBER AS
16、 V_SNUM NUMBER;V_MINUM NUMBER;V_MAXUM NUMBER; BEGIN SELECT SUM(ZNUM) INTO V_SNUM FROM PRO_MAN WHERE PROID=V_PROID; SELECT MINUM,MAXUM INTO V_MINUM,V_MAXUM FROM PRO_LIM WHERE PROID=V_PROID; SELECT BIRDATE INTO V_BIRDATE FROM PRO_MAN WHERE PROID=V_PROID; SELECT BDATE INTO V_BDATE FROM PRO WHERE PROID=
17、V_PROID; IF V_SNUM-V_MINUM=0 THEN RETURN V_SNUM; END IF; END; (2)计算距保质期时间: CREATE OR REPLACE PROCEDURE PRO_B( V_PROID NUMBER) AS V_DAYS NUMBER; V_LBIRDATE NUMBER; CURSOR C_BIRDATE IS SELECT BIRDATE FROM PRO_MAN WHERE PROID=V_PROID; BEGIN SELECT LBIRDATE INTO V_LBIRDATE FROM PRO_LIM WHERE PROID=V_PRO
18、ID; FOR V_BIRDATE IN C_BIRDATE LOOP IF V_DAYS:=(SYSDATE-V_BIRDATE)=V_LBIRDATE THEN DBMS_OUTPUT.PUTLINE(V_DAYS); END IF; END LOOP; END; (3)计算出库后数量:CREATE OR REPLACE FUNCTION A_C_NUM( V_PROID NUMBER,V_BIRDATE OUT DATE)RETURN NUMBERAS V_CZNUM NUMBER; BEGIN SELECT BIRDATE INTO V_BIRDATE FROM C_PRO WHERE
19、 PROID=V_PROID; SELECT ZNUM-CNUM INTO V_CZNUM FROM ( SELECT PRO_MAN.PROID, PRO_MAN.BIRDATE CBIRDATE,CNUM,ZNUM FROM C_PRO,PRO_MAN WHERE PRO_MAN.PROID=C_PRO.PROID AND PRO_MAN.BIRDATE=C_PRO.BIRDATE) A_C WHERE PROID=V_PROID AND A_C.CBIRDATE=V_BIRDATE; RETURN V_CZNUM; END; (4)计算入库后数量: CREATE OR REPLACE F
20、UNCTION A_R_NUM( V_PROID NUMBER,V_BIRDATE OUT DATE)RETURN NUMBERAS V_RZNUM NUMBER; BEGIN SELECT BIRDATE INTO V_BIRDATE FROM R_PRO WHERE PROID=V_PROID; SELECT ZNUM+RNUM INTO V_RZNUM FROM ( SELECT PRO_MAN.PROID, PRO_MAN.BIRDATE RBIRDATE,RNUM,ZNUM FROM R_PRO,PRO_MAN WHERE PRO_MAN.PROID=R_PRO.PROID AND
21、PRO_MAN.BIRDATE=R_PRO.BIRDATE) A_R WHERE PROID=V_PROID AND A_R.RBIRDATE=V_BIRDATE; RETURN V_RZNUM; END; 五、 总结在这次的数据库实践中,我学到了很多,也收获了很多经验。刚刚开始时由于认识不足以及搜素资料不完善,将此数据库系统设计不完善,使系统无法实现。在老师的教导下,我又重新将仓库管理系统进行分析,并找同学讨论,不断完善,经过一番努力后,将此系统完成,虽然不是很复杂,功能也不是很多,但是这注入了我全部的思想。由此次试验,我学会了做事情要循序渐进,不可能一次性就能将事情做到十全十美,在做的过程中不断思考,将事情渐渐完善。此次的实践还让我的数据库知识更扎实,在试验中运用了存储过程,视图等功能,让我学到的知识能更加熟练掌握。-