-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
201 lines (168 loc) · 10.1 KB
/
main.py
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# Importation des classes depuis les modules
from Tests import acheteur, cadis, navigateur
from Commerce import catalogue, recherche
from Navigation import client, panier
# Vérification des classes
assert acheteur.verification() == True
assert cadis.verification() == True
assert navigateur.verification() == True
# Définition de la fonction pour afficher le menu
def afficher_menu():
print("\n1. Afficher le catalogue")
print("2. Rechercher un produit")
print("3. Afficher le panier")
print("4. Ajouter au panier")
print("5. Payer le panier")
print("6. Afficher les informations du client")
print("7. Ajouter des fonds au compte")
print("8. Retirer des fonds du compte")
print("0. Quitter")
# Création d'un catalogue
catalogue = catalogue.Catalogue()
catalogue.lire_sauvegarde()
# Création d'un client
client = client.Client()
client.nom = "LE TALLEC"
client.prenom = "Josselin"
# Création d'un panier
panier = panier.Panier(catalogue)
while True:
afficher_menu()
choix = input("\nEntrez le numéro de votre choix : ")
if choix == "0":
print("Au revoir!")
break
elif choix == "1":
catalogue.afficher_catalogue()
elif choix == "2":
while True:
print("\nChoisissez le type de recherche :")
print("1. Recherche par complétion")
print("2. Recherche par prix maximum")
print("3. Recherche par catégorie")
print("0. Retourner au menu principal")
sous_choix = input("Entrez le numéro de votre choix : ")
if sous_choix == "0":
break # Sortir de la boucle while pour revenir au menu principal
elif sous_choix == "1":
mot_cle = input("Entrez le mot-clé de la recherche : ")
resultats_nom = recherche.Recherche.recherche_par_completion(catalogue, mot_cle)
print(f"\n{len(resultats_nom)} élément(s) trouvé(s) avec la recherche par complétion.")
if resultats_nom:
for resultat in resultats_nom:
print(f"\nNom: {resultat['Nom']}, Prix: {resultat['Prix']}€, Quantité: {resultat['Quantité']}")
else:
print("Aucun résultat trouvé.")
elif sous_choix == "2":
prix_max = float(input("Entrez le prix maximum : "))
resultats_prix = recherche.Recherche.recherche_par_prix_max(catalogue, prix_max)
print(f"\n{len(resultats_prix)} élément(s) trouvé(s) avec la recherche par prix maximum.")
if resultats_prix:
for resultat in resultats_prix:
print(f"\nNom: {resultat['Nom']}, Prix: {resultat['Prix']}€, Quantité: {resultat['Quantité']}")
else:
print("Aucun résultat trouvé.")
elif sous_choix == "3":
categorie = input("Entrez la catégorie : ")
resultats_categorie = recherche.Recherche.recherche_par_categorie(catalogue, categorie)
print(f"\n{len(resultats_categorie)} élément(s) trouvé(s) avec la recherche par catégorie.")
if resultats_categorie:
for resultat in resultats_categorie:
print(f"\nNom: {resultat['Nom']}, Prix: {resultat['Prix']}€, Quantité: {resultat['Quantité']}")
else:
print("Aucun résultat trouvé.")
else:
print("Sous-choix invalide. Veuillez entrer un numéro valide.")
elif choix == "3":
panier.afficher_informations(catalogue)
elif choix == "4":
nom_produit = input("Entrez le nom du produit à ajouter au panier : ")
produit_trouve = False
produit_unique = None # Pour stocker le produit unique trouvé
# Vérifier si le produit existe dans le catalogue
for categorie, produits in catalogue.catalogue.items():
for produit in produits:
if produit["Nom"].lower() == nom_produit.lower():
produit_trouve = True
break
if not produit_trouve:
# Le produit n'existe pas, propose une recherche par complétion
resultats_completion = recherche.Recherche.recherche_par_completion(catalogue, nom_produit)
if resultats_completion:
if len(resultats_completion) == 1:
# S'il y a un seul produit trouvé, propose une vérification à l'utilisateur
produit_unique = resultats_completion[0]
confirmation = input(f"Le produit '{produit_unique['Nom']}' a été trouvé. Voulez-vous l'ajouter au panier ? (Oui/Non): ")
if confirmation.lower() == "oui":
quantite_produit = int(input(f"Entrez la quantité pour '{produit_unique['Nom']}' : "))
# Vérifier si la quantité demandée est disponible dans le stock
if quantite_produit <= produit_unique['Quantité']:
panier.ajouter_article(produit_unique['Nom'], quantite_produit, catalogue)
print(f"{quantite_produit} {produit_unique['Nom']} ajouté(s) au panier.")
else:
print(f"Quantité insuffisante en stock pour '{produit_unique['Nom']}'. Stock actuel : {produit_unique['Quantité']}.")
quantite_produit = int(input(f"Entrez une quantité inférieure ou égale à {produit_unique['Quantité']} : "))
panier.ajouter_article(produit_unique['Nom'], quantite_produit, catalogue)
print(f"{quantite_produit} {produit_unique['Nom']} ajouté(s) au panier.")
else:
print("Opération annulée.")
else:
print(f"Le produit '{nom_produit}' n'existe pas dans le catalogue. Voulez-vous dire :")
for i, produit_similaire in enumerate(resultats_completion, start=1):
print(f"{i}. Nom='{produit_similaire['Nom']}', Prix: {produit_similaire['Prix']}€, Quantité: {produit_similaire['Quantité']}, Description: {produit_similaire['Description']}")
choix_numero = input(f"\nEntrez le numéro du produit à ajouter au panier (1-{len(resultats_completion)}), ou 0 pour annuler : ")
if choix_numero.isdigit() and 0 <= int(choix_numero) <= len(resultats_completion):
index_produit = int(choix_numero) - 1
produit_choisi = resultats_completion[index_produit]
# Proposer d'ajouter au panier
quantite_produit = int(input(f"Entrez la quantité pour '{produit_choisi['Nom']}' : "))
# Vérifier si la quantité demandée est disponible dans le stock
if quantite_produit <= produit_choisi['Quantité']:
panier.ajouter_article(produit_choisi['Nom'], quantite_produit, catalogue)
print(f"{quantite_produit} {produit_choisi['Nom']} ajouté(s) au panier.")
else:
print(f"Quantité insuffisante en stock pour '{produit_choisi['Nom']}'. Stock actuel : {produit_choisi['Quantité']}.")
quantite_produit = int(input(f"Entrez une quantité inférieure ou égale à {produit_choisi['Quantité']} : "))
panier.ajouter_article(produit_choisi['Nom'], quantite_produit, catalogue)
print(f"{quantite_produit} {produit_choisi['Nom']} ajouté(s) au panier.")
elif choix_numero == "0":
print("Opération annulée.")
else:
print("Choix invalide. Opération annulée.")
else:
print(f"Aucun produit similaire trouvé pour '{nom_produit}'. Opération annulée.")
else:
# Si un seul produit est trouvé, propose une vérification à l'utilisateur
produit_unique = {"Nom": nom_produit} # Utilise les détails du produit réel depuis le catalogue
confirmation = input(f"Le produit '{produit_unique['Nom']}' a été trouvé. Voulez-vous l'ajouter au panier ? (Oui/Non): ")
if confirmation.lower() == "oui":
quantite_produit = int(input("Entrez la quantité : "))
# Vérifier si la quantité demandée est disponible dans le stock
if quantite_produit <= produit_unique['Quantité']:
panier.ajouter_article(produit_unique['Nom'], quantite_produit, catalogue)
print(f"{quantite_produit} {produit_unique['Nom']} ajouté(s) au panier.")
else:
print(f"Quantité insuffisante en stock pour '{produit_unique['Nom']}'. Stock actuel : {produit_unique['Quantité']}.")
quantite_produit = int(input(f"Entrez une quantité inférieure ou égale à {produit_unique['Quantité']} : "))
panier.ajouter_article(produit_unique['Nom'], quantite_produit, catalogue)
print(f"{quantite_produit} {produit_unique['Nom']} ajouté(s) au panier.")
else:
print("Opération annulée.")
elif choix == "5":
if panier.verification_panier(client.solde) == False:
print("Solde Insuffisant")
else:
client.solde = panier.payer_panier(client.solde)
print("Panier payé avec succès!")
elif choix == "6":
client.afficher_informations()
elif choix == "7":
montant_fonds = float(input("Entrez le montant des fonds à ajouter : "))
client.ajouter_fonds(montant_fonds)
print(f"{montant_fonds}€ ajouté(s) au compte. Solde actuel : {client.solde}€")
elif choix == "8":
montant_retirer = float(input("Entrez le montant des fonds à retirer : "))
client.retirer_fonds(montant_retirer)
print(f"{montant_retirer}€ retiré(s) du compte. Solde actuel : {client.solde}€")
else:
print("Choix invalide. Veuillez entrer un numéro valide.")