仓库管理系统研究报告

老张



第1章 系统需求分析

1.1问题描述

现实中仓库作为所有企业、集体都是一个不可或缺的组成部分,但是仓储管理由于物品种类多样,数量众多,又由于管理人员不一,导致管理复杂,过去可能存在很多的仓库还是使用手工的管理方式、物品领用发放都是手工记录,这往往导致了仓库账务不及时、不透明等问题,在信息化深入的今天,移动互联网应用越来越普及,仓库管理基于互联网的应用变得更加迫切。各个企业实体使用仓库系统成为一种必然的趋势、使用仓库管理系统可以更好的进行物品数量的统计分析,还会为其他采购及领用部门做参考的依据。

为了解决仓储管理中的问题,所以接下来我们开发出一款能进行物品分类信息及数量管理的系统。

1.2 用例模型分析

本系统包含员工、管理人员等两种角色,员工可以进行进货管理、销售管理、库存管理等,管理人员可以进行商品信息管理、客户信息管理、供应商信息管理、库存信息管理等。用例图如下:

员工用例图:

Java 仓库管理系统 Java仓库管理系统结论_信息管理

管理员用例图:

Java 仓库管理系统 Java仓库管理系统结论_数据库_02

第2章 架构设计

2.1 逻辑体系架构设计

JSP页面发送请求到Controll类,也就是MVC的控制器,Controll类收到视图发出的请求后,会对请求进行分发,并调用相关的业务类对请求进行处理;POJO类(实体类,也就是MVC的数据模型)是业务类要处理的数据对象,处理的数据对象可以由控制器返回到视图。

2.2 物理体系架构设计

第3章 详细设计

2.1 功能详细设计

1.进货管理,首先用户可以输入进货数量及产品ID信息进行进货新增操作,新增后进货管理中会增加此进货信息,并且此条商品库存会更新

2.商品信息管理,管理员可以进行商品信息管理,首先可以点击新增按钮打开新增界面,然后录入相应的商品信息后点击保存即可,本页面将显示新增的商品信息,除此之外还可以点击右侧修改及删除按钮进行相应的操作

3.商品分类管理,管理员可以进行商品分类信息管理,首先可以点击新增按钮打开新增界面,然后录入相应的商品分类信息后点击保存即可,本页面将显示新增的商品分类信息,除此之外还可以点击右侧修改及删除按钮进行相应的操作

4.销售管理,员工可以点击左侧销售信息打开销售操作界面,在此界面可以输入客户名称及ID后点击新增按钮,完成销售的新增操作,然后还可以点击右侧查看及删除按钮进行相关操作

4.客户信息管理,管理员还可以点击客户信息进行客户信息的增删改等操作

5.供应商信息管理,管理员还可以点击供应商信息进行供应商信息的增删改等操作

6.员工信息管理,管理员还可以点击员工信息进行员工信息的增删改等操作

2.2 类模型设计

第4章 数据库设计

2.1 数据库概念模型设计

2.2 数据库逻辑模型设计

2.2 数据库的建立及表设计

创建数据库

CREATE DATABASE  `market`;

创建表

1.客户表

CREATE TABLE `custom` (
  `cusid` int(25) NOT NULL,
  `cusname` varchar(25) NOT NULL,
  `tel` varchar(25) DEFAULT NULL,
  `person` varchar(25) DEFAULT NULL,
  `address` varchar(25) DEFAULT NULL,
  `emali` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`cusid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

2.管理员信息表

CREATE TABLE `manager` (
  `managerid` varchar(25) NOT NULL,
  `managername` varchar(25) NOT NULL,
  `card` varchar(25) NOT NULL,
  `sex` varchar(25) DEFAULT NULL,
  `tel` varchar(25) DEFAULT NULL,
  `stafftype` varchar(25) NOT NULL,
  `pwd` varchar(25) NOT NULL,
  PRIMARY KEY (`managerid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

3.产品信息表创建

CREATE TABLE `product` (
  `proid` int(25) NOT NULL AUTO_INCREMENT,
  `pname` varchar(25) NOT NULL,
  `price` double(25,3) NOT NULL,
  `inprice` double(25,3) DEFAULT NULL,
  `prodate` date DEFAULT NULL,
  `reledate` date DEFAULT NULL,
  `supname` varchar(25) DEFAULT NULL,
  `protype` varchar(25) DEFAULT NULL,
  `unit` varchar(25) DEFAULT NULL,
  `marks` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`proid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8556505 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

4.销售表

CREATE TABLE `sale` (
  `saleid` int(25) NOT NULL,
  `proid` int(25) NOT NULL,
  `pname` varchar(25) NOT NULL,
  `price` double(25,3) DEFAULT NULL,
  `num` int(25) DEFAULT NULL,
  `total` varchar(25) DEFAULT NULL,
  `saledate` date DEFAULT NULL,
  `cusname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `cusid` varchar(25) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `marks` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`saleid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

5.员工表的创建

CREATE TABLE `staff` (
  `staffid` varchar(25) NOT NULL,
  `staffname` varchar(25) NOT NULL,
  `card` varchar(25) NOT NULL,
  `sex` varchar(25) DEFAULT NULL,
  `tel` varchar(25) DEFAULT NULL,
  `stafftype` varchar(25) NOT NULL,
  `pwd` varchar(25) NOT NULL,
  PRIMARY KEY (`staffid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

6.供应商表的创建

CREATE TABLE `supply` (
  `supid` int(25) NOT NULL AUTO_INCREMENT,
  `suppname` varchar(25) NOT NULL,
  `tel` varchar(25) DEFAULT NULL,
  `person` varchar(25) DEFAULT NULL,
  `address` varchar(25) DEFAULT NULL,
  `emali` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`supid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

7.产品类别表创建

CREATE TABLE `type` (
  `protypeid` int(25) unsigned NOT NULL AUTO_INCREMENT,
  `typename` varchar(25) NOT NULL,
  PRIMARY KEY (`protypeid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

第5章 系统实施实现

4.1 系统开发技术介绍

本系统的前台使用Jsp用于页面显示,Jquery用于前后数据交互,CSS实现页面样式显示,后台使用开发语言是Java,所使用的页面开发工具是Eclipse。项目使用当前比较流行的Spring框架,控制层使用SpringBoot框架,使用Mybatis作为数据库持久访问层实现数据库交互;数据库存储部分,使用关系数据库Mysql及HDFS分布式存储系统,并使用大数据技术中Hbase、Hive实现数据保存及查询。

4.1.1 SpringBoot

SpringBoot属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。

4.1.2 Mybatis

Mybatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

4.1.3 Spring

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。

4.1.4 JQuery

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

4.1.5 CSS

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

4.1.6 JSP

JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

4.2  编码的实现

       本项目基于以下软硬件环境下进行代码编写、调试运行,最终发布到web服务器中实现生产环境运行,

硬件设备

内存:4G以上的计算机;

软件支持

本系统支持的操作系统:Win7、Win10;

本系统支持的数据库:Mysql;

本软件的开发工具:Eclipse、SQLYog

本系统支持的浏览器:谷歌浏览器;

JDK环境:jdk1.8及以上

核心配置文件applicationContext.xml代码如下所示:

<import resource="classpath:config/application-redis.xml"/>
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 配置和Mybatis的整合 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定Mybatis全局配置文件的位置 -->
<property name="configLocation" value="classpath:config/mybatis-config.xml"></property>
<property name="dataSource" ref="pooledDataSource"></property>
<!-- 指定mybatis,mapper文件的位置 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
</bean>
<!-- 配置扫描器,将mybatis接口的实现加入到ioc容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 扫描所有的dao接口的实现加入到ioc容器 -->
<property name="basePackage" value="com.hrm.dao"></property>
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
<constructor-arg name="executorType" value="BATCH"></constructor-arg>
</bean>
<!-- 事务控制的配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 控制数据源 -->
<property name="dataSource" ref="pooledDataSource"></property>
</bean>
<!-- 开启基于注解的事务,使用xml配置形式的事务(必要主要的都是使用配置式) -->
<aop:config>
<!-- 切入点表达式 -->
<aop:pointcut id="txPoint" expression="execution(* com.hrm.service..*())"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
</aop:config>
<!-- 配置事务增强,事务如何切入 -->
<tx:advice id="txAdvice">
<tx:attributes>
<!-- 所有方法`都是事务方法 -->
<tx:method name="*"/>
<tx:method name="get.*" read-only="true"/>
</tx:attributes>
</tx:advice>

本项目使用tomcat运行部署

启动项目后可以使用浏览器打开系统界面、登录如下图所示:


第6章 系统的测试

系统测试是将已经继承好的软件系统,作为计算机系统的一个元素,与计算机硬件、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的集成测试和确认测试。

4.1系统测试的目的

系统测试的目标是:通过与系统的需求规格说明进行比较,检查软件是否存在与系统规格说明不符合或与之矛盾的地方,从而验证软件系统的功能和性能等满足规格说明所制定的要求。

4.2系统测试的方法

1、白盒测试

白盒测试也叫结构测试(透明盒测试)。白盒测试只关注系统的内部细节和逻辑结构,即把被测试的程序看作是一个透明的盒子。白盒测试是在程序内部进行的,主要是完成软件内部操作的验证。

2、黑盒测试

黑盒测试也叫功能测试。测试人员把被测试的软件系统看作是一个黑盒子,测试人员并不关心盒子内部的结构和特性,只关注软件产品的输入和输出的数据,从而检查此软件产品是否符合其功能说明。

4.4测试用例

测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。由于本项目功能比较多,测试用例只展示一下部分内容:

4.4.1  管理员登录验证

在进入系统主界面后,输入相应的信息,点击登录按钮进行测试。如表4.1所示。

表4.1 用户登录测试

测试项目名称

仓库管理系统——验证用户登录的功能

测试用例编号

1

测试内容

验证用户是否能成功登录

测试输入数据

管理员用户名:admin  密码:123456

学生用户名: stu 密码:123456

教师用户名: tea 密码:123456

测试次数

分别3次

预期结果

当输入正确的用户名和密码时可以登录成功,输入不正确的用户名和密码时,登录失败

测试过程

进入系统登录界面后,

输入用户名密码后点击登录

测试结论

只有在输入互相匹配的用户名和密码时才可以登录成功

备注

4.4.2  进货管理验证

员工登录系统后,录入成绩。如表4.2所示。

表4.2 进货操作测试

测试项目名称

仓库管理系统——进货操作的功能

测试用例编号

1

测试内容

验证是否可以成功进货操作

测试输入数据

新增进货,可以正常操作

测试次数

分别3次

预期结果

可以成功操作并可以查询界面看到进货信息

测试过程

进入系统登录界面后,依次增加、修改、删除成绩

测试结论

可以成功操作并查询界面看到变化

备注

4.5测试结果

经对仓库管理系统的多次测试,发现本系统已经基本实现了仓储管理的基本功能:如用户可以进货操作、信息注册登录、销售出库、查询库存等,管理员对系统中用户信息、产品分类信息、产品信息、仓库管理、供应商信息客户信息管理等。但本系统还存在许多不完善部分,如页面外观不够美观,后端使用到的技术不够丰富。以后将会在本系统中进一步完善。

第5章

经过这段紧张学习及开发,仓储管理系统基本完成,相应的功能也基本实现,但系统的功能是有很多不足,还有很多需要完善的地方,由于本次系统开发技术部分是初次接触,所以还有很多地方需要继续学习。

通过开发这个系统,我已经熟练掌握项目开发方法和步骤,学习了很多方面的开发知识,后续还需要开发相关技术上进一步研究学习,同时,对于数据库的操作也更加熟练了。

word版本