Java Programming
package com.encore.hms.service;
import com.encore.hms.domain.EmployeeDTO;
import com.encore.hms.domain.StudentDTO;
import com.encore.hms.domain.TeacherDTO;
import com.encore.hms.domain.sup.Person;
import com.encore.hms.util.HmsType;
/*
business logic을 가지고 있는 클래스
1. 배열을 관리
2. 생성한 배열에 학생, 강사, 직원 객체를 담을 것
3. 배열의 인덱스를 이용해서 찾기, 수정, 삭제 등의 기능을 수행할 것
*/
public class HmsService {
private Person[] perArr;
private int idx;
public HmsService() {
}
public HmsService(int size) {
perArr = new Person[size];
}
// 객체 생성 후 배열에 담는 로직
public String makePerson(HmsType num, String name, int age, String address, String common) {
String msg = null;
Person obj = null;
switch (num) {
case STU:
obj = new StudentDTO(name, age, address, common);
break;
case TEA:
obj = new TeacherDTO(name, age, address, common);
break;
case EMP:
obj = new EmployeeDTO(name, age, address, common);
break;
}
setArr(obj);
return (idx - 1) + "번지에 데이터를 담았습니다.";
}
private void setArr(Person per) {
perArr[idx++] = per;
}
public Person[] getArr() {
return perArr;
}
public int getIdx() {
return idx;
}
// 찾기
public Person searchPerson(String name) {
Person person = null;
for (int i = 0; i < perArr.length; i++) {
person = perArr[i];
if (person != null) {
if (person.getName().equals(name)) {
return person;
}
}
}
return person;
}
}
package com.encore.hms.util;
// enum - 서로 관련있는 상수들끼리 모아 상수들을 대표할 수 있는 이름으로 타입을 정의하는 것
public enum HmsType {
/*
상수의 집합인 클래스(static final)
public static final int STU = 1;
public static final int TEA = 2;
public static final int EMP = 3;
*/
STU, TEA, EMP
}
package com.encore.hms.view;
import com.encore.hms.domain.sup.Person;
import com.encore.hms.service.HmsService;
import com.encore.hms.util.HmsType;
import java.util.Scanner;
public class HmsView {
public static Scanner sc = new Scanner(System.in);
// HmsView는 HmsService 와 의존성 주입(Dependency Injection)관계가 형성
// 즉, HmsView는 HmsService의 객체 생성을 통한 접근을 필요로 하는 것
private final HmsService service;
public HmsView() {
this.service = new HmsService(10);
}
public void mainMenu() {
while (true) {
System.out.println();
System.out.println(">>>>>> HMS");
System.out.println("1. 전체출력");
System.out.println("2. 이름으로 검색");
System.out.println("3. 이름으로 찾아서 수정");
System.out.println("4. 이름으로 찾아서 삭제");
System.out.println("5. 생성");
System.out.println("99. 종료");
System.out.print("Input Number : ");
int num = sc.nextInt();
switch (num) {
case 1:
perPrint(); // 메서드 생성해야함
break;
case 2:
search();
break;
case 3:
update();
break;
case 4:
remove();
break;
case 5:
subMenu();
break;
case 99:
System.out.println("프로그램을 종료합니다....데이터는 보관되지 않습니다....");
System.exit(0);
}
}
}
public void perPrint() {
System.out.println();
System.out.println(">>> 전체 출력 <<<");
Person[] perArr = service.getArr();
if (service.getIdx() == 0) {
System.out.println();
System.out.println(">>> 데이터가 존재하지 않습니다.");
System.out.println();
} else {
for (int idx = 0; idx < perArr.length; idx++) {
Person per = perArr[idx];
if (per == null) {
break;
}
System.out.println(per.personInfo());
}
///////// or
/*
for(Person per : perAry) {
System.out.println(per.personInfo());
}
*/
}
}
/*
Scanner 객체를 이용해서 찾고자하는 이름을 입력받아
존재할 경우 해당 객체의 정보를 출력하고
존재하지 않을 경우 '정보가 존재하지 않습니다' 라는 메세지 출력
HmsView - HmsService(searchPerson(String name))
*/
public void search() {
System.out.println();
System.out.println(">>> search <<<");
System.out.print("이름을 입력하세요 : ");
sc.nextLine();
String name = sc.nextLine();
Person person = service.searchPerson(name);
if (person == null) {
System.out.println("정보가 존재하지 않습니다.");
} else {
System.out.println(person.personInfo());
}
}
/*
Scanner 객체를 이용해서 찾고자하는 이름을 입력받아
존재할 경우 해당 객체의 학생-학번, 강사-과목, 직원-부서를 수정하고
'정보를 수정하였습니다'라는 메세지 출력
HmsView - HmsService(updatePerson(String name))
*/
public void update() {
}
/*
Scanner 객체를 이용해서 찾고자하는 이름을 입력받아
존재할 경우 해당 객체를 배열에서 삭제하고
'정보를 삭제하였습니다'라는 메세지 출력
전체출력을 했을 때 정상적으로 출력되면 OK
HmsView - HmsService(removePerson(String name))
*/
public void remove() {
}
public void subMenu() {
while (true) {
System.out.println();
System.out.println(">>>>>> 객체 생성을 위한 sub Menu");
System.out.println("1. 학생");
System.out.println("2. 강사");
System.out.println("3. 직원");
System.out.println("99. 상위메뉴 이동");
System.out.print("Input Number : ");
int num = sc.nextInt();
switch (num) {
case 1:
makePerson(num);
break;
case 2:
makePerson(num);
break;
case 3:
makePerson(num);
break;
case 99:
System.out.println("상위 메뉴로 이동합니다.");
return;
}
}
}
public void makePerson(int num) {
System.out.println();
System.out.println(">>> 객체 생성 출력 <<<");
// Scanner 이름, 나이, 주소, comm
// HmsService - makePerson() 연결
Scanner sc = new Scanner(System.in);
System.out.print("이름: ");
String name = sc.nextLine();
System.out.print("나이: ");
int age = sc.nextInt();
sc.nextLine();
System.out.print("주소: ");
String address = sc.nextLine();
HmsType type = HmsType.STU;
String comm = null;
if (num == 1) {
System.out.print("학번: ");
comm = sc.nextLine();
} else if (num == 2) {
System.out.print("과목: ");
comm = sc.nextLine();
type = HmsType.TEA;
} else if (num == 3) {
System.out.print("부서: ");
comm = sc.nextLine();
type = HmsType.EMP;
}
String msg = service.makePerson(type, name, age, address, comm);
System.out.println(msg);
}
}
import com.encore.hms.service.HmsService;
import com.encore.hms.util.HmsType;
import com.encore.hms.view.HmsView;
// 1. stu 2. tea 3. emp
// enum
public class HmsMain {
public static void main(String[] args) {
/*
HmsService service = new HmsService(10);
String msg = service.makePerson(HmsType.STU, "임정섭", 20, "서울", "1992");
// 출력예시) 학생 | 강사 | 직원 객체를 배열에 담았습니다.
System.out.println(msg);
msg = service.makePerson(HmsType.TEA, "임정섭", 20, "서울", "자바");
System.out.println(msg);
msg = service.makePerson(HmsType.EMP, "임정섭", 20, "서울", "교육서비스팀");
System.out.println(msg);
*/
HmsView view = new HmsView();
view.mainMenu();
}
}
'한화시스템 BEYOND SW캠프 > TIL' 카테고리의 다른 글
[5주차] 24.02.07 수요일 (0) | 2024.02.07 |
---|---|
[5주차] 24.02.06 화요일 (0) | 2024.02.06 |
[4주차] 24.02.02 금요일 (0) | 2024.02.02 |
[4주차] 24.02.01 목요일 (0) | 2024.02.01 |
[4주차] 24.01.31 수요일 (0) | 2024.01.31 |