用Java设计一个停车场信息管理系统,能够实现对停车位的信息管理(车位号、车主姓名、性别、年龄、车牌 号)。最后,停车信息输出到out.txt中。信息由GUI窗口显示
时间: 2024-02-05 22:03:17 浏览: 28
好的,我可以为您提供一个能够在GUI窗口中显示停车场信息的Java设计方案。首先,我们需要定义一个ParkingSpot类,表示停车位的信息:
```java
public class ParkingSpot {
private String ownerName;
private String gender;
private int age;
private String licensePlate;
public ParkingSpot() {
ownerName = "";
gender = "";
age = 0;
licensePlate = "";
}
public boolean isOccupied() {
return !ownerName.isEmpty();
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getLicensePlate() {
return licensePlate;
}
public void setLicensePlate(String licensePlate) {
this.licensePlate = licensePlate;
}
}
```
在ParkingSpot类中,我们定义了车主姓名、性别、年龄和车牌号等属性,同时也定义了isOccupied方法,用于判断该停车位是否被占用。
接下来,我们需要定义一个ParkingLot类,表示整个停车场的信息:
```java
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.util.ArrayList;
public class ParkingLot {
private ArrayList<ParkingSpot> spots;
private JFrame frame;
private JTable table;
public ParkingLot(int size) {
spots = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
spots.add(new ParkingSpot());
}
frame = new JFrame("停车场信息管理系统");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
String[] columnNames = {"车位号", "车主姓名", "性别", "年龄", "车牌号"};
Object[][] data = new Object[size][5];
for (int i = 0; i < size; i++) {
data[i][0] = i;
data[i][1] = "";
data[i][2] = "";
data[i][3] = "";
data[i][4] = "";
}
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setVisible(true);
}
public void parkCar(int spotNumber, String ownerName, String gender, int age, String licensePlate) {
ParkingSpot spot = spots.get(spotNumber);
spot.setOwnerName(ownerName);
spot.setGender(gender);
spot.setAge(age);
spot.setLicensePlate(licensePlate);
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.setValueAt(spotNumber, spotNumber, 0);
model.setValueAt(ownerName, spotNumber, 1);
model.setValueAt(gender, spotNumber, 2);
model.setValueAt(age, spotNumber, 3);
model.setValueAt(licensePlate, spotNumber, 4);
}
public void outputToFile(String fileName) {
try {
PrintWriter writer = new PrintWriter(fileName);
for (int i = 0; i < spots.size(); i++) {
ParkingSpot spot = spots.get(i);
if (spot.isOccupied()) {
writer.println("车位号:" + i + " 车主姓名:" + spot.getOwnerName() + " 性别:" + spot.getGender() + " 年龄:" + spot.getAge() + " 车牌号:" + spot.getLicensePlate());
} else {
writer.println("车位号:" + i + " 空闲");
}
}
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
```
在ParkingLot类中,我们使用ArrayList来存储停车位的信息,并且使用JFrame和JTable来展示停车场信息。在构造函数中,我们初始化JFrame和JTable,并将其展示出来。在parkCar方法中,我们可以将车停入指定车位,设置车主姓名、性别、年龄和车牌号,并且更新JTable中的信息。在outputToFile方法中,我们将所有停车位的信息输出到指定的文件中。
最后,我们可以在主函数中使用ParkingLot类来进行停车场信息的管理,并且使用JOptionPane来获取用户的输入:
```java
public static void main(String[] args) {
ParkingLot parkingLot = new ParkingLot(10);
while (true) {
String input = JOptionPane.showInputDialog("请输入车位号(0-9):");
if (input == null || input.isEmpty()) {
break;
}
int spotNumber = Integer.parseInt(input);
String ownerName = JOptionPane.showInputDialog("请输入车主姓名:");
String gender = JOptionPane.showInputDialog("请输入性别:");
String ageString = JOptionPane.showInputDialog("请输入年龄:");
int age = Integer.parseInt(ageString);
String licensePlate = JOptionPane.showInputDialog("请输入车牌号:");
parkingLot.parkCar(spotNumber, ownerName, gender, age, licensePlate);
}
parkingLot.outputToFile("out.txt");
}
```
在这个示例中,我们创建了一个大小为10的停车场,并且使用JOptionPane来获取用户输入,将车停入指定车位。最后,我们将停车场的信息输出到out.txt文件中,并且在GUI窗口中展示停车场信息。
希望这个示例能够帮助您完成停车场信息管理系统的设计,并且在GUI窗口中展示停车场信息。