package Addressbook;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Scanner;
import Addressbook.Addressbook.AddressbookEntry;
class AddressbookMain {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
ArrayList<AddressbookEntry> list = null;
while (true) {
System.out.println("주소록이 실행 되었습니다.");
System.out.println("해당 번호를 선택하여 주십시오. (1~7)");
System.out.println("1.정보입력");
System.out.println("2.이름검색");
System.out.println("3.정보삭제");
System.out.println("4.리스트보기");
System.out.println("5.주소록저장");
System.out.println("6.주소록불러오기");
System.out.println("7.주소록종료");
Scanner sc = new Scanner(System.in);
int menu;
menu = sc.nextInt();
Addressbook book = new Addressbook();
AddressbookEntry entry = book.getAddressbookEntry();
File s = new File("save.txt");
switch (menu) {
case 1: { // 입력
list = new ArrayList<AddressbookEntry>();
System.out.println("입력을 시작합니다.");
sc.nextLine();
System.out.println("이름을 입력해 주세요.");
entry.setName(sc.nextLine());
System.out.println("주소를 입력해 주세요.");
entry.setAddress(sc.nextLine());
System.out.println("전화번호를 입력해 주세요.");
entry.setTel(sc.nextLine());
System.out.println("성별을 입력해 주세요.");
entry.setSex(sc.nextLine());
System.out.println("나이를 입력해 주세요.");
entry.setAge(sc.nextLine());
System.out.println("입력이 완료되었습니다. 메뉴로 돌아갑니다.(엔터키를눌러주세요)");
sc.nextLine();
list.add(entry);
System.out.println("");
break;
}
case 2: { // 검색
System.out.println("검색할 이름을 입력하세요.");
String SearchName = sc.next();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getName().equals(SearchName)) {
System.out.println(list.get(i).toString());
} else {
System.out.println("검색한 이름이 없습니다.");
}
}
System.out.println("검색을 완료하였습니다.");
System.out.println("초기 메뉴로 돌아갑니다.");
break;
}
case 3: { // 삭제
System.out.println("삭제할 데이터의 이름을 입력하세요.");
String delName = sc.next();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getName().equals(delName)) {
System.out.println(list.get(i).getName()
+ "님의 주소를 삭제하였습니다.");
list.remove(i);
}
if (s.exists()) {
FileOutputStream fos = new FileOutputStream("save.txt",
true);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(list);
oos.flush();
oos.close();
}
}
System.out.println("초기 메뉴로 돌아갑니다.");
break;
}
case 4: { // 리스트보기
System.out.println("주소록을 출력합니다.");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
System.out.println("주소록 출력이 완료되었습니다.");
System.out.println("초기 메뉴로 돌아갑니다.");
break;
}
case 5: { // 저장
// File s = new File("save.txt");
if (s.exists()) {
System.out.println("save.txt파일이 존재합니다.");
System.out.println("덮어쓰시려면 y를 취소하시려면 다른키를 입력해주세요.");
char c = sc.next().charAt(0);
if (c == 'y') {
FileOutputStream fos = new FileOutputStream("save.txt",
true);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(list);
oos.flush();
oos.close();
System.out.println("주소록이 저장됬습니다.");
System.out.println("초기 메뉴로 돌아갑니다.");
} else {
System.out.println("주소록 저장이 취소되었습니다.");
System.out.println("초기 메뉴로 돌아갑니다.");
}
}
break;
}
case 6: { // 주소록불러오기
System.out.println("저장되어있는 주소록을 불러옵니다.");
FileInputStream fis = new FileInputStream("save.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
ObjectInputStream ois = new ObjectInputStream(bis);
list = (ArrayList<AddressbookEntry>) ois.readObject();
System.out.println("주소록을 불러왔습니다.");
System.out.println("초기 메뉴로 돌아갑니다.");
break;
}
default:
System.out.println("프로그램을 종료합니다.");
System.exit(0);
break;
}
}
}
}
array리스트로 입력한 다음에 save.txt 에 저장되게끔 만들려고 만들었는데
리스트 보기로 리스트를 출력하면 가장 마지막에 입력한 값만 출력됩니다...
X X X X X 를 입력하고
Y Y Y Y Y 를 입력하면
X X X X X 가 사라집니다.... 어디쯤을 수정해야되는지...팁이라도...ㅠ 부탁드립니다