2015-01-04 2 views
0

저는 사용자가 기술 매뉴얼을 저장, 대여, 반환 및 삭제할 수있는 작은 라이브러리 응용 프로그램을 개발 중입니다.자바 - 텍스트 파일로 저장

응용 프로그램을 거의 완료했으며 사용자가 주 메뉴에서 옵션 1을 선택하면 라이브러리를 외부 txt 파일에 저장하여 전체 라이브러리를 볼 수 있습니다. 올바른 코드를 구현하려고했지만 텍스트 파일을 만들지 않았습니다. 여기

내 매뉴얼 클래스에서 관련 코드입니다 : 여기

  if(Menu.menuChoice == 1 && Library.ManualList.size() > 0){      
       Library.displayManualList(); 
       Menu.displayMenu(); 
       try { 
        FileWriter fw = new FileWriter("Library.txt"); 
        PrintWriter pw = new PrintWriter(fw); 

        pw.println(Library.ManualList); 

        pw.close(); 
       } catch (IOException e) { 
        out.println("Error! Library unable to save."); 
       } 
      } 

      if(Menu.menuChoice == 1 && Library.ManualList.isEmpty()){ 
       System.out.println(Messages.addManualFirst); 
       Menu.displayMenu(); 
      } 

필요한 경우 내 전체 라이브러리 클래스는 다음과 같습니다

public class Library { 

/** The Manual choice. */ 
public static int ManualChoice; 

static String returnManualTitle; 

/** The status1. */ 
static String status1 = "Available"; 

/** The status2. */ 
static String status2 = "Borrowed"; 

/** The Manual list. */ 
static ArrayList<Manual> ManualList = new ArrayList<Manual>(); 
static ArrayList<Manual> borrowedManuals = new ArrayList<Manual>(); 


/** 
* Adds the Manual. 
*/ 
static void addManual(){ 
    Manual newManual = new Manual(); //create new Manual object with status "Available." 
    newManual.createManual(); 
    ManualList.add(newManual);//add the Manual to the ManualList ArrayList. 
    System.out.println("\n\n--------------------------------------------------------------------------"); 
    System.out.println("\n       Manual added to library!\n"); 
    System.out.println("--------------------------------------------------------------------------\n"); 
} 

/** 
* Display Manual list. 
*/ 
static void displayManualList(){ 
    if (ManualList.isEmpty()){//If the library is empty, it goes back to main menu and choice. 
     System.out.println("-------------------------------------------------------------"); 
     System.out.println(Messages.empltyLibraryMessage + Messages.tryAgainMessage); 
     System.out.println("-------------------------------------------------------------"); 
     Menu.menuChoice = 7; 

    } else {  
     System.out.printf("\n\nHere are the Manual/s currently stored in the library:\n\n\n"); 
     for (int i = 0; i < ManualList.size(); i++){ 
      System.out.printf("-------------------- Index Number: %s --------------------\n",i); 
      System.out.println(ManualList.get(i).displayManual()); 
      System.out.println("---------------------------------------------------------\n"); 
     }//End of For Loop.   
    }// End of Else Statement.   
}//End of if Statement. 

static void displayBorrowedManuals(){ 
    if (ManualList.isEmpty()){//If the library is empty, it goes back to main menu and choice. 
     System.out.println("-------------------------------------------------------------"); 
     System.out.println(Messages.empltyLibraryMessage + Messages.tryAgainMessage); 
     System.out.println("-------------------------------------------------------------"); 
     Menu.menuChoice = 7; 

    } else {      
     for (int i = 0; i < borrowedManuals.size(); i++){ 
      System.out.printf("-------------------- Index Number: %s --------------------\n",i); 
      System.out.println(borrowedManuals.get(i).displayManual()); 
      System.out.println("---------------------------------------------------------"); 
     }//End of For Loop.   
    }// End of Else Statement.   
}//End of if Statement. 
/** 
* Borrow Manual. 
*/ 
public static void borrowManual(){ 
    if(ManualList.size() > 1){ 
     displayManualList(); 
    } 
    else if(ManualList.size() == 1){ 
     ManualList.get(ManualChoice).status = "Borrowed"; 
     ManualList.get(ManualChoice).borrower = User.userName; 
     ManualList.get(ManualChoice).borrowDate = "Today."; 
     ManualList.get(ManualChoice).returnDate = "In two weeks."; 
     borrowedManuals.add(ManualList.get(ManualChoice)); 
     System.out.printf("\n\nThere is only 1 manual present in the library.\n\nBecause of this, it has been automatically borrowed for you.\n\nHere is the manual which has been borrowed:\n\n %s\n\n", ManualList.get(ManualChoice).displayManual()); 
     System.out.println("Please return the Manual within two weeks!\n"); 
    } 
    //register user's Manual choice. 
    ManualChoice = (Console.readInteger(Messages.enterManualIndexMessage, Messages.ManualIndexNotInListMessage, 0, Library.ManualList.size() - 1)); 

    borrowLoop: 
    while(Menu.menuChoice == 3){ 
     //Check if the Manual to be borrowed is available. 
     //ManualChoice = (Console.readInteger(Messages.enterManualIndexMessage, Messages.ManualIndexNotInListMessage, 1, Library.ManualList.size())); 

     if ((ManualList.get(ManualChoice).status.equalsIgnoreCase(status1)) && (ManualList.size() >= ManualChoice)){ 
      //Print the borrowed Manual information and change the Manual status to borrowed. 
      ManualList.get(ManualChoice).status = "Borrowed"; 
      ManualList.get(ManualChoice).borrower = User.userName; 
      ManualList.get(ManualChoice).borrowDate = "Today."; 
      ManualList.get(ManualChoice).returnDate = "In two weeks."; 
      //Add the borrowed Manual to the borrowedManuals arraylist: 
      borrowedManuals.add(ManualList.get(ManualChoice)); 

      System.out.println("\n--------------------------------------------------------------------------"); 
      System.out.println("\n        Manual borrowed!\n"); 
      System.out.println("--------------------------------------------------------------------------\n"); 
      break borrowLoop; 

     }else if(ManualList.get(ManualChoice).status.equalsIgnoreCase(status2) && ManualList.size() >= ManualChoice){ 
      System.out.println("\n--------------------------------------------------------------------------"); 
      System.out.println("\n   " 
        + " The Manual you wish to borrow is already on loan."); 
      System.out.println("\n--------------------------------------------------------------------------\n"); 
      break borrowLoop; 

     }else if(ManualChoice > ManualList.size()-1){ 
      System.out.println(Messages.noSuchManualMessage); 
      break borrowLoop; 
     } 
    } 
    Menu.displayMenu(); 
} 

/** 
* Return Manual. 
*/ 
static void returnManual(){ 
    System.out.printf("\n\nHere are the Manual/s currently out on loan:\n\n"); 

    if(borrowedManuals.size() > 0){ 
    for (int i = 0; i < borrowedManuals.size(); i++) 
     System.out.println(borrowedManuals.get(i).displayManual()); 
     returnManualTitle = Console.readString(Messages.enterManualSerial, Messages.tooShortMessage, 3); 
    } 

    int x = 0; 
    boolean serialExistance = false; 
    while (x < ManualList.size()){//Search for the Manual by title, if it exists change it's status, 
           //it's borrower and borrowDate. 

     if (ManualList.get(x).serial.equalsIgnoreCase(returnManualTitle)){ 

      ManualList.get(x).status = "Available"; 
      ManualList.get(x).borrower = "N/A"; 
      ManualList.get(x).borrowDate = "N/A"; 
      ManualList.get(x).returnDate = "N/A"; 

      int p = 0; 
       while (p < borrowedManuals.size()) { 
        Manual borrowed = borrowedManuals.get(p); // guessing the name of this class 
        if (borrowed.serial.equalsIgnoreCase(returnManualTitle)) { 
         borrowedManuals.remove(p); 
         break; 
        } 
        p++; 
       }    
      System.out.println(Messages.successReturnMessage); 
      serialExistance = true; 

      break;//if a title is found, break out of the loop and display choice menu. 
     } 
     x = x+1; 
    }//end of while loop. 
    if(serialExistance == false){ 
     boolean repeatReturnManual = Console.readYesNo("\n--------------------------------------------------------------------------" + "\n\nThe Manual with the title "+"\""+returnManualTitle +"\""+ " wasn't found!" 
                 +"\n\nDo you want to try again? (Y/N):\n"); 
     System.out.println("\n--------------------------------------------------------------------------"); 
     if(repeatReturnManual){ 
      returnManual(); 
     } 
    }else if(serialExistance){ 
     Menu.menuChoice = 7; 
    }    
} 

/** 
* Removes the Manual. 
*/ 
public static void removeManual(){ 

    displayManualList(); 

    ManualChoice = Console.readInteger(Messages.enterRemoveManualIndex ,Messages.ManualIndexNotInListMessage, 0, ManualList.size());   
    int p = 0; 
    while (p < borrowedManuals.size()){//Search for the Manual by title, if it exists change it's status, 
     //it's borrower and borrowDate. 

     if (borrowedManuals.get(p).title.equalsIgnoreCase(returnManualTitle)){ 

      borrowedManuals.remove(p); 
     } 
    }    
    ManualList.remove(ManualChoice); 
    System.out.print(Messages.successRemovedManualMessages); 
    Menu.menuChoice = 7; 
} 

/** 
* Empty library. 
*/ 
static void emptyLibrary(){ 
    System.out.println("\n         WARNING!"); 
    System.out.println("\n   You have chosen to delete all Manuals in the library.\n"); 
    System.out.println("--------------------------------------------------------------------------"); 
    boolean emptyLibraryChoice = Console.readYesNo("\nAre you sure you wish to destroy the library? (Y/N): "); 
    System.out.println("\n--------------------------------------------------------------------------"); 
    if(emptyLibraryChoice){ 
     Library.ManualList.clear(); 
     System.out.println(Messages.successEmptyLibraryMesssage); 
     System.out.println("--------------------------------------------------------------------------\n\n"); 
     Menu.menuChoice = 7; 
     } 

} 

} 

사람이 내가의 내용을 저장할 수 있습니다 방법을 알고있는 경우 라이브러리는 텍스트 파일에 알려 주시기 바랍니다, 어떤 도움을 주셔서 감사합니다 :) 나는 자바에 상당히 새로운 코드이므로, 필요한 코드를 빠뜨렸다면 알려주십시오!

+0

당신은 어떤 종류의 루프를 사용하는 방식으로, 파일의 목록에서 요소를 작성해야하는 경우, 귀하의 회신이 나중에 ... – MadProgrammer

+0

@MadProgrammer 덕분에 많은 그것을 다시 읽을 수 있습니다 정말 도전적이지만 나는 당신의 제안에 대해 조사 할 것입니다. 자바에 익숙하지 않으므로 아마도 저에게 실제 해결책을 보여줄 수 있습니까? – Oscar

+0

'Manual' 클래스는 어떻게 생겼습니까? – MadProgrammer

답변

0

라이브러리의 모든 요소를 ​​하나씩 가져 가려합니다.

for(int i=0; i<Library.ManualList.size(); i++) 
    pw.println(Library.ManualLis.get(i)); 
pw.close();  
+0

답장을 보내 주셔서 감사합니다. 구현할 위치에 대해 좀 더 자세히 설명해 주시겠습니까? 아직 확실하지 않은 임 – Oscar

관련 문제