正文

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

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


1.9 查詢統(tǒng)計(jì)模塊設(shè)計(jì)

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

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

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

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

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

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

 

? “%”通配符

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

? “_”通配符

“_”號(hào)表示任意單個(gè)字符,該符號(hào)只能匹配一個(gè)字符。利用“_”號(hào)可以作為通配符組成匹配模式進(jìn)行查詢。

? “[ ]”通配符

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

? “[^ ]”通配符

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

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

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

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

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

例程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++) { //清除原內(nè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類,使該類實(shí)現(xiàn)ActionListener接口,并實(shí)現(xiàn)該接口的actionPerformed()方法。該方法在用戶單擊“顯示全部數(shù)據(jù)”按鈕時(shí),執(zhí)行無條件的數(shù)據(jù)查詢,也就是說,該按鈕將讀取數(shù)據(jù)庫中所有的銷售信息,并顯示到表格中。關(guān)鍵代碼如下:

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

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

public void actionPerformed(final ActionEvent e) {

content.setText("");

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

Iterator iterator=list.iterator();

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

}

}

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

例程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(), "請(qǐng)輸入查詢內(nèi)容!");

return;

}

if(selDate) {

if(startDate.getText()==null||startDate.getText().equals("")) {

JOptionPane.showMessageDialog(getContentPane(), "請(qǐng)輸入查詢的開始日期!");

return;

}

if(endDate.getText()==null||endDate.getText().equals("")) {

JOptionPane.showMessageDialog(getContentPane(), "請(qǐng)輸入查詢的結(jié)束日期!");

return;

}

}

List list=null;

String con = condition.getSelectedIndex() == 0 //獲取查詢字段

? "khname "

: "sellId ";

int oper = operation.getSelectedIndex(); //定義查詢方式

String opstr = oper == 0 ? "= " : "like ";

String cont = content.getText(); //獲取查詢內(nèi)容

list = Dao.findForList("select * from v_sellView where " //調(diào)用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); //調(diào)用updateTable()方法更新表格

}

}

 


上一章目錄下一章

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