设计实现一个具有GUI界面的人员信息管理系统,要求实现基本的人员增、删、改、查的功能,人员信息列表应采用TableView组件,代码
时间: 2024-04-03 22:31:07 浏览: 24
这里提供一个JavaFX实现的示例代码,实现了基本的人员信息管理功能:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class PersonManagementSystem extends Application {
private TableView<Person> table = new TableView<Person>();
private TextField idField = new TextField();
private TextField nameField = new TextField();
private TextField genderField = new TextField();
private TextField ageField = new TextField();
private TextField phoneField = new TextField();
private Connection conn;
@Override
public void start(Stage primaryStage) {
// 初始化数据库连接
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
} catch (SQLException e) {
e.printStackTrace();
}
// 创建表格列
TableColumn<Person, Number> idColumn = new TableColumn<Person, Number>("ID");
idColumn.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getId()));
TableColumn<Person, String> nameColumn = new TableColumn<Person, String>("姓名");
nameColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getName()));
TableColumn<Person, String> genderColumn = new TableColumn<Person, String>("性别");
genderColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getGender()));
TableColumn<Person, Number> ageColumn = new TableColumn<Person, Number>("年龄");
ageColumn.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getAge()));
TableColumn<Person, String> phoneColumn = new TableColumn<Person, String>("电话");
phoneColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getPhone()));
// 将列添加到表格中
table.getColumns().addAll(idColumn, nameColumn, genderColumn, ageColumn, phoneColumn);
// 添加人员信息的输入框和按钮
Label idLabel = new Label("ID:");
Label nameLabel = new Label("姓名:");
Label genderLabel = new Label("性别:");
Label ageLabel = new Label("年龄:");
Label phoneLabel = new Label("电话:");
Button addButton = new Button("添加");
addButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
addPerson();
}
});
Button updateButton = new Button("修改");
updateButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
updatePerson();
}
});
Button deleteButton = new Button("删除");
deleteButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
deletePerson();
}
});
GridPane inputGridPane = new GridPane();
inputGridPane.setHgap(10);
inputGridPane.setVgap(10);
inputGridPane.setPadding(new Insets(10, 10, 10, 10));
inputGridPane.add(idLabel, 0, 0);
inputGridPane.add(nameLabel, 0, 1);
inputGridPane.add(genderLabel, 0, 2);
inputGridPane.add(ageLabel, 0, 3);
inputGridPane.add(phoneLabel, 0, 4);
inputGridPane.add(idField, 1, 0);
inputGridPane.add(nameField, 1, 1);
inputGridPane.add(genderField, 1, 2);
inputGridPane.add(ageField, 1, 3);
inputGridPane.add(phoneField, 1, 4);
HBox buttonBox = new HBox();
buttonBox.setSpacing(10);
buttonBox.getChildren().addAll(addButton, updateButton, deleteButton);
inputGridPane.add(buttonBox, 1, 5);
// 将表格和输入框添加到布局中
VBox vbox = new VBox();
vbox.setSpacing(10);
vbox.setPadding(new Insets(10, 10, 10, 10));
vbox.getChildren().addAll(table, inputGridPane);
// 创建场景并显示
Scene scene = new Scene(vbox);
primaryStage.setScene(scene);
primaryStage.setTitle("人员信息管理系统");
primaryStage.show();
// 初始化数据
refreshTable();
}
/**
* 添加人员信息
*/
private void addPerson() {
String name = nameField.getText();
String gender = genderField.getText();
int age = Integer.parseInt(ageField.getText());
String phone = phoneField.getText();
try {
PreparedStatement statement = conn.prepareStatement("INSERT INTO person (name, gender, age, phone) VALUES (?, ?, ?, ?)");
statement.setString(1, name);
statement.setString(2, gender);
statement.setInt(3, age);
statement.setString(4, phone);
statement.executeUpdate();
refreshTable();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 修改人员信息
*/
private void updatePerson() {
int id = Integer.parseInt(idField.getText());
String name = nameField.getText();
String gender = genderField.getText();
int age = Integer.parseInt(ageField.getText());
String phone = phoneField.getText();
try {
PreparedStatement statement = conn.prepareStatement("UPDATE person SET name=?, gender=?, age=?, phone=? WHERE id=?");
statement.setString(1, name);
statement.setString(2, gender);
statement.setInt(3, age);
statement.setString(4, phone);
statement.setInt(5, id);
statement.executeUpdate();
refreshTable();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 删除人员信息
*/
private void deletePerson() {
int id = Integer.parseInt(idField.getText());
try {
PreparedStatement statement = conn.prepareStatement("DELETE FROM person WHERE id=?");
statement.setInt(1, id);
statement.executeUpdate();
refreshTable();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 刷新表格数据
*/
private void refreshTable() {
try {
PreparedStatement statement = conn.prepareStatement("SELECT * FROM person");
ResultSet rs = statement.executeQuery();
ObservableList<Person> data = FXCollections.observableArrayList();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String gender = rs.getString("gender");
int age = rs.getInt("age");
String phone = rs.getString("phone");
data.add(new Person(id, name, gender, age, phone));
}
table.setItems(data);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 人员信息类
*/
public static class Person {
private final SimpleIntegerProperty id;
private final SimpleStringProperty name;
private final SimpleStringProperty gender;
private final SimpleIntegerProperty age;
private final SimpleStringProperty phone;
public Person(int id, String name, String gender, int age, String phone) {
this.id = new SimpleIntegerProperty(id);
this.name = new SimpleStringProperty(name);
this.gender = new SimpleStringProperty(gender);
this.age = new SimpleIntegerProperty(age);
this.phone = new SimpleStringProperty(phone);
}
public int getId() {
return id.get();
}
public String getName() {
return name.get();
}
public String getGender() {
return gender.get();
}
public int getAge() {
return age.get();
}
public String getPhone() {
return phone.get();
}
}
public static void main(String[] args) {
launch(args);
}
}
```
这段代码中,使用了JavaFX的TableView组件来展示人员信息列表,使用了JDBC连接MySQL数据库进行数据操作。在界面中,添加了添加、修改、删除按钮和对应的文本框用于输入人员信息。