2016-05-28 5 views
-1

Ich weiß nicht, wie ich die borrowHolding() im Library Menu erstellen muss. Der Zweck von boreholding() ist also, dass Mitglieder Bücher oder Videos ausleihen können.Library System: Borrowing

Dies ist ein nur ein Abtastdaten des Arrays:

member[0] = new StandardMember("ID", "Name"); 
member[1] = new PremiumMember("ID", "Name"); 
holding[0] = new Book("ID", "Title"); 
holding[1] = new Video("ID", "Title", loanFee); 

Dies ist die borrowHolding() Methode in der TestLibrary Klasse: (auch die Anordnung in der TestLibrary Klasse ist)

public static void borrowHolding(){ 
    String option; 
    option = input.next(); 

do{ 

    Scanner scan = new Scanner(System.in); 
    int tempId = 0; 
    System.out.println("Enter your ID: "); 
    String searchID = scan.next(); 

    for(int i = 0; i < member.length; i++){ 

     if(member[i].getID().equals(searchID)){ 

       tempId = i; 

      } 
     } 

Also für die Methode habe ich versucht, einen Code zu schreiben, der das Array durchsuchen wird, um die Mitglieds-ID zu finden, die ausleihen möchte. Es ist noch nicht abgeschlossen, weil ich glaube, ich tue es nicht richtig

Es ist ein Mitglied der Klasse, die

public class Member{ 

    public Holding[] getCurrentHoldings(){ 
    } 

} 

aus dem Namen des Verfahrens enthält, wird es verwendet, um die Bestände der Mitglieder zu speichern, geliehen. Wenn also Mitglied 1 ein Buch ausborgt, wird dieses Buch innerhalb des Arrays gespeichert, denke ich. Ich dachte daran, eine ArrayList für diese Methode zu verwenden, aber ich bin mir nicht sicher, ob das Sinn machen würde.

Um ein Buch oder ein Video auszuleihen, gibt es bestimmte Bedingungen, die man ausleihen kann, aber ich weiß nicht, wie man das in boreholding() implementiert. Eine der Bedingungen sind in der Holding-Klasse.

Und es gibt eine andere Bedingung in der Member-Klasse ist, dass das Mitglied genug Kredit haben muss, um zu borgen. Eine Buch-Leihgebühr kostet 10 $ und ein Video variiert von 4 $ oder 6 $.

Ich denke, ich habe ein paar Informationen geschrieben, die nicht benötigt werden, aber ich denke, es ist besser als weniger Informationen.

Mein Problem ist, was mache ich mit der Methode boreholding() im LibraryMenu? Wie kann ich sicherstellen, dass, wenn ein Mitglied eine Halt borgen will, wird der Betrieb unter dem Array-Mitglied geht in der Member-Klasse

public class Member{ 

    public Holding[] getCurrentHoldings(){ 
    } 

} 

mit der Bedingung aus der Halt Klasse, wenn es erfüllt wird, und während der Ausführung Mit der borrowHolding-Methode kann die Methode von der Mitgliedsklasse das Mitgliedskredit um die Leihgebühr vom Buch oder Video subtrahieren. ist es möglich?

public class Member{ 
    private int credit = 30; 
    public int calculateRemainingCredit(){ 

     credit = credit - //(the loan fee from the book or video class) 

    } 
} 

Antwort

0

Wenn Ihre Absichten eine Halt des Mitglied Klasse hinzuzufügen sind, dann ist dies möglich. Ich würde vorschlagen, eine ArrayList der Holding statt einer regulären Array hinzufügen, weil es scheint, als ob die Größe wird sich ständig ändern.

public class Member{ 
    private ArrayList<Holding> currentholdings; // you may need to import the arraylist 
    private int credit; 

    public void init(){ // goes in constructor 
     currentholdings = new ArrayList<Holding>(); 
     credit=0; 
    } 

    public void addHolding(Holding newholding){ // adds a new holding to the members array 
     currentholdings.add(newholding); 
     credit-=newholding.getFee(); // will need to add a fee variable to the holding class; 
    } 
} 

Und wie für die Überprüfung, ob das Mitglied genug „Kredit“ zu sehen ist, die direkt im borrowHolding() -Methode durchgeführt werden können, nachdem Sie den Index des Arrays identifizieren. Ich würde nur empfehlen, einen Parameter des Mitglieds der borrowHolding() -Methode hinzuzufügen, damit Sie einfach auf die Variablen von diesem Mitglied zugreifen können.

if(member[i].getID().equals(searchID)){ 
    tempId = i; 
    int tempHolding; // index of whatever holding you wanted (could get this from the scanner) 

    if (holding[tempHolding].borrowHolding(member[tempId])){ // check status 
     member[tempId].addHolding(holding[tempHolding]); // they have passed the req. so you can add the holding 
    } 

    break; 
} 

Hoffe das beantwortet Ihre Frage.