正文

进销存管理系统(18)

Java项目开发案例全程实录(第2版) 作者:明日科技


1.9 查询统计模块设计

查询统计模块是进销存管理系统中不可或缺的重要组成部分之一,主要提供了基础信息、进货信息、销售信息、退货信息的查询和销售排行功能。

1.9.1 查询统计模块概述

企业进销存管理系统中的查询统计模块包括客户查询、商品查询、供应商查询、销售查询、销售退货查询、入库查询、入库退货查询和销售排行功能。由于本书的篇幅所限,本节将以销售查询功能为主,介绍查询统计模块对本系统的意义和实现的业务逻辑。

销售查询功能主要用于查询系统中的销售信息,其查询方式可以按照客户全称、销售票号进行匹配查询和模糊查询。另外,还可以指定销售日期查询。程序界面如图1.29所示。

1.9.2  查询统计模块技术分析

查询统计模块必须为用户提供丰富的查询功能,当查询某一商品的销售或者退货等信息时,需要提供按客户全称、销售票号、退货票号、指定日期等多种查询条件和查询对象,进行普通查询或者模糊查询。对于普通查询条件可以简单地使用SQL语句的“=”进行判断,但是模糊查询稍微复杂一些,需要使用SQL语句中的LIKE关键字。LIKE关键字需要使用通配符在字符串内查找指定的模式,所以读者需要了解通配符及其含义。通配符的含义如表1.9所示。

 

? “%”通配符

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

? “_”通配符

“_”号表示任意单个字符,该符号只能匹配一个字符。利用“_”号可以作为通配符组成匹配模式进行查询。

? “[ ]”通配符

在模糊查询中可以使用“[ ]”符号来查询一定范围内的数据。“[ ]”符号用于表示一定范围内的任意单个字符,它包括两端数据。

? “[^ ]”通配符

在模式查询中可以使用“[^ ]”符号来查询不在指定范围内的数据。“[^ ]”符号用于表示不在某一范围内的任意单个字符,它包括两端数据。

1.9.3  销售查询实现过程

销售查询使用的数据表:v_sellView。

(1)创建XiaoShouChaXun类,用于实现本系统的销售查询功能界面和业务逻辑。界面中定义的主要控件如表1.10所示。

(2)编写updateTable()方法,用于更新表格数据。该方法必须接收一个Iterator迭代器对象,通过遍历该迭代器中的数据来初始化界面中的表格。关键代码如下:

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

private void updateTable(Iterator iterator) {      //更新表格数据

int rowCount=dftm.getRowCount();

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

dftm.removeRow(0);

}

while(iterator.hasNext()) { //更新表格数据

Vector vector=new Vector();

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

vector.addAll(view);

dftm.addRow(vector);

}

}

(3)创建ShowAllActoinListener类,使该类实现ActionListener接口,并实现该接口的actionPerformed()方法。该方法在用户单击“显示全部数据”按钮时,执行无条件的数据查询,也就是说,该按钮将读取数据库中所有的销售信息,并显示到表格中。关键代码如下:

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

class ShowAllActoinListener implements ActionListener { //“显示全部数据”按钮的动作监听器

public void actionPerformed(final ActionEvent e) {

content.setText("");

List list=Dao.findForList("select * from v_sellView"); //调用findForList()方法执行查询

Iterator iterator=list.iterator();

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

}

}

(4)创建“查询”按钮的事件监听器QueryActionListener类,该类必须实现ActionListener接口,并实现该接口的actionPerformed()方法。在该方法中编写查询销售信息的业务逻辑,并将查询结果更新到表格控件中,其查询条件由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()方法查询数据

+ 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 © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号