Commit d0d877f9 authored by Robin Bouvier's avatar Robin Bouvier
Browse files

Update prog_final.py

parent 62763e0d
......@@ -23,9 +23,315 @@ def Execute(sql) :
conn.commit()
return True
################## INSERT #################################
def insertExecute(sql):
try:
print(sql)
cur.execute(sql)
except pg.Error as E:
print(E.pgerror)
conn.rollback()
return False
conn.commit()
return True
#Cette fonction parcourt une table avec un id et renvoit l'id le plus grand
def searchId(nomTable):
sql = "SELECT MAX(id) FROM %s;" %(nomTable)
try:
print(sql)
cur.execute(sql)
except pg.Error as E:
print(E.pgerror)
conn.rollback()
return False
try :
raw = cur.fetchone()
if raw:
while raw:
print (raw[0])
return (raw[0])
raw = cur.fetchone() #renvoit l'id le plus grand de la table s'il existe
else:
print("Empty table")
conn.commit()
except pg.Error as E:
print(E.pgerror)
conn.rollback()
def afficheAttribut(table, attribut1 = '', attribut2 = '', attribut3 = '') :
if (attribut2 == '' and attribut3 == '') :
sql = "SELECT %s FROM %s;" %(attribut1, table)
elif (attribut3 == '') :
sql = "SELECT %s,%s FROM %s;" %(attribut1,attribut2, table)
else :
sql = "SELECT %s,%s,%s FROM %s;" %(attribut1,attribut2,attribut3,table)
try:
print(sql)
cur.execute(sql)
except pg.Error as E:
print(E.pgerror)
conn.rollback()
return False
# Fetch data line by line
colnames = [desc[0] for desc in cur.description]
raw_size = 0;
for colname in colnames :
text = str(colname.upper())+" "*(15-len(str(colname)))+" |"
raw_size = raw_size + len(text)+1
print(text, end=" ")
print(""*raw_size)
try:
raw = cur.fetchone()
if raw:
print('-'*(raw_size-1))
while raw:
for i in raw:
text = str(i)+" "*(15-len(str(i)))+" |"
print(text, end=" ")
print("")
raw = cur.fetchone()
print('-'*(raw_size-1))
else:
print("Empty table")
conn.commit()
except pg.Error as e:
print("Fetch error", e)
conn.rollback()
def insertClasses() :
os.system('cls' if os.name == 'nt' else 'clear')
nomClasse = str(input("Quel est le nom de la classe que vous souhaitez ajouter ?\n"))
sql = "INSERT INTO Classes(nom) VALUES ('%s');" %(nomClasse)
if insertExecute(sql) :
print ("Success")
return 1
else : return 0
def insertEspeces() :
os.system('cls' if os.name == 'nt' else 'clear')
nomEspece = str(input("Quel est le nom de l'espèce que vous souhaitez ajouter ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
print("A quelle classe cette espèce appartient-elle ? \n")
afficheAttribut("Classes","nom as Classe")
nomClasse = str(input("Ecrivrez le nom de la classe (attention à la casse)\n"))
sql = "INSERT INTO Especes(nom, classe) VALUES ('%s','%s');" %(nomEspece,nomClasse)
if insertExecute(sql) :
print ("Success")
return 1
else : return 0
def insertClients():
#recherche du client_id le plus grand
id = searchId("Clients")
if id : id += 1 # s'il existe un id le plus grand, on créé le nouvel id
else : return False
os.system('cls' if os.name == 'nt' else 'clear')
nom = str(input("Quel est le nom du client que vous souhaitez ajouter ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
prenom = str(input("Quel est son prénom ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
dateNaissance = str(input("Quelle est sa date de naissance ? (format YYYY-MM-DD)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
adresse = str(input("Quelle est son adresse ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
telephone = int(input("Quel est son numéro de téléphone ?\n"))
sql = "INSERT INTO Clients (id, nom, prenom, date_naissance, adresse, telephone) VALUES (%s,'%s','%s','%s','%s',%s);" %(id,nom,prenom,dateNaissance,adresse,telephone)
if insertExecute(sql) :
print ("Success")
return 1
else : return 0
def insertPersonnels():
os.system('cls' if os.name == 'nt' else 'clear')
print('*'*30)
print("1. Ajouter un vétérinaire")
print("2. Ajouter un assistant")
print("\n3. Revenir en arrière")
print('*'*30)
print("Entrez votre choix:", end=" ")
choix = input()
if (choix=='1'):
insertVeterinaires()
elif(choix=='2'):
insertAssistants()
elif(choix=='3'):
insertChoix()
else :
print("Vous avez entré un choix non valide, veuillez recommencer \n")
insertPersonnels()
def insertVeterinaires():
#recherche du client_id le plus grand
id = searchId("Veterinaires")
if id : id += 1 # s'il existe un id le plus grand, on créé le nouvel id
else : return False
os.system('cls' if os.name == 'nt' else 'clear')
nom = str(input("Quel est le nom du vétérinaire que vous souhaitez ajouter ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
prenom = str(input("Quel est son prénom ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
dateNaissance = str(input("Quelle est sa date de naissance ? (format YYYY-MM-DD)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
adresse = str(input("Quelle est son adresse ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
print("Quelle est la classe de prédilection du vétérinaire ? \n")
afficheAttribut("Classes", "nom as classe")
specialite = str(input("Entrez le nom de la classe (attention à la casse)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
telephone = int(input("Quel est son numéro de téléphone ?\n"))
sql = "INSERT INTO Veterinaires (id, nom, prenom, date_naissance, adresse, specialite, telephone) VALUES (%s,'%s','%s','%s','%s','%s',%s);" %(id,nom,prenom,dateNaissance,adresse,specialite,telephone)
if insertExecute(sql) :
print ("Success")
return 1
else : return 0
def insertAssistants():
#recherche du client_id le plus grand
id = searchId("Assistants")
if id : id += 1 # s'il existe un id le plus grand, on créé le nouvel id
else : return False
os.system('cls' if os.name == 'nt' else 'clear')
nom = str(input("Quel est le nom de l'assistant que vous souhaitez ajouter ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
prenom = str(input("Quel est son prénom ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
dateNaissance = str(input("Quelle est sa date de naissance ? (format YYYY-MM-DD)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
adresse = str(input("Quelle est son adresse ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
print("Quelle est la classe de prédilection de l'assistant ? \n")
afficheAttribut("Classes", "nom as classe")
specialite = str(input("Entrez le nom de la classe (attention à la casse)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
telephone = int(input("Quel est son numéro de téléphone ?\n"))
sql = "INSERT INTO Assistants (id, nom, prenom, date_naissance, adresse, specialite, telephone) VALUES (%s,'%s','%s','%s','%s','%s',%s);" %(id,nom,prenom,dateNaissance,adresse,specialite,telephone)
if insertExecute(sql) :
print ("SuccessinsertClient")
return 1
else : return 0
def insertAnimaux():
#recherche du client_id le plus grand
id = searchId("Animaux")
if id : id += 1 # s'il existe un id le plus grand, on créé le nouvel id
else : return False
os.system('cls' if os.name == 'nt' else 'clear')
nom = str(input("Quel est le nom de l'animal que vous souhaitez ajouter ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
dernierPoids = int(input("Quel est son dernier poids connu ? (en grammes)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
derniereTaille = int(input("Quelle est sa dernière taille connue ? (en centimètres)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
date_naissance = input("Connaissez-vous sa date de naissance ? (si oui entrez une année ; si non, tapez NULL) \n")
os.system('cls' if os.name == 'nt' else 'clear')
print("A quelle espèce appartient-il ?\n")
afficheAttribut("Especes","nom as Espece","classe")
espece = str(input("\nTapez le nom de l'espèce (attention à la casse)\n"))
sql = "INSERT INTO Animaux (id, nom, dernierPoids, derniereTaille, date_naissance, espece) VALUES (%s,'%s',%s,%s,%s,'%s');" %(id, nom, dernierPoids, derniereTaille, date_naissance, espece)
if insertExecute(sql) :
print ("Success")
os.system('cls' if os.name == 'nt' else 'clear')
choixUtilisateur = str(input("Souhaitez-vous ajouter un proprietaire correspondant à cet animal ? (o/N)\n"))
while(choixUtilisateur == 'o') :
insertProprietaires(id)
os.system('cls' if os.name == 'nt' else 'clear')
choixUtilisateur = str(input("Souhaitez-vous ajouter un proprietaire correspondant à cet animal ? (o/N)\n"))
else : return 0
def insertProprietaires(idAnimal) :
os.system('cls' if os.name == 'nt' else 'clear')
print("Entrez le numéro correspondant au proprietaire (référez-vous à la colone id du tableau suivant) \n")
afficheAttribut("Clients","id","nom","prenom")
idClient = int(input())
sql = "INSERT INTO Proprietaires(client, animal) VALUES (%s,%s);" %(idClient,idAnimal)
if insertExecute(sql) :
print ("Success")
return 1
else : return 0
def insertTraitements() :
#recherche du client_id le plus grand
id = searchId("Traitements")
if id : id += 1 # s'il existe un id le plus grand, on créé le nouvel id
else : return False
os.system('cls' if os.name == 'nt' else 'clear')
nom = str(input("Quel est le nom du traitement que vous souhaitez ajouter ?\n"))
os.system('cls' if os.name == 'nt' else 'clear')
debut = str(input("A quelle date débuta ce traitement ? (format YYYY-MM-DD)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
duree = int(input("Quelle est la duree de ce traitement ? (en jour)\n"))
os.system('cls' if os.name == 'nt' else 'clear')
print("Entrez le numero correspondant au veterinaire en charge du traitement \n")
afficheAttribut("Veterinaires","id","nom","prenom")
idVeterinaire = int(input())
os.system('cls' if os.name == 'nt' else 'clear')
print("Entrez le numero correspondant a l'animal traite \n")
afficheAttribut("Animaux","id","nom","espece")
idAnimal = int(input())
sql = "INSERT INTO Traitements(id, nom, debut, duree, veterinaire, animal) VALUES (%s,'%s','%s',%s,%s,%s);" %(id,nom,debut,duree,idVeterinaire,idAnimal)
if insertExecute(sql) :
print ("Success")
os.system('cls' if os.name == 'nt' else 'clear')
choixUtilisateur = str(input("\nSouhaitez vous ajouter une prescription liée à ce traitement ? (o/N)\n"))
while(choixUtilisateur == 'o') :
insertPrescription(id)
os.system('cls' if os.name == 'nt' else 'clear')
choixUtilisateur = str(input("\nSouhaitez vous ajouter une prescription liée à ce traitement ? (o/N)\n"))
else : return 0
def insertPrescription(idTraitement) :
os.system('cls' if os.name == 'nt' else 'clear')
print("Entrez le nom du médicament prescrit \n")
afficheAttribut("Medicaments","nomMolecule","effets")
medicament = str(input())
os.system('cls' if os.name == 'nt' else 'clear')
duree = int(input("\nQuelle quantité de ce médicament l'animal doit-il prendre ? (par jour)\n"))
sql = "INSERT INTO Prescriptions(traitement, medicament, quantite) VALUES (%s,'%s',%s);" %(idTraitement,medicament,duree)
if insertExecute(sql) :
print ("Success")
return 1
else : return 0
def insertChoix():
while True:
os.system('cls' if os.name == 'nt' else 'clear')
print('*'*30)
print("Bienvenue dans le menu des insertions de données.\n")
print("1. Ajouter un nouvel animal")
print("2. Ajouter un nouveau membre du personnel")
print("3. Ajouter un nouveau client")
print("5. Ajouter un nouveau traitement")
print("\n5. Retourner au menu principal")
print("\nEt en bonus...")
print("6. Ajouter une nouvelle classe")
print("7. Ajouter une nouvelle espece")
print('*'*30)
print("Entrez votre choix:", end=" ")
choix = input()
if (choix=='1'):
insertAnimaux()
elif(choix=='2'):
insertPersonnels()
elif(choix=='3'):
insertClients()
elif(choix=='4'):
insertTraitements()
elif(choix=='5'):
Main()
elif(choix=='6'):
insertClasses()
elif(choix=='7'):
insertEspeces()
else :
print("Vous avez entré un choix non valide, veuillez recommencer \n")
insertChoix()
#########################################################
################### AFFICHAGE ET STATISTIQUES ###################
def afficherSql(sql):
os.system('cls' if os.name == 'nt' else 'clear')
try:
......@@ -61,7 +367,6 @@ def afficherSql(sql):
print("Fetch error", e)
conn.rollback()
def afficherStatistique():
sql=""
while True:
......@@ -98,7 +403,6 @@ def afficherStatistique():
sql=""
input("\nAppuyez pour continuer...")
def afficherTable():
while True:
os.system('cls' if os.name == 'nt' else 'clear')
......@@ -116,8 +420,11 @@ def afficherTable():
os.system('cls' if os.name == 'nt' else 'clear')
afficherSql(sql)
input("\nAppuyez pour continuer...")
#############################################################
#################### UPTADE ###############################
def update():
os.system('cls' if os.name == 'nt' else 'clear')
sql=""
......@@ -132,8 +439,6 @@ def update():
if choix == 2:
updateClient()
def updateAnimal() :
nom='nom'
dernierPoids='dernierPoids'
......@@ -156,7 +461,7 @@ def updateAnimal() :
text = input("nom (VARCHAR): ")
if(text):
nom = "'"+text+"'"
text = input("derniereTaille (INTEGER) : ")
text = input("dernierPoids (INTEGER) : ")
if(text):
dernierPoids = int(text)
text = input("derniereTaille (INTEGER) : ")
......@@ -225,20 +530,20 @@ def updateClient():
print("An error occurs, please try again...")
input("\nAppuyez pour continuer...")
return False
##########################################################
####################### MAIN ############################
def Main():
while True:
os.system('cls' if os.name == 'nt' else 'clear')
print('*'*30)
print("Bienvenue dans le menu principal.\n")
print("1.Afficher le contenu d'une table")
print("2.Afficher les statistiques")
print("3.Inserer dans une table")
print("4.Modifier un tuple")
print("5.Quitter")
print("\n5.Quitter")
print('*'*30)
print("Entrez votre choix:", end=" ")
choix=input()
......@@ -247,11 +552,14 @@ def Main():
elif choix=='2':
afficherStatistique()
elif choix=='3':
print("Pas encore disponible")
insertChoix()
elif choix=='4':
update()
elif choix=='5' :
break
else :
print("Vous avez entré un choix non valide, veuillez recommencer \n")
Main()
......
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