---------------------------------------------------------------------------------------------------------------------------------------------------
package kh.java.point.run;
import kh.java.point.controller.PntMgr;
import kh.java.point.controller.PntMgr2;
public class Run {
public static void main(String[] args) {
// PntMgr mgr = new PntMgr();
PntMgr2 mgr2 = new PntMgr2();
// 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();
// mgr.start();
mgr2.start();
}
}
package kh.java.point.controller;
import java.util.Scanner;//Scanner를 쓰기위해 하였다.
import kh.java.point.model.vo.Gold;
import kh.java.point.model.vo.Silver;
import kh.java.point.model.vo.Vip;
import kh.java.point.model.vo.Vvip;
public class PntMgr2 implements PntMgrInterface {//PntMgrInterface를 implements 하였다.
public PntMgr2() {
}//기본 생성자를 만들어주었다.
Scanner sc = new Scanner(System.in);//입력받기위해 Scanner을 썼다.
int s_index=0;//Silver의 값을 증가시키기 위해 하였다.
int g_index=0;//Gold의 값을 증가시키기 위해 하였다.
int v_index=0;//Vip의 값을 증가시키기 위해 하였다.
//int vv_index=0;
int c;//배열의 순서를 받기위해 public으로 선언했다.
char mun;//Silver=s,Gold=g,Vip=v로선언받기위해 캐릭터형을 선언하였다.
int nn;//배열의 몇번지를 받기위해 선언하였다.
Silver [] s = new Silver[10];//실버의 10칸을 만든다.
Gold [] g = new Gold[10];//골드의 10칸을 만든다.
//Vvip [] vv = new Vvip[10];
Vip [] v = new Vip[10];//Vip의 10칸을 만든다.
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<s_index; i++) {
if(sel.equals(s[i].getName())==true) {//String는 참조형이다 그러므로 이름하고 비교를 equals로해서 true인지 false인지 비교하였다.
c=i;//위에if문이 맞다면 c에다가 i값을 넣어라
mun='s';//이걸 쓴다면 다른 메소드에서 좀더 쉽게 할 수 있다.
break;
}
}
for(int i=0; i<g_index; i++) {
if(sel.equals(g[i].getName())==true) {//String는 참조형이다 그러므로 이름하고 비교를 equals로해서 true인지 false인지 비교하였다.
c=i;//위에if문이 맞다면 c에다가 i값을 넣어라
mun='g';//이걸 쓴다면 다른 메소드에서 좀더 쉽게 할 수 있다.
break;
}
}
for(int i=0; i<v_index; i++) {
if(sel.equals(v[i].getName())==true) {//String는 참조형이다 그러므로 이름하고 비교를 equals로해서 true인지 false인지 비교하였다.
c=i;//위에if문이 맞다면 c에다가 i값을 넣어라
mun='v';//이걸 쓴다면 다른 메소드에서 좀더 쉽게 할 수 있다.
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":
s[s_index]=new Silver(name,rank,point);//Silver이라는 객체안에 생성자를 오버라이딩 해서 값을 넣었다.
s_index++;//Silver의 배열을 증가시켰다.
break;
case "Gold" : //Gold일때
g[g_index]=new Gold(name,rank,point);//Gold이라는 객체안에 생성자를 오버라이딩 해서 값을 넣었다.
g_index++;//Gold의 배열을 증가시켰다.
break;
case "Vip" :
v[v_index]=new Vip(name,rank,point);//Vip이라는 객체안에 생성자를 오버라이딩 해서 값을 넣었다.
v_index++;//Vip의 배열을 증가시켰다.
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(mun=='s') {//Silver
if(rank.equals("Silver")) {//String형태이므로 equals를 썼다.
System.out.println("실버에서실버");//실버에서 실버일경우
s[nn].setName(name);//값을 변형하는 것이므로 이렇게 써줘도되고
s[nn].setPoint(point);
s[nn].setRank(rank);
//s[nn]=new String(name,rank,point); 이렇게 써줘도 상관이없다.
}
else if(rank.equals("Gold")) {//String형태이므로 equals를 썼다.
System.out.println("실버에서골드");
g[g_index]=new Gold(name,rank,point);
g_index++;//삽입때와 똑같이 추가를 했으니 증가시킨것이다.
s[nn]=null;//다른데다가 값을 추가했으면 값을 지워야 하므로 null값을 주었다.
s_index--;//그리고 값을 뻇다.
}
else if(rank.equals("Vip")) {//String형태이므로 equals를 썼다.
System.out.println("실버에서브이아이피");
v[v_index]=new Vip(name,rank,point);
v_index++;//삽입때와 똑같이 추가를 했으니 증가시킨것이다.
s[nn]=null;//다른데다가 값을 추가했으면 값을 지워야 하므로 null값을 주었다.
s_index--;//그리고 값을 뻇다.
}
}
else if(mun=='g') {
if(rank.equals("Silver")) {//String형태이므로 equals를 썼다.
System.out.println("골드에서실버");
s[s_index]=new Silver(name,rank,point);
s_index++;//삽입때와 똑같이 추가를 했으니 증가시킨것이다.
g[nn]=null;//다른데다가 값을 추가했으면 값을 지워야 하므로 null값을 주었다.
g_index--;//그리고 값을 뻇다.
}
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("브이아이피에서브이아이피");
v[v_index]=new Vip(name,rank,point);
v_index++;//삽입때와 똑같이 추가를 했으니 증가시킨것이다.
g[nn]=null;//다른데다가 값을 추가했으면 값을 지워야 하므로 null값을 주었다.
g_index--;//그리고 값을 뻇다.
}
}
else if(mun=='v') {
if(rank.equals("Silver")) {//String형태이므로 equals를 썼다.
System.out.println("브이아이피에서실버");
s[s_index]=new Silver(name,rank,point);
s_index++;//삽입때와 똑같이 추가를 했으니 증가시킨것이다.
v[nn]=null;//다른데다가 값을 추가했으면 값을 지워야 하므로 null값을 주었다.
v_index--;//그리고 값을 뻇다.
}
else if(rank.equals("Gold")) {//String형태이므로 equals를 썼다.
System.out.println("브이아이피에서 골드");
g[g_index]=new Gold(name,rank,point);
g_index++;//삽입때와 똑같이 추가를 했으니 증가시킨것이다.
g[nn]=null;//다른데다가 값을 추가했으면 값을 지워야 하므로 null값을 주었다.
g_index--;//그리고 값을 뻇다.
}
else if(rank.equals("Vip")) {//String형태이므로 equals를 썼다.
System.out.println("브이아이피에서브이아이피");
v[nn]=new Vip(name,rank,point);
}
}
//deleteData();
}// -> 회원수정하는 메소드
public void deleteData() {//삭제하는 것이다.
nn=searchData();//처음에 검색을 해서 값을 받아온다.
System.out.println("회원정보가 삭제되었습니다.");//삭제출력이 먼저 뜨도록 하였다.
//nn -> 배열순서
//mun -> 어떤클래스인지
if(mun=='s') {//Silver일 경우에
for(int i=0; i<s_index;i++) {
if(s[i].getName()==s[nn].getName()) {//실버의 이름이 값은거를 찾는다.
s[i]=s[i+1];//찾고나면 뒤에꺼를 앞으로 하나씩 밀어준다.
}
}
s_index--;//하나를 삭제했으니 마이너스를 해준다.
}
else if(mun=='g') {//Gold일 경우에
for(int i=0; i<g_index; i++) {
if(g[i].getName()==g[nn].getName()) {//골드의 이름이 같은거를 찾는다.
g[i]=g[i+1];//찾고나면 뒤에꺼를 앞으로 하나씩 밀어준다.
}
}
g_index--;//하나를 삭제했으니 마이너스를 해준다.
}
else if(mun=='v') {//Vip일 경우에
for(int i=0; i<v_index;i++) {
if(v[i].getName()==v[nn].getName()) {//Vip의 이름이 같은거를 찾는다.
v[i]=v[i+1];//찾고나면 뒤에꺼를 앞으로 하나씩 밀어준다.
}
}
v_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<s_index; i++) {
System.out.printf("s"+"%s \t\t %s \t %d \t\t %.1f\n",s[i].getName(),s[i].getRank(),s[i].getPoint(),s[i].getEija());
}
for(int i=0; i<g_index; i++) {
System.out.printf("g"+"%s \t\t %s \t\t %d \t\t %.1f\n",g[i].getName(),g[i].getRank(),g[i].getPoint(),g[i].getEija());
}
for(int i=0; i<v_index; i++) {
System.out.printf("v"+"%s \t\t %s \t\t %d \t\t %.1f\n",v[i].getName(),v[i].getRank(),v[i].getPoint(),v[i].getEija());
}
}
}
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;
// }
}
'IT일반과목 > java' 카테고리의 다른 글
포인트관리프로그램(다형성) (0) | 2018.07.26 |
---|---|
학생에 대한것 그냥 만들기 (0) | 2018.07.26 |
자바 강제 타입 변환(Casting) (0) | 2018.07.24 |
이클립스 단축키 (0) | 2018.07.24 |
Protected 접근 제한자 (0) | 2018.07.24 |