JAVA_(왕초보)티켓구매프로그램

호근·2022년 12월 7일
0

java

목록 보기
13/35

처음 만들어본 자바 프로젝트입니다.
언뜻 보기에도 보완사항이 많습니다.
이것저것 기능도 추가해보면서 객체지향적으로 리팩토링해나갈 예정입니다.

프로그램 목적

항공사에서 티켓을 구매하는 프로그램을 만드려합니다.

Airline
	- country
	- mileage
	- airfare
Tourist
	- TotalMoney
    - TotalMileage
    

클래스 다이아그램

어제 배워서 복습할 겸 만들어 보았습니다.
기능 구현과 리팩토링 되는대로 업데이트할 예정입니다.

presentation

public class MainMenu {

	Scanner sc = new Scanner(System.in);
	private Tour tour;
	private Airline[] airlines;
	private Tourist tourist;
	
	public void mainMenu(){
		while(true) {
			System.out.println("===============================");
			System.out.println("보유금액 : "+ tourist.getBalance());
			System.out.println("보유마일리지 : "+ tourist.getTotalMileage());
			System.out.println("===============================");
			
			System.out.println("번호 \t 나라 \t 가격 \t 마일리지");
			for(int i = 0; i < airlines.length; i++) {
				System.out.println("\t"+ airlines[i].getCountry()
						+ "\t" + airlines[i].getAirfare()
						+ "\t" + airlines[i].getMileage()
						);
			}
			System.out.println("===============================");
			System.out.println("목적지의 번호를 입력하세요.");
			int inputCode = sc.nextInt();
			
			if(inputCode < 0 || inputCode > airlines.length) {
				System.out.println("잘못된 경로 선택입니다.");
				continue;
			}
			
			// 경로 선택이 올바른 경우에 실행될 메서드
			// 보유금액으로 티겟 구매가능 여부 확인 후 불가하면 break
			if(!tour.isAble(inputCode)) {
				System.out.println("현재 보유금액이 부족합니다.");
				break;
			}
			
			// 보유금액 차감 마일리지 계산
			tour.buyTicket(inputCode);
		}
	}
	
	public MainMenu(Tour tour, Airline[] airlines, Tourist tourist) {
		super();
		this.tour = tour;
		this.airlines = airlines;
		this.tourist = tourist;
	}
	
	
}

service

Airline

public class Airline {
	
	private String country; // 나라
	private int mileage; // 마일리지
	private int airfare; // 항공가격
	
	public Airline() {
		// TODO Auto-generated constructor stub
	}
	public Airline(String country, int mileage, int airfare) {
		super();
		this.country = country;
		this.mileage = mileage;
		this.airfare = airfare;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	public int getMileage() {
		return mileage;
	}

	public void setMileage(int mileage) {
		this.mileage = mileage;
	}

	public int getAirfare() {
		return airfare;
	}
	
	public void setAirfare(int airfare) {
		this.airfare = airfare;
	}
	
	
	
}

Tour

public class Tour {
	
	private Airline[] airlines;
	private Tourist tourist;
	
	public Tour(Airline[] airlines, Tourist tourist) {
		super();
		this.airlines = airlines;
		this.tourist = tourist;
	}
	
	public boolean isAble(int inputCode) { //boolean 은 리턴값이 참 거짓
		if (tourist.getBalance() >= airlines[inputCode].getAirfare()) {
			return true;
		
		
		}	return false;
	}
	public void buyTicket(int inputCode) { // 잔고 초기화 = 잔고불러오기 - 항공운임료
		tourist.setBalance(tourist.getBalance() - airlines[inputCode].getAirfare());
		tourist.setTotalMileage(tourist.getTotalMileage() + airlines[inputCode].getMileage());
		System.out.println("티케팅 후 잔액은 : " + checkBalance());
		System.out.println("티케팅 후 마일리지는 : " + checkMileage());

	}

	public int checkBalance() { // void 가 없어서 return 값 설정해줘야함.
		return tourist.getBalance();
	}
	public int checkMileage() { // void 가 없어서 return 값 설정해줘야함.
		return tourist.getTotalMileage();
	}
}

Tourist

public class Tourist {

	private int Balance; // 보유금액
	private int TotalMileage; // 마일리지
	
	public Tourist(int Balance, int TotalMileage) { 
		super();
		this.Balance = Balance;
		this.TotalMileage = TotalMileage;
	}

	public int getBalance() {
		return Balance;
	}

	public void setBalance(int Balance) {
		this.Balance = Balance;
	}

	public int getTotalMileage() {
		return TotalMileage;
	}

	public void setTotalMileage(int TotalMileage) {
		this.TotalMileage = TotalMileage;
	}
	
	
}

Run

public class Run {
public static void main(String[] args) {

	Airline airlines[] = {new Airline("미국", 3000, 3000000), // 목적지, 마일리지, 운임료 채워주기
			new Airline("중국", 2000, 2000000),
			new Airline("일본", 1000, 1000000)}; 
	Tourist tourist = new Tourist(10000000,1000); // 잔고랑 마일리지 채워주기
	Tour tour = new Tour(airlines, tourist); 
	
	
	
	new MainMenu(tour, airlines, tourist).mainMenu();
	
}

}

profile
22.11.28 ~

0개의 댓글