연락처 관리 프로그램 [ver.3.0]

yed·2021년 7월 29일
0

연락처 관리 프로그램 ver.3.0

  • 데이터 모델 : name, phone, email
  • 기능 : 연락처 등록, 전체검색, 상세검색, 연락처 수정, 연락처 삭제
  • UI 구조 :

0.종료 | 1. 등록 | 2.전체검색 | 3.상세검색 | 4.수정 | 5. 삭제


  • 업그레이드 내용: 배열대신 ArrayList 사용, 삭제기능 추가

배열로 데이터를 저장하던 방식에서 ArrayList로 데이터를 저장하는 방식으로 바꿨습니다. List를 사용하기 때문에 remove()를 활용해 데이터 삭제기능도 추가해주었습니다.

변경된 클래스와 함수들만 보겠습니다!

public class ContactDAOImple implements ContactDAO{
	//사용할 singleton 객체
	private static ContactDAOImple instance=null;
	private ContactDAOImple() {};
	public static ContactDAOImple getInstance() {
		if(instance==null) {
			instance=new ContactDAOImple();
		}
		return instance;
	}
	//전체 연락처를 담고있는 리스트
	public static ArrayList<ContactVO> list=new ArrayList<ContactVO>();
	
	@Override //등록-입력된 인스턴스를 저장하고 저장결과 리턴하기
	public int insert(ContactVO vo) {
		list.add(vo);
		return 1;
	}
	@Override //전체검색-전체리스트를 리턴하기
	public ArrayList<ContactVO> select() {
		return list;
	}
	@Override //상세검색-인덱스를 받아서 인덱스의 정보 리턴하기
	public ContactVO select(int index) {
		return list.get(index);
	}
	@Override //수정-인덱스를 받아서 입력된 인스턴스 저장하고 저장결과 리턴하기
	public int update(int index, ContactVO vo) {
		list.set(index, vo);
		return 1;
	}
	@Override //삭제-인덱스를 받아서 저장된 인덱스의 정보 삭제하고 결과 리턴하기
	public int delete(int index) {
		list.remove(index);
		return 1;
	}
}
while(run) {
	showMainMenu();
    int choice=sc.nextInt();
	sc.nextLine();
		
	switch (choice) {
	case Menu.QUIT:
		System.out.println(">>프로그램을 종료합니다.");
		run=false;
		break;
	case Menu.INSERT:
		ContactInsert();
		break;
	case Menu.SELECT_ALL:
		ContactSelectAll();
		break;
	case Menu.SELECT_BY_INDEX:
		ContactSelectByIndex();
		break;
	case Menu.UPDATE:
		ContactUpdate();
		break;
	case Menu.DELETE:
    		ContactDelete();
		break;
	default:
		System.out.println(">>다시 선택하세요.");
		break;
	}
}

ArrayList<ContactVO> list=dao.select();
int count=dao.select().size();

고정길이의 배열로 인해 데이터의 끝을 별도의 count 변수로 체크하고있었는데 가변길이의 List는 데이터의 끝을 알 수 있는 size()가 있어서 데이터의 끝을 체크하지 않아도 됩니다.

private static void ContactDelete() {
	//삭제할 인덱스를 입력받아 삭제하기
	System.out.println();
	System.out.println(">>5. 연락처 삭제");
	System.out.print("삭제할 연락처 번호 입력>");
	int index=sc.nextInt();
	sc.nextLine();
	int count=dao.select().size();
	
	if(index>=0 && index<count) {
		int result=dao.delete(index);
		if(result==1) {
			System.out.println(">>연락처를 삭제했습니다.");
		}else {
			System.out.println(">>삭제에 실패했습니다.");
		}
	}else {
		System.out.println(">>없는 연락처입니다.");
	}
}//end ContactDelete()

향후 업데이트

  • 예외발생 시 예외처리하기.
  • 데이터 영구저장하기.
profile
6개월 국비과정 기록하기

0개의 댓글

관련 채용 정보