如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于仓库信息管理方面的不规范,容错率低,管理人员处理数据费工费时,采用新开发的仓库管理系统可以从根源上规范整个数据处理流程的正规性和合法性。
仓库管理系统实现的功能包括仓库管理,出入库管理,物资管理,员工管理等功能。该系统采用了Mysql数据库,Java语言,SSM框架等技术进行编程实现。
仓库管理系统可以提高仓库信息管理问题的解决效率,优化仓库信息处理流程,并且能够保证存储数据的安全,它是一个非常可靠,非常安全的应用程序。
关键词:仓库管理系统;Mysql数据库;Java语言
1.1 课题背景
二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。时代进步的标志,就是让人们过上更好的生活。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿沟,信息的传播速度极慢,信息处理的速度和要求还是通过人们骑马或者是信鸽传递,这些信息传递都是不可控制的,中间很有可能丢失,信息的传递水平决定了人们生活的水平。现如今,大家都在用互联网来实现自己的目的,从内部管理设置计算机管理,提高内部信息管理水平,从外部市场也可以用计算机获取相关数据进行处理,如今各行各业已经严重依赖于计算机了。
本课题研究和开发仓库管理系统,让安装在计算机上的该系统变成管理人员的小帮手,提高仓库信息处理速度,规范仓库信息处理流程,让管理人员的产出效益更高。
1.2 国内外研究现状
国外现代化仓库管理在信息化管理方面起步比较早,这是因为国外先进行了信息化革命,更早的适应了信息化,仓库管理只是物流仓储的一个环节而已,针对仓库用途的不一样,在仓库管理方面也有一些不一样的环节。比如亚马逊在仓库管理上面对每个商品外包装都保持一致,虽然可以在提高品牌在顾客辨识度上有效,但是对于卖家就不太友好,因为关于退货方面因为外包装一致反而不好处理,造成资源上的浪费。
国内做的最好的就属于邮政和京东了,他们两个在物流仓储这方面做的属于世界前列。仅仅考虑小成本的仓库管理方面,还是有可以借鉴的模式的。京东已经实现了无人化仓库服务,整个巨大的仓库里面都是运货机器人,一切物品的存放和运输都已经达到了当今仓库管理行业的顶级,但是因为中转属性的不同,不同的仓库不同的目的,所以要针对专门业务来分析仓库管理,以上国内外都比较厉害的企业也只能作为参考。
1.3 课题意义
传统处理数据,必须是一张张纸,然后处理完毕又是统计在一张张纸上面,不断的重复处理,最终有个结果给最高层作为参考,这个模式在互联网没有出现之前,是一种常见的事情,信息管理的效率提不上去,那就用人才,人多力量大,是一个以前人们的常识。计算机的诞生就是发现了人多力量大的不足,比如高端计算人才的培养已经跟不上使用了,所以人们研究出专门帮助人们计算的机器,就是计算机的前身,到了互联网时代,人们发现完全可以让程序供应商提供解决方案,自己挑选自己合适的方案来提高自己的产出比。于是市面上就出现了各种各样的依靠程序处理信息的解决方案。
本课题研发的仓库管理系统,就是提供仓库信息处理的解决方案,它可以短时间处理完信息,并且只需要使用者动动鼠标和键盘就能获取自己需要的信息,并且这些信息都有专门的存储设备,而且数据的备份和迁移都可以设定为无人值守,从人力角度和信息处理角度以及信息安全角度,仓库管理系统是完胜传统纸质操作的,所以仓库管理系统就是如此的值得信赖。
1.4 研究内容
本文对仓库管理系统的设计与实现分成六个章节进行描述。
第1章:研究仓库管理系统的背景,以及开发仓库管理系统的意义。
第2章:对开发仓库管理系统的环境还有技术进行说明。
第3章:分析仓库管理系统的可行性,性能,流程以及功能。
第4章:设计仓库管理系统的功能结构,设计数据库E-R图以及对数据表的存储结构进行设计。
第5章:实现仓库管理系统的功能并进行功能界面展示。
第6章:对系统测试进行阐述,以及对本系统部分功能进行检测。
第2章 开发环境与技术
本章节对开发仓库管理系统需要搭建的开发环境,还有仓库管理系统开发中使用的编程技术等进行阐述。
2.1 Java语言
Java语言是当今为止依然在编程语言行业具有生命力的常青树之一。Java语言最原始的诞生,不仅仅是创造者感觉C语言在编程上面很麻烦,如果只是专注于业务逻辑的处理,会导致忽略了各种指针以及垃圾回收这些操作,导致出现问题需要解决的时间往往大于正常编程处理业务逻辑的时间,这些是非常浪费时间的。Java语言的创造者就完美的解决了这个问题,把指针处理和垃圾处理全部自动化,虽然这会损失一些性能,但是随着计算机硬件的不断发展,这些性能是可以忽略考虑的。并且C语言是针对硬件开发的语言,在符合条件的硬件上面进行编程可以最大化利用硬件的性能,但是随着硬件的变化或者操作系统的变更,如果还是用C语言的话需要对整个程序进行重新编程,只有随着市场变化而变化的语言才是符合潮流,符合生存规律的语言。Java语言的创造者就针对C语言的缺点专门开发了Java语言。让Java语言不管是在什么样的环境里都是可以运行,因为在Java语言运行外面套了一个壳,也就是虚拟机,只要是Java虚拟机能安装的电脑都可以运行Java的程序。
2.2 MYSQL数据库
MySQL数据库是关系型数据库的一种,也是传统的行式数据模式,获取一些数据是先一行一行的获取,然后一行一行的显示,与最近大数据兴起的列式数据库有着明显的不同。行式数据库主要是处理最重要的数据逻辑部分,并且必须是有效数据,这样每一处的数据关联都是不可损坏,如果对数据安全性比较高的肯定是需要选择MySQL数据库,列式数据库的发明仅仅是因为读取效率高,与传统的MySQL数据库比起来在数据写入方面并不会高明到哪里。MySQL虽然比起oracle或者SQL SERVER来讲,安装包只是几十兆甚至几百兆,有点小,但是功能并不会弱到哪里,严格遵循SQL标准语法。MySQL的数据存放形式从大向小的说是数据库最大,然后是表,每个表里面存放数据是有一定的规则的,数据存放是表格形式的,也就是说有横也有竖,横着的为行,一般表示一条数据,每个表都有字段,而字段是以列的形式存在,这样能保证一条数据每一个字段对应的是相同数据类型的数据。表与表之间还可以进行关联,进行分表操作,如果一条数据相关项目属性太多,那么可以把有效的相关联系做成关联,可以设定是否唯一。
2.3 IDEA开发工具
IDEA是捷克共和国的Java程序员开发人员创造的一个开发软件,刚开始主要是对于用Eclipse软件他们用得不顺手,所以直接开发了这款软件。之所以不顺手原因在于没有代码提升功能,原因是Eclipse只是把代码提示作为一种插件形式的存在,如果有些程序开发人员不清楚代码提示插件可能会出问题,并且代码提示只是用来作为插件,所以功能上有所欠缺。IDEA不仅仅代码提示做的很好,在代码重构上面更上如虎添翼,程序开发人员可以选择一段代码然后IDEA就会对代码进行分解重构,有效的把代码弄得更够层次感,复用性更高,用着更简洁和方便,大大的减少了代码工作量,提升了代码开发效率。当然,IDEA对于使用者这么好,肯定也是有目的的,原因在于插件越多越友好,就需要花费大量的金钱来使用,所以说IDEA使用主要是看自己喜好。
4.2.2 数据库物理设计
本小节主要任务即是根据上述内容进行数据存储结构的设计,也就是在数据库中设计存放本系统的数据的数据表,设计数据表时,需要对各个字段进行确定,通常来说,一个实体与一张数据表相对应,实体的属性就用来表示字段名称,不同的字段表示的数据类型以及取值都不相同,这里需要根据系统实际数据的情况进行设置,同时也需要在具体表中确定该表的主键,以及该表各个字段是否能够保持空等进行说明,设计完成一张数据表的结构之后,在保存时同样要命名,尽量选择英文名称进行命名并保存,方便今后系统对数据表进行数据存储访问时,在提高数据存储效率的同时,还不容易导致系统出错。接下来就对设计的数据表进行展示。
表4.1 仓库信息表
字段 注释 类型 空
id (主键) 主键 int(11) 否
cangku_uuid_unmber 仓库编号 varchar(200) 是
cangku_name 仓库名称 varchar(200) 是
cangku_types 仓库类型 int(11) 是
cangku_address 所在区域 varchar(200) 是
create_time 创建时间 timestamp 是
表4.2 管理员表
字段 注释 类型 空
id (主键) 主键 bigint(20) 否
username 用户名 varchar(100) 否
password 密码 varchar(100) 否
role 角色 varchar(100) 是
addtime 新增时间 timestamp 否
表4.3 物资信息表
字段 注释 类型 空
id (主键) 主键 int(11) 否
wuzi_uuid_unmber 物资编号 varchar(200) 是
wuzi_name 物资名称 varchar(200) 是
wuzi_types 物资类型 int(11) 是
Wuzi_kucun_number 物资数量 int(200) 是
wuzi_min 最低预警值 int(200) 是
wuzi_max 最高预警值 int(200) 是
wuzi_new_money 物资价格 decimal(10,2) 是
wuzi_danwei 物资单位 varchar(200) 是
wuzi_gongyingshang 供应商 varchar(200) 是
cangku_id 所在仓库 int(11) 是
create_time 创建时间 timestamp 是
表4.4 出入库表
字段 注释 类型 空
id (主键) 主键 int(11) 否
wuzi_churu_inout_uuid_number 出入库流水号 varchar(200) 是
wuzi_churu_inout_name 出入库名称 varchar(200) 是
wuzi_churu_inout_types 出入库类型 int(11) 是
wuzi_churu_inout_content 备注 text 是
insert_time 添加时间 timestamp 是
create_time 创建时间 timestamp 是
表4.5 出入库详情表
字段 注释 类型 空
id (主键) 主键 int(11) 否
wuzi_churu_inout_id 出入库 int(11) 是
wuzi_id 物资 int(11) 是
wuzi_churu_inout_list_number 操作数量 int(11) 是
insert_time 操作时间 timestamp 是
create_time 创建时间 timestamp 是
表4.6 员工表
字段 注释 类型 空
id (主键) 主键 int(11) 否
username 账户 varchar(200) 是
password 密码 varchar(200) 是
yonghu_name 员工姓名 varchar(200) 是
yonghu_photo 头像 varchar(255) 是
yonghu_phone 员工手机号 varchar(200) 是
yonghu_id_number 员工身份证号 varchar(200) 是
yonghu_email 邮箱 varchar(200) 是
sex_types 性别 int(11) 是
yonghu_delete 假删 int(11) 是
create_time 创建时间 timestamp 是