0% ont trouvé ce document utile (0 vote)
125 vues8 pages

Gestion de pharmacie en Java OOP

La classe Pharmacie gère des clients et des médicaments à l'aide de tableaux. Les méthodes permettent les achats, l'approvisionnement, l'affichage des stocks et des crédits. Le programme est modulaire avec des classes pour les objets.

Transféré par

Marwane Mouttaqi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
125 vues8 pages

Gestion de pharmacie en Java OOP

La classe Pharmacie gère des clients et des médicaments à l'aide de tableaux. Les méthodes permettent les achats, l'approvisionnement, l'affichage des stocks et des crédits. Le programme est modulaire avec des classes pour les objets.

Transféré par

Marwane Mouttaqi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP

Écrivez un programme orienté objet qui permet de gérer une pharmacie. La classe principale débute
comme suit. Il s'agira de la compléter.

import java.util.Scanner;
class Pharmacie {
private static Scanner scanner = new Scanner(System.in);
public static void main (String args[]) {
Client[] clients = new Client[2];
Medicament[] medicaments = new Medicament[2];
clients[0] = new Client("Malfichu",0.0);
clients[1] = new Client("Palichon",0.0);
medicaments[0] = new Medicament("Aspiron", 20.40, 5);
medicaments[1] = new Medicament("Rhinoplexil",19.15, 5);
int choix;
do {
choix = menu();
switch (choix) {
case 1 :
achat(clients, medicaments);
break;
case 2 :
approvisionnement(medicaments);
break;
case 3 :
affichage(clients, medicaments);
break;
case 4:
quitter();
}
}
while (choix < 4);
}
// Les méthodes utilitaires
static int menu() {
int choix = 0;
System.out.println();
System.out.println();
System.out.println("1 : Achat de médicament");
System.out.println("2 : Approvisionnement en médicaments");
System.out.println("3 : Etats des stocks et des crédits");
System.out.println("4 : Quitter");
while ((choix != 1) && (choix != 2) && (choix != 3) && (choix != 4)) {
choix = scanner.nextInt();
}
return choix;
}
// Méthodes auxiliaires à compléter
}
// Autres classes à compléter

La pharmacie gère des clients et des médicaments. Un client est caractérisé par un nom et un crédit.
Le crédit représente la somme que ce client doit à la pharmacie. Le crédit peut être négatif si le client
a versé plus d'argent que le montant. Un médicament est caractérisé par un nom (de type String), un
prix (de type double) et un stock (de type int). Les méthodes à compléter auront les caractéristiques
suivantes:

affichage(..) permet d'afficher les clients et leurs crédits respectifs ainsi que les médicaments et leurs
stocks respectifs.

approvisionner(..) permet d'approvisionner le stock d'un médicament. Le nom du médicament à


approvisionner ainsi que la quantité à

ajouter au stock doivent être lus depuis le terminal. Lorsque le nom du médicament est introduit, il
faut vérifier qu'il s'agit bien d'un nom connu dans la liste des médicaments de la pharmacie. Le
programme doit boucler jusqu'à introduction d'un nom correct. Cette procédure de vérification sera
prise en charge par la méthode lireMedicament(..) décrite plus bas.

achat(..) permet de traiter un achat fait par un client. l'achat porte sur un médicament donné dans
une quantité donnée. Pour cette transaction le client paie un certain prix. Une opération d'achat aura
pour effet de déduire la quantité achetée du stock du médicaments correspondant et d'augmenter le
crédit du client (d'un montant équivalent au montant de l'achat moins la somme payée).

Les noms du client et du médicament doivent être lus depuis le terminal. Le programme doit boucler
jusqu'à introduction de noms connus aussi bien pour les clients que les médicament. Ces procédures
de vérification seront prises en charge par les méthodes lireClient et lireMedicament (voir plus bas).
La quantité achetée et le montant payé sont aussi lus depuis le terminal. Ils seront supposés corrects.

quitter(..) affiche le message ``programme terminé!''.

Vous définirez une méthode auxiliaire lireClient(..) prenant comme paramètre un tableau de clients.
Elle permettra de lire le nom d'un client depuis le terminal et de vérifier si ce client existe dans le
tableau des clients. Dans ce cas le client sera retourné. Cette méthode doit boucler jusqu'à ce qu'un
client soit trouvé. Elle sera utilisée par la méthode achat(..). Une méthode similaire,
lireMedicament(..) sera fournie pour les médicaments. Elle sera utilisée par les méthodes achat(..) et
approvisionnement(..).

Vous êtes libre de définir, en plus de ces méthodes, toutes celles que vous jugerez nécessaires.
Lors de la programmation, il vous est demandé de respecter scrupuleusement les indications
suivantes:

Votre programme doit être bien modularisé à la fois sous forme de méthodes auxiliaires de la
méthode main() et sous forme de classes pour les

objets du programme. En particulier: Chaque variable et méthode doit être déclarée dans la classe la
plus adaptée. Dans chaque classe liée à un objet, il faut utiliser le mot-clé private autant que
possible. En particulier, toutes les variables d'instances

seront privées. Votre programme doit montrer une utilisation judicieuse de tableaux aux endroits
adaptés.

la comparaison de deux chaines s1 et s2 se fera au moyen de la méthode java equals() (s1.equals(s2)


retourne true si s1 et s2

sont identiques).

Vous pouvez utiliser les méthodes scanner.nextInt(),

scanner.nextDouble() et scanner.nextLine().

Exemple d'exécution:

> java Pharmacie

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Nom du medicament?:

Aspiron

Donner la Quantité :

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

3
Affichage des stocks

Stock du médicament Aspiron :7

Stock du médicament Rhinoplexil :5

Affichage des crédits

Crédit du client Malfichu :0.0

Crédit du client Palichon :0.0

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Nom du client?:

Malfichu

Nom du medicament?:

Aspiron

quel est le montant du paiement?

30.0

quelle est la quantité achetée?

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Affichage des stocks

Stock du médicament Aspiron :4

Stock du médicament Rhinoplexil :5


Affichage des crédits

Crédit du client Malfichu :31.199999999999996

Crédit du client Palichon :0.0

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Nom du client?:

Palichon

Nom du medicament?:

Aspiron

quel est le montant du paiement?

quelle est la quantité achetée?

Achat Impossible. Quantité insuffisante

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Affichage des stocks

Stock du médicament Aspiron :4

Stock du médicament Rhinoplexil :5

Affichage des crédits

Crédit du client Malfichu :31.199999999999996


Crédit du client Palichon :0.0

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Nom du client?:

Palichon

Nom du medicament?:

Rhinoplexil

quel est le montant du paiement?

200

quelle est la quantité achetée?

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Affichage des stocks

Stock du médicament Aspiron :4

Stock du médicament Rhinoplexil :0

Affichage des crédits

Crédit du client Malfichu :31.199999999999996

Crédit du client Palichon :-104.25

1 : Achat de médicament

2 : Approvisionnement en médicaments
3 : Etats des stocks et des crédits

4 : Quitter

Nom du client?:

Febril

Client inconnu. Veuilliez recommencer

Malfichu

Nom du medicament?:

Placebo

Medicament inconnu. Veuilliez recommencer

Aspiron

quel est le montant du paiement?

quelle est la quantité achetée?

1 : Achat de médicament

2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Affichage des stocks

Stock du médicament Aspiron :3

Stock du médicament Rhinoplexil :0

Affichage des crédits

Crédit du client Malfichu :49.599999999999994

Crédit du client Palichon :-104.25

1 : Achat de médicament
2 : Approvisionnement en médicaments

3 : Etats des stocks et des crédits

4 : Quitter

Programme terminé!

Amélioration du code objet Une pharmacie peut être vue comme une classe d'objets ayant pour
attribut un tableau de clients et un tableau de médicaments. Copiez votre programme
Pharmacie.java dans un fichier GestionPharmacie.java. Renommer la classe Pharmacie dans
GestionPharmacie.java en Pharmacie1. Déplacez la méthode main() pour la placer dans la classe
GestionPharmacie.java. Il vous est demandé de :

1. Modifier la classe Pharmacie1 de sorte à la doter des attributs susmentionnés.

2. Transformer les méthodes statiques se rapportant uniquement aux attributs de Pharmacie1 en des
méthodes d'instances.

Indication: si vous avez respecté les directives de la première question, les méthodes lireClient() et
lireMedicament() par exemple, deviennent des méthodes d'instance de la classe Pharmacie1

3. Adapter la méthode main() de la classe GestionPharmacie de manière appropriée.

4. Placez les méthodes auxiliaires qui n'ont pu être transformées en méthodes d'instance de
Pharmacie1 dans GestionPharmacie

Vous aimerez peut-être aussi