2010년/7월
7월8일 JAVA(도서관리)
뽀얀햄스터
2010. 7. 9. 08:53
import java.io.*;
import java.util.*;
class Library{
public static void main(String [] args) throws IOException {
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
Vector Booklist = new Vector(5,5);
int istate; // 선택 변수
String sname;
String swri;
String scom;
int ipri;
int i;
int a=-1;
int b=-1;
while(true)
{
System.out.println("****원하는 서비스를 선택하세요****");
System.out.println();
System.out.println("\t1. Search Book.");
System.out.println("\t2. Add Book.");
System.out.println("\t3. Delete Book.");
System.out.println("\t4. List Book.");
System.out.println("\t5. Quit");
System.out.println();
System.out.print("Number :");
istate =Integer.parseInt(stdin.readLine());
System.out.flush();
System.out.println();
switch(istate)
{
case 2: //추가
System.out.println();
System.out.println("Adding Book!");
System.out.println();
System.out.print("\tBook Name : ");
sname=stdin.readLine();
System.out.flush();
System.out.print("\tAuthor : ");
swri=stdin.readLine();
System.out.flush();
System.out.print("\tPublisher : ");
scom=stdin.readLine();
System.out.flush();
System.out.print("\tPrice : ");
ipri=Integer.parseInt(stdin.readLine());
System.out.flush();
BOOK bk = new BOOK(sname,swri,scom,ipri);
Booklist.addElement(bk.bookname);
Booklist.addElement(bk.writer);
Booklist.addElement(bk.company);
Booklist.addElement(bk.price);
break;
case 1: //검색
System.out.println();
System.out.println("Searching Book!");
System.out.println();
System.out.print("\tBook Name : ");
sname=stdin.readLine();
System.out.flush();
a=Booklist.indexOf(sname);
if(a!=-1)
{
System.out.println("=========검색==============");
System.out.println("\tBook Name : "+Booklist.elementAt(a));
System.out.println("\tAuthor : "+Booklist.elementAt(a+1));
System.out.println("\tPublisher : "+Booklist.elementAt(a+2));
System.out.println("\tPrice : "+Booklist.elementAt(a+3));
System.out.println("===========================");
}
else
{
System.out.println("검색되는 책이없습니다");
}
break;
case 3: //삭제
System.out.println();
System.out.println("Deleting Book!");
System.out.println();
System.out.print("\tBook Name : ");
sname=stdin.readLine();
System.out.flush();
a=Booklist.indexOf(sname);
System.out.println(a);
Booklist.remove(Booklist.get(a)); //remove될때 반이 되면.. 자동으로 순서가 바뀐다.
Booklist.remove(Booklist.get(a+1));
Booklist.remove(Booklist.get(a));
Booklist.remove(Booklist.get(a));
break;
case 4: //전체검색
if((Booklist.isEmpty())!=false)
{
System.out.println("검색되는 책이없습니다");
break;
}
System.out.println("=========검색==============");
for(i=0 ;i<Booklist.size();i=i+4)
{
System.out.println("\tBook Name : "+Booklist.elementAt(i));
System.out.println("\tAuthor : "+Booklist.elementAt(i+1));
System.out.println("\tPublisher : "+Booklist.elementAt(i+2));
System.out.println("\tPrice : "+Booklist.elementAt(i+3));
System.out.println("===========================");
}
break;
case 5:
System.out.println("종료합니다");
return ;
}
}
}
}
class BOOK
{
String bookname;
String writer;
String company;
int price;
public BOOK(String bo,String wr, String co, int pr)
{
bookname=bo;
writer = wr;
company = co;
price = pr;
}
}
=====================================================
벡터에서 3시간동안 고생한 흔적. ㅠ 일단 기본적으로 삭제에 관한내용이다.
다른내용보다 힘든점은 벡터에서 삭제할때 삭제하는 목록에 관한내용이다 보통 벡터는 자동적으로 연결리스트처럼 삭제하면 연결시키고 그리고 순서가 자동으로 맞춰준다. 그래서
Booklist.remove(Booklist.get(a)); //remove될때 반이 되면.. 자동으로 순서가 바뀐다.
Booklist.remove(Booklist.get(a));
Booklist.remove(Booklist.get(a));
Booklist.remove(Booklist.get(a));
여기가 핵심이다 a가 0일때 삭제하면 그리고 두번째도 역시 a이다.
그러면 첫번째 두번째가 삭제가 되는데 그럼 세번째와 네번째가
정렬이 되어서 vector[0] 순서가 정해진다 그리고 한번더 삭제하면 다시 순서가 올라와진다.. 망할!!!! 삭제가 다끝나면 한꺼번에하지 망할 ㅠ
================================================================
================================================================