연락처 프로그램 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("선택 :");
}
}