항공기

 

⊙ AmsField

package ams;

public class AmsField {
	//				Key
	// 항공사, 항공기번호, 최대승객수, 출발지, 도착지
	String[][] arrPlane = new String[100][5];
	int insertCnt;
	int updateIndex;

	// 추가
	// 2차원 배열에 5개의 정보를 담기
	void insert(String[] arPlane) {
		arrPlane[insertCnt] = arPlane;
		insertCnt++;
	}

	// 수정
	void update(int index, String newValue) {
		boolean updateCheck = true;
		//항공사, 항공기번호, 승객수, 출발지, 도착지
		//0			1				2			3			4
		//index : 0, 1
			arrPlane[updateIndex][index+3] = newValue;
	}

	// 삭제
	void delete() {
	}

	// 검색
	String select(int index, String keyword) {
		int[] arIndex = null;
		int searchCnt = 0;
		String result = "";
		updateIndex = -1;
		
		for (int i = 0; i < insertCnt; i++) {
			if (keyword.equals(arrPlane[i][index])) {
				// i >> 행번호 : 검색할 비행기 번호
				searchCnt++;
				updateIndex = i;
				//바로 int배열에 담을 수 없기 때문에(검색 건수를 모르기 때문)
				//문자열에 검색된 행번호를 연결시켜 담는다.(", "는 구분점이다.)
				//구분점이 있어야지만 밑에서 각 값을 나눌 수 있기 때문이다.
				result += i + ", ";
			}
		}
		//검색 건수를 for문이 끝난 후에 알 수 있기 때문에
		//for문 밑에서 new 해준다.
		arIndex = new int[searchCnt];
		for (int i = 0; i < arIndex.length; i++) {
			//	result는 문자열이고 split() 사용시 
			//전체를 배열로 보기 때문에 그 뒤에 바로 []를 사용할 수 있다.
			arIndex[i] = Integer.parseInt(result.split(", ")[i]);
		}
		//list(int[] arIndex)메서드에 값을 전달하고 list(int[] arIndex)에서 리턴된
		//결과값을 select()에서 리턴한다.
		return list(arIndex);
	}

	// 목록
	String list() {
		String result = "항공사, 항공기번호, 최대승객수(명), 출발지, 도착지\n";
		for (int i = 0; i < insertCnt; i++) {
			result += "♥";
			for (int j = 0; j < arrPlane[0].length; j++) {
				result += arrPlane[i][j];
				result += j == arrPlane[0].length - 1 ? "" : ", ";
			}
			result += "\n";
		}

		if (insertCnt == 0)
			result = "목록 없음";

		return result;
	}
	
	String list(int[] arIndex) {
		String result = "항공사, 항공기번호, 최대승객수(명), 출발지, 도착지\n";
		for (int i = 0; i < arIndex.length; i++) {
			result += "♥";
			for (int j = 0; j < arrPlane[0].length; j++) {
				result += arrPlane[arIndex[i]][j];
				result += j == arrPlane[0].length - 1 ? "" : ", ";
			}
			result += "\n";
		}

		if (arIndex.length == 0)
			result = "검색 결과 없음";

		return result;
	}
	
}

 


 

⊙ AmsMain

package ams;

import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

public class AmsMain {
	public static void main(String[] args) {
		String title = "항공기 관리 프로그램";
		String[] menu = {"추가하기", "검색하기", "수정하기", "삭제하기", "목록보기"};
		String[] updateMenu = {"출발지 수정", "도착지 수정"};
		String[] updateMsg = {"출발지", "도착지"};
		AmsField af = new AmsField();
		ImageIcon icon = new ImageIcon("src/img/main.gif");
		int choice = 0;
		String[] arPlane = new String[5];
		String keyword = "";
		
		while(true) {
			choice = JOptionPane.showOptionDialog(null, "", title, JOptionPane.DEFAULT_OPTION,
					JOptionPane.PLAIN_MESSAGE, icon, menu, null);
			
			if(choice == -1) break;
			
			switch(choice) {
			//추가
			//항공사, 항공기번호, 최대승객수(명), 출발지, 도착지
			case 0:
				//5개의 값을 ", "로 구분하여 한번에 입력하기
				//split("구분점")은 리턴타입이 문자열 배열이다.
				//구분점이 있다는 것은 최소한 값이 2개 이상이기 때문에 배열로 리턴한다.
				arPlane = ("" + JOptionPane.showInputDialog(null,
						"항공사, 항공기번호, 최대승객수(명), 출발지, 도착지", title, JOptionPane.PLAIN_MESSAGE,
						icon,	null, null)).split(", ");
				
				af.insert(arPlane);
				break;
			//검색
			case 1:
				break;
			//수정
			case 2:
				String newValue = "";
				
				choice =JOptionPane.showOptionDialog(null, "", title, JOptionPane.DEFAULT_OPTION,
						JOptionPane.PLAIN_MESSAGE, icon, updateMenu, null);
				
				if(choice == -1) break;
				
				keyword = "" + JOptionPane.showInputDialog(null,
						"수정하실 항공기 번호를 입력하세요", title, JOptionPane.PLAIN_MESSAGE,
						icon,	null, null);
				
				if(af.select(1, keyword).equals("검색 결과 없음")) {
					JOptionPane.showMessageDialog(null, "수정 실패");
				}else {
					newValue = "" + JOptionPane.showInputDialog(null,
							"새로운 " + updateMsg[choice] + "를 입력하세요", title, JOptionPane.PLAIN_MESSAGE,
							icon,	null, null);
					af.update(choice, newValue);
					JOptionPane.showMessageDialog(null, "수정 성공");
				}
				
				break;
			//삭제
			case 3:
				break;
			//목록
			case 4:
				JOptionPane.showMessageDialog(null, af.list());
				break;
			}
		}
	}
}

 

+ Recent posts