diff --git a/images/OIP.webp b/images/OIP.webp new file mode 100644 index 0000000..12d2f19 Binary files /dev/null and b/images/OIP.webp differ diff --git a/images/a.jpg b/images/a.jpg new file mode 100644 index 0000000..0c0e1fd Binary files /dev/null and b/images/a.jpg differ diff --git a/src/main/java/com/example/Home.java b/src/main/java/com/example/Home.java index acd3bb2..a8b9768 100644 --- a/src/main/java/com/example/Home.java +++ b/src/main/java/com/example/Home.java @@ -1,31 +1,63 @@ package com.example; import javax.swing.*; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.sql.ResultSet; +import java.sql.SQLException; public class Home extends JFrame implements ActionListener { JMenuBar menuBar; - JMenu menu; // 库存菜单 进货菜单 销售菜单 - JMenuItem StockMenuItem,InventoryMenuItem,SalesMenuItem; + JMenuItem StockMenu,InventoryMenu,SalesMenu,UserMenu; + class BackgroundPanel extends JPanel { + private Image bg; + public BackgroundPanel(String path) { + bg = new ImageIcon(path).getImage(); + } + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + if (bg != null) { + g.drawImage(bg, 0, 0, getWidth(), getHeight(), this); + } + } + } - Home() { + Home(String username) { super("超市进销存信息管理系统"); + BackgroundPanel bgPanel = new BackgroundPanel("E:\\SuManagement\\images\\a.jpg"); + bgPanel.setLayout(new BorderLayout()); + setContentPane(bgPanel); + menuBar = new JMenuBar(); - menu = new JMenu("菜单"); - StockMenuItem = new JMenuItem("库存信息管理"); - InventoryMenuItem = new JMenuItem("进货信息管理"); - SalesMenuItem = new JMenuItem("销售信息管理"); - menu.add(StockMenuItem); - menu.add(InventoryMenuItem); - menu.add(SalesMenuItem); - menuBar.add(menu); + StockMenu = new JMenuItem("库存信息管理"); + InventoryMenu = new JMenuItem("进货信息管理"); + SalesMenu = new JMenuItem("销售信息管理"); + menuBar.add(StockMenu); + menuBar.add(InventoryMenu); + menuBar.add(SalesMenu); setJMenuBar(menuBar); - StockMenuItem.addActionListener(this); - InventoryMenuItem.addActionListener(this); - SalesMenuItem.addActionListener(this); + StockMenu.addActionListener(this); + InventoryMenu.addActionListener(this); + SalesMenu.addActionListener(this); + Jdbc jdbc = new Jdbc(); + String sql = "select * from user where username='"+username+"'"; + try { + ResultSet rs = jdbc.query(sql); + if(rs.next()){ + username = rs.getString("identity"); + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + if(username.equals("admin")){ + UserMenu = new JMenuItem("用户管理"); + menuBar.add(UserMenu); + UserMenu.addActionListener(this); + } setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500,500); setLocationRelativeTo(null); @@ -33,14 +65,20 @@ public class Home extends JFrame implements ActionListener { } @Override public void actionPerformed(ActionEvent e) { - if(e.getSource()==StockMenuItem){ + if(e.getSource()==StockMenu){ new StockProductManagement(); } - if(e.getSource()==InventoryMenuItem){ + if(e.getSource()==InventoryMenu){ new InventoryProductManagement(); } - if(e.getSource()==SalesMenuItem){ + if(e.getSource()==SalesMenu){ new SalesProductManagement(); } + if(e.getSource()==UserMenu){ + new UserManagement(); + } + } + public static void main(String[] args) { + new Home("admin"); } } diff --git a/src/main/java/com/example/InventoryProductManagement.java b/src/main/java/com/example/InventoryProductManagement.java index 5bfbb15..d5e17ee 100644 --- a/src/main/java/com/example/InventoryProductManagement.java +++ b/src/main/java/com/example/InventoryProductManagement.java @@ -21,8 +21,8 @@ public class InventoryProductManagement extends JFrame implements ActionListener menu = new JMenu("菜单");//创建顶级菜单“菜单” menuBar.add(menu);//将菜单添加到菜单栏 //创建菜单项 - menuItem1 = new JMenuItem("添加商品"); - menuItem2 = new JMenuItem("删除商品"); + menuItem1 = new JMenuItem("进货"); + menuItem2 = new JMenuItem("删除"); menuItem3 = new JMenuItem("帮助"); //添加菜单项到菜单 menu.add(menuItem1); diff --git a/src/main/java/com/example/Main.java b/src/main/java/com/example/Main.java index b855db3..1406290 100644 --- a/src/main/java/com/example/Main.java +++ b/src/main/java/com/example/Main.java @@ -54,7 +54,7 @@ public class Main extends JFrame implements ActionListener { ResultSet rs = jdbc.query(sql); if(rs.next()&&tf3.getText().equals(jb3.getText())) { JOptionPane.showMessageDialog(null, "登录成功"); - new Home(); + new Home(rs.getString("username")); this.setVisible(false); } else{ diff --git a/src/main/java/com/example/UserManagement.java b/src/main/java/com/example/UserManagement.java new file mode 100644 index 0000000..bd88b24 --- /dev/null +++ b/src/main/java/com/example/UserManagement.java @@ -0,0 +1,199 @@ +package com.example; + +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class UserManagement extends JFrame implements ActionListener { + + JMenuBar menuBar; + JMenuItem addItem, deleteItem, updateItem, refreshItem; + private JTable table; + private DefaultTableModel tableModel; + + public UserManagement() { + super("用户信息管理"); + + // 菜单栏 + menuBar = new JMenuBar(); + setJMenuBar(menuBar); + + addItem = new JMenuItem("添加用户"); + deleteItem = new JMenuItem("删除用户"); + updateItem = new JMenuItem("修改用户"); + refreshItem = new JMenuItem("刷新数据"); + + menuBar.add(addItem); + menuBar.add(deleteItem); + menuBar.add(updateItem); + menuBar.add(refreshItem); + + addItem.addActionListener(this); + deleteItem.addActionListener(this); + updateItem.addActionListener(this); + refreshItem.addActionListener(this); + + // 表格模型 + String[] columnNames = {"用户名", "密码", "身份"}; + tableModel = new DefaultTableModel(columnNames, 0) { + @Override + public boolean isCellEditable(int row, int column) { + return false; // 不直接在表格里改 + } + }; + table = new JTable(tableModel); + + JScrollPane scrollPane = new JScrollPane(table); + add(scrollPane, BorderLayout.CENTER); + + setSize(600, 400); + setLocationRelativeTo(null); + + // 初始加载 + loadData(); + setVisible(true); + } + + // 加载 identity=user 的数据 + private void loadData() { + Jdbc jdbc = new Jdbc(); + try { + ResultSet rs = jdbc.query("SELECT username,password,identity FROM user WHERE identity='user'"); + tableModel.setRowCount(0); + while (rs.next()) { + Object[] row = { + rs.getString("username"), + rs.getString("password"), + rs.getString("identity") + }; + tableModel.addRow(row); + } + rs.close(); + jdbc.close(); + } catch (SQLException e) { + e.printStackTrace(); + JOptionPane.showMessageDialog(this, "加载数据失败: " + e.getMessage()); + } + } + + @Override + public void actionPerformed(ActionEvent e) { + // 添加用户 + if (e.getSource() == addItem) { + JFrame frame = new JFrame("添加用户"); + frame.setLayout(new GridLayout(5, 2)); + JLabel nameLabel = new JLabel("用户名:"); + JTextField nameField = new JTextField(); + JLabel passLabel = new JLabel("密码:"); + JPasswordField passField = new JPasswordField(); + JButton addButton = new JButton("添加"); + JButton cancelButton = new JButton("取消"); + + frame.add(nameLabel); frame.add(nameField); + frame.add(passLabel); frame.add(passField); + frame.add(addButton); frame.add(cancelButton); + + addButton.addActionListener(ev -> { + String username = nameField.getText(); + String password = passField.getText(); + + Jdbc jdbc = new Jdbc(); + try { + jdbc.update("INSERT INTO user (username,password,email,phone,identity) VALUES ('" + + username + "','" + password + "','user')"); + jdbc.close(); + loadData(); + frame.dispose(); + } catch (SQLException ex) { + JOptionPane.showMessageDialog(frame, "添加失败: " + ex.getMessage()); + } + }); + + cancelButton.addActionListener(ev -> frame.dispose()); + frame.setSize(400, 250); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + // 删除用户 + else if (e.getSource() == deleteItem) { + int row = table.getSelectedRow(); + if (row == -1) { + JOptionPane.showMessageDialog(this, "请先选择要删除的用户!"); + return; + } + String username = (String) tableModel.getValueAt(row, 0); + int confirm = JOptionPane.showConfirmDialog(this, "确定删除用户: " + username + " ?", "确认", JOptionPane.YES_NO_OPTION); + if (confirm == JOptionPane.YES_OPTION) { + Jdbc jdbc = new Jdbc(); + try { + jdbc.update("DELETE FROM user WHERE username='" + username + "'"); + jdbc.close(); + loadData(); + } catch (SQLException ex) { + JOptionPane.showMessageDialog(this, "删除失败: " + ex.getMessage()); + } + } + } + + // 修改用户(选中一行后弹窗修改) + else if (e.getSource() == updateItem) { + int row = table.getSelectedRow(); + if (row == -1) { + JOptionPane.showMessageDialog(this, "请先选择要修改的用户!"); + return; + } + String oldUsername = (String) tableModel.getValueAt(row, 0); + + JFrame frame = new JFrame("修改用户"); + frame.setLayout(new GridLayout(5, 2)); + JTextField nameField = new JTextField((String) tableModel.getValueAt(row, 0)); + JTextField passField = new JTextField((String) tableModel.getValueAt(row, 1)); + JTextField emailField = new JTextField((String) tableModel.getValueAt(row, 2)); + JTextField phoneField = new JTextField((String) tableModel.getValueAt(row, 3)); + JButton saveButton = new JButton("保存"); + JButton cancelButton = new JButton("取消"); + + frame.add(new JLabel("用户名:")); frame.add(nameField); + frame.add(new JLabel("密码:")); frame.add(passField); + frame.add(new JLabel("邮箱:")); frame.add(emailField); + frame.add(new JLabel("电话:")); frame.add(phoneField); + frame.add(saveButton); frame.add(cancelButton); + + saveButton.addActionListener(ev -> { + String username = nameField.getText(); + String password = passField.getText(); + String email = emailField.getText(); + String phone = phoneField.getText(); + + Jdbc jdbc = new Jdbc(); + try { + jdbc.update("UPDATE user SET username='" + username + "', password='" + password + "', email='" + email + "', phone='" + phone + "' WHERE username='" + oldUsername + "'"); + jdbc.close(); + loadData(); + frame.dispose(); + } catch (SQLException ex) { + JOptionPane.showMessageDialog(frame, "修改失败: " + ex.getMessage()); + } + }); + + cancelButton.addActionListener(ev -> frame.dispose()); + frame.setSize(400, 250); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + // 刷新数据 + else if (e.getSource() == refreshItem) { + loadData(); + } + } + + public static void main(String[] args) { + new UserManagement(); + } +}