package kh.java.point.controller;
import java.util.Scanner;//Scanner를 쓰기위해 하였다.
import kh.java.point.model.vo.Gold;
import kh.java.point.model.vo.Grade;
import kh.java.point.model.vo.Silver;
import kh.java.point.model.vo.Vip;
public class PntMgr2 implements PntMgrInterface {// PntMgrInterface를 implements 하였다.
public PntMgr2() {
}// 기본 생성자를 만들어주었다.
Scanner sc = new Scanner(System.in);
int c;
char mun;
int nn;
//-----------------------------------------------------------------------
//다형성을 쓴다면
private Grade [] g = new Grade[30];
private int index=0;
//-------------------------------------------------------------------
public void start() {// 시작화면이며 나는 Run에서 이걸 호출할것이다.기존의 main과 같은역할이다.
while (true) {
System.out.println("=========== 회원 관리 시스템 ===========");
System.out.println("");
System.out.println("1. 회원 추가");
System.out.println("2. 회원 전체 출력");
System.out.println("3. 회원 수정");
System.out.println("4. 회원 삭제");
System.out.println("0. 프로그램 종료");
System.out.print("선택 : ");
int sel = sc.nextInt();
switch (sel) {// 내가 선택한걸 쓴다.
case 1:
insertData();
break;// 데이터삽입
case 2:
printData();
break;// 보여주는것
case 3:
modifyData();
break;// 변형하는것
case 4:
deleteData();
break;// 삭제하는것
default:
return;// 종료시키는것
}
}
}// -> 포인트 관리프로그램 운영
public int searchData() {// 찾는값이다.난 이걸 리턴값은 배열의 순서로 리턴받고 캐릭터형으로 값을 받았다.
System.out.print("검색될 회원 이름 입력 : ");
String sel = sc.next();
for (int i = 0; i < index; i++) {
if (sel.equals(g[i].getName()) == true) {// String는 참조형이다 그러므로 이름하고 비교를 equals로해서 true인지 false인지 비교하였다.
c = i;// 위에if문이 맞다면 c에다가 i값을 넣어라
break;
}
}
System.out.print("");
return c; // 배열의 몇번째인지를 리턴받는다.
}// -> 삽입하는 메소드
public void insertData() {// 삽입하는 것이다.
System.out.print("등급 입력(Silver/Gold/Vip) : ");
String rank = sc.next();
System.out.print("이름입력 : ");
String name = sc.next();
System.out.print("포인트입력 : ");
int point = sc.nextInt();
// 처음에 값을 다 입력 받았다.
switch (rank) {
case "Silver":
g[index++]=new Silver(name,rank,point);
break;
case "Gold":
g[index++] = new Gold(name, rank, point);
break;
case "Vip":
g[index++] = new Vip(name, rank, point);
break;
default:
System.out.println("잘못 입력하셨습니다. (회원 추가를 종료합니다.)");
break;
}
}// -> 회원 가입하는 메소드
public void modifyData() {// 변형하는 것이다.
nn = searchData();// 검색데이터에서 값을 불러왔다.
// System.out.println("몇번째 배열 : " + nn);// 몇번째 배열에 있는지 나타내는 숫자
// System.out.println("몇번째 순위 : " + mun);// 어디rank에 있는지 나타내는것
System.out.print("수정될 등급 입력(Silver/Gold/Vip) : ");
String rank = sc.next();
System.out.print("수정될 이름 입력 : ");
String name = sc.next();
System.out.print("수정될 점수 입력 : ");
int point = sc.nextInt();
if (rank.equals("Silver")) {// String형태이므로 equals를 썼다.
System.out.println("실버에서실버");// 실버에서 실버일경우
g[nn]=new Silver(name,rank,point);
}
else if (rank.equals("Gold")) {// String형태이므로 equals를 썼다.
//System.out.println("실버에서골드");
g[nn] = new Gold(name, rank, point);
}
else if (rank.equals("Vip")) {// String형태이므로 equals를 썼다.
//System.out.println("실버에서브이아이피");
g[nn] = new Vip(name, rank, point);
}
}// -> 회원수정하는 메소드
public void deleteData() {// 삭제하는 것이다.
nn = searchData();// 처음에 검색을 해서 값을 받아온다.
System.out.println("회원정보가 삭제되었습니다.");// 삭제출력이 먼저 뜨도록 하였다.
// nn -> 배열순서
// mun -> 어떤클래스인지
for (int i = 0; i < index; i++) {
if (g[i].getName() == g[nn].getName()) {// 실버의 이름이 값은거를 찾는다.
g[i] = g[i + 1];// 찾고나면 뒤에꺼를 앞으로 하나씩 밀어준다.
}
}
index--;// 하나를 삭제했으니 마이너스를 해준다.
}// -> 회원삭제하는 메소드
public void printData() {// Silver,Gold,Vip각각 다르므로 썻고 출력을 인덱스까지 출력하도록 하였다.
System.out.println("<< =================== information =================== >>");
System.out.println("이름 \t\t 등급 \t\t 포인트 \t 이자포인트 \t");
for (int i = 0; i < index; i++) {
System.out.printf("%s \t\t %s \t %d \t\t %.1f\n", g[i].getName(), g[i].getRank(), g[i].getPoint(),
g[i].getEija());
}
}
}
---------------------------------------------------------------------------------------------------------------------------
package kh.java.point.controller;
public interface PntMgrInterface {
public void insertData() ; // -> 회원 가입하는 메소드
public void start(); // -> 포인트 관리프로그램 운영
public int searchData(); // -> 회원정보 검색
public void modifyData(); // -> 회원수정하는 메소드
public void deleteData(); // -> 회원삭제하는 메소드
}
-------------------------------------------------------------------------------------------------
package kh.java.point.model.vo;
public class Gold extends Grade {
public Gold() {
}//기본생성자
public Gold(String name, String rank, int point) {
super(name,rank,point);
}
@Override//부모객체에있는 Eija를 내가 명시해서 쓸꺼야.
public double getEija() {
return getPoint()*0.03;//정수랑 실수연산하면 어차피 자동형변환이라 강제형변환 안해줘도 된다.
}//this안써도된다.
//Grade에서 추상화되어있다면 무조건 에러뜬다.
// private String name;//이름
// private String rank;//등급
// private int point;//등급
//
// public Gold(String name, String rank, int point) {
// this.name = name;
// this.rank=rank;
// this.point=point;
// }
//
//
//
//
// public String getName() {
// return name;
// }
// public void setName(String name) {
// this.name = name;
// }
// public String getRank() {
// return rank;
// }
// public void setRank(String rank) {
// this.rank = rank;
// }
// public int getPoint() {
// return point;
// }
// public void setPoint(int point) {
// this.point = point;
// }
}
----------------------------------------------------------------------------------
package kh.java.point.model.vo;
public abstract class Grade {
private String name;
private String rank;
private int point;
public Grade() {
}//기본생성자
public Grade(String name, String rank, int point) {
this.name = name;
this.rank = rank;
this.point = point;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRank() {
return rank;
}
public void setRank(String rank) {
this.rank = rank;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public abstract double getEija();
//다른 곳에서 실제 무조건 상속받아 쓰라는 것이다.
}
------------------------------------------------------------------
package kh.java.point.model.vo;
public class Silver extends Grade {
public Silver() {
}
public Silver(String name, String rank, int point) {
super(name,rank,point);
}//내 생성자를 호출했을때 값3개를 전달해준다. 그럼 grade에 생성자로 바로 간다.
@Override//부모객체에있는 Eija를 내가 명시해서 쓸꺼야.
public double getEija() {
return getPoint()*0.02;
}//실버의 이자포인트를 썼다.
//이렇게 하면 실버 객체가 끝난다.
//Grade에서 추상화되어있다면 무조건 에러뜬다.
public void print() {
System.out.println("내등급은 Silver");
}
//
// public Silver(String name, String rank, int point) {
//
// this.name=name;
// this.rank=rank;
// this.point=point;
// }
//
//
//
// private String name;//이름
// private String rank;//등급
// private int point;//등급
//
// public String getName() {
// return name;
// }
//
// public void setName(String name) {
// this.name = name;
// }
//
// public String getRank() {
// return rank;
// }
//
// public void setRank(String rank) {
// this.rank = rank;
// }
//
// public int getPoint() {
// return point;
// }
//
// public void setPoint(int point) {
// this.point = point;
// }
//
// public double getEija() {
// return (point*0.02);//정수랑 실수연산하면 어차피 자동형변환이라 강제형변환 안해줘도 된다.
// }
// public void setEija(int point) {
// this.point = point;
// }
//
//
// public Silver() {
//
// }//기본생성자
//
}
------------------------------------------------------------------------
package kh.java.point.model.vo;
public class Vip extends Grade {
public Vip() {
}
public Vip(String name, String rank, int point) {
super(name,rank,point);
}
@Override
public double getEija() {
return getPoint()*0.05;
}
//Grade에서 추상화되어있다면 무조건 에러뜬다.
}
-------------------------------------------------------------------------------
package kh.java.point.model.vo;
public class Vvip extends Grade {
public Vvip() {
}
public Vvip(String name, String rank, int point) {
super(name,rank,point);
}
@Override
public double getEija() {
return getPoint()*0.07;
}
}
------------------------------------------------------------------------------------
package kh.java.point.run;
import kh.java.point.controller.PntMgr2;
public class Run {
public static void main(String[] args) {
PntMgr2 mgr = new PntMgr2();
mgr.start();
// mgr.insertData(new Silver("홍길동","Silver",1000));
// mgr.insertData(new Silver("김말똥","Silver",2000));
// mgr.insertData(new Silver("고길똥","Silver",3000));
//
// mgr.insertData(new Gold("홍길동","Gold",1000));
// mgr.insertData(new Gold("김말똥","Gold",2000));
// mgr.insertData(new Gold("고길똥","Gold",3000));
//
// mgr.insertData(new Vip("홍길동","Vip",1000));
// mgr.insertData(new Vip("김말똥","Vip",2000));
// mgr.insertData(new Vip("고길똥","Vip",3000));
//
// mgr.insertData(new Vvip("홍길동","Vvip",1000));
// mgr.insertData(new Vvip("김말똥","Vvip",2000));
// mgr.insertData(new Vvip("고길똥","Vvip",3000));
// mgr.printData();
}
}
'IT일반과목 > java' 카테고리의 다른 글
예외처리2 try-catch (0) | 2018.07.26 |
---|---|
예외처리 (0) | 2018.07.26 |
학생에 대한것 그냥 만들기 (0) | 2018.07.26 |
포인트 관리 프로그램(인터페이스를 만든후 그걸토대로만들기) (0) | 2018.07.26 |
자바 강제 타입 변환(Casting) (0) | 2018.07.24 |