본문 바로가기

자바

9. 클래스를 이용하여 병원 환자관리 프로그램 만들기

6, 7, 8강에서 배운 정보들로 병원 환자관리 프로그램을 만들어보자

 

고속도로 클래스는 총 2개의 클래스로 이루어져 있다.

첫번째 클래스는 Patient 클래스로 환자의 이름, 병명, 나이를 멤버변수로 갖는다. 멤버 함수로 각각의 getter와 setter를 가지고 있다.

두번째 클래스는 Manage 클래스로 환자의 수와, 환자의 명단, 의사의 수를 멤버 변수로 갖는다. 멤버 함수로 환자 명단 교체하는 기능과 환자대비 의사 수를 나타내는 기능, 원하는 환자의 정보를 보는 기능을 가진다.

 

 

package Hospital;

public class Patient {
	//private멤버로 멤버변수 정의
	private String name; //환자 이름
	private String disease; //환자 병명
	private int age; //환자 나이
	
	//생성자
	public Patient() {
		name = "";
		disease = "";
		age = 0;
	}
	
	//public멤버로 멤버함수 정의, 각각의 멤버 변수에 대한 getter와 setter정의
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	public String getDisease() {
		return disease;
	}
	public void setDisease(String disease) {
		this.disease = disease;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

 

package Hospital;

import java.util.Scanner;
import java.util.ArrayList; //ArrayList를 사용하기 위해 import하여 불러온다

public class Manage {
	ArrayList<Patient> patientlist; //ArrayList를 이용하여 환자의 명단을 받는다.
	
	//private멤버로 멤버변수 사용
	private int patientcnt; //환자의 수
	private int doctorcnt; //의사의 수
	
	//생성자
	public Manage() {
		patientcnt = 0;
		doctorcnt = 4; //의사의 수는 네명으로 고정
		patientlist = new ArrayList<Patient>();
	}
	
	//환자의 명단을 바꾸는 기능
	public void ChangePatient() {
		System.out.println("1. 새로 생긴 환자, 2. 나간 환자");
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		Patient p = new Patient();
		if(num == 1) {
			System.out.println("나이 입력 : ");
			int age = sc.nextInt();
			sc.nextLine(); //nextInt()후 개행문자를 nextLine에서 인식하기 때문에 nextLine입력
			p.setAge(age);
			
			System.out.println("이름 입력 : ");
			String name = sc.nextLine();
			p.setName(name);
			
			System.out.println("병명 입력 : ");
			String disease = sc.nextLine();
			p.setDisease(disease);
			
			patientlist.add(p);
			patientcnt = patientcnt + 1;
		}
		else {
			System.out.println("나간 환자 번호 입력");
			int output = sc.nextInt();
			patientcnt = patientcnt - 1;
			patientlist.remove(output - 1);
		}
	}
	
	//환자의 정보를 보는 함수
	public void showPatient(int num) {
		Patient p = patientlist.get(num - 1); //0번지부터 들어오니까 num - 1로 설정
		System.out.println("이름 : " + p.getName());
		System.out.println("나이 : " + p.getAge());
		System.out.println("병명 : " + p.getDisease());
	}
	
	//의사대비 환자수를 나타내는 함수
	public double ratio() {
		return (double)patientcnt / (double)doctorcnt;
	}
}

 

package Hospital;

import java.util.Scanner;
import java.util.ArrayList;

public class Main {
	public static void main(String[] args) {
		Manage manage = new Manage();
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.println("1.환자 관리, 2. 환자 대비 의사 수 : 3. 환자 보기, 4. 종료");
			int num = sc.nextInt();
			if(num == 1) {
				manage.ChangePatient();
			}
			else if(num == 2) {
				System.out.println("의사 1명당 환자의 수는 " + manage.ratio());
			}
			else if(num == 3) {
				System.out.println("보고싶은 환자의 번호 : ");
				int what = sc.nextInt();
				manage.showPatient(what);
			}
			else if(num == 4) {
				System.exit(0);
			}
		}
	}
}