본문 바로가기

IT일반과목/java

포인트 관리 프로그램(인터페이스를 만든후 그걸토대로만들기)


---------------------------------------------------------------------------------------------------------------------------------------------------

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;

// }

}


-------------------------------------------------------------------------------------------------------------------

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 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.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();
 
}
}

-------------------------------------------------------------------------------------------------------





'IT일반과목 > java' 카테고리의 다른 글

포인트관리프로그램(다형성)  (0) 2018.07.26
학생에 대한것 그냥 만들기  (0) 2018.07.26
자바 강제 타입 변환(Casting)  (0) 2018.07.24
이클립스 단축키  (0) 2018.07.24
Protected 접근 제한자  (0) 2018.07.24