return和System.out()的退出

本文详细解释了在程序中使用System.exit(0)与return的主要区别。System.exit(0)用于立即终止整个程序,而return则用于从当前方法返回到调用者。此外,文章还讨论了这些命令在不同上下文中的适用性和最佳实践。
如果是程序入口方法,两者没什么区别 。 如果是别的方法,那System.exit(0)直接终止程序,就算后面有代码也不执行了 而return则返回至调用该方法的地方,如果后面还有代码则继续执行 System.exit(0); 终止线程 但无法返回什么 return 最主要的功能是返回一个变量 0都是非正常退出,系统会需要这个返回值。 如果你的程序是出现异常,需要退出,你就用非0值。 正常执行到最后,就exit(0)
import java.util.ArrayList; import java.util.Scanner; import java.io.*; public class HospitalManagementSystem { private static ArrayList<Patient> patients = new ArrayList<>(); private static ArrayList<Doctor> doctors = new ArrayList<>(); private static ArrayList<Appointment> appointments = new ArrayList<>(); private static Scanner scanner = new Scanner(System.in); private static int patientIdCounter = 1; private static int doctorIdCounter = 1; private static int appointmentIdCounter = 1; private static final String DATA_FILE = "hospital_data.dat"; public static void main(String[] args) { loadData(); Runtime.getRuntime().addShutdownHook(new Thread(() -> saveData())); while (true) { System.out.println("\n=== 医院管理系统 ==="); System.out.println("1. 患者管理"); System.out.println("2. 医生管理"); System.out.println("3. 预约管理"); System.out.println("4. 退出系统"); System.out.print("请选择操作: "); int choice = scanner.nextInt(); scanner.nextLine(); // 消耗换行符 switch (choice) { case 1: managePatients(); break; case 2: manageDoctors(); break; case 3: manageAppointments(); break; case 4: // 移除显式的saveData()调用,让关闭钩子处理数据保存 System.exit(0); default: System.out.println("无效选择,请重新输入。"); } } } private static void managePatients() { while (true) { System.out.println("\n=== 患者管理 ==="); System.out.println("1. 添加患者"); System.out.println("2. 查看所有患者"); System.out.println("3. 查找患者"); System.out.println("4. 修改患者信息"); System.out.println("5. 删除患者"); System.out.println("6. 返回主菜单"); System.out.print("请选择操作: "); int choice = scanner.nextInt(); scanner.nextLine(); switch (choice) { case 1: addPatient(); break; case 2: listAllPatients(); break; case 3: searchPatient(); break; case 4: updatePatient(); break; case 5: deletePatient(); break; case 6: return; default: System.out.println("无效选择,请重新输入。"); } } } private static void addPatient() { System.out.print("请输入患者姓名: "); String name = scanner.nextLine(); System.out.print("请输入患者年龄: "); int age = scanner.nextInt(); scanner.nextLine(); System.out.print("请输入患者性别: "); String gender = scanner.nextLine(); System.out.print("请输入患者电话: "); String phone = scanner.nextLine(); Patient patient = new Patient(patientIdCounter++, name, age, gender, phone); patients.add(patient); System.out.println("患者添加成功!"); } private static void listAllPatients() { if (patients.isEmpty()) { System.out.println("没有患者记录。"); return; } System.out.println("\n=== 所有患者 ==="); for (Patient patient : patients) { System.out.println("ID: " + patient.getId() + ", 姓名: " + patient.getName() + ", 年龄: " + patient.getAge() + ", 性别: " + patient.getGender() + ", 电话: " + patient.getPhone()); } } private static void searchPatient() { System.out.print("请输入要查找的患者ID: "); int id = scanner.nextInt(); scanner.nextLine(); boolean found = false; for (Patient patient : patients) { if (patient.getId() == id) { System.out.println("找到患者记录:"); System.out.println("ID: " + patient.getId() + ", 姓名: " + patient.getName() + ", 年龄: " + patient.getAge() + ", 性别: " + patient.getGender() + ", 电话: " + patient.getPhone()); found = true; break; } } if (!found) { System.out.println("未找到匹配的患者记录。"); } } private static void manageDoctors() { while (true) { System.out.println("\n=== 医生管理 ==="); System.out.println("1. 添加医生"); System.out.println("2. 查看所有医生"); System.out.println("3. 查找医生"); System.out.println("4. 修改医生信息"); System.out.println("5. 删除医生"); System.out.println("6. 返回主菜单"); System.out.print("请选择操作: "); int choice = scanner.nextInt(); scanner.nextLine(); switch (choice) { case 1: addDoctor(); break; case 2: listAllDoctors(); break; case 3: searchDoctor(); break; case 4: updatePatient(); break; case 5: deletePatient(); break; case 6: return; default: System.out.println("无效选择,请重新输入。"); } } } private static void addDoctor() { System.out.print("请输入医生姓名: "); String name = scanner.nextLine(); System.out.print("请输入医生科室: "); String department = scanner.nextLine(); System.out.print("请输入医生电话: "); String phone = scanner.nextLine(); Doctor doctor = new Doctor(doctorIdCounter++, name, department, phone); doctors.add(doctor); System.out.println("医生添加成功!"); } private static void listAllDoctors() { if (doctors.isEmpty()) { System.out.println("没有医生记录。"); return; } System.out.println("\n=== 所有医生 ==="); for (Doctor doctor : doctors) { System.out.println("ID: " + doctor.getId() + ", 姓名: " + doctor.getName() + ", 科室: " + doctor.getDepartment() + ", 电话: " + doctor.getPhone()); } } private static void searchDoctor() { System.out.println("\n=== 查找医生 ==="); System.out.println("1. 按ID查找"); System.out.println("2. 按科室查找"); System.out.print("请选择查找方式: "); int choice = scanner.nextInt(); scanner.nextLine(); if (choice == 1) { System.out.print("请输入要查找的医生ID: "); int id = scanner.nextInt(); scanner.nextLine(); boolean found = false; for (Doctor doctor : doctors) { if (doctor.getId() == id) { System.out.println("找到医生记录:"); System.out.println("ID: " + doctor.getId() + ", 姓名: " + doctor.getName() + ", 科室: " + doctor.getDepartment() + ", 电话: " + doctor.getPhone()); found = true; break; } } if (!found) { System.out.println("未找到匹配的医生记录。"); } } else if (choice == 2) { System.out.print("请输入要查找的科室名称: "); String department = scanner.nextLine(); boolean found = false; System.out.println("\n=== " + department + "科室医生列表 ==="); for (Doctor doctor : doctors) { if (doctor.getDepartment().equalsIgnoreCase(department)) { System.out.println("ID: " + doctor.getId() + ", 姓名: " + doctor.getName() + ", 电话: " + doctor.getPhone()); found = true; } } if (!found) { System.out.println("未找到该科室的医生记录。"); } } else { System.out.println("无效选择。"); } } private static void manageAppointments() { while (true) { System.out.println("\n=== 预约管理 ==="); System.out.println("1. 添加预约"); System.out.println("2. 查看所有预约"); System.out.println("3. 查找预约"); System.out.println("4. 修改预约信息"); System.out.println("5. 删除预约"); System.out.println("6. 返回主菜单"); System.out.print("请选择操作: "); int choice = scanner.nextInt(); scanner.nextLine(); switch (choice) { case 1: addAppointment(); break; case 2: listAllAppointments(); break; case 3: searchAppointment(); break; case 4: updatePatient(); break; case 5: deletePatient(); break; case 6: return; default: System.out.println("无效选择,请重新输入。"); } } } private static void addAppointment() { System.out.print("请输入患者ID: "); int patientId = scanner.nextInt(); scanner.nextLine(); System.out.print("请输入医生ID: "); int doctorId = scanner.nextInt(); scanner.nextLine(); System.out.print("请输入预约日期(YYYY-MM-DD): "); String date = scanner.nextLine(); System.out.print("请输入预约时间(HH:MM): "); String time = scanner.nextLine(); Patient patient = findPatientById(patientId); Doctor doctor = findDoctorById(doctorId); if (patient == null || doctor == null) { System.out.println("患者或医生不存在,请检查ID!"); return; } Appointment appointment = new Appointment(appointmentIdCounter++, patient, doctor, date, time); appointments.add(appointment); System.out.println("预约添加成功!"); } private static void listAllAppointments() { if (appointments.isEmpty()) { System.out.println("没有预约记录。"); return; } System.out.println("\n=== 所有预约 ==="); for (Appointment appointment : appointments) { System.out.println("预约ID: " + appointment.getId() + ", 患者: " + appointment.getPatient().getName() + ", 医生: " + appointment.getDoctor().getName() + ", 日期: " + appointment.getDate() + ", 时间: " + appointment.getTime()); } } private static void searchAppointment() { System.out.print("请输入要查找的预约ID: "); int id = scanner.nextInt(); scanner.nextLine(); boolean found = false; for (Appointment appointment : appointments) { if (appointment.getId() == id) { System.out.println("找到预约记录:"); System.out.println("预约ID: " + appointment.getId() + ", 患者: " + appointment.getPatient().getName() + ", 医生: " + appointment.getDoctor().getName() + ", 日期: " + appointment.getDate() + ", 时间: " + appointment.getTime()); found = true; break; } } if (!found) { System.out.println("未找到匹配的预约记录。"); } } private static Patient findPatientById(int id) { for (Patient patient : patients) { if (patient.getId() == id) { return patient; } } return null; } private static Doctor findDoctorById(int id) { for (Doctor doctor : doctors) { if (doctor.getId() == id) { return doctor; } } return null; } private static void updatePatient() { System.out.print("请输入要修改的患者ID: "); int id = scanner.nextInt(); scanner.nextLine(); Patient patient = findPatientById(id); if (patient == null) { System.out.println("未找到匹配的患者记录。"); return; } System.out.println("当前患者信息:"); System.out.println("ID: " + patient.getId() + ", 姓名: " + patient.getName() + ", 年龄: " + patient.getAge() + ", 性别: " + patient.getGender() + ", 电话: " + patient.getPhone()); System.out.println("\n请输入新的患者信息(留空保持不变):"); System.out.print("姓名: "); String name = scanner.nextLine(); if (!name.isEmpty()) { patient.name = name; } System.out.print("年龄: "); String ageStr = scanner.nextLine(); if (!ageStr.isEmpty()) { patient.age = Integer.parseInt(ageStr); } System.out.print("性别: "); String gender = scanner.nextLine(); if (!gender.isEmpty()) { patient.gender = gender; } System.out.print("电话: "); String phone = scanner.nextLine(); if (!phone.isEmpty()) { patient.phone = phone; } System.out.println("患者信息修改成功!"); } private static void updateDoctor() { System.out.print("请输入要修改的医生ID: "); int id = scanner.nextInt(); scanner.nextLine(); Doctor doctor = findDoctorById(id); if (doctor == null) { System.out.println("未找到匹配的医生记录。"); return; } System.out.println("当前医生信息:"); System.out.println("ID: " + doctor.getId() + ", 姓名: " + doctor.getName() + ", 科室: " + doctor.getDepartment() + ", 电话: " + doctor.getPhone()); System.out.println("\n请输入新的医生信息(留空保持不变):"); System.out.print("姓名: "); String name = scanner.nextLine(); if (!name.isEmpty()) { doctor.name = name; } System.out.print("科室: "); String department = scanner.nextLine(); if (!department.isEmpty()) { doctor.department = department; } System.out.print("电话: "); String phone = scanner.nextLine(); if (!phone.isEmpty()) { doctor.phone = phone; } System.out.println("医生信息修改成功!"); } private static void updateAppointment() { System.out.print("请输入要修改的预约ID: "); int id = scanner.nextInt(); scanner.nextLine(); Appointment appointment = findAppointmentById(id); if (appointment == null) { System.out.println("未找到匹配的预约记录。"); return; } System.out.println("当前预约信息:"); System.out.println("预约ID: " + appointment.getId() + ", 患者: " + appointment.getPatient().getName() + ", 医生: " + appointment.getDoctor().getName() + ", 日期: " + appointment.getDate() + ", 时间: " + appointment.getTime()); System.out.println("\n请输入新的预约信息(留空保持不变):"); System.out.print("患者ID: "); String patientIdStr = scanner.nextLine(); if (!patientIdStr.isEmpty()) { int patientId = Integer.parseInt(patientIdStr); Patient patient = findPatientById(patientId); if (patient == null) { System.out.println("患者不存在,修改失败!"); return; } appointment.patient = patient; } System.out.print("医生ID: "); String doctorIdStr = scanner.nextLine(); if (!doctorIdStr.isEmpty()) { int doctorId = Integer.parseInt(doctorIdStr); Doctor doctor = findDoctorById(doctorId); if (doctor == null) { System.out.println("医生不存在,修改失败!"); return; } appointment.doctor = doctor; } System.out.print("日期(YYYY-MM-DD): "); String date = scanner.nextLine(); if (!date.isEmpty()) { appointment.date = date; } System.out.print("时间(HH:MM): "); String time = scanner.nextLine(); if (!time.isEmpty()) { appointment.time = time; } System.out.println("预约信息修改成功!"); } private static Appointment findAppointmentById(int id) { for (Appointment appointment : appointments) { if (appointment.getId() == id) { return appointment; } } return null; } private static void deletePatient() { System.out.print("请输入要删除的患者ID: "); int id = scanner.nextInt(); scanner.nextLine(); boolean found = false; for (int i = 0; i < patients.size(); i++) { if (patients.get(i).getId() == id) { patients.remove(i); System.out.println("患者删除成功!"); found = true; break; } } if (!found) { System.out.println("未找到匹配的患者记录。"); } } private static void deleteAppointment() { System.out.print("请输入要删除的预约ID: "); int id = scanner.nextInt(); scanner.nextLine(); boolean found = false; for (int i = 0; i < appointments.size(); i++) { if (appointments.get(i).getId() == id) { appointments.remove(i); System.out.println("预约删除成功!"); found = true; break; } } if (!found) { System.out.println("未找到匹配的预约记录。"); } } private static void deleteDoctor() { System.out.print("请输入要删除的医生ID: "); int id = scanner.nextInt(); scanner.nextLine(); boolean found = false; for (int i = 0; i < doctors.size(); i++) { if (doctors.get(i).getId() == id) { // 先删除与该医生相关的预约 for (int j = appointments.size() - 1; j >= 0; j--) { if (appointments.get(j).getDoctor().getId() == id) { appointments.remove(j); } } doctors.remove(i); System.out.println("医生删除成功!"); found = true; break; } } if (!found) { System.out.println("未找到匹配的医生记录。"); } } private static void saveData() { try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(DATA_FILE))) { oos.writeObject(patients); oos.writeObject(doctors); oos.writeObject(appointments); oos.writeInt(patientIdCounter); oos.writeInt(doctorIdCounter); oos.writeInt(appointmentIdCounter); System.out.println("数据已保存!"); } catch (IOException e) { System.err.println("保存数据时出错: " + e.getMessage()); } } @SuppressWarnings("unchecked") private static void loadData() { File file = new File(DATA_FILE); if (!file.exists()) { return; } try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(DATA_FILE))) { patients = (ArrayList<Patient>) ois.readObject(); doctors = (ArrayList<Doctor>) ois.readObject(); appointments = (ArrayList<Appointment>) ois.readObject(); patientIdCounter = ois.readInt(); doctorIdCounter = ois.readInt(); appointmentIdCounter = ois.readInt(); System.out.println("数据已加载!"); } catch (IOException | ClassNotFoundException e) { System.err.println("加载数据时出错: " + e.getMessage()); } } static class Appointment implements Serializable { private int id; private Patient patient; private Doctor doctor; private String date; private String time; public Appointment(int id, Patient patient, Doctor doctor, String date, String time) { this.id = id; this.patient = patient; this.doctor = doctor; this.date = date; this.time = time; } public int getId() { return id; } public Patient getPatient() { return patient; } public Doctor getDoctor() { return doctor; } public String getDate() { return date; } public String getTime() { return time; } } static class Patient implements Serializable { private int id; private String name; private int age; private String gender; private String phone; public Patient(int id, String name, int age, String gender, String phone) { this.id = id; this.name = name; this.age = age; this.gender = gender; this.phone = phone; } public int getId() { return id; } public String getName() { return name; } public int getAge() { return age; } public String getGender() { return gender; } public String getPhone() { return phone; } } static class Doctor implements Serializable { private int id; private String name; private String department; private String phone; public Doctor(int id, String name, String department, String phone) { this.id = id; this.name = name; this.department = department; this.phone = phone; } public int getId() { return id; } public String getName() { return name; } public String getDepartment() { return department; } public String getPhone() { return phone; } } }在此基础上 在查找患者中添加姓名查找功能 输出完整代码
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值