基于java的企业进销存管理系统
概述
详细
摘要
进销存管理系统是一个基于本地与网络的应用系统,它是一个面对当前的进销存管理工作基本还处于手工和半信息自动化处理状态而应运而生的一个基于本地与网络的一个完全信息自动化的系统,整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成进货、销售、库存管理的全过程。
企业单位只需具备访问Internet的条件即可在系统发布的站点上进行进销存的管理。在图形化的人机界面中完成日常的进销存管理工作,一方面摆脱了时间和空间的限制,另一方面有效的解决的数据共享的问题。
经过实验使用证明,本文所设计的企业进销存管理系统可以满足企业进货、销售和库存管理方面的需要。
关键字:企业进销存管理系统,Java,数据库
1、背景
在市场经济中,销售是企业运作的重要环节。为了更好地推动销售,不少企业建立分公司后实行代理制,通过分公司或代理上把产品推向最终用户。这些分公司或代理商大多分布在全国各地,甚至是在过为,远距离频繁的业务信息交流是这些企业业务活动的主要特点。
1.1. 问题的提出
传统的信息传递和管理方式工作效率低下,企业内部沟通不良,仓库管理不合理,不能根据需要调整库存等问题。
1.2. 问题分析
企业是一个利用资源,为客户创造价值的组织。企业资源计划就是对这些资源进行计划、调度、控制、衡量、改进的管理技术和信息系统。现今的企业并不只人力资源、资金和产品的组合,它还应该包括供应、销售、市场营销、客户服务、需求预测和其它更多的东西。如果一个企业资源计划系统真正想要最大限度地提高其生产能力,它必须能够非常融洽地和其它关键性的商务领域进行交流。
2、可行性分析
企业进销存管理系统必须提供商品信息、供应商信息和客户信息的基础设置;提供强大的搜索功能和商品的进货、销售和库存管理功能。系统还必须保证数据的安全性、完整性和准确性。
2.1. 经济可行性
企业进销存管理系统的目标是实现企业的信息化管理,减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提升企业市场竞争力。
2.2. 技术可行性
软件充分结合现代管理理论达到企业与管理人员与企业业务流程的合理分配,结合企业现有的管理方式、规章制度以及原始数据达到软件与企业融合的目的。接受现代管理知识比较容易,加之软件是根据MIS、ERP现代管理原理开发的。经调查大多部门经理认为软件有必要开发也是必须开发的。
2.3. 社会可行性
项目主要以企业的进货、销售和查询统计功能为主,对于库存、销售和进货的记录信息应该及时、准确的保存,并提供想要的查询和统计。由于库存商品数量太多,不易盘点,传统的盘点方式容易出错,系统中的库存盘点功能要准确的计算出各种商品的损益数量,减少企业的不必要的损失。
3、需求分析
需求分析是对用户需求的真正明确,是对要解决的问题的彻底理解。在解决问题之前要理解问题,只有真正的理解问题才能更好的解决问题。
根据分析,得出功能:
系统应符合生产、销售、库存的规定,满足公司日常工作需要,并达到操作过程中直观、方便、实用、安全等要求。
系统采用两层体系结果,CLIENT(客户端)负责提供表达逻辑、显示用户界面信息、基本操作;SERVER(服务器端)负责实现数据服务。
系统应具备数据库维护功能,及时根据用户需求进行增删改查等操作,能够对数据库表格进行备份。
本系统包括基础资料、进货管理、销售管理、库存管理、信息查询、系统维护等 6 大部分。系统结构如图 3 所示:
图3 企业进销存管理系统功能结构
3.1. 进货管理
“进货管理”功能模块用于管理企业的进货采购业务,是进销存管理系统中不可缺少的重要组成部分,它主要负责为系统记录进货单及其退货信息,相应的进货商品会添加到库存管理中。所包含的子功能模块如图3.1所示。
图3.1 “进货管理”功能模块
“进货单”模块主要负责记录企业的商品进货信息。根据企业的规模和管理方法,可以直接作进货单而不用作采购订单,但对于较大规模的企业,采购部门和库房部门一般是分开的,由采购部门填写采购订单,货物运输到库房后由库房验收人员填写进货单。填写进货单后商品的库存才会增加并产生应付款。
“进货/退货”模块 主要负责记录进货管理中的退货信息。
3.2. 基础资料
“基础资料”是每个系统都必须具备的功能,该模块用于管理企业进销存管理系统中的客户、商品和供应商信息,其功能主要是对这些基础信息进行添加、修改和删除。包括的子功能模块如图3.2所示。
图3.2 “进货管理”功能模块
“客户资料添加”模块主要负责为系统添加新的客户记录。在企业进销存管理系统中,商品是主要的管理对象,而商品需要客户来购买,这就需要把不同的客户信息添加到系统中。
“客户修改与删除” 模块主要用于维护系统中的客户信息。在客户的联系方式发生改变时,必须更新系统中的记录,以提供客户的最新信息。
“商品信息添加”模块主要负责为系统添加新的商品记录。在企业进销存管理系统中,商品是主要的管理对象,每当进货时,将会购入大量不同种类的商品,这就需要把不同的商品信息添加到系统中。
“商品修改与删除”模块主要用于维护系统中的商品信息。在商品的数量、种类、价格等信息发生改变时,必须更新系统中的商品信息,以保证商品的最新信息及时告知客户。
“供应商信息添加”模块主要负责为系统添加新的供应商记录。在企业进销存管理系统中,商品是主要的管理对象,而系统中所有的商品都由不同的供应商提供,这就需要把不同的供应商信息添加到系统中,在商品信息中会关联系统中对应的供应商信息。
“供应商修改与删除”模块主要用于维护系统中的供应商信息。在供应商的联系方式发生改变时,必须更新系统中的记录,以提供供应商的最新信息。另外,当不再与某家供应商合作时,需要从系统中删除供应商的记录信息。
3.3. 销售管理
“销售管理”功能模块用于管理企业的销售业务,商品销售是进销存管理中的重要环节之一,进货商品在入库之后就可以开始销售了。所包含的子功能模块如图3.3所示。
图3.3 “销售管理”功能模块
“销售单”模块主要负责根据操作者提供的销售单据,操作进销存管理系统的库存商品和记录销售信息,方便以后查询和统计。在该窗体中添加完销售商品之后,单击“销售”按钮,将完成本次销售单的销售业务。系统会记录本次销售信息,并从库存表中扣除销售的商品数量。
“销售退货”模块主要负责记录销售管理中的退货信息
3.4. 库存管理
“库存管理”模块是企业进销存管理系统中的库存管理模块包括库存盘点和价格调整两个功能,所包含的子功能模块如图3.4所示。
图3.4 “库存管理”功能模块
“库存盘点”功能主要将库存信息显示在表格中,查看商品的库存的品种数、剩余数量等信息。
“价格调整”功能主要用于调整库存中指定商品的单价,当用户选择了指定的商品,价格调整功能的界面会显示该商品在库存中的单价、库存数量、库存金额、单位、产地等信息。用户可以修改商品价格并单击“确定”按钮,调整该商品在库存中的单价。
3.5. 查询统计
“查询统计”模块是进销存管理系统中不可缺少的重要组成部分,它主要包括销售查询和商品查询,所包含的子功能模块如图3.5所示。
图3.5 “查询统计”功能模块
“销售查询”功能主要用于查询系统中的销售信息,其查询方式可以按照客户全称、销售票号进行匹配查询和模糊查询。另外,还可以指定销售日期查询。
“商品查询”功能主要用于查询系统中的商品信息,其查询方式可以按照商品的名称、供应商全称、产地、规格等信息进行查询。
3.6. 系统管理
“系统管理”模块主要有更改密码、退出系统两个模块,所包含的子功能模块如图3.6所示。
图3.6 “系统管理”功能模块
“更改密码”模块主要是对操作员的密码进行修改操作。
“退出系统”模块即退出该系统。
4、概要设计
4.1. E-R图
企业进销存管理系统主要实现从进货、库存到销售的一体化信息管理,涉及商品信息、商品的供应商、购买商品的客户等多个实体。
(1) 客户实体E-R图
企业进销存管理系统将记录所有的客户信息,在销售、退货等操作时,将直接引用该客户的实体属性。客户实体包括客户编号、客户名称、简称、地址、电话、邮政编码、联系人、联系人电话、传真、开户行和账号等属性,客户实体E-R 图如图4.1所示。
图4.1 客户实体E-R图
(2)供应商实体E-R图
不同的供应商可以为企业提供不同的商品,在商品信息中将引用商品供应商的实体属性。供应商实体包括编号、名称、简称、地址、电话、邮政编码、传真、联系人、联系电话、开户行和 E-mail 属性,供应商实体 E-R 图如图 4.2所示。
图4.2 供应商实体E-R图
(3)商品实体E-R图
商品信息是进销存管理系统中的基本信息,系统将维护商品的进货、退货、销售、入库等操作。商品实体包括编号、商品名称、商品简称、产地、单位、规格、包装、批号、批准文号、商品简介和供应商属性,商品实体E-R图如图4.3所示。
图4.3 商品实体E-R图
4.2. 数据库表设计
数据库在整个管理系统中占据非常重要的地位,数据库结构设计的好坏直接影响着系统的效率和实现效果。进销存管理系统采用MySQL数据库,因篇幅所限,本文只列出几个重要数据表的表结构。
(1) 供应商信息表
供应商信息表的名称为tb_gysinfo,用于存储供应商的详细信息。如表4-1。
表4-1 供应商信息表
字段名称 | 数据类型 | 字段大小 | 是否主键 | 说明 |
id | varchar | 32 | 主键 | 供货商编号 |
name | varchar | 50 | 供货商名称 | |
jc | varchar | 20 | 供货商简称 | |
address | varchar | 100 | 供货商地址 | |
bianma | varchar | 10 | 邮政编码 | |
tel | varchar | 15 | 电话 | |
fax | varchar | 15 | 传真 | |
lian | varchar | 8 | 联系人 | |
ltel | varchar | 15 | 联系电话 | |
yh | varchar | 50 | 开户银行 |
(2) 商品信息表
商品信息表的名称为tb_spinfo,主要用于存储商品的详细信息。如表4-2。
表4-2 商品信息表
字段名称 | 数据类型 | 字段大小 | 是否主键 | 说明 |
id | varchar | 32 | 主键 | 商品编号 |
spname | varchar | 50 | 商品名称 | |
jc | varchar | 30 | 商品简称 | |
cd | varchar | 50 | 产地 | |
dw | varchar | 10 | 商品计量单位 | |
gg | varchar | 10 | 商品规格 | |
bz | varchar | 20 | 包装 | |
ph | varchar | 32 | 批号 | |
pzwh | varchar | 50 | 批准文号 | |
memo | varchar | 100 | 备注 | |
gysname | varchar | 50 | 供应商名称 |
(3) 入库主表
入库主表的名称为tb_ruku_main,主要用于存储入库单据信息。如表4-3。
表4-3 入库主表
字段名称 | 数据类型 | 字段大小 | 是否主键 | 说明 |
rkID | Varchar | 32 | 主键 | 入库编号 |
pzs | Float | 8 | 品种数量 | |
je | money | 8 | 总计金额 | |
ysjl | varchar | 50 | 验收结论 | |
gysname | varchar | 100 | 供货商名称 | |
rkdate | datetime | 8 | 入库时间 | |
czy | varchar | 30 | 操作员 | |
jsr | varchar | 30 | 经手人 | |
jsfs | varchar | 10 | 结算方式 |
(4) 入库明细表
入库明细表名称为tb_ruku_detail,用于存储入库的详细信息。如表4-4。
表4-4 入库明细表
字段名称 | 数据类型 | 字段大小 | 是否主键 | 说明 |
id | varchar | 50 | 主键 | 流水号 |
rkID | varchar | 0 | 入库编号 | |
spid | varchar | 50 | 商品编号 | |
dj | varchar | 8 | 单价 | |
s1 | float | 8 | 数量 |
(5) 销售主表
销售主表的名称为tb_sell_main,主要用于存储销售单据的信息。如表4-5。
表4-5 销售主表
字 段 名 称 | 数 据 类 型 | 字 段 大 小 | 是 否 主 键 | 说明 |
sellID | varchar | 30 | 主键 | 销售编号 |
pzs | float | 8 | 销售品种数 | |
je | money | 8 | 总计金额 | |
ysjl | varchar | 50 | 验收结论 | |
khname | varchar | 100 | 客户名称 | |
xsdate | datetime | 8 | 销售日期 | |
czy | varchar | 30 | 操作员 | |
jsr | varchar | 30 | 经手人 | |
jsfs | varchar | 10 | 结算方式 |
(6) 销售明细表
销售明细表的名称为tb_sell_detail,用于存储销售的详细信息。如表4-6。
表4-6 销售明细表
字 段 名 称 | 数 据 类 型 | 字 段 大 小 | 是 否 主 键 | 说明 |
Id | varchar | 50 | 主键 | 流水号 |
sellID | varchar | 50 | 销售编号 | |
spid | varchar | 50 | 产品编号 | |
dj | money | 8 | 销售单价 | |
sl | float | 8 | 销售数量 |
(7) 客户信息表
客户信息表的名称为tb_khinfo,主要用于存储客户的信息。如表4-7。
表4-7 客户信息表
字段名称 | 数据类型 | 长度 | 是否主键 | 说明 |
id | varchar | 50 | 主键 | 客户编号 |
khname | varchar | 50 | 客户名称 | |
jian | varchar | 50 | 客户简称 | |
address | varchar | 100 | 客户地址 | |
bianma | varchar | 50 | 邮政编码 | |
tel | varchar | 50 | 客户电话 | |
fax | varchar | 50 | 客户传真 | |
lian | varchar | 50 | 联系人 | |
ltel | varchar | 50 | 联系人电话 | |
varchar | 50 | E-mail地址 | ||
xinhang | varchar | 60 | 开户行 | |
hao | varchar | 60 | 账号 |
5、详细设计
5.1. 系统运行环境
硬件环境,CPU(中央处理器):INTEL酷睿I5-5200U,RAM(内存):4GB,HDD(硬盘):500G
软件开发环境:操作系统:Windows 10;JDK环境:Java Platform SE 8 U60;开发工具:Eclipse 8.0;数据库管理软件:My SQL 5.7
5.2. 系统开发技术
本系统的开发主要是使用在Eclipse平台下的Java语言,并结合了My SQL 数据库技术,使此系统具有强大的查询功能。
5.2.1. Java简介
Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。
Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
5.2.2. My SQL 数据库
My SQL 是一个后台数据库管理系统,是一个关系数据库管理系统。它功能强大、操作简便、日益为广大数据库用户所喜爱。
My SQL是SUN公司推出的My SQL数据库管理系统。该版本具有使用方便、可伸缩性好、与相关软件集成程度高等优点。My SQL界面友好,易学易用且功能强大,与Windows操作系统完美结合,可以构造网络环境数据库甚至分布式数据库,可以满足企业及Internet等大型数据库应用。
5.3. 系统功能模块设计
5.3.1. 公共类设计
公共类是代码重用的一种形式,他将各个功能模块经常调用的方法提取到共用的Java类中,例如访问数据库的Dao类容纳了所有访问数据库的方法,并同时管理者数据库的连接和关闭。这样不但实现了项目代码的重用,还提高了程序的性能和代码可读性。
数据库DB链接(dao/Dao.java):
protected static String dbClassName = "com.mysql.jdbc.Driver";// MySQL数据库驱动类的名称 protected static String dbUrl = "jdbc:mysql://127.0.0.1:3306/db_database28";// 访问MySQL数据库的路径 protected static String dbUser = "root";// 访问MySQL数据库的用户名(根据自己数据库而定) protected static String dbPwd = "";// 访问MySQL数据库的密码(根据自己数据库而定) protected static String dbName = "db_database28";// 访问MySQL数据库中的实例(db_database28) protected static String second = null;// public static Connection conn = null;// MySQL数据库的连接对象
5.3.2. 主窗体设计
主窗体界面是该系统的欢迎界面。应用程序的主窗体必须设计层次清晰的系统菜单和工具栏,其中系统菜单包含系统中所有功能的菜单项,而工具栏主要提供常用功能的快捷访问按钮。企业进销存管理系统采用导航面板综合了系统菜单和工具栏的优点,而且导航面板的界面更加美观,操作更快捷。
5.3.3. 销售管理设计
商品销售时进销存管理中的重要环节之一,进货商在入库之后就可以开始销售。销售单模块主要负责根据经手人的销售单据,操作进销存管理系统的库存商品和记录销售信息,方便以后查询和统计。
图5.1 销售单界面
(1) 添加销售商品:
在销售单窗体中单击“添加”,将向table表格中添加新的空行,操作员可以在空行的第一列字段的商品下来列表中选择销售的商品,这儿下拉列表框和进货单窗体的不同,它不是根据供货商字段确定选择框内容,而是包含了数据库中所欲可以销售的商品。要实现添加商品的功能,需要为“添加”按钮添加动作监听器,在监听器种实现相应的业务逻辑。
其关键代码如下:
// “添加”按钮 JButton tjButton = new JButton("添加"); tjButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 初始化票号 initPiaoHao(); // 结束表格中没有编写的单元 stopTableCellEditing(); // 如果表格中还包含空行,就再添加新行 for (int i = 0; i < table.getRowCount(); i++) { TbSpinfo info = (TbSpinfo) table.getValueAt(i, 0); if (table.getValueAt(i, 0) == null) return; } DefaultTableModel model = (DefaultTableModel) table.getModel(); model.addRow(new Vector()); } });
(2) 销售统计:
与进货单的统计功能类似,销售单也需要统计功能,统计的内容包括货品数量、品种数量、合计金额等信息,实现方式也是通过table表格的事件监听器来处理相应的统计业务。
(3) 商品销售:
在销售单窗体中添加完销售商品之后,单击“销售”按钮,将完成本次销售单的销售业务。系统会记录本次销售信息,并从库存表中扣除销售的商品数量
其关键代码如下:// “销售”按钮
JButton sellButton = new JButton("销售"); sellButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { stopTableCellEditing();// 结束表格中没有编写的单元 clearEmptyRow();// 清除空行 String hpzsStr = hpzs.getText();// 货品总数 String pzsStr = pzs.getText();// 品种数 String jeStr = hjje.getText();// 合计金额 String jsfsStr = jsfs.getSelectedItem().toString();//结算方式 String jsrStr = jsr.getSelectedItem() + "";// 经手人 String czyStr = czy.getText();// 操作员 String rkDate = xssjDate.toLocaleString();// 销售时间 String ysjlStr = ysjl.getText().trim();// 验收结论 String id = piaoHao.getText();// 票号 String kehuName=kehu.getSelectedItem().toString();//供应商名 if (jsrStr == null || jsrStr.isEmpty()) { JOptionPane.showMessageDialog(XiaoShouDan.this, "请填写经手人"); return; } if (ysjlStr == null || ysjlStr.isEmpty()) { JOptionPane.showMessageDialog(XiaoShouDan.this, "填写验收结论"); return; } if (table.getRowCount() <= 0) { JOptionPane.showMessageDialog(XiaoShouDan.this, "填加销售商品"); return; } TbSellMain sellMain = new TbSellMain(id, pzsStr, jeStr, ysjlStr, kehuName, rkDate, czyStr, jsrStr, jsfsStr);// 销售主表 Set<TbSellDetail> set = sellMain.getTbSellDetails();// 获得销售明细的集合 int rows = table.getRowCount(); for (int i = 0; i < rows; i++) { TbSpinfo spinfo = (TbSpinfo) table.getValueAt(i, 0); String djStr = (String) table.getValueAt(i, 6); String slStr = (String) table.getValueAt(i, 7); Double dj = Double.valueOf(djStr); Integer sl = Integer.valueOf(slStr); TbSellDetail detail = new TbSellDetail();// 销售明细 detail.setSpid(spinfo.getId());// 流水号 detail.setTbSellMain(sellMain.getSellId());// 销售主表 detail.setDj(dj);// 销售单价 detail.setSl(sl);// 销售数量 set.add(detail);// 把销售明细添加到销售明细的集合中 } boolean rs = Dao.insertSellInfo(sellMain);// 添加销售信息 if (rs) { JOptionPane.showMessageDialog(XiaoShouDan.this, "销售完成"); DefaultTableModel dftm = new DefaultTableModel(); table.setModel(dftm); initTable(); pzs.setText("0"); hpzs.setText("0"); hjje.setText("0"); } } });
(4) 销售退货:
模块主要负责记录销售管理中的退货信息。
图5.2 销售-退货界面
5.3.4. 信息查询设计
“信息查询”模块是进销存管理系统中不可缺少的重要组成部分,它主要包括销售查询、商品查询功能。
(1) 销售查询:
图5.3 销售信息查询界面
该功能主要用于查询系统中的销售信息,其查询方式可以按照客户全称、销售票号进行匹配查询和模糊查询。另外,还可以指定销售日期查询。
其关键代码如下:
// 条件查询 private final class QueryAction implements ActionListener { public void actionPerformed(final ActionEvent e) { boolean selDate = selectDate.isSelected(); if(content.getText().equals("")) { JOptionPane.showMessageDialog(getContentPane(), "请输入查询内容!"); return; } if(selDate) { if(startDate.getText()==null||startDate.getText().equals("")) { JOptionPane.showMessageDialog(getContentPane(), "请输入查询的开始日期!"); return; } if(endDate.getText()==null||endDate.getText().equals("")) { JOptionPane.showMessageDialog(getContentPane(), "请输入查询的结束日期!"); return; } } List list=null;// 结果集 String con = condition.getSelectedIndex() == 0 ? "khname " : "sellId "; int oper = operation.getSelectedIndex(); String opstr = oper == 0 ? "= " : "like "; String cont = content.getText(); list = Dao.findForList("select * from v_sellView where " + con + opstr + (oper == 0 ? "'"+cont+"'" : "'%" + cont + "%'") + (selDate ? " and xsdate>'" + startDate.getText() + "' and xsdate<='" + endDate.getText()+" 23:59:59'" : "")); // 执行拼接的SQL语句后获得的结果集 Iterator iterator = list.iterator();// 与结果集list相应的迭代器 updateTable(iterator); } } }
(2) 商品查询:
图5.4 商品信息查询界面
该功能主要用于查询系统中的商品信息,其查询方式可以按照商品的名称、供应商全称、产地、规格等信息进行查询。
其关键代码如下:
// 点击“显示全部数据”按钮后,更新表格内容 private void updateTable(List list, final DefaultTableModel dftm) { int num = dftm.getRowCount(); for (int i = 0; i < num; i++) dftm.removeRow(0); Iterator iterator = list.iterator(); TbSpinfo spInfo;// 商品信息 while (iterator.hasNext()) { List info = (List) iterator.next(); Item item = new Item(); item.setId((String) info.get(0)); item.setName((String) info.get(1)); spInfo = Dao.getSpInfo(item); Vector rowData = new Vector(); rowData.add(spInfo.getId().trim());// 商品编号 rowData.add(spInfo.getSpname().trim());// 商品名称 rowData.add(spInfo.getJc());// 商品简称 rowData.add(spInfo.getCd());// 产地 rowData.add(spInfo.getDw());// 商品计量单位 rowData.add(spInfo.getGg());// 商品规格 rowData.add(spInfo.getBz());// 包装 rowData.add(spInfo.getPh());// 批号 rowData.add(spInfo.getPzwh());// 批准文号 rowData.add(spInfo.getGysname());// 供应商名称 rowData.add(spInfo.getMemo());// 备注 dftm.addRow(rowData);// 向表格对象添加行数据(商品信息) } }
6、软件功能测试
软件测试是保证软件正确性及可靠性的重要环节。测试工作涉及到软件工程的各个开发阶段。
6.1. 测试原则
在测试中我们遵守以下各项原则:
(1) 预先估计输出结果
(2) 编程人员不测试本人程序。
(3) 测试例题的设计兼顾有效与无效输入,正确与错误输入。
(4) 检查一个程序是否完成了所有的工作只是测试工作的一半,另一半是要检查程序是否还有预料之外的副作用。
(5) 在假设系统有错的情况下进行测试。
6.2. 模块测试
依据传统的方法,将系统测试作为软件丌发的一个阶段,系统测试执行工作将在系统开发完成后开展,很明显,这样做不利于BUG的及时暴露。有些缺陷可能会埋藏至后期发现,这时的修复成本将大大提高。
我们依据“全过程测试”的测试理念,在本系统中我们将软件的开发和软的测试紧密的结合在一起,要求要充分关注开发过程,对开发过程的各种变化及时做出响应。例如开发进度的调整可能会引起测试进度及测试策略的调整,需求的变更会影响到测试的执行等等;要求对测试的全过程进行全程的跟踪,例如建立完善的度量与分析机制,通过对自身过程的度量,及时了解过程信息,调整测试策略。
模块测试主要对软件产品的每个模块单独的进行测试。
(1) 登录测试,如表6-1所示。
表6-1 登陆测试
测试 | 测试用例 | 期望结果 | 实际结果 |
登录模块 | 用户名:tsoft 密码:111 | 能以此账户登陆,并具有帐户所应有的权限 | 能以此账户登陆,并进行相关操做 |
(2) 销售单测试,如表6-2所示。
表6-2 销售单测试
测试 | 测试用例 | 期望结果 | 实际结果 |
销售单模块测试 | 向明日科技公司销售商品长亮台灯50台 | 完成金额的核算,并完成相关信息的变动 | 完成期望结果 |
7、小结与项目结构图
第一、二章主要介绍的是企业进销存提出的背景以及该项目开发的可行性分析;第三章为企业进销存管理系统的需求分析,分析了系统的总体功能需求、环境需求及各模块的具体功能;第四章为概要设计,分析建立了系统的E-R图,建立数据库的表结构;第五章介绍了系统设计所给予的MVC架构,介绍了系统开发的技术路线,分析了系统采用的MY SQL数据库开发环境和系统具体功能模块的设计;第六章明确了系统测试的目标与计划,对项目的设计与实现进行测试,依据软件工程的测试流程,采用软件测试方法,先制定了测试功能与性能标准,进行测试,通过测试过程中得到的数据,说明该课题研究的进销存管理系统符合分析要求。
项目结构图:
8、设计体会
经过这两个学期对Java系统的学习,我学到了很多东西,之前只是刚刚接触Java,从未想过自己能够实现这么多的功能,各种界面的设计,数据的连接,发现BUG并解决BUG。在困难中独立学习,使我成长的非常快。
在开发过程中我学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码心底有数,有条不絮。还有后续的系统测试,要能灵活利用各种软件测试模型,最大的优化软件。
参考文献
Java从入门到精通(第4版).清华大学出版社,2016:12-7