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] 순서가 정해진다 그리고 한번더 삭제하면 다시 순서가 올라와진다.. 망할!!!! 삭제가 다끝나면 한꺼번에하지 망할 ㅠ


================================================================
================================================================