[Débutant] J'ai créé un programme pour vendre des gâteaux en Java

Cela fait environ un mois et demi que j'ai trouvé un emploi dans une entreprise informatique en tant que nouveau diplômé et que je suis entré en contact avec Java pour la formation en programmation. Je devrais être capable de créer un programme simple dans une certaine mesure, alors j'ai essayé de créer un programme pour vendre des gâteaux en Java en me référant aux conférences et aux exercices de la formation, et je l'ai rassemblé dans un article en tant que mémorandum, sortie et pratique de l'écriture de phrases. pensée. C'est un mauvais résultat, mais je serais heureux si vous pouviez le voir. Je serai heureux de pleurer si vous me donnez des conseils dans les commentaires.

<Définition de l'exigence>

Avant de créer le programme, j'ai résumé les éléments nécessaires pour faire fonctionner une pâtisserie sur le programme. Les facteurs suivants ont été jugés nécessaires par la pâtisserie.

・ Informations sur le gâteau Il est nécessaire de créer un objet avec le nom, le prix et l'inventaire du gâteau comme éléments, et d'informer le client du nom et du prix du gâteau, de vérifier l'inventaire et de calculer le prix d'achat. ・ Écoutez les clients sur le nombre d'achats Vous devez pouvoir demander (saisir) le nombre d'achats et le reconnaître comme un nombre. S'il ne peut pas être reconnu comme un numéro, il est nécessaire de le demander à nouveau au client. ・ Mettez de nouveaux produits ou disposez de l'inventaire Nous ne vendons pas toujours le même gâteau, nous devons donc pouvoir ajouter et soustraire des types de gâteau.

<Je l'ai en fait construit>

Basé sur les trois ci-dessus Nous avons créé "Main method class", "Cake object class", "Number input class" et "Constant class such as fixed statement". J'ai utilisé openJDK ver12 pour le développement et eclipse pour l'éditeur. De plus, comme conditions supplémentaires, il existe des restrictions telles que «le nombre total de gâteaux est de 20 par personne» et «l'entreprise continuera jusqu'à ce que le stock soit épuisé».

Système principal

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);

		//Créer une liste de moules à gâteaux
		List<Cake> cakes = new ArrayList<Cake>();

		//Création d'objets
		Cake cake1 = new Cake("Thiramis",20,400);
		Cake cake2 = new Cake("cheesecake",40,300);
		Cake cake3 = new Cake("tarte aux fraises",10,500);

		//Stockés dans la liste, il existe actuellement 3 types de gâteaux
		cakes.add(cake1);
		cakes.add(cake2);
		cakes.add(cake3);


		//Nombre de boucles
		int loopNum =0;


		//Initialiser l'inventaire total des gâteaux(Utilisé pour les boucles)
		int sumStockCake =0;

		//Créer un emplacement de stockage pour le nombre d'achats de gâteaux
		List<Integer> numBuyCake =new ArrayList<Integer>();

		//Lieu de stockage de la quantité d'élimination
		List<Integer> dustCake =new ArrayList<Integer>();

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



		//Rupture de stock (sumStockCake=Je vais faire jusqu'à 0)
		do{

			//b1 ・ ・ ・ Limite d'achat b2 ・ ・ ・ Enregistrer l'erreur d'entrée et le décompte des boucles de rupture
			boolean b1 =true;
			boolean b2 =true;
			loopNum++;


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

			//Appelez Cake dans la liste des gâteaux pendant quelques minutes en stock
			for(int i=0; i<cakes.size(); i++){
				System.out.println(cakes.get(i).getName() +"\t\t"+cakes.get(i).getPrice()+"Cercle\t\t stock"+cakes.get(i).getStock()+"Pièces");
			}

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


			//Réinitialiser le total des achats de gâteaux
			int sumBuyCake;

			//b1 ... Boucle d'erreur de limite d'achat
			do{

				sumBuyCake =0;

				for(int i=0; i<cakes.size(); i++){
					//Entrez le nombre de gâteaux, b2 ... Boucle d'erreur avec autre chose qu'un entier positif
					do{
						System.out.print(cakes.get(i).getName() + Constant.MSG_INPUT_ICON);
						String str = InputMany.cakeNum();
						try{

							//Supprimer si la liste de quantité d'achat actuelle contient déjà une valeur
							if(numBuyCake.size()== (i+1)){
								numBuyCake.remove(i);
							}

							//Convertissez le nombre d'achats en type Int et ajoutez-le à List, s'il ne peut pas être converti, catch and loop
							numBuyCake.add(Integer.parseInt(str));

							//Boucle si le nombre d'achats est négatif
							if(numBuyCake.get(i)<0){
								System.out.println(Constant.MSG_ERROR_MINUS);
								b2 = true;

							//Nombre d'achats> Boucle si en stock
							}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()+"Est en stock"+cakes.get(i).getStock()+"C'est un individu.");
								b2 = true;

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

				//Calculez le nombre total de gâteaux achetés
				for(int i=0; i<cakes.size(); i++){
					sumBuyCake +=numBuyCake.get(i);
				}


				//20 gâteaux ou moins au total
				if(sumBuyCake >20){
					System.out.println(Constant.MSG_ERROR_OVER20);
					b1 =true;

					//Réinitialiser la liste d'achat
					numBuyCake.clear();

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


				//Réduisez vos stocks si vous pouvez acheter en toute sécurité
				}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);

			//Pour calculer le prix d'achat total
			int priceSumCake =0;

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

				//Quantité totale de traitement Quantité de gâteau*Numéro d'achat
				priceSumCake += (cakes.get(i).getPrice() * numBuyCake.get(i));

				//Relevé d'achat prêt
				if(numBuyCake.get(i) != 0){
					System.out.println(cakes.get(i).getName()+"À"+numBuyCake.get(i)+"Pièces,");
				}
			}
			System.out.println("total"+sumBuyCake+"En termes de points");
			System.out.println(priceSumCake + "C'est un yen.");

			System.out.println(Constant.MSG_THANKYOU);

			//Effacement du nombre d'achats de gâteaux pour chaque client
			numBuyCake.clear();


			//Ajout de chaussures
			if(loopNum ==2){

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


				Cake cake4 = new Cake("chou à la crème",30,150);
				cakes.add(cake4);

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


			//Élimination des stocks
			}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;

				//i th et i+Comparez jth inventaire, i+i si j est plus grand+Amenez le jth du côté i et terminez la boucle
				while(i+j<cakes.size()){

					System.out.print(cakes.get(i).getName()+"Quand"+cakes.get(i+j).getName()+"Est plus en stock");

					if(cakes.get(i).getStock() < cakes.get(i+j).getStock()){
						System.out.println(cakes.get(i+j).getName()+"est.");
						i+=j;
						j=1;
					}else{
						System.out.println(cakes.get(i).getName()+"est.");
						j++;
					}
				}
				System.out.println("De se défaire"+cakes.get(i).getName()+"est. En stock"+cakes.get(i).getStock()+"C'était un individu.");
				System.out.println("Perte due à l'élimination:"+(cakes.get(i).getStock() * cakes.get(i).getPrice())+"Cercle");
				System.out.println("\n\n"+Constant.MSG_ACT_BAR+"\n\n");
				//Ajouter une suppression, réduire l'inventaire cible à 0
				dustCake.add(cakes.get(i).getStock() * cakes.get(i).getPrice());
				cakes.get(i).decStock(cakes.get(i).getStock());
			}

			//Si vous supprimez un produit avec 0 stock du menu, le nombre d'éléments diminuera, donc je vais également diminuer correctement
			for(int i=0; i<cakes.size(); i++){
				if(cakes.get(i).getStock() == 0){
					cakes.remove(i);
					i--;
				}
			}

			//La boucle se termine lorsque le stock total de gâteau atteint 0
			sumStockCake =0;
			for(int i=0; i<cakes.size(); i++){
				sumStockCake +=cakes.get(i).getStock();
			}


		//Fin de boucle en cas de rupture de stock
		}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+"C'est un cercle.");
	}
}

Classes autour des objets de gâteau

Cake.java



package cake;
public class Cake{

	//Nom du gâteau, stock, prix
	private String name;
	private int stock;
	private int price;


	private Cake(){
		System.out.println(Constant.MSG_MAKE_CAKE);
	}
	//Recevoir le nom, le stock, le prix et créer un objet
	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);
	}

	//Renvoie le nom du gâteau
	public String getName(){
		return name;
	}

	//Renvoie les informations d'inventaire
	public int getStock(){
		return stock;
	}

	//Rendre le prix du gâteau
	public int getPrice(){
		return price;
	}

	//Décision d'achat
	public void decStock(int c){
		this.stock -=c;
	}
}

Classe autour de l'entrée

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;
	}

}

phrase fixe

Constant.java



package cake;
public class Constant{

	public static final String MSG_MAKE_CAKE ="Création d'un objet Cake.";
	public static final String MSG_ADD_CAKE ="A été ajouté au produit.";

	public static final String MSG_OPENING_01 ="Bienvenue!\n Bienvenue dans la pâtisserie "Pastel".";
	public static final String MSG_OPENING_02 ="Menu du jour:";

	public static final String MSG_MENU_BAR ="********************************";
	public static final String MSG_INPUT_ICON ="Veuillez saisir la quantité à acheter.\n>";
	public static final String MSG_ERROR_INPUT = "Veuillez saisir un nombre.";

	public static final String MSG_ERROR_OVER20 = "L'achat total est de plus de 20 pièces.\n Le total est de 20.\n";
	public static final String MSG_ERROR_UNDER1 ="Veuillez acheter un ou plusieurs articles.";
	public static final String MSG_ERROR_OVERSTOCK1 = "Je suis désolé.";
	public static final String MSG_THANKYOU ="Merci pour votre achat.\n\n\n";
	public static final String MSG_ERROR_OVERSTOCK2 = "Est en rupture de stock.";
	public static final String MSG_ERROR_MINUS = "N'entrez pas de valeur négative.";
	public static final String MSG_CLOSE_SHOP = "L'entreprise d'aujourd'hui est fermée.\n Merci de nous rendre visite.";


	public static final String MSG_ACT_BAR ="---------------------------------------------------";
	public static final String MSG_DUST_SHOOT ="Nous disposerons du stock invendu.";
	public static final String MSG_DUST_SUM ="La quantité totale d'élimination d'aujourd'hui est";
}

Mon meilleur pari personnel est d'utiliser une liste pour stocker les objets Cake.

MainSystem_v1_2.java



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

En utilisant une liste avec un nombre variable d'éléments à stocker, il est facile d'ajouter avec add et de supprimer avec remove. Si vous utilisez un tableau, lorsque vous utilisez la syntaxe for pour obtenir les éléments de Cake, même les éléments qui ne sont plus en stock seront lus.

<À propos des points d'amélioration>

Est-il possible de décrire le chou à la crème qui s'est soudainement interrompu dans la deuxième boucle un peu plus intelligemment ...? Je pense qu'il est possible d'ajouter un programme de réapprovisionnement et de le modifier pour que les gâteaux puissent être générés à partir de la base de données.

Recommended Posts

[Débutant] J'ai créé un programme pour vendre des gâteaux en Java
J'ai créé un programme de jugement des nombres premiers en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai écrit un programme de jugement des nombres premiers en Java
J'ai créé un jeu Janken en Java (CLI)
J'ai écrit un programme de factorisation prime en Java
J'ai fait une roulette à Java.
J'ai fait un jeu de problèmes de calcul simple en Java
J'ai essayé de créer une compétence Clova en Java
J'ai essayé de créer une fonction de connexion avec Java
J'ai créé un PDF avec Java.
J'ai créé une application shopify @java
Je voulais juste créer une propriété réactive en Java
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai fait une annotation en Java.
J'ai créé un client RESAS-API en Java
J'ai créé un Dockerfile pour démarrer Glassfish 5 en utilisant Oracle Java
Comment initialiser par lots des tableaux avec Java que je ne savais pas quand j'étais débutant
J'ai essayé de créer un programme en Java qui résout le problème du voyageur de commerce avec un algorithme génétique
Création d'une méthode pour demander Premium Friday (version Java 8)
[Introduction à Java] Comment écrire un programme Java
J'ai créé un nouvel outil de déploiement Java
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
Je veux ForEach un tableau avec une expression Lambda en Java
J'ai créé un outil Diff pour les fichiers Java
Deux façons de démarrer un thread en Java + @
Je souhaite envoyer un e-mail en Java.
Comment afficher une page Web en Java
Code pour échapper aux chaînes JSON en Java
Je l'ai fait en Java pour toujours rendre (a == 1 && a == 2 && a == 3) vrai
Essayez de créer un babillard en Java
J'ai créé un conteneur Docker pour exécuter Maven
J'ai créé une bibliothèque d'extension Ruby en C
rsync4j --Je veux toucher rsync en Java.
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
J'ai essayé de créer une compétence Alexa avec Java
J'ai essayé de casser le bloc avec java (1)
Même en Java, je veux sortir true avec un == 1 && a == 2 && a == 3 (deuxième décoction Javassist)
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]
J'ai fait un exemple de la façon d'écrire un délégué dans Swift UI 2.0 à l'aide de MapKit
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (Black Magic)
Comment créer un environnement Java en seulement 3 secondes
Je veux faire quelque chose comme "cls" en Java
J'ai fait une méthode pour demander la prime vendredi
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
# 2 [Note] J'ai essayé de calculer quatre-vingt-dix-neuf avec Java.
Je veux utiliser une petite icône dans Rails
Comment créer un URI de données (base64) en Java
Comment lancer une autre commande dans un programme Ruby
J'ai créé un serveur et un client Restful au printemps.
Je souhaite définir une fonction dans la console Rails
Ce que j'ai appris lors de la création d'un serveur en Java
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
J'ai créé un Wrapper qui appelle KNP depuis Java
Comment convertir un fichier en tableau d'octets en Java
Essayez de résoudre un problème FizzBuzz restreint en Java
Je veux cliquer sur une broche GoogleMap dans RSpec