1.10 库存管理模块设计
1.10.1 库存管理模块概述
企业进销存管理系统中的库存管理模块提供了库存盘点和价格调整两大功能。由于本书的篇幅所限,本节将以价格调整功能为主,介绍库存管理模块对本系统的意义和实现的业务逻辑。
价格调整功能主要用于调整库存中指定商品的单价。当用户选择了指定的商品,但价格调整界面中会显示该商品在库存中的单价、库存数量、库存金额、单位、产地等信息,如图1.30所示。用户可以修改商品价格并单击“确定”按钮,调整该商品在库存中的单价。
1.10.2 库存管理模块技术分析
企业进销存管理系统中的库存管理模块提供了库存盘点和价格调整两大功能,其中库存盘点涉及的技术比较简单,它将库存信息显示在表格中,由操作员输入盘点的商品数量,然后程序自动计算损益值。价格调整功能涉及下拉列表框的选择事件监听和事件处理技术,这在使用Java Swing技术进行程序开发的过程中非常重要。为防止用户的错误输入,程序界面经常需要将可枚举的输入内容封装在下拉列表框中,限制用户的输入。但是,要知晓下拉列表框的改变,还需要为下拉列表框添加相应的事件监听器。下面就来介绍一下相关的语法。
addItemListener()方法可以为下拉列表框添加ItemListener监听器。当更改下拉列表框中的选项时,将产生相应的事件,这个事件会被添加的ItemListener监听器捕获,并处理相应的业务逻辑。
语法:
public void addItemListener(ItemListener aListener)
参数:
aListener:要通知的ItemListener监听器
1.10.3 价格调整实现过程
价格调整使用的数据表:tb_kucun。
(1)创建JiaGeTiaoZheng类,用于实现本系统的价格调整功能界面和业务逻辑。界面中定义的主要控件如表1.11所示。
(2)编写updateJinE()方法,用于更新库存金额。该方法将“单价”文本框的内容转换为Double类型,将“库存数量”文本框的内容转换为Integer类型,然后用它们的乘积更新“库存金额”文本框的内容。关键代码如下:
例程28 代码位置:光盘\TM\01\JXCManager\src\internalFrame\JiaGeTiaoZheng.java
private void updateJinE() { //更新库存金额的方法
Double dj = Double.valueOf(danJia.getText());
Integer sl = Integer.valueOf(kuCunShuLiang.getText());
kuCunJinE.setText((dj * sl) + "");
}
(3)创建ItemActionListener类,它必须实现ItemListener接口和接口中的itemStateChanged()方法,成为下拉列表框的事件监听器。当改变界面中选择的商品时,相应的ItemEvent事件会通知该监听器处理业务逻辑,也就是根据选择的商品名称更新其他控件内容。关键代码如下:
例程29 代码位置:光盘\TM\01\JXCManager\src\internalFrame\JiaGeTiaoZheng.java
u class ItemActionListener implements ItemListener { //商品选择事件监听器
v public void itemStateChanged(
w final ItemEvent e) {
Object selectedItem = shangPinMingCheng.getSelectedItem(); //获取选择的商品对象
if (selectedItem == null)
return;
Item item = (Item) selectedItem;
kcInfo = Dao.getKucun(item); //调用getKucun()方法
if(kcInfo.getId()==null)
return;
int dj, sl;
dj = kcInfo.getDj().intValue();
sl = kcInfo.getKcsl().intValue();
chanDi.setText(kcInfo.getCd()); //更新界面控件的内容
jianCheng.setText(kcInfo.getJc());
baoZhuang.setText(kcInfo.getBz());
danWei.setText(kcInfo.getDw());
danJia.setText(kcInfo.getDj() + "");
kuCunShuLiang.setText(kcInfo.getKcsl() + "");
kuCunJinE.setText(dj * sl + "");
guiGe.setText(kcInfo.getGg());
}
}