Commit 54f03171 authored by Clement Lucas's avatar Clement Lucas
Browse files

Update Client.py

parent 5c2515ce
......@@ -22,17 +22,57 @@ class Client(SQL):
return self._lecture_sql(sql)
def trajet_moins_cher(self, ville_depart, ville_arrivee):
sql='''
SELECT id_billet
def trajet_moins_cher(self, ville_depart, ville_arrivee, jour_depart):
# Sélection de tous les billets du jour de départ
sql_1='''
SELECT billet.id_billet, prix, gare_depart, gare_arrivee
FROM billet
INNER JOIN (trajet
INNER JOIN horaires
ON trajet.horaire_depart = horaires.id_horaires)
ON trajet.id_billet = billet.id_billet
WHERE horaires.jour = '%s';
''' % (jour_depart)
rows_1 = self._lecture_sql(sql_1)
if (not rows_1):
print("Aucun billet prévu ce jour ci")
for row_1 in rows_1:
# Récupération des id_gares de départ et d'arrivée
sql_2 ='''
SELECT id_gare
FROM gare
WHERE nom_ville = '%s';
''' % ville_depart
_depart = self._lecture_sql(sql_2)
sql_3 ='''
SELECT id_gare
FROM gare
WHERE nom_ville = '%s';
''' % ville_arrivee
_arrivee = self._lecture_sql(sql_3)
# Sélection des billets entre ces deux gares
sql_4='''
SELECT id_billet, prix
FROM billet
WHERE ville_depart = '%s'
AND ville_arrivee = '%s'
ORDER BY prix DESC;
''' % (ville_depart,ville_arrivee)
return self._lecture_sql(sql)
def rechercher_correspondance(self, ville_depart, ville_arrivee):
WHERE billet.gare_depart = %d
AND billet.gare_arrivee = %d
ORDER BY prix ASC;
''' % (_depart[0][0], _arrivee[0][0])
result = self._lecture_sql(sql_4)
# Affichage du billet le moins cher
if (not result):
print("Aucun billet entre %s et %s le %s" %(ville_depart, ville_arrivee, jour_depart))
else :
print("Le billet le moins cher entre %s et %s le %s est le numéro %d et coûte %f" %(ville_depart, ville_arrivee, jour_depart,result[0][0], result[0][1]))
return
def rechercher_itinéraire(self, ville_depart, ville_arrivee):
# Recherche d'un itinéraire direct
if (ville_depart == ville_arrivee):
print("Vous êtes déjà arrivé")
return
# Ligne et arrêt associés à la gare de départ
sql_1='''
SELECT ligne, id_arret
......@@ -53,6 +93,11 @@ class Client(SQL):
AND arret.id_arret > %d
''' % (row_1[0],row_1[1])
rows_2 = self._lecture_sql(sql_2)
for row_2 in rows_2:
if (row_2[0] == ville_arrivee):
print("Depuis %s empruntez la ligne %d directement jusque %s" %(ville_depart,row_1[0],ville_arrivee))
return
# Sinon, recherche d'un itinéraire par correspondance
for row_2 in rows_2:
# Lignes et arrêts associés aux villes intermédiaires
sql_3 ='''
......@@ -84,12 +129,21 @@ class Client(SQL):
# SCRIPTS MENU
def _script_rechercher_correspondance(self):
def _script_rechercher_itinéraire(self):
print("ville_depart << ")
ville_depart=input()
print("ville_arrivee << ")
ville_arrivee=input()
self.rechercher_itinéraire(ville_depart, ville_arrivee)
def _script_trajet_moins_cher(self):
print("ville_depart << ")
ville_depart=input()
print("ville_arrivee << ")
ville_arrivee=input()
self.rechercher_correspondance(ville_depart, ville_arrivee)
print("jour_depart << ")
jour_depart=input()
self.trajet_moins_cher(ville_depart, ville_arrivee, jour_depart)
# MAIN
......@@ -98,14 +152,15 @@ class Client(SQL):
while menu:
menu=False
print("=============== MENU CLIENT ===============")
print("1 >> rechercher correspondance")
print("2 >> rien")
print("1 >> Rechercher itinéraire (direct ou par correspondance)")
print("2 >> Rechercher le billet le moins cher")
print("\n Autre entrée >> quitter le menu")
choice=input()
if choice == '1':
self._script_rechercher_correspondance()
self._script_rechercher_itinéraire()
menu=True
if choice == '2':
self._script_trajet_moins_cher()
menu=True
def __main__(self):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment