1、数据库系统设计仓库设计概述 数 据 库 设 计课程设计题目:海天酒店管理系统课程名称 数据库设计课程设计 班级与班级代码 13级电子商务2班 专 业 电子商务 任课教师: 胡建军 提交日期: 年 5 月 3 日 广东财经大学教务处 制 评语:完成基本设计任务格式正确,内容完整设计科学,功能丰富代码简洁,算法清晰,可读性强无抄袭且体会深刻注:对号:正确、完整、详细、合理 半对号:部分正确、不完整、不详细、基本合理 错号:错误、缺失、较差 抄袭一票否决小组成员名单: (第一名默认为组长)姓名学 号工作量百分比分数许志伟30黄洋30李思婷20林嘉辉20 指导教师(签名) 胡建军 一、 系统功能概述目
2、录系统功能概述 1项目背景1研究目的2软件定义3需求分析4问题陈述4功能需求5非功能需求6系统功能图7业务流程图8数据字典9数据库概念设计10实体10E-R图11CDM图12数据库逻辑设计13131415小组总结16二、 系统功能概述1.项目背景三、 企业的仓库物资管理往往是很复杂、很繁琐的。由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的仓库管理必须编制一套仓库管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。四、 传统的商品由进货到发货,要经过若干环节,由于物品繁多,规格型号的标识繁多,加之业务人
3、员素质的因素,易造成仓库供应效率低下,影响生产;由于库房与五、 管理部门之间存在信息难以交流。供应业务员、仓库保管员、计划员和有关领导相互之间信息流通困难,使得仓库供应效率低下,造成库存积压。使库存储备很大,影响资金周转。另外,使得仓库的管理数据的汇总,以及信息的传递困难;手抄的,手工作业容易造成失误同时每月向上级单位所报报表需耗费相当大的人力资源进行大量数据计算,这将影响数据的准确率和效率,从而造成不必要的损失和浪费六、 根据当前的企业管理体制,一般的仓库管理系统,总是根据所掌握的物资类别,相应分成几个科室来进行物资的计划,订货,核销托收,验收入库,根据企业各个部门的需求来发送物资设备,并随
4、时按期进行仓库盘点。仓库的仓库管理是整个物资供应管理系统的核心。因此有必要开发一套独立的仓库管理系统来提高企业工作效率,而所使用的这套仓库管理系统是企业生产经营管理活动中的核心,此系统必须能够用来控制合理的仓库费用、适时适量的仓库数量,使企业生产活动效率最大化。经过对这些情况的仔细调查,我团队开发了下面的仓库管理系统。七、2.研究目的八、 大多数仓库管理理论认为,库存是物理上和逻辑上库房库位的所有有形和无形物料极其价值的总和,具体包括成品、原材料、在制品、在途品、生产前物料、备品备件等。虽然持有一些库存是必要的,过量的库存却非但没有用处而且占用了资金。占用的资金对于公司发展、新产品开发等都是非
5、常需要的;减少资金占用还能够大大减少来自银行贷款的利息和风险。对那些采购量特别大、采购件市场价格有波动的物料仓库,加强库存管理效果更为明显。九、 仓库管理的主要目标就是经过对仓库所有入出库活动的管理和控制及对仓库数据有效的统计和分析。以保证企业生产中畅通的物流,使决策人员及早发现问题,采取相应措施,调整仓库结构,缩短储备周期,最大限度地降低仓库占用,同时,经过周期性的仓库盘点,及时补救管理中的漏洞,使仓库管理系统实时地反映企业中各个仓库的现时情况,为各类管理人员从不同侧面提供所需信息,以便协调企业经营收到更大效益,仓库管理系统是协调企业生产经营的基础,其数据的准确性、方便的查询、有效的分析是整
6、个计算机管理系统顺利运行的关键。十、3.软件定义使用了mysql 和jde二、需求分析1问题陈述仓库管理是企业生产活动中一个不可或缺的环节,随着时代的进步和信息技术的飞速发展,现代化、科学化的管理方式成为企业在激烈的市场竞争中立足的必然要求,仓库管理的全面信息化、自动化则是其中极其重要的部分。基于以上需求背景,我们针对海润钢厂的仓库管理设计开发本仓库管理系统,以求提高仓库管理效率、减轻劳动强度、提高信息处理的速度和准确性,同时为企业高层和仓库管理人员提供一套方便科学的工作系统,从而实现对仓库的有效管理,使之形成完善的管理体系。2.功能需求(1)系统管理系统管理主要为系统管理员提供对整个系统的某
7、些操作,包括对管理权限的管理,系统配置,查看系统事件,数据库的恢复、备份等。(2)查询管理查询管理为用户提供商品入库、商品出库、商品订单等信息的查询功能。用户可选择根据时段、单位名称或商品编号进行相关查询。(3) 入库管理入库管理模块由管理员对仓库进行入库信息的操作,管理人员经过该功能模块把每天的入库商品明细输入数据库并对商品信息进行修改和删除。该模块支持按货物编号和货物名称、所有货物等关键字查询货物编号、仓库编号、货物名称、类型名称、货物存储量。(4) 出库管理出库管理模块与入货管理模块相似,主要是对货物出库信息进行管理。管理员经过该功能模块对出库商品进行出库操作。(5) 库存管理库存管理模
8、块主要是对库存商品进行操作,包括对商品的仓库信息进行修改、对仓库中的物资设备实时监控和报警。另外,能够按货物编号和货物名称、所有货物对所有货物进行盘点。3.非功能需求(1) 登录认证本系统的登录管理分为管理员和客户登录,管理员和客户有不同的权限。另外,用户可根据自身需要修改新密码。(2)用户管理用户管理面向系统管理人员,其功能包括为初始用户分配用户名和密码、添加新用户、删除用户、用户权限划分。4. 系统功能图5.业务流程图6数据字典采购商数据字典数据项名别名数据项类型字段长度数据项含义说明与其它项逻辑关系编号Bnum整型10采购商编号名称Bnam字符型50采购商名称名称依赖于编号电话Bcal整
9、型15采购商电话电话依赖于编号地址Badd字符型50采购商地址地址依赖于编号备注Beizhu字符型100关于采购商的补充信息备注信息依赖于编号供应商数据字典数据项名别名数据项类型字段长度数据项含义说明与其它项逻辑关系编号Snum整型10供应商编号名称Snam字符型50供应商名称名称依赖于编号电话Scal整型15供应商电话电话依赖于编号地址Sadd字符型50供应商地址地址依赖于编号备注Beiz字符型100关于供应商的补充信息备注依赖于编号产品数据字典数据项名别名数据项类型字段长度数据项含义说明与其它项逻辑关系编号Gnum整型10产品编号名称Gnam字符型20产品名称名称依赖于产品编号类型Gtpe
10、字符型5产品类型类型依赖于产品编号供应商编号Snum整型10产品供应商类型供应商编号依赖于产品编号产品单价price整型10产品单价单价依赖于产品编号管理员数据字典数据项名别名数据项类型字段长度数据项含义说明与其它项逻辑关系账号Username字符型20管理员账号密码Password整型20管理员登录密码密码依赖于员工账号产品入库数据字典数据项名别名数据项类型字段长度数据项含义说明与其它项逻辑关系入货表号Imputnumber整型10入货表唯一编号仓库编号Whou整型10入库仓库编号仓库编号依赖于入货表号产品编号Gnum整型10入库产品编号产品编号依赖于入货表号产品数量BAmou整型10入库产
11、品数量产品数量依赖于入货表号产品类型Gtpe字符型5入库产品类型产品类型依赖于入货表号入库时间ItimeDate入库时间入库时间依赖于入货表号供应商编号Snum整型10入库产品供应商编号供应商编号依赖于入货表号产品出库数据字典数据项名别名数据项类型字段长度数据项含义说明与其它项逻辑关系出货表号Outputnumber整型10出货表唯一编号仓库编号Whou整型10出库仓库编号仓库编号依赖于出货表号产品编号Gnum整型10出库产品编号产品编号依赖于出货表号产品数量SAmou整型10出库产品数量产品数量依赖于出货表号产品类型Gtpe字符型5出库产品类型产品类型依赖于出货表号出库时间OtimeDate
12、出库时间出库时间依赖于出货表号采购商编号Bnum整型10出库产品对应采购商编号采购商编号依赖于出货表号产品库存数据字典数据项名别名数据项类型字段长度数据项含义说明与其它项逻辑关系更新时间UpdatetimeDate库存更新时间仓库编号Whou整型7存放仓库编号仓库编号依赖于更新时间产品编号Gnum整型10该产品编号产品编号依赖于更新时间产品单价price整型10产品单价产品单价依赖于更新时间产品数量Kucunshuliang整型10该产品数量产品数量依赖于更新时间仓库数据字典数据项名别名数据项类型字段长度数据项含义说明与其它项逻辑关系编号Whou整型10仓库编号容量Tcap整型10仓库容量仓库
13、容量依赖于仓库编号剩余容量Scap整型10仓库剩余容量剩余容量依赖于仓库编号三、 数据库概念设计1. 实体(1) 据分析,仓库管理系统包括以下实体:库存:以时间为单位,统合全部仓库全部产品的库存状态,记录哪些仓库存放了哪些产品、产品的状态等;属性有更新时间、仓库编号、产品编号、产品单价、库存数量;入货表:供应商向仓库存入商品时产生;属性有入货表号、仓库编号、产品编号、产品类型、入库产品数量、供应商编号、入库时间;供应商:记录产品的来源,把产品存放入库存的单位,称为供应商,主要指企业内部将产品存放入仓库的部门;属性有供应商编号、供应商名称、联系电话、联系地址、备注;产品:仓库中存放的实体;每个产
14、品有独立的编号;属性有产品编号、产品名称、产品类型、供应商编号、产品单价;出货表:当产品出库时,记录产品出库信息,企业内部其它部门取出产品时;属性有出货表号、产品编号、仓库编号、采购商编号、出库产品数量、出库时间;仓库:记录仓库的资料和存储状态;属性有仓库编号、总容量、剩余容量;采购商:负责记录产品的来源,把产品存放入库存的单位,称为供应商;此处主要指企业内部将产品存放入仓库的部门,如:当产品来自企业外部时,”采购商”则记为本企业的采购部;属性有采购商编号、采购商名称、联系电话、联系地址、备注;操作员:负责管理库存状态;属性有员工编号、密码、姓名、职位。2. E-R图根据上述分析,E-R图如图
15、所示:图1-1仓库管理系统E-R图其中,”库存”实体的属性如下:图1-2库存及其属性3. CDM图根据各实体及其属性,有实体模型如下:图2-1库存及其属性图2-2入货表及其属性图2-3供应商及其属性图2-4产品及其属性图2-5出货表及其属性图2-6仓库及其属性图2-7采购商及其属性图2-8操作员及其属性根据上述模型,整理得CDM图如下:图2-9仓库管理系统CDM图四、数据库逻辑设计表名称:supplier 表类型 实体型 含义 供应商字段名称字段类型Null含义示例数据Snum整型否供应商编号 主键Snam字符供应商名字 Scal字符供应商电话Sadd字符供应商地址字段名称字段类型Null含义
16、示例数据Snum整型否 自增供应商编号 主键Snam字符供应商名字 Scal字符供应商电话Sadd字符供应商地址Beiz字符备注表名称:supply 表类型 关系型 含义 供应字段名称字段类型Null含义示例数据Snum整型否 供应商编号 主键Gnum整型否 产品编号 主键表名称:goods 表类型 实体型 含义 产品字段名称字段类型Null含义示例数据Gnum整型否 自增产品编号 主键Gnam字符型产品名称Gtpe字符型产品类型普钢、特钢Snum整型供应商编号 price整型产品单价表名称:in 表类型 关系型 含义 入库字段名称字段类型Null含义示例数据UpdatetimeDatetim
17、e否 库存更新时间 主键Imputnumber整型否 入货表号 主键Gnum整型否 产品编号 主键表名称:imput 表类型 实体型 含义 入库表字段名称字段类型Null含义示例数据Imputnumber整型否 自增入货表号 主键Snum整型供应商编号 外键Gnum整型产品编号 外键Whou整型仓库编号 外键15Gtpe字符型产品类型普钢、特钢ItimeDatetime入库日期BAmou整型入库数量表名称;kucun 表类型 实体型 含义 库存字段名称字段类型Null含义示例数据UpdatetimeDatetime否 库存更新时间 主键Gnum整型产品编号 Kucunshuliang整型库存数
18、量Whou整型仓库编号 表名称: cunfang 表类型 关系型 含义 存放字段名称字段类型Null含义示例数据UpdatetimeDatetime否 库存更新时间 主键Whou整型否仓库编号 主键15表名称:warehouse 表类型 实体型 含义 仓库字段名称字段类型Null含义示例数据Whou整型否 自增仓库编号 主键15Tcap整型总容量Scap整型剩余容量表名称:output 表类型 实体型 含义 出库表字段名称字段类型Null含义示例数据Outputnumber整型否 自增出库表号 主键Gnum整型产品编号 Whou整型仓库编号15Gtpe字符型产品类型普钢、特钢OtimeDate
19、time出库时间SAmou整型出库数量Bnum整型采购商编号表名称:out 表类型 关系型 含义 出库字段名称字段类型Null含义示例数据Outputnumber整型否 出库表号 主键UpdatetimeDatetime否 库存更新时间 主键Bnum整型否 采购商编号主键表名称:buyer 表类型 实体型 含义 采购商字段名称字段类型Null含义示例数据Bnum整型否 自增采购商编号 主键Bnam字符采购商名字 Bcal字符采购商电话Badd字符采购商地址Beizhu字符备注表名称:user 表类型 实体型 含义 用户字段名称字段类型Null含义示例数据Username字符否账号 主键Pass
20、word整型密码五 物理设计软件:Navicat for mysql用户表表名称:user 表类型 实体型 含义 用户字段名称字段类型Null含义示例数据Username字符否账号 主键Password整型密码产品表表名称:goods 表类型 实体型 含义 产品字段名称字段类型Null含义示例数据Gnum整型否 自增产品编号 主键Gnam字符型产品名称Gtpe字符型产品类型普钢、特钢Snum整型供应商编号 price整型产品单价供应商表字段名称字段类型Null含义示例数据Snum整型否 自增供应商编号 主键Snam字符供应商名字 Scal字符供应商电话Sadd字符供应商地址表名称:suppli
21、er 表类型 实体型 含义 供应商字段名称字段类型Null含义示例数据Snum整型否供应商编号 主键Snam字符供应商名字 Scal字符供应商电话Sadd字符供应商地址字段名称字段类型Null含义示例数据Snum整型否 自增供应商编号 主键Snam字符供应商名字 Scal字符供应商电话Sadd字符供应商地址Beiz字符备注入库单表表名称:imput 表类型 实体型 含义 入库表字段名称字段类型Null含义示例数据Imputnumber整型否 自增入货表号 主键Snum整型供应商编号 外键Gnum整型产品编号 外键Whou整型仓库编号 外键15Gtpe字符型产品类型普钢、特钢ItimeDatet
22、ime入库日期BAmou整型入库数量库存表表名称;kucun 表类型 实体型 含义 库存字段名称字段类型Null含义示例数据UpdatetimeDatetime否 库存更新时间 主键Gnum整型产品编号 Kucunshuliang整型库存数量Whou整型仓库编号 出库单表表名称:output 表类型 实体型 含义 出库表字段名称字段类型Null含义示例数据Outputnumber整型否 自增出库表号 主键Gnum整型产品编号 Whou整型仓库编号15Gtpe字符型产品类型普钢、特钢OtimeDatetime出库时间SAmou整型出库数量Bnum整型采购商编号仓库表表名称:warehouse 表
23、类型 实体型 含义 仓库字段名称字段类型Null含义示例数据Whou整型否 自增仓库编号 主键15Tcap整型总容量Scap整型剩余容量采购商表表名称:buyer 表类型 实体型 含义 采购商字段名称字段类型Null含义示例数据Bnum整型否 自增采购商编号 主键Bnam字符采购商名字 Bcal字符采购商电话Badd字符采购商地址六、 程序设计测试:代码:package ui;import java.awt.*;import ui.cangku;import java.awt.event.*;import java.sql.*;public class denglu /定义类变量TextFie
24、ld tf1,tf2;Button btn1,btn2;Label l1,l2;Frame frame1;static String use,pass;/构造方法 创立图形界面public denglu()frame1 = new Frame(仓库系统登录);frame1.setSize(400,150);Panel panel =new Panel();panel.setBounds(50,50,250,100);l1=new Label(用户名:,Label.LEFT);tf1 =new TextField(20);l2=new Label(密 码:,Label.LEFT);tf2 =ne
25、w TextField(20); btn1 =new Button(登录);btn2 =new Button(退出);frame1.setLayout(null);frame1.add(panel);panel.add(l1);panel.add(tf1);panel.add(l2);panel.add(tf2);panel.add(btn1);panel.add(btn2);frame1.setVisible(true);/数据库连接tryClass.forName(com.mysql.jdbc.Driver);String url=jdbc:mysql:/localhost:3306/ca
26、ngku;Connection con=DriverManager.getConnection(url,root1,123456);String sql=select * from denglu;Statement st=con.createStatement();ResultSet rs = st.executeQuery(sql);while(rs.next()use = rs.getString(1);pass = rs.getString(2);st.close();rs.close();catch(Exception e)System.out.println(错误信息:+e.toSt
27、ring();/事件设置btn1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String u=tf1.getText();String p=tf2.getText();if(u.equals(use)&p.equals(pass)frame1.setVisible(false);cangku ck1=new cangku(););btn2.addActionListener(new ActionListener()public void actionPerformed(Acti
28、onEvent e)System.exit(0););public static void main(String args) denglu dl=new denglu();package ui;import ui.mima;import ui.ruku;import ui.chuku;import java.awt.*;import java.awt.Event;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java
29、.awt.event.WindowListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class cangku Button btn1,btn2,btn3,btn4,b5,b6;Label l1,l5;TextArea ta;Panel p1,p2;int whou,tc,sc;Frame frame;public cangku()/组件l1=new Label(仓库状态:,Label.CENTER
30、);l5=new Label(仓库即将爆满,Label.CENTER);ta=new TextArea(,100,50,TextArea.SCROLLBARS_VERTICAL_ONLY);b5=new Button(产品登记);b6=new Button(供应商登记);btn1=new Button(入库);btn2=new Button(出库);btn3=new Button(库存);btn4=new Button(密码);p1=new Panel();p1.setBounds(40,80,600,500);p2=new Panel();p2.setBounds(40,100,150,60
31、0);p2.add(btn1);p2.add(btn2);p2.add(btn3);p2.add(btn4);/数据库连接tryClass.forName(com.mysql.jdbc.Driver);String url=jdbc:mysql:/localhost:3306/cangku;Connection con=DriverManager.getConnection(url,root1,123456);String sql=select * from ck;Statement st=con.createStatement();ResultSet rs = st.executeQuery
32、(sql);while(rs.next()whou = rs.getInt(1);tc = rs.getInt(2);sc = rs.getInt(3);ta.append(仓库编号:+whou+总容量:+tc+剩余容量:+sc+n);st.close();rs.close();catch(Exception e)System.out.println(错误信息:+e.toString();/组件p1.add(ta); frame = new Frame(仓库及其管理);frame.setVisible(true);frame.setSize(700,600);frame.setLayout(n
33、ew BorderLayout();frame.add(p1,BorderLayout.CENTER);frame.add(p2,BorderLayout.NORTH);frame.add(l1,BorderLayout.WEST);frame.add(l5,BorderLayout.EAST);/事件frame.addWindowListener(new WindowListener()public void windowClosing(WindowEvent frame)frame.getWindow().setVisible(false);(Frame)frame.getComponen
34、t().dispose();System.exit(0);Overridepublic void windowActivated(WindowEvent arg0) / TODO Auto-generated method stubOverridepublic void windowClosed(WindowEvent arg0) / TODO Auto-generated method stubOverridepublic void windowDeactivated(WindowEvent arg0) / TODO Auto-generated method stubOverridepub
35、lic void windowDeiconified(WindowEvent arg0) / TODO Auto-generated method stubOverridepublic void windowIconified(WindowEvent arg0) / TODO Auto-generated method stubOverridepublic void windowOpened(WindowEvent arg0) / TODO Auto-generated method stub);/产品信息登记/供应商信息登记b6.addActionListener(new ActionLis
36、tener()public void actionPerformed(ActionEvent e)frame.setVisible(false);supplier sr=new supplier(););/入库btn1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)frame.setVisible(false);ruku rk =new ruku(););/出库btn2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)frame.setVisible(false);chuku ck2=new chuku();