1Oracle课程设计实验题目:仓库管理系统专业:计算机应用与技术班级:1440302学号:20110030226姓名:胡强指导教师:王芳2一、系统描述仓库管理系统的功能:1)、产品入仓管理:在货物送到仓库时,对货物信息进行了解并将相关信息输入到数据库中,同时更新数据库。2)、产品出仓管理:在货物运出仓库时,进行货物信息统计并将数据保存到数据库中,同时更新数据库。3)仓库货物信息提醒:当货物少于某一规定的值时,或者货物保质期将至时将发出提醒。4)、借出管理:凭借条借出,然后能够还库。5)、查询修改:管理员可以进行一系列查询:查询货物类别及货物的信息、数量和货物流动的规则(对货物出仓进仓的要求);并可以对以上查询进行修改;可以查询某一天货物流动的信息,以及出仓及入仓的详细信息。6)、初始化库存设置:设置库存的初始化值,库存的上下警戒限制。7)、盘库情况:反映没有、年的库存情况;二、系统需求分析利用用例图、类图、E-R图对系统进行需求分析。仓库管理系统可以实现对仓库货物信息、出仓货物管理、进仓货物管理、货物数量管理以及货物出入仓限制规则,以下为其用例图、类图及E-R图。3仓库管理系统用例图类图表1:产品信息表PRO字段名数据类型长度约束说明PROIDNUMBER11主码产品编号PRONAMEVARCHAR220NOTNULL产品名称PRODRESSVARCHAR250产品地址DREPHONENUMBER20产品地址号码BDATENUMBER5NOTNULL保质天数DEMOVARCHAR2100说明4表2:产品信息管理PRO_MAN字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号BIRDATEDATE主码产品生产日期ZNUMNUMBER20NOTNULL产品数量DEMOVARCHAR2100说明表3:产品出库管理C_PRO字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号CDATEDATE主码出库日期BIRDATEDATENOTNULL生产日期ZNUMNUMBER10NOTNULL出库数量DEMOVARCHAR2100说明表4:产品入库日期R_PRO字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号RDATEDATE主码入库日期BIRDATEDATENOTNULL生产日期RNUMNUMBER10NOTNULL入库数量DEMOVARCHAR2100说明表5:产品仓库限制规则字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号BIRDATEDATE主码产品生产日期ZNUMNUMBER20NOTNULL产品数量DEMOVARCHAR2100说明表6:管理员表ADMIN字段名数据类型长度约束说明IDNUMBER11主码管理员编号5USARNAMEVARCHAR210NOTNULL管理员账号PASSORDVARCHAR211NOTNULL账号密码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功能模块设计利用PL/SQL程序创建下列各种数据库对象。(1)创建一个当仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产日期及保质期的函数。(2)创建一个计算距保质期时间的存储过程。7(3)创建一个计算出库后数量的函数。(4)创建一个计算入库后数量的函数。四、数据库对象创建描述数据库对象中表的创建、序列的创建、视图的创建、存储过程的创建,触发器的创建等内容,实现系统的基本功能。1、表的创建(1)产品信息PRO:CREATETABLEUSERS.PRO(PROIDNUMBER(11)NOTNULL,PRONAMEVARCHAR2(20)NOTNULL,PRODRESSVARCHAR2(50),DREPHONENUMBER(20),BDATENUMBER(5)NOTNULL,DEMOVARCHAR2(100),PRIMARYKEY(PROID)VALIDATE)TABLESPACEUSERS(2)仓库产品管理PRO_MAN8CREATETABLEUSERS.PRO_MAN(PROIDNUMBER(11)NOTNULL,BIRDATEDATENOTNULL,ZNUMNUMBER(20)NOTNULL,DEMOVARCHAR2(100),PRIMARYKEY(PROID,BIRDATE)VALIDATE,FOREIGNKEY(PROID)REFERENCESSYS.PRO(PROID)VALIDATE)TABLESPACEUSERS(3)创建入库管理表R_PROCREATETABLEUSERS.R_PRO(PROIDNUMBER(11)NOTNULL,RDATEDATENOTNULL,BIRDATEDATENOTNULL,RNUMNUMBER(10)NOTNULL,DEMOVARCHAR2(100),PRIMARYKEY(PROID,RDATE)VALIDATE,FOREIGNKEY(PROID)REFERENCESSYS.PRO(PROID)VALIDATE)TABLESPACEUSERS9(4)出库产品管理C_PROCREATETABLEUSERS.C_PRO(PROIDNUMBER(11)NOTNULL,CDATEDATENOTNULL,BIRDATEDATENOTNULL,CNUMNUMBER(10)NOTNULL,DEMOVARCHAR2(100),PRIMARYKEY(PROID,CDATE)VALIDATE,FOREIGNKEY(PROID)REFERENCESSYS.PRO(PROID)VALIDATE)TABLESPACEUSERS(5)管理规则PRO_LIMCREATETABLEUSERS.PRO_LIM(PROIDNUMBER(11)NOTNULL,MINUMNUMBER(10)NOTNULL,MAXUMNUMBER(10)NOTNULL,LBIRDATENUMBER(5)NOTNULL,DEMOVARCHAR2(100),PRIMARYKEY(PROID)VALIDATE,10FOREIGNKEY(PROID)REFERENCESSYS.PRO(PROID)VALIDATE)TABLESPACEUSERS(6)管理员表ADMINCREATETABLEUSERS.ADMIN(IDNUMBER(11)NOTNULL,USERNAMEVARCHAR2(10)NOTNULL,PASSWORDVARCHAR2(11)NOTNULL,PRIMARYKEY(ID)VALIDATE)TABLESPACEUSERS2、序列的创建CREATESEQUENCEC_R_VIEWNOCYCLENOORDERNOCACHNOMAXVALUEMINVALUE100INCREMENTBY1STARTWITH1003、视图的创建1)产品的出入库情况C_R_PRO_VIEWCREATEORREPLACEVIEWC_R_PRO_VIEWASSELECTCPROID,RPROID,PRONAME,RDATE,CDATE,CBIRDATE,RBIRDATE,CNUM,RN11UMFROMPRO,(SELECTC_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=RPROID2)产品总数量:SNUMCREATEORREPLACEVIEWSNUMASSELECTPRO.PROID,SUM(ZNUM)SNUMFROMPRO,PRO_MANWHEREPRO.PROID=PRO_MAN.PROIDGROUPBYPRO.PROID3)产品的库存信息:ZNUM_PRO_VIEWCREATEORREPLACEVIEWZNUM_PRO_VIEWASSELECTPRO_MAN.PROID,PRONAME,BIRDATE,BDATE,ZNUMFROMPRO12,PRO_MANWHERPRO.PROID=PRO_MAN.PROID4、PL/SQL程序设计(1)仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产日期保质期来:CREATEORREPLACEFUNCTIONMIN_MAX_NUM_SHOW(V_PROIDNUMBER,V_BIRDATEOUTDATE,V_BDATEOUTNUMBER)RETURNNUMBERASV_SNUMNUMBER;V_MINUMNUMBER;V_MAXUMNUMBER;BEGINSELECTSUM(ZNUM)INTOV_SNUMFROMPRO_MANWHEREPROID=V_PROID;SELECTMINUM,MAXUMINTOV_MINUM,V_MAXUMFROMPRO_LIMWHEREPROID=V_PROID;SELECTBIRDATEINTOV_BIRDATEFROMPRO_MANWHERE13PROID=V_PROID;SELECTBDATEINTOV_BDATEFROMPROWHEREPROID=V_PROID;IFV_SNUM-V_MINUM=0ORV_SNUM-V_MAXUM=0THENRETURNV_SNUM;ENDIF;END;(2)计算距保质期时间:CREATEORREPLACEPROCEDUREPRO_B(V_PROIDNUMBER)ASV_DAYSNUMBER;V_LBIRDATENUMBER;14CURSORC_BIRDATEISSELECTBIRDATEFROMPRO_MANWHEREPROID=V_PROID;BEGINSELECTLBIRDATEINTOV_LBIRDATEFROMPRO_LIMWHEREPROID=V_PROID;FORV_BIRDATEINC_BIRDATELOOPIFV_DAYS:=(SYSDATE-V_BIRDATE)=V_LBIRDATETHENDBMS_OUTPUT.PUTLINE(V_DAYS);ENDIF;ENDLOOP;END;15(4)计算入库后数量:CREATEORREPLACEFUNCTIONA_R_NUM(V_PROIDNUMBER,V_BIRDATEOUTDATE)RETURNNUMBRASV_RZNUMNUMBER;BEGINSELECTBIRDATEINTOV_BIRDATEFROMR_PROWHEREPROID=V_PROID;SELECTZNUM+RNUMINTOV_RZNUMFROM(SELECTPRO_MAN.PROID,PRO_MAN.BIRDATERBIRDATE,RNUM,ZNUMFROMR_PRO,PRO_MANWHEREPRO_MAN.PROID=R_PRO.PROIDANDPRO_MAN.BIRDATE=R_PRO.BIRDATE)A_RWHEREPROID=V_PROIDANDA_R