package animalsystem;// UserInterface.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
public class UserInterface {
private ZooManager zooManager;
public UserInterface(ZooManager zooManager) {
this.zooManager = zooManager;
}
public void displayMenu() {
JFrame frame = new JFrame("动物园管理系统");
frame.setSize(500, 400);
frame.setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton addAnimalButton = new JButton("添加动物");
JButton removeAnimalButton = new JButton("移除动物");
JButton updateAnimalButton = new JButton("更新动物");
JButton manageVisitorsButton = new JButton("管理游客");
JButton manageFacilitiesButton = new JButton("管理设施");
JButton manageActivitiesButton = new JButton("管理活动");
JButton virtualTourButton = new JButton("虚拟导览");
JButton addButton = new JButton("添加游客");
JButton exitButton = new JButton("退出");
Font buttonFont = new Font(Font.SANS_SERIF, Font.PLAIN, 18);
addAnimalButton.setFont(buttonFont);
removeAnimalButton.setFont(buttonFont);
updateAnimalButton.setFont(buttonFont);
manageVisitorsButton.setFont(buttonFont);
manageFacilitiesButton.setFont(buttonFont);
manageActivitiesButton.setFont(buttonFont);
virtualTourButton.setFont(buttonFont);
addButton.setFont(buttonFont);
exitButton.setFont(buttonFont);
addAnimalButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleAddAnimal();
}
});
removeAnimalButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleRemoveAnimal();
}
});
updateAnimalButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleUpdateAnimal();
}
});
manageVisitorsButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleManageVisitors();
}
});
manageFacilitiesButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleManageFacilities();
}
});
manageActivitiesButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleManageActivities();
}
});
virtualTourButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleVirtualTour();
}
});
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleAddVisitor();
}
});
exitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
frame.add(addAnimalButton);
frame.add(removeAnimalButton);
frame.add(updateAnimalButton);
frame.add(manageVisitorsButton);
frame.add(manageFacilitiesButton);
frame.add(manageActivitiesButton);
frame.add(virtualTourButton);
frame.add(addButton);
frame.add(exitButton);
frame.setVisible(true);
}
// private void handleAddAnimal() {
// String type = JOptionPane.showInputDialog("输入动物类型 (哺乳动物, 鸟类, 爬行动物, 水生动物): ");
// String name = JOptionPane.showInputDialog("输入名字: ");
// int age = Integer.parseInt(JOptionPane.showInputDialog("输入年龄: "));
// String species = JOptionPane.showInputDialog("输入物种: ");
//
// Animal animal;
// switch (type.toLowerCase()) {
// case "哺乳动物":
// animal = new Mammal(name, age, species);
// break;
// case "鸟类":
// animal = new Bird(name, age, species);
// break;
// case "爬行动物":
// animal = new Reptile(name, age, species);
// break;
// case "水生动物":
// animal = new Aquatic(name, age, species);
// break;
// default:
// JOptionPane.showMessageDialog(null, "无效的动物类型。");
// return;
// }
//
// zooManager.addAnimal(animal);
// JOptionPane.showMessageDialog(null, "动物添加成功。");
// }
private void handleAddAnimal() {
JFrame addAnimalFrame = new JFrame("添加动物信息");
addAnimalFrame.setSize(400, 300);
addAnimalFrame.setLayout(new FlowLayout());
addAnimalFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JLabel nameLabel = new JLabel("名称: ");
JTextField nameField = new JTextField(20);
JLabel ageLabel = new JLabel("年龄: ");
JTextField ageField = new JTextField(5);
JLabel typeLabel = new JLabel("种类: ");
String[] types = {"哺乳动物", "鸟类", "爬行动物", "水生动物"};
JComboBox<String> typeComboBox = new JComboBox<>(types);
JButton addButton = new JButton("添加");
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
int age = Integer.parseInt(ageField.getText());
String type = (String) typeComboBox.getSelectedItem();
// String species = null;
Animal newAnimal;
switch (type) {
case "哺乳动物":
newAnimal = new Mammal(name, age);
break;
case "鸟类":
newAnimal = new Bird(name, age);
break;
case "爬行动物":
newAnimal = new Reptile(name, age);
break;
case "水生动物":
newAnimal = new Aquatic(name, age);
break;
default:
throw new IllegalStateException("未知种类: " + type);
}
zooManager.addAnimal(newAnimal);
JOptionPane.showMessageDialog(null, "动物 " + name + " 添加成功。");
addAnimalFrame.dispose();
}
});
addAnimalFrame.add(nameLabel);
addAnimalFrame.add(nameField);
addAnimalFrame.add(ageLabel);
addAnimalFrame.add(ageField);
addAnimalFrame.add(typeLabel);
addAnimalFrame.add(typeComboBox);
addAnimalFrame.add(addButton);
addAnimalFrame.setVisible(true);
}
private void handleRemoveAnimal() {
String name = JOptionPane.showInputDialog("输入要移除的动物名字: ");
Animal animalToRemove = null;
for (Animal animal : zooManager.getAnimals()) {
if (animal.name.equalsIgnoreCase(name)) {
animalToRemove = animal;
break;
}
}
if (animalToRemove != null) {
zooManager.removeAnimal(animalToRemove);
JOptionPane.showMessageDialog(null, "动物移除成功。");