처음 만들어본 자바 프로젝트입니다.
언뜻 보기에도 보완사항이 많습니다.
이것저것 기능도 추가해보면서 객체지향적으로 리팩토링해나갈 예정입니다.
항공사에서 티켓을 구매하는 프로그램을 만드려합니다.
Airline
- country
- mileage
- airfare
Tourist
- TotalMoney
- TotalMileage
어제 배워서 복습할 겸 만들어 보았습니다.
기능 구현과 리팩토링 되는대로 업데이트할 예정입니다.
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;
}
}
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;
}
}
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();
}
}
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;
}
}
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();
}
}