자바기초) ArrayList 활용 퀴즈 : 연락처 프로그램3

박대현·2023년 2월 7일
0

자바 기초 활용

목록 보기
17/22

연락처 프로그램 2를 이용하여 아래 기능 구현
1. ContactVO[] list -> ArrayList<> 로 변경
2. 연락처 삭제 기능 추가


참고 사항
이전 코드는 주석처리 함


ContactDAO 인터페이스

import java.util.ArrayList;

public interface ContactDAO {
	public abstract int insert(ContactVO vo);

	public abstract ArrayList<ContactVO> select(); //리턴 타입 리스트로 변경

	public abstract ContactVO select(int index);

	public abstract int update(int index, ContactVO vo);
	
	public abstract int delete(int index); //삭제 관련 메소드 추가
}

ContactDAOImple 클래스

import java.util.ArrayList;

public class ContactDAOImple implements ContactDAO {

	private static ContactDAOImple instance = null;

	private ContactDAOImple() {
	}

	public static ContactDAOImple getInstance() {
		if (instance == null) {
			instance = new ContactDAOImple();
		}
		return instance;
	}

	//********1. ContactVO[] list -> ArrayList<> 로 변경**********
  
    // list를 사용함으로 써 저장 공간을 미리 정하지 않아도 되고
    // 따로 카운트할 필요가 없어짐.
	private ArrayList<ContactVO> list = new ArrayList<>(); 
    
	// list의 크기를 알기 위해 생성
	public int getListSize() {
		return list.size();
	}
    
	// add 메소드 활용
	@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);
	}
	//set, get 메소드 활용
	@Override
	public int update(int index, ContactVO vo) {
		// list.set(index, new ContactVO(vo.getName(), vo.getPhone(), vo.getEmail()));
		list.get(index).setEmail(vo.getEmail());
		list.get(index).setName(vo.getName());
		list.get(index).setPhone(vo.getPhone());
		return 1;
	}
	//remove 메소드 활용
	@Override
	public int delete(int index) {
		list.remove(index);
		return 1;
	}

}

ContactVO 클래스
변경 내용 없음

public class ContactVO {
	private String name;
	private String phone;
	private String email;

	public ContactVO() {

	}

	public ContactVO(String name, String phone, String email) {
		this.name = name;
		this.phone = phone;
		this.email = email;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Override
	public String toString() {
		return "ContactVO [name=" + name + ", phone=" + phone + ", email=" + email + "]";
	}

}

Menu 인터페이스

public interface Menu {
	public static final int INSERT = 1;
	public static final int SELECTALL = 2;
	public static final int SELECTBYINDEX = 3;
	public static final int UPDATE = 4;
	public static final int DELETE =5;// 삭제 관련 상수 추가
	public static final int EXIT = 0;
}

Main

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
	private static Scanner sc;
	private static ContactDAO dao;

	public static void main(String[] args) {
		System.out.println("연락처 관리 프로그램");
		sc = new Scanner(System.in);
		dao = ContactDAOImple.getInstance();
		boolean run = true;
		while (run) {
			showMainMenu();
			int sel = sc.nextInt();
			switch (sel) {
			case Menu.INSERT:
				insert();
				break;
			case Menu.SELECT_ALL:
				selectall();
				break;
			case Menu.SELECT_BY_INDEX:
				selectbyindex();
				break;
			case Menu.UPDATE:
				update();
				break;
			case Menu.DELETE:
				delete();
				break;
			case Menu.EXIT:
				run = false;
				break;
			default:
				System.out.println("다시 입력 하세요.");
				break;
			}
		}

	}

	private static void insert() {
		System.out.println("연락처 등록");
		System.out.println("이름:");
		String name = sc.next();
		System.out.println("휴대폰번호:");
		String phone = sc.next();
		System.out.println("이메일:");
		String email = sc.next();
		ContactVO vo = new ContactVO(name, phone, email);
		int result = dao.insert(vo);
		if (result == 1) {
			System.out.println("연락처가 정상 등록 되었습니다.");
		}

	}

	private static void selectall() {
		ArrayList<ContactVO> list = dao.select();
		System.out.println("연락처 리스트 출력");
		for (ContactVO vo : list) {
			System.out.println(vo);
		}

	}

	private static void selectbyindex() {
		System.out.println("연락처 인덱스 입력 ");
		int index = sc.nextInt();
		if (index >= 0 && index < ((ContactDAOImple) dao).getListSize()) {
			ContactVO vo = dao.select(index);
			System.out.println(vo);
		}

	}

	private static void update() {
		System.out.println("연락처 정보 수정 ");
		System.out.println("연락처 인덱스 입력 ");
		int index = sc.nextInt();
		if (index >= 0 && index < ((ContactDAOImple) dao).getListSize()) {
			System.out.println("이름:");
			String name = sc.next();
			System.out.println("휴대폰번호:");
			String phone = sc.next();
			System.out.println("이메일:");
			String email = sc.next();
			ContactVO vo = new ContactVO(name, phone, email);
			int result = dao.update(index, vo);
			if (result == 1) {
				System.out.println("정상적으로 수정 되었습니다.");
			}
		}

	}

	private static void delete() { //삭제 수행 메소드
		System.out.println("연락처 인덱스 입력 ");
		int index = sc.nextInt();
		if (index >= 0 && index < ((ContactDAOImple)dao).getListSize()) {
			dao.delete(index);
			System.out.println("연락처가 삭제되었습니다.");
		}
	}

	private static void showMainMenu() { //삭제 관련 문구 추가
		System.out.println("---------------------------------------------------------");
		System.out.println("1. 등록 | 2. 전체 검색 | 3. 상세 검색 | 4. 수정 | 5. 삭제 | 0. 종료");
		System.out.println("----------------------------------------------------------");
		System.out.println("선택 :");
	}

}

0개의 댓글