: 강원, 경인, 제주, 서울지사가 있다
: 제품은 컴퓨터(200만원), 프린터(50만원) 두 종류
요구 출력모습
1.
2.
-제품과 가격, 지사를 배열에 넣어 관리
public class Branch {
String[] productName = {"컴퓨터", "프린터"};
int[] productPrice = {200, 50};
// 제품별 판매량
// 인덱스를 구분해 넣어준다
// 0 컴퓨터, 1 프린터
int[] saleNum = new int[2];
// 지사별로 인덱스 넣기
// 0 강원, 1 경인, 2 제주, 3 서울
Branch[] branchCode = new Branch[4];
}
-최상위 클래스인 Object에서 받아와서 오버라이딩
-출력시 각 지사별 이름을 리턴해줄 toString() 메소드 작성
// 강원지사
public class Gangwon extends Branch {
@Override
public String toString() {
return "강원지사";
}
}
// 경인지사
public class Gyeongin extends Branch{
@Override
public String toString() {
return "경인지사";
}
}
// 제주지사
public class Jeju extends Branch{
@Override
public String toString() {
return "제주지사";
}
}
// 서울지사
public class Seoul extends Branch{
@Override
public String toString() {
return "서울지사";
}
}
-출력화면을 구성
-입력 처리 메소드 1 (지사 선택)
-입력 처리 메소드 2 (제품 입력값이 컴퓨터인지 프린터인지 판단하여 판매량을 누적)
-출력처리 메소드
import java.util.*;
public class Main {
static Scanner sc = new Scanner(System.in);
// 여러 클래스에서 사용할 객체라 static으로 설정
static Branch br = new Branch();
static Gangwon gw = new Gangwon();
static Gyeongin gin = new Gyeongin();
static Jeju jj = new Jeju();
static Seoul seoul = new Seoul();
// 여러 클래스에서 사용할거라 static으로 설정
static int selectBr;
public static void main(String[] args) {
int selectNo;
// 첫 화면 출력
boolean flag = true;
do {
System.out.println("--------------------------");
System.out.println("판매량 관리 프로젝트");
System.out.println("--------------------------");
System.out.println("1.입력 | 2.출력 | 3.종료");
System.out.print(">>");
selectNo = sc.nextInt();
switch (selectNo) {
case 1:
input();
break;
case 2:
output();
break;
case 3:
flag = false;
System.out.println("프로그램을 종료합니다");
break;
default:
System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
break;
}
} while(flag);
}
// 입력 처리 메소드
private static void input() {
String ok = null;
boolean flag = false;
do {
System.out.println("지사를 선택하세요");
System.out.println("1.강원 | 2.경인 | 3.제주 | 4.서울");
System.out.print(">>");
selectBr = sc.nextInt();
switch (selectBr) {
// 지사별로 참조변수를 해당 배열에 넣는다
case 1:
br.branchCode[0] = gw;
input2();
break;
case 2:
br.branchCode[1] = gin;
input2();
break;
case 3:
br.branchCode[2] = jj;
input2();
break;
case 4:
br.branchCode[3] = seoul;
input2();
break;
}
System.out.println("계속 하시겠습니까? (y/n)");
System.out.print(">>");
ok = sc.next();
if(ok.equals("n") || ok.equals("no")) {
flag = false;
} else if(ok.equals("y") || ok.equals("yes")) {
flag = true;
} else {
System.out.println("입력을 확인해주세요");
}
} while(flag);
}
private static void input2() {
System.out.println("어떤 제품인가요");
System.out.print(">>");
String pd = sc.next();
System.out.println(br.branchCode[selectBr - 1].toString() + " " + pd + " 판매량 입력");
System.out.print(">>");
int amount = sc.nextInt();
// 제품 입력값이 컴퓨터인지 프린터인지 판단하여 해당 인덱스를 구한다
// 구한 인덱스에 판매량을 누적해 넣는다
if(pd.equals(br.productName[0])) {
br.branchCode[selectBr - 1].saleNum[0] += amount;
} else if(pd.equals(br.productName[1])) {
br.branchCode[selectBr - 1].saleNum[1] += amount;
} else {
System.out.println("제품명을 확인해 주세요");
}
}
// 출력처리 메소드
private static void output() {
System.out.println("------------------------------------------------");
System.out.println("\t \t 각 지사별 판매 현황");
System.out.println("------------------------------------------------");
System.out.println("지사명 \t 제품명 \t 제품가격 \t 판매량 \t 매출현황");
System.out.println("------------------------------------------------");
for (int i = 0; i < br.branchCode.length; i++) {
// 만약 입력값이 없다면 건너뛰고 처리
// 이 처리를 안해줄시
// 모든 지사의 컴퓨터와 프린터 판매량을 입력해주지 않으면 에러난다
if (br.branchCode[i] == null) {
continue;
}else {
System.out.println(br.branchCode[i].toString() + "\t" + br.branchCode[i].productName[0] + "\t"
+ br.branchCode[i].productPrice[0] + "\t" + br.branchCode[i].saleNum[0] + "\t"
+ (br.branchCode[i].productPrice[0] * br.branchCode[i].saleNum[0]));
System.out.println(br.branchCode[i].toString() + "\t" + br.branchCode[i].productName[1] + "\t"
+ br.branchCode[i].productPrice[1] + "\t" + br.branchCode[i].saleNum[1] + "\t"
+ (br.branchCode[i].productPrice[1] * br.branchCode[i].saleNum[1]));
}
}
}
}
입력화면
출력 & 종료