仓库货物管理系统[33页].docx
最新资料推荐目录1 项目介绍11.1 项目名称11.2 项目主题11.2.1 课题来源11.2.2 研究现状11.3 设计目的和意义21.3.1 可行性研究22 相关理论和技术32.1 C/S模式32.2 SQL Server 200832.3 JDK42.4 APACHE43 需求分析43.1 任务概述43.1.1 目标 43.1.2 运行环境43.2 业务流程分析53.3 数据流分析63.3.1数据编码63.3.2 数据字典63.4 功能需求分析74 概要设计85 逻辑设计96 界面设计96.1登陆界面96.2管理员界面106.3仓库管理界面116.4零件管理界面127 总结148参考文献159附录16最新精品资料整理推荐,更新于二二一年一月十九日2021年1月19日星期二20:00:131 项目介绍1.1 项目名称仓库货物管理系统1.2 项目主题1.2.1 课题来源随着计算机信息技术的不断普及与发展,计算机的信息管理系统对企事业的重要性显得越来越重要。仓库货物管理系统作为一个企业不可或缺的一部分,他的功能与发挥的作用对于企业的决策者和管理者来说都是至关重要的一部分。人们一直以来使用的传统人工管理仓库的方式,这种管理方式有着诸多缺点,如查询、录入的效率低下、保密性不好等。并且随着时间的不断推移产生的文档,数据对管理者的更新、维护带来巨大的挑战与困难。所以需要开发一个仓库货物管理系统为企业用户提供充足的信息和查询、管理手段。作为 计算机应用的一部分,使用计算机对产品仓库信息进行管理,具有人工管理无法比拟的有点,它检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等诸多有点,可以减少更多人力物力的投入。管理信息化也是企业仓库管理科学化、正规化,与世界接轨的重要条件。仓库管理涉及货物管理、盘点管理、仓库管理、入库管理、出库管理、库存管理等业务,这些业务涉及大量的数据和信息,而且对这些数据的信息的准确性、及时性都要求非常高,任何错误和遗漏都会造成公司的损失,若采用纯人工的方法进行管理有一定的难度。因此,采用计算机技术实现仓库管理是很有必要的,是提高企业管理水平的有效方法。1.2.2 研究现状现在国内外对此类系统的开发与研究也是很有实用性的,基本上能满足各类企业也的自身特点,来进行仓库方面的管理,同时,改进系统又都在不断地深入与发展,来使用更多的企业,一般都能运用于各企业的仓库管理,但是都没有针对大众的广泛应用,只能运用某个企业或单位,这还需要进一步开发与实践。我国物流的发展在整体上和发达国家相比无论是发展规模还是发展的程度都有着不小的差距。在管理方面,发达国家的仓库基本上已经电子化、无纸化,国内仓库基本上仍然是台账管理,绝大多数仓库没有信息化的系统。今后此类的软件将会向条形码仓库管理系统发展,现阶段,伴随着物流及管理信息化、网络化的发展,应用条形二维码进行仓库管理、实现仓库作业自动化,将是一个必然的发展趋势,也是需要迫切解决的一个现实问题。条形码管理在计算机信息化技术日益普及的今天有着十分重要的意义,商品贴上条形码不仅可以减少输入货物信息的时间,还可以减少人工输入造成的错误。补单可以提高作业效率,还能确保货物信息输入的正确性。另外,仓库管理需要实现信息化和可视化,将来企业仓库将不是个单纯的仓库,他将拥有一个实实在在装着货物的仓库,还拥有一个数据众多管理方便的数据仓库,对其中的货物进行编码、管理。形象的说,货架上的号码就是货物的地址,从而避免了货物的分拣和提取时的翻箱倒柜式的查找。仓库管理的信息化在高速发展的信息时代势在必行而且将给企业带来极大的帮助。1.3 设计目的和意义在这样一个信息化的时代,将计算机管理应用于仓库的日常管理已是大势所趋,它可以为企业带来意想不到的效益,同时为企业的飞速发展打好坚实的基础。采用计算机管理信息系统已成为仓库管理科学化和现代化的重要标志,它给企业管理带来了明显的经济效益和社会效益。主要体现在:可以减少输入库过程中繁琐的流程,提高仓库人员的工作效率。仓库管理系统实现自动化之后,完全有能力减少出入库管理以及库存管理中的诸多问题,不但节约开支、提高企业效率,还可以减轻工作人员的压力。仓库货物管理系统主要目的是为了实现企业仓库管理系统化、规范化和自动化,从而提高企业管理效率、增加企业收入。它完全可以用来取代原来仓库中使用人工管理的方式,并且可以避免由于人为失误造成的损失,为及时、准确、高效的完成仓库管理提供了强有力的工具和管理手段。仓库管理系统是一个中小型数据管理系统,它易上手、已操作、界面美观、安全性强。整个系统将由货物管理、出入库管理、基本资料管理、仓区管理等模块,用户通过相应的模块,对仓库里的物品的基本情况进行操作,通过简单的操作即可轻松的管理仓库。1.3.1 可行性研究 仓库管理系统是为了实现企业产品管理的系统化、规范化和自动化,从而提高企业管理效率而设计的。它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成仓库管理提供了强有力的工具和管理手段。仓库管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了仓库管理的要求。本系统的开发语言采用的是JAVA,开发环境采用的是JDK,数据库采用SQL Server 5.0,具有一般系统的数据功能,如数据查询,修改和删除等。仓库管理系统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了仓库管理计算机化。 2 相关理论和技术2.1 C/S模式C/S模式分为客户机和服务器两层,客户机具有了一定的数据存储和数据处理能力。通过将应用软件的算法和数据合理分配给客户端和服务端的方法,可以降低服务器的负载,发挥客户端的能力。本文要研究的仓库系统就适用于仓库这样用户数目不多的局域网中。C/S模式只依赖于企业内部网络的应用系统,即无论企业是否能够上网,都不影响其应用。综合考虑以上的因素,本系统最终决定采用C/S模式开发,充分发挥客户端的处理能力。2.2 SQL Server 2008SQL是英文Structured Query Language的缩写,就是人们所说的结构化查询语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。虽然许多数据库在SQL的基础上进行了改进和升级,但是包括增、删】改、查等标准的SQL命令仍然可以用来完成几乎所有的数据库操作。这个平台是可信任、高效、只能的,使得企业的仓库货物管理系统使用他时可以有很高的安全性、可靠性,并且可以降低开发管理数据基本设施的成本。2.3 JDKJDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本信息也不再延续以前的1.2,1.3,1.4,而是变成了5.0,6.0了。从6.0开始,其运行效率得到了非常大的提高,尤其是在桌面应用方面。JDK本身使用了Java语言编写,在我们下载的安装包里,有一个src.zip,里面就是JDK的源代码。版本SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。2.4 APACHEApache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。3 需求分析 3.1 任务概述 经过调查,对仓库管理的业务流程进行分析。库存的变化通常是通过入库、出库操作来进行。系统对每个入库操作均要求用户填写入库单,对每个出库操作均要求用户填写出库单。在出入库操作同时可以进行增加、删除和修改等操作。用户可以随时进行各种查询、统计、报表打印、账目核对等工作。另外,也可以用图表形式来反映查询结果。 3.1.1 目标 界面设计要求尽量友好、美观,应提供登录界面,并考虑用户权限问题; 对各种信息应提供录入、删除和查询功能; 具有对零件的基本信息进行统计的功能; 具有管理员的基本信息进行统计的功能; 具有仓库的基本信息进行统计的功能; 3.1.2 运行环境 Windows7操作系统、Microsoft SQL Server5.0数据库管理系统、Myeclipse6.0、Tomacat5.5.28、IE浏览器、JDK、JDBC3.2 业务流程分析仓库货物管理系统主要业务流程如下:销售商提出订单,仓库业务员进行审核,确认订单无误、货物数量足够出库,则通过审核,向销售商发货,修改数据库数据后完成出库流程。出库流程图如图所示。仓库业务员向供货商发出订单,供货商根据订单向仓库发货,形成发货单,经仓库管理员审核,修改数据库数据后完成入库流程。3.3 数据流分析 3.3.1数据编码为了数据流图更加易懂以及数据项、数据流便于使用,要对数据进行编码,用一个编码符合代表一条信息或一串数据。对数据进行编码可以方便地进行分类操作。以下是系统分析过程中常用的数据编码:3.3.2 数据字典数据字典是数据库的重要组成部分。它存放有数据库所用的有关信息,对用户来说是一组只读的表。下面是对数据流图中出现的部分数据流和数据项的描述,方便读者快速了解数据流组成和数据项内容。数据流 入库信息说明:即将加入仓库的货物的信息数据流来源:入库信息表数据流流向:仓库管理员数据流组成:入库编号+货物编号+数量+单价+总金额+入库时间+经办人+保管人+入库仓库+备注 出库信息数据流来源:出库信息表数据流流向:仓库管理员数据流组成:出库编号+货物编号+数量+单价+总金额+出库时间+经办人+保管人+出库仓库+备注 货物信息说明:对仓库中的缩影货物的信息的统计数据流来源:货物信息表数据流流向:仓库管理员数据流组成:货物编号+货物名称+货物型号+类型+单价+仓库编号 客户信息说明:所有客户及供应商的信息。数据流来源:客户信息表数据流流向:仓库管理员数据流组成:客户编号+客户名称+客户地址+客户电话+客户类型 仓库信息数据流来源:仓库信息表数据流流向:仓库管理员数据流组成:仓库编号+仓库名称+仓库状态+仓库管理员 库存信息数据流来源:库存表数据流流向:仓库管理员数据流组成:库存编号+仓库编号+货物编号+在库数量+预警标志位+最大在库量+最小在库量数据项货物编号数据项别名:货号说明:仓库中的货物的唯一标识类型:字符型长度:16入库编号数据项别名:无说明:货物的入库流水号类型:字符型长度:16仓库编号数据项别名:无说明:仓库的编号类型:字符型长度:16盘点单编号数据项别名:无说明:仓库盘点单的流水类型:字符型长度:163.4 功能需求分析需求分析是通过对功能的描述,说明项目系统或设计中要实现的各功能模块。不论是系统或设计的介绍,功能描述都是不可缺少的。同事对要解决的问题进行分析,弄清楚问题的要求,包括需要输入什么数据,得到什么结果,最后应该输出什么。仓库货物管理系统主要针对于日常库存信息的管理,它针对仓库日常发生的业务,主要模块为货物管理、出入库管理、仓库管理,用户通过相应的模块,对仓库里的物品的基本情况进行操作,对库存数量进行查询,用户通过简单的操作即可轻松的管理仓库。本次设计索要实现的功能主要分为出入库管理、基本资料管理、仓区管理、系统管理等功能模块来实现仓库的综合管理。本系统可以方便快捷地实现库管理中的出库入库、库存管理等操作,使企业的的仓库井井有条,更实时准确地管理仓库。出入库管理中包含出库管理、入库管理、库存管理、盘点管理。出库管理:出库管理是对系统中货物的出库管理,可以对仓库中的货物出库情况进行查看,并可以添加新的入库信息。入库管理:入库管理是对系统中货物的入库管理,可以对仓库中的货物入库情况进行查看,并可以添加新的入库信息。库存管理:在库管理是对系统中库存信息的管理,可以对仓库中的库存信息进行查看,并可以添加新的库存信息。盘点管理:盘点管理包含基本的盘点管理和盘点明细管理,可以对货物盘点信息进行查看和添加。仓区管理中包含仓库管理、仓区管理。仓库管理:仓库管理是对系统中仓库信息的管理,可以对仓库信息进行查看,并可以添加新的仓库信息。仓区管理:仓区管理是对系统中仓区信息的管理,可以对仓库中的仓区信息进行仓库,并可以添加新的仓区信息。根据对各大超市进行的调查和分析,仓库管理系统应该具有以下功能: 仓库中的货物信息的录入、修改、删除和查询。 仓库的信息的的录入、修改、删除、查询和统计。 管理者的信息的录入、修改、删除和查询。 供货商的信息的录入、修改、删除、查询和统计。 1) 功能划分 仓库管理系统主要实现以下四方面的功能: a.登陆 b. 注册 c. 查询 d. 修改 2) 功能描述 仓库管理包括登陆、注册、查询、修改四方面功能。 登陆,分为普通管理员登陆和超级管理员登陆。 查询,分为员工对系统功能分析中的各项功能进行查询,仓库查询和物品查询。 修改,主要实现添加,修改和删除。4 概要设计 集中、分块,按照结构化程序设计的要求,得到如下图所示的系统功能模块图。仓库管理系统登录注册查询修改管理员1管理员2员工查询仓库查询商品查询添加修改删除图1 功能模块图5 逻辑设计 根据数据库需求分析,本系统的数据库逻辑结构设计如下。 零件信息设计 管理员信息设计 仓库信息设计6 界面设计6.1登陆界面6.2管理员界面6.2.1 管理员信息界面6.2.2管理员信息录入6.3仓库管理界面6.3.1仓库信息界面6.3.2仓库信息录入6.4零件管理界面6.4.1零件信息界面6.4.2零件信息录入 7 总结经过两周的课程设计,仓库管理系统终于完成,在一次次的调试后,程序比较完善,并且利用数据库的相关知识,存储信息。 我们做的仓库货物管理系统可以完成完成以下功能: 1)用户的登录 2)管理员信息的录入、查询和删除 3)仓库信息的录入和查询 4)零件信息的录入和查询 在此次课程设计中,有时一个简单的错误,就要花很长时间去找。程序写法上有很多不同,有时候找到了错误,但却不知道如何去处理,因此在这个过程中,我充分利用了网络上的资源,最终这些问题都被一一解决了。JAVA语言、数据库有了更深一步的了解。本程序的最大优点是一个界面可以完成所有的信息操作,有完整的操作信息,操作简便,数据完整。 总体来说,我的作品不够完美,例如无法将数据在退出程序后仍然储存在数据库中,而且对数据的操作过于简单,仅仅局限于添加,删除,以及简单修改。最重要的是对数据的操作存在安全隐患,程序的漏洞是操作者可以修改任何人的信息。所以作品完成至今,我们心中仍然有更多的想法去实现,我们将利用更多的时间与精力去不断完善此程序。 8 参考文献(1)数据库原理及应用教程 王预主编,清华大学出版社(2)Java程序设计基础(第4版)陈国君主编,清华大学出版社(3)崔劲松. 基于VB的仓库数据库管理系统J. 菏泽学院学报,2013,S1:126-128. (4)马丽. 基于.NET的仓库管理系统设计与实现J. 科教文汇(下旬刊),2009,10:281-282. (5)曾佑新. 数据库在仓库管理中的应用J. 华东交通大学学报,1996,S1:31-33+41. 9 附录Clientimport java.awt.Container;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class Clientpublic static Login logn=new Login();public static void main(String args)logn.setTitle("仓库管理系统");logn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);logn.setSize(280,250);logn.setVisible(true);guestimport javax.swing.*;import javax.swing.*;SuppressWarnings( "unused", "serial" )public class guest extends JFramepublic static Geperson panel3=new Geperson();/public static groupinf pane4=new groupinf();public static Cangku panel5=new Cangku();/public static sportinf pane6=new sportinf(); public static Lingjian pane16=new Lingjian();/public static sportinf pane1=new sportinf(); public static JPanel contPane1=new JPanel(); public static JPanel contPane2=new JPanel(); public static JPanel contPane3=new JPanel(); public static JPanel contPane4=new JPanel(); public static JPanel contPane5=new JPanel(); public static JPanel contPane6=new JPanel(); private JTabbedPane tabp=new JTabbedPane();public guest()contPane2.add(panel3);tabp.addTab("个人信息",null,contPane2);contPane3.add(panel5);tabp.addTab("仓库信息",null,contPane3);contPane4.add(pane16);tabp.addTab("零件信息",null,contPane4);add(tabp);manageimport javax.swing.*;import javax.swing.event.*;import javax.swing.table.DefaultTableModel;import java.awt.*;import static net.mindview.until.SwingConsole.*;import javax.swing.table.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;SuppressWarnings( "unused", "serial" )public class manage extends JFramepublic static Geperson pane3=new Geperson();public static Gepersoninf pane4=new Gepersoninf();public static Cangku pane5=new Cangku();public static Cangkuinf pane6=new Cangkuinf(); public static Lingjian pane11=new Lingjian();public static Lingjianinf pane12=new Lingjianinf(); public static JPanel contPanel1=new JPanel(); public static JPanel contPanel2=new JPanel(); public static JPanel contPanel3=new JPanel(); public static JPanel contPanel4=new JPanel(); public static JPanel contPanel5=new JPanel(); public static JPanel contPanel6=new JPanel(); private JTabbedPane tabp=new JTabbedPane();public manage()setTitle("仓库管理系统");contPanel2.add(pane3);/pane3的对象是geperson类tabp.addTab("管理员信息",null,contPanel2);/contPanel3.add(pane5);/pane5的对象是Cangku类tabp.addTab("仓库信息",null,contPanel3);contPanel6.add(pane11);/pane11的对象是lingjian类tabp.addTab("零件信息",null,contPanel6);add(tabp);Loginimport javax.swing.*;import static net.mindview.until.SwingConsole.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class Login extends JFrameprivate static final long serialVersionUID = 1L;private JLabel usr=new JLabel("用户名:");private JTextField usrnm=new JTextField(10);private JLabel pwd=new JLabel("密 码:");private JPasswordField pswd=new JPasswordField(10);private JButton login=new JButton("登录");private ActionListener b1=new ActionListener()SuppressWarnings("deprecation")public void actionPerformed(ActionEvent e) /*if(usrnm.getText().equals("guest")&&pswd.getText().equals("123") JOptionPane.showMessageDialog(null, "仓库管理系统","提示",JOptionPane.INFORMATION_MESSAGE); run(new guest(),600,400,"仓库管理"); Client.logn.setVisible(false); */ if(usrnm.getText().equals("gsj")&&pswd.getText().equals("123456") JOptionPane.showMessageDialog(null, "仓库管理系统","提示",JOptionPane.INFORMATION_MESSAGE); run(new manage(),750,620,"仓库管理系统"); Client.logn.setVisible(false); else JOptionPane.showMessageDialog(null, "用户名或密码错误","提示",JOptionPane.WARNING_MESSAGE); ;public Login()setLayout(null);usr.setBounds(40,20,60,20);usrnm.setBounds(100,20,100,20);pwd.setBounds(40,60,60,20);pswd.setBounds(100,60,100,20);login.setBounds(100,100,60,20);login.addActionListener(b1);add(usr);add(usrnm);add(pwd);add(pswd);add(login);Cangkuimport java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.table.DefaultTableModel;SuppressWarnings("serial")public class Cangku extends JPanelprivate JLabel shc=new JLabel("查询仓库");private JButton sch=new JButton("查询"),adds=new JButton("录入");private JTextField cdtn=new JTextField(10);private String heads="仓库编号","仓库名称","所在地","管理员姓名","联系电话"private String descripton="所有内容","管理员姓名","仓库名称"private JComboBox schcdn=new JComboBox(descripton); private DefaultTableModel model = new DefaultTableModel(null,heads); private JTable table = new JTable(model); JScrollPane scrollpane =new JScrollPane(table);private ActionListener b3=new ActionListener()public void actionPerformed(ActionEvent e)String query = null;while(model.getRowCount()!=0)model.removeRow(0);tryint condition=schcdn.getSelectedIndex();if(condition=0) query="SELECT * FROM cangku" ;if(condition=1)query="SELECT * FROM cangku WHERE id='"+cdtn.getText()+"'" ;if(condition=2)query="SELECT * FROM cangku WHERE uname='"+cdtn.getText()+"'" ;SqlFunction sel=new SqlFunction();ResultSet relt=sel.ExecuteQuery(query);while(relt.next()model.addRow(new Objectrelt.getString("id"),relt.getString("uname"),relt.getString("address"),relt.getString("pname"),relt.getString("phone") );/model.addRow(new Objectrelt.getString("1"),relt.getString("2"),relt.getString("3") ,relt.getString("4") ); catch(Exception f) f.printStackTrace(); ;private ActionListener b2=new ActionListener()public void actionPerformed(ActionEvent e)manage.contPanel3.add(manage.pane6);manage.contPanel3.add(manage.pane5); manage.contPanel3.revalidate(); manage.contPanel3.repaint(); ;public Cangku()setPreferredSize(new Dimension(550,450);setLayout(new FlowLayout();sch.addActionListener(b3);adds.addActionListener(b2); add(shc);add(schcdn);add(cdtn);add(sch);add(adds);add(scrollpane);SuppressWarnings("serial")clas