2016-03-19 4 views
0

Hallo Ich habe einige Probleme bei der Erstellung einer GroceryItem-Klasse und Funktionen zum Akzeptieren und Festlegen der Eingabe von einem Benutzer ausgeführt.Brauchen Sie Hilfe beim Implementieren von Funktionen in GroceryItem-Klasse

Derzeit, wenn ich die DataEntry-Funktion ausführen, geht der Compiler auf die nächste Funktion vor Annahme der Eingabe von der ersten Funktion.

Ich habe ein Test-Milchobjekt erstellt, um meinen Code zu testen, aber es erlaubt mir nicht, Daten einzugeben, bevor ich zur nächsten Eingabeaufforderung gehe.

Sobald ich die Klassenfunktionen herausfinden kann, werde ich auch ein Array von Objekten und Eingabewerte für solche erstellen.

Irgendein Rat, wie ich über das Reparieren dieser Klasse und Funktionen gehen kann, würde sehr geschätzt werden!

#include <iostream> 

using namespace std; 

class GroceryItem{ 
private: int stockNumber; 
     double price = 0.0; 
     int quantity; 
     double totalValue; 
     double setPrice(); 
     int setStockNum(); 
     int setQuantity(); 
     void setTotalValue(); 
public: 
    void dataEntry(); 
    void displayValues(); 

}; 
int GroceryItem::setStockNum(){ 
    int stock = 0; 
cout << "Enter the stock number for the grocery item: "; 

do { 
    cout << "Stock Number(1000-9999): "; 
    cin >> stock; 
} while (!(stock >= 1000 && stock <= 9999)); 

    stockNumber = stock; 
    return stockNumber; 
} 
double GroceryItem::setPrice(){ 
    double x = 0.0; 
    cout << "Enter the price of the item: "; 
    while (!(x > 0)) { 
     cout << "Please enter a positive number for price!"; 
     cin >> x; 
    } 
    price = x; 
    return price; 
} 
int GroceryItem::setQuantity(){ 
    int x = 0; 
    cout << "Enter the quantity in stock: "; 
    while (!(x > 0)){ 
     cout << "Please enter a positive number for quantity!"; 
     cin >> x; 
    } 
    quantity = x; 
    return quantity; 
} 
void GroceryItem::setTotalValue(){ 
    totalValue = (quantity * price); 
} 
void GroceryItem::dataEntry(){ 
    setStockNum(); 
    system("pause"); 
    setPrice(); 
    system("pause"); 
    setQuantity(); 
    system("pause"); 
    setTotalValue(); 
} 
void GroceryItem::displayValues(){ 
    cout << "Stock number: " << stockNumber; 
    cout << "\nItem price: " << price; 
    cout << "\nQuantity on hand: " << quantity; 
    cout << "\nTotal value of item: " << totalValue; 
} 


int main(){ 
    GroceryItem Milk; 
    Milk.dataEntry(); 
    Milk.displayValues(); 
    system("pause"); 
    return 0; 
} 
+0

Was meinen Sie damit? Es ist keine gültige Codezeile, also nicht sicher, was Sie meinen – AddieCaddy

+0

Sie sollten das 'price'-Element mit einem Konstruktor initialisieren. –

+0

Sieht aus wie ein guter Kandidat für die Verwendung eines * Debuggers *. –

Antwort

0

Geck, achten Sie auf den Zustand der while-Anweisung, die Linie

!(stock >= 1000 || stock <= 9999) 

kehrt gilt für Lager = 0 (immer wahr, in diesem Fall), so wird das Programm nicht betreten die Schleife. Vielleicht bedeutete Sie so etwas wie:

!(stock >= 1000 && stock <= 9999) 

UND (& &) nicht OR (||)

+0

Ja, ich habe das bemerkt und das wurde geändert, danke. Auch meine Schleife war falsch, also habe ich sie in eine Do-While-Schleife geändert und jetzt funktioniert es perfekt. Ich muss nur eine Do-while für meine anderen Eingaben verwenden, um nur positive Werte zu akzeptieren – AddieCaddy