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.
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".
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.");
}
}
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;
}
}
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;
}
}
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.
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