用Java和MySQL数据库写一个完整的客户管理系统需要代码
时间: 2024-03-24 19:38:47 浏览: 13
很抱歉,由于客户管理系统的代码量比较大,无法在这里直接提供完整的代码。但我可以给您提供一些基本的代码框架和思路,让您能够自己完成客户管理系统的编写。
首先,您需要按照上面所说的步骤,设计数据库表结构,编写Java程序连接到MySQL数据库,并实现基本的增删改查功能。这部分代码如下:
```java
// CustomerDAO.java
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class CustomerDAO {
private Connection con;
public CustomerDAO() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
con = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
public List<Customer> getAllCustomers() {
List<Customer> list = new ArrayList<Customer>();
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM customer");
while (rs.next()) {
Customer customer = new Customer();
customer.setId(rs.getInt("id"));
customer.setName(rs.getString("name"));
customer.setEmail(rs.getString("email"));
customer.setPhone(rs.getString("phone"));
list.add(customer);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public void addCustomer(Customer customer) {
try {
PreparedStatement ps = con.prepareStatement("INSERT INTO customer (name, email, phone) VALUES (?, ?, ?)");
ps.setString(1, customer.getName());
ps.setString(2, customer.getEmail());
ps.setString(3, customer.getPhone());
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
public void updateCustomer(Customer customer) {
try {
PreparedStatement ps = con.prepareStatement("UPDATE customer SET name=?, email=?, phone=? WHERE id=?");
ps.setString(1, customer.getName());
ps.setString(2, customer.getEmail());
ps.setString(3, customer.getPhone());
ps.setInt(4, customer.getId());
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
public void deleteCustomer(int id) {
try {
PreparedStatement ps = con.prepareStatement("DELETE FROM customer WHERE id=?");
ps.setInt(1, id);
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
接下来,您需要使用Java Swing或JavaFX创建用户界面,包括显示客户列表、添加新客户、修改客户信息、删除客户等功能。这部分代码如下:
```java
// CustomerManager.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
public class CustomerManager extends JFrame {
private CustomerDAO dao;
private JTable table;
private JTextField nameField, emailField, phoneField;
public CustomerManager() {
dao = new CustomerDAO();
JPanel panel = new JPanel(new BorderLayout());
table = new JTable();
JScrollPane scrollPane = new JScrollPane(table);
panel.add(scrollPane, BorderLayout.CENTER);
JPanel formPanel = new JPanel(new GridLayout(0, 2));
formPanel.add(new JLabel("Name:"));
nameField = new JTextField();
formPanel.add(nameField);
formPanel.add(new JLabel("Email:"));
emailField = new JTextField();
formPanel.add(emailField);
formPanel.add(new JLabel("Phone:"));
phoneField = new JTextField();
formPanel.add(phoneField);
panel.add(formPanel, BorderLayout.SOUTH);
JButton addButton = new JButton("Add");
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Customer customer = new Customer();
customer.setName(nameField.getText());
customer.setEmail(emailField.getText());
customer.setPhone(phoneField.getText());
dao.addCustomer(customer);
refreshTable();
}
});
panel.add(addButton, BorderLayout.NORTH);
JButton updateButton = new JButton("Update");
updateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row < 0) {
JOptionPane.showMessageDialog(CustomerManager.this, "Please select a row.");
return;
}
int id = (int) table.getModel().getValueAt(row, 0);
Customer customer = new Customer();
customer.setId(id);
customer.setName(nameField.getText());
customer.setEmail(emailField.getText());
customer.setPhone(phoneField.getText());
dao.updateCustomer(customer);
refreshTable();
}
});
panel.add(updateButton, BorderLayout.EAST);
JButton deleteButton = new JButton("Delete");
deleteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row < 0) {
JOptionPane.showMessageDialog(CustomerManager.this, "Please select a row.");
return;
}
int id = (int) table.getModel().getValueAt(row, 0);
dao.deleteCustomer(id);
refreshTable();
}
});
panel.add(deleteButton, BorderLayout.WEST);
setContentPane(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Customer Manager");
setSize(600, 400);
setLocationRelativeTo(null);
refreshTable();
}
private void refreshTable() {
List<Customer> customers = dao.getAllCustomers();
CustomerTableModel model = new CustomerTableModel(customers);
table.setModel(model);
}
public static void main(String[] args) {
CustomerManager manager = new CustomerManager();
manager.setVisible(true);
}
}
```
最后,您需要实现一个CustomerTableModel类,用于将客户信息显示在表格中。这部分代码如下:
```java
// CustomerTableModel.java
import javax.swing.table.AbstractTableModel;
import java.util.List;
public class CustomerTableModel extends AbstractTableModel {
private List<Customer> data;
public CustomerTableModel(List<Customer> data) {
this.data = data;
}
public int getColumnCount() {
return 4;
}
public int getRowCount() {
return data.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
Customer customer = data.get(rowIndex);
switch (columnIndex) {
case 0:
return customer.getId();
case 1:
return customer.getName();
case 2:
return customer.getEmail();
case 3:
return customer.getPhone();
default:
return null;
}
}
public String getColumnName(int column) {
switch (column) {
case 0:
return "ID";
case 1:
return "Name";
case 2:
return "Email";
case 3:
return "Phone";
default:
return null;
}
}
}
```
这些代码可以帮助您完成一个基本的客户管理系统,您可以根据实际需求进行修改和完善。希望对您有所帮助。