[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt

Es ist ungefähr anderthalb Monate her, seit ich als neuer Absolvent einen Job bei einem IT-Unternehmen bekam und zum ersten Mal in der Programmierausbildung mit Java in Kontakt kam. Ich sollte in der Lage sein, ein einfaches Programm zu erstellen, also habe ich versucht, ein Programm zum Verkauf von Kuchen in Java zu erstellen, indem ich mich auf die Vorlesungen und Übungen in der Schulung bezog und es in einem Artikel als Memorandum / Ausgabe / Satzschreibpraxis zusammenstellte habe gedacht. Es ist ein schlechtes Ergebnis, aber ich würde mich freuen, wenn Sie es sehen könnten. Ich werde gerne weinen, wenn Sie mir in den Kommentaren Ratschläge geben.

Vor dem Erstellen des Programms habe ich die Elemente zusammengefasst, die für den Betrieb einer Konditorei im Programm erforderlich sind. Die folgenden Faktoren wurden von der Konditorei als notwendig erachtet.

・ Informationen zum Kuchen Es ist erforderlich, ein Objekt zu erstellen, das den Namen, den Preis und das Inventar des Kuchens als Elemente enthält, und den Kunden über den Namen und den Preis des Kuchens zu informieren, das Inventar zu überprüfen und den Kaufpreis zu berechnen. ・ Hören Sie von Kunden über die Anzahl der Einkäufe Sie müssen in der Lage sein, die Anzahl der Einkäufe zu erfragen (einzugeben) und sie als Zahlen zu erkennen. Wenn es nicht als Nummer erkannt werden kann, muss der Kunde erneut gefragt werden. ・ Legen Sie neue Produkte ein oder entsorgen Sie das Inventar Wir verkaufen nicht immer den gleichen Kuchen, daher müssen wir in der Lage sein, Kuchentypen zu addieren und zu subtrahieren.

<Ich habe es tatsächlich gebaut>

Basierend auf den obigen drei Wir haben "Hauptmethodenklasse", "Kuchenobjektklasse", "Zahleneingabeklasse" und "Konstante Klasse wie feste Anweisung" erstellt. Ich habe openJDK ver12 für die Entwicklung und Eclipse für den Editor verwendet. Darüber hinaus gibt es als zusätzliche Bedingungen Einschränkungen wie "Die Gesamtzahl der Kuchen beträgt 20 pro Person" und "Das Geschäft wird fortgesetzt, bis der Vorrat ausverkauft ist".

Hauptsystem

MainSystem.java



package cake;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainSystem{
	public static void main(String[] args) throws IOException{

		System.out.println(Constant.MSG_ACT_BAR);

		//Erstellen Sie eine Liste der Kuchenformen
		List<Cake> cakes = new ArrayList<Cake>();

		//Objekterstellung
		Cake cake1 = new Cake("Thiramis",20,400);
		Cake cake2 = new Cake("Käsekuchen",40,300);
		Cake cake3 = new Cake("Erdbeertörtchen",10,500);

		//In der Liste sind derzeit 3 Arten von Kuchen gespeichert
		cakes.add(cake1);
		cakes.add(cake2);
		cakes.add(cake3);


		//Anzahl der Schleifen
		int loopNum =0;


		//Initialisieren Sie den gesamten Kuchenbestand(Wird für Schleifen verwendet)
		int sumStockCake =0;

		//Erstellen Sie einen Speicherort für die Anzahl der Kucheneinkäufe
		List<Integer> numBuyCake =new ArrayList<Integer>();

		//Lagerort der Entsorgungsmenge
		List<Integer> dustCake =new ArrayList<Integer>();

		System.out.println(Constant.MSG_ACT_BAR);
		System.out.println("\n\n");



		//Nicht vorrätig (sumStockCake=Ich werde bis zu 0 machen)
		do{

			//b1 limit ・ ・ Kauflimit b2 ・ ・ ・ Eingabefehler und Anzahl der nicht vorrätigen Schleifen aufzeichnen
			boolean b1 =true;
			boolean b2 =true;
			loopNum++;


			//Herzlich willkommen
			System.out.println(Constant.MSG_OPENING_01+"\n");
			System.out.println(Constant.MSG_MENU_BAR);
			System.out.println(Constant.MSG_OPENING_02);

			//Rufen Sie Cake in der Kuchenliste für ein paar Minuten auf Lager an
			for(int i=0; i<cakes.size(); i++){
				System.out.println(cakes.get(i).getName() +"\t\t"+cakes.get(i).getPrice()+"Kreis\t\t Lager"+cakes.get(i).getStock()+"Stücke");
			}

			System.out.println(Constant.MSG_MENU_BAR);
			System.out.println("\n\n");


			//Gesamte Kucheneinkäufe zurücksetzen
			int sumBuyCake;

			//b1 ... Kauflimit-Fehlerschleife
			do{

				sumBuyCake =0;

				for(int i=0; i<cakes.size(); i++){
					//Geben Sie die Anzahl der Kuchen ein, b2 ... Fehlerschleife mit nicht positiven ganzen Zahlen
					do{
						System.out.print(cakes.get(i).getName() + Constant.MSG_INPUT_ICON);
						String str = InputMany.cakeNum();
						try{

							//Löschen, wenn die aktuelle Einkaufsmengenliste bereits einen Wert enthält
							if(numBuyCake.size()== (i+1)){
								numBuyCake.remove(i);
							}

							//Konvertieren Sie die Anzahl der Käufe in den Typ Int und fügen Sie sie der Liste hinzu, wenn sie nicht konvertiert werden kann
							numBuyCake.add(Integer.parseInt(str));

							//Schleife, wenn die Anzahl der Käufe negativ ist
							if(numBuyCake.get(i)<0){
								System.out.println(Constant.MSG_ERROR_MINUS);
								b2 = true;

							//Anzahl der Einkäufe> Schleife, wenn auf Lager
							}else if(numBuyCake.get(i) > cakes.get(i).getStock() ){

								System.out.println(Constant.MSG_ERROR_OVERSTOCK1);
								System.out.println(cakes.get(i).getName()+Constant.MSG_ERROR_OVERSTOCK2);
								System.out.println(cakes.get(i).getName()+"Ist auf Lager"+cakes.get(i).getStock()+"Es ist ein Individuum.");
								b2 = true;

							}else{
								b2 = false;
							}
						}
						catch(NumberFormatException e){
							System.out.println(Constant.MSG_ERROR_INPUT);
							b2 = true;
						}
					}while(b2);
				}

				//Berechnen Sie die Gesamtzahl der gekauften Kuchen
				for(int i=0; i<cakes.size(); i++){
					sumBuyCake +=numBuyCake.get(i);
				}


				//Insgesamt 20 Kuchen oder weniger
				if(sumBuyCake >20){
					System.out.println(Constant.MSG_ERROR_OVER20);
					b1 =true;

					//Einkaufsliste zurücksetzen
					numBuyCake.clear();

				//Etwas kaufen
				}else if(sumBuyCake ==0){
					System.out.println(Constant.MSG_ERROR_UNDER1);
					b1 =true;
					numBuyCake.clear();


				//Reduzieren Sie den Lagerbestand, wenn Sie sicher einkaufen können
				}else{
					b1 =false;
					for(int i=0; i<cakes.size(); i++){
						cakes.get(i).decStock(numBuyCake.get(i));
					}
				}
				System.out.println("\n\n");

			}while(b1);

			//Zur Berechnung des Gesamtkaufpreises
			int priceSumCake =0;

			for(int i=0; i<cakes.size(); i++){

				//Gesamtmenge Verarbeitung Kuchenmenge*Kaufnummer
				priceSumCake += (cakes.get(i).getPrice() * numBuyCake.get(i));

				//Kaufabrechnung fertig
				if(numBuyCake.get(i) != 0){
					System.out.println(cakes.get(i).getName()+"Zu"+numBuyCake.get(i)+"Stücke,");
				}
			}
			System.out.println("gesamt"+sumBuyCake+"In Bezug auf Punkte");
			System.out.println(priceSumCake + "Es ist ein Yen.");

			System.out.println(Constant.MSG_THANKYOU);

			//Löschen der Anzahl der Kucheneinkäufe für jeden Kunden
			numBuyCake.clear();


			//Schuhzusatz
			if(loopNum ==2){

				System.out.println("\n\n"+Constant.MSG_ACT_BAR+"\n\n");


				Cake cake4 = new Cake("Windbeutel",30,150);
				cakes.add(cake4);

				System.out.println("\n\n"+Constant.MSG_ACT_BAR+"\n\n");


			//Lagerentsorgung
			}else if(loopNum %4 ==0){
				System.out.println("\n\n"+Constant.MSG_ACT_BAR+"\n\n");
				System.out.println(Constant.MSG_DUST_SHOOT);

				int i =0;
				int j =1;

				//ich th und ich+Vergleichen Sie jth Inventar, ich+i wenn j größer ist+Bringen Sie das j-te zur i-Seite und beenden Sie die Schleife
				while(i+j<cakes.size()){

					System.out.print(cakes.get(i).getName()+"Wann"+cakes.get(i+j).getName()+"Ist mehr auf Lager");

					if(cakes.get(i).getStock() < cakes.get(i+j).getStock()){
						System.out.println(cakes.get(i+j).getName()+"ist.");
						i+=j;
						j=1;
					}else{
						System.out.println(cakes.get(i).getName()+"ist.");
						j++;
					}
				}
				System.out.println("Verwerfen"+cakes.get(i).getName()+"ist. Auf Lager"+cakes.get(i).getStock()+"Es war eine Einzelperson.");
				System.out.println("Entsorgungsverlust:"+(cakes.get(i).getStock() * cakes.get(i).getPrice())+"Kreis");
				System.out.println("\n\n"+Constant.MSG_ACT_BAR+"\n\n");
				//Verwerfen hinzufügen, Zielinventar auf 0 reduzieren
				dustCake.add(cakes.get(i).getStock() * cakes.get(i).getPrice());
				cakes.get(i).decStock(cakes.get(i).getStock());
			}

			//Wenn Sie ein Produkt mit 0 Beständen aus dem Menü löschen, verringert sich die Anzahl der Elemente, sodass ich auch richtig abnehme
			for(int i=0; i<cakes.size(); i++){
				if(cakes.get(i).getStock() == 0){
					cakes.remove(i);
					i--;
				}
			}

			//Die Schleife endet, wenn der gesamte Kuchenvorrat 0 erreicht
			sumStockCake =0;
			for(int i=0; i<cakes.size(); i++){
				sumStockCake +=cakes.get(i).getStock();
			}


		//Ende der Schleife, wenn nicht vorrätig
		}while(sumStockCake > 0);

		int sumDust =0;

		for(int i=0; i<dustCake.size(); i++){
			sumDust +=dustCake.get(i);
		}
		System.out.println(Constant.MSG_CLOSE_SHOP);
		System.out.println(Constant.MSG_DUST_SUM+sumDust+"Es ist ein Kreis.");
	}
}

Unterricht um Kuchenobjekte

Cake.java



package cake;
public class Cake{

	//Kuchenname, Lager, Preis
	private String name;
	private int stock;
	private int price;


	private Cake(){
		System.out.println(Constant.MSG_MAKE_CAKE);
	}
	//Erhalten Sie Name, Bestand, Preis und Objekt erstellen
	public Cake(String name, int stock, int price){
		this();
		this.name =name;
		this.stock =stock;
		this.price =price;
		System.out.println(this.name +Constant.MSG_ADD_CAKE);
	}

	//Gibt den Namen des Kuchens zurück
	public String getName(){
		return name;
	}

	//Gibt Inventarinformationen zurück
	public int getStock(){
		return stock;
	}

	//Geben Sie den Preis des Kuchens zurück
	public int getPrice(){
		return price;
	}

	//Kaufentscheidung
	public void decStock(int c){
		this.stock -=c;
	}
}

Klasse um Eingabe

InputMany.java



package cake;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class InputMany{

	public static String cakeNum() throws IOException{

		BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		return str;
	}

}

feste Phrase

Constant.java



package cake;
public class Constant{

	public static final String MSG_MAKE_CAKE ="Erstellt ein Kuchenobjekt.";
	public static final String MSG_ADD_CAKE ="Wurde dem Produkt hinzugefügt.";

	public static final String MSG_OPENING_01 ="Herzlich willkommen!\n Willkommen in der Konditorei "Pastell".";
	public static final String MSG_OPENING_02 ="Heutiges Menü:";

	public static final String MSG_MENU_BAR ="********************************";
	public static final String MSG_INPUT_ICON ="Bitte geben Sie die zu kaufende Menge ein.\n>";
	public static final String MSG_ERROR_INPUT = "Bitte gebe eine Nummer ein.";

	public static final String MSG_ERROR_OVER20 = "Der Gesamtkauf beträgt über 20 Stück.\n Die Summe beträgt bis zu 20.\n";
	public static final String MSG_ERROR_UNDER1 ="Bitte kaufen Sie einen oder mehrere Artikel.";
	public static final String MSG_ERROR_OVERSTOCK1 = "Es tut mir Leid.";
	public static final String MSG_THANKYOU ="Danke für Ihren Einkauf.\n\n\n";
	public static final String MSG_ERROR_OVERSTOCK2 = "Ist nicht vorrätig.";
	public static final String MSG_ERROR_MINUS = "Geben Sie keinen negativen Wert ein.";
	public static final String MSG_CLOSE_SHOP = "Das heutige Geschäft ist geschlossen.\n Vielen Dank für Ihren Besuch.";


	public static final String MSG_ACT_BAR ="---------------------------------------------------";
	public static final String MSG_DUST_SHOOT ="Wir werden nicht verkaufte Lagerbestände veräußern.";
	public static final String MSG_DUST_SUM ="Die heutige Gesamtentsorgungsmenge beträgt";
}

Meine persönliche beste Wette ist es, eine Liste zum Speichern von Kuchenobjekten zu verwenden.

MainSystem_v1_2.java



List<Cake> cakes = new ArrayList<Cake>();
Cake cake1 = new Cake("Thiramis",20,400);
cakes.add(cake1);

Durch die Verwendung einer Liste mit einer variablen Anzahl von zu speichernden Elementen ist es einfach, sie mit add hinzuzufügen und mit remove zu entsorgen. Wenn Sie ein Array verwenden und die for-Syntax verwenden, um die Elemente von Cake abzurufen, werden auch die Elemente gelesen, die nicht mehr auf Lager sind.

<Über Verbesserungspunkte>

Ist es möglich, den Windbeutel, der in der zweiten Schleife plötzlich unterbrochen wurde, etwas schlauer zu beschreiben ...? Ich denke, es ist möglich, ein Programm zum Wiederauffüllen hinzuzufügen und es so zu ändern, dass Kuchen aus der Datenbank generiert werden können.

Recommended Posts

[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich habe ein Programm zur Beurteilung von Primzahlen in Java geschrieben
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Ich habe ein Primfaktorisierungsprogramm in Java geschrieben
Ich habe ein Roulette in Java gemacht.
Ich habe ein einfaches Berechnungsproblemspiel in Java gemacht
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe ein PDF mit Java erstellt.
Ich habe eine shopify App @java erstellt
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich habe eine Anmerkung in Java gemacht.
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe eine Docker-Datei erstellt, um Glassfish 5 mit Oracle Java zu starten
Wie man Arrays mit Java stapelweise initialisiert, wusste ich als Anfänger nicht
Ich habe versucht, ein Programm in Java zu erstellen, das das Problem des Handlungsreisenden mit einem genetischen Algorithmus löst
Erstellt eine Methode zum Anfordern von Premium Friday (Java 8-Version)
[Einführung in Java] So schreiben Sie ein Java-Programm
Ich habe ein neues Java-Bereitstellungstool erstellt
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Ich habe ein Diff-Tool für Java-Dateien erstellt
Zwei Möglichkeiten, einen Thread in Java + @ zu starten
Ich möchte eine E-Mail in Java senden.
So zeigen Sie eine Webseite in Java an
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Versuchen Sie, ein Bulletin Board in Java zu erstellen
Ich habe einen Docker-Container erstellt, um Maven auszuführen
Ich habe eine Ruby-Erweiterungsbibliothek in C erstellt
rsync4j - Ich möchte rsync in Java berühren.
Ich habe versucht, neunundneunzig in Java auszugeben
Ich habe versucht, Alexa-Fähigkeiten mit Java zu erstellen
Ich habe versucht, den Block mit Java zu brechen (1)
Sogar in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (Javassist zweite Abkochung)
[Azure] Ich habe versucht, eine Java-App für die Erstellung von kostenlosen Web-Apps zu erstellen. [Anfänger]
Ich habe ein Beispiel erstellt, wie ein Delegat in Swift UI 2.0 mit MapKit geschrieben wird
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 (Black Magic) ausgeben.
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
Ich möchte so etwas wie "cls" in Java machen
Ich habe eine Methode entwickelt, um nach Premium Friday zu fragen
Ich möchte ES2015 auch in Java verwenden! → (´ ・ ω ・ `)
# 2 [Anmerkung] Ich habe versucht, neunundneunzig mit Java zu berechnen.
Ich möchte ein kleines Symbol in Rails verwenden
So erstellen Sie einen Daten-URI (base64) in Java
So starten Sie einen anderen Befehl in einem Ruby-Programm
Ich habe im Frühjahr einen Restful-Server und -Client erstellt.
Ich möchte eine Funktion in der Rails Console definieren
Was ich beim Erstellen eines Servers in Java gelernt habe
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
Ich habe einen Wrapper erstellt, der KNP von Java aus aufruft
So konvertieren Sie eine Datei in ein Byte-Array in Java
Versuchen Sie, ein eingeschränktes FizzBuzz-Problem in Java zu lösen
Ich möchte in RSpec auf einen GoogleMap-Pin klicken