連絡先管理プログラム[ver.3.0]


連絡先マネージャver.3.0
  • データモデル:name、phone、email
  • 機能:連絡先登録、全面検索、詳細検索、連絡先変更、連絡先削除
  • UI構造:
  • 0.終了|1.登録全文検索|3.詳細検索変更削除
  • アップグレード内容: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()
    将来の更新
  • 異常発生時処理異常.
  • データを永続的に格納します.