일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 오버라이딩
- 프로그래머스 SQL
- 프로그래머스 쿼리문
- spring crud
- spring crud게시판
- 날짜지정팝업
- 오라클설치
- jsp 팝업띄우기
- Oracle기초
- 자바배열예제
- js datepicker
- 2020정보처리기사실기
- 스프링 crud
- jsp게시판만들기
- 자바 정규표현식 예제
- 게시판만들기
- 스프링게시판만들기
- html기초
- 스프링 CRUD게시판
- 2020정보처리기사실기요약
- PLSQL
- 프로그래머스 MYSQL
- CRUD게시판만들기
- crud게시판
- jsp 날짜팝업
- 자바연산자
- 2020정보처리기사실기정리
- 정처기실기정리
- 정보처리기사실기정리
- 자바기초
Archives
- Today
- Total
영보의 SystemOut.log
[Java] 자바 공연 예약 어플리케이션 만들기 본문
반응형
자바/스프링 기반 디지털 융합 웹 개발자 양성과정 8일차
시나리오 & 클래스다이어그램
[ 간단한 공연 예약 시스템 ] - Seat클래스, SeatType클래스, Reserve클래스
- 공연은 하루에 한 번 있다.
- 좌석은 R석(5석), S석(7석), A석(10석), B석(15석) 타입이 있다.
좌석은 R석(Royal석), S석(Superior), A석(A grade석), B석(B grade석) 타입이 있다.
- 공연 예약 시스템의 메뉴는 "예약", "조회", "취소", "종료"가 있다.
- "예약" 은 한 자리만 예약할 수 있고 좌석 타입, 예약자 이름, 좌석 번호를 순서대로 입력받아 예약한다.
- "조회"는 예약자 이름을 입력하여 취소한다.
- "취소"는 예약자 이름을 입력하여 취소한다.
- 없는 예약자 이름, 없는 좌석번호, 없는 메뉴, 예약 또는 취소시 없는 좌석타입 등에 대해서 오류 메세지를 출력하고 사용자가 다시 시도하도록 한다
(예)
" 예약자 이름을 찾을 수 없습니다."
" 잘못된 좌석번호 입니다."
" 메뉴를 잘못 입력하셨습니다."
" 예약시 잘못된 좌석타입입니다."
" 취소시 잘못된 좌석타입입니다."
소스 코드
SeatType.java
package 공연예약어플리케이션만들기_1007;
import java.util.Scanner;
import java.util.stream.Stream;
public class SeatType {
private char type;
private Seat[] aSeat; // 연관 관계 => Seat클래스의 객체를 맴버 변수로 참조를 하겠다
// 생성자
public SeatType(char type, int num){ // 인자값이 좌석의 유형, 좌석수
this.type = type;
aSeat = new Seat[num]; // 배열 객체 생성
for (int i = 0; i<aSeat.length; i++) {
aSeat[i] = new Seat();
}
}
// 사용자 정의 메소드 구현
public boolean seatReserve() {
Scanner in = new Scanner(System.in);
int seatNum;
String name;
show();
System.out.print("이름 : ");
name = in.next();
System.out.print("좌석 번호 : ");
seatNum = in.nextInt();
if(seatNum < 1 || seatNum > aSeat.length){
System.out.println("잘못된 좌석번호 입니다.");
return false;
}
if (aSeat[seatNum-1].isOccupeied()){
System.out.println("이미 예약된 좌석번호 입니다.");
return false;
}
aSeat[seatNum-1].reserveName(name);
return true;
}
public boolean cancel() {
Scanner in = new Scanner(System.in);
show();
System.out.print("이름: ");
String name = in.next(); // 취소할 예약자 이름 입력
if (name != null){
for(int i=0; i<aSeat.length; i++){
if(aSeat[i].match(name)){
aSeat[i].cancel();
return true;
}
}
System.out.println("예약자 이름을 찾을 수 없습니다.");
}
return false;
}
public void show() {
System.out.println(type + "석 예약 : ");
for ( int i=0; i<aSeat.length; i++){
if(aSeat[i].isOccupeied())
System.out.print(aSeat[i].getName());
else
System.out.print("---");
System.out.print(" ");
}
System.out.println();
}
}
Seat.java
package 공연예약어플리케이션만들기_1007;
public class Seat {
private String name;
public Seat() {
name = null;
}
public void reserveName(String name) {
this.name = name;
}
public boolean isOccupeied() {
if (name == null)
return false;
else
return true;
}
public boolean match(String name) {
return (name.equals(name));
}
public void cancel() {
name = null;
}
// getter 메소드만 구현
public String getName() {
return name;
}
}
ReserveTest.java
package 공연예약어플리케이션만들기_1007;
import java.util.*;
public class ReserveTest extends Seat {
public static void main(String[] args) {
SeatType[] aSeatType = new SeatType[4];
aSeatType[0] = new SeatType('R',5); // 최고급석 (로얄석)
aSeatType[1] = new SeatType('S',7); // 고급석 (Superior)
aSeatType[2] = new SeatType('A',10); // A 등급석
aSeatType[3] = new SeatType('B',15); // B 등급석
int choice = 0 ;
while(choice != 4 ) {
int type;
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(" 선택하세요 >>>>> ");
Scanner in = new Scanner(System.in);
choice = in.nextInt();
switch (choice) {
case 1: // 예약
System.out.println("<좌석 구분>");
System.out.println("1. R석 (5석)");
System.out.println("2. S석 (7석)");
System.out.println("3. A석 (10석)");
System.out.println("4. B석 (15석)");
type = in.nextInt();
if (type < 1 || type > 4) {
System.out.println("예약시 잘못된 자석 타입 입니다.");
break;
}
aSeatType[type - 1].seatReserve();
break;
case 2: // 조회
for (int i=0; i<aSeatType.length; i++) {
aSeatType[i].show();
}
System.out.println("조회를 완료하였습니다.");
break;
case 3: // 취소
System.out.println("<좌석 구분>");
System.out.println("1. R석 (5석)");
System.out.println("2. S석 (7석)");
System.out.println("3. A석 (10석)");
System.out.println("4. B석 (15석)");
type = in.nextInt();
if(type < 1 || type > 4) {
System.out.println("취소시 잘못된 자석 타입입니다");
break;
}
aSeatType[type-1].cancel();
break;
case 4: // 종료
break;
default:
System.out.println("메뉴를 잘못 입력했습니다.");
}
}
}
}
반응형
'국비교육(아이티센 입사교육) > Java' 카테고리의 다른 글
[Java] SHA-256 해싱(Hashing)알고리즘으로 패스워드 암호화하기 (2) | 2021.11.02 |
---|---|
[Java] 자바 Enum 응용 결제/정산 시스템 만들기 (0) | 2021.10.12 |
[Java] 자바 정규표현식 사용하여 댓글 분석하기 (compile, matcher, pattern) (0) | 2021.10.07 |
[Java] 람다식(Lambda Expressions) / 스트림(Stream) / 예제 (0) | 2021.10.06 |
[Java] 자바 스레드(Thread)개념 / 스레드 스케줄링 / 예제 (0) | 2021.10.06 |