2016-04-12 5 views
0

Ich versuche Supermarkt System zu entwerfen, und ich verwenden, um die Assoziationsklasse der zusätzliche Informationen zu erfassen, dass nicht in der Kundenklasse und Position ist, (beachten Sie, dass ein Kunde viele Einzelteile kaufen) ..Implantierung Assoziationsklasse in Java

Kundenklasse:

package com.company; 

import java.util.Scanner; 
public class Customer { 

    protected long CPR ; 
    protected String name ; 
    protected int Tel ; 
    protected String Adrs ; 

    private int next ; 
    protected AssociationClass A[]; 
    protected Item items[]; 

    public Customer() 
    { 
     CPR = 0 ; 
     name = "Non" ; 
     Tel = 0 ; 
     Adrs = "Non" ; 
     A = new AssociationClass[5]; 
     items = new Item[5]; 
    } 

    public Customer (long c , String n , int t , String ad) 
    { 
     CPR = c ; 
     name = n ; 
     Tel = t ; 
     Adrs = ad ; 
     A = new AssociationClass[5]; 
     items = new Item[5]; 
    } 

    public void AddItem (Item I) 
    { 
     items[next]= I; 
     next++; 
    } 

    public void CustomerPrint() 
    { 
     System.out.print("\n" + "CPR = " + CPR + "\n"); 
     System.out.print("name = " + name + "\n"); 
     System.out.print("Tel = " + Tel + "\n"); 
     System.out.print("Adrs = " + Adrs + "\n"); 
    } 

} 

Klasse:

package com.company; 

import java.util.Scanner; 
public class Item { 

    protected long ID ; 
    protected String name ; 
    protected double price ; 
    protected int quantity ; 

    protected Customer customer; 

    public Item() 
    { 
     ID = 0 ; 
     name = "Non" ; 
     price = 0 ; 
     quantity = 0 ; 
    } 

    public Item (long id , String n , double p , int q) 
    { 
     ID = id ; 
     name = n ; 
     price = p ; 
     quantity = q ; 
    } 

    public void SetCustomer (Customer C) 
    { 
     customer = C ; 
     customer.AddItem(this); 
    } 

    public double getPrice() { 
     return price; 
    } 

    public int getQuantity() { 
     return quantity; 
    } 

    public void ItemPrint() 
    { 
     System.out.print("\n" + "ID = " + ID + "\n"); 
     System.out.print("name = " + name + "\n"); 
     System.out.print("price = " + price + "\n"); 
     System.out.print("quantity = " + quantity + "\n"); 
    } 
} 

Assoziationsklasse (zwischen Kunde und Artikel):

package com.company; 

import java.util.Scanner; 
public class AssociationClass { 

    protected String date ; 
    protected String time ; 
    protected double TotalPrice ; 

    protected Item item[]; 
    protected Customer customer; 

    public AssociationClass() 
    { 
     date = "Non" ; 
     time = "Non" ; 
     TotalPrice = 0 ; 
     item = new Item[5] ; 
     customer = new Customer(); 
    } 



    public void setDate(String date) { 
     this.date = date; 
    } 

    public void setTime(String time) { 
     this.time = time; 
    } 

    public void BuyItems (Item i , Customer c) 
    { c.AddItem(i); 
     i.SetCustomer(c); } 

    public double TotalPRICE() 
    { 
     double sum = 0 ; 
     for (int i=0 ; i < item.length ; i++) 
     { sum += item[i].getQuantity() + item[i].getPrice(); } 

     TotalPrice = sum ; 
     return TotalPrice ; 
    } 

    public void Aprint() 
    { 
     customer.CustomerPrint(); 
     System.out.print("\n"); 
     for (int i=0 ; i < 5 ; i++) 
     { item[i].ItemPrint(); 
      System.out.print("\n\n\n");} 
     System.out.print("date = " + date + "\n"); 
     System.out.print("time = " + time + "\n"); 
     System.out.print("TotalPrice = " + TotalPrice + "\n"); 
    } 


} 

Supermarkt:

package com.company; 
import java.util.Scanner; 
public class Supermarket { 


    protected AssociationClass A[]; 

    protected int next ; 

    public Supermarket() 
    { 
     A = new AssociationClass[3]; 
    } 

    public void Buy (Item i , Customer c) 
    { 
     for (int j=0 ; j < 3 ; j++) 
     { A[j].BuyItems(i, c); } 
    } 

    public void print (long id) 
    { 
     for (int i = 0 ; i < 3 ; i++) 
     { 
      if (id == A[i].customer.CPR) 
      { 
       System.out.print("Customer Information :" + "\n"); 
       A[i].Aprint(); 
      } 
     } 
    } 

} 

Haupt:

package com.company; 

import java.util.Scanner; 
public class Main { 

    public static void main(String[] args) { 

     Supermarket S; 
     S = new Supermarket(); 

     AssociationClass A ; 
     A = new AssociationClass(); 

     Customer C1; 
     C1 = new Customer(1234567,"Jawad",36118806,"barbar"); 
     Customer C2; 
     C2 = new Customer(); 

     Item T1; 
     T1 = new Item(111,"product1",1.500,1); 

     Item T2; 
     T2 = new Item(222,"product2",0.500,5); 

     Item T3; 
     T3 = new Item(333,"product3",2.850,3); 

     A.BuyItems(T1,C1); 
     A.BuyItems(T2,C1); 

     S.print(1234567); 




    } 
} 

ich nicht keine Möglichkeit, nicht mein Code arbeiten, und nicht die Informationen für den Kunden CPR drucken, die ich auf den Druck gegeben funktionieren?

+0

TLDR hinzuzufügen; aber IMHO sollten Sie 'ShoppingCart' erstellen, das seinen Besitzer' Customer' hat und Sie können einige 'Items' zum' Cart' hinzufügen. Später sollte 'Supermarket' eine Methode haben, die' Cart'-Objekt als Methodenargument akzeptiert, alle Artikel aus dem 'Cart' holt, alle Preise summiert und diese für Sie ausgibt. – Antoniossss

+0

Ich kann nicht mehr als 5 Klassen hinzufügen, gibt es andere Sulotionen ohne eine neue Klasse hinzuzufügen? Der Compiler zeigt eine Fehlermeldung in Druckfunktion im Supermarkt, aber ich weiß nicht, wo das Problem ist –

+0

Nun, ich habe 4 Klassen aufgelistet ... also es entspricht Ihren Kriterien. – Antoniossss

Antwort

1

Ich importiere Ihre Klassen und wenn ich laufe, habe ich eine NullPointerException.

Sie versuchen, die AssociationClass in Ihrer Supermarkt-Klasse auf Druckmethode zu lesen, aber Sie initiieren nur das Array, Sie legen nie Daten in das Array.

Wenn Sie in diesem Fall versuchen, auf eine Eigenschaft eines leeren Arrays zuzugreifen, erhalten Sie NullPointerException.

Vielleicht können Sie Ihre BuyItems ändern, um die Informationen in Ihrer SupermarketAssociationClass

+0

mache ich das ja? schau, ich habe Funktion kaufen im Supermarkt und es ist Call-Funktion buyItem in der Association-Klasse, können Sie das Problem für mich beheben :)? –