一、主要功能
1、科室管理-添加科室
2、科室管理-删除科室
3、科室管理-修改科室
4、科室管理-展示科室
5、医生管理-医生录入
6、医生管理-坐诊设置
7、医生管理-坐诊展示
二、页面展示
1.科室管理-添加科室
2、科室管理-删除科室
3、科室管理-修改科室
4、科室管理-展示科室
5、医生管理-医生录入
6、医生管理-坐诊设置
7、医生管理-坐诊展示
三、代码展示
/* 1.增加科室 */
private void addDepartment() {
System.out.println("\n==========1、科室管理-添加科室==========");
OUT:
while (true) {
System.out.print("请输入科室名:");
String name = sc.next();
// 判断该科室是否存在
for (int i = 0; i < allDepartments.size(); i++) {
Department department = allDepartments.get(i);
if (department.getName().equals(name)){
System.out.println("您输入的科室已存在!请重新输入!");
continue OUT;
}
}
System.out.println("您确定添加【" + name + "】吗?y/n");
if (sc.next().equals("n")){
break;
}
Department department = new Department();
department.setName(name);
allDepartments.add(department);
System.out.println("添加科室成功,你添加的是:" + name);
System.out.println("继续操作请输入【y】,返回主界面请输入【n】");
if (sc.next().equals("n")){
break;
}
}
System.out.println("=====================================\n");
}
/* 2.删除科室 */
private void removeDepartment() {
System.out.println("\n==========2、科室管理-删除科室==========");
while (true) {
Department department = getDepartmentByUser();
System.out.println("您确定删除【" + department.getName() + "】吗?y/n");
if (sc.next().equals("n")){
break;
}
allDepartments.remove(department);
System.out.println("删除科室成功!您删除的科室是:" + department.getName());
System.out.println("继续操作请输入【y】,返回主界面请输入【n】");
if (sc.next().equals("n")){
break;
}
}
System.out.println("=====================================\n");
}
/* 3.修改科室 */
private void setDepartment() {
System.out.println("\n==========3、科室管理-修改科室==========");
while (true) {
Department department = getDepartmentByUser();
System.out.println("您确定修改【" + department.getName() + "】吗?y/n");
if (sc.next().equals("n")){
break;
}
System.out.print("请输入修改后的科室名:");
String newName = sc.next();
department.setName(newName);
System.out.println("修改科室成功,修改后的科室名是:" + newName);
System.out.println("继续操作请输入【y】,返回主界面请输入【n】");
if (sc.next().equals("n")){
break;
}
}
System.out.println("=====================================\n");
}
/* 4.展示科室 */
private void showAllDepartment () {
System.out.println("\n**************************");
if (allDepartments.isEmpty()) {
System.out.println("当前医院暂无科室,请先添加科室!\n");
return;
}
System.out.println("***** 目前医院中有以下科室:");
for (int i = 0; i < allDepartments.size(); i++) {
Department department = allDepartments.get(i);
System.out.println("***** " + (i + 1) + "、" + department.getName());
}
System.out.println("**************************\n");
}
/* 5.医生录入 */
private void addDoctor() {
System.out.println("\n==========5、医生管理-医生录入==========");
System.out.println("请选择科室:");
Department department = getDepartmentByUser();
Doctor doctor = new Doctor();
doctor.setDepartmentName(department.getName());
// 录入医生基本信息
// id
doctor.setDoctorId(UUID.randomUUID().toString());
// 姓名
System.out.println("请输入医生的姓名:");
String name = sc.next();
doctor.setName(name);
// 性别
System.out.println("请输入医生的性别:");
String sex = sc.next();
doctor.setGender(sex);
// 年龄
System.out.println("请输入医生的年龄:");
int age = sc.nextInt();
doctor.setAge(age);
// 特长
System.out.println("请输入医生的特长:");
String specialty = sc.next();
doctor.setSpecialty(specialty);
// 入职日期
System.out.println("请输入医生的入职日期(格式:yyyy-MM-dd):");
String joinDateString = sc.next();
LocalDate joinDate = LocalDate.parse(joinDateString);
doctor.setJoinDate(joinDate);
department.getDoctors().add(doctor);
System.out.println("医生录入成功!您录入的是:" + department.getName() + "---" + doctor.getName());
System.out.println("=====================================\n");
}
/* 6.医生坐诊设置---可设置未来七天的坐诊情况 */
private void setDoctorJob() {
System.out.println("\n==========6、医生管理-坐诊设置==========");
while (true) {
Department department = getDepartmentByUser();
// 选择医生
ArrayList<Doctor> doctors = department.getDoctors();
if (doctors.size() == 0){
System.out.println("当前科室下暂无医生!");
return;
}
// 展示当前科室中的医生列表
System.out.println("当前科室中的医生如下:");
for (int i = 0; i < doctors.size(); i++) {
Doctor doctor = doctors.get(i);
System.out.println((i + 1) + "、" + doctor.getName());
}
System.out.print("请输入要选择的医生序号:");
int index = sc.nextInt();
if (index < 0 || index > doctors.size()) {
System.out.println("您输入的序号有误!请重新输入!");
}
Doctor doctor = doctors.get(index - 1);
// 为医生设置坐诊情况
ArrayList<Schedule> schedules = doctor.getSchedules();
// 更新未来七天的时间问题
updateTimeSchedule(schedules);
// 展示未来七天坐诊情况
for (int i = 0; i < schedules.size(); i++) {
Schedule schedule = schedules.get(i);
showDoctorSchedule(schedule);
}
OUT:
while (true) {
System.out.println("请输入要修改的日期(格式:yyyy-MM-dd):");
String setDateStr = sc.next();
LocalDate setDate = LocalDate.parse(setDateStr);
// 修改坐诊信息
// 更新医生未来七天中某一天安排
for (int i = 0; i < schedules.size(); i++) {
Schedule schedule = schedules.get(i);
if (setDate.equals(schedule.getToday())){
updateDoctorSchedule(schedule);
break OUT;
}
}
System.out.println("当前日期暂未开放,请重新输入!");
}
System.out.println("继续操作请输入【y】,返回主界面请输入【n】");
if (sc.next().equals("n")){
break;
}
}
System.out.println("=====================================\n");
}
/* 7.医生坐诊展示---未来七天的全部医生坐诊详情 */
private void showAllDoctorInfos() {
System.out.println("\n==========7、医生管理-坐诊展示==========");
for (int i = 0; i < allDepartments.size(); i++) {
Department department = allDepartments.get(i);
System.out.println("===== " + (i + 1) + "、" + department.getName());
ArrayList<Doctor> doctors = department.getDoctors();
if (doctors.size() == 0){
System.out.println("当前科室下暂无医生!");
}
for (int j = 0; j < doctors.size(); j++) {
Doctor doctor = doctors.get(j);
System.out.println("【" + doctor.getName() + "医生坐诊情况如下】");
ArrayList<Schedule> schedules = doctor.getSchedules();
updateTimeSchedule(schedules); // 更新未来七天的时间安排
for (int k = 0; k < schedules.size(); k++) {
Schedule schedule = schedules.get(k);
showDoctorSchedule(schedule);
}
}
}
System.out.println("=====================================\n");
}
/* 选择科室 */
private Department getDepartmentByUser(){
if (allDepartments.isEmpty()){
System.out.println("当前医院暂无科室,请先添加科室\n");
return null;
}
showAllDepartment();
while (true) {
System.out.print("请输入科室序号:");
int index = sc.nextInt();
if (index > allDepartments.size() || index < 0){
System.out.println("您输入的序号有误!请重新输入!");
continue;
}else{
String name = allDepartments.get(index - 1).getName();
//System.out.println("您确定选择【" + name + "】吗?y/n");
//if (sc.next().equals("y")){
return allDepartments.get(index - 1);
//}
//return null;
}
}
}
/* 更新未来七天的时间安排 */
private void updateTimeSchedule(ArrayList<Schedule> schedules) {
// 如果没有安排,则开始安排
if (schedules.size() == 0){
for (int i = 0; i < 6; i++) {
Schedule schedule = new Schedule();
LocalDate now = LocalDate.now();
schedule.setToday(now.plusDays(i));
schedules.add(schedule);
}
return;
}
// 有安排
// 去除过期时间
for (int i = 0; i < schedules.size(); i++) {
Schedule schedule = schedules.get(i);
// 当前的 今日日期
LocalDate now = LocalDate.now();
// 当前系统存的 今日日期
LocalDate current = schedule.getToday();
if (current.equals(now)){
break;
}
if (current.isBefore(now)){
schedules.remove(schedule);
i --;
}
}
// 补全当前和未来六天的时间
// 当前安排中最新一天的日期
LocalDate last = schedules.get(schedules.size() - 1).getToday();
int size = schedules.size();
// 补全当前安排中最新一天到第7天的安排
for (int i = 0; i < 7 - size; i++) {
Schedule schedule = new Schedule();
schedule.setToday(last.plusDays(i + 1));
}
}
/* 更新某位医生未来七天的某一天坐诊安排 */
private void updateDoctorSchedule(Schedule schedule) {
//LocalDate today = schedule.getToday();
//System.out.println("【" + today + "】安排如下");
判断是否排过班
//if (!schedule.isUpdate()){
// System.out.println("今日未排班!休息!");
//}else{
// System.out.println("上午安排:");
// if (schedule.isMorning()){
// System.out.println("坐诊时间:" + schedule.getMstart() + "-"
// + schedule.getMend() + "\n可预约人数/总预约人数:"
// + schedule.getmTotalNumber() + "/" + schedule.getmAppointNumber());
// }else{
// System.out.println("休息!");
// }
//}
System.out.println("【" + schedule.getToday() + "】安排是否修改?y/n");
if (sc.next().equals("y")){
schedule.setUpdate(true);
System.out.println("上午是否上班?y/n");
if (sc.next().equals("y")){
schedule.setMorning(true);
System.out.print("上午开始坐诊时间是:");
String start = sc.next();
System.out.print("上午结束坐诊时间是:");
String end = sc.next();
System.out.print("上午可预约总人数是:");
int totalNumber = sc.nextInt();
schedule.setMstart(LocalTime.parse(start));
schedule.setMend(LocalTime.parse(end));
schedule.setmTotalNumber(totalNumber);
}else{
schedule.setMorning(false);
}
System.out.println("下午是否上班?y/n");
if (sc.next().equals("y")){
schedule.setAfternoon(true);
System.out.print("下午开始坐诊时间是:");
String start = sc.next();
System.out.print("下午结束坐诊时间是:");
String end = sc.next();
System.out.print("下午可预约总人数是:");
int totalNumber = sc.nextInt();
schedule.setAstart(LocalTime.parse(start));
schedule.setAend(LocalTime.parse(end));
schedule.setaTotalNumber(totalNumber);
}else{
schedule.setAfternoon(false);
}
}
}
/* 展示某位医生未来七天的坐诊安排 */
private void showDoctorSchedule(Schedule schedule){
LocalDate today = schedule.getToday();
System.out.println("===== 【" + today + "】安排如下");
// 判断是否排过班
if (!schedule.isUpdate()){
System.out.println("暂未安排!");
}else{
System.out.println("上午安排:");
if (schedule.isMorning()){
System.out.println("坐诊时间:" + schedule.getMstart() + "-"
+ schedule.getMend() + "\n可预约人数/总预约人数:"
+ schedule.getmTotalNumber() + "/" + schedule.getmAppointNumber());
}else{
System.out.println("休息!");
}
System.out.println("下午安排:");
if (schedule.isAfternoon()){
System.out.println("坐诊时间:" + schedule.getAstart() + "-"
+ schedule.getAend() + "\n可预约人数/总预约人数:"
+ schedule.getaTotalNumber() + "/" + schedule.getaAppointNumber());
}else{
System.out.println("休息!");
}
}
}
四、写在最后
学习Java过程中的简单练习,若对代码有疑问,欢迎来讨论!看到了一定回复!