一、项目概要:
基于Java Swing +Mysql8.0数据库的物资(进销存)管理系统,具备登录功能。以及用户管理、商品进数据管理、进销存管理功能。
二、源码获取:
有需要可以直接点击下载。点击下载
如有技术咨询可联系QQ:571328502
三、界面展示:
登录:
主界面:
商品管理界面:
进销存管理界面:
四、主要代码:
1)、登录
package com.bj.frame;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import com.bj.entity.User;
import com.bj.factory.ServiceFactory;
import com.bj.util.MD5Code;
import com.bj.util.MyFont;
@SuppressWarnings("serial")
public class LoginJFrame extends JFrame implements MouseListener, FocusListener{
// 定义全局组件
JTextField id = new JTextField(20);
JPasswordField password = new JPasswordField(20);
JPanel backgroundPanel = null;
JButton button_minimize, button_close, button_login, button_reset;
public LoginJFrame() {
try {
Image imgae = ImageIO.read(new File("image/logo.png"));
this.setIconImage(imgae);
} catch (IOException e) {
e.printStackTrace();
}
backgroundPanel = new JPanel();
backgroundPanel.setBackground(UIManager.getColor("Button.background"));
backgroundPanel.setLayout(null);
id.setBounds(62, 102, 195, 42);
id.setFont(MyFont.Static);
id.setText("账号");
id.addFocusListener(this);
password.setBounds(62, 154, 195, 42);
password.setFont(MyFont.Static);
password.addFocusListener(this);
password.setText("密码");
password.setEchoChar('\0');
button_login = new JButton("登录");
button_login.setBounds(62, 222, 70, 27);
button_login.setFont(MyFont.Static);
button_login.addMouseListener(this);
button_reset = new JButton("重置");
button_reset.setBounds(187, 222, 70, 27);
button_reset.addMouseListener(this);
button_reset.setFont(MyFont.Static);
backgroundPanel.add(id);
backgroundPanel.add(password);
backgroundPanel.add(button_login);
backgroundPanel.add(button_reset);
getContentPane().add(backgroundPanel);
JLabel lblNewLabel = new JLabel("\u7528\u6237\u767B\u9646");
lblNewLabel.setFont(new Font("微软雅黑", Font.BOLD, 24));
lblNewLabel.setBounds(101, 50, 96, 42);
backgroundPanel.add(lblNewLabel);
this.setTitle("物资管理系统");
this.setSize(310, 380);
this.setVisible(true);
this.requestFocus();
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
}
@Override
public void mouseClicked(MouseEvent e) {
Map<String, Object> map;
if (e.getSource() == button_login) {
if ("账号".equals(id.getText())) {
JOptionPane.showMessageDialog(null, "账号不能为空");
} else if ("密码".equals(new String(password.getPassword()))) {
JOptionPane.showMessageDialog(null, "密码不能为空");
} else {
String un =id.getText();
String pw =new MD5Code().getMD5ofStr(new String(password.getPassword()));
User user = new User();
user.setId(un);
user.setPassword(pw);
try {
map = ServiceFactory.getUserServiceInstance().login(user);
boolean flag = (Boolean) map.get("flag");
if (flag) { // 账号密码正确,表示登录成功
User vo = (User)map.get("user");
this.setVisible(false);
new IndexJFrame(vo);
}else { // 登录失败
JOptionPane.showMessageDialog(null, "账号密码有误");
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
} else if (e.getSource() == button_reset) {
id.setText("账号");
password.setText("密码");
password.setEchoChar('\0');
}
}
//聚焦事件
@Override
public void focusGained(FocusEvent e) {
if (e.getSource() == id) {
if (id.getText().equals("账号")) {
id.setText("");
}
} else if (e.getSource() == password) {
if (new String(password.getPassword()).equals("密码")) {
password.setText("");
password.setEchoChar('*');
}
}
}
// 失焦事件
@Override
public void focusLost(FocusEvent e) {
if (e.getSource() == id) {
if (id.getText().equals("")) {
id.setText("账号");
}
} else if (e.getSource() == password) {
if (new String(password.getPassword()).equals("")) {
password.setText("密码");
password.setEchoChar('\0');
}
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
2)、商品管理
package com.bj.frame;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableCellRenderer;
import com.bj.entity.Good;
import com.bj.factory.ServiceFactory;
/**
* 商品管理界面
*
*/
public class GoodManagerJPanel implements ActionListener, MouseListener,DocumentListener{
JPanel backgroundPanel, topPanel, toolPanel, searchPanel, tablePanel;
JTable table;
JScrollPane jScrollPane;
JLabel label_category, label_warehouse, tool_add, tool_modify, tool_delete,label_name;
JTextField input_name;
public GoodManagerJPanel(){
backgroundPanel = new JPanel(new BorderLayout());
initTablePanel();
initTopPanel();
}
// 初始化顶部面板
public void initTopPanel() {
topPanel = new JPanel(new BorderLayout());
//调用工具面板
initToolPanel();
initSearchPanel();
//加入到总背景面板中去
backgroundPanel.add(topPanel, "North");
}
//初始化工具面板
public void initToolPanel() {
toolPanel = new JPanel();
// 工具图标
Icon icon_add = new ImageIcon("image/add.png");
tool_add = new JLabel(icon_add);
tool_add.setToolTipText("新建商品");
tool_add.addMouseListener(this);
Icon icon_modify = new ImageIcon("image/modify.png");
tool_modify = new JLabel(icon_modify);
tool_modify.setToolTipText("修改商品");
tool_modify.addMouseListener(this);
Icon icon_delete = new ImageIcon("image/delete.png");
tool_delete = new JLabel(icon_delete);
tool_delete.setToolTipText("删除商品");
tool_delete.addMouseListener(this);
toolPanel.add(tool_add);
toolPanel.add(tool_modify);
toolPanel.add(tool_delete);
//加入到顶部面板中去
topPanel.add(toolPanel, "West");
}
//初始化数据表格列表
public void initTablePanel() {
List<Good> Goods = null ;
try {
Goods = ServiceFactory.getGoodServiceInstance().list();
} catch (Exception e) {
e.printStackTrace();
}
//创建一个TableModel
GoodTableModel htm= new GoodTableModel(Goods);
//根据 TableModel来创建 Table
table = new JTable(htm);
//设置其居中
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
tcr.setHorizontalAlignment(JLabel.CENTER);//居中显示
table.setDefaultRenderer(Object.class, tcr);//设置渲染器
table.setRowHeight(80);
// 设置选择模式为单行选择
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 选中第一行 (基本0)
//table.getSelectionModel().setSelectionInterval(0, 0);
jScrollPane = new JScrollPane(table);
tablePanel = new JPanel(new BorderLayout());
tablePanel.setOpaque(false);
tablePanel.add(jScrollPane);
backgroundPanel.add(tablePanel, "Center");
}
public void refreshTablePanel() {
backgroundPanel.remove(tablePanel);
String name = input_name.getText();
List<Good> Goods = null ;
try {
Goods = ServiceFactory.getGoodServiceInstance().listByColumn("name", name);
} catch (Exception e) {
e.printStackTrace();
}
//创建一个TableModel
GoodTableModel htm= new GoodTableModel(Goods);
//根据 TableModel来创建 Table
table = new JTable(htm);
//设置其居中
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
tcr.setHorizontalAlignment(JLabel.CENTER);//居中显示
table.setDefaultRenderer(Object.class, tcr);//设置渲染器
table.setRowHeight(80);
jScrollPane = new JScrollPane(table);
tablePanel = new JPanel(new BorderLayout());
tablePanel.setOpaque(false);
tablePanel.add(jScrollPane);
backgroundPanel.add(tablePanel, "Center");
}
// 初始化搜素条件面板
public void initSearchPanel() {
searchPanel = new JPanel();
// 商品模糊名称输入框
input_name = new JTextField(10);
input_name.getDocument().addDocumentListener(this);
// 标签
label_name = new JLabel("商品名称");
searchPanel.add(label_name);
searchPanel.add(input_name);
topPanel.add(searchPanel, "East");
}
//鼠标单击事件
@Override
public void mouseClicked(MouseEvent e) {
if (e.getSource() == tool_add) {//添加商品
new AddGoodsJFrame(this);
}
else if(e.getSource() == tool_delete) {//删除商品
int selectedRow= table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(null, "请选择商品");
}
else {
int id = (int)table.getValueAt(selectedRow, 2);
Set<Integer> ids = new HashSet<Integer>();
ids.add(id);
int result = JOptionPane.showConfirmDialog(null, "是否确定删除?", "用户提示", JOptionPane.YES_NO_OPTION);
if (result == 0) {
try {
if (ServiceFactory.getGoodServiceInstance().delete(ids)) {
JOptionPane.showMessageDialog(null, "商品删除成功!");
refreshTablePanel();
}else {
JOptionPane.showMessageDialog(null, "商品删除失败!");
refreshTablePanel();
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
else if (e.getSource() == tool_modify) {//修改商品
int selectedRow= table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(null, "请选择商品");
} else {
System.out.println(selectedRow);
new ModifyGoodsJFrame(this, table, selectedRow);
}
}
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
}
@Override
public void mouseReleased(MouseEvent arg0) {
}
@Override
public void actionPerformed(ActionEvent arg0) {
}
@Override
public void changedUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
}
// 文本框插入内容事件
@Override
public void insertUpdate(DocumentEvent e) {
refreshTablePanel();
}
// 文本框删除内容事件
@Override
public void removeUpdate(DocumentEvent e) {
refreshTablePanel();
}
}
3)、进销存管理
package com.bj.frame;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableCellRenderer;
import com.bj.entity.Order;
import com.bj.entity.User;
import com.bj.factory.ServiceFactory;
public class OrderManagerJPanel implements ActionListener, MouseListener, DocumentListener {
JPanel backgroundPanel, topPanel, toolPanel, searchByGoodPanel, seacrchPanel,tablePanel;
JTable table;
JScrollPane jScrollPane;
JLabel tool_add, tool_modify, tool_delete,label_name,label_date,tool_confirm,tool_refute;
JTextField input_name,input_date;
// 用户对象
User user;
public OrderManagerJPanel(User user) {
this.user = user;
backgroundPanel = new JPanel(new BorderLayout());
initTopPanel();
initTablePanel();
}
// 初始化顶部面板
public void initTopPanel() {
topPanel = new JPanel(new BorderLayout());
initToolPanel();
initSearchPanel();
backgroundPanel.add(topPanel, "North");
}
// 初始化工具面板
public void initToolPanel() {
toolPanel = new JPanel();
// 工具图标
Icon icon_add = new ImageIcon("image/add.png");
tool_add = new JLabel(icon_add);
tool_add.setToolTipText("新建订单");
tool_add.addMouseListener(this);
Icon icon_modify = new ImageIcon("image/modify.png");
tool_modify = new JLabel(icon_modify);
tool_modify.setToolTipText("修改订单");
tool_modify.addMouseListener(this);
Icon icon_delete = new ImageIcon("image/delete.png");
tool_delete = new JLabel(icon_delete);
tool_delete.setToolTipText("删除订单");
tool_delete.addMouseListener(this);
Icon icon_confirm = new ImageIcon("image/confirm.png");
tool_confirm = new JLabel(icon_confirm);
tool_confirm.setToolTipText("批准订单");
tool_confirm.addMouseListener(this);
Icon icon_refute = new ImageIcon("image/refute.png");
tool_refute = new JLabel(icon_refute);
tool_refute.setToolTipText("拒接订单");
tool_refute.addMouseListener(this);
toolPanel.add(tool_add);
toolPanel.add(tool_modify);
toolPanel.add(tool_delete);
if( "1" .equals(user.getIdentity())) {
toolPanel.add(tool_confirm);
toolPanel.add(tool_refute);
}
topPanel.add(toolPanel, "West");
}
// 初始化搜素条件面板
public void initSearchPanel() {
searchByGoodPanel = new JPanel();
// 商品模糊名称输入框
input_name = new JTextField(10);
input_name.getDocument().addDocumentListener(this);
input_date = new JTextField(10);
input_date.getDocument().addDocumentListener(this);
// 标签
label_name = new JLabel("商品ID");
label_date = new JLabel("操作时间");
searchByGoodPanel.add(label_name);
searchByGoodPanel.add(input_name);
searchByGoodPanel.add(label_date);
searchByGoodPanel.add(input_date);
topPanel.add(searchByGoodPanel, "East");
}
// 初始化数据表格面板
public void initTablePanel() {
List<Order> Order = null ;
try {
Order = ServiceFactory.getOrderServiceInstance().list();
} catch (Exception e) {
e.printStackTrace();
}
OrderTableModel otm = new OrderTableModel(Order);
table = new JTable(otm);
//设置其居中
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
tcr.setHorizontalAlignment(JLabel.CENTER);//居中显示
table.setDefaultRenderer(Object.class, tcr);//设置渲染器
// 设置选择模式为单行选择
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 选中第一行 (基本0)
//table.getSelectionModel().setSelectionInterval(0, 0);
table.setRowHeight(80);
jScrollPane = new JScrollPane(table);
tablePanel = new JPanel(new BorderLayout());
tablePanel.setOpaque(false);
tablePanel.add(jScrollPane);
backgroundPanel.add(tablePanel, "Center");
}
// 更新数据表格
public void refreshTablePanel() {
backgroundPanel.remove(tablePanel);
String name = input_name.getText();
String date = input_date.getText();
List<Order> Order = null ;
Map<String,String> map = new HashMap<String,String>() ;
map.put("orderId", "");
map.put("ordertime", date);
map.put("goodid", name);
map.put("company", "");
map.put("number", "");
map.put("operator", "");
map.put("state", "");
map.put("sign", "");
try {
Order = ServiceFactory.getOrderServiceInstance().listInPutByColumns(map);
} catch (Exception e) {
e.printStackTrace();
}
OrderTableModel otm = new OrderTableModel(Order);
table = new JTable(otm);
//设置其居中
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
tcr.setHorizontalAlignment(JLabel.CENTER);//居中显示
table.setDefaultRenderer(Object.class, tcr);//设置渲染器
// 设置选择模式为单行选择
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 选中第一行 (基本0)
//table.getSelectionModel().setSelectionInterval(0, 0);
table.setRowHeight(80);
jScrollPane = new JScrollPane(table);
tablePanel = new JPanel(new BorderLayout());
tablePanel.setOpaque(false);
tablePanel.add(jScrollPane);
backgroundPanel.add(tablePanel, "Center");
}
@Override
public void mouseClicked(MouseEvent e) {
int selectedRow= table.getSelectedRow();
if (e.getSource() == tool_add) {
new AddOrderJFrame(user, this);
}
if (e.getSource() == tool_modify) {
}
if (e.getSource() == tool_delete) {
if (selectedRow == -1) {
JOptionPane.showMessageDialog(null, "请选择订单");
} else {
int id = (int)table.getValueAt(selectedRow, 0);
Set<Integer> ids = new HashSet<Integer>();
ids.add(id);
int result = JOptionPane.showConfirmDialog(null, "是否确定删除?", "用户提示", JOptionPane.YES_NO_OPTION);
if (result == 0) {
try {
if (ServiceFactory.getOrderServiceInstance().delete(ids)) {
JOptionPane.showMessageDialog(null, "订单删除成功!");
refreshTablePanel();
}else {
JOptionPane.showMessageDialog(null, "订单删除失败!");
refreshTablePanel();
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
if (e.getSource() == tool_confirm) {
if (selectedRow == -1) {
JOptionPane.showMessageDialog(null, "请选择订单");
} else {
int result = JOptionPane.showConfirmDialog(null, "确定通过审核?", "用户提示", JOptionPane.YES_NO_OPTION);
if (result == 0) {
int id = (int)table.getValueAt(selectedRow, 0);
String sign = (String)table.getValueAt(selectedRow, 7);
if("未审核".equals(sign)) {
try {
if(ServiceFactory.getOrderServiceInstance().comfirm(id)) {
JOptionPane.showMessageDialog(null, "操作成功!");
refreshTablePanel();
}else {
JOptionPane.showMessageDialog(null, "操作失败,请检查是否库存存在问题!");
refreshTablePanel();
}
}catch (Exception e1) {
e1.printStackTrace();
}
}else {
JOptionPane.showMessageDialog(null, "请选择正确的订单!");
refreshTablePanel();
}
}
}
}
if (e.getSource() == tool_refute) {
if (selectedRow == -1) {
JOptionPane.showMessageDialog(null, "请选择订单");
} else {
int result = JOptionPane.showConfirmDialog(null, "确定拒接该订单?", "用户提示", JOptionPane.YES_NO_OPTION);
if (result == 0) {
int id = (int)table.getValueAt(selectedRow, 0);
String sign = (String)table.getValueAt(selectedRow, 7);
if("未审核".equals(sign)) {
try {
if(ServiceFactory.getOrderServiceInstance().refute(id)) {
JOptionPane.showMessageDialog(null, "操作成功!");
refreshTablePanel();
}else {
JOptionPane.showMessageDialog(null, "操作失败!");
refreshTablePanel();
}
}catch (Exception e1) {
e1.printStackTrace();
}
}else {
JOptionPane.showMessageDialog(null, "请选择正确的订单!");
refreshTablePanel();
}
}
}
}
}
@Override
public void changedUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void insertUpdate(DocumentEvent arg0) {
refreshTablePanel();
}
@Override
public void removeUpdate(DocumentEvent arg0) {
refreshTablePanel();
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
4)、数据库连接
五、其它项目:
六、心灵寄语:
想要赢,就一定不能怕输。不怕输结果未必能赢,但是怕输,结果则是一定输。
PS:如有侵权,请联系删除。