软件工程毕业设计-企业成品库存管理的设计与实现(后台).doc

上传人:沧海****B 文档编号:91493464 上传时间:2023-05-27 格式:DOC 页数:21 大小:678.04KB
返回 下载 相关 举报
软件工程毕业设计-企业成品库存管理的设计与实现(后台).doc_第1页
第1页 / 共21页
软件工程毕业设计-企业成品库存管理的设计与实现(后台).doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《软件工程毕业设计-企业成品库存管理的设计与实现(后台).doc》由会员分享,可在线阅读,更多相关《软件工程毕业设计-企业成品库存管理的设计与实现(后台).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、河北农业大学本科毕业论文(设计)题 目: 企业成品库存管理的设计与实现(后台) 摘要人们一直以来使用传统人工的方式管理仓库中的各种物资设备,这种管理方式存在着许多缺点,如:效率低等,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。所以对于企业的决策者和管理者来说一个库存管理系统是至关重要的。本系统开发主要是采用浏览器/服务器(B/S)模式,包括后台数据库的建立、维护以及前端应用程序的开发两个方面。本系统在采用MyEclipse开发工具的基础上,运用My Sql数据库系统和面向对象Java开发技术实现的。本系统具有完善的数据处理功能,方便快捷的浏览界面、易于操作的

2、功能模块,并能够准确反映各种情况及信息,为管理人员提供准确的数据,基本满足了企业库存管理的要求。本文简要介绍了库存管理系统的项目开发背景和意义,着重阐述了该系统开发实现过程,从系统的需求分析、方案设计、模块设计、数据设计、详细设计等各个环节都进行了详尽的分析和描述。 关键词:库存管理,MyEclipse,MySQL,JAVAAbstractPeople have been using a variety of materials and equipment, the traditional manual management of warehouse, this management way

3、has many shortcomings, such as: low efficiency, another time a long, will produce the massive documents and the data, this regarding the search, the renewal and the maintenance has all brought many difficulties. So for business decision-makers and managers is an inventory management system is very i

4、mportant.The system is mainly used to develop the browser / server (B/S) mode, includes the backstage database the establishment, maintenance and front-end application development two aspects. The system based on the MyEclipse development tools, implementation of object oriented technology and Java

5、development by My Sql database system. This system has improved the data processing function, convenient browsing interface, function module is easy to operate, and can accurately reflect the situation and information, provide accurate data for the management personnel, to meet the basic requirement

6、s of the enterprise inventory management.This paper briefly introduces the inventory management system project background and significance, and emphatically expounds the system development process, different from the system of needs analysis, program design, module design, data design, detailed desi

7、gn and other aspects of a detailed analysis and description.Keywords:inventory management,MyEclipse,MySQL,JAVA目录1 绪论11.1背景和意义11.2本文的工作12. 系统分析12.1 需求分析12.2 系统功能22.2.1 系统功能描述22.2.2 系统业务流程图22.2.3 系统的角色定义32.3 技术介绍32.3.1 JSP技术简介32.3.2 Servlet技术简介42.3.3 MVC简介43.系统设计43.1 数据库需求设计43.1.1 数据库需求分析43.1.2 数据库逻辑设

8、计53.2 开发工具及运行环境74.系统实现74.1 模块设计74.2 主要包结构74.3 主要页面截图及功能实现74.3.1 登录界面74.3.2 订单管理界面84.3.3 出入库管理界面114.3.4 系统基础数据管理界面135总结16参 考 文 献17致 谢171. 绪论1.1背景和意义库存管理系统是现代企业进行货物管理和处理的业务操作系统。它可以实现本地一个或几个仓库的精细化管理,它可以对货物存储和出货等进行动态安排,可以对仓储作业流程的全过程进行电子化操作;可以与客服中心建立数据接口使客户通过互联网实现远程货物管理,可以与企业的ERP系统实现无缝连接。在现代企业中,仓库管理是一项繁琐

9、复杂的工作,每天要处理大量的单据数据。为及时结清每笔业务,盘点库存和货物流动情况,保证企业生产用料以及货物安全,库管人员要花费大量人力物力和时间来作数据记录统计工作。众所周知,仓库管理是一种既麻烦又单调的工作,每天都是重复记录一些货物的存入与取出,而且货物的种类数量繁多,存取有很大的随机性,这样为工作人员带来了很大的不便,在操作过程中,由于人为的计算出错率很高,一旦出错改正也很困难,这样简单繁重的工作要很多人来做,为经营者增加了很多成本。所以开发一个可行的库存管理系统是十分必要的。1.2本文的工作 本系统以MySQL作为后台数据库,以java语言来开发的,不仅实现了企业库存管理的自动化,同时也

10、提高了工作效率。本系统由以下几个模块组成:基本信息管理、入库管理、出库管理、用户管理。2. 系统分析2.1需求分析 本系统是为物流管理而设计的高效管理系统,系统功能强大,同时操作又比较简单,而管理人员大多受到过系统的培训,并能够操作电脑,所以只要花很少的时间,就能够让他们熟悉本系统。系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。2.2系统功能2.2.1系统功能描述本库存管理系统需要完成功能主要有: 订单管理,包括订单的录入,查询,更改,删除,订单明细的编辑等 入库管理,包括入库单的录入,查询,更改,删除,入库明细的编辑以及入库操作等

11、出库管理,包括出库单的录入,查询,更改,删除,出库明细的编辑以及出库操作等 仓库管理,包括仓库信息的查询,初始化和整理等操作 基本数据管理,包括对系统用户的基本信息和产品信息的操作,包含对用户密码的修改,基本信息的设置和查询,以及产品价格信息的修改等2.2.2系统业务流程图 图2-1 系统业务流程图2.2.3系统的角色定义 本系统角色包括三种,系统管理人员,销售经理和仓库管理人员。其中销售经理:对订单进行录入,订单基本信息的查询浏览等具体权限有: 订单信息录入和查询,修改删除 密码的修改 订单明细的编辑仓管部管理人员:负责仓库的出入库管理,可以根据流向单实现出/入库操作,负责整个企业仓管部门的

12、日常运作和管理工作。具体权限有: 订单信息浏览 出库单信息的维护以及出库操作 入库单信息的维护以及入库操作密码的修改 仓库信息的维护及整理系统管理人员 管理系统用户、角色与权限,保证系统正常运行2.3技术介绍2.3.1 JSP技术简介JSP(Java Server Pages)是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。它虽然还未成型,但是它必将和J2EE(Java 2 Enterprise Edition)一起发展。JSP是结合marku

13、p(HTML和XML)和Java代码来处理一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Java class、Servlet、Applets和Web Server,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起.2.3.2 Servlet技术简介 Servlet是一些用来扩展Web服务器功能的Web组件,它基于请求/响应机制。所有的程序代码全部由JAVA组成,而且全部封装成了一个类,可以编写任意的JAVA代码,可以调用任意的JAVA类。Servl

14、et从客户端(例如Web浏览器)获得请求,然后,将响应结果返回客户端。Servlet的这种特点使它非常适合于Web应用。Servlet和EJB组件的区别在于EJB组件所提供的服务器端组件特性并不能全部适用于Servlet,Servlet更适合于处理简单的请求/响应任务,而且它不需要应用服务器所提供的复杂服务的支持。2.3.3 MVC简介MVC设计模式都是以Servlet为主题展开的,由Servlet接收所有的客户端请求,然后根据请求调用相应的JavaBean,并将所有的显示结果交给JSP完成。它强制性地使应用程序的输入、处理和输出分开。MVC设计模式被分为3个核心层,即模型层、显示层和控制层。

15、它们各自处理自己的任务,各层的任务如下。 1、 显示层(View):主要负责接收Servlet传递的内容,并且调用JavaBean,将内容显示给用户。2、 控制层(Controller):主要负责所有的用户请求参数,判断请求是否合法,根据请求的类型调用JavaBean执行操作并将最终的处理结果交由显示层进行显示。3、 模型层(Model):完成一个独立的业务操作组件,一般都是以JavaBean的形式进行定义的。3. 系统设计3.1 数据库设计 3.1.1数据库需求分析数据库设计时应该充分了解用户的需求,包括现有的以及将来可能增加的需求。数据库设计包括如下几个步骤:1数据库需求分析2 数据库概念

16、设计3 数据库逻辑结构设计用户的需求具体体现在各种信息的提供、保存、更新和查询等方面,这就要求数据库结构能充分满足各种信息的输入输出。根据基础数据、数据结构以及数据处理的流程,组成一份详细的数据字典,为后面的具体设计打下基础。在仔细分析调查有关库存信息需求的基础上,通过上面的数据流程图可以设计出下面的数据项和数据结构1用户管理基本信息,包括用户名 ,用户编号,密码,用户等级,用户联系方式(其中等级分三个级别) 2入库单基本信息,包括入库单编号,入库单状态,仓库编号,填单人3入库明细信息,包括入库明细编号,对应入库单编号,产品名称,入库数量4出库单基本信息,包括出库单编号,状态,仓库编号,填单人

17、,订单编号5出库明细信息,包括出库明细编号,对应出库单编号,产品名称,出库数量6订单基本信息,包括订单编号,状态,签单日期,订单金额,填单人7订单明细信息,包括订单明细编号,对应订单编号,产品名称,需求数量,已出库数量8产品基本信息,包括产品名称,产品单价9仓库基本信息,包括仓库编号,仓库管理员,产品名称,在库数量这里为了方便每个表主键的生成,还设计了一个主键生成表10主键基本信息,包括对应表名称,主键值3.1.2数据库逻辑设计本库存管理系统所用的数据库是store,如下是表在数据库的逻辑表示:表3.1 orders(订单表)字段名注释类型长度是否主键是否允许为空Ordered订单编号INTE

18、GER10Orderstate订单状态VARCHAR50Orderdate签单日期datetimeOrderinput签单人VARCHAR50Osum数量INTEGER11默认为0表3.2 ordersub(订单明细表)字段名注释类型长度是否主键是否允许为空Ordered订单编号INTEGER10Ordersubid明细编号INTEGER10Proname产品名称VARCHAR50Pronum需求数量INTEGER10Osum已出库数量INTEGER10默认为0表3.3 input(入库单表)字段名注释类型长度是否主键是否允许为空inputid入库单编号INTEGER10Ipstatus入库单

19、状态VARCHAR50storeid仓库编号INTEGER10inputer填单人VARCHAR50表3.4 inputsub(入库明细表)字段名注释类型长度是否主键是否允许为空inputid订单编号INTEGER10ipsubid明细编号INTEGER10proname产品名称VARCHAR50ipnum入库数量INTEGER10表3.5 output(出库单表)字段名注释类型长度是否主键是否允许为空opid出库单编号INTEGER10opstatus出库状态VARCHAR50orderid订单编号INTEGER10storeid仓库编号INTEGER10outers填单人VARCHAR50

20、默认为0表3.6 outputsub(出库明细表)字段名注释类型长度是否主键是否允许为空opid出库单编号INTEGER10opsubid明细编号INTEGER10proname产品名称VARCHAR50opnum出库数量INTEGER10表3.7 appuser(用户表)字段名注释类型长度是否主键是否允许为空userid用户编号INTEGER10username用户名INTEGER118password登录密码VARCHAR118userlevel用户级别INTEGER10usertel联系方式VARCHAR50表3.8 storage(仓库表)字段名注释类型长度是否主键是否允许为空stor

21、eid仓库编号INTEGER10admin管理员INTEGER50proname产品名称VARCHAR50pronum库存数量INTEGER12表3.9 product(产品表)字段名注释类型长度是否主键是否允许为空proname产品名称VARCHAR50price产品单价float表3.10 product(主键表)字段名注释类型长度是否主键是否允许为空pkname产品名称VARCHAR50pkvalue主键值INTEGER103.2开发工具及运行环境1.开发工具:MyEclipse6.02.软件环境:Tomcat6.0,JDK5.0以上3.硬件环境:cpu:P3 2.0GHZ以上Memor

22、y:512M以上4. 系统实现4.1模块设计本系统包括:订单管理、出库管理、入库管理、库存总控台、基础数据(包括用户信息和产品信息)管理五个功能模块。4.2主要包结构1.检验用户登录 cn.hebau.store.servlet.LoginA2.订单操作cn.hebau.store.servlet.Orders3.订单明细操作cn.hebau.store.servlet.OrderSubs4.入库单操作cn.hebau.store.servlet.InputAction5.入库单明细操作cn.hebau.store.servlet.Inputs6.出库单操作cn.hebau.store.ser

23、vlet.OutputAction7.出库单明细操作cn.hebau.store.servlet.Outputs8.仓库操作cn.hebau.store.servlet.StorageAction9.系统用户操作cn.hebau.store.servlet.AppuserAction10.产品操作cn.hebau.store.servlet.ProductAction考虑到实际需要,每个表的都还设计了一个主键生成器部分,主要是在cn.hebau.store.dao.primarykey包下实现4.3主要页面截图及功能介绍4.3.1登录界面下面是主要是分模块介绍各个部分的功能以及实现首先,登录页

24、面,如图4-1 图4-1 登录页面4.3.2订单管理界面登录成功后跳转到主页,这个页面根据不同的用户,在设计这个页面的时候要考虑到用户的具体分工,刚开始是想全部通过过滤器,后来发现过滤器很难全部过滤,就在前台页面实现,不具有该功能的用户在点击具体的总模块名时,按钮不能弹开。图4-2 系统主界面其中订单管理页面如图4-3图4-3 订单管理点击修改按钮进行订单明细编辑,如图4-4图4-4 订单明细管理点击添加后则录入新的一条订单明细,相应的订单金额也根据数量*单价计算出来,如果点击删除,则订单明细的金额也做相应的减法操作订单管理页面包括订单的查询,修改和删除以及对订单明细的编辑。只要订单界面出于未

25、出库状态就可以对该订单进行明细编辑,包括添加和删除操作,已经出了库的订单就不对其进行操作了,每一个订单编号都有相应的超链接,可从数据库中查出与之相对应的出库信息。这一层的具体实现代码时在cn.hebau.store.servlet包下的OrderAction和OrderSubs中实现的部分代码如下:public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException HttpSession session=request.getSession

26、(); String method= request.getParameter(method); if(method.equals(all)/查询 List orders= DbFactory.getOrderDaoInstance().selectAll(); session.setAttribute(orders, orders); response.sendRedirect(/store/order/list.jsp?); else if(method.equals(del)/删除 int id=Integer.parseInt(request.getParameter(id); DbF

27、actory.getOrderDaoInstance().deleteById(id); List orders= DbFactory.getOrderDaoInstance().selectAll(); session.setAttribute(orders, orders); response.sendRedirect(/store/order/list.jsp?); public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException

28、 HttpSession session=request.getSession(); String method= request.getParameter(method); if(method.equals(insert)/查询 Orders order=new Orders(); String orderinput=new String(request.getParameter(orderinput).getBytes(ISO-8859-1),GBK); if(DbFactory.getAppuserDaoInstance().findByname(orderinput) try orde

29、r.setOrderid(DbFactory.getOrderDaoInstance().getNextKey(); order.setOrderinput(orderinput); Date orderdate = new java.text.SimpleDateFormat(yyyy-M-dd).parse(request.getParameter(orderdate).toString().trim(); System.out.println(orderdate+gggggggggggggggggggg); order.setOrderdate(orderdate); DbFactory

30、.getOrderDaoInstance().insert(order); List orders= DbFactory.getOrderDaoInstance().selectAll(); session.setAttribute(orders, orders); catch (Exception e) e.printStackTrace(); response.sendRedirect(/store/order/list.jsp?); else session.setAttribute(errmsg1,showError(document.getElementById(orderinput

31、),填单人不具权限!);); response.sendRedirect(/store/order/add.jsp?); else if(method.equals(sel)/查询Orders order=new Orders(); try Date one = new java.text.SimpleDateFormat(yyyy-M-dd).parse(request.getParameter(orderdate1).toString().trim();Date two = new java.text.SimpleDateFormat(yyyy-M-dd).parse(request.ge

32、tParameter(orderdate2).toString().trim();List orders=DbFactory.getOrderDaoInstance().selectByDate(one, two);session.setAttribute(orders, orders); catch (ParseException e1) e1.printStackTrace(); response.sendRedirect(/store/order/list.jsp?); 如果该订单已经存在对应的出库单,则在订单明细页面下方显示每份出库单详细信息。由于销售经理只具有签入订单的权限,所以如果

33、登录用户是销售经理的话,那么他只具有对订单的增删改查功能。4.3.3出入库管理界面接下来是仓库管理员的登录界面,他主要负责对库存进行维护,以及出库和入库操作,出库单来源除了从订单管理那里生成之外,也可以新建出库单,新建出库单可以选择尚有产品未出库的订单,也可以不选择任何订单进行出库。如图4-5所示。点击出库操作按钮,只有订单状态出于未出库或未完全出库时才能生成出库单,确定生成出库单后,开始进入仓库选择界面,如图4-6所示图4-5 出库管理图4-6 仓库选择界面用户可以根据仓库库存量尽量选择能满足当前订单需求的仓库进行出库。这一种情况下对应的出库明细是自动生成的,如果库存不足,则按库存量出库,否

34、则按订单需求出库,对应的出库明细如图4-7图4-7 出库明细录入点击确认出库按钮,则生成对应的出库明细记录,自动将出库单状态改为“已出库”,根据出库情况订单状态也改为“部分出库”或“已出库”。如图4-8所示。每一条订单明细的已出库数量以及相应仓库号产品的库存量也发生相应改变。接下来是入库单列表,包括增删改查,点击添加按钮,则进入,如图4-9图4-8 入库管理图4-9 入库单录入如果不是库存管理员则提示系统不可进行该操作,入库单状态处于“未入库”,点击修改按钮就可对入库明细进行编辑,如图4-10图4-10 入库明细管理图4-11 入库明细编辑确认入库可对入库单进行入库,相应的入库单状态自动改为“

35、已入库”,而库存中产品的数量也自动增加。如图4-11;接下来是另一种情况的出库,即不对应任何订单可对出库单进行增删改查操作。如果出库单处于未出库,则对应显示的修改按钮可对出库明细进行录入,点击确认入库,如果库存不足则提示库存不足信息,跳转到出库明细编辑页面继续编辑,可以适当减少出库量。否则即出库成功,对应出库单状态自动改为已出库,对应仓库的产品库存数量也减少,页面跳转至出库列表页面,如图4-12图4-12 出库明细录入仓库管理:主要包括三个小模块,初始化,归零,数据整理操作根据系统当前登录用户,初始化显示仓库所有库存归零是所有产品数量归零数据整理操作是负责将删除仓库中产品数量为零的记录;4.3

36、.4系统基础数据管理界面基础数据信息:只有系统管理员才可对此部分操作首先是产品信息设置,如图4-13图4-13 产品信息设置包括产品的价格,以及名称,设计的时候产品名称作为了产品表的主键,所以可对产品单价进行修改,如图4-14图4-14 产品价格修改2用户信息设置,可以添加用户,对用户资料修改,以及删除用户,但是管理员不可删除,如图4-15,4-16所示;图4-15 系统用户管理图4-16 系统用户信息修改个人信息管理是每个用户的权限,可对当前登录用户的密码进行修改,如图4-17所示;图4-17 用户密码修改下面是一些主要代码的部分检验用户登录String pwd=request.getPar

37、ameter(password);HttpSession session=request.getSession();String username = request.getParameter(username);String password =DbFactory.getAppuserDaoInstance().encryptPassword(request.getParameter(password); Appuser appuser = new Appuser();/验证输入的用户名密码是否准确.准确登陆系统.否则返回系统登陆页并提示错误信息try if (DbFactory.getAp

38、puserDaoInstance().checkLogin(username, pwd) int le= DbFactory.getAppuserDaoInstance().selectByname(username).getUserlevel(); request.getSession().setAttribute(userlevel,le); session.setAttribute(myid, DbFactory.getAppuserDaoInstance().selectByname(username).getUserid()session.setAttribute(myp, DbFa

39、ctory.getAppuserDaoInstance().selectByname(username).getPassword();session.setAttribute(me, le);session.setAttribute(mine, username);response.sendRedirect(/store/index.html); else /提示错误信息request.setAttribute(errmsg,showError(document.getElementById(username),+ 用户名或密码错误!););/ 返回登录界面request.getRequest

40、Dispatcher(/login.jsp).forward(request, response); catch (Exception e) e.printStackTrace(); 由于具体项目较大,代码部分就不在此一一写出了,详见具体项目部分。5. 总结 这是我第一次独立完成这种较大项目的设计,包括前期的需求分析,系统各个部分的分模块设计,数据库的设计等等。鉴于以前有过这种方面的小组合作经验,相对来说不是很难。首先,一定要对自己做的项目有一个全面透彻的了解,它的主要流程,用户,实现的功能等等。这些我是通过以往的经验和翻阅资料获得的。在明确了需求分析这个基础上,建立好数据库,确立需要的表。这

41、些工作完成了,剩下的就主要是代码部分的实现了,这是一个程序员的基本素质,相对来说要容易一些。无外乎主要是对数据库数据的增删改查操作,所以利用JDBC以及对SQL语句的编写一定要很熟悉由于采用的是自己以前比较熟练的MVC架构模式,整个代码部分相对来说要简洁明了一些。对于这个相较以往较大一点的项目来说,编程的第一步是搭建好框架。就是以分包的形式将程序分工,包括数据层,业务逻辑层和控制层。这种分包结构的编写使得整个程序的安全性得到了提高,而且可重用性得到了加强。由于时间仓促和经验匮乏,所以对整个系统表格各个属性的建立显得有点简单,跟实际有点脱轨,但基本上功能都能实现,这将是一次很好的锻炼机会。通过这

42、次实训,我对java编程思想有了更深一点的了解,编写代码的熟练程度以及发现错误的速度和修改能力都有了很大程度的提升,我知道自己相对来说缺乏的是实际的工作经验,面临具体的项目需求,这是需要改进的地方。参 考 文 献1、Java图形设计 卷二:Swing (美) David M.Geary 2、Java 2 编程思想 (美) Bruce Eckel 3、刘永华,于春花Java 网络编程清华大学出版社2008 4、Java 语言与面向对象程序设计(清华大学出版)印雯 编著5、Java多线程编程详解 6、李树青Java 通用范例开发金典电子工业出版社20097、庞永庆,翟鹏Java 完全自学宝典清华大学出版社20088、薛为民, 夏文红, 解仑.Java 应用教程 北京:北京交通大学出版社 20059、孙一林,彭波Java 网络编程实例清华大学出版社2003(4)10、胡少峰、赵克、耿春霞.一种基于Java技术的聊天室系统的设计与实现.J.电脑与信息技术 2002年第04期11、郇战.基于Java的多平台聊天系统. J.福建电脑2008年第01期致 谢大学学习生涯就要结束了,首先我要向我的母校河北农业大学致以深深的谢意。在这里度过了一段美好的、令我难忘的日子。感谢我的指导老师马建斌老师,是他在繁忙的工作与教

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁