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일차와 같음