직원관리 프로그램 생성해보기!
직원관리
- 직원관리 프로그램은 직원들의 목록을 가지고 있는 프로그램.
직원
- 사번, 이름, 생년월일, 직급, 재직여부를 가지고 있는 객체
※ 필요한 경우에 따라 필드(속성) 변수는 자유롭게 추가- 모든 필드 변수에 getter, setter 구현
- 직원의 정보를 출력하는 함수 구현
기능
-전체 사원 조회(option 재직중 사원)
-신규사원 추가
-사원 퇴사 처리 (재직여부 변경)
main 코드
-초기 시작 전 임의의 2명 사원정보를 가지고 시작할 수 있도록 작성
-신규사원 추가 3명
-전체 사원 조회
-전체 목록 중 퇴사처리 대상 선택하여 퇴사 처리
(이미 퇴사인 사원 선택의 경우 변경 X )
-전체 사원 조회(재직중 사원)
=> 먼저 클래스를 3개를 만들어준다
=> 직원관리, 직원, 메인 (EmployeeMenagement, Employee, Employee)
🚨직원클래스(Employee)
직원
이 내용이 들어가야하니까
//필드
private int employeeNum; //사번
private String name; //이름
private String birth; //생년월일
private String position; //직급
private boolean isWorking; //재직여부
//생성자
public Employee() {
}
public Employee(int employeeNum, String name, String birth, String position, boolean isWorking) { //계속 set,get메소드 쓸수는 없으니까 이렇게 한번에 등록할수있게끔 생성자 생성!
this.employeeNum = employeeNum;
this.name = name;
this.birth = birth;
this.position = position;
this.isWorking = isWorking;
}
//메소드
public int getEmployeeNum() {
return employeeNum;
}
public void setEmployeeNum(int employeeNum) {
this.employeeNum = employeeNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public boolean isWorking() {
return isWorking;
}
public void setWorking(boolean isWorking) { //setter는 걍 setWorking으로 변수 잡힘
this.isWorking = isWorking;
}
public void printInfo() { //직원정보 출력!
System.out.printf("사번:%d, 이름:%s, 생년월일:%s, 직급:%s, 재직여부:%b\n",
employeeNum, name, birth, position, isWorking);
}
🚨직원관리클래스(EmployeeManagement)
기능
-전체 사원 조회(option 재직중 사원)
-신규사원 추가
-사원 퇴사 처리 (재직여부 변경)
이 내용이 들어가야한다
//사원정보목록 -> 담아놔야하니까 배열로!
ArrayList<Employee> employeeList;
//Employee[] employeeList; 와 같은 말!
//여기서 ArrayList<Employee> employeeList = new ArrayList<Employee>(); 로 생성해도 된다
//생성자
public EmployeeManagement() {
employeeList = new ArrayList<Employee>();
//배열 생성!
}
//메소드
//전체 사원 조회(option 재직중 사원)
public void readEmployeeList(boolean readOnlyIsworking) {
//true -> 재직중인 사람만 출력
//false -> 전체 목록 출력
for(int i=0; i<employeeList.size(); i++) { //전체목록 배열 다돌리면서 재직중인사람 찾아야지
if (readOnlyIsworking) { //true -> 재직중인 사람만 출력
if (employeeList.get(i).isWoriking == true) {
employeeList.get(i).printInfo();
}
} else { //false -> 전체 목록 출력
employeeList.get(i).printInfo();
}
}
}
//신규사원 추가
public void addNewEmployee(Employee emp) { //민영준
//Employee에 객체생성이 되어있는 경우라 리스트에 추가만 해주면 된다!
employeeList.add(emp);
}
//신규사원 추가 -> 오버로딩
public void addNewEmployee(int empNum, String name, String birth, String position) {
//Employee에 객체생성이 안되있는 경우라 객체생성하고 리스트에 추가해줘야한다!
Employee emp = new Employee(empNum, name, birth, position, true);
//Employee클래스의 생성자가 소환되겠지!
//새로 객체 생성하는 거는 신규사원 이니까 무조건 재직여부 true 일거고!
employeeList.add(emp); //바로 위의 emp객체 넣는다 리스트에!
}
//사원 퇴사 처리 (재직여부 변경)
//-> 리스트에서 삭제 X
//-> 해당 Employee 정보에서 재직여부를 false로 변경
public void resignEmployee(int empNum) { //사번이 고유한 식별자라 사번을 기준으로 퇴사처리!
for (int i=0; i<employeeList.size(); i++) {
if (employeeList.get(i).getEmployeeNum == empNum) {
//반복문 돌면서 해당사원 사번이 empNum과 같으면 재직여부를 false로 바꿔준다
employeeList.get(i).setWorking(false);
break; //for문 나온다
}
}
}
🚨메인클래스(EmployeeMain)
main 코드
-초기 시작 전 임의의 2명 사원정보를 가지고 시작할 수 있도록 작성
-신규사원 추가 3명
-전체 사원 조회
-전체 목록 중 퇴사처리 대상 선택하여 퇴사 처리
(이미 퇴사인 사원 선택의 경우 변경 X )
-전체 사원 조회(재직중 사원)
EmployeeManagement em = new EmployeeManagement(); // 직원관리프로그램 생성
Employee emp = new Employee(); // 사원1명생성
emp.setEmployeeNum(1);
emp.setName("민영준");
emp.setBirth("580926");
emp.setPosition("차장");
emp.setWorking(true);
em.addNewEmployee(emp); // 민영준을 리스트에 넣어준다
em.addNewEmployee(2, "마상구", "790426", "요원");
// 마상구를 객체생성해주고 리스트에 넣는다
em.readEmployeeList(false); //false -> 전체목록조회
//신규사원 3명 추가
em.addNewEmployee(3, "김두식", "810125", "블랙"); // 김두식을 객체생성해주고 리스트에 넣는다
Employee emp2 = new Employee(4, "장주원", "781121", "블랙", true);
//장주원 객체 생성
em.addNewEmployee(emp2);//장주원을 리스트에 넣어준다
em.addNewEmployee( new Employee(5, "이미현", "840430", "행정", true) );
//이미현을 객체생성하고 리스트에 넣어준다
System.out.println();
em.readEmployeeList(false); //전체목록조회
//퇴사처리
em.resignEmployee(3); //사번이 3인 김두식 퇴사처리
//재직중인 사람만 목록 조회
System.out.println();
em.readEmployeeList(true);
//전체 목록 조회 false인 사람까지 다나오게!
System.out.println();
em.readEmployeeList(true);
=> 출력
사번:1, 이름:민영준, 생년월일:580926, 직급:차장, 재직여부:true
사번:2, 이름:마상구, 생년월일:790426, 직급:요원, 재직여부:true
사번:1, 이름:민영준, 생년월일:580926, 직급:차장, 재직여부:true
사번:2, 이름:마상구, 생년월일:790426, 직급:요원, 재직여부:true
사번:3, 이름:김두식, 생년월일:810125, 직급:블랙, 재직여부:true
사번:4, 이름:장주원, 생년월일:781121, 직급:블랙, 재직여부:true
사번:5, 이름:이미현, 생년월일:840430, 직급:행정, 재직여부:true
사번:1, 이름:민영준, 생년월일:580926, 직급:차장, 재직여부:true
사번:2, 이름:마상구, 생년월일:790426, 직급:요원, 재직여부:true
사번:4, 이름:장주원, 생년월일:781121, 직급:블랙, 재직여부:true
사번:5, 이름:이미현, 생년월일:840430, 직급:행정, 재직여부:true
사번:1, 이름:민영준, 생년월일:580926, 직급:차장, 재직여부:true
사번:2, 이름:마상구, 생년월일:790426, 직급:요원, 재직여부:true
사번:3, 이름:김두식, 생년월일:810125, 직급:블랙, 재직여부:false
사번:4, 이름:장주원, 생년월일:781121, 직급:블랙, 재직여부:true
사번:5, 이름:이미현, 생년월일:840430, 직급:행정, 재직여부:true