基于java+springboot的超市仓库管理系统
摘 要:
随着现代工业的发展,计算机信息管理系统越来越受到企业重视。仓库管理系统是典型的信息管理系统(IS),是现代企业不可缺少的部分,通过使用该系统,促进仓管部门规范化管理,提高管理效率和水平;能够方便快捷地将原来分散的货物信息进行有机地组织和管理,及时提供可靠信息,为企业的科学化决策提供重要依据。仓库管理系统开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。本文主要分析了仓库管理系统的一些基本功能和组成情况,包括系统的需求分析、系统结构,功能模块划分以及数据库模式分析等,重点对应用程序的实际开发实现作了介绍。达到了数据的一致性和安全性,且应用程序功能完备,符合了仓库管理系统作为典型的信息管理系统(MIS)的要求。本系统采用了C/S模式,使用java核心集合和框架和数据库使用。系统的实现具有很好的现实意义和很高的实际价值。
关键词:超市进销存管理;Java;sql Server;信息管理
1引言
1.1项目背景
“超市仓库管理系统”(Warehouse ManagementSystem,简称WMS) 是用来管理仓库内部的人员、库存、工作时间、定单和设备的软件实施工具等。其主要作用是管理和控制仓库所有人出库动态,统计分析库存数据,使决策人员及早发现问题,采取相应措施,调整库存结构,缩短储备周期加速资金周转,从而保证企业生产中畅通的物流。同时最大限度地 降低库存占用,及时补救管理中的漏洞。使库存管理系统实时地反映企业中各个仓库的现时情况,为各类管理人员从不同侧面提供所需信息,以便协调企业经营收到更大效益。
如今,仓库管理软件已经在世界各发达国家广泛应用了,使用的范围越来越广阔。成本越来越低廉。主要应用于大中小型企业,工物流公司,超市以及一些科研单位。
管理系统对于一个仓库来说其核心就是通过提供科学的进销方式和库存管理来取得高经济效益 。通过了超市管理系统,对于仓库的一些信息的情况,通过有效的管理来实现自动化,提高了仓库管理的水准。
1.2项目开发的现实意义
开发仓库管理系统管统的谜底就是为了使管理模式从传统意义上的纸质记录转变为信息技术的管理,它的存在为仓库工作人员管理仓库提供了方便。根据仓库管理系统的实际情况进行调研之后,再对它需求进行详细的分析,使它的模式不断得到改进,开发出一套新的管理系统,除此之外,在开发的过程中领悟它的思想精髓所在,并且掌握流程和方法。随着信息技术的不断发展,仓库管理系统也不断地得到完善,在现实中,仓库管理系统将越来越离不开信息化的管理,所以在开发的过程中务必功根据仓库进货、出货、人员的基本信息进项相对应的修改,使其能快速地适应管理系统的需要。
仓库管理系统系统的现实意义:提供材料出入库管理等实用功能。 像进货管理、销售管理、库存管理、统计报表。每天的数据多会以图表的形式展示给相应的工作人员,对数据的了解有非常便利的作用。
2可行性分析及总体设计原则
2.1可行性分析
可行性分析,也称为可行性研究,它是基于调查后,从开发新系统是否具有其必要性和可能性而出发的。它是从技术、经济等方面来进行研究和分析,以尽量降低投资的风险和失误,提高新系统的开发成功率。用最小的代价在最短的时间内确定问题能否解决是可行性分析的目的。
以下从三个方面对技术,经济、社会三个方面来对该管理系统的开发进行分析和研究。
2.1.1可行性技术
根据系统的功能,实现系统的运行得根据系统的技术,硬件的要求,软件的性能,环境条件和其他条件都处于良好状态,估计利用现有的技术,目标的实现可以在系统上完成。同时,考虑给予更充分的发展期,预期的系统可以在规定的期限内开发。
从上面的分析,对教务管理系统培训机构发展在技术上是可行的。
2.1.2经济可行性研究
有现代信息化的设备配置,并具有系统应用平台的支持。所以没有必要把钱用来买其他设施。基于我没有钱开发应用系统的开发,以及软件开发成本也不高,可忽略不计。
从以上分析,教务管理系统培训机构在经济上是可行的。
2.1.3社会可行性
从法律的因素来看,主要是社会可行性,用户的可行性研究。
(1)法律因素
该系统是基于教务培训管理系统的实际情况开发研制,通过大量的调查得出的结论,该系统的软件设计是在独立的环境下完成的,不可复制的软件产品。
(2)用户的可行性
系统用户的需求,但需要使用Windows个人电脑平台,不需要特殊的技能。由系统管理员,需要使用Tomcat服务器的能力,在投入使用前,不需要培训,即可操作系统。它既可以降低成本,又简化操作过程。
从以上的分析,本系统具有社会可行性。
2.2个设计原则
为了方便设计,对系统的实施和维护,便于系统用户操作,所以我们必须采取一些设计原则。下面是主要设计原则:
简单:操作方便,用户的体验感非常好,能够功能方便的解决用户的需求。系统说明简明扼要,一看便知。
目的:本系统是根据某公司管理仓库信息便利,对市场需求要有一定理解。
实用性:系统能满足仓库信息管理,有非常好的商业价值。
一致性:后端代码变量、前端代码的变量、数据命名都遵循见名知意的规则。代码规范满足阿里巴巴设计规范。执行的方法功能对应的代码也能让人一看便知。通过上下文就能读懂代码结构,甚至是功能。
本系统采用SpringBoot先进技术:Server是已经广泛应用于各大公司的数据库,是一个非常好的存储数据的库,具有良好的扩展性和发展性。
3系统分析
3.1业务流程分析
在业务流程进行分析,按照信息的流动过程的需要,逐一排查处理业务各个方面
进货管理(进货入库、层货出库、进货单据查询、退货单据查询、当前库存查询)
销售管理(销售出库、客户退货、销售单据查询、客户退货查询、当前库存产询)
仓库管理(商品报损、商品报溢、库存报警、报损报溢查询、当前库存查询)
统计报表(供应商统计、客户统计、商品采购统计、商品销售统计、按日统计分析、按月统计分折)
基础资料(供应商管理、客户管理)
业务流程分析可以帮助开发人员理解业务流程,对测量误差与遗漏的发现和处理系统能及时得到改正。业务流程的分析是基于业务流程图,用符号和一些具体线形来表示业务流程规则。
具体业务流程如图3-1所示。
图3-1业务流程图
3.2数据流图
数据流是指系统中的数据,传输,处理,使用,存储的过程。数据流分析是在系统中把抽象的过程表示出来,数据流是考查实际业务数据的处理模型。
数据流和数据流分析是未来数据库系统设计模块系统过程的基础。数据处理工具,描述了数据流图,处理逻辑图附。数据流图是描述系统逻辑模型的主要工具,它需要几个符号,反映出系统中的信息的传输,存储和传递。
基于业务流程分析,对数据流分析,数据流考察了从实际业务处理的数据模式。该系统的数据流图分为顶,一层,两层。图3-2中数据流图如图所示。
图3-2顶层数据流图
4系统设计
4.1系统功能设计
该系统设计用来把系统需求转化成软件系统的经过。通过对目标的分析,完成了仓库管理系统的整体规划,这是对于仓库信息管理的重要。系统设计,包括系统设计,详细设计,数据库设计,系统开发工具,模型等。
从数据流图,数据流图的分析,得出模块的层次结构图。 仓库管理系统功能模块图如图4-1所示:
图4-1 仓库管理系统功能模块图
4.2数据库设计系统
数据库是教务管理系统的核心和基础。数据库的设计犹如大厦的根基,好坏决定了大厦的质量和安全,因此说数据库是系统设计的基础。如果设计不完善,将在该系统的开发过程中,甚至维护上会导致许多问题,严重的甚至重新设计,导致做一个已经做了许多工作全部付诸东流。
4.2.1概念结构设计
从系统数据的实体属性图分析。
客戶表实体属性图如图4-3所示:
图4-3客戶实体属性图
客户退货单表实体属性图如图4-4所示:
图4-4客户退货单实体属性图
客户退货单商品表实体属性图如图4-5所示:
图4-5客户退货单商品实体属性图
商品报损单表实体属性图如图4-6所示:
图4-6商品报损单实体属性图
商品报损单商品表实体属性图如图4-7所示:
图4-7商品报损单商品实体属性图
商品表实体属性图如图4-8所示:
图4-8商品实体属性图
商品分类表实体属性图如图4-9所示:
图4-9商品分类实体属性图
日志表实体属性图如图4-10所示:
图4-10日志实体属性图
菜单表实体属性图如图4-11所示:
图4-11菜单表体属性图
商品报溢单表实体属性图如图4-12所示:
图4-12商品报溢单实体属性图
商品报溢单商品表实体属性图如图4-13所示:
图4-13商品报溢单商品实体属性图
进货单表实体属性图如图4-14所示:
图4-14进货单实体属性图
进货单表实体属性图如图4-15所示:
图4-15进货实体属性图
退货单表实体属性图如图4-16所示:
图4-16退货单实体属性图
退货单表实体属性图如图4-17所示:
图4-17退货实体属性图
角色表实体属性图如图4-18所示:
图4-18角色实体属性图
角色菜单表实体属性图如图4-19所示:
图4-19课程实体属性图
销售单表实体属性图如图4-20所示:
图4-20销售单实体属性图
销售单表实体属性图如图4-21所示:
图4-21销售单实体属性图
供应商表实体属性图如图4-22所示:
图4-22供应商实体属性图
商品单位表实体属性图如图4-23所示:
图4-23商品单位实体属性图
用户表实体属性图如图4-24所示:
图4-24用户实体属性图
用户角色表实体属性图如图4-25所示:
图4-25用户角色实体属性图
E-R模型的元素包含:实体,属性,联系。E-R模型用E-R图表示。实体是用户在环境中参与的事务,属性是实体特征的描述。
(1)实体是相当于实体集、单个表。矩形用来表示实体,该实体名称标记在矩形框内。菱形代表实体之间的关联,菱形框内写上联系名。
(2)属性是实体的性质。用椭圆框表示,主程序和实体和表是关键属性,关键属性用下划线。
(3)一个主键字段系统存在着子模块之间的关系。
(4)在这个过程中实现完整性和一致性控制。
从系统数据的实体属性图分析,根据集成模式的三个原则,实体之间的依赖关系,系统的E-R图,如图4-9所示:
图4-9系统E-R图
4.2.2 数据库表设计
1). t_customer 客户表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 customer_id 客户编号id,主键 int √ × × NULL
2 customer_name 客户名称 varchar 100 × × √ NULL
3 contacts 联系人 varchar 50 × × √ NULL
4 phone_number 联系人电话 varchar 50 × × √ NULL
5 address 客户地址 varchar 200 × × √ NULL
6 remarks 备注 varchar 500 × × √ NULL
2). t_customer_return_list 客户退货单表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 customer_return_list_id 客户退货单id,主键 int √ × × NULL
2 return_number 退货单号 varchar 100 × × √ NULL
3 return_date 退货日期 varchar 20 × × √ NULL
4 amount_paid 实付金额 float × × × NULL
5 amount_payable 应付金额 float × × × NULL
6 state 状态,是否付款 int × × √ NULL
7 customer_id 客户编号id,外键 int × × √ NULL
8 user_id 操作员,用户id,外键 int × × √ NULL
9 remarks 备注 varchar 1000 × × √ NULL
3). t_customer_return_list_goods 客户退货单商品表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 customer_return_list_goods_id 客户退货单商品列表id,主键 int √ × × NULL
2 goods_id 商品编号id,外键 int × × √ NULL
3 goods_code 商品编码 varchar 50 × × √ NULL
4 goods_name 商品名称 varchar 50 × × √ NULL
5 goods_model 商品型号 varchar 50 × × √ NULL
6 goods_num 客户退货数量 int × × √ NULL
7 goods_unit 商品单位 varchar 10 × × √ NULL
8 price 商品单价 float × × × NULL
9 total 总金额 float × × × NULL
10 customer_return_list_id 客户退货单id,外键 int × × √ NULL
11 goods_type_id 商品类别id,外键 int × × √ NULL
4). t_damage_list 商品报损单表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 damage_list_id 商品报损单id,主键 int √ × × NULL
2 damage_number 商品报损单号 varchar 100 × × √ NULL
3 damage_date 创建日期 varchar 20 × × √ NULL
4 remarks 备注 varchar 1000 × × √ NULL
5 user_id 用户id,外键 int × × √ NULL
5). t_damage_list_goods 商品报损单商品表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 damage_list_goods_id 商品报损单商品列表id,主键 int √ × × NULL
2 goods_id 商品编号id,外键 int × × √ NULL
3 goods_code 商品编码 varchar 50 × × √ NULL
4 goods_name 商品名称 varchar 50 × × √ NULL
5 goods_model 商品型号 varchar 50 × × √ NULL
6 goods_unit 商品单位 varchar 10 × × √ NULL
7 goods_num 报损数量 int × × √ NULL
8 price 商品单价 float × × × NULL
9 total 总金额 float × × × NULL
10 damage_list_id 商品报损单id,外键 int × × √ NULL
11 goods_type_id 商品类别id,外键 int × × √ NULL
6). t_goods 商品表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 goods_id 商品编号id,主键 int √ × × NULL
2 goods_code 商品编码 varchar 50 × × √ NULL
3 goods_name 商品名称 varchar 50 × × √ NULL
4 inventory_quantity 库存数量 int × × × NULL
5 min_num 库存下限 int × × × NULL
6 goods_model 商品型号 varchar 50 × × √ NULL
7 goods_producer 生产厂商 varchar 200 × × √ NULL
8 purchasing_price 采购价格 float × × × NULL
9 last_purchasing_price 上一次采购价格 float × × × NULL
10 remarks 备注 varchar 1000 × × √ NULL
11 selling_price 出售价格 float × × × NULL
12 state 0表示初始值,1表示已入库,2表示有进货或销售单据 int × × × NULL
13 goods_unit 商品单位 varchar 10 × × √ NULL
14 goods_type_id 商品类别id,外键 int × × √ NULL
7). t_goods_type 商品分类表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 goods_type_id 商品类别id,主键 int √ × × NULL
2 goods_type_name 商品类别名称 varchar 50 × × √ NULL
3 p_id 父商品类别id int × × √ NULL
4 goods_type_state 类别状态,0为叶子节点 int × × √ NULL
8). t_log 日志表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 log_id 日志id,主键 int √ × × NULL
2 log_type 日志类型 varchar 50 × × √ NULL
3 content 日志内容 varchar 50 × × √ NULL
4 log_date 日志时间 datetime × × √ NULL
5 user_id 用户id,外键 int × × √ NULL
9). t_menu 菜单表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 menu_id 菜单id int √ × × NULL
2 menu_icon 菜单图片 varchar 100 × × √ NULL
3 menu_name 菜单名称 varchar 50 × × √ NULL
4 p_id 父菜单id int × × √ NULL
5 menu_state 菜单状态,1表示目录,0表示结点 int × × √ NULL
6 menu_url 菜单的链接地址 varchar 200 × × √ NULL
10). t_overflow_list 商品报溢单表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 overflow_list_id 商品报溢单id,主键 int √ × × NULL
2 overflow_number 商品报溢单号 varchar 100 × × √ NULL
3 overflow_date 报溢日期 varchar 20 × × √ NULL
4 remarks 备注 varchar 1000 × × √ NULL
5 user_id 用户id,外键 int × × √ NULL
11). t_overflow_list_goods 商品报溢单商品表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 overflow_list_goods_id 商品报溢单商品列表id,主键 int √ × × NULL
2 goods_id 商品编号id,外键 int × × √ NULL
3 goods_code 商品编码 varchar 50 × × √ NULL
4 goods_name 商品名称 varchar 50 × × √ NULL
5 goods_model 商品型号 varchar 50 × × √ NULL
6 goods_unit 商品单位 varchar 10 × × √ NULL
7 goods_num 报溢数量 int × × √ NULL
8 price 商品单价 float × × × NULL
9 total 总金额 float × × × NULL
10 overflow_list_id 商品报溢单id,外键 int × × √ NULL
11 goods_type_id 商品类别id,外键 int × × √ NULL
12). t_purchase_list 进货单表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 purchase_list_id 进货单id,主键 int √ × × NULL
2 purchase_number 进货单号 varchar 100 × × √ NULL
3 amount_paid 实付金额 float × × × NULL
4 amount_payable 应付金额 float × × × NULL
5 purchase_date 收货日期 varchar 20 × × √ NULL
6 remarks 备注 varchar 1000 × × √ NULL
7 state 状态 int × × √ NULL
8 supplier_id 供应商id,外键 int × × √ NULL
9 user_id 用户id,外键 int × × √ NULL
13). t_purchase_list_goods 进货单商品表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 purchase_list_goods_id 进货单商品列表id,主键 int √ × × NULL
2 goods_id 商品编号id,外键 int × × √ NULL
3 goods_code 商品编码 varchar 50 × × √ NULL
4 goods_name 商品名称 varchar 50 × × √ NULL
5 goods_model 商品型号 varchar 50 × × √ NULL
6 goods_unit 商品单位 varchar 10 × × √ NULL
7 goods_num 进货数量 int × × × NULL
8 price 商品单价 float × × × NULL
9 total 总金额 float × × × NULL
10 purchase_list_id 进货单id,外键 int × × √ NULL
11 goods_type_id 商品类别id,外键 int × × √ NULL
14). t_return_list 退货单表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 return_list_id 退货单id,主键 int √ × × NULL
2 return_number 退货单号 varchar 100 × × √ NULL
3 return_date 退货日期 varchar 20 × × √ NULL
4 amount_paid 实退金额 float × × × NULL
5 amount_payable 应退金额 float × × × NULL
6 remarks 备注 varchar 1000 × × √ NULL
7 state 状态,1表示已退,2表示未退 int × × √ NULL
8 supplier_id 供应商id,外键 int × × √ NULL
9 user_id 用户id,外键 int × × √ NULL
15). t_return_list_goods 退货单商品表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 return_list_goods_id 退货单商品列表id,主键 int √ × × NULL
2 goods_id 商品编号id,外键 int × × √ NULL
3 goods_code 商品编码 varchar 50 × × √ NULL
4 goods_name 商品名称 varchar 50 × × √ NULL
5 goods_model 商品型号 varchar 50 × × √ NULL
6 goods_unit 商品单位 varchar 10 × × √ NULL
7 goods_num 商品数量 int × × √ NULL
8 price 商品单价 float × × × NULL
9 total 总金额 float × × × NULL
10 return_list_id 退货单id,外键 int × × √ NULL
11 goods_type_id 商品类别id,外键 int × × √ NULL
16). t_role 角色表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 role_id 角色id,主键 int √ × × NULL
2 role_name 角色名称 varchar 50 × × √ NULL
3 remarks 备注 varchar 1000 × × √ NULL
17). t_role_menu 角色菜单表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 role_menu_id 角色-菜单id int √ × × NULL
2 menu_id 菜单id int × × √ NULL
3 role_id 角色id int × × √ NULL
18). t_sale_list 销售单表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 sale_list_id 销售单id,主键 int √ × × NULL
2 sale_number 销售单号 varchar 100 × × √ NULL
3 amount_paid 实付金额 float × × × NULL
4 amount_payable 应付金额 float × × × NULL
5 sale_date 销售单创建日期 varchar 20 × × √ NULL
6 state 状态 int × × √ NULL
7 remarks 备注 varchar 1000 × × √ NULL
8 customer_id 客户id,外键 int × × √ NULL
9 user_id 用户id,外键 int × × √ NULL
19). t_sale_list_goods 销售单商品表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 sale_list_goods_id 销售单商品列表id,主键 int √ × × NULL
2 goods_id 商品编号id,外键 int × × √ NULL
3 goods_code 商品编码 varchar 50 × × √ NULL
4 goods_name 商品名称 varchar 50 × × √ NULL
5 goods_model 商品型号 varchar 50 × × √ NULL
6 goods_num 销售数量 int × × √ NULL
7 goods_unit 商品单位 varchar 10 × × √ NULL
8 price 商品单价 float × × × NULL
9 total 总金额 float × × × NULL
10 sale_list_id 销售单id,外键 int × × √ NULL
11 goods_type_id 商品类别id,外键 int × × √ NULL
20). t_supplier 供应商表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 supplier_id 供应商id,主键 int √ × × NULL
2 supplier_name 供应商名称 varchar 100 × × √ NULL
3 contacts 联系人 varchar 50 × × √ NULL
4 phone_number 联系人电话 varchar 50 × × √ NULL
5 address 供应商地址 varchar 200 × × √ NULL
6 remarks 备注 varchar 500 × × √ NULL
21). t_unit 商品单位表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 unit_id 商品单位id,主键 int √ × × NULL
2 unit_name 商品单位名称 varchar 10 × × √ NULL
22). t_user 用户表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 user_id 用户id,主键 int √ × × NULL
2 user_name 用户名 varchar 50 × × √ NULL
3 password 密码 varchar 50 × × √ NULL
4 true_name 真实姓名 varchar 50 × × √ NULL
5 roles 角色 varchar 255 × × √ NULL
6 remarks 备注 varchar 1000 × × √ NULL
23). t_user_role 用户角色表
序号 字段 说明 数据类型 长度 自增 主键 允许空 默认值
1 user_role_id 用户角色id int √ × × NULL
2 role_id 角色id int × × √ NULL
3 user_id 用户id int × × √ NULL
4.3系统开发工具和开发模式选择
4.3.1 系统开发工具
SpringBoot技术
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建、运行、调试、部署等。使用Spring Boot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot使用“习惯优于配置”的理念,简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题。使用Spring Boot可以不用或者只需要很少的Spring配置就可以让企业项目快速运行起来。
Spring Boot是开发者和Spring 本身框架的中间层,帮助开发者统筹管理应用的配置,提供基于实际开发中常见配置的默认处理(即习惯优于配置),简化应用的开发,简化应用的运维;总的来说,其目的Spring Boot就是为了对Java web 的开发进行“简化”和加“快”速度,简化开发过程中引入或启动相关Spring 功能的配置。这样带来的好处就是降低开发人员对于框架的关注点,可以把更多的精力放在自己的业务代码上。
同时随着微服务概念的推广和实践,Spring Boot的精简理念又使其成为Java微服务开发的不二之选,也可以说,Spring Boot其实就是为了微服务而生的Java web框架。
在SpringBoot编程技巧:
( 1 )方便解耦,简化开发。
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
( 2)AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
( 3 )声明式事务的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
( 4 )方便程序的测试
可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。
AOP编程的支持
Sql Server技术
Sql Server是目前最为流行的开源的数据库,是完全网络化的跨平台关系型数据库系统,他是由瑞典的 AB 公司开发
Sql Server是目前最为流行的开源的数据库,是完全网络化的跨平台关系型数据库系统,他是由瑞典的AB 公司开发
优点:
1.功能强大:Sql Server中提供了多种数据库存储引擎,各个引擎各有所长,适用于不同的应用场合。用户可以选择最合适的引擎以得到最高性能,这些引擎升值可以应用处理每天访问量数亿的高强度Web搜索站点。Sql Server支持事务、视图、存储过程和触发器等。
2.支持跨平台:Sql Server支持至少20种以上的开发平台,包括Linux、Windows、FreeBSD、IBMAIX、AIX和FreeBSD等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何修改。
3.运行速度快:高速是Sql Server的显著特性。在Sql Server中,使用了极快的B书磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快的实现连接;SQL函数使用高度优化的类库实现,运行速度极快。
Java语言
Java是一个简单的,安全的,面向对象的,分布式的等功能强大的语言。有以下特点:
平台无关性
Java平台无关的,可以在不同的平台运行。Java引进虚拟机原理来介绍了不同平台之间的Java接口。Java编写的程序可共享于世界范围内。Java数据类型是独立于机器之外的,Java虚拟机(Java虚拟机)的基础是建立在硬件和操作系统上,它实现了二进制代码的解释和执行能力,为不同的平台提供了接口。
2安全
Java的编程与C + +相似,掌握C++的开发者可以知道其精髓。Java摒弃了C++指针直接操作系统的内存分配的内存地址,当程序运行,可以防止病毒通过指针入侵系统。Java对程序提供安全管理,以防止不正确的访问。
3面向对象
Java抽用了C++的面向对象的概念,利用类的特点将数据包装于类中,因为类的优点,操作简单,维修方便。它的封装,继承,代码只需被编译一次便可成功。使用普通的Java类的方法,他继承了父类。在Java中,类的继承关系是单一的形式,一个子类,只有一个父类,父类又有一个父类。
4分布式
Java建立于TCP/IP推广平台上。库函数提供了一种方法,使用HTTP和FTP协议发送和接收信息。它使程序员使用文件像本机上使用程序一样简单易行。
4.3.2 系统设计模式
B/S结构,即Browser/Server浏览器/服务器)体系结构,随着网络技术的兴起,这种技术改变了以往的C/S结构,它是在C/S的基础上改进而来的。根据这种结构,用户界面可以在WWW浏览器下实现,事务逻辑通过前端来实现,但主要逻辑的实现则是在服务器的一段,这种结构形成3-tier结构。B/S结构采用了成熟的浏览器技术,结合多种浏览器脚本语言(比如VBScript,JavaScript……)和ActiveX技术,解决了需要复杂软件才能实现的超强功用,并且节约了成本,是全新的构造技术。Windows 98或Windows 2005操作系统内部中都具备了互联网浏览器,使原有的应用软件体系结构获得与巨大的进步。B/S结构的应用与传统的C/S结构的应用采用星型拓扑结构,在区域范围内使用虚拟专用网络或企业通信网络(VPN)。前者的特点是安全,快速,准确。后者是节约投资等优点,根据企业规模和地理分布而确定。互联网的接入,企业通过防火墙便可,使用TCP /IP协议便能覆盖整个网络。
C/S与B/S的迥异:建立在局域网的基础上的是Client/Server。而Browser/Server则是建立在广域网的基础上的。它们之间有很多不同,比如1、硬件环境的迥异:C/S和B/S所建立的基础不同,前者一般建立在小范围的专用网络上,也可以通过专门的服务器实现局域网数据连接的交换服务。后者则是建立在广域网的基础上而非专用的基础上,环境要求相对简单,只需具备操作系统和浏览器即可,适应范围比C/S广。2、对安全需求的迥异,C/S与B/S所面向的对象为固定的用户群和不可知的用户群,它们之间对信息的控制保密能力也有所差别,前者对信息的安全保密能力强于后者,一般来说,重要信息像高度机密的信息系统一般都采用C/S结构。由于B/S是建立在广域网的基础上,因此它对信息安全的控制保密能力弱于C/S。3、程序框架的迥异:C/S程序需要运行的门槛较B/S少,C/S注重流程,而B/S则是对速度和安全有更多的考虑。C/S有多层次的校验,而B/S则优化了这些,因此B/S相对C/S有更高的要求,在于它的框架是发展的,比如从MS的.Net系列的BizTalk 2005 Exchange 2005等。4、软件重用的迥异:C/S在很大程度上可以避开整体性的考虑,而B/S的构件重用性较C/S好。B/S要求的构件相对独立,比如买来的桌椅可以循环利用,而不是坐在墙上的钢铁桌椅,能够得到较好的重用。5、系统维护的迥异:任何软件都有其维护的周期,本系统也不能例外,在软件维护的周期中,它的开销很大。重要的是C/S考虑的是整体性,所以程序运行时就得整体考察,比如程序运行时出现的问题以及系统的升级,可能需要更换一个全新的系统。B/S则不然,它考虑的是个别,可以实现系统的全新更换,把开支降低到最小,用户可以随时从网上下载便能实现全面升级。6、处理问题的迥异:C/S所面向的是固定的用户,并且固定在同一个区域里,对于安全的要求较为B/S高些。而B/S面向的用户分布在广域网上的任何一个地方,所面对的用户是不同的群体,这些都是C/S无法比较的。7、用户接口的迥异:C/S与B/S建立的基础不同,C/S大多数的平台是建立在Window上,它对程序员的要求比B/S所要求的高得多,因此表达方法有限。而B/S所建立的平台是在浏览器上,多维生动和方便,对程序员的要求低,更能减少开发成本。8、信息流向的迥异:C/S程序一般都是总线的机械式处理,它的互动性相对来说较低。B/S的信息流则不是固定不变的,比如B-B、B-C、B-G等信息流向的多种变化。使得它像是一个贸易集市。
5 系统实现
5.1 管理员模块
5.1.1 查看首页
管理员登录本系统后,可以查看首页信息。如下图所示:
图5-1 查看首页属性
5.1.2 进货入库界面
管理员登录本系统后,可以管理进货内容。如下图所示:
图5-2成绩管理界面
5.1.3 供应商管理界面
管理员登录本系统后,可以管理进货商信息。如下图所示:
图5-3供应商管理界面
5.1.3 客户界面
管理员登录本系统后,可以查看客户信息。如下图所示:
图5-3客户管理界面
5.2用户模块
5.2.1登录界面
(1)登录模块
该模块主要功能是用于登录系统,不同的用户登录系统将进入不同的管理界面,因为对后台的用户有判断程序,将首先提交首页接受用户名和密码,然后在后台处理,按照用户名称中的数据库如果给用户,用户和密码都被分配到两个字符串变量,从数据库中读取输入的密码和登录密码的时候是判断是否符合,如果密码相同则得到相应的页面,否则输出密码错误。如果用户没有管理员分配的权限,将无法登录系统。如下图所示:
图5-4登录界面
关键代码:
/**
-
@author wangjiangfei
-
@description 数学工具类
*/
public class BigDecimalUtil {/**
-
保留两位小数
-
@param marth 需要处理的数据
-
@return 保留两位小数的浮点型数据
*/
public static float keepTwoDecimalPlaces(float marth){BigDecimal decimal = new BigDecimal(marth);
return decimal.setScale(2, BigDecimal.ROUND_HALF_EVEN).floatValue();
}
/**
-
保留两位小数
-
@param marth 需要处理的数据
-
@return 保留两位小数的浮点型数据
*/
public static float keepTwoDecimalPlaces(Double marth){BigDecimal decimal = new BigDecimal(marth);
return decimal.setScale(2, BigDecimal.ROUND_HALF_EVEN).floatValue();
}
-
}
/**
-
@author wangjiangfei
-
@description 客户退货Controller层
*/
@RestController
@RequestMapping(“/customerReturnListGoods”)
public class CustomerReturnListGoodsController {@Autowired
private CustomerReturnListGoodsService customerReturnListGoodsService;/**
- 保存客户退货单信息
- @param customerReturnList 客户退货单信息实体
- @param customerReturnListGoodsStr 客户退货信息JSON字符串
- @return
*/
@RequestMapping(“/save”)
@RequiresPermissions(value = “客户退货”)
public ServiceVO save(CustomerReturnList customerReturnList, String customerReturnListGoodsStr) {
return customerReturnListGoodsService.save(customerReturnList, customerReturnListGoodsStr);
}
/**
- 查询客户退货单
- @param returnNumber 单号
- @param customerId 客户ID
- @param state 付款状态
- @param sTime 开始时间
- @param eTime 结束时间
- @return
*/
@RequestMapping(“/list”)
@RequiresPermissions(value={“客户退货查询”,“客户统计”},logical= Logical.OR)
public Map<String,Object> list(String returnNumber, Integer customerId, Integer state, String sTime,
String eTime) {
return customerReturnListGoodsService.list(returnNumber, customerId, state, sTime, eTime);
}
/**
- 查询客户退货单商品信息
- @param customerReturnListId 客户退货单ID
- @return
*/
@RequestMapping(“/goodsList”)
@RequiresPermissions(value={“客户退货查询”,“客户统计”},logical=Logical.OR)
public Map<String,Object> goodsList(Integer customerReturnListId) {
return customerReturnListGoodsService.goodsList(customerReturnListId);
}
/**
- 删除客户退货单及商品信息
- @param customerReturnListId 客户退货单ID
- @return
*/
@RequestMapping(“/delete”)
@RequiresPermissions(value=“客户退货查询”)
public ServiceVO delete(Integer customerReturnListId) {
return customerReturnListGoodsService.delete(customerReturnListId);
}
/**
- 修改客户退货单付款状态
- @param customerReturnListId 客户退货单ID
- @return
*/
@RequestMapping(“/updateState”)
@RequiresPermissions(value = “供应商统计”)
public ServiceVO updateState(Integer customerReturnListId) {
return customerReturnListGoodsService.updateState(customerReturnListId);
}
/**
- 客户退货商品统计
- @param sTime 开始时间
- @param eTime 结束时间
- @param goodsTypeId 商品类别ID
- @param codeOrName 编号或商品名称
- @return
*/
@RequestMapping(“/count”)
@RequiresPermissions(value = “商品销售统计”)
public String count(String sTime, String eTime, Integer goodsTypeId, String codeOrName) {
return customerReturnListGoodsService.count(sTime, eTime, goodsTypeId, codeOrName);
}
}
结 论
在这一系列的实验中,我基本掌握了Java的编程规则、知识要点和一些小技巧,特别是对面向对象的编程思想和风格有了进一步的认zhidao识和体会。同时,因正确的编出程序而带来的成就感让我对编程更加感兴趣。对于在这些实验过程中,请教老师、同学互助、查阅资料等基本的学习方式,使我更加领悟到集体和团队的力量,也树立了敢于攻坚的信心。
说起来编程的经验应该是多了很多。但是在上机调试的时候还是遇到了相当多的问题。很多的错误都很难体会,有的时候是输入的错误,这种错误还是比较容易版找出来的,但是有些问题,比如一些题目需要导入一些包,这一点就没有办法了。发现JAVA虽然看起来比C或C++要容易一点,但是由于它自身带有相当多的方法定义,这些个方法虽然不用我们自己再去编写了但是需要花相当多的时间去记忆那些方法是需要导入的,还有方法名……所以对我来说这真的是比C里简单权几个文件的导入还要难上很多……还是觉得自己编的方法(函数)自己用的习惯。不过现在的编程的方向已经是面向对象和面向数据的了,所以我需要时间去适应这样的编程思想。
问题:在做项目的时候,经常会有bug出现,但是自己的情绪控制管理不是很好。
其次,做项目是一个团队合作的事情,需要不断地了解对方需求,然后把事情推动。
参考文献
[1] 康牧,JSP动态网站开发实用教程,清华大学出版社,2009.
[2] 戴维尔,JavaScript程序员教程,电子工业出版社,2010.
[3] 杨学瑜,高立军,软件开发过程与项目管理,电子工业出版社,2008.
[4].唐友国 湛洪波著.JSP网站开发详解.电子工业出版社2008年10月.
[5]卫红春等著.信息系统分析与设计[M].北京.清华大学出版社.2009.
[6] 张文静 林琪著.JSP程序设计.人民邮电出版社.2005.
[7] 张孝祥、徐明华, JAVA基础与案例开发详解, 清华大学出版社, 2009.
[8] 张洁才,Java web应用开发教程,科学出版社,2005.
[9] 戴维尔,JavaScript程序员教程,电子工业出版社,2010.
[10]James D. McCaffrey等著.NET软件测试自动化之道[M]. 北京.电子工业出版社.2007.
[11] 黎连业、王华、李淑春,软件测试与测试技术,清华大学出版社,2009.
[12].张大方 李玮等著.软件测试技术与管理[M].湖南.湖南大学出版社,2007.
13Elliotte Rusty Harold著.Java Network Programming.东南大学出版社 .2005.
14H.M.Deitel,P.Jdeitel著.Java程序设计教程(第五版). 清华大学出版社.2004.
15David flanagan著.Java技术手册(第五版).东南大学出版社.2006.
16John J.Patrick著.SQL基础(第二版).清华大学出版社.2004.