




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle课程设计 实验题目:仓库管理系统 专 业: 计算机应用与技术 班 级: 1440302 学 号:20110030226 姓 名: 胡强 指导教师: 王 芳一、系统描述仓库管理系统的功能:1) 、产品入仓管理:在货物送到仓库时,对货物信息进行了解并将相关信息输入到数据库中,同时更新数据库。2)、产品出仓管理:在货物运出仓库时,进行货物信息统计并将数据保存到数据库中,同时更新数据库。3) 仓库货物信息提醒:当货物少于某一规定的值时,或者货物保质期将至时将发出提醒。4) 、借出管理:凭借条借出,然后能够还库。5)、查询修改:管理员可以进行一系列查询:查询货物类别及货物的信息、数量和货物流动的规则(对货物出仓进仓的要求);并可以对以上查询进行修改;可以查询某一天货物流动的信息,以及出仓及入仓的详细信息。6)、初始化库存设置:设置库存的初始化值,库存的上下警戒限制。7)、盘库情况:反映没有、年的库存情况;二、系统需求分析利用用例图、类图、E-R图对系统进行需求分析。仓库管理系统可以实现对仓库货物信息、出仓货物管理、进仓货物管理、货物数量管理以及货物出入仓限制规则,以下为其用例图、类图及E-R图。仓库管理系统用例图类图表1:产品信息表PRO字段名数据类型长度约束说明PROIDNUMBER11主码产品编号PRONAMEVARCHAR220NOT NULL产品名称PRODRESSVARCHAR250产品地址DREPHONENUMBER20产品地址号码BDATENUMBER5NOT NULL保质天数DEMOVARCHAR2100说明表2:产品信息管理PRO_MAN字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号BIRDATEDATE主码产品生产日期ZNUMNUMBER20NOT NULL产品数量DEMOVARCHAR2100说明表3:产品出库管理C_PRO字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号CDATEDATE主码出库日期BIRDATEDATENOT NULL生产日期ZNUMNUMBER10NOT NULL出库数量DEMOVARCHAR2100说明表4:产品入库日期R_PRO字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号RDATEDATE主码入库日期BIRDATEDATENOT NULL生产日期RNUMNUMBER10NOT NULL入库数量DEMOVARCHAR2100说明表5:产品仓库限制规则字段名数据类型长度约束说明PROIDNUMBER11主码,外码产品编号BIRDATEDATE主码产品生产日期ZNUMNUMBER20NOT NULL产品数量DEMOVARCHAR2100说明表6:管理员表ADMIN字段名数据类型长度约束说明IDNUMBER11主码管理员编号USARNAMEVARCHAR210NOT NULL管理员账号PASSORDVARCHAR211NOT NULL账号密码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:CREATETABLEUSERS.PRO(PROIDNUMBER(11)NOTNULL,PRONAMEVARCHAR2(20)NOTNULL,PRODRESSVARCHAR2(50),DREPHONENUMBER(20),BDATENUMBER(5)NOTNULL,DEMOVARCHAR2(100), PRIMARYKEY(PROID)VALIDATE)TABLESPACEUSERS(2)仓库产品管理PRO_MANCREATETABLEUSERS.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)TABLESPACEUSERS(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,FOREIGNKEY(PROID)REFERENCESSYS.PRO(PROID) VALIDATE)TABLESPACEUSERS(6)管理员表ADMINCREATETABLEUSERS.ADMIN(IDNUMBER(11) NOT NULL,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,RNUMFROMPRO,(SELECTC_PRO.PROIDAS CPROID,R_PRO.PROID AS RPROID,RDATE,CDATE,C_PRO.BIRDATE AS CBIRDATE,R_PRO.BIRDATE AS RBIRDATE,CNUM,RNUM FROM C_PRO FULL JOINR_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,ZNUMFROMPRO,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;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=0THENRETURNV_SNUM;ENDIF;END;(2)计算距保质期时间:CREATEORREPLACEPROCEDUREPRO_B(V_PROIDNUMBER)ASV_DAYSNUMBER;V_LBIRDATENUMBER;CURSORC_BIRDATEISSELECTBIRDATE FROMPRO_MANWHEREPROID=V_PROID;BEGINSELECTLBIRDATEINTOV_LBIRDATEFROMPRO_LIMWHEREPROID=V_PROID;FORV_BIRDATEINC_BIRDATELOOPIFV_DAYS:=(SYSDATE-V_BIRDATE)=V_LBIRDATETHENDBMS_OUTPUT.PUTLINE(V_DAYS);ENDIF;ENDLOOP;END;(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_MAN WHEREPRO_MAN.PROID=R_PRO.PROIDANDPRO_MAN.BIRDATE=R_PRO.BIRDATE)A_RWHEREPROID=V_PROIDANDA_R.RBIRDATE=V_BIRDATE; RETURNV_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.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.setVisible(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(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.swing.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 chushi,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 jb2;/* * 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);contentPane.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);contentPane.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.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(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(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().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.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(jp, main);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.swing.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 chushi,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 jb2;/* * 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);contentPane.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);contentPane.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.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(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(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().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.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(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.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;private 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(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(u5165u5E93u4EA7u54C1u6570u91CFuFF1A);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, 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(textField_1);textField_2 = new JTextField();textField_2.setFont(new Font(黑体, Font.BOLD, 15);textField_2.setColumns(10);textField_2.setBounds(196, 98, 162, 21);contentPane.add(textField_2);textField_3 = new JTextField();textField_3.setFont(new Font(黑体, Font.BOLD, 15);textField_3.setColumns(10);textField_3.setBounds(196, 136, 162, 21);contentPane.add(textField_3); jb1 = new JButton(u5165u5E93);jb1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) );jb1.setFont(new Font(黑体, Font.BOLD, 15);jb1.setBounds(72, 179, 111, 34);contentPane.add(jb1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 协议合同找谁做
- 歌手合作协议书合同模板
- 城镇购房合同解除协议书
- 供油合同协议范本
- 缴纳保险协议合同
- 定制木门合同协议
- 集资购车协议合同
- 人合作协议书合同范本
- 电梯补充合同协议
- sla服务协议合同
- 施工升降机垂直度沉降观测记录表
- GA/T 1323-2016基于荧光聚合物传感技术的痕量炸药探测仪通用技术要求
- 跨太平洋伙伴关系协议(TPP)
- 流浪动物救助中心犬粮公开招投标书范本
- 初中数学人教九年级上册第二十一章 一元二次方程 解一元二次方程-配方法PPT
- 《气象灾害预警信号》课件
- 矿井维修电工技能鉴定考试题(高级工)
- 高中语文《祝福》“谁是凶手”系列之祥林嫂死亡事件《祝福》探究式学习(教学课件) 课件
- 电子商务税收法律问题
- 水平泵房水泵联合试运转方案及安全技术措施
- 中国政法大学社会主义市场经济概论重点归纳及复习试题(杨干忠版)
评论
0/150
提交评论