Oracle课程设计报告--仓库管理系统_第1页
Oracle课程设计报告--仓库管理系统_第2页
Oracle课程设计报告--仓库管理系统_第3页
Oracle课程设计报告--仓库管理系统_第4页
Oracle课程设计报告--仓库管理系统_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle课程设计 实验题目:仓库管理系统 专 业: 计算机应用与技术 班 级: 1440302 学 号:20110030226 姓 名: 胡强 指导教师: 王 芳47一、 系统描述    仓库管理系统的功能:       1) 、产品入仓管理:在货物送到仓库时,对货物信息进行了解并将相关信息输入到数据库  中,同时更新数据库。       2)、产品出仓管理:在货物运出仓库时,进行货

2、物信息统计并将数据保存到数据库中,同 时更新数据库。 3) 仓库货物信息提醒:当货物少于某一规定的值时,或者货物保质期将至时将发出 提醒。       4) 、借出管理:凭借条借出,然后能够还库。       5)、查询修改:管理员可以进行一系列查询:查询货物类别及货物的信息、数量和货 物流动的规则(对货物出仓进仓的要求);并可以对以上查询进行修改;可以查询某一天货物流动的信息,以及出仓及入仓的详细信息。 

3、6)、初始化库存设置:设置库存的初始化值,库存的上下警戒限制。7)、盘库情况:反映没有、年的库存情况;二、 系统需求分析 利用用例图、类图、E-R图对系统进行需求分析。 仓库管理系统可以实现对仓库货物信息、出仓货物管理、进仓货物管理、货物数量管理以及货物出入仓限制规则,以下为其用例图、类图及E-R图。仓库管理系统用例图  类图 表1:产品信息表PRO 字段名数据类型长度约束说明PROIDNUMBER11主码产品编号PRONAMEVARCHAR220NOT NULL产品名称PRODRESSVARCHAR250产品地址DREPH

4、ONENUMBER20产品地址号码BDATENUMBER5NOT NULL保质天数DEMOVARCHAR2100说明表2:产品信息管理PRO_MAN 字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号BIRDATEDATE主码产品生产日期ZNUMNUMBER20NOT NULL产品数量DEMOVARCHAR2100说明表3:产品出库管理C_PRO字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号CDATEDATE主码出库日期BIRDATEDATENOT NULL生产日期ZNUMNUMBER10NOT NULL出库数量DEMOVARCHAR210

5、0说明表4:产品入库日期R_PRO字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号RDATEDATE主码入库日期BIRDATEDATENOT NULL生产日期RNUMNUMBER10NOT NULL入库数量DEMOVARCHAR2100说明表5:产品仓库限制规则字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号BIRDATEDATE主码产品生产日期ZNUMNUMBER20NOT NULL产品数量DEMOVARCHAR2100说明表6:管理员表ADMIN字段名数据类型长度约束说明IDNUMBER11主码管理员编号USARNAMEVARCHAR210NOT

6、 NULL管理员账号PASSORDVARCHAR211NOT NULL账号密码E-R图三、 数据库对象设计 1、表设计      通过对仓库管理系统的业务分析及查询资料了解,设计该系统的6个关系表,详情见上边类图部分。    2、序列设计      为了方便仓库产品管理,在数据库中用以下序列产生相应编号 C_R_VIEW:产生产品编号,起始值100。    3、视图设

7、计      为了方便仓库管理员查询出入库情况、每个生产日期的库存信息及产品的总数量,创建下列视图。  (1)创建名为“C_R_PRO_VIEW”的视图,用于查看产品的出入库汇总情况,包 括出库的产品编号,入库的产品编号,产品名称,入库日期,出库日期,出库产品       的生产日期,入库产品的生产日期,出库数量,入库数量。 (2)创建名为“SNUM”的视图,用于查询一种产品的总库存量,包括产品编号,产品总数量。 &

8、#160;     (3)创建名为“ZNUM_PRO_VIEW”的视图,用于查询产品的库存信息,包括不同 生产日期的库存量4、PL/SQL功能模块设计        利用PL/SQL程序创建下列各种数据库对象。        (1)创建一个当仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产日期及保质期的函数。 (2)创建一个计算距保质期时间的存储过程。

9、60;       (3)创建一个计算出库后数量的函数。        (4)创建一个计算入库后数量的函数。 四、 数据库对象创建 描述数据库对象中表的创建、序列的创建、视图的创建、存储过程的创建,触发器的创建等内容,实现系统的基本功能。 1、表的创建      (1) 产品信息PRO:   CREATE&#

10、160;TABLE "USERS"."PRO" (    "PROID" NUMBER(11) NOT NULL ,    "PRONAME" VARCHAR2(20) NOT NULL ,    "PRODRESS" VARCHAR2(50),  

11、  "DREPHONE" NUMBER(20),  "BDATE" NUMBER(5) NOT NULL ,    "DEMO" VARCHAR2(100),     PRIMARY KEY ("PROID") VALIDATE )  TABLESPACE "

12、USERS"     (2)仓库产品管理PRO_MAN   CREATE TABLE "USERS"."PRO_MAN" (    "PROID" NUMBER(11) NOT NULL ,    "BIRDATE" DATE NOT NULL

13、60;,   "ZNUM" NUMBER(20) NOT NULL ,      "DEMO" VARCHAR2(100),     PRIMARY KEY ("PROID", "BIRDATE")  VALIDATE ,    FOREIGN KEY

14、0;("PROID") REFERENCES "SYS"."PRO" ("PROID")  VALIDATE )  TABLESPACE "USERS" (3)创建入库管理表R_PRO   CREATE TABLE "USERS"."R_PRO" (    "

15、PROID" NUMBER(11) NOT NULL ,    "RDATE" DATE NOT NULL ,    "BIRDATE" DATE NOT NULL ,    "RNUM" NUMBER(10) NOT NULL , 

16、60;  "DEMO" VARCHAR2(100),     PRIMARY KEY ("PROID", "RDATE") VALIDATE ,    FOREIGN KEY ("PROID") REFERENCES "SYS"."PRO" ("PROID&q

17、uot;)  VALIDATE )   TABLESPACE "USERS"    (4)出库产品管理C_PRO   CREATE TABLE "USERS"."C_PRO" (   "PROID" NUMBER(11) NOT NULL ,    

18、"CDATE" DATE NOT NULL ,    "BIRDATE" DATE NOT NULL ,  "CNUM" NUMBER(10) NOT NULL ,   "DEMO" VARCHAR2(100),     PRIMARY KEY

19、60;("PROID", "CDATE")  VALIDATE ,    FOREIGN KEY ("PROID") REFERENCES "SYS"."PRO" ("PROID")  VALIDATE )   TABLESPACE "USERS"  

20、0; (5)管理规则PRO_LIM   CREATE TABLE "USERS"."PRO_LIM" (     "PROID" NUMBER(11) NOT NULL ,      "MINUM"NUMBER(10) NOT NULL ,  

21、60; "MAXUM" NUMBER(10) NOT NULL ,   "LBIRDATE" NUMBER(5) NOT NULL ,  "DEMO" VARCHAR2(100),    PRIMARY KEY ("PROID") VALIDATE ,  FOREIGN 

22、;KEY ("PROID") REFERENCES "SYS"."PRO" ("PROID")  VALIDATE )   TABLESPACE"USERS"    (6)管理员表ADMIN  CREATE TABLE "USERS"."ADMIN" (  &

23、quot;ID" NUMBER(11)  NOT  NULL ,  "USERNAME" VARCHAR2(10) NOT NULL ,  "PASSWORD" VARCHAR2(11) NOT NULL ,  PRIMARY KEY ("ID") VALIDATE ) TABLESPACE

24、0;"USERS" 2、序列的创建 CREATE SEQUENCE C_R_VIEW NOCYCLE NOORDER NOCACH NOMAXVALUE MINVALUE 100 INCREMENT BY 1 START WITH 100   3、视图的创建    1)产品的出入库情况C_R_PRO_VIEW CREATE OR

25、 REPLACE VIEW C_R_PRO_VIEW AS  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.

26、BIRDATE  AS  CBIRDATE,R_PRO.BIRDATE  AS  RBIRDATE,CNUM,RNUM  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.PRO

27、ID=RPROID 2)产品总数量:SNUM CREATE OR REPLACE VIEW SNUM AS SELECT PRO.PROID,SUM(ZNUM) SNUM FROM PRO,PRO_MAN  WHERE PRO.PROID=PRO_MAN.PROID GROUP BY PRO.PROID 3)产品的库存信息:ZNUM_PRO_VIEW CREATE OR REP

28、LACE VIEW ZNUM_PRO_VIEW AS SELECT PRO_MAN.PROID,PRONAME,BIRDATE,BDATE,ZNUM FROM PRO,PRO_MAN WHER PRO.PROID=PRO_MAN.PROID4、PL/SQL程序设计(1)仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产日期保质期来:CREATE OR REPLACE FUNCTION MIN_MAX_NUM_SHOW (  V_

29、PROID NUMBER,V_BIRDATE OUT DATE,V_BDATE OUT NUMBER)  RETURN NUMBER  AS  V_SNUM NUMBER;V_MINUM NUMBER;V_MAXUM NUMBER;  BEGIN     SELECT SUM(ZNUM) INTO V_SNUM FROM PRO_MAN&

30、#160;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;  

31、60; SELECT BDATE INTO V_BDATE FROM PRO WHERE PROID=V_PROID;   IF V_SNUM-V_MINUM<=0 OR V_SNUM-V_MAXUM>=0 THEN         RETURN V_SNUM;     END 

32、;IF;  END; (2)计算距保质期时间:    CREATE OR REPLACE PROCEDURE PRO_B(V_PROID NUMBER)         AS         V_DAYS NUMBER;      

33、;   V_LBIRDATE NUMBER;         CURSOR C_BIRDATE IS SELECT BIRDATE  FROM                       &

34、#160;          PRO_MAN WHERE PROID=V_PROID;      BEGIN        SELECT LBIRDATE INTO V_LBIRDATE FROM PRO_LIM      

35、60;   WHERE PROID=V_PROID;   FOR V_BIRDATE IN C_BIRDATE LOOP             IF V_DAYS:=(SYSDATE-V_BIRDATE)>=V_LBIRDATE THEN        

36、;        DBMS_OUTPUT.PUTLINE(V_DAYS);              END IF;END LOOP;     END;(4)计算入库后数量:   CREATE OR REPLACE FUNCTION A_R

37、_NUM(   V_PROID NUMBER,V_BIRDATE OUT DATE) RETURN NUMBR AS   V_RZNUM NUMBER;  BEGIN   SELECT BIRDATE INTO V_BIRDATE FROM R_PRO WHERE PROID=V_PROID;   SELECT

38、0;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 PRO_MAN.BIRDATE=R_PRO.BIRDATE) A_R

39、0;  WHERE PROID=V_PROID AND A_R.RBIRDATE=V_BIRDATE;    RETURN V_RZNUM;END;附Java源代码:package 仓库管理;import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.

40、swing.JButton;public class jiemian2 extends JFrame private JPanel contentPane;public JPanel getContentPane() return contentPane;/* * Launch the application. */public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try jiemian2 frame = new jiemian2();frame.setVis

41、ible(true); catch (Exception e) e.printStackTrace(););/* * Create the frame. */public jiemian2() setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);contentPane.setLayout

42、(null);package 仓库管理;import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JTextField;import javax.swin

43、g.JLabel;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;public class jiemian1 extends JFrame implements ActionListenerprivate JPanel contentPane;jiemian jm;CardLayout cl;JPanel jp;jiemian2 jm2;JPanel jp2;private static double ch

44、ushi,up,down;public JPanel getContentPane() return contentPane;public void setContentPane(JPanel contentPane) this.contentPane = contentPane;private JTextField text1;private JLabel label_1;private JLabel label_2;private JTextField text2;private JTextField text3;private JButton jb1;private JButton jb

45、2;/* * Launch the application. */* * Create the frame. */public jiemian1() jp=jiemian.getJp();cl=jiemian.getCl();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);conte

46、ntPane.setLayout(null);text1 = new JTextField();text1.setBounds(193, 22, 192, 29);contentPane.add(text1);text1.setColumns(10);JLabel label = new JLabel("u5E93u5B58u521Du59CBu5316u503CuFF1A");label.setFont(new Font("微软雅黑", Font.PLAIN, 16);label.setBounds(46, 21, 113, 29);contentPa

47、ne.add(label);label_1 = new JLabel("u4E0Au8B66u6212u7EBFuFF1A");label_1.setFont(new Font("微软雅黑", Font.PLAIN, 16);label_1.setBounds(79, 70, 80, 29);contentPane.add(label_1);label_2 = new JLabel("u4E0Bu8B66u6212u7EBFuFF1A");label_2.setFont(new Font("微软雅黑", Font.

48、PLAIN, 16);label_2.setBounds(79, 125, 80, 29);contentPane.add(label_2);text2 = new JTextField();text2.setColumns(10);text2.setBounds(193, 75, 192, 29);contentPane.add(text2);text3 = new JTextField();text3.setColumns(10);text3.setBounds(193, 130, 192, 29);contentPane.add(text3);jb1 = new JButton(&quo

49、t;u786Eu5B9A");jb1.setFont(new Font("华文琥珀", Font.PLAIN, 16);jb1.setBounds(76, 194, 122, 39);contentPane.add(jb1);jb2 = new JButton("u8FD4u56DE");jb2.setFont(new Font("华文琥珀", Font.PLAIN, 16);jb2.setBounds(262, 194, 122, 39);contentPane.add(jb2);jb1.addActionListener

50、(this);jb2.addActionListener(this);jm2=new jiemian2();jp2=jm2.getContentPane();jp.add(jp2,"two");Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=jb1)int i=0;trychushi=new Double(text1.getText().toString();up=new Double(text2.getText().to

51、String();down=new Double(text3.getText().toString();jm.m1_mi1.setEnabled(true);jm.m1_mi2.setEnabled(true);jm.m2_mi1.setEnabled(true);jm.m2_mi2.setEnabled(true);jm.m2_mi3.setEnabled(true);jm.m3_mi1.setEnabled(true);jm.m3_mi2.setEnabled(true);JOptionPane.showMessageDialog(null, "初始化成功!");cat

52、ch(Exception e1)JOptionPane.showMessageDialog(null, "数据不能为空!");i=1;if(i!=1)cl.show(jp, "two");if(e.getSource()=jb2)cl.show(jp, "main");package 仓库管理;import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.

53、swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JTextField;import javax.swing.JLabel;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;public class j

54、iemian1 extends JFrame implements ActionListenerprivate JPanel contentPane;jiemian jm;CardLayout cl;JPanel jp;jiemian2 jm2;JPanel jp2;private static double chushi,up,down;public JPanel getContentPane() return contentPane;public void setContentPane(JPanel contentPane) this.contentPane = contentPane;p

55、rivate JTextField text1;private JLabel label_1;private JLabel label_2;private JTextField text2;private JTextField text3;private JButton jb1;private JButton jb2;/* * Launch the application. */* * Create the frame. */public jiemian1() jp=jiemian.getJp();cl=jiemian.getCl();setDefaultCloseOperation(JFra

56、me.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);contentPane.setLayout(null);text1 = new JTextField();text1.setBounds(193, 22, 192, 29);contentPane.add(text1);text1.setColumns(10);JLabel label = n

57、ew JLabel("u5E93u5B58u521Du59CBu5316u503CuFF1A");label.setFont(new Font("微软雅黑", Font.PLAIN, 16);label.setBounds(46, 21, 113, 29);contentPane.add(label);label_1 = new JLabel("u4E0Au8B66u6212u7EBFuFF1A");label_1.setFont(new Font("微软雅黑", Font.PLAIN, 16);label_1.s

58、etBounds(79, 70, 80, 29);contentPane.add(label_1);label_2 = new JLabel("u4E0Bu8B66u6212u7EBFuFF1A");label_2.setFont(new Font("微软雅黑", Font.PLAIN, 16);label_2.setBounds(79, 125, 80, 29);contentPane.add(label_2);text2 = new JTextField();text2.setColumns(10);text2.setBounds(193, 75,

59、192, 29);contentPane.add(text2);text3 = new JTextField();text3.setColumns(10);text3.setBounds(193, 130, 192, 29);contentPane.add(text3);jb1 = new JButton("u786Eu5B9A");jb1.setFont(new Font("华文琥珀", Font.PLAIN, 16);jb1.setBounds(76, 194, 122, 39);contentPane.add(jb1);jb2 = new JBut

60、ton("u8FD4u56DE");jb2.setFont(new Font("华文琥珀", Font.PLAIN, 16);jb2.setBounds(262, 194, 122, 39);contentPane.add(jb2);jb1.addActionListener(this);jb2.addActionListener(this);jm2=new jiemian2();jp2=jm2.getContentPane();jp.add(jp2,"two");Overridepublic void actionPerformed

61、(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=jb1)int i=0;trychushi=new Double(text1.getText().toString();up=new Double(text2.getText().toString();down=new Double(text3.getText().toString();jm.m1_mi1.setEnabled(true);jm.m1_mi2.setEnabled(true);jm.m2_mi1.setEnabled(true);jm.m2_mi2

62、.setEnabled(true);jm.m2_mi3.setEnabled(true);jm.m3_mi1.setEnabled(true);jm.m3_mi2.setEnabled(true);JOptionPane.showMessageDialog(null, "初始化成功!");catch(Exception e1)JOptionPane.showMessageDialog(null, "数据不能为空!");i=1;if(i!=1)cl.show(jp, "two");if(e.getSource()=jb2)cl.show

63、(jp, "main");package 仓库管理;import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import java.awt.Font;import javax.

64、swing.JTextField;import javax.swing.JButton;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;public class jiemian3 extends JFrame implements ActionListener private JPanel contentPane;private JTextField textField;private JTextField textField_1;private JTextField textField_2;priv

65、ate JTextField textField_3;jiemian jm;CardLayout cl;JPanel jp;private JButton jb1,jb2;/* * Launch the application. */* * Create the frame. */public jiemian3() setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder

66、(5, 5, 5, 5);setContentPane(contentPane);contentPane.setLayout(null);JLabel label = new JLabel("u5165u5E93u4EA7u54C1u540Du79F0uFF1A");label.setFont(new Font("黑体", Font.BOLD, 15);label.setBounds(38, 19, 127, 28);contentPane.add(label);JLabel label_1 = new JLabel("u5165u5E93u4

67、EA7u54C1u6570u91CFuFF1A");label_1.setFont(new Font("黑体", Font.BOLD, 15);label_1.setBounds(38, 57, 127, 28);contentPane.add(label_1);JLabel label_2 = new JLabel("u5165u5E93u4EA7u54C1u7F16u53F7uFF1A");label_2.setFont(new Font("黑体", Font.BOLD, 15);label_2.setBounds(38

68、, 95, 114, 28);contentPane.add(label_2);JLabel label_3 = new JLabel("u5165u5E93u4EA7u54C1u4EF7u683CuFF1A");label_3.setFont(new Font("黑体", Font.BOLD, 15);label_3.setBounds(38, 133, 114, 28);contentPane.add(label_3);textField = new JTextField();textField.setFont(new Font("黑体", Font.BOLD, 15);textField.setBounds(196, 22, 162, 21);contentPane.add(textField);textField.setColumns(10);textField_1 = new JTextField();textField_1.setFont(new Font("黑体", Font.BOLD, 15);textField_1.setColumns(10);textField_1.setBounds(196, 60, 162, 21);contentPane.add(textF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论