基于java的眼镜店仓库管理系统

news2024/12/23 3:16:36

源码获取,加V:qq2056908377

摘要:

随着电子商务的兴起,越来越多的商家选择在线销售他们的产品。眼镜店作为零售业的一种,也不例外。随着市场需求的不断增加,眼镜店需要更加高效的管理他们的仓库和库存,以满足客户的需求。为了解决这个问题,本论文旨在设计和实现一个基于Java语言的眼镜店仓库管理系统,帮助眼镜店更加高效地管理他们的仓库和库存。本系统实现一系列功能,包括眼镜入库、出库、退货、盘点、订单管理、库存查询等。

本系统将采用Java语言作为主要的开发语言,结合MySQL数据库,实现数据的持久化。系统将采用MVC设计模式,具有良好的可扩展性和可维护性。我们将采用软件开发过程中常用的迭代式开发模型,从需求分析、概要设计、详细设计、编码实现等方面,不断优化和改进系统。通过本论文的研究,我们相信能够设计出一个实用性强、性能稳定、易于维护的眼镜店仓库管理系统。

系统经过功能测试和性能评估,确认其具有一定实用性和功能健壮性。通过本论文的研究,我们期望为眼镜店仓库管理系统的设计和实现提供参考和帮助,为企业提高管理效率和经济效益做出贡献。

关键词:仓库管理,眼镜店,SpringBoot

目录

摘要

Abstract:

1、绪论

1.1、背景分析

1.2、设计的目的与意义

1.3、设计的主要内容

1.4、总体结构

2、系统分析

2.1、需求分析

2.2、系统用例分析

2.2.1、店员用例分析

2.2.2、店长用例分析

2.3、可行性分析

3、系统设计

3.1、系统架构设计

3.2、系统功能设计

3.2.1、总体功能设计

3.2.2、客户管理与供应商管理

3.2.3、度数分类管理

3.2.3、眼镜管理模块

3.2.5、仓库管理模块

3.2.6、出库管理模块

3.2.7、入库管理模块

3.2.8、用户管理模块

3.2.9、管理端日志管理模块

3.3、数据库设计

3.3.1数据库概念设计

3.3.2数据库表设计

3.4、本章小节

4、系统实现

4.1、开发技术选型

4.9、密码管理实现

4.2、度数分类管理实现

4.3、眼镜管理实现

4.4、仓库管理实现

4.5、入库管理实现

4.6、入库退货实现

4.7、出库管理实现

4.8、出库退货实现

4.10、本章小节

5、 系统测试

5.1、测试方法 

5.2、测试范围

5.3、功能流程测试

5.4本章小节

参考文献

致  谢

1、绪论

1.1、背景分析

眼镜行业是近年来发展非常迅速的一个领域,而随着市场需求的增加和业务规模的扩大,眼镜店的仓库管理也变得愈加重要。眼镜店是一种以售卖眼镜为主要业务的零售店,与其他行业相比,其商品种类较少,但颜色、型号、规格等方面的变化较多。此外,眼镜店的客户群体多为老年人和中年人,具有较高的客户忠诚度和反复购买率。因此,眼镜店仓库管理需要保证货品的稳定性和准确性,同时也需要注重客户服务和售后支持。

市场上已经有许多仓库管理系统可供选择,但它们的功能和适用性并不完全符合眼镜店的特殊需求。眼镜店仓库管理需要针对性地设计和开发,满足眼镜店特有的业务需求和管理模式。本论文旨在探究一种基于Java的眼镜店仓库管理系统的设计与实现方案,以提高眼镜店的运营效率和管理水平。

1.2、设计的目的与意义

目的在于通过基于Java技术的仓库管理系统,为眼镜店提供一个科学、规范、高效的仓库管理方案,实现对仓库管理流程的规范化和自动化,提高运营效率和服务质量,减少管理成本和人力投入,提高眼镜店的核心竞争力。

意义在于通过本研究的设计和实现,可以提高眼镜店的运营效率和客户服务水平。通过实现仓库管理系统的自动化和智能化,可以大大减少人工操作,提高工作效率,降低成本开支。此外,系统中的客户管理和供应商管理功能,可以提高客户服务质量和供应商合作效率,为眼镜店带来更多的商业价值

综上所述,本研究的设计和实现可以为眼镜店的管理和运营带来实质性的改善和提升,同时也对相关领域的研究和应用具有积极的推动作用。

1.3、设计的主要内容

本论文的主要内容是基于Java技术,设计并实现一套适用于眼镜店的仓库管理系统,包括客户管理、供应商管理、库位管理、库存管理、出库管理、入库管理、出库退货管理、入库退货管理等功能。

通过该系统,用户可以轻松地完成对供应商、客户和眼镜的管理和维护,根据实际情况对库存进行合理分类和管理,并实时掌握库存的情况。同时,用户还可以方便地进行出入库操作和退单处理,有效地解决了库存管理中的各种问题和难题。

该系统还具备完善的用户权限和角色管理功能,可以实现对不同用户的访问和操作权限进行控制和管理,确保系统的安全性和稳定性。

1.4、总体结构

本论文的总体结构是严格按照开发和设计规范来排版的。


2、系统分析

2.1、需求分析

系统分析的第一步,就是明确需求,所以需求分析是软件开发生命周期中关键的一点。需求分析的着重点在于得出这个系统到底要做哪些功能,而不用着重考虑功能的实现方法。具体分析的方法就是根据用户提出的要求整理分析后得出具体的功能[5]。

仓库管理的使用对象是眼镜店运营人员,一般分为两种角色,一种是店员角色,负责通过该程序对仓库存储情况管理;另一种是店长角色,该角色在店员的权限之上多了用户管理和日志管理的模块。

店员所需功能如下:

  1. 在度数分类管理方面,度数分类在眼镜店的运营来说是一个极为重要的要素,比如,哪些眼镜适合老人、那些眼镜适合小孩。所以管理所有眼镜的分类信息,可以方便后续的管理和查询。
  2. 在供应商管理方面,系统能够实现对供应商信息的录入、修改、删除和查询等操作,方便用户对供应商的管理和维护;在客户管理方面,系统能够对客户信息进行同样的操作,以满足用户对客户信息的管理需求。
  3. 在仓库管理方面,本系统实现了对多个仓库的管理和监控,用户可以通过系统实时查询不同仓库的眼镜库存、出入库记录等信息,便于用户对库存的管理和监控。
  4. 出入库管理模块能够帮助用户完成出入库操作,并记录每次操作的时间、操作员、眼镜数量和类型等详细信息,方便用户对库存的管理和监控。
  5. 出库退单管理和入库退单管理模块可以处理各种退单情况,从而有效地减少库存管理中的问题和损失。
  6. 盘点库存模块能够对库存进行全面、准确的盘点,帮助用户及时发现库存中的问题和异常情况,并进行相应的处理和调整。

店长拥有店员所有的功能,同时在系统中还应具有如下功能:

  1. 用户管理:用户管理包括用户的基本信息管理,可以添加、修改或者删除用户。还包括角色权限的管理,为不同角色分配不同权限,在为不同用户分配不同角色,实现用户在系统中权限的分配。
  2. 日志管理:对于店员在系统中的每个操作,都需要保存记录,所以还要有日志模块,可以查看用户操作。

2.2、系统用例分析

用例分析是软件设计和开发过程中的重要环节,可以帮助开发人员更好地理解和满足用户需求。在该系统中只有店员和店长两种角色,用例图如下。

2.2.1、店员用例分析

店员在仓库系统中,首先应该有对眼镜进行入库出库的权限,可以管理系统仓库信息和库存信息,还应可以管理客户和供应商的信息,方便出入库行为。店员用例图如图3-1所示:

图3-1 店员用例图

2.2.2、店长用例分析

在本系统汇总,店长具有日志管理、用户管理,角色管理、个人信息管理以及普通店员所有的权限店长用例图如图3-2所示:

图3-2 店长用例图

2.3、可行性分析

技术可行性:Java是一种广泛使用的编程语言,具有强大的面向对象编程能力和可移植性。此外,Java还提供了各种库和框架,可以简化应用程序开发和管理。因此,从技术上讲,基于Java的眼镜店仓库管理系统是可行的。

经济可行性:建立一个系统需要考虑开发、运行和维护成本。Java是一个免费的编程语言,因此开发成本相对较低。此外,Java具有良好的跨系统性,这意味着系统可以在各种操作系统上运行,从而减少了运行成本。对于维护成本,可以考虑使用开源的框架和工具,例如Spring框架和Hibernate ORM,以减少系统的维护成本。因此,从经济上讲,基于Java的眼镜店仓库管理系统是可行的。

操作可行性:在设计和实现系统时,必须确保系统易于使用和操作。为了实现这一目标,可以采用HTML+CSS+JavaScript的技术组合。这些库提供了各种控件和布局选项,可以让您创建直观且易于使用的用户界面。。因此,从操作上讲,基于Java的眼镜店仓库管理系统是可行的。

在法律方面,需要考虑版权、知识产权、商标等法律问题,确保项目的合法性和合规性。需要注意保护自己的知识产权,同时遵守相关法律法规。

总的来说,从技术、经济、操作和法律的角度考虑,基于Java的眼镜店仓库管理系统是可行的。但是,需要在实际实施前进行更详细的分析和规划,以确保系统能够满足所有需求并具有高效的性能。

3、系统设计

系统设计部分是文章的核心部分,它涉及到对系统功能的详细设计,包括系统的结构、模块、接口设计等。在这部分中,需要对前期的需求分析和技术调研结果进行进一步的细化和实现。同时,在系统设计中需要考虑到系统的可扩展性、可维护性、安全性、易用性、性能等方面,确保系统能够满足用户的需求,并且在使用过程中能够保持稳定、高效、安全的运行状态。

系统设计部分一般包括系统架构设计、数据库设计、界面设计、功能设计、性能设计等方面,需要充分考虑到系统的整体性和协调性。同时,在设计过程中还需要不断地进行测试和优化,确保系统的稳定性和可靠性。

3.1、系统架构设计

平台总体采用B/S架构,包括前端展示层、后端逻辑层和数据存储层。前端展示层负责与用户进行交互,提供良好的用户体验。后端逻辑层负责实现系统的业务逻辑,处理用户的请求,并与数据存储层进行交互,两者通过TCP/IP可靠协议进行交互。数据存储层负责对系统数据进行存储、管理和维护,采用MySQL数据库。该数据库具有跨平台的特性,可以在多种平台上运行,内置多种数据引擎,不同场景使用不同的数据引擎来达到不同的效果,功能强大安全性高[8]。在仓库管理系统架构如图3-1所示:

图3-1 系统B/S架构图

3.2、系统功能设计

3.2.1、总体功能设计

根据需求分析可知,总体功能需满足用户在系统中对度数分类管理、供应商管理、客户管理、眼镜管理、仓库管理、出库管理、出库退货管理、入库管理、入库退货管理、盘点库存等,同时满足店长在系统中管理用户信息、日志信息、角色信息查看系统的操作日志等核心任务。这些模块根据业务性质具有不同的关联性,通过有效的数据交互和页面跳转来实现系统的整体功,旨在提供一个高效、稳定、安全的仓库管理系统,满足用户对于仓库管理的各种需求。总体功能结构如图3-2所示:

图3-2 总体功能结构图

3.2.2、客户管理与供应商管理

客户管理与供应商管理都是仓库管理系统中的一个重要功能模块,二者功能相似,是用于对与仓库有业务往来的客户和供应商信息进行管理。

客户管理中,。店员可以通过该功能对仓库中客户的姓名,电话,住址,邮箱等等,对于仓库管理人员而言,这些资料非常重要。系统启动后,首先进行数据初始化操作,然后才进入数据备份和恢复过程。通过有效管理这些资料,能给仓库工作人员带来精准的、及时了解客户信息,从而便于仓库工作人员与顾客进行及时的接触。目前很多仓库都建立了自己的客户服务中心,客户信息管理系统就是其中之一。

客户的状态出于不可用时,客户无法从仓库中获取眼镜,但是客户如果想要退货以前从仓库买的眼镜,还有权限;还可以在系统中根据名称或者电话等其他条件进行查询,查询到的客户信息可以导出到excel。

供应商管理的功能与客户管理的功能类似,区别就是出于不可用状态的供应商,是没有权限在往库中存货,但是在被设为不可用之前入库的眼镜,还有权限进行退回。在仓库管理系统中,度数分类功能是非常重要的一个模块。在该模块偶只能中店员可以新建分类,修改分类,删除分类和查询分析。在修改和删除分类的时候,需要校验该分类下是否有眼镜在关联使用,若有则不能修改和删除。

3.2.3、度数分类管理

通过对眼镜进行分类管理,可以实现对眼镜的全面管理,提高管理效率,减少眼镜误放、丢失等不良现象的发生,为库存管理提供更加精准的数据支持。同时,度数分类功能也是其他功能模块的基础,比如眼镜信息管理、出库管理、入库管理等功能都需要对眼镜进行分类管理,以便更加精细地进行管理[9]。

3.2.3、眼镜管理模块

眼镜管理模块主要用于对仓库中的眼镜信息进行管理。其主要功能包括眼镜信息的录入、查询和统计、度数分类管理,可以实现对眼镜的全面管理,并为库存管理提供精准数据支持。

店长可以通过该功能对仓库中的眼镜信息进行录入和维护,包括眼镜名称、规格、单位、单价、供应商信息、生产日期、是否可用等相关信息,状态为不可用的眼镜,无法主动进行出库入库的操作,相当于出于封禁状态;可以通过该功能查询和统计仓库中各类眼镜的存量、最适库存量、进出库记录等相关信息,从而为库存管理提供更加精准的数据支持;可以通过该功能对仓库中的眼镜进行分类管理,比如按照眼镜种类、规格、批次等不同条件去关联不同的度数分类,以便更好地管理眼镜库存;同时还可以将查询到眼镜信息批量导出为excel,方便报表的制作。

3.2.5、仓库管理模块

仓库管理是仓库管理系统中的一个核心功能模块,主要用于对仓库的日常管理和运作进行监控和控制。店员可以通过该功能录入并维对仓库的基本信息,包括仓库名称、库位、介绍、最大容量等相关信息;可以通过仓库名称或库位进行仓库查询,仓库的删除需要判断是否库存数量为零,有库存的仓库不能删除。

3.2.6、出库管理模块

出库管理模块主要用于管理和控制仓库中眼镜的出库流程。店员可以通过该功能添加出库订单,填写的出库单信息包括,出库眼镜名称、客户名称、数量、出库时间等信息。提交出库单是,对应眼镜的眼镜库存数量以及仓库的存储数量,都应随之发生变化。店员可以通过客户、出库操作人员、眼镜以及出库时间范围进查询已经生成的出库单信息,包括出库单编号、出库时间、出库眼镜名称、客户名称、数量、出库人员等相关信息。店员还可以通过打印按钮将查询出来的的出库单进行打印,方便对出库单进行备案和记录。

对于已经出库的订单,还有可以退货的功能。基于出库订单的退货就是将已经从库存中卖出的眼镜从新放回仓库当中,同时与之相关联的眼镜数量以及仓库存储量都要随之发生变化。

3.2.7、入库管理模块

入库管理模块主要用于管理和控制仓库中眼镜的入库流程。一个眼镜的入库,一定要有眼镜的提供方,也要有入库的眼镜名称,所以入库订单填写时,为保证入库订单的准确性,供应商和眼镜名称的填写不能使用文本框输入,需要用下拉框从系统中查询已有的供应商和眼镜名称并选择。总的来说入库订单要有入库单编号、入库时间、入库眼镜名称、供应商名称、数量、入库人员等信息,入库订单保存时,同样需要改变对应的眼镜和仓库数量。

入库管理其余功能同出库管理模块相似,不在累述。入库模块也有对应的退货模块,该退货是基于入库订单的,所以退货是将眼镜退货给供应商。退货订单的提交需要填写退货的原因和数量,同时在通过逻辑处理修改眼镜库存数和仓库存储数。

3.2.8、用户管理模块

店员管理主要用于控制系统中各个用户角色的操作权限以及用户信息的修改,采用用户-角色-权限的RBAC模型,增强了用户权限管理的扩展性。其主要功能包括:

角色管理:系统店长可以通过该功能进行用户角色的创建、修改、删除和查询等操作。每个用户角色包含一个或多个权限组,可以根据具体的业务需求进行配置。

权限管理:店长可以通过该功能对系统中的权限进行管理,包括创建、修改和删除权限组、设置权限组的权限等。每个权限组可以包含多个操作权限,如增删改查等。

用户管理:店长可以通过该功能对系统中的用户进行管理,包括创建、修改、删除和查询用户信息等。每个用户至少需要绑定一个角色,并根据角色的权限组进行操作。当店员忘记密码,可以联系店长重置密码,当店员在系统中有违规行为时,店长可以通过操作店员账号状态来限定店员是否有权限登录系统,当是设置为不可用状态时店员户就无法登陆。

3.2.9、管理端日志管理模块

日志管理模块主要针对的是店员的登录记录,以店长更好地惯出店员对系统的使用情况。日志管理模块的主要功能是日志记录与查询,日志记录是理由AOP的切面通知,在用户登录的同时将登录记录写入到数据库中。日志查询是店长可以通过该模块查询和检索日志信息。查询方式可以按照时间、操作类型、用户等多种维度进行筛选[14]。

3.3、数据库设计

确定功能后,首先要做的不是代码开发,是先设计系统的数据库。数据库设计分为概念设计和表设计,概念设计是表设计的前提,表设计是概念设计的具体逻辑实现。

3.3.1数据库概念设计

数据库的概念设计可以使用E-R图和模型图。系统中表主要分为业务表和系统表,业务表是与存储流程相关的表,系统表用于存储用户及角色权限信息等。

根据系统功能设计,首先要有客户表、供应商表用来存储系统中进出库对象的信息;其次要有度数分类表存储对眼镜的分类信息、眼镜表存储眼镜信息数量、仓库表存储仓库信息;在仓库的进出库流程中,要有入库记录表和出库记录表分别存储眼镜的进出库记录信息;基于入库和出库订单又分别有入库退货功能和出库退货功能,因此要有入库退货表和出库退货表;为实现仓库眼镜实际库存量与系统记录库存量的对比,要有盘点记录表用于记录每次盘点的结果。仓库流程相关实体的E-R如图3-3所示:

图3-3存储流程相关实体E-R图

系统中用户角色信息的控制使用的是RBAC模型,用户、角色、权限之间都是以多对多的关系关联。通过角色和权限的分配,可以有效控制系统中各个用户的操作权限,提高系统的安全性和稳定性,避免用户非法操作所带来的安全风险,同时也为业务决策提供数据支持。用户角色权限关联模型图如图3-4所示:

图3-4试题相关实体E-R图

3.3.2数据库表设计

根据需求做数据库概念设计,然后根据设计概念关系设计具体的数据库表。在本仓库管理系统中,用到的业务相关的表共9个表,下面针对性的分析在系统中用到的一些复杂的表,画出表具体的字段及其长度类型。

  1. 眼镜表中字段有眼镜名称、规格、生产批号、眼镜描述、眼镜图片、当前库存量和最适库存量等信息。其中眼镜表中通过存储度数分类的id作为其子表相关联,通过存储仓库id来与仓库信息关联,眼镜的是否可用字段决定了眼镜能被出入库。具体表字段如下表3-1所示:

表3-1管理端用户

字段

数据类型

描述

id

int(11)

眼镜id

warehouseid

int(11)

所在仓库id

goodsname

varchar(255)

眼镜名称

size

varchar(255)

眼镜规格

goodspackage

varchar(255)

眼镜包装

productcode

varchar(255)

生产批号

promitcode

varchar(255)

批准文号

description

varchar(255)

眼镜描述

categoryid

int(11)

眼镜类型id

number

int(11)

当前库存数量

dangernum

int(11)

库存最适数量

goodsimg

varchar(255)

眼镜图片

available

int(11)

眼镜是否可用

  1. 出库订单表,主要用于记录所有的出库操作[16]。该表通过客户id和眼镜id分别和客户表和眼镜表关联。出库订单表字段如表3-2所示:

表3-2出库记录表

字段

数据类型

描述

id

int(11)

paytype

varchar(255)

操作紧急状态(备货,正常,紧急)

boundtime

datetime

出库时间

operateperson

varchar(255)

操作人

number

int(11)

出库数量

remark

varchar(255)

订单备注

customerid

int(255)

客户ID

goodsid

int(11)

眼镜ID

  1. 入库订单表,要用于记录所有的入库操作[16]。该表通过供应商id和眼镜id分别和供应商表和眼镜表关联。如表3-3所示:

表3-3入库记录表

字段

数据类型

描述

id

int(11)

入库订单id

paytype

varchar(255)

订单处理状态(备货,正常,紧急)

inporttime

datetime

入库时间

operateperson

varchar(255)

操作人

number

int(11)

入库数量

remark

varchar(255)

订单备注

inportprice

double

抛弃字段

providerid

int(11)

供应商id

goodsid

int(11)

眼镜id

  1. 出库订单退货表,主要是记录客户的退货行为。表中通过客户id记录退货人、通过出库订单id记录是通过哪一个出库订单退的眼镜、眼镜id记录退货的具体眼镜信息。如图3-4所示:

表3-4出库退货订单表

字段

数据类型

描述

id

int(11)

customerid

int(11)

客户id

paytype

varchar(255)

操作状态(备货,正常,紧急)

creattime

datetime

创建时间

operateperson

varchar(255)

操作人

beiyong

int(11)

出库订单id

number

int(11)

退货数量

remark

varchar(255)

备注

goodsid

int(11)

眼镜id

  1. 仓库表,是记录仓库信息的表,其中眼镜类型id表示了该仓库所能存储的眼镜类型。是否可以决定了当前仓库是否能够存取眼镜。表字段类型如表3-5所示:

表3-5 仓库信息表

字段

数据类型

描述

id

int(11)

warehousename

varchar(255)

仓库名称

categoryid

varchar(255)

存储眼镜类型

number

int(11)

当前存储量

maxnumber

int(11)

仓库最大容量

address

varchar(255)

仓库地址

introduce

varchar(255)

仓库介绍

isuser

varchar(255)

是否可用(1可用0不可用)

createtime

datetime

创建时间

3.4、本章小节

本章介绍了在仓库管理系统的系统设计,包括总体结构设计、各模块功能设计和数据库设计。在总体结构设计部分,对系统的整体架构进行了介绍。在各模块功能设计部分,详细描述了各个模块的功能和实现原理。在数据库设计部分,分别进行了概念设计和数据表设计。


4、系统实现

完成了系统设计后,就是对系统功能的具体实现,本章节主要是以流程图结合文字的方式来描述系统功能的具实现。

4.1、开发技术选型

本平台主要使用 Java 和 HTML5、JavaScript 作为开发语言,IDEA 作为开发平台, MySQL 作为平台数据库。前端主要使用layui框架,后端主要使用springboot,权限管理方面使用Shiro框架,MySQL作为数据库。由于该平台采用B/S架构,并使用浏览器作为客户端直接访问,使用HTTP网络协议交互。

4.9、密码管理实现

对登陆时候的密码进行管理,主要是增加该系统的安全性能,一旦该系统投入现实中使用,安全性是非常重要的,可能管理人员通过电脑传送产品的入库和出库,一旦密码被破解,可能整个企业将会受到很大的损失,所以加密功能非常的重要。加密功能使用的是MD5加密,MD5是一种加密算法、摘要算法,该加密算法具有单向性,恒定性,不可逆性以及不可预测性。但是如果有两个或两个以上的人所设置的密码是相同的,那么通过相同的加密算法所得到的结果是相同的,这种密码也是容易破解的,所以还要进一步的加密,就出现了MD5加盐,也就是在原来密码的基础上加入其他的东西,用这种方法来增加该系统的复杂度,当这种盐和用户的密码进行结合之后,再通过摘要处理,就可以得到隐蔽性更强的摘要值。

MD5加盐加密有两种方法,分别是随机盐值加密和固定盐值加密。随机盐值加密过程就是生成的盐值是随机的,可以使用UUID(通用唯一识别码)的方法获取;将随机盐值与需要加密的内容组合成新的字符串,进行MD5加密,在保存盐值和加密之后入库;从库中获取随机的盐值和密文;用户从库中获取组合成新的字符串,通过MD5加密,从库中拿到的密文与新生成的密文进行比较是否一样。固定盐值的过程和上边的类似,只要把随机盐值换成固定盐值就行了。相应的代码如下:

public ResultObj resetPwd(Integer id) {

        try {

            User user = new User();

            user.setId(id);

           //String salt = "04A93C74C8294AA09A8B974FD1F4ECBB";//默认的盐

            String salt = IdUtil.simpleUUID().toUpperCase();

            user.setSalt(salt);

            user.setPwd(new Md5Hash(Constant.USER_DEFAULT_PWD, salt, 2).toString());

            this.userService.updateById(user);

            return ResultObj.RESET_SUCCESS;

        } catch (Exception e) {

            e.printStackTrace();

            return ResultObj.RESET_ERROR;

        }

    }

4.2、度数分类管理实现

度数分类管理是仓库管理系统中的一个重要功能模块,主要用于管理眼镜的分类信息,方便对眼镜进行分类管理。具体实现包括以下几个方面:

分类添加:店长可以通过该功能在系统中添加新的度数分类。在添加分类时,需要填写分类名称、分类介绍、是否可用等信息。系统会自动生成每个分类的唯一标识符,方便后续的查询和管理。

分类查询:店员和店长都可以通过该功能查询系统中所有的度数分类信息。可以通过分类名称进行模糊查询,也可以通过分类是否可用进行分类查询。

分类修改:店员和店长都可以在该功能中对系统中已有的度数分类进行修改。可以修改分类名称、分类介绍、是否可用等信息,但是修改时需要校验该分类下是否已经绑定眼镜,若已经绑定则不能修改。

分类删除:店员和店长都可以通过该功能删除系统中不再需要的度数分类信息。删除分类时需要注意,需要将该分类下所有的子分类和商品全部移动到其他分类中,否则系统会提示删除失败。

4.3、眼镜管理实现

眼镜管理模块是仓库管理系统中非常重要的功能模块之一,主要用于管理仓库中所有的眼镜信息,包括眼镜的名称、规格、数量、图片、包装等。具体实现逻辑如下:

添加眼镜:店员可以通过该功能在系统中添加新的眼镜信息。在添加眼镜时,需要填写眼镜的名称、规格、价格、图片、是否可用等信息,眼镜的数量在添加时默认为零。添加的眼镜系统会自动生成每个眼镜的唯一标识符,方便后续的查询和管理。

查询眼镜:用户可以通过该功能查询系统中所有的眼镜信息。可以通过眼镜名称、规格等关键词进行模糊查询,也可以通过眼镜所属的分类或者所属的仓库进行分类查询。对于查询到的眼镜信息,点击导出按钮可以导出为Excel表格,方便眼镜数据的的统计。

修改眼镜:用户可以通过该功能对系统中已有的眼镜信息进行修改。可以修改眼镜的名称、规格、数量、是否可用等信息。

删除眼镜:用户可以通过该功能删除系统中不再需要的眼镜信息。删除眼镜时需要注意,需要将该眼镜从所有的出入库记录中移除,否则系统会提示删除失败。

综上所述,眼镜管理模块的实现逻辑主要包括眼镜信息的添加、查询、修改和删除。在具体实现过程中,需要注意数据的准确性和完整性,保证系统的稳定性和安全性。

4.4、仓库管理实现

仓库管理主要用于管理仓库中的库位信息,包括库位编号、库位容量、库位状态、存储量等。其实现逻辑如下:

添加库位:店长可以通过该功能在系统中添加新的库位信息。在添加库位时,需要填写库位编号、库位容量等信息。

查询库位:店长和普通用户都可以通过该功能查询系统中所有的库位信息。可以通过库位编号进行查询,也可以通过库位状态(空闲或已占用)进行查询,对于查询到的库位以列表的形式展示。列表内容有仓库名称、仓库地址、存储范围、存储物品数量、最大容量、仓库状态、仓库介绍和是否可用等信息。仓库状态分为“空间充足、库位紧张”两种状态,判断条件是“最大容量”减去“当前存储眼镜数量”是否大于最大容量的十分之一。

删除库位:用户可以通过该功能删除系统中不再需要的库位信息。删除库位时会校验该库位是否还存储有眼镜,存储量不为零的库位不被允许删除,系统会提示删除失败。

4.5、入库管理实现

入库管理是主要用于管理入库操作,包括生成入库单、查询入库记录、修改入库单状态等。其实现逻辑如下:

生成入库单:当供应商提供眼镜时,仓库店员可以通过该功能生成入库单,填写入库单编号、供应商信息、入库时间、入库物品、存放仓库等信息,并点击提交按钮。系统会自动对比仓库的剩余库位与订单的入库量,若剩余库位大于等于入库量,则入库订单生成成功,同时修改该眼镜的库存量以及仓库的存储量;若剩余库位小于入库数量,则提示“入库失败、库位数量不足”。入库流程图如图4-1所示:

图4-1入库流程图

查询入库记录:店长和客户服务人员都可以通过该功能查询系统中所有的入库记录。可以通过入库单编号进行查询,也可以通过入库时间、入库物品、供应商信息、仓库信息等条件进行查询。

修改入库单状态:店长可以通过该功能修改入库单的状态。可以将状态修改为已入库、已取消等状态。如果入库单状态为已入库,将不能再对其进行任何操作。

入库退货管理:当仓库发现眼镜质量有问题或者不符合要求时,可以申请退货。店长可以通过该功能处理退货请求,生成退货单并更新库存信息。系统会自动将退眼镜品的数量和总价退回给供应商,并将眼镜从库存中移除。

4.6、入库退货实现

眼镜的入库就是从供应商手中进货并放到仓库,当仓库发现眼镜质量有问题或者不符合要求时,可以申请退货,将眼镜重新退回给供应商,基于需求设计了入库退货管理功能。

在入库记录列表中,选择想要退货的定到,点击订单后部退货按钮,填写退货数量和原因并提交退货申请。首先会在前端校验,退货数量是否大于入库订单的入库数量,若大于直接提示退货数大于订单数量;后端中会进行二次校验,查询基于该订单的所有退货记录,统计已退货数量,比较已退货数量加上本次退货数量是否查出订单的入库数量,若大于则提示“累计退货数量超出订单数”;再校验当前仓库中存储的该眼镜的数量是否足够用于本次退货,若不够则提示眼镜数量不足。若三次校验通过则退货成功,生成入库退货记录并修改该订单的退货数量、该眼镜的库存数以及存储该眼镜的仓库的存储量。入库退货流程如图4-2所示:

图4-2入库退货流程图

4.7、出库管理实现

出库管理主要用于管理出库操作,包括生成出库单、查询出库记录、修改出库单状态等。其实现逻辑如下:

生成出库单:当客户需要购买某种眼镜时,店员可以通过该功能生成出库单,填写出库单编号、客户信息、出库时间、出库物品、出库数量等信息,提交出库单。出库单在提交时会比较眼镜的库存量与订单的出库量,若库存量大于等于出库量,则出库订单生成成功,同时修改该眼镜的库存量以及存储该眼镜的仓库的存储量;若库存量小于出库数量,则提示“出库失败、库存数量不足”。出库订单生成流程如图4-3所示:

图4-3出库流程图

查询出库记录:店长和客户服务人员都可以通过该功能查询系统中所有的出库记录。可以通过出库单编号进行查询,也可以通过出库时间、出库物品、客户信息等条件进行查询。

修改出库单状态:店长可以通过该功能修改出库单的状态。可以将状态修改为已出库、已取消等状态。如果出库单状态为已出库,将不能再对其进行任何操作。

4.8、出库退货实现

眼镜的出库,是出库给了客户,当客户收到眼镜后发现有质量问题或者不符合要求,可以申请退货,眼镜将从客户手中重新回到仓库,为满足这一需求,所以设计了出库退货功能,就是基于出库订单进行退货。

首先选择一个想要退货的订单,在订单信息尾部有退货按钮,系统店员可以点击拖活,填写退货的数量,退货数量不能大于该订单的数量,然后提交退货申请。在处理退货申请时间,会先查询基于该订单的已退货的总数加上本次想要退货的数量,是否大于该订单的出库数量,若大于则出库失败,如果小于则继续校验存储该眼镜的仓库是否还有空间能够存储退货的眼镜,若仓库空间不够则也不能退货成功。出库订单退货流程如图4-4所示:

图4-4出库订单退货流程图

4.10、本章小节

本章详细介绍了眼镜店仓储管理系统的主要功能,重要部分的代码说明,逻辑复杂的使用流程图的形式分析实现步骤。在改模快中完成了对登陆密码的加密、出入库的管理和人员管理的等功能的实现,实现了从理论到实践的变化。

5、 系统测试

系统测试的目标是确保软件系统的功能、性能、可靠性、安全性和易用性等方面符合预期,同时验证系统是否满足所有的用户需求和业务规则。

5.1、测试方法 

系统测试是非常重要的一个环节,它能够帮助确保系统的质量和可靠性,本平台主要进行功能测试和安全测试。功能测试是验证系统的各项功能是否按照设计要求正常工作,包括界面功能、业务流程、输入输出、数据处理等。安全测试是测试系统的安全性,包括数据保护、访问控制、身份验证等方面,以确保系统的安全性得到了保障。主要是从系统开发人员的角度对软件需要测试的地方进行相应的测试。

5.2、测试范围

在本系统中,主要对眼镜管理、眼镜出库、眼镜入库、出库退货、入库退货五个功能进行了测试。测试范围如表6-1所示:

表6-1 系统测试范围

序号

功能

描述                

1

眼镜管理

测试删除眼镜信息

2

眼镜出库

测试出库订单的生成

3

眼镜入库

测试入库订单的生成

4

出库退货

测试退货后眼镜数量的变化

5

入库退货

测试退货后仓库眼镜数量的变化

5.3、功能流程测试

对系统各个子模块的功能进行测试完毕后,要从头开始测试本系统的整体运行情况,避免出现各个模块之间信息联系出错或者模块之间的跳转失败等错误。要对系统整体进行全面完善的测试,然后不断改进。

图5-1展示了系统的度数分类管理页面,用户可以根据分类名称查询分类信息列表,并且有增删改查的按钮。

图5-1 度数分类管理页面

在眼镜管理页面测试眼镜的添加、删除、编辑和查询功能,都能够正常使用,眼镜管理的主页面如图5-2所示:

图5-2眼镜管理页面

如图5-2所示,蔡司眼镜属于球镜-3.00,这时间我们测试度数分类下有眼镜信息时间,度数分类是否可以删除和修改,测试结果如图5-3所示:

图5-3修改分类失败弹窗

入库管理主界面如图5-4所示,有添加、修改、删除、退货和查询的按钮,供应上和眼镜名称使用精准查询,其他条件使用模糊查询,时间使用范围查询。

图5-4入库管理主界面

入库记录中有退货按钮,点击可以跳转到退货页面,如图5-5所示,在退货页面填入退货数量和备注并提交。

图5-5入库管理主界面

入库退货提交后悔修改该入库订单的退货量字段为员原已退货数量加上本次退货数量,如图5-6所示,同时会在入库退货管理页面生成一条退货记录,如图5-7所示:

图5-6已退货数量变化

图5-7入库退货记录列表

为了系统数据统计的方便,以及报表的制作,系统中每一个列表页面都有导出报表和带功能,测试货物信息列表导出Excel的结果,如图5-8所示:

图5-8货物信息打印页面

选取入库订单的退货功能,测试退货后眼镜的库存数和仓库的剩余库位数是否变化合理。具体流程和结果如图5-19所示:

图5-9退货后眼镜库存变化图

5.4本章小节

经过反复的测试,本平台基本上运行稳定,各个模块与数据库的交互稳定,对数据的增删查改都可以正常实现;系统的各个模块运行正常,信息修改等操作可以正常使用。由此看出,平台的各项功能基本实现,满足需求分析。


6、结论与展望

本文的研究基于对现实需求的深入了解和分析,设计并实现了一套功能完善的仓库管理系统,其各项模块都能够有效地解决相关管理问题,实现了对仓库物品的分类、管理、出入库、盘点等多方面的管理需求。同时,系统具有良好的扩展性和可维护性,能够适应不断变化的业务需求。

经过测试,本系统的运行稳定可靠,能够满足实际场景下的需求。用户可以轻松地管理仓库中的眼镜,根据实际情况进行入库和出库操作,进行库存的盘点和调整,管理供应商和客户信息等等。系统可以有效地提高仓库管理的效率,降低出错率,提升工作效率和精度,为企业管理提供了有力支持。

展望:

  1. 本文研究的仓库管理系统具有广泛的应用前景和开发空间。未来,我们可以进一步加强系统的数据分析能力,增加数据可视化功能,更好地理解库存变化趋势和规律,提高库存利用率和降低成本。我们也可以进一步完善系统的用户角色权限管理,以保护数据的安全性和可靠性。此外,我们还可以添加可视化分析模块。将仓库中眼镜进出库、库存变化记录等信息以饼形图或其他图进行数据可视化展示,会仓库的存储信息会更加的清晰明了。

最终,我们的目标是为用户提供更加智能化、高效化、可靠化的仓库管理系统,以更好地服务于企业和社会。

参考文献

  1. 黄文毅,罗军. IntelliJ IDEA 软件开发与应用[M].北京:清华大学出版社,2020.9.
  2. 高建,直敏,李静.物联网技术在仓库管理中的应用[J].无线互联科技,2022,19(11):107-109.
  3. 郑人杰,马素霞. 软件工程概论(第三版)[M].北京:机械工业出版社,2019.2.
  4. 杨长春. 软件需求分析实战[M].北京:清华大学出版社,2020.8.1.
  5. 李欣雨.智能仓库管理系统的研究及开发[D].导师:蔡珣.山东大学,2022.
  6. 刘铃.仓库管理系统的设计与实现[J].电子制作,2022,(18):52-54+42..
  7. 周廷琛. 刍议精细化在仓库管理标准工作中的重要性[J]. 中国物流与采购,2021,(18):83-84.
  8. 杨中书,刘臣宇. 基于E-R模型的关系数据库设计方法[J].价值工程,2014,33(30):242-243.
  9. 王有斌. 浅谈智慧化仓库管理研究[J]. 全国流通经济,2022,(15):8-10.
  10. 黄圣粤,张捷.生产原料仓库管理系统的设计与实现[J].工业控制计算机,2023,36(03):115-116.
  11. 温艳如. 多维数据可视化分析工具的设计与实现[D].西安电子科技大学,2021.


致  谢

值此论文完成之际,我谨向那些在研究工作中给予我关心、支持和帮助的人们致以最诚挚的谢意。

首先,我要感谢我的导师XX。XX导师在整个研究过程中给了我无微不至的指导和关怀。他不仅在学术上帮助我解决了许多问题,还关注我的生活,给我提供了许多实用的建议和支持。没有他的指导和帮助,我无法完成这篇论文。

其次,我要感谢我的实验室同事。他们在我研究的各个阶段都给予了我很多帮助。我很感激他们的帮助和支持,没有他们,我的研究工作也不可能取得这样的成果。

此外,我要感谢我的家人。他们一直在我身边,支持我、鼓励我,让我能够专注于我的研究工作。他们的爱和支持是我不断前进的动力。

最后,我要感谢所有在我研究过程中帮助过我的老师、同学和朋友。他们给了我许多建议和帮助,使我能够更好地完成我的研究工作。我会铭记于心,感激他们的帮助。

再次感谢所有支持和帮助过我的人们,让我能够在这个项目中取得成功。我将永远珍惜这些帮助和支持,继续努力前行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1457952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何防止被恶意刷接口?

在面试时,经常会被问一个问题:如何防止别人恶意刷接口? 这是一个非常有意思的问题,防范措施挺多的。今天这篇文章专门跟大家一起聊聊,希望对你会有所帮助。 1 防火墙 防火墙是网络安全中最基本的安全设备之一&#x…

机器学习---规则学习(一阶规则学习、归纳逻辑程序设计)

1. 一阶规则学习 “一阶”的目的:描述一类物体的性质、相互关系,比如利用一阶关系来挑“ 更好的”瓜,但实际应用 中很难量化颜色、 …、敲声的属性值。一般情况下可以省略全称量词。 命题逻辑:属性-值数据 色泽程度&#xff1a…

ElasticSearch之Index Template 和Dynamic Template

写在前面 在ElasticSearch之Mapping 一文中我们一起看了es的dynamic mapping机制,通过该机制允许我们不需要显式的定义mapping信息,而是es根据插入的文档值来自动生成 ,比如插入如下的文档: {"firstName": "Chan…

【C语言】指针练习篇(下),深入理解指针---指针练习题【图文讲解,详细解答】

欢迎来CILMY23的博客喔,本期系列为【C语言】指针练习篇(下),深入理解指针---指针练习题【图文讲解,详细解答】,图文讲解指针练习题,带大家更深刻理解指针的应用,感谢观看,支持的可以…

ctfshow-web29~40-WP

web29 if(isset($_GET[c])){$c = $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__); } 首先先system(“ls”);查看一下文件 既然过滤了flag,那我们就fla*的形式进行匹配,结合tac命令输出flag.php文件内容

舵机PID控制

目录 舵机工作原理 舵机PID控制 原理介绍 代码 主代码 赋值PWM寄存器 限制PWM赋值 取绝对值 位置式PID控制 位置式离散PID 舵机工作原理 控制电路接收信号源的控制脉冲,并驱动电机转动:控制电路接收来自遥控器或者单片机的控制信号,然后驱…

milligram css 源码浅析

一、前言 milligram 是我在 20 年接触并使用的一个 CSS 库,他的出现时间已经无法溯源了,根据 npm 上的发布时间最早是 2015 年,而在国内名气起来的时间大概就是 2020 年了,同时 milligram 最后的更新也停在了那一年。 由于当时只…

[工具探索]VSCode介绍和进阶使用

相比较GoLand、PhpStorm、PyCharm、WebStorm的重量级内存占用,从Windows系统来,各种卡死,换到MacOS倒不会卡死,但是内存占用太多,影响体验,决定换到VSCode。当然这个过程需要适应过渡期,旧伙计都…

C++入门 上(命名空间 缺省参数 函数重载)

C入门 上 命名空间命名空间定义命名空间使用 C输入输出缺省参数缺省参数概念缺省参数分类 函数重载函数重载概念C支持函数重载的原理--名字修饰 命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用…

阿里云服务器部署配置选择全攻略

阿里云服务器配置怎么选择?根据实际使用场景选择,个人搭建网站可选2核2G配置,访问量大的话可以选择2核4G配置,企业部署Java、Python等开发环境可以选择2核8G配置,企业数据库、Web应用或APP可以选择4核8G配置或4核16G配…

ActiveMQ高可用架构涉及常用功能整理

ActiveMQ高可用架构涉及常用功能整理 1. activemq的集群模式2. 镜像模式高可用系统架构和相关组件2.1 架构说明2.2 相关概念说明2.3 消息模型2.3.1 点对点2.3.2 发布订阅 3. activemq常用命令4. activemq配置集群5. 疑问和思考5.1 activemq的数据删除策略是怎样的?5…

已解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法

今天在使用 IDEA 使用 MyBatis 的时候遇到了这种情况: 可以看到 userMapper 下有个红色的波浪警告,虽然代码没有任何问题,能正常运行,但是这个红色警告在这里杵着确实让人很窝心。 于是我在网上找了找,最终明白了原因…

使用静态CRLSP配置MPLS TE隧道

正文共:1591 字 13 图,预估阅读时间:4 分钟 静态CRLSP(Constraint-based Routed Label Switched Paths,基于约束路由的LSP)是指在报文经过的每一跳设备上(包括Ingress、Transit和Egress&#xf…

DBeaver通用数据库管理 连接DM8 数据库及其配置

一.工具版本说明 DBeaver版本: 21.0.202106012023, 推荐官网下载。 DM8/达梦数据库: DM 8 Windows 官网安装手册 如果想深入了解DM8 数据库操作请参考:DM8/达梦 数据库管理员使用手册详解 二.DM8/达梦驱动下载 下载渠道/官方文档 DM 8/达梦技术…

LeetCode JS专栏刷题笔记(一)

一、前言 LeetCode 在前不久出了一个 JavaScript 专栏,这个专栏一个目的是为了非前端工程师学习 JS,另一个是为了前端工程师提升 JS 能力。 因此在这个专栏中,基本不涉及什么具体算法问题,都是一些 JS 的入门语法与常见的 JS 面…

Maven(基础)、MyBatis

简介 Apache Maven是一个项目管理和构建工具,它基于项目对象模型 (POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档 官网: http://maven.apache.org/ Maven作用 Maven是专门用于管理和构建Java项目的工具,它的主要功能有&#x…

Elasticsearch查询报错 Result window is too large

一现象: es数据分页查询前端提示系统异常,后端报错日志 二根本原因: 默认情况下,Elasticsearch 限制了 from size 参数的组合不能超过 10,000 条记录,用于防止查询大数据集时对系统资源的过度消耗 三解决办法&#…

JavaSE——面向对象基础(1/4)-面向对象编程、程序中的对象、对象的产生、对象的执行原理、类和对象的一些注意事项

目录 面向对象编程 程序中的对象 对象的产生 对象的执行原理 类和对象的一些注意事项 面向对象编程 开发一个一个的对象,把数据交给对象,再调用对象的方法来完成对数据的处理。 例如设计一个学生的对象,其中有姓名和成绩等&#xff0c…

可视化视频监控平台EasyCVR如何配置服务参数以免getbaseconfig接口信息泄露?

可视化云监控平台/安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,平台支持高清视频的接入和传输、分发,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集…

【.NET Core】C#编程规范

【.NET Core】C#编程规范 文章目录 【.NET Core】C#编程规范一、概述1.1 结构清晰第一1.2 简洁之风1.3 代码风格保持一致性 二、命名约定三、类型参数命名指南3.1 请使用描述性名称命名泛型类型参数,除非单个字面名称完全具有自我说明性且描述性名称不会增加任何作用…