正文

進銷存管理系統(tǒng)(18)

Java項目開發(fā)案例全程實錄(第2版) 作者:明日科技


1.9 查詢統(tǒng)計模塊設計

查詢統(tǒng)計模塊是進銷存管理系統(tǒng)中不可或缺的重要組成部分之一,主要提供了基礎信息、進貨信息、銷售信息、退貨信息的查詢和銷售排行功能。

1.9.1 查詢統(tǒng)計模塊概述

企業(yè)進銷存管理系統(tǒng)中的查詢統(tǒng)計模塊包括客戶查詢、商品查詢、供應商查詢、銷售查詢、銷售退貨查詢、入庫查詢、入庫退貨查詢和銷售排行功能。由于本書的篇幅所限,本節(jié)將以銷售查詢功能為主,介紹查詢統(tǒng)計模塊對本系統(tǒng)的意義和實現(xiàn)的業(yè)務邏輯。

銷售查詢功能主要用于查詢系統(tǒng)中的銷售信息,其查詢方式可以按照客戶全稱、銷售票號進行匹配查詢和模糊查詢。另外,還可以指定銷售日期查詢。程序界面如圖1.29所示。

1.9.2  查詢統(tǒng)計模塊技術分析

查詢統(tǒng)計模塊必須為用戶提供豐富的查詢功能,當查詢某一商品的銷售或者退貨等信息時,需要提供按客戶全稱、銷售票號、退貨票號、指定日期等多種查詢條件和查詢對象,進行普通查詢或者模糊查詢。對于普通查詢條件可以簡單地使用SQL語句的“=”進行判斷,但是模糊查詢稍微復雜一些,需要使用SQL語句中的LIKE關鍵字。LIKE關鍵字需要使用通配符在字符串內查找指定的模式,所以讀者需要了解通配符及其含義。通配符的含義如表1.9所示。

 

? “%”通配符

“%”通配符能匹配零個或更多個字符的任意長度的字符串。

? “_”通配符

“_”號表示任意單個字符,該符號只能匹配一個字符。利用“_”號可以作為通配符組成匹配模式進行查詢。

? “[ ]”通配符

在模糊查詢中可以使用“[ ]”符號來查詢一定范圍內的數(shù)據(jù)?!癧 ]”符號用于表示一定范圍內的任意單個字符,它包括兩端數(shù)據(jù)。

? “[^ ]”通配符

在模式查詢中可以使用“[^ ]”符號來查詢不在指定范圍內的數(shù)據(jù)?!癧^ ]”符號用于表示不在某一范圍內的任意單個字符,它包括兩端數(shù)據(jù)。

1.9.3  銷售查詢實現(xiàn)過程

銷售查詢使用的數(shù)據(jù)表:v_sellView。

(1)創(chuàng)建XiaoShouChaXun類,用于實現(xiàn)本系統(tǒng)的銷售查詢功能界面和業(yè)務邏輯。界面中定義的主要控件如表1.10所示。

(2)編寫updateTable()方法,用于更新表格數(shù)據(jù)。該方法必須接收一個Iterator迭代器對象,通過遍歷該迭代器中的數(shù)據(jù)來初始化界面中的表格。關鍵代碼如下:

例程25  代碼位置:光盤\TM\01\JXCManager\src\internalFrame\XiaoShouChaXun.java

private void updateTable(Iterator iterator) {      //更新表格數(shù)據(jù)

int rowCount=dftm.getRowCount();

for(int i=0;i<rowCount;i++) { //清除原內容

dftm.removeRow(0);

}

while(iterator.hasNext()) { //更新表格數(shù)據(jù)

Vector vector=new Vector();

List view=(List) iterator.next();

vector.addAll(view);

dftm.addRow(vector);

}

}

(3)創(chuàng)建ShowAllActoinListener類,使該類實現(xiàn)ActionListener接口,并實現(xiàn)該接口的actionPerformed()方法。該方法在用戶單擊“顯示全部數(shù)據(jù)”按鈕時,執(zhí)行無條件的數(shù)據(jù)查詢,也就是說,該按鈕將讀取數(shù)據(jù)庫中所有的銷售信息,并顯示到表格中。關鍵代碼如下:

例程26  代碼位置:光盤\TM\01\JXCManager\src\internalFrame\XiaoShouChaXun.java

class ShowAllActoinListener implements ActionListener { //“顯示全部數(shù)據(jù)”按鈕的動作監(jiān)聽器

public void actionPerformed(final ActionEvent e) {

content.setText("");

List list=Dao.findForList("select * from v_sellView"); //調用findForList()方法執(zhí)行查詢

Iterator iterator=list.iterator();

updateTable(iterator); //調用updateTable()方法更新表格

}

}

(4)創(chuàng)建“查詢”按鈕的事件監(jiān)聽器QueryActionListener類,該類必須實現(xiàn)ActionListener接口,并實現(xiàn)該接口的actionPerformed()方法。在該方法中編寫查詢銷售信息的業(yè)務邏輯,并將查詢結果更新到表格控件中,其查詢條件由condition、operation下拉列表框和一個content文本框組成。關鍵代碼    如下:

例程27  代碼位置:光盤\TM\01\JXCManager\src\internalFrame\XiaoShouChaXun.java

class QueryActionListener 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 " //調用findForList()方法查詢數(shù)據(jù)

+ con

+ opstr

+ (oper == 0 ? "'"+cont+"'" : "'%" + cont + "%'")

+ (selDate ? " and xsdate>'" + startDate.getText()

+ "' and xsdate<='" + endDate.getText()+" 23:59:59'" : ""));

Iterator iterator = list.iterator();

updateTable(iterator); //調用updateTable()方法更新表格

}

}

 


上一章目錄下一章

Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號