일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- eclipseUTF-8
- java
- javaclass
- springtoolsuite 설치
- 스프링부트
- 자바인스턴스
- 코드로배우는스프링웹프로젝트
- 코드로배우는스프링부트웹프로젝트
- 스프링DI
- 자바UTF-8
- 자바별찍기
- springDI
- 스프링
- spring세팅
- 명품자바
- springtoolsuite
- java생성자
- eclipse
- 자바세팅
- java세팅
- springboot
- 자바계산기
- 자바
- springsecurity
- spring
- 자바static
- 비전공개발자
- lombok설치
- 구멍가게코딩단
- 스프링세팅
Archives
- Today
- Total
딴따라 제퍼의 개발 유랑기
명품자바 4장 실습문제 12번 (예약시스템) 본문
학원에서의 과제를 저장해 놓는겸사겸사리.
몇달 전인데 기억이 안나는 부분도 있고
플로우차트 보면 귀엽다..ㅋㅋ
import java.util.InputMismatchException;
import java.util.Scanner;
class CustomerDTO {
private String name;
public CustomerDTO() { // 기본생성자를 호출하면 객체의 필드(name)가 "---"으로 초기화된다.
name = "---";
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Controller {
Scanner scan = new Scanner(System.in);
final int BLOCK_MAX_SIZE = 10;
CustomerDTO[] s = new CustomerDTO[BLOCK_MAX_SIZE];
CustomerDTO[] a = new CustomerDTO[BLOCK_MAX_SIZE];
CustomerDTO[] b = new CustomerDTO[BLOCK_MAX_SIZE];
public Controller() { // 처음 기본생성자에서 좌석을 모두 ---로 초기화한다.
for(int i=0; i<BLOCK_MAX_SIZE; i++) {
CustomerDTO c = new CustomerDTO();
s[i] = c;
}
for(int i=0; i<BLOCK_MAX_SIZE; i++) {
CustomerDTO c = new CustomerDTO();
a[i] = c;
}
for(int i=0; i<BLOCK_MAX_SIZE; i++) {
CustomerDTO c = new CustomerDTO();
b[i] = c;
}
}
public int verifyInt() { // 숫자를 입력받을때마다 사용. 숫자말고 문자를 잘못입력했을때 에러방지.
int choice;
while(true) {
try {
choice = scan.nextInt();
return choice;
} catch(InputMismatchException e) { // 숫자말고 다른거 입력했을때 예외처리
System.out.println("잘못된 입력입니다. 다시 입력해주세요.");
scan.next();
}
}
}
public String showBlock() { // 예약,취소하기전 객체배열(좌석블럭)을 출력하는 메서드
while(true) { // 좌석 구분 번호를 입력받고 좌석(S, A, B)중 하나를 리턴한다.
System.out.print("좌석 구분 S(1), A(2), B(3) >> ");
int choice = verifyInt();
switch(choice) {
case 1 :
show(s);
return "s";
case 2 :
show(a);
return "a";
case 3 :
show(b);
return "b";
default :
System.out.println("잘못입력하셨습니다."); // 1,2,3말고 다른거 입력받았을대
}
}
}
public void show(CustomerDTO[] dto) { // 파라미터로 들어온 객체배열(좌석블럭)을 출력하는 메서드
for(int i=0; i<dto.length; i++) {
System.out.print(dto[i].getName() + " ");
}
System.out.println();
}
public void showAll() { // 모든 객체를 출력하는 메서드
for(int i=0; i<s.length; i++) {
System.out.print(s[i].getName() + " ");
}
System.out.println();
for(int i=0; i<a.length; i++) {
System.out.print(a[i].getName() + " ");
}
System.out.println();
for(int i=0; i<b.length; i++) {
System.out.print(b[i].getName() + " ");
}
System.out.println();
System.out.println("<<<조회를 완료하였습니다.>>>");
}
public void input() {
String block = showBlock();
//이름 입력받은걸 객체로 만들고
//번호 입력받은걸 인덱스로 삼아서 만든 객체를 그 자리에 넣는다.
CustomerDTO tmp = new CustomerDTO();
System.out.print("이름>> ");
tmp.setName(scan.next());
System.out.print("번호>> ");
int seatNumber = verifyInt();
if(block.equals("s")) {
s[seatNumber-1] = tmp; // 좌석은 1번부터 시작하는데 배열인덱스는 0부터 시작하므로 -1
} else if(block.equals("a")) {
a[seatNumber-1] = tmp;
} else {
b[seatNumber-1] = tmp;
}
}
public void cancle() { // 취소 메서드
String block = showBlock(); // 배열에서 삭제시킨다는 개념이 아닌
System.out.print("이름>> "); // 처음의 "---" 값으로 덮어버린다는 개념
String cancleName = scan.next();
if(block.equals("s")) { // 입력받은 이름을 가진 객체를 찾아서 새로운 객체(기본생성자->초기값"---")로 덮어쓴다.
for(int i=0; i<s.length; i++) {
if(cancleName.equals(s[i].getName())) {
s[i] = new CustomerDTO();
break;
}
}
} else if(block.equals("a")) {
for(int i=0; i<a.length; i++) {
if(cancleName.equals(a[i].getName())) {
a[i] = new CustomerDTO();
break;
}
}
} else if(block.equals("b")){
for(int i=0; i<b.length; i++) {
if(cancleName.equals(b[i].getName())) {
b[i] = new CustomerDTO();
break;
}
}
}
}
}
class Viewer {
Scanner scan = new Scanner(System.in);
Controller ctr = new Controller();
int choice = 0;
public Viewer() { // 기본생성자가 호출되면 프로그램 시작
run();
}
public void run() {
System.out.println("명품콘서트홀 예약 시스템입니다.");
while(true) {
System.out.print("예약: 1, 조회: 2, 취소: 3, 끝내기: 4 >> ");
choice = ctr.verifyInt();
switch(choice) {
case 1 : // input
ctr.input();
break;
case 2 : // 조회(전체출력)
ctr.showAll();
break;
case 3 : // 취소(해당좌석 조회 후 삭제)
ctr.cancle();
break;
case 4 : // finish
finish();
}
}
}
public void finish() {
System.out.println("<<< 프로그램 종료 >>>");
System.exit(0);
}
}
public class Exercise12 {
public static void main(String[] args) {
new Viewer();
}
}
'Repository' 카테고리의 다른 글
계산기 (Java Swing) (0) | 2021.01.27 |
---|---|
명품자바 8장 오픈챌린지 (Hangman 게임) (0) | 2021.01.27 |
명품자바 7장 오픈챌린지 (단어 Quiz 게임) (0) | 2021.01.27 |
명품자바 5장 오픈챌린지 (Bear와 Fish게임) (0) | 2021.01.27 |
명품자바 5장 실습문제 12번 (LinkedList) (0) | 2021.01.27 |
Comments