내용

글번호 814
작성자 heojk
작성일 2018-02-20 17:36:45
제목 NameCardManager2
내용 명함 관리 프로그램 소스코드 NameCard

public class NameCard {
	private String name;
	private String officeName;
	private String job;
	private String phone;
	private String officePhone;
	private String email;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getOfficeName() {
		return officeName;
	}
	public void setOfficeName(String officeName) {
		this.officeName = officeName;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getOfficePhone() {
		return officePhone;
	}
	public void setOfficePhone(String officePhone) {
		this.officePhone = officePhone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@Override
	public String toString() {
		return "NameCard [name=" + name + ", officeName=" + officeName + ", job=" + job + ", phone=" + phone
				+ ", officePhone=" + officePhone + ", email=" + email + "]";
	}

}
NameCardManager2
import java.util.Scanner;

public class NameCardManager2 {

	static final int MAX = 100;
	static NameCard[] nameCardList = new NameCard[MAX];
	
	//배열을 사용할 때에는 항상 따라다니는 변수 두 개를 선언해 주세요.
	static int index = -1;
	static int count = 0;
	
	//스캐너
	static Scanner scan = new Scanner(System.in);
	public static void main(String[] args) {
		//메뉴 처리
		while(true) {
			System.out.println("메뉴를 입력하세요.");
			System.out.println("(I)nsert, (S)elect, (U)pdate, (D)elete, (Q)uit");
			String menu = scan.nextLine();
//			menu = menu.toLowerCase();
//			switch(menu.charAt(0)) {
			switch(menu.toLowerCase().charAt(0)) {
			case 'i' :
				System.out.println("명함 정보를 입력합니다.");
				insertNameCardInfo();
				break;
			case 's' :
				System.out.println("명함 정보를 조회합니다.");
				index = searchNameCardByName();
				if(index >= 0 && index <count) {
					printNameCardInfo(index);
				}else {
					System.out.println("조회한 정보가 없습니다.");
				}
				break;
			case 'u' :
				System.out.println("명함 정보를 수정합니다.");
				index = searchNameCardByName();
				if(0 <= index && index < count) {
					updateNameCardInfo(index);
				}else {
					System.out.println("수정할 정보가 없습니다.");
				}
				break;
			case 'd' :
				System.out.println("명함 정보를 삭제합니다.");
				index = searchNameCardByName();
				if( index>=0 && index<count) {
					deleteNameCardInfo(index);
				}else {
					System.out.println("삭제할 정보가 없습니다.");
				}
				break;
			case 'q' :
				System.out.println("프로그램을 종료합니다.");
				System.exit(0);
			default : 
				System.out.println("없는 메뉴 입니다.");
				break;
			}
		}//end while
	}//end main
	
	private static void deleteNameCardInfo(int idx) {
		for(int i=idx; i<count-1; i++) {
			nameCardList[i] = nameCardList[i+1];
		}
		//여기에 들어가야 할 내용은?
		count--;
	}

	private static void updateNameCardInfo(int idx) {
//		nameCardList[idx].setOfficeName(updateNameCardDetail("회사명", nameCardList[idx].getOfficeName()));
		System.out.println("명함 정보를 수정합니다......");
		System.out.printf("회사이름(%s)", nameCardList[idx].getOfficeName());
		String officeName = scan.nextLine().trim();
		if(officeName != null && officeName.length()>=0) {
			nameCardList[idx].setOfficeName(officeName);
		}
		System.out.printf("직무(%s)", nameCardList[idx].getJob());
		String job = scan.nextLine().trim();
		if(job != null && job.length() >= 0) {
			nameCardList[idx].setJob(job);
		}
		System.out.printf("전화번호(%s)", nameCardList[idx].getPhone());
		String phone = scan.nextLine().trim();
		if(phone != null && phone.length() >= 0) {
			nameCardList[idx].setPhone(phone);
		}
		System.out.printf("회사전화번호(%s)", nameCardList[idx].getOfficePhone());
		String officePhone = scan.nextLine().trim();
		if(officePhone != null && officePhone.length() >= 0) {
			nameCardList[idx].setOfficePhone(officePhone);
		}
		System.out.printf("이메일(%s)", nameCardList[idx].getEmail());
		String email = scan.nextLine().trim();
		if(email != null && email.length() >= 0) {
			nameCardList[idx].setEmail(email);
		}
	}//end updateNameCardInfo()
	
//	private static String updateNameCardDetail(String msg, String data) {
//		System.out.printf("%s(%s):", msg, data); //기존 데이터를 그대로 출력
//		String str = scan.nextLine().trim();
//		if(str == null || str.length()==0) { //만약 입력한 값이 없을 겨우...
//			return data;
//		}else {
//			return str;	//입력한 값
//		}
//	}
	
	private static int searchNameCardByName() {
		System.out.print("이름을 입력하세요 : ");
		String name = scan.nextLine().trim();
		for(int i=0; i<count; i++) {
			if(nameCardList[i].getName().equals(name)) {
				return i;
			}
		}
		return -1;
	}

	private static void insertNameCardInfo() {
		NameCard nameCard = new NameCard();			
		System.out.print("이름: ");			nameCard.setName(scan.nextLine().trim());
		System.out.print("회사명: ");		nameCard.setOfficeName(scan.nextLine().trim());
		System.out.print("직무: ");			nameCard.setJob(scan.nextLine().trim());
		System.out.print("전화번호: ");		nameCard.setPhone(scan.nextLine().trim());
		System.out.print("회사전화번호: ");	nameCard.setOfficePhone(scan.nextLine().trim());
		System.out.print("이메일주소: ");	nameCard.setEmail(scan.nextLine().trim());
		nameCardList[count] = nameCard;
		printNameCardInfo(count);
		count++;
	}
	private static void printNameCardInfo(int idx) {
//		System.out.println(nameCardList[idx]);
		System.out.printf("이름: %s, 회사명: %s, 직무: %s, \n전화: %s, 회사전화: %s, 이메일: %s\n", 
				nameCardList[idx].getName(), nameCardList[idx].getOfficeName(), 
				nameCardList[idx].getJob(), nameCardList[idx].getPhone(), 
				nameCardList[idx].getOfficePhone(), nameCardList[idx].getEmail());
	}
}//end class