IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

mini projet ma classe clientLocal qui est la classe test ne fonctionne pas correctement besoin d'aide


Sujet :

Java

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut mini projet ma classe clientLocal qui est la classe test ne fonctionne pas correctement besoin d'aide
    Bonjour,

    L’objectif de cet exercice est de créer une application java qui simule un distributeur de boissons.
    1. créer deux classes principales ClientLocal et DistribLocal qui vont agir respectivement comme client et comme serveur (en local, donc ”communication” par appel direct de méthodes).
    2. Créer une classe Boisson, représentant une boisson, munie des trois champs String name, le nom de la boisson, int prix, le prix de la boisson et int nbStock, le nombre d’unités restantes en stock.
    3. Le stock du distributeur est représenté par un tableau contenant la liste des boissons à vendre par le distributeur.
    En plus de ce tableau, nommé Boissons, la classe DistribLocal a quatre autres champs :
    (a) int solde, représentant le montant résultant des ventes depuis le dernier chargement.
    (b) int montant, représentant le montant courant introduit par le client.
    (c) String clef, représentant un mot de passe introduit par un employé afin de vider la caisse du distributeur et remplir ses compartiments.
    (d) boolean occupe, indiquant si une boissons est en cours de préparation ou non.
    4. Créer une sous-classe DistException qui hérite de la classe Exception et qui ne définit qu’un seul constructeur (et aucune autre méthode) DistException(String) qui appelle le constructeur de la classe mère. Cette exception servira pour des cas tels que ”Boisson non disponible” ou ”Montant introduit insuffisant”.
    5. Prévoir les opérations suivantes comme méthodes de DistribLocal :
    • public static int DeposerPiece(int somme) throws DistException :
      L’unique argument de cette méthode représenté la valeur de la pièce introduite par le client. La méthode teste si une vente est en cours ou que le montant cumule dépasse un seuil prédéfini, auquel cas elle lève une exception de type DistException et retourne la somme introduite. Dans le cas contraire, la fonction incrémente le montant introduit pour l’achat en cours.
    • public int select(String name) throws DistException :
      Si le produit de nom name n’est pas disponible (en le cherchant dans Boissons et en testant le nombre d’unités restantes) ou si le montant introduit est inferieur à son prix, la méthode génère une exception de type DistException. Sinon, elle prépare la boisson demandée (simulation avec un écoulement de temps), met à jour les informations concernant la quantité en stock et le solde du distributeur et renvoie la monnaie restante (s’il y en a).
    • public int annuler(String name) :
      Elle annule l’achat en cours, s’il y en a, et retourne la monnaie introduite par le client.
    • public int charger(String clef, int qte) throws DistException : Permet à un employé de récupérer le solde du distributeur et de charger tous ses compartiments. Dans le cas où l’argument donné ne correspond pas à la clef du distributeur, la méthode lève une exception de type DistException. Nous supposons que le nombre maximum d’unités est le même pour tous les types de boissons du distributeur et vaut qte.

    – La méthode main(...) se trouvera dans ClientLocal et proposera à l’utilisateur un menu textuel afin qu’il puisse acheter une boisson. Les entrées seront effectuées avec des appels à readLine() sur une référence.

    DistribLocal.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    package theme3;
     
    import java.util.Scanner;
    /*import java.util.Timer;
    import java.util.TimerTask;
    */
    public class DistribLocal {
     
    	private static int solde;
    	// représente le montant résultant des ventes depuis le dernier chargement
     
    	private static int montant;
    	// représente le montant courant introduit par le client
     
    	private Scanner sc = new Scanner(System.in);
    	/* repréentente la variable uttilisée pour recupérer les données entrées par
    	 * l'employé dans ce contexte
    	 */
     
    	private String clef;
    	/*
    	 * représente un mot de passe introduit par un employé afin de vider la
    	 * caisse du distributeur et remplir ses compartiments
    	 */
     
    	private static boolean occupe;
    	// indique si la boisson est en cours de préparation ou nom
     
    	// représente la somme d'argent maximale qu'un client puisse entrer
     
    	private static Boisson[] Boissons;
     
    	public DistribLocal(int solde, String clef, boolean occupe,Boisson[] Boissons, int montant) {
    		super();
    		DistribLocal.solde = solde;
    		this.clef = clef;
    		DistribLocal.montant=montant;
    		DistribLocal.occupe = false;
    		DistribLocal.Boissons = Boissons;
    	}
     
    	public static int getSolde() {
    		return solde;
    	}
     
    	public static void setSolde(int solde) {
    		DistribLocal.solde = solde;
    	}
     
    	public static int getMontant() {
    		return montant;
    	}
     
    	public static void setMontant(int montant) {
    		DistribLocal.montant = montant;
    	}
     
    	public String getClef() {
    		return clef;
    	}
     
    	public void setClef(String clef) {
    		this.clef = clef;
    	}
     
    	public boolean getOccupe() {
    		return occupe;
    	}
     
    	public static void setOccupe(boolean occupe) {
    		DistribLocal.occupe = false;
    	}
     
     
     
    	public static Boisson[] getBoissons() {
    		return Boissons;
    	}
    	public static void setBoissons(Boisson[] Boissons) {
    		DistribLocal.Boissons = Boissons;
    	}
     
     
     
    	public static int DeposerPiece(int montant) throws DistException {
    		int reste=0;
    		if (occupe == true) {
    			throw new DistException(
    					"veillez attendre il y'a deja une vente en cours");
    		}
     
    		for (int i = 0; i < Boissons.length;){
     
    		if (montant > getSolde()+Boissons[i].getPrix()) {
    			throw new DistException("somme introduite trop grande");
    		                                                } 
    		else {
    			 setOccupe(true);
    			 Boissons[i].setNbStock(Boissons[i].getNbStock()-1);
    			 reste = montant - Boissons[i].getPrix();
    			 setSolde(getSolde()+Boissons[i].getPrix());
    			   }
    		}
    		return reste;
    	}
    	/*
    	public void DistException(int nbStock) {
    		if (nbStock == 0) {
    			System.out.println("Cette boisson n'est plus disponible en stock");
    		}
    	}*/
     
    	public int select(String name) throws DistException, InterruptedException {
    		/*Boisson boisson = null;*/
    		int i;
    		for (i = 0; i < Boissons.length;) {
    		  if (Boissons[i].getNbStock() <= 0 || montant<Boissons[i].getPrix()) {
    			throw new DistException(
    					"La boisson demandée n'est pas disponible pour "
    				  + "le moment; il est également possible que " +
    					"la somme introduite soit insuffisante");
     
    			} else {
    				    setOccupe(true);
    					Thread.sleep(2000);
    					Boissons[i].setNbStock(Boissons[i].getNbStock() - 1);
    					setSolde(getSolde()+Boissons[i].getPrix());
     
    			}
    			}
     
    		return montant - Boissons[i].getPrix();
     
    		/*
    		if (boisson == null) {
    			return 0;
    		}
    		for (int i = 0; i < Boissons.length; i++) {
    			if (Boissons[i].getName().equals(name)) {
     
    			}
    		}
    		*/
     
    	}
     
    	public int annuler(String name) {
    		setOccupe(false);
    		return montant;
    	}
     
    	public int charger(String clef, int qte) throws DistException {
    		System.out.println("entrez la clef du distributeur");
     
    		String clef_entrée = sc.next();
    		if (clef_entrée != getClef()) {
    			System.out.println("la clé entrée est eronnée");
    		}
     
    		return qte;
     
    	}
     
     
    }
    ClientLocal.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    package theme3;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    public class ClientLocal {
     
    	/**
             * @param args
             * @throws IOException 
             */
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
            String Avengers = null;
    		Boisson[] Boissons = new Boisson[4];
    		int montant = 0;
    		DistribLocal DistribTest = new DistribLocal(0, Avengers, false, Boissons, montant);
    		Boisson coca = new Boisson("coca",3000, 10);
    		Boisson fanta = new Boisson("fanta",2000, 10);
    		Boisson redlabell = new Boisson("redlabell",800, 10);
    		Boisson jackdanielle = new Boisson("jackdanielle",2000, 10);
     
     
     
    		Boissons[0]=coca;
    		Boissons[1]=fanta;
    		Boissons[2]=redlabell;
    		Boissons[3]=jackdanielle;
     
     
    		int choix;
    		BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
     
    		System.out.println("" +
    				"saisissez le numero de la boisson que vous voulez\n" +
    				"1.coca\n" +
    				"2.fanta\n" +
    				"3.redlabell\n" +
    				"4.jackdanielle\n");
     
    		choix=stdin.hashCode();
     
    		switch(choix){
    		case 1:
    		System.out.println("il coute"+coca.getPrix()+" et il " +
    				"en reste "+coca.getNbStock() );
    		System.out.println("veillez inserer la somme adequat" );
    		 DistribTest.setMontant(stdin.hashCode());
    		 try {
    				System.out.println("Patienter svp.......");
    				System.out.println("Votre reste est " +
    						"de " + DistribLocal.DeposerPiece(DistribLocal.getMontant())+" francs");
    			} catch (DistException e) {
    				e.printStackTrace();
    			}
    			try{
    			System.out.println("Votre reste est " +
    					"de " +DistribTest.select(coca.getName()) +" francs");
    			}catch(DistException e){
    				e.printStackTrace();	
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} 
     
    		break;
    		case 2:
    		System.out.println("il coute"+fanta.getPrix()+" et il " +
    				"en reste "+fanta.getNbStock() );
    		System.out.println("veillez inserer la somme adequat" );
    		DistribTest.setMontant(stdin.hashCode());
    		 try {
    				System.out.println("Patienter svp.......");
    				System.out.println("Votre reste est " +
    						"de " + DistribLocal.DeposerPiece(DistribLocal.getMontant())+" francs");
    			} catch (DistException e) {
    				e.printStackTrace();
    			}
    			try{
     
    			System.out.println("Votre reste est " +
    					"de " +DistribTest.select(fanta.getName()) +" francs");
    			}catch(DistException e){
    				e.printStackTrace();	
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} 
     
     
    		break;
    		case 3:
    		System.out.println("il coute"+redlabell.getPrix()+" et il " +
    				"en reste "+redlabell.getNbStock() );
    		System.out.println("veillez inserer la somme adequat" );
    		DistribTest.setMontant(stdin.hashCode());
    		 try {
    				System.out.println("Patienter svp.......");
    				System.out.println("Votre reste est " +
    						"de " + DistribLocal.DeposerPiece(DistribLocal.getMontant())+" francs");
    			} catch (DistException e) {
    				e.printStackTrace();
    			}
    			try{
     
    			System.out.println("Votre reste est " +
    					"de " +DistribTest.select(redlabell.getName()) +" francs");
    			}catch(DistException e){
    				e.printStackTrace();	
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} 
     
    		break;
    		case 4:
    		System.out.println("il coute"+jackdanielle.getPrix()+" et il " +
    				"en reste "+jackdanielle.getNbStock() );
    		System.out.println("veillez inserer la somme adequat" );
    		DistribTest.setMontant(stdin.hashCode());
    		 try {
    				System.out.println("Patienter svp.......");
    				System.out.println("Votre reste est " +
    						"de " + DistribLocal.DeposerPiece(DistribLocal.getMontant())+" francs");
    			} catch (DistException e) {
    				e.printStackTrace();
    			}
    			try{
     
    			System.out.println("Votre reste est " +
    					"de " +DistribTest.select(jackdanielle.getName()) +" francs");
    			}catch(DistException e){
    				e.printStackTrace();	
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} 
     
    		break;
    		default:
    			System.out.println("choix invalide" );
    		}
    		stdin.close();
     
     
    	}
     
     
    }
    DistException.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package theme3;
     
    @SuppressWarnings("serial")
    public class DistException extends Exception {
    	public DistException(String message){
    		 super(message);
    	}
     }
    Boisson.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package theme3;
     
    public class Boisson {
    	// nom de la boisson 
    private String name; 
     // price of the drink
    private int prix;
     //nombre d'unités restantes en stock
    private int nbStock;
     
     
    public Boisson(String name, int prix,int nbStock) {
    	super();
    	this.name = name;
    	this.prix = prix;
    	this.nbStock =nbStock;
    }
    public String getName() {
    	return name;
    }
    public void setName(String name) {
    	this.name = name;
    }
    public int getPrix() {
    	return prix;
    }
    public void setPrix(int prix) {
    	this.prix = prix;
    }
    public int getNbStock() {
    	return nbStock;
    }
    public void setNbStock(int nbStock) {
    	this.nbStock = nbStock;
    }
     
     
    public String toString() {
    	return "Boisson [name=" + name + ", prix=" + prix + ", nbStock=" + nbStock
    			+ "]";
    }
    }
    Merci.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    c'est chouette, mais je ne vois pas de question.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    si je peux me permettre quelques questions:
    - pourquoi tu peux changer le nom d'une boisson? Un coca peut devenir un JackDaniel?
    - comment tu envisages de changer le stock? que faire dans une situation réelle? imagine-tu un code de distributeur qui fasse d'abord getStock() et ensuite setStock()? est-ce que tu vois les problèmes que ça pose?
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  4. #4
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Bonjour,

    Je suis en train de réaliser l'exercice de mon côté, je constate qu'il y aurait de nombreuses modifications à apporter pour que cet exercice soit un temps soit peu logique.

    Rony

Discussions similaires

  1. [MVVM] Combobox - SelectedIndex qui est trouvé mais ne s'affiche pas
    Par dacid dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 26/10/2015, 14h17
  2. Réponses: 4
    Dernier message: 29/08/2009, 11h44
  3. Un test if qui ne fonctionne pas correctement
    Par Shinjuku dans le forum Langage
    Réponses: 6
    Dernier message: 26/02/2008, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo