上一篇博客讲了仓库管理系统的货物类别管理功能的实现,这一篇博客我来说说仓库管理系统货物管理功能的实现。其实它和货物类型管理功能相似,只不过比货物类型管理的细节更多一些。但是它们的程序流程是一模一样的。都是先建立数据库表,设置主外键,然后插入值。之后去model包封装数据库货物表字段。在dao包进行控制,在view层进行视图显示。

1:首先在数据库建立数据库表,并插入若干值。

CREATE TABLE t_goods(id INT PRIMARY KEY AUTO_INCREMENT,goodsName VARCHAR(20),goodsSupplier VARCHAR(20),sex VARCHAR(20),price DOUBLE,goodsDesc VARCHAR(200),goodsTypeId INT,CONSTRAINT `fk` FOREIGN KEY (`goodsTypeId`) REFERENCES t_goodsType(id)
);
INSERT INTO t_goods VALUES(NULL, 'iphone6+','apple', '男', 6000, '高大上,青年人的喜爱', 3),(NULL, 'Lige聊Java','Lige', '男', 88.88, '详谈Java开发经验', 2),(NULL, '发财鱼','广州', '女', 18, '年年发财,年年有余', 4),(NULL, '红富士','青岛','女', 3, '好吃又可口',1);

2:在model包中进行数据库表字段的封装的代码。

package com.panli.model;
/**
* Goods实体类
* @author Peter
*
*/
public class Goods {
private int id;
private String goodsName;
private String goodsSupplier;
private String sex;
private double price;
private String goodsDesc;
private Integer goodsTypeId;
private String goodsTypeName;
/**
* 继承父类的构造方法
*/
public Goods() {
super();
// TODO Auto-generated constructor stub
}
/**
* 一个参数的构造方法
* @param id
*/
public Goods(int id) {
super();
this.id = id;
}
/**
* 3个参数构造方法
* @param goodsName
* @param goodsSupplier
* @param goodsTypeId
*/
public Goods(String goodsName, String goodsSupplier, Integer goodsTypeId) {
super();
this.goodsName = goodsName;
this.goodsSupplier = goodsSupplier;
this.goodsTypeId = goodsTypeId;
}
/**
* 6个参数的构造方法
* @param goodsName
* @param goodsSupplier
* @param sex
* @param price
* @param goodsDesc
* @param goodsTypeId
*/
public Goods(String goodsName, String goodsSupplier, String sex, double price, String goodsDesc, int goodsTypeId) {
super();
this.goodsName = goodsName;
this.goodsSupplier = goodsSupplier;
this.sex = sex;
this.price = price;
this.goodsDesc = goodsDesc;
this.goodsTypeId = goodsTypeId;
}
/**
* 7个参数的构造方法
* @param id
* @param goodsName
* @param goodsSupplier
* @param sex
* @param price
* @param goodsDesc
* @param goodsTypeId
*/
public Goods(int id, String goodsName, String goodsSupplier, String sex, double price, String goodsDesc,
Integer goodsTypeId) {
super();
this.id = id;
this.goodsName = goodsName;
this.goodsSupplier = goodsSupplier;
this.sex = sex;
this.price = price;
this.goodsDesc = goodsDesc;
this.goodsTypeId = goodsTypeId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public String getGoodsSupplier() {
return goodsSupplier;
}
public void setGoodsSupplier(String goodsSupplier) {
this.goodsSupplier = goodsSupplier;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getGoodsDesc() {
return goodsDesc;
}
public void setGoodsDesc(String goodsDesc) {
this.goodsDesc = goodsDesc;
}
public Integer getGoodsTypeId() {
return goodsTypeId;
}
public void setGoodsTypeId(Integer goodsTypeId) {
this.goodsTypeId = goodsTypeId;
}
public String getGoodsTypeName() {
return goodsTypeName;
}
public void setGoodsTypeName(String goodsTypeName) {
this.goodsTypeName = goodsTypeName;
}
}

3:在dao包中进行货物管理控制操作的封装与实现的代码

package com.panli.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.panli.model.Goods;
import com.panli.util.StringUtil;
/**
* 货物控制操作包
* @author Peter
*
*/
public class GoodsDao {
/**
* 货物删除事件
* @param conn
* @param goods
* @return
* @throws Exception
*/
public static int deleteGoods(Connection conn, Goods goods)throws Exception{
String sql = "delete from t_goods where id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, goods.getId());
return pstmt.executeUpdate();
}
/**
* 货物更新事件
* @param conn
* @param goods
* @return
* @throws Exception
*/
public static int updateGoods(Connection conn, Goods goods)throws Exception{
String sql = "update t_goods set goodsName=?, goodsSupplier=?, sex=?,"
+ " price=?, goodsDesc=? , goodsTypeId = ? where id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, goods.getGoodsName());
pstmt.setString(2, goods.getGoodsSupplier());
pstmt.setString(3, goods.getSex());
pstmt.setDouble(4, goods.getPrice());
pstmt.setString(5, goods.getGoodsDesc());
pstmt.setInt(6, goods.getGoodsTypeId());
pstmt.setInt(7, goods.getId());
return pstmt.executeUpdate();
}
/**
* 货物查询事件
* @param conn
* @param goods
* @return
* @throws Exception
*/
public static ResultSet listGoods(Connection conn, Goods goods) throws Exception{
StringBuffer sb = new StringBuffer("select * from t_goods t_g, t_goodsType t_gt where t_g.goodsTypeId=t_gt.id");
if(StringUtil.isNotEmpty(goods.getGoodsName())){
sb.append(" and t_g.goodsName like '%"+goods.getGoodsName()+"%'");
}
if(StringUtil.isNotEmpty(goods.getGoodsSupplier())){
sb.append(" and t_g.goodsSupplier like '%"+goods.getGoodsSupplier()+"%'");
}
if(goods.getGoodsTypeId()!=null && goods.getGoodsTypeId()!=-1){
sb.append(" and t_g.goodsTypeId like '%"+goods.getGoodsTypeId()+"%'");
}
PreparedStatement pstmt = conn.prepareStatement(sb.toString());
return pstmt.executeQuery();
}
/**
* 添加货物
* @param conn
* @param goods
* @return
* @throws Exception
*/
public static int addGoods(Connection conn, Goods goods)throws Exception{
String sql = "insert into t_goods values(null, ?, ?, ?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, goods.getGoodsName());
pstmt.setString(2, goods.getGoodsSupplier());
pstmt.setString(3, goods.getSex());
pstmt.setDouble(4, goods.getPrice());
pstmt.setString(5, goods.getGoodsDesc());
pstmt.setInt(6, goods.getGoodsTypeId());
return pstmt.executeUpdate();
}
}
4:在视图层进行显示操作的代码
货物的添加:
package com.panli.view;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import com.panli.dao.GoodsDao;
import com.panli.dao.GoodsTypeDao;
import com.panli.model.Goods;
import com.panli.model.GoodsType;
import com.panli.util.DbUtil;
import com.panli.util.StringUtil;
import javax.swing.ImageIcon;
/**
* 货物添加视图层
* @author Peter
*
*/
public class GoodsAddInterFrm extends JInternalFrame {
private JTextField goodsNameTxt;
private JTextField goodsSupplierTxt;
private JTextField priceTxt;
private JTextArea goodsDescTxt;
private JComboBox goodsTypeNameJcb;
private JRadioButton manJrb;
private JRadioButton femaleJrb;
private final ButtonGroup buttonGroup = new ButtonGroup();
private static DbUtil dbUtil = new DbUtil();
private static GoodsDao goodsDao = new GoodsDao();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GoodsAddInterFrm frame = new GoodsAddInterFrm();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GoodsAddInterFrm() {
setClosable(true);
setIconifiable(true);
setTitle("\u8D27\u7269\u6DFB\u52A0\u754C\u9762");
setBounds(100, 100, 596, 399);
JLabel lblNewLabel = new JLabel("\u8D27\u7269\u540D\u79F0\uFF1A");
goodsNameTxt = new JTextField();
goodsNameTxt.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("\u8D27\u7269\u4F9B\u8D27\u5546\uFF1A");
goodsSupplierTxt = new JTextField();
goodsSupplierTxt.setColumns(10);
JLabel label = new JLabel("\u4F9B\u8D27\u5546\u6027\u522B\uFF1A");
manJrb = new JRadioButton("\u7537");
buttonGroup.add(manJrb);
manJrb.setSelected(true);
femaleJrb = new JRadioButton("\u5973");
buttonGroup.add(femaleJrb);
JLabel lblNewLabel_2 = new JLabel("\u8D27\u7269\u4EF7\u683C\uFF1A");
priceTxt = new JTextField();
priceTxt.setColumns(10);
JLabel label_1 = new JLabel("\u8D27\u7269\u7C7B\u522B\uFF1A");
goodsTypeNameJcb = new JComboBox();
JLabel label_2 = new JLabel("\u8D27\u7269\u63CF\u8FF0\uFF1A");
goodsDescTxt = new JTextArea();
JButton button = new JButton("\u6DFB\u52A0");
button.setIcon(new ImageIcon(GoodsAddInterFrm.class.getResource("/images/add.png")));
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
addGoodsActionPerformed(arg0);
}
});
JButton button_1 = new JButton("\u91CD\u7F6E");
button_1.setIcon(new ImageIcon(GoodsAddInterFrm.class.getResource("/images/reset.png")));
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resetValueActionPerformed(e);
}
});
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(45)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addComponent(label_2)
.addGap(3)
.addComponent(goodsDescTxt, GroupLayout.PREFERRED_SIZE, 346, GroupLayout.PREFERRED_SIZE))
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
.addGroup(groupLayout.createSequentialGroup()
.addComponent(label_1)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(goodsTypeNameJcb, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(groupLayout.createSequentialGroup()
.addComponent(lblNewLabel)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(goodsNameTxt, GroupLayout.PREFERRED_SIZE, 99, GroupLayout.PREFERRED_SIZE))
.addGroup(groupLayout.createSequentialGroup()
.addComponent(label)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(manJrb)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(femaleJrb)))
.addGap(65)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
.addGroup(groupLayout.createSequentialGroup()
.addComponent(lblNewLabel_1)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(goodsSupplierTxt, GroupLayout.PREFERRED_SIZE, 102, GroupLayout.PREFERRED_SIZE))
.addGroup(groupLayout.createSequentialGroup()
.addComponent(lblNewLabel_2)
.addGap(18)
.addComponent(priceTxt))))))
.addGroup(groupLayout.createSequentialGroup()
.addGap(149)
.addComponent(button)
.addGap(119)
.addComponent(button_1)))
.addContainerGap(126, Short.MAX_VALUE))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(38)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(lblNewLabel)
.addComponent(goodsNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_1)
.addComponent(goodsSupplierTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(28)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(label)
.addComponent(manJrb)
.addComponent(femaleJrb)
.addComponent(lblNewLabel_2)
.addComponent(priceTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(28)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(label_1)
.addComponent(goodsTypeNameJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(35)
.addComponent(label_2))
.addGroup(groupLayout.createSequentialGroup()
.addGap(36)
.addComponent(goodsDescTxt, GroupLayout.PREFERRED_SIZE, 83, GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(ComponentPlacement.RELATED, 25, Short.MAX_VALUE)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(button_1)
.addComponent(button))
.addGap(22))
);
getContentPane().setLayout(groupLayout);
//填充下拉列表
this.fillGoodsType();
}
/**
* 货物添加事件
* @param arg0
*/
private void addGoodsActionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String goodsName = this.goodsNameTxt.getText();
String goodsSupplier = this.goodsSupplierTxt.getText();
String price = this.priceTxt.getText();
String goodsDesc = this.goodsDescTxt.getText();
if(StringUtil.isEmpty(goodsName)){
JOptionPane.showMessageDialog(null, "货物名称不能为空!");
return;
}
if(StringUtil.isEmpty(goodsSupplier)){
JOptionPane.showMessageDialog(null, "货物供货商不能为空!");
return;
}
if(StringUtil.isEmpty(goodsDesc)){
JOptionPane.showMessageDialog(null, "货物描述不能为空!");
return;
}
if(StringUtil.isEmpty(price)){
JOptionPane.showMessageDialog(null, "货物价格不能为空!");
return;
}
String sex = "";
if(manJrb.isSelected()){
sex = "男";
}else if(femaleJrb.isSelected()){
sex = "女";
}
GoodsType goodsTypeName = (GoodsType)this.goodsTypeNameJcb.getSelectedItem();
int goodsTypeId = goodsTypeName.getId();
Goods goods = new Goods(goodsName, goodsSupplier, sex, Double.parseDouble(price), goodsDesc, goodsTypeId);
Connection conn = null;
try {
conn = DbUtil.getCon();
int result  = goodsDao.addGoods(conn, goods);
if(result == 1){
JOptionPane.showMessageDialog(null, "货物添加成功!");
this.resetValue();
}else{
JOptionPane.showMessageDialog(null, "货物添加失败!");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbUtil.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 货物表单重置事件
* @param e
*/
private void resetValueActionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
this.resetValue();
}
/**
* 表单重置事件
*/
private void resetValue(){
this.goodsNameTxt.setText("");
this.goodsSupplierTxt.setText("");
this.priceTxt.setText("");
this.goodsDescTxt.setText("");
this.manJrb.setSelected(true);
if(goodsTypeNameJcb.getItemCount()>0){
goodsTypeNameJcb.setSelectedIndex(0);
}
}
/**
* 填充下拉列表货物类型
*/
private void fillGoodsType(){
Connection conn = null;
GoodsType goodsType = null;
ResultSet rs = null;
try {
conn = DbUtil.getCon();
rs = GoodsTypeDao.listGoodsType(conn, new GoodsType());
while(rs.next()){
goodsType = new GoodsType();
goodsType.setId(rs.getInt("id"));
goodsType.setGoodsTypeName(rs.getString("goodsTypeName"));
this.goodsTypeNameJcb.addItem(goodsType);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
DbUtil.close(conn, rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

货物的维护与管理:
package com.panli.view;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import com.panli.dao.GoodsDao;
import com.panli.dao.GoodsTypeDao;
import com.panli.model.Goods;
import com.panli.model.GoodsType;
import com.panli.util.DbUtil;
import com.panli.util.StringUtil;
/**
* 货物管理视图层
* @author Peter
*
*/
public class GoodsManagerInterFrm extends JInternalFrame {
private JTable goodsTable;
private JTextField s_goodsNameTxt;
private JTextField s_goodsSupplierTxt;
private JTextField goodsIdTxt;
private JTextField goodsNameTxt;
private JTextField priceTxt;
private JTextField goodsSupplierTxt;
private JTextArea goodsDescTxt;
private JComboBox goodsTypeNameJcb;
private JRadioButton manJrb;
private JRadioButton femaleJrb;
private JComboBox s_goodsTypeNameJcbTxt;
private final ButtonGroup buttonGroup = new ButtonGroup();
private static DbUtil dbUtil = new DbUtil();
private static GoodsDao goodsDao = new GoodsDao();
private static GoodsTypeDao goodsTypeDao = new GoodsTypeDao();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GoodsManagerInterFrm frame = new GoodsManagerInterFrm();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GoodsManagerInterFrm() {
setTitle("\u8D27\u7269\u7EF4\u62A4\u754C\u9762");
setIconifiable(true);
setClosable(true);
setBounds(100, 100, 732, 532);
JScrollPane scrollPane = new JScrollPane();
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder(null, "\u8868\u5355\u64CD\u4F5C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
JPanel panel_1 = new JPanel();
panel_1.setBorder(new TitledBorder(null, "\u8868\u5355\u64CD\u4F5C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.TRAILING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(31)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addComponent(panel_1, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(Alignment.TRAILING, groupLayout.createParallelGroup(Alignment.LEADING, false)
.addComponent(panel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 631, Short.MAX_VALUE)))
.addGap(40))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(23)
.addComponent(panel, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 119, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(panel_1, GroupLayout.DEFAULT_SIZE, 249, Short.MAX_VALUE)
.addContainerGap())
);
JLabel lblNewLabel = new JLabel("\u8D27\u7269\u7F16\u53F7\uFF1A");
goodsIdTxt = new JTextField();
goodsIdTxt.setEnabled(false);
goodsIdTxt.setColumns(10);
JLabel label_3 = new JLabel("\u8D27\u7269\u540D\u79F0\uFF1A");
goodsNameTxt = new JTextField();
goodsNameTxt.setColumns(10);
JLabel label_4 = new JLabel("\u4F9B\u8D27\u5546\u6027\u522B\uFF1A");
manJrb = new JRadioButton("\u7537");
buttonGroup.add(manJrb);
manJrb.setSelected(true);
femaleJrb = new JRadioButton("\u5973");
buttonGroup.add(femaleJrb);
JLabel lblNewLabel_1 = new JLabel("\u8D27\u7269\u4EF7\u683C\uFF1A");
priceTxt = new JTextField();
priceTxt.setColumns(10);
JLabel label_5 = new JLabel("\u4F9B\u8D27\u5546\uFF1A");
goodsSupplierTxt = new JTextField();
goodsSupplierTxt.setColumns(10);
JLabel label_6 = new JLabel("\u8D27\u7269\u7C7B\u522B\uFF1A");
goodsTypeNameJcb = new JComboBox();
JLabel label_7 = new JLabel("\u8D27\u7269\u63CF\u8FF0\uFF1A");
goodsDescTxt = new JTextArea();
JButton button_1 = new JButton("\u4FEE\u6539");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
modifyGoodsActionPerformed(arg0);
}
});
button_1.setIcon(new ImageIcon(GoodsManagerInterFrm.class.getResource("/images/modify.png")));
JButton button_2 = new JButton("\u91CD\u7F6E");
button_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
resetValueActionPerformed(arg0);
}
});
button_2.setIcon(new ImageIcon(GoodsManagerInterFrm.class.getResource("/images/reset.png")));
JButton button_3 = new JButton("\u5220\u9664");
button_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
deleteGoodsActionPerformed(arg0);
}
});
button_3.setIcon(new ImageIcon(GoodsManagerInterFrm.class.getResource("/images/delete.png")));
GroupLayout gl_panel_1 = new GroupLayout(panel_1);
gl_panel_1.setHorizontalGroup(
gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addContainerGap()
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(lblNewLabel)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(goodsIdTxt, GroupLayout.PREFERRED_SIZE, 53, GroupLayout.PREFERRED_SIZE)
.addGap(26)
.addComponent(label_3)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(goodsNameTxt, GroupLayout.PREFERRED_SIZE, 111, GroupLayout.PREFERRED_SIZE))
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(lblNewLabel_1)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(priceTxt, GroupLayout.PREFERRED_SIZE, 84, GroupLayout.PREFERRED_SIZE)
.addGap(26)
.addComponent(label_5)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(goodsSupplierTxt, GroupLayout.PREFERRED_SIZE, 112, GroupLayout.PREFERRED_SIZE)))
.addGap(50)
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(label_4)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(manJrb)
.addGap(18)
.addComponent(femaleJrb))
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(label_6)
.addGap(18)
.addComponent(goodsTypeNameJcb, GroupLayout.PREFERRED_SIZE, 127, GroupLayout.PREFERRED_SIZE))))
.addComponent(label_7)
.addComponent(goodsDescTxt, Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 518, GroupLayout.PREFERRED_SIZE))
.addContainerGap(30, Short.MAX_VALUE))
.addGroup(gl_panel_1.createSequentialGroup()
.addGap(93)
.addComponent(button_1)
.addPreferredGap(ComponentPlacement.RELATED, 128, Short.MAX_VALUE)
.addComponent(button_2)
.addGap(112)
.addComponent(button_3)
.addGap(69))
);
gl_panel_1.setVerticalGroup(
gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addGap(21)
.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
.addComponent(lblNewLabel)
.addComponent(goodsIdTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_3)
.addComponent(goodsNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(femaleJrb)
.addComponent(manJrb)
.addComponent(label_4))
.addGap(18)
.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
.addComponent(lblNewLabel_1)
.addComponent(priceTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_5)
.addComponent(goodsSupplierTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_6)
.addComponent(goodsTypeNameJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
.addComponent(label_7)
.addComponent(goodsDescTxt, GroupLayout.PREFERRED_SIZE, 62, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
.addComponent(button_1)
.addComponent(button_3)
.addComponent(button_2))
.addContainerGap())
);
panel_1.setLayout(gl_panel_1);
goodsTable = new JTable();
goodsTable.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
MouseClickGoodsTableActionPerformed(arg0);
}
});
goodsTable.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"\u8D27\u7269\u7F16\u53F7", "\u8D27\u7269\u540D\u79F0", "\u4F9B\u8D27\u5546", "\u6027\u522B", "\u8D27\u7269\u4EF7\u683C", "\u8D27\u7269\u63CF\u8FF0", "\u8D27\u7269\u7C7B\u522B"
}
) {
boolean[] columnEditables = new boolean[] {
false, false, false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
scrollPane.setViewportView(goodsTable);
JLabel label = new JLabel("\u8D27\u7269\u540D\u79F0\uFF1A");
s_goodsNameTxt = new JTextField();
s_goodsNameTxt.setColumns(10);
JLabel label_1 = new JLabel("\u4F9B\u8D27\u5546\uFF1A");
s_goodsSupplierTxt = new JTextField();
s_goodsSupplierTxt.setColumns(10);
JLabel label_2 = new JLabel("\u8D27\u7269\u7C7B\u522B\uFF1A");
s_goodsTypeNameJcbTxt = new JComboBox();
JButton button = new JButton("\u641C\u7D22");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
searchGoodsActionPerformed(arg0);
}
});
button.setIcon(new ImageIcon(GoodsManagerInterFrm.class.getResource("/images/Search.png")));
GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addContainerGap()
.addComponent(label)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_goodsNameTxt, GroupLayout.PREFERRED_SIZE, 87, GroupLayout.PREFERRED_SIZE)
.addGap(30)
.addComponent(label_1)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_goodsSupplierTxt, GroupLayout.PREFERRED_SIZE, 86, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(label_2)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_goodsTypeNameJcbTxt, GroupLayout.PREFERRED_SIZE, 119, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 22, Short.MAX_VALUE)
.addComponent(button)
.addContainerGap())
);
gl_panel.setVerticalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addContainerGap()
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(label)
.addComponent(s_goodsNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_1)
.addComponent(s_goodsSupplierTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_2)
.addComponent(s_goodsTypeNameJcbTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(button))
.addContainerGap(17, Short.MAX_VALUE))
);
panel.setLayout(gl_panel);
getContentPane().setLayout(groupLayout);
//填充表单
this.fillGoodsTable(new Goods());
this.fillGoodsTypeNameItem("search");
this.fillGoodsTypeNameItem("modify");
}
/**
* 货物删除事件
* @param arg0
*/
private void deleteGoodsActionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String id = this.goodsIdTxt.getText();
if(StringUtil.isEmpty(id)){
JOptionPane.showMessageDialog(null, "请选择要删除的货物");
return;
}
int n = JOptionPane.showConfirmDialog(null, "确定要删除此货物?");
Goods goods = new Goods(Integer.parseInt(id));
if(n==0){
Connection conn = null;
try {
conn = dbUtil.getCon();
int result = goodsDao.deleteGoods(conn, goods);
if(result==1){
JOptionPane.showMessageDialog(null, "货物删除成功!");
this.resetValue();
this.fillGoodsTable(new Goods());
}else{
JOptionPane.showMessageDialog(null, "货物删除失败!");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
JOptionPane.showMessageDialog(null, "货物删除失败!");
}finally{
try {
dbUtil.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 货物修改事件
* @param a
*/
private void modifyGoodsActionPerformed(Object a) {
// TODO Auto-generated method stub
String id = this.goodsIdTxt.getText();
String goodsName = this.goodsNameTxt.getText();
String price = this.priceTxt.getText();
String goodsSupplier = this.goodsSupplierTxt.getText();
String goodsDesc = this.goodsDescTxt.getText();
if(StringUtil.isEmpty(id)){
JOptionPane.showMessageDialog(null, "请选择要修改的货物");
return;
}
if(StringUtil.isEmpty(goodsName)){
JOptionPane.showMessageDialog(null, "货物名称不能为空!");
return;
}
if(StringUtil.isEmpty(price)){
JOptionPane.showMessageDialog(null, "货物价格不能为空!");
return;
}
if(StringUtil.isEmpty(goodsSupplier)){
JOptionPane.showMessageDialog(null, "供货商名称不能为空!");
return;
}
if(StringUtil.isEmpty(goodsDesc)){
JOptionPane.showMessageDialog(null, "货物描述不能为空!");
return;
}
String sex = "";
if(manJrb.isSelected()){
sex = "男";
}else if(femaleJrb.isSelected()){
sex = "女";
}
GoodsType goodsType = (GoodsType)this.goodsTypeNameJcb.getSelectedItem();
int goodsTypeId = goodsType.getId();
Goods goods = new Goods(Integer.parseInt(id), goodsName, goodsSupplier, sex, Double.parseDouble(price), goodsDesc,goodsTypeId);
Connection conn = null;
try {
conn = DbUtil.getCon();
int result = GoodsDao.updateGoods(conn, goods);
if(result == 1){
JOptionPane.showMessageDialog(null, "货物修改成功!");
this.fillGoodsTable(new Goods());
}else{
JOptionPane.showMessageDialog(null, "货物修改失败!");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
JOptionPane.showMessageDialog(null, "货物修改失败!");
}finally{
try {
dbUtil.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 货物搜索事件
* @param arg0
*/
private void searchGoodsActionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String goodsName = this.s_goodsNameTxt.getText();
String goodsSupplier = this.s_goodsSupplierTxt.getText();
GoodsType goodsType = (GoodsType)this.s_goodsTypeNameJcbTxt.getSelectedItem();
int goodsTypeId = goodsType.getId();
Goods goods = new Goods(goodsName, goodsSupplier, goodsTypeId);
this.fillGoodsTable(goods);
}
/**
* 填充下拉列表菜单
* @param type
*/
private void fillGoodsTypeNameItem(String type){
Connection conn = null;
GoodsType goodsType = null;
ResultSet rs = null;
try {
conn = dbUtil.getCon();
rs = goodsTypeDao.listGoodsType(conn, new GoodsType());
if("search".equals(type)){
goodsType = new GoodsType();
goodsType.setGoodsTypeName("请选择...");
goodsType.setId(-1);
this.s_goodsTypeNameJcbTxt.addItem(goodsType);
}
while(rs.next()){
goodsType = new GoodsType();
goodsType.setId(rs.getInt("id"));
goodsType.setGoodsTypeName(rs.getString("goodsTypeName"));
if("search".equals(type)){
this.s_goodsTypeNameJcbTxt.addItem(goodsType);
}else if("modify".equals(type)){
this.goodsTypeNameJcb.addItem(goodsType);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbUtil.close(conn, rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 填充表单事件
* @param goods
*/
private void fillGoodsTable(Goods goods){
DefaultTableModel dtm = (DefaultTableModel)goodsTable.getModel();
dtm.setRowCount(0);
Connection conn = null;
ResultSet rs = null;
try {
conn = DbUtil.getCon();
rs = goodsDao.listGoods(conn, goods);
while(rs.next()){
Vector v = new Vector();
v.add(rs.getString("id"));
v.add(rs.getString("goodsName"));
v.add(rs.getString("goodsSupplier"));
v.add(rs.getString("sex"));
v.add(rs.getString("price"));
v.add(rs.getString("goodsDesc"));
v.add(rs.getString("goodsTypeName"));
dtm.addRow(v);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbUtil.close(conn, rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 鼠标点击事件
* @param arg0
*/
private void MouseClickGoodsTableActionPerformed(MouseEvent arg0) {
// TODO Auto-generated method stub
int row = this.goodsTable.getSelectedRow();
this.goodsIdTxt.setText(goodsTable.getValueAt(row, 0)+"");
this.goodsNameTxt.setText(goodsTable.getValueAt(row, 1)+"");
this.goodsSupplierTxt.setText(goodsTable.getValueAt(row, 2)+"");
String sex = (String)goodsTable.getValueAt(row, 3);
if("男".equals(sex)){
this.manJrb.setSelected(true);
}else if("女".equals(sex)){
this.femaleJrb.setSelected(true);
}
this.priceTxt.setText(goodsTable.getValueAt(row, 4)+"");
this.goodsDescTxt.setText(goodsTable.getValueAt(row, 5)+"");
String goodsTypeName = (String)this.goodsTable.getValueAt(row, 6);
int n = this.goodsTypeNameJcb.getItemCount();
for(int i = 0; i < n; i++){
GoodsType item = (GoodsType)this.goodsTypeNameJcb.getItemAt(i);
if(item.getGoodsTypeName().equals(goodsTypeName)){
this.goodsTypeNameJcb.setSelectedIndex(i);
}
}
}
/**
* 重置事件
* @param arg0
*/
private void resetValueActionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
this.resetValue();
}
/**
* 重置表单
*/
private void resetValue(){
this.goodsIdTxt.setText("");
this.goodsNameTxt.setText("");
this.goodsSupplierTxt.setText("");
this.priceTxt.setText("");
this.goodsDescTxt.setText("");
this.manJrb.setSelected(true);
//下拉菜单的重置
}
}

货物添加页面显示效果图:
货物管理效果显示图:
经过这几篇博客的介绍就完成了一个小小的仓库管理系统。

初学构建小项目之仓库管理系统货物管理功能实现(四)相关推荐

  1. 初学构建小项目之仓库管理系统主页面的实现(二)

    上一篇博客我讲了数据库的创建以及管理员表的实现和管理员登录页面的实现,这一篇我来说说仓库管理系统的主页面的实现.主要是用eclipse中的插件windowbuilder来实现.其下载地址为:http: ...

  2. C小项目 —— 学生信息管理系统

    C小项目 -- 学生信息管理系统 实现功能: 1. 录入学生信息 2. 显示所有学生信息 3. 按学号查询学生信息 4. 按姓名查询学生信息(支持模糊查询) 5. 按年龄查询学生信息 6. 修改学生信 ...

  3. SSM入门小项目----学生信息管理系统

    SSM入门小项目----学生信息管理系统 学习了SSM后,自己想动手写个小项目,巩固一下.选择了比较简单的学生信息管理系统,项目比较简单,包括的功能有:登录.学生信息的增删改查.分页(前端实现). 本 ...

  4. wms仓库管理系统的核心功能及作用

    wms仓库管理系统可以集中管理线上线下库存,支持多仓库.多平台等不同的业务模式,支持多部门.多角色协同办公,支持RF手持终端作业,可以精确跟踪货物从入库到出库的整个过程,满足客户精细化的库存管理需求, ...

  5. 部队仓库管理系统有哪些功能和类型

    部队仓库管理系统有哪些功能和类型 部队仓库管理系统只有不断提高仓储作业效率,改善仓储作业条件,提高仓储资源利用率,才能满足现代战争的发展要求.随着物品种类的增加,军营仓库的覆盖面积越来越大,使得仓库吞 ...

  6. 【小项目】OA系统-员工管理

    [小项目]OA系统-员工管理 嘿,你好啊,好久没有更新文章了,本站最近遭遇了大的波动,暂时没心情更新.刚好16级学弟学妹们要参加初级软件工程师的证书考试,看了他们的习题,就简单做了一个,方便他们观看. ...

  7. 后勤管理系统—服务台管理功能

    数图互通是一家IT类技术型软件科技公司,专业的不动产.工作场所.空间.固定资产.设备家具.设施运维及可持续性管理解决方案软件供应商. 一.后勤管理系统服务台管理功能包含: 1.专业自动化.集中管理的自 ...

  8. Java搭建宝塔部署实战毕设项目WMS仓库管理系统源码

    大家好啊,我是测评君,欢迎来到web测评. 本期给大家带来一套Java开发的毕业设计项目WMS仓库管理系统源码. 技术架构 技术框架:SpringMVC + Mybatis + Ehcache + b ...

  9. Java小项目-银行用户管理系统

    文章目录 前言 一. 功能 二. 代码 银行卡数据 转账流水数据 用户数据 BanksController UserController BanksDao RecordDao UserDao Bank ...

最新文章

  1. centos下安装apache + subversion(转)
  2. 深入浅出计算机组成原理学习笔记:局部性原理-数据库性能跟不上,加个缓存就好了(第36讲)...
  3. 中国互联网+政务建设发展现状及市场规模预测报告2022-2027年版
  4. linux 内核 linux kernel travel
  5. 编译原理习题(含答案)
  6. python 爬虫 请求网页内容不一致_Python爬虫偷懒神器 — 快速构造请求头!
  7. FileZilla 下载安装使用
  8. jquery右下角自动弹出关闭层
  9. Linux虚拟化KVM-Qemu分析(十一)之virtqueue
  10. 双目测距(二)--双目标定与矫正
  11. NetBeans Weekly News: #125-Nov 17,2010
  12. 综述:关系抽取,挑战与机遇并存!
  13. sqlserver2012下载地址
  14. 地址总线是单向还是双向_「计算机组成原理」:总线、地址总线、数据总线和控制总线...
  15. c语言大象喝水,大象喝水歇后语的答案
  16. Excel加密如何破解
  17. java中获取一天的开始时间和结束时间
  18. JQuery修改对象的属性值
  19. 使用计算机正确坐姿,电脑族的正确坐姿
  20. 3亿美元!金山云宣布D轮融资 降价布局多垂直领域

热门文章

  1. thread.abort java_C# Thread.Abort方法与ThreadAbortException异常(取消线程与异常处理)...
  2. tomcat安装双击startup乱码解决,亲测可用
  3. [C++] OpenCasCade空间几何库的模型展现
  4. 如何选用PCB表面处理工艺?
  5. 从小学习编程的路线与编程进阶
  6. AUTOSAR从入门到精通-【应用篇】基于 AUTOSAR 的四轮驱动客车整车控制器应用层软件开发研究
  7. HTML文件和SHTML文件的区别
  8. 反弹shell(未完待续)
  9. 嵌入式linux开发板USB功能测试 Sigmstar星辰科技SD222D
  10. post完成导出Excel