#include"JWI_Klassen_Verwaltung.h" #include"JWI_Klassen_Fenster.cpp" // ausgelagerte Operationen der Klasse Verwaltung void Verwaltung::BestellungAnnehmenUndBearbeiten(void) { // Bestellung annehmen // ist der Kunde noch nicht vorhanden, so muß er zuerst mit der Operation NeuerKunde // angelegt werden - dies ist nicht Teil dieser Operation; // anschließend wird unter der Kundennummer (knr) die bestellung aufgenommen und // registriert; dieses geschieht durch die Operation Neu der Klasse Kundenbestellung // Generierung der Kundenbestellung und Eingabe der notwendigen Informationen class Kundenbestellung neuebestellung; class EingabeFenster E; char* Text; // Text der im Menü ausgegeben werden soll int mehr; zaeler_bnr++; neuebestellung.Neu(zaeler_bnr); // Generierung der Liste der Bestellposten - über einen Bildschirmdialog: Text="Soll ein weiterer Bestllposten der Bestellung hinzugefügt werden?"; do { // Bildschirmabfrage, ob ein weiterer Bestellposten angehängt werden soll // (das Ergebnis wird in mehr abgespeichert) mehr = E.HoleEingabe(Text); if (mehr) // Generierung eines Bestellpostens und Eingabe der notwendigen Informationen { class Bestellposten neuerbestp; neuerbestp.Neu((neuebestellung.HoleBestellpostenListe().Laenge()+1), zaeler_bnr); // generierung eines neuen Bestellposten // die laufende Nummer wird über die Anzahl der schon bestehenden Bestellposten der Bestellung errechnet neuebestellung.PostenAnhaengen(neuerbestp); // der Bestellposten wird and die Liste der Bestellposten der Bestellung angehängt }; } while (mehr); // die neue Bestellung wird in die Liste der Kundenbestellungen der Klasse Verwaltung aufgenommen kundenbestellungen.ElementHinzufuegen(neuebestellung); // Bestellung bearbeiten class BestellpostenListe postenliste; class Bestellposten bestp; class Produkt prod; postenliste = neuebestellung.HoleBestellpostenListe(); postenliste.SetzeAufAnfang(); for (int i=1; i <= postenliste.Laenge(); i++) { bestp = postenliste.HoleInhalt(); // Zuweisung des aktuellen Listenelementes an bestp prod = SucheProdukt(bestp.HoleProduktNr()); // sucht das zugehörige Produkt // überprüfen, ob der Bestellposten ausgeliefert werden kann if (bestp.HoleMenge() <= prod.HoleAktuellenBestand()) // Bestellposten kann ausgeliefert werden { prod.AktuellenBestandKorregieren(-bestp.HoleMenge()); // korregiert den Lagerbestand liefer_kartei.ElementHinzufuegen(bestp); // weist den Bestllposten der Lieferkartei zu } else // Bestellposten kann NICHT ausgeliefert werden { prod.Vormerken(bestp.HoleMenge()); // Menge zur Nachbestellung vormerken warte_kartei.ElementHinzufuegen(bestp); // weist den Bestellposten der Wartekartei zu }; postenliste.NachfolgendesElement(); // setzt den Listenzeiger ein Element weiter }; }