1.10 庫存管理模塊設(shè)計(jì)
1.10.1 庫存管理模塊概述
企業(yè)進(jìn)銷存管理系統(tǒng)中的庫存管理模塊提供了庫存盤點(diǎn)和價(jià)格調(diào)整兩大功能。由于本書的篇幅所限,本節(jié)將以價(jià)格調(diào)整功能為主,介紹庫存管理模塊對本系統(tǒng)的意義和實(shí)現(xiàn)的業(yè)務(wù)邏輯。
價(jià)格調(diào)整功能主要用于調(diào)整庫存中指定商品的單價(jià)。當(dāng)用戶選擇了指定的商品,但價(jià)格調(diào)整界面中會顯示該商品在庫存中的單價(jià)、庫存數(shù)量、庫存金額、單位、產(chǎn)地等信息,如圖1.30所示。用戶可以修改商品價(jià)格并單擊“確定”按鈕,調(diào)整該商品在庫存中的單價(jià)。
1.10.2 庫存管理模塊技術(shù)分析
企業(yè)進(jìn)銷存管理系統(tǒng)中的庫存管理模塊提供了庫存盤點(diǎn)和價(jià)格調(diào)整兩大功能,其中庫存盤點(diǎn)涉及的技術(shù)比較簡單,它將庫存信息顯示在表格中,由操作員輸入盤點(diǎn)的商品數(shù)量,然后程序自動計(jì)算損益值。價(jià)格調(diào)整功能涉及下拉列表框的選擇事件監(jiān)聽和事件處理技術(shù),這在使用Java Swing技術(shù)進(jìn)行程序開發(fā)的過程中非常重要。為防止用戶的錯(cuò)誤輸入,程序界面經(jīng)常需要將可枚舉的輸入內(nèi)容封裝在下拉列表框中,限制用戶的輸入。但是,要知曉下拉列表框的改變,還需要為下拉列表框添加相應(yīng)的事件監(jiān)聽器。下面就來介紹一下相關(guān)的語法。
addItemListener()方法可以為下拉列表框添加ItemListener監(jiān)聽器。當(dāng)更改下拉列表框中的選項(xiàng)時(shí),將產(chǎn)生相應(yīng)的事件,這個(gè)事件會被添加的ItemListener監(jiān)聽器捕獲,并處理相應(yīng)的業(yè)務(wù)邏輯。
語法:
public void addItemListener(ItemListener aListener)
參數(shù):
aListener:要通知的ItemListener監(jiān)聽器
1.10.3 價(jià)格調(diào)整實(shí)現(xiàn)過程
價(jià)格調(diào)整使用的數(shù)據(jù)表:tb_kucun。
(1)創(chuàng)建JiaGeTiaoZheng類,用于實(shí)現(xiàn)本系統(tǒng)的價(jià)格調(diào)整功能界面和業(yè)務(wù)邏輯。界面中定義的主要控件如表1.11所示。
(2)編寫updateJinE()方法,用于更新庫存金額。該方法將“單價(jià)”文本框的內(nèi)容轉(zhuǎn)換為Double類型,將“庫存數(shù)量”文本框的內(nèi)容轉(zhuǎn)換為Integer類型,然后用它們的乘積更新“庫存金額”文本框的內(nèi)容。關(guān)鍵代碼如下:
例程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)創(chuàng)建ItemActionListener類,它必須實(shí)現(xiàn)ItemListener接口和接口中的itemStateChanged()方法,成為下拉列表框的事件監(jiān)聽器。當(dāng)改變界面中選擇的商品時(shí),相應(yīng)的ItemEvent事件會通知該監(jiān)聽器處理業(yè)務(wù)邏輯,也就是根據(jù)選擇的商品名稱更新其他控件內(nèi)容。關(guān)鍵代碼如下:
例程29 代碼位置:光盤\TM\01\JXCManager\src\internalFrame\JiaGeTiaoZheng.java
u class ItemActionListener implements ItemListener { //商品選擇事件監(jiān)聽器
v public void itemStateChanged(
w final ItemEvent e) {
Object selectedItem = shangPinMingCheng.getSelectedItem(); //獲取選擇的商品對象
if (selectedItem == null)
return;
Item item = (Item) selectedItem;
kcInfo = Dao.getKucun(item); //調(diào)用getKucun()方法
if(kcInfo.getId()==null)
return;
int dj, sl;
dj = kcInfo.getDj().intValue();
sl = kcInfo.getKcsl().intValue();
chanDi.setText(kcInfo.getCd()); //更新界面控件的內(nèi)容
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());
}
}