Contents
접기
v2 = 다수의 데이터 처리(객체배열)
1) FitnessVO 설계
2) 서비스 분리
package service;
import java.util.Scanner;
import vo.Fitness;
public class FitnessService {
Scanner scanner = new Scanner(System.in);
Fitness[] members = new Fitness[100]; // 최대 회원 수 100명
int size; // 현재 회원 수
public FitnessService(){
String choice;
while(true) {
menu();
choice = scanner.next();
switch(choice) {
case "1" : create(); break;
case "2" : read(); break; // 검색: 이름이나 id를 입력 (이름인 경우 같은 동명이인 존재)
case "3" : update(); break;
case "4" : delete(); break;
case "0" : System.out.println("## 프로그램을 종료하겠습니다. ");return;
default : System.out.println("메뉴에 적힌 번호를 입력해주세요."); scanner.nextLine();
}
}
}
원래 코드 | 바뀐 코드 | 의미 |
Fitness member; | Fitness[] members = new Fitness[100]; | 객체 배열 생성. 최대회원 수 = 100명 |
- | int size; | 현재 회원 수 |
회원으로 가입을 처리하는 메소드 - create()
parameter: 없음 / return: 없음
private void create() {
System.out.println(" [ 회원 등록 ] ");
String id, name;
double weight, height;
if(size > members.length) {
System.out.println("## 현재는 가입이 불가능합니다.. ");
return;
}
System.out.print("> 아이디: "); id = scanner.next();
System.out.print("> 이 름: "); name = scanner.next();
System.out.print("> 키(cm): "); height = scanner.nextDouble();
System.out.print("> 몸무게(kg): "); weight = scanner.nextDouble();
members[size] = new Fitness(id, name, height, weight);
++size;
System.out.println("## 회원 등록이 완료되었습니다. \n");
} // end create
원래 코드 | 바뀐 코드 |
member = new Fitness(id, name, height, weight); | members[size] = new Fitness(id, name, height, weight); ++size; |
객체 배열에 새로운 회원 등록하고 size(현재 회원 수) 변수를 증가한다. |
private void create() {
System.out.println(" [ 회원 등록 ] ");
String id, name;
double weight, height;
if(size > members.length) {
System.out.println("## 현재는 가입이 불가능합니다.. ");
return;
}
System.out.print("> 아이디: "); id = scanner.next();
int searchIndex = search(id);
if(searchIndex > -1) {
System.out.println(" ##이미 존재하는 아이디 입니다.");
return;
}
System.out.print("> 이 름: "); name = scanner.next();
System.out.print("> 키(cm): "); height = scanner.nextDouble();
System.out.print("> 몸무게(kg): "); weight = scanner.nextDouble();
members[size] = new Fitness(id, name, height, weight);
++size;
System.out.println("## 회원 등록이 완료되었습니다. \n");
} // end create
원래 코드 | 바뀐 코드 |
System.out.print("> 아이디: "); id = scanner.next(); | System.out.print("> 아이디: "); id = scanner.next(); int searchIndex = search(id); if(searchIndex > -1) { System.out.println(" ##이미 존재하는 아이디 입니다."); return; } |
이미 존재하는 아이디가 있는지 체크 |
회원의 id를 이용하여 조회하는 메소드 - read()
paramter : 없음 / return : 없음
private void read() {
System.out.println(" [ 정보 조회 ] ");
if( size == 0) {
System.out.println("## 등록된 회원이 존재하지 않습니다.\n");
return ;
}
int searchIndex; // = -1;
// 검색할 사람의 id 입력
String id;
System.out.print("> 아이디: ");
id = scanner.next();
searchIndex = search(id);
//x -1이 반환되면 에러메세지 출력 후 return
//x 아니면 멤버 정보출력
if(searchIndex == -1) {
System.out.println("## 등록된 회원이 없습니다.");
return;
}
else
members[searchIndex].output();
}
private int search(String id) {
for (int i = 0; i < size; i++) {
if (members[i].getId().equals(id)) {
return i;
}
}
return -1;
}
원래 코드 | 바뀐 코드 | 의미 |
- | int searchIndex; // = -1; | 찾으려는 인덱스 번호를 넣으려는 변수를 만들어 놓는다. -1을 초기화 안해도 되는 이유는 search() 메소드에서 발견을 못 했을때 -1을 반환해주기 때문이다. |
- | String id; System.out.print("> 아이디: "); id = scanner.next(); |
검색할 사람의 id 입력 |
- | searchIndex = search(id); | search() 메소드 이용 |
- | private int search(String id) { for (int i = 0; i < size; i++) { if (members[i].getId().equals(id)) { return i; } } return -1; } |
id를 매개변수로 받아 발견하면 해당 인덱스 반환한다. 없으면 -1을 반환한다. |
회원의 정보를 찾아서 키와 몸무게를 다시 입력받아 그 두개의 정보를 수정 - update()
private void update() {
System.out.println(" [ 회원 정보 수정 ] ");
// int searchIndex;
if( size == 0) {
System.out.println("## 등록된 회원이 존재하지 않습니다.\n");
return ;
}
String id;
System.out.print("> 아이디: ");
id = scanner.next();
searchIndex = search(id);
if(searchIndex == -1) {
System.out.println("## 등록된 회원이 없습니다.");
return;
}
double weight, height;
System.out.print("> 키(cm): "); height = scanner.nextDouble();
System.out.print("> 몸무게(kg): "); weight = scanner.nextDouble();
members[searchIndex].setHeight(height);
members[searchIndex].setWeight(weight);
// 지역변수
System.out.println("## 정보 수정 완료.\n");
}
원래 코드 | 바뀐 코드 |
member.setHeight(height); member.setWeight(weight); |
members[searchIndex].setHeight(height); members[searchIndex].setWeight(weight); |
객체 배열로 들어가므로 |
회원탈퇴 - delete()
private void delete() {
System.out.println(" [ 회원 탈퇴 ] ");
String confirm;
int searchIndex;
if( size == 0) {
System.out.println("등록된 회원이 존재하지 않습니다.\n");
return ;
}
String id;
System.out.print("> 아이디: ");
id = scanner.next();
searchIndex = search(id);
if(searchIndex == -1) {
System.out.println("## 등록된 회원이 없습니다.");
return;
}
System.out.print(">> 정말로 탈퇴하실 건가요...? (y / n) : ");
confirm = scanner.next();
if(!(confirm.equals("Y") | confirm.equals("y")))
System.out.println("## 탈퇴 취소!\n");
// 인덱스 값을 이용해 인덱스 뒤의 데이터를 하나씩 앞으로 이동!
for(int i = searchIndex; i < size-1; i++) {
members[i] = members[i+1];
}
--size;
System.out.println("## 탈퇴 완료..\n");
return;
}
원래 코드 | 바뀐 코드 |
- | for(int i = searchIndex; i < size-1; i++) { members[i] = members[i+1]; } --size; |
인덱스 값을 이용해 인덱스 뒤의 데이터를 하나씩 앞으로 이동한다. |
'국비 교육 > 백엔드(Java, Spring)' 카테고리의 다른 글
[자바] 상속(Inheritance), 오버라이딩(Overriding), 추상화 클래스 (Abstract Class) (0) | 2024.01.25 |
---|---|
[자바] 피트니스 관리 프로젝트 - v3 (0) | 2024.01.25 |
[자바] this, Static 지정자, 객체 배열 (0) | 2024.01.24 |
[자바] 피트니스 멤버 관리 프로젝트 - v1 (0) | 2024.01.23 |