본문 바로가기
국비 교육/백엔드(Java, Spring)

[자바] 피트니스 관리 프로젝트 - v3

by 육츠 2024. 1. 25.
Contents 접기

v3 = 다수의 데이터 처리 (객체배열)

1) FitnessVO 설계
2) 서비스 분리 (객체배열 접근만)
3)  UI 분리 (인풋. 아웃풋 분리)
==========================

service ---> 이름수정 FitnessUI.java , service 에 필요한 메소드를 설계

package service;

import vo.Fitness;

public class FitnessService {
	public static final int MAX = 100;

	// 객체 배열 (CRUD)
	Fitness[] members = new Fitness[MAX];
	int size = 0;
설명
 파라미터로 전달된 Fitness 객체를 객체 배열에 저장. @param member : 객체 뱌열에 저장할 정보
@return : boolean 저장여부
		public boolean insert(Fitness member) { //C
		// 1. 데이터를 잘 전달하지 못 한 경우 vs 데이터를 잘 전달한 경우
		boolean result = false;
		
		return result;
		//return false;
	}

 

UI : 에러 처리를 ui 에서 하는가 service에서 하는가의 차이는 상황에 따라

설명
회원 가입을 처리하는 메소드 @parameter: 없음
@result : 없음
	private void create() {
		System.out.println(" [ 회원 등록 ] ");
		String id, name;
		double weight, height;

		if(service.getCount() > FitnessService.MAX) {
			System.out.println("## 회원가입이 불가능합니다.");
			return;
		} 
		
		System.out.print("> 아이디 : "); id = keyin.next();
		int searchIndex = service.search(id);
		if(searchIndex > -1) {
			System.out.println("## 사용할 수 없는 아이디입니다.");
			return;
		}
		
		System.out.print("> 이  름 : "); name = keyin.next();
		System.out.print("> 키(cm) : "); height = keyin.nextDouble();
		System.out.print("> 몸무게(Kg): "); weight = keyin.nextDouble();

		Fitness member = new Fitness(id, name, height, weight);
		boolean result = service.insert(member);
		
		if (result)
			System.out.println("## 회원등록 완료!\n");
	} // end create()

설명
 id를 전달받아 객체 배열 내에 해당 아이디를 검색하여 결과 반환  @param id : 검색할 ID
 @return : 검색 결과
	public Fitness selectOne(String id) { //R
		Fitness m = null;
		
		for(int i = 0; i < size; i++) {
			if( members[i].getId().equals(id)) {
				m = members[i];
				break;
			}
		}
		return m;
	}

 

UI

설명
회원의 아이디를 이용하여 조회하는 메소드  parameter: 없음
 return: 없음 
	private void read() {
		System.out.println(" [ 정보 조회 ] ");

		if(service.getCount() == 0) {
			System.out.println("## 등록된 회원이 없습니다.\n");
			return;
		}

		// 검색할 사람의 아이디 입력
		String id;
		System.out.print("> 검색 아이디 입력: ");
		id = keyin.next();

		int searchIndex = service.search(id);
		if(searchIndex == -1) {
			System.out.println("## 존재하지 않는 회원입니다.");
			return;
		}
		Fitness member = service.selectOne(id);
		member.output();
	}

설명
파라미터 전달된 Fitness 데이터를 배열에서 검색하여 데이터 수정 @param member : 수정하고자 하는 데이터
@return : 수정 결과
	public boolean update(Fitness member) {
		boolean result = false;
		
		return result;
		//return false;
	}
	public boolean update(Fitness member) {
		int searchIndex = search(member.getId());

		members[searchIndex].setWeight(member.getWeight());
		members[searchIndex].setHeight(member.getHeight());
		
		return true;
	}

 

UI

	private void update() {
		System.out.println(" [ 회원 정보 수정 ] ");

		if(service.getCount() == 0) {
			System.out.println("## 등록된 회원이 없습니다.\n");
			return;
		}
		
		String id;
		double weight, height;
		// 수정할 사람의 아이디 입력
		
		System.out.print("> 수정할 아이디 입력: ");
		id = keyin.next();

		int searchIndex = service.search(id);
		if(searchIndex == -1) {
			System.out.println("## 존재하지 않는 회원입니다.");
			return;
		}
		
		System.out.print("> 키(cm) : "); height = keyin.nextDouble();
		System.out.print("> 몸무게(Kg): "); weight = keyin.nextDouble();
		
		Fitness member = new Fitness(id, null , height, weight);
		boolean result = service.update(member);
		

		if(result) System.out.println("## 정보 수정 완료!\n");
	}

설명
id를 전달받아 배열에서 해당 아이디 검색하여 데이터 삭제 @param id : 삭제하려는 ID값
@return : 삭제 여부
	public boolean delete(String id) {
		boolean result = false;
		
		return result;
		//return false;
		
	}
	public boolean delete(String id) {
		int searchindex =  search(id);
		
		for(int i = searchindex; i < size -1; ++i) {
			members[i] = members[i+1]; 
		}
		--size;

		return true;
	}

 

UI

설명
회원의 아이디를 입력받아 탈퇴처리하는 메소드 -
	private void delete() {
		System.out.println(" [ 회원 탈퇴 ] ");
		String confirm;

		if(service.getCount() == 0) {
			System.out.println("## 등록된 회원이 없습니다.\n");
			return;
		}

		// 삭제할 사람의 아이디 입력
		String id;
		System.out.print("> 탈퇴할 아이디 입력: ");
		id = keyin.next();

		int searchIndex = service.search(id);
		if(searchIndex == -1) {
			System.out.println("## 존재하지 않는 회원입니다.");
			return;
		}

		System.out.print("> 정말 탈퇴하실거에요? (y/n) ");
		confirm = keyin.next();
		if(!(confirm.equals("Y") || confirm.equals("y"))) {
			System.out.println("## 탈퇴가 취소되었습니다!\n");
			return;
		}

		boolean result = service.delete(id);
		if(result)
			System.out.println("## 탈퇴 되었습니다!\n");
	}

설명
배열 전체를 반환 @return : 배열 
	public Fitness[] selectAll() {
		
		return members;
	}

 

UI

	private void readAll() {
		System.out.println(" [ 전체 회원 조회 ] ");
		
		int size = service.getCount();

		if( size == 0) {
			System.out.println("## 등록된 회원이 없습니다.\n");
			return;
		}
		System.out.println("# 현재 회원 수: " + size +"명");
		
		Fitness[] members = service.selectAll();
		
		for(int i=0; i<size; ++i) 
			members[i].output();
	}

 

기존 FitnessService --> FitnessUI 로 변경하며 추가

====> UI에 있던 코드를 그대로 옮겨서 원래 private 으로 되어있던 걸 public 으로만 변경

설명
파라미터로 전달받은 아이디를 객체 배열에서 검색하여 위치값을 반환하는 메소드 @param id : 검색하기 위한 아이디
@return : 검색한 아이디의 위치 정보
	public int search(String id) {
		int searchIndex = -1;

		for(int i=0; i<size; ++i) {
			if(members[i].getId().equals(id)) {
				searchIndex = i;
				break;
			}
		}

		return searchIndex;
	}