Java基础 - 模拟医院挂号系统
模拟医院挂号系统功能
1. 科室管理:新增科室,删除科室(如果有医生在,则不能删除该科室),修改科室
2. 医生管理:录入医生信息以及科室信息,修改医生信息(主要是修改个人信息和科室)
3. 坐诊信息设置:可以设置医生当天和未来6天的坐诊情况,包括上午和下午的坐诊时间段和可预约数量,系统将自动保存到该医生的坐诊信息列表中
4. 全部信息展示:按照科室,展示每个医生七天的坐诊情况,需要按照科室归类展示
5. 预约功能:用户可以选择要预约的科室,医生、日期和时间段,并输入患者的个人信息,系统将激动判断该时间段是否还有预约名额,并保存预约信息
6. 搜索功能:用户可以输入搜索日期和时间段,系统将自动搜索未来七天内在该时间段坐诊的医生信息,并按照科室分类展示
7. 可以查询某个医生未来7天,病人对他的预约情况
//App
public class App {public static void main(String[] args) {//创建一个医院管理对象HospitalManager h = new HospitalManager();h.start();}
}
//Doctor
//医生类
public class Doctor {private String doctorId; //编号(唯一)private String name; //姓名private String departmentName; //科室名称private String gender; //性别private int age; //年龄private String specialty; //主治方向private LocalDate joinDate; //入职时间private ArrayList<Schedule> schedules = new ArrayList<>(); //7天坐诊情况public Doctor() {}public Doctor(String doctorId, String name, String departmentName, String gender, int age, String specialty, LocalDate joinDate, ArrayList<Schedule> schedules) {this.doctorId = doctorId;this.name = name;this.departmentName = departmentName;this.gender = gender;this.age = age;this.specialty = specialty;this.joinDate = joinDate;this.schedules = schedules;}public String getDoctorId() {return doctorId;}public void setDoctorId(String doctorId) {this.doctorId = doctorId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDepartmentName() {return departmentName;}public void setDepartmentName(String departmentName) {this.departmentName = departmentName;}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 getSpecialty() {return specialty;}public void setSpecialty(String specialty) {this.specialty = specialty;}public LocalDate getJoinDate() {return joinDate;}public void setJoinDate(LocalDate joinDate) {this.joinDate = joinDate;}public ArrayList<Schedule> getSchedules() {return schedules;}public void setSchedules(ArrayList<Schedule> schedules) {this.schedules = schedules;}
}
//Department
//科室类
public class Department {private String name;private ArrayList<Doctor> doctors = new ArrayList<>();public Department() {}public Department(String name, ArrayList<Doctor> doctors) {this.name = name;this.doctors = doctors;}public String getName() {return name;}public void setName(String name) {this.name = name;}public ArrayList<Doctor> getDoctors() {return doctors;}public void setDoctors(ArrayList<Doctor> doctors) {this.doctors = doctors;}
}
//Schedule
//医生坐诊情况类
public class Schedule {private LocalDate today; //当天日期private boolean update = false; //是否排班(默认未排班false)//上午private boolean morning; //是否看诊private LocalTime mStart; //上午开始时间private LocalTime mEnd; //上午结束时间private int mTotalNum; //上午可预约人数private int mAppointNum; //上午已预约人数//下午private boolean afternoon; //是否看诊private LocalTime aStart; //下午开始时间private LocalTime aEnd; //下午结束时间private int aTotalNum; //下午可预约人数private int aAppointNum; //下午已预约人数public Schedule() {}public Schedule(LocalDate today, boolean update, boolean morning, LocalTime mStart, LocalTime mEnd, int mTotalNum, int mAppointNum, boolean afternoon, LocalTime aStart, LocalTime aEnd, int aTotalNum, int aAppointNum) {this.today = today;this.update = update;this.morning = morning;this.mStart = mStart;this.mEnd = mEnd;this.mTotalNum = mTotalNum;this.mAppointNum = mAppointNum;this.afternoon = afternoon;this.aStart = aStart;this.aEnd = aEnd;this.aTotalNum = aTotalNum;this.aAppointNum = aAppointNum;}public boolean isUpdate() {return update;}public void setUpdate(boolean update) {this.update = update;}public LocalDate getToday() {return today;}public void setToday(LocalDate today) {this.today = today;}public boolean isMorning() {return morning;}public void setMorning(boolean morning) {this.morning = morning;}public LocalTime getmStart() {return mStart;}public void setmStart(LocalTime mStart) {this.mStart = mStart;}public LocalTime getmEnd() {return mEnd;}public void setmEnd(LocalTime mEnd) {this.mEnd = mEnd;}public int getmTotalNum() {return mTotalNum;}public void setmTotalNum(int mTotalNum) {this.mTotalNum = mTotalNum;}public int getmAppointNum() {return mAppointNum;}public void setmAppointNum(int mAppointNum) {this.mAppointNum = mAppointNum;}public boolean isAfternoon() {return afternoon;}public void setAfternoon(boolean afternoon) {this.afternoon = afternoon;}public LocalTime getaStart() {return aStart;}public void setaStart(LocalTime aStart) {this.aStart = aStart;}public LocalTime getaEnd() {return aEnd;}public void setaEnd(LocalTime aEnd) {this.aEnd = aEnd;}public int getaTotalNum() {return aTotalNum;}public void setaTotalNum(int aTotalNum) {this.aTotalNum = aTotalNum;}public int getaAppointNum() {return aAppointNum;}public void setaAppointNum(int aAppointNum) {this.aAppointNum = aAppointNum;}
}
//Appointment
//患者预约信息类
public class Appointment {private String userName; //患者姓名private String sex; //患者性别private int age; //患者年龄private String tel; //患者电话private String desc; //病情描述private String departmentName; //挂号科室private String doctorId; //看诊医生idprivate LocalDateTime appointDateTime; //预约时间public Appointment() {}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public String getDepartmentName() {return departmentName;}public void setDepartmentName(String departmentName) {this.departmentName = departmentName;}public String getDoctorId() {return doctorId;}public void setDoctorId(String doctorId) {this.doctorId = doctorId;}public LocalDateTime getAppointDateTime() {return appointDateTime;}public void setAppointDateTime(LocalDateTime appointDateTime) {this.appointDateTime = appointDateTime;}
}
/*模拟医院挂号系统功能1. 科室管理:新增科室,删除科室(如果有医生在,则不能删除该科室),修改科室名称2. 医生管理:录入医生信息以及科室信息,修改医生信息(主要是修改个人信息和科室)3. 坐诊信息设置:可以设置医生当天和未来6天的坐诊情况,包括上午和下午的坐诊时间段和可预约数量,系统将自动保存到该医生的坐诊信息列表中4. 全部信息展示:按照科室,展示每个医生七天的坐诊情况,需要按照科室归类展示5. 预约功能:用户可以选择要预约的科室,医生、日期和时间段,并输入患者的个人信息,系统将激动判断该时间段是否还有预约名额,并保存预约信息6. 搜索功能:用户可以输入搜索日期和时间段,系统将自动搜索未来七天内在该时间段坐诊的医生信息,并按照科室分类展示7. 可以查询某个医生未来7天,病人对他的预约情况
*///HospitalManager
public class HospitalManager {//系统需要存储全部科室信息private ArrayList<Department> departments = new ArrayList<>();//系统需要记录全部预约信息private ArrayList<Appointment> appointments = new ArrayList<>();Scanner sc = new Scanner(System.in);public void start() {while(true){System.out.println("====欢迎进入莴笋医院信息管理系统====");System.out.println("====1.科室管理--添加科室====");System.out.println("====2.科室管理--删除科室====");System.out.println("====3.科室管理--修改科室名称====");System.out.println("====4.医生管理--录入医生====");System.out.println("====5.医生管理--医生坐诊设置(可设置当天和未来6天的坐诊情况)====");System.out.println("====6.搜索--查看全部医生坐诊情况(当天和未来6天的坐诊详情)====");System.out.println("====7.搜索--查看某医生坐诊情况(当天和未来6天的坐诊详情)====");System.out.println("====8.挂号--挂号预约====");System.out.println("====9.退出====");System.out.println("请输入您的操作指令(1-9):");switch (sc.next()){case "1":addDepartment();break;case "2":deleteDepartment();break;case "3":modifyDepartment();break;case "4":addDoctor();break;case "5":setDoctorJob();break;case "6":searchAllJob();break;case "7":searchOneJob();break;case "8":Appoint();break;case "9":return;default:System.out.println("您选择的操作不存在,请重新选择");break;}}}private void Appoint() {System.out.println("====挂号预约====");//判断有没有科室(医院没有科室就一定没有医生)if(isDepartment()==false) {System.out.println("没有科室就没有医生");return;}//有科室while(true) {showAllDepartment(); //展示已有科室//先选择科室System.out.println("请选择挂号科室(最大选择" + departments.size() + "):");int command1 = sc.nextInt();if (existDepartment(command1) == false) {//不存在该科室continue;}//存在该科室Department department = departments.get(command1 - 1);//判断该科室是否存在医生if (department.getDoctors().size() == 0) {//没有医生System.out.println("该科室无医生");return;}//有医生while (true) {//显示该科室的全部医生showAllDoctor(department);Appointment a = new Appointment();a.setDepartmentName(department.getName()); //保存挂号科室名称//选择看诊的医生ArrayList<Doctor> doctors = department.getDoctors();System.out.println("请选择看诊医生的序号(最大选择"+doctors.size()+"):");int command2 = sc.nextInt();if(existDoctor(doctors,command2)==false){//不存在该医生continue;}//存在该医生Doctor d = doctors.get(command2-1); //保存选择的医生对象//展示该医生的排班信息print(d);ArrayList<Schedule> arr = d.getSchedules(); //arr保存该医生的排班信息//如果该医生一次都没排过(arr数组都是空的)if(arr.size() == 0){System.out.println("该医生未排班,请重新选择");continue;}OUT:while (true) {//该医生排过班(arr数组不是空的)System.out.println("请选择看诊日期:");String dayStr = sc.next();LocalDate ld = LocalDate.parse(dayStr);for (int i = 0; i < arr.size(); i++) {Schedule s = arr.get(i);if(s.getToday().equals(ld)){//存在该天的排班情况if(s.isUpdate() == false){System.out.println("该医生未排班,请重新选择日期");continue OUT;}//当天排班了s.isUpdate() == truewhile (true) {System.out.println("请输入看诊的时间(1:上午or2:下午):");int com = sc.nextInt();if(com == 1) { //选择上午看诊if (s.isMorning() == false) { //上午休息System.out.println("该医生上午休息,请重新选择");continue OUT;} else { //上午不休息if (s.getmAppointNum() < s.getmTotalNum()) { //上午预约人数没满s.setmAppointNum(s.getmAppointNum()+1); //医生可预约人数-1a.setDoctorId(d.getDoctorId()); //设置看诊医生idLocalDate appointDate = s.getToday();LocalTime appointTime = s.getmStart();LocalDateTime appointDateTime = LocalDateTime.of(appointDate,appointTime);a.setAppointDateTime(appointDateTime);System.out.println("请输入患者姓名:");a.setUserName(sc.next());System.out.println("请输入患者性别:");a.setSex(sc.next());System.out.println("请输入患者年龄:");a.setAge(sc.nextInt());System.out.println("请输入患者电话:");a.setTel(sc.next());System.out.println("请输入病情描述:");a.setDesc(sc.next());System.out.println("预约成功");return;} else {System.out.println("该医生当天上午已约满,请重新选择");continue OUT;}}}else if(com == 2){ // //选择下午看诊if (s.isAfternoon() == false) { //下午休息System.out.println("该医生下午休息,请重新选择");continue OUT;} else { //下午不休息if (s.getaAppointNum() < s.getaTotalNum()) { //下午预约人数没满s.setaAppointNum(s.getaAppointNum()+1); //医生可预约人数-1a.setDoctorId(d.getDoctorId()); //设置看诊医生idLocalDate appointDate = s.getToday();LocalTime appointTime = s.getaStart();LocalDateTime appointDateTime = LocalDateTime.of(appointDate,appointTime);a.setAppointDateTime(appointDateTime);System.out.println("请输入患者姓名:");a.setUserName(sc.next());System.out.println("请输入患者性别:");a.setSex(sc.next());System.out.println("请输入患者年龄:");a.setAge(sc.nextInt());System.out.println("请输入患者电话:");a.setTel(sc.next());System.out.println("请输入病情描述:");a.setDesc(sc.next());System.out.println("预约成功");return;} else {System.out.println("该医生当天下午已约满,请重新选择");continue OUT;}}}else{System.out.println("输入有误,请重新输入");continue;}}}}//不存在该天的排班情况System.out.println("您选择的看诊日期不在近7天,请重新选择");continue;}}}}//查看某医生近7天的全部坐诊情况和预约情况(根据id查更加规范)private void searchOneJob() {//判断有没有科室(没有科室就一定没有医生)if(isDepartment()==false) {System.out.println("没有科室就没有医生");return;}//有科室System.out.println("请输入你要查找的医生姓名:");String name = sc.next();for (int i = 0; i < departments.size(); i++) {Department department = departments.get(i); //department保存第i个科室信息ArrayList<Doctor> arr = department.getDoctors(); //创建arr集合(该集合保存的是某科室全部的医生信息)if(arr.size() != 0){ //某科室有医生for (int j = 0; j < arr.size(); j++) {Doctor d = arr.get(j); //保存医生信息if(d.getName().equals(name)){ //如果找到同名医生就输出System.out.println((d.getDepartmentName()));print(d);return;}}}}//遍历后还没找到System.out.println("查无此人");}//打印某医生的排班信息private void print(Doctor d) {System.out.println(d.getName()+"的排班情况:");ArrayList<Schedule> arr_s = d.getSchedules(); //医生的排班表//先更新当前和未来6天的时间updateSchedule(arr_s);if (arr_s.size() == 0){//没有进行过一次排班(arr_s就是空的)System.out.println("该医生未排班");return;}//不是空的for (int k = 0; k < arr_s.size() ; k++) {Schedule s = arr_s.get(k);System.out.println(s.getToday()+"的排班情况:");if(s.isUpdate() == false){System.out.println("未排班");continue;}//已排班if(s.isMorning() == true){System.out.println("上午:"+s.getmStart()+"-"+s.getmEnd()+" 可预约人数:"+s.getmTotalNum()+" 已预约人数:"+s.getmAppointNum());}else{System.out.println("上午休息");}if(s.isAfternoon() == true){System.out.println("下午:"+s.getaStart()+"-"+s.getaEnd()+" 可预约人数:"+s.getaTotalNum()+" 已预约人数:"+s.getaAppointNum());}else{System.out.println("下午休息");}}}private void searchAllJob() {System.out.println("====全部医生的坐班信息====");//判断有没有科室(没有科室就一定没有医生)if(isDepartment()==false) {System.out.println("没有科室就没有医生");return;}//有科室for (int i = 0; i < departments.size(); i++) {Department department = departments.get(i); //department保存第i个科室信息ArrayList<Doctor> arr = department.getDoctors(); //创建arr集合(该集合保存的是某科室全部的医生信息)if(arr.size() == 0){ //没有医生System.out.println("===="+department.getName()+"没有医生====");continue;}//有医生System.out.println("===="+department.getName()+"医生的排班情况====");for (int j = 0; j < arr.size(); j++) {Doctor d = arr.get(j); //科室中第j个医生的信息print(d); //打印医生的排班信息}}}private void setDoctorJob() {System.out.println("====医生坐诊设置====");//判断有没有科室if(isDepartment()==false) {return;}//有科室while(true) {showAllDepartment(); //展示已有科室//先选择科室System.out.println("请选择要排班的医生的科室(最大选择"+departments.size()+"):");int command1 = sc.nextInt();if(existDepartment(command1)==false){//不存在该科室continue;}//存在该科室Department department = departments.get(command1-1);//判断该科室是否存在医生if(department.getDoctors().size() == 0){//没有医生System.out.println("该科室无医生");continue;}//有医生while(true){//显示该科室的全部医生showAllDoctor(department);//选择需要排班的医生ArrayList<Doctor> doctors = department.getDoctors();System.out.println("请选择要排班的医生的序号(最大选择"+doctors.size()+"):");int command2 = sc.nextInt();if(existDoctor(doctors,command2)==false){//不存在该医生continue;}//存在该医生Doctor d = doctors.get(command2-1); //保存选择的医生对象// 为该医生设置坐诊时间//获取该医生的坐诊情况ArrayList<Schedule> schedules = d.getSchedules(); //第一次getSchedules()里面肯定是空的//先更新当前和未来6天的时间updateSchedule(schedules);//再给该医生当天和未来6天进行排班for (int i = 0; i < schedules.size(); i++) {Schedule s = schedules.get(i);updateDoctorSchedule(s);}System.out.println("已完成"+d.getName()+"排班"); //已某医生的排班return;}}}//给医生进行排班private void updateDoctorSchedule(Schedule s) {LocalDate today = s.getToday();System.out.println(today+"的安排如下:");if(s.isUpdate()==false){ //未排班System.out.println("未排班");}else{ //已排班(显示排班情况)//上午是否休息if(s.isMorning() == false){//上午休息System.out.println("上午休息");}else{//上午不休息System.out.println("上午:"+s.getmStart()+"-"+s.getmEnd()+" 可预约人数:"+s.getmTotalNum()+" 已预约人数:"+s.getmAppointNum());}//下午是否休息if(s.isAfternoon() == false){//下午休息System.out.println("下午休息");}else{//下午不休息System.out.println("下午:"+s.getaStart()+"-"+s.getaEnd()+" 可预约人数:"+s.getaTotalNum()+" 已预约人数:"+s.getaAppointNum());}}OUT:while (true) { //快捷键Ctrl+Alt+TSystem.out.println("是否修改排班?y/n");String command = sc.next();switch(command){case "y": //修改排班s.setUpdate(true);while (true) {System.out.println("上午是否看诊?y/n");String choose = sc.next();if(choose.equals("y")){s.setMorning(true);System.out.println("请输入看诊开始时间:");String start = sc.next();System.out.println("请输入看诊结束时间:");String end = sc.next();LocalTime ltstart = LocalTime.parse(start);LocalTime ltend = LocalTime.parse(end);s.setmStart(ltstart); //保存开始时间s.setmEnd(ltend); //保存结束时间System.out.println("请输入上午可预约人数:");int num = sc.nextInt();s.setmTotalNum(num);System.out.println("已完成设置上午排班信息");break;}else if(choose.equals("n")){s.setMorning(false);System.out.println("已设置上午休息");break;}else{System.out.println("没有该选择,请重新选择");continue;}}while (true) {System.out.println("下午是否看诊?y/n");String choose = sc.next();if(choose.equals("y")){s.setAfternoon(true);System.out.println("请输入看诊开始时间:");String start = sc.next();System.out.println("请输入看诊结束时间:");String end = sc.next();LocalTime ltstart = LocalTime.parse(start);LocalTime ltend = LocalTime.parse(end);s.setaStart(ltstart); //保存开始时间s.setaEnd(ltend); //保存结束时间System.out.println("请输入下午可预约人数:");int num = sc.nextInt();s.setaTotalNum(num);System.out.println("已完成设置下午排班信息");break;}else if(choose.equals("n")){s.setAfternoon(false);System.out.println("已设置下午休息");break;}else{System.out.println("没有该选择,请重新选择");continue;}}return;case "n": //不修改排班return;default:System.out.println("没有该选择,请重新选择");continue OUT;}}}//更新当前和未来6天的时间private void updateSchedule(ArrayList<Schedule> schedules) {LocalDate now = LocalDate.now(); //获取当天日期(年月日)//存在两种情况//schedules集合里面没有任何schedule(没有任何时间),就是第一次排班//schedules集合存在7天的时间(可能部分是过期的,需要更新到今天的情况),非第一次排班 比如:3月1号更新过1-7号的,现在是3号,进去查看的时候应该更新为3-10号的//schedules集合里面没有任何schedule(没有任何时间)if(schedules.size() == 0){ //第一次排班for (int i = 0; i < 7; i++) { //排7天Schedule s = new Schedule(); //创建一个Schedule对象s.setToday(now.plusDays(i)); //设置Schedule对象的日期(规则:第一天就是当天+0 第二天就是当天+1 ……)schedules.add(s); //把Schedule对象存到schedules集合中}return;}//schedules集合存在7天的时间(可能部分是过期的,需要更新到今天的情况),非第一次排班 比如:3月1号更新过1-7号的,现在是3号,进去查看的时候应该更新为3-10号的//非第一次排班,去除过期的时间int count = 0; //记入过期了几天(也就是删除了几天)//集合中的删除操作,如果从前往后遍历,会存在漏删的情况,因此选择从后往前for (int i = schedules.size()-1; i >= 0; i--) { //遍历已保存的7天LocalDate ld = schedules.get(i).getToday(); //已经保存的第i个日期if(ld.isBefore(now)){ //保存的第i个日期早于今天的日期schedules.remove(i);count++;}}//如果有删除过期的时间,那么需要补全7天//count == 0说明没有删除日期if(count == 0){return;}//count不等于0说明有删除(那么应该从count-1开始补全日期,比如删除了5天,剩下2天,那么就应该从第3个位置(索引2)开始补5天)for (int i=7-count; i < 7; i++) {Schedule s = new Schedule(); //创建一个Schedule对象s.setToday(now.plusDays(i));schedules.add(s);}}private void addDoctor() {System.out.println("====添加医生====");//判断有没有科室if(isDepartment()==false) {return;}//有科室Doctor d = new Doctor();while(true){showAllDepartment(); //展示已有科室//先选择科室System.out.println("请选择新医生的入职科室(最大选择"+departments.size()+"):");int command = sc.nextInt();if(existDepartment(command)==false){//不存在该科室continue;}//存在该科室Department department = departments.get(command-1); //department记录选择的科室d.setDepartmentName(department.getName()); //记录员工科室//录入医生idd.setDoctorId(UUID.randomUUID().toString()); //随机返回16位的idSystem.out.println("请输入医生姓名:");d.setName(sc.next());System.out.println("请输入医生性别:");d.setGender(sc.next());System.out.println("请输入医生年龄:");d.setAge(sc.nextInt());System.out.println("请输入医生主治方向:");d.setSpecialty(sc.next());System.out.println("请输入医生入职时间(格式:yyyy-MM-dd):");String joinDateString = sc.next();d.setJoinDate(LocalDate.parse(joinDateString)); //把字符串转换成LocalDate对象//添加完医生个人信息,还需要把医生加到所在部门的集合里department.getDoctors().add(d);System.out.println("添加医生成功");break;}}private void modifyDepartment() {System.out.println("====修改科室名称====");//判断有没有科室if(isDepartment()==false){return;}//有科室while(true) {showAllDepartment();System.out.println("请选择你要修改的科室序号(最大选择"+departments.size()+"):");int command = sc.nextInt();if(existDepartment(command)==false){//不存在该科室continue;}//存在该科室Department department = departments.get(command-1); //department记录选择的科室System.out.println("你要为科室修改的新名字是:");String newName = sc.next();department.setName(newName);System.out.println("修改成功!");break;}}private void deleteDepartment() {System.out.println("====添加科室====");//判断有没有科室if(isDepartment()==false){return;}//有科室while(true){showAllDepartment();System.out.println("请选择你要删除的科室序号(最大选择"+departments.size()+"):");int command = sc.nextInt();if(existDepartment(command)==false){//不存在该科室continue;}//存在该科室Department department = departments.get(command-1);if(department.getDoctors().size() != 0){//科室中存在医生System.out.println("科室中存在医生,不能删除科室");return;}//科室中无医生,可以删除departments.remove(command-1);System.out.println("删除科室成功");break;}}//添加科室private void addDepartment() {System.out.println("====添加科室====");OUT: //标签while(true){System.out.println("请输入添加的科室名称:");String name = sc.next();//判断科室是否存在for (int i = 0; i < departments.size(); i++) {if (departments.get(i).getName().equals(name) == true) {//科室已存在System.out.println("您创建的科室已存在,请重新输入");continue OUT; //继续执行下一次外面的死循环(OUT)}}Department d = new Department();d.setName(name);departments.add(d);System.out.println("创建科室成功");break;}}//展示一个科室的全部医生private void showAllDoctor(Department department){System.out.println("===="+department.getName()+"====");ArrayList<Doctor> arr = department.getDoctors();for (int i = 0; i < arr.size(); i++) {System.out.println(i+1 +"." + arr.get(i).getName());}}//展示已有的每个科室private void showAllDepartment(){System.out.println("====已有科室====");for (int i = 0; i < departments.size(); i++) {System.out.println(i+1+"."+departments.get(i).getName());}}//判断有没有科室private boolean isDepartment(){if(departments.size()==0){//没有科室System.out.println("当前无科室,请先添加科室");return false;}return true;}//判断选择的序号是否有科室存在private boolean existDepartment(int command){if(command < 1 || command > departments.size()){//没有该科室System.out.println("不存在该科室,请重新选择");return false;}//有该科室return true;}//判断选择的序号是否有医生存在private boolean existDoctor(ArrayList<Doctor> doctors,int command){if(command < 1 || command > doctors.size()){//没有该医生System.out.println("不存在该医生,请重新选择");return false;}//有该医生return true;}
}
相关文章:

Java基础 - 模拟医院挂号系统
模拟医院挂号系统功能 1. 科室管理:新增科室,删除科室(如果有医生在,则不能删除该科室),修改科室 2. 医生管理:录入医生信息以及科室信息,修改医生信息(主要是修改个人…...

【论文精读】基于知识图谱关系路径的多跳智能问答模型研究
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

uni app 微信小程序微信支付
使用方法 接口传参 使用wx.requestPayment方法是一个统一各平台的客户端支付API,不管是在某家小程序还是在App中,客户端均使用本API调用支付...

Dgraph 入门教程一《 概览》
1、Dgraph的特点 (1) 分布式规模:可以发布和处理大量数据 (2)支持GraphQL:一种内置的查询语法,类似SQL。可以让数据操作起来更简单 (3)完全的事务处理和ACID兼容:满足OLTP工作负载,该负载要求频繁的插入和更新数据。 (4)支持多…...

VSCode安装
前言 Visual Studio Code 是一个轻量级功能强大的源代码编辑器,支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。适用于 Windows、macOS 和 Linux。它内置了对…...

STM32各外设初始化步骤
1、GPIO初始化步骤 1、使能GPIO时钟 2、初始化GPIO的输入/输出模式 3、设置GPIO的输出值或获取GPIO的输入值 GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStruct.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin…...

10. Nginx进阶-Return
简介 什么是Return? nginx的return指令是用于在nginx配置文件中进行重定向或返回特定的HTTP响应码的指令。 它可以根据不同的条件来执行不同的操作,如重定向到其他URL、返回指定的HTTP响应码或自定义响应内容等。 Return适用范围 return指令只能在se…...

Nircmd集成定时执行专家之后的使用场景
Nircmd工具拥有了定时执行功能之后,可以用于以下场景: 1. 自动化日常工作 定时清理系统垃圾文件定时备份重要文件定时关闭或重启电脑定时发送邮件或短信定时执行其他程序或脚本 2. 监控系统状态 定时检查系统温度定时检查磁盘空间定时检查网络连接定时…...

Java面试题【必知必会】Linux常用命令面试题(2024)
近期一直在准备面试,所以为了巩固知识,也为了梳理,整理了一些java的基础面试题!同时也希望各位英雄和女侠能够补充!不胜荣幸!!! 名称地址Java面试题【必知必会】基础(202…...

元宇宙融合多功能气膜馆:开启娱乐与文化的数字新纪元
多功能气膜馆和元宇宙的结合,标志着娱乐和文化领域进入了全新的时代。元宇宙作为数字化空间的前沿概念,正在逐渐渗透到人们的日常生活中。而多功能气膜馆作为一种创新的场馆模式,则为人们提供了更为丰富多彩的娱乐和文化体验。这种融合不仅将…...

微信小程序本地开发
微信小程序本地开发时不需要在小程序后台配置服务器域名直接在小程序项目中填写后端在本机的IP地址和端口号 如图(第一步) 填写地址后发现报错,url不是合法域名,则在详情设置不校验合法域名 如图(第二歩)…...

2024火爆全网系列,原来RocketMQ中间件可以这么玩
前言 做了 3~5 年编程开发,你已经积累了不少项目经验,扩宽了技术广度,也许已发力成为团队管理者。到了这个阶段,大家却常有这种感受:感觉自己卡在瓶颈进步缓慢,技术水平很难像早期一样实现大幅突破&#x…...

2024阿里、网易、京东等大厂最新Java面试题,一举拿下腾讯美团滴滴offer
前言 一位小伙伴准备了许久的阿里Java面试,原以为能够顺利拿下offer,但在第三面还是被摁在地上反复摩擦,丧气一段时间后,小伙伴调整了心态重新尝试了一下,最终拿下了offer,今天小编把这位小伙伴遇到的面试…...

我的创作纪念日(2024.3.6)
机缘 从2020.10.11号进入博客,刚开始我只是把博客当作类似于微博的网站,用的比较少,后来到公司之后,开始使用博客进行做笔记,把工作上遇到的问题都记录下来,这样后面再遇到同样的问题就可以通过自己以前做…...

SpringBoot实战(1)
SpringBoot总结 一,Spring 设计思想 OOP: 面向对象编程-》封装、继承、多态 BOP: 面向Bean编程-》一切从Bean开始 AOP: 面向切面编程-》解藕、专 人做专事 IOC: 控制反转,将new 对象的操作交给Spring统一管理-》转交控制权 DI/DL: 依赖注入/依赖查找-》自动赋值 DI和AOP…...

Dgraph 入门教程二《 快速开始》
1、Clound 云 云地址:Dgraph Cloud 登录Clound 云后,可以用云上的东西操作,可以用谷歌账号或者github账号登录。 启动云 (1)在云控制台,点击 Launch new backend. (2)选择计划&…...

文件上传{session文件包含以及条件竞争、图片文件渲染绕过(gif、png、jpg)}
session文件包含以及条件竞争 条件: 知道session文件存储在哪里 一般的默认位置: /var/lib/php/sess_PHPSESSID /var/lib/php/sessions/sess_PHPSESSID /tmp/sess_PHPSESSID /tmp/sessions/sess_PHPSESSID ####在没做过设置的情况下一般都是存储在/var…...

【论文精读】Mask R-CNN
摘要 基于Faster RCNN,做出如下改变: 添加了用于预测每个感兴趣区域(RoI)上的分割掩码分支,与用于分类和边界框回归的分支并行。mask分支是一个应用于每个RoI的FCN,以像素到像素的方式预测分割掩码,只增加了很小的计…...

vue + js 项目打包JS、CSS文件自动部署到oss
一、下载oss依赖 npm install webpack-aliyun-oss 或 yarn add webpack-aliyun-oss 二、在vue.config.js中配置文件 const WebpackAliyunOss require("webpack-aliyun-oss");let VUE_APP_BUCKET "xxx"; let VUE_APP_REGION "xx-xxx-xxx";m…...

CSS:让动画流畅生动的缓动函数
在CSS中,可以使用transition属性或者keyframes关键帧动画来创建动画效果。 使用缓动函数则可以让动画更加流畅和生动。 div {transition: <property> <duration> <timing-function> <delay>; }div {animation: <keyframes-name> &l…...

蓝桥杯集训·每日一题2024 (差分)
前言: 差分笔记以前就做了,在这我就不再写一遍了,直接上例题。 例题: #include<bits/stdc.h> using namespace std; int a[10009],b[100009]; int main(){int n,ans10,ans20;cin>>n;for(int i1;i<n;i){cin>>…...

嵌入式通信数据经常说的大端和小端模式(学习)
一.概念 大端模式(Big-endian):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端,即正序排列,高尾端; 小端模式(Little-endian):低位字节排放在…...

bun 单元测试
bun test Bun 附带了一个快速、内置、兼容 Jest 的测试运行程序。测试使用 Bun 运行时执行,并支持以下功能。 TypeScript 和 JSX生命周期 hooks快照测试UI 和 DOM 测试使用 --watch 的监视模式使用 --preload 预加载脚本 Bun 旨在与 Jest 兼容,但并非所…...

阿里云2核4G服务器支持多少人同时在线?
2核4G服务器支持多少人在线?阿里云服务器网账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素: 2核4G:2核CPU和4G内存对…...

浏览器发出一个请求到收到响应步骤详解
前言 在网络通信中,浏览器向Web服务器发送HTTP请求消息的过程是一个复杂而精密的环节,涉及到URL解析、DNS解析、数据拆分、路由表规则和MAC头部添加等一系列步骤。本文将深入探讨这一过程的每个环节,帮助读者更全面地了解浏览器与Web服务器之…...

121. 买卖股票的最佳时机【leetcode】/动态规划
121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从…...

K8S Service相关概念
Service基本概念 K8S Service是K8S实现微服务架构最重要的组件之一,主要作用:1)为Pod提供稳定的访问地址(域名或IP),2)实现负责均衡,3)自动屏蔽后端Endpoints的变化。 …...

小米消金剖析“冒充老板”诈骗案例,呼吁群众提高反诈意识
近年来,诈骗手段日益翻新,冒充公司老板身份进行诈骗的案例屡见不鲜。不法分子利用人们的焦虑心理,以冒充老板的身份进行诈骗,给无数工作人员和企业带来了巨大的经济损失。重庆小米消费金融有限公司(以下简称“小米消金…...

全量知识系统问题及SmartChat给出的答复 之14 解析器+DDD+文法型 之2
Q36. 知识系统中设计的三种文法解析器和设计模式之间的关系 进一步,我想将 知识系统中设计的三种语言(形式语言、人工语言和自然)的文法解析器和DDD中的三种程序类型(领域模型、领域实体和领域服务) 形式语言文法 我…...

蓝桥杯备赛 day2 | 4. 付账问题 5. 数字三角形
付账问题,关键是要了解整型的范围,确定获取输入数据的变量类型 需要注意的是int的十进制范围-32768 ~ 32767,那么我们可以知道,人数n是可以用int来装的,需付款数S应该是long long,获取的每个人初始钱数也应…...