<직원 관리 시스템 토이 프로젝트>
//Employee 클래스
import java.util.Map;
public class Employee {
private String name; //이름
private String sabun; //사번
private String phone; //전화번호
private String addr; //주소
public Employee(String name, String sabun, String phone, String addr) {
this.name = name;
this.sabun = sabun;
this.phone = phone;
this.addr = addr;
}
public boolean equals(Map db) {
//db 안에 사원이 존재하는지 체크
if(db.containsKey(name)) {
System.out.println("이미 존재하는 사원입니다.");
return false;
}else {
return true;
}
}
@Override
public String toString() {
return "[사원이름: " + name + ", 사번: " + sabun + ", 전화번호: " + phone + ", 주소: " + addr + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSabun() {
return sabun;
}
public void setSabun(String sabun) {
this.sabun = sabun;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
//EmployeeMGR 클래스
import java.util.LinkedHashMap;
import java.util.Map;
public class EmployeeMGR {
Map<String, Employee> db = new LinkedHashMap<String, Employee>();
public EmployeeMGR() {}
//등록
void insert(Employee employee) {
if (employee.equals(db)) {
db.put(employee.getName(), employee);
System.out.println("등록되었습니다.");
}
}
//삭제
void remove(String name, int checkedNum) {
//1. 예
if(checkedNum==1) {
db.remove(name);
System.out.println("사원의 정보가 삭제되었습니다.");
//2. 아니오
}else {
System.out.println("취소되었습니다.");
}
}
//목록 보여주기
void selectAll() {
for (Employee employee : db.values()) {
System.out.println(employee);
}
}
//검색
void select(String name) {
if (checkedEmployee(name)) {
System.out.println(name + "의 정보입니다.");
System.out.println(db.get(name));
}
}
//수정
void update(String name, int modifyNum, String object) {
if (checkedEmployee(name)) {
Employee value = db.get(name); // 기존 키에 해당하는 값을 가져옴
//이름 변경
if (modifyNum == 1) {
String newKey = object; // 새로운 이름이 키 값이 됨.
value.setName(object);
db.put(newKey, value);
db.remove(name);
//사번 변경
} else if (modifyNum == 2) {
value.setSabun(object);
db.put(name, value);
//전화번호 변경
} else if (modifyNum == 3) {
value.setPhone(object);
db.put(name, value);
//주소 변경
} else if (modifyNum == 4) {
value.setAddr(object);
db.put(name, value);
}
System.out.println("수정이 완료되었습니다.");
}
}
// db에 사원정보가 들어있는지 체크
boolean checkedEmployee(String name) {
if (db.containsKey(name)) {
return true;
} else {
System.out.println("존재하지 않는 사원입니다.");
return false;
}
}
}
//TestEMS 클래스 (메인)
import java.util.InputMismatchException;
import java.util.Scanner;
public class TestEMS {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
EmployeeMGR mgr = new EmployeeMGR();
while (true) {
System.out.println("작업을 선택해주세요. (1.등록, 2.목록, 3.수정, 4.삭제, 5.검색, 0.종료)");
try {
int num = sc.nextInt();
if(num==0) {
System.out.println("프로그램 종료");
break;
}
//사원 등록
if (num == 1) {
System.out.println("이름, 사번, 전화번호, 주소 순으로 입력해주세요.");
String name = sc.next();
String sabun = sc.next();
String phone = sc.next();
String addr = sc.next();
Employee e = new Employee(name, sabun, phone, addr);
mgr.insert(e);
System.out.println(mgr.db);
//사원 목록
} else if (num == 2) {
System.out.println("사원 목록입니다.");
mgr.selectAll();
//사원정보 수정
} else if (num == 3) {
System.out.println("수정할 사원의 이름을 입력하세요.");
String modifyName = sc.next();
mgr.select(modifyName);
while(true) {
System.out.println("수정할 사항을 선택해주세요. (1.이름 2.사번 3.전화번호 4.주소 0.저장)");
int modifyNum = sc.nextInt();
if(modifyNum == 1) {
System.out.println("수정할 이름을 입력해주세요.");
String afterName = sc.next();
mgr.update(modifyName, modifyNum, afterName);
}else if(modifyNum == 2) {
System.out.println("수정할 사번을 입력해주세요.");
String afterSabun = sc.next();
mgr.update(modifyName, modifyNum, afterSabun);
}else if(modifyNum == 3) {
System.out.println("수정할 전화번호를 입력해주세요.");
String afterPhone = sc.next();
mgr.update(modifyName, modifyNum, afterPhone);
}else if(modifyNum == 4) {
System.out.println("수정할 주소를 입력해주세요.");
String afterAddr = sc.next();
mgr.update(modifyName, modifyNum, afterAddr);
}else {
System.out.println("사원 정보 수정을 성공적으로 마쳤습니다.");
break;
}
}
//사원정보 삭제
} else if (num == 4) {
System.out.println("삭제할 사원의 이름을 입력하세요.");
String delName = sc.next();
if(mgr.checkedEmployee(delName)) {
System.out.println("정말로 삭제하시겠습니까? (1.예 / 2.아니오)");
int checkedNum = sc.nextInt();
mgr.remove(delName, checkedNum);
}
//사원정보 검색
} else if (num == 5) {
System.out.println("검색할 사원의 이름을 입력해주세요.");
String findName = sc.next();
mgr.select(findName);
}
} catch (InputMismatchException e) {
// 숫자 이외의 글자 입력 시 출력
System.out.println("숫자를 입력해주세요!!");
sc.nextLine(); // 버퍼 비우기
continue;
}
}
sc.close();
}
}
-자바 메소드를 생성하여 데이터 베이스의 정보들을 생성, 조회, 삭제, 갱신 등의 작업을 할 수 있도록 구현.
-Map 형태로 사원의 정보를 저장하고 키 값을 고유성을 지닌 이름으로 지정함.
-Map의 value 값은 Employee 객체를 저장함으로써 객체에 저장된 다양한 정보들을 접근하기가 용이함.
'연습문제 및 실습 자료' 카테고리의 다른 글
날짜 클래스 만들기 - 일정관리 프로그램(1) (0) | 2023.08.17 |
---|---|
아이스크림 심부름 문제 - 기초 알고리즘 (0) | 2023.08.16 |
자바 맵(MAP) 문제2 - 포켓몬스터(응용) (0) | 2023.08.09 |
자바 맵(MAP) 문제 - 포켓몬스터 (0) | 2023.08.08 |
자바 Set구조 문제 - 로또 만들기 (0) | 2023.08.07 |