kh12일차

2022. 7. 6. 10:48코딩/Java

point 컨트롤러

package kr.or.iei.point.controller;

import java.util.Scanner;

import kr.or.iei.point.view.PointView;
import kr.or.iei.point.vo.Grade;

public class PointController {
	private Grade[] members;
	private int index;
	private Scanner sc;
	private PointView view;

	public PointController() {
		super();
		members = new Grade[40];
		sc = new Scanner(System.in);
		view = new PointView();

	}

	public void main() {
		while (true) {
			int sel = view.main();
			switch (sel) {
			case 1:
				insertMember();
				break;
			case 2:
				printAllMember();
				break;
			case 3:
				printOneMember();
				break;
			case 4:
				updateMember();
				break;
			case 5:
				deleteMember();
				break;
			case 0:
				return;
			}// case문종료

		} // while문 종료
	}// main문 종료

	public void insertMember() {
		Grade g = view.insertMember();
		//1.view를 통한 데이터 입력받기
		members[index++] = g;
		//2.입력 받은 데이터를 배열에 추가
		view.insertSuccess();
	}

	public void printAllMember() {
		view.printAllMember(members, index);
	}

	public void printOneMember() {
		String name = view.getName("조회");
		int searchIndex = searchMembers(name);
		if (searchIndex == -1) {
			view.noSearchMembers();
		}else {
			Grade g = members[searchIndex];
			view.printOneMember(g);
		}
			
	}
	public void updateMember() {
		String name = view.getName("수정");
		int searchIndex = searchMembers(name);
		if (searchIndex == -1) {
			view.noSearchMembers();
		}else {
			Grade g = view.updateMember();
			members[searchIndex] = g;
		}
	}

	public int searchMembers(String name) {
		for (int i = 0; i < index; i++) {
			Grade g = members[i];
			if (name.equals(g.getName())) {
				return i;
			}
		}
		return -1;
	}
	public void deleteMember() {
		String name = view.getName("삭제");
		int searchIndex = searchMembers(name);
		if (searchIndex == -1) {
			view.noSearchMembers();
		}else {
			for (int i = searchIndex; i<index-1;i++) {
				members[i] = members[i+1];
			}
			index--;
		}
	}
	
}// 완전 껍대기

컨트롤 view

package kr.or.iei.point.view;

import java.util.Scanner;
import kr.or.iei.point.vo.Grade;
import kr.or.iei.point.vo.Silver;
import kr.or.iei.point.vo.Gold;
import kr.or.iei.point.vo.Vip;
import kr.or.iei.point.vo.Vvip;

public class PointView {
	private Scanner sc;

	public PointView() {
		super();
		sc = new Scanner(System.in);
	}

	public int main() {
		System.out.println("=====회원 관리 프로그램=====");
		System.out.println("1.회원 정보 등록");
		System.out.println("2.전체 회원 출력");
		System.out.println("3.회원 1명 출력");
		System.out.println("4.회원 정보 수정");
		System.out.println("5.회원 정보 삭제");
		System.out.println("0.프로그램 종료");
		System.out.print("선택 > ");
		int sel = sc.nextInt();
		return sel;
	}

	// 회원등록메소드
	public Grade insertMember() {//다형성 자식타입을 부모타입에 저장가능
		//grade에 silver나 gold등 저장가능
		System.out.println("===== 회원 정보 등록=====");
		System.out.print("등급 입력 [silver/gold/vip/vvip]: ");
		String grade = sc.next();

		System.out.print("이름 입력 : ");
		sc.nextLine();
		String name = sc.nextLine();

		System.out.print("포인트 입력 : ");
		int point = sc.nextInt();
		//추상클래스때문에 객체 못만듬
		//Grade g = new Grade(grade, name, point);가 안되는 이유
		Grade gra = null;
		switch (grade) {
		case "silver":
			Silver s = new Silver(grade, name, point);
			gra= (Grade)s;
			break;
		case "gold":
			Gold g = new Gold(grade, name, point);
			gra = (Grade)g;
			break;
		case "vip":
			Vip v = new Vip(grade, name, point);
			gra = (Grade)v;
			break;
		case "vvip":
			Vvip vv = new Vvip(grade, name, point);
			gra = (Grade)vv;
			break;
		}
		return gra;
	}

	public void insertSuccess() {
		System.out.println("회원가입 완료!");
	}

	public void noSearchMembers() {
		System.out.println("회원 정보를 찾을 수 없습니다.");
	}

	// 회원전체정보출력메소드
	public void printAllMember(Grade[] members, int index) {
		System.out.println("=====전체 회원 출력=====");
		System.out.println("등급\t이름\t포인트\t보너스");
		for (int i = 0; i < index; i++) {
			Grade g = members[i];
			System.out.printf("%s\t%s\t%d\t%.2f\n", g.getGrade(), g.getName(), g.getPoint(), g.getBonus());
		}
	}

	public String getName(String str) {
		System.out.println("===== 회원 정보" + str + "=====");
		System.out.print(str + "할 이름 입력 : ");
		String name = sc.next();
		return name;
	}

	// 회원 1명 정보 출력 메소드
	public void printOneMember(Grade g) {
		System.out.println("등급 : " + g.getGrade());
		System.out.println("이름 : " + g.getName());
		System.out.println("포인트 : " + g.getPoint());
		System.out.println("보너스 : " + g.getBonus());
	}

	// 회원 정보 수정 메소드
	public Grade updateMember() {
		System.out.println("=====수정 할 회원 정보 등록=====");
		System.out.print("등급 입력 [silver/gold/vip/vvip]: ");
		String grade = sc.next();
		
		System.out.print("이름 입력 : ");
		sc.nextLine();
		String name = sc.next();
		
		System.out.print("포인트 입력 : ");		
		int point = sc.nextInt();
		
		switch (grade) {
		case "silver":
			Grade s = new Silver(grade, name, point);
			return s;
		case "gold":
			Grade g = new Gold(grade, name, point);
			return g;
		case "vip":
			Grade v = new Vip(grade, name, point);
			return v;
		case "vvip":
			Grade vv = new Vvip(grade, name, point);
			return vv;
		}
		return null;
	}
	public void updateSuccess() {
		System.out.println("업데이트 완료!");
	}

	// 회원 정보 삭제 메소드
	public void deleteMember() {

	}

	// 매개변수로 받은 이름이 배열에 몇번째에 있는지 찾아서 리턴하는 메소드
//	public int searchMember(String name) {
//
//	}
}

Grade~silver등등은 11일차와 같음

'코딩 > Java' 카테고리의 다른 글

kh15일차 (Generics,List,studentMgr4,pointMgr5...)  (0) 2022.07.08
kh14일차  (0) 2022.07.07
KH11일차  (0) 2022.07.04
KH10일차  (0) 2022.07.01
KH9일차  (0) 2022.06.30