基于Java的医院管理系统(简易版)

一、主要功能

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过程中的简单练习,若对代码有疑问,欢迎来讨论!看到了一定回复!

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值