Commit 2d9337df authored by Dimitri Nicolas's avatar Dimitri Nicolas
Browse files

Version finale

parents a1a79b13 b3d3b3d5
......@@ -9,7 +9,7 @@ from PretDataMapper import PretDataMapper
import datetime
def UserConnection():
#permet à l'utilisateur de saisir ces identifiants de connexion
print("---------Bonjour, bienvenue à la bibliothéque!!!----------")
print("---------Bonjour, bienvenue à la bibliothèque----------")
login = input("Entrer votre login:")
mdp = input("Entrer votre mot de passe:")
return (login,mdp)
......@@ -26,38 +26,38 @@ def affiche(listTuple:list, headers:Tuple):
print("{:>30s}".format(str(data)),end="")
print(" ")
def addAdherent():
print("--------------Ajout d'un adherent--------------------------")
login = input("Entrer un nouveaux login:")
numcarte = input("Entrer le numéro de carte:")
mdp = input("Entrer un nouveaux mot de passse:")
nom = input("Entrer votre nom:")
prenom = input("Entrer votre prenom:")
adresse = input("Entrer votre adresse:")
adressemail = input("Entrer votre adresse mail:")
tel = input("Entrer votre numéro de téléphone")
dateNaissance = datetime.strptime(input("Entrer votre date de naissance:"))
print("--------------Ajout d'un adhérent--------------------------")
login = input("Entrer un nouveau login : ")
numcarte = input("Entrer le numéro de carte : ")
mdp = input("Entrer un nouveau mot de passe : ")
nom = input("Entrer votre nom : ")
prenom = input("Entrer votre prenom : ")
adresse = input("Entrer votre adresse : ")
adressemail = input("Entrer votre adresse mail : ")
tel = input("Entrer votre numéro de téléphone : ")
dateNaissance = datetime.strptime(input("Entrer votre date de naissance : "))
return(login,numcarte,mdp,nom,prenom,adresse,adressemail,tel,dateNaissance)
def addPersonnel():
print("--------------Ajout d'un adherent--------------------------")
login = input("Entrer un nouveaux login:")
mdp = input("Entrer un nouveaux mot de passse:")
nom = input("Entrer votre nom:")
prenom = input("Entrer votre prenom:")
adresse = input("Entrer votre adresse:")
adressemail = input("Entrer votre adresse mail:")
print("--------------Ajout d'un adhérent--------------------------")
login = input("Entrer un nouveau login : ")
mdp = input("Entrer un nouveau mot de passe : ")
nom = input("Entrer votre nom : ")
prenom = input("Entrer votre prenom : ")
adresse = input("Entrer votre adresse : ")
adressemail = input("Entrer votre adresse mail : ")
return(login,mdp,nom,prenom,adresse,adressemail)
def actionAdherent():
print("------------------------MENU--------------------------------")
print("1 : Voir les exemplaires disponibles")
print("2 : Voir les explaires que vous avez empruntés")
print("-1 :Se déconnecter de son compte.")
print("2 : Voir les exemplaires que vous avez empruntés")
print("-1 : Se déconnecter de votre compte.")
action = -2
while action == -2:
try:
action = int(input("Veuillez saisir le numéro de votre action:"))
action = int(input("Veuillez saisir le numéro de votre action : "))
except Exception:
action = -2
return(action)
......@@ -67,14 +67,14 @@ def actionMember():
print("------------------------MENU--------------------------------")
print("1 : Gérer les emprunts.")
print("2 : Gérer les sanctions.")
print("3 : Gérer les resources.")
print("3 : Gérer les ressources.")
print("4 : Voir les statistiques de la bibliothèque." )
print("5 : Gérer les utilisateurs.")
print("-1 :Se déconnecter de son compte.")
print("-1 : Se déconnecter de son compte.")
action = -2
while action == -2:
try:
action = int(input("Veuillez saisir le numéro de votre action:"))
action = int(input("Veuillez saisir le numéro de votre action : "))
except Exception:
action = -2
return(action)
......@@ -88,7 +88,7 @@ def sanction():
action = -2
while action == -2:
try:
action = int(input("Veuillez saisir le numéro de votre action:"))
action = int(input("Veuillez saisir le numéro de votre action : "))
except Exception:
action = -2
return(action)
......@@ -102,22 +102,22 @@ def userManager():
action = -2
while action == -2:
try:
action = int(input("Veuillez saisir le numéro de votre action:"))
action = int(input("Veuillez saisir le numéro de votre action : "))
except Exception:
action = -2
return(action)
def loaning():
print("---------------------Gérer les ressources---------------------------")
print("1 : Voir les ressources disponible.")
print("2 : Voir la repartition des emprunts.")
print("3 : Ajouter un Livre.")
print("1 : Voir les ressources disponibles.")
print("2 : Voir la répartition des emprunts.")
print("3 : Ajouter un livre.")
print("4 : Ajouter une oeuvre musicale.")
print("5 : Ajouter un film.")
action = -2
while action == -2:
try:
action = int(input("Veuillez saisir le numéro de votre action:"))
action = int(input("Veuillez saisir le numéro de votre action : "))
except Exception:
action = -2
return(action)
......@@ -126,79 +126,69 @@ def loaning():
def Statistiques():
print("---------------------Voir les statistiques-------------------------")
print("1 : Voir les resources populaires.")
print("2 : Voir le nombre d'emprunts par resource.")
print("1 : Voir les ressources populaires.")
print("2 : Voir le nombre d'emprunts par ressource.")
print("3 : Voir les genres populaires.")
print("4 : Voir le nombre d'emprunts par ressources.")
print("5 : Voir le genre prefere des adherents.")
print("6 : Voir l'age moyen des adherents'.")
print("4 : Voir le nombre d'emprunts par ressource.")
print("5 : Voir le genre préféré des adhérents.")
print("6 : Voir l'âge moyen des adhérents'.")
print("7 : Voir les types de documents populaires.")
print("8 : Voir la duree moyenne d'emprunt par adherent.")
print("9 : voir la duree moyenne d'emprunt.")
print("10 : Voir la duree max d'emprunts par adherent.")
print("11 : Voir la duree max des prets.")
print("12 : Voir la duree moyenne des emprunts par ressources.")
print("13 : Voir la duree max d'emprunts par ressource.")
print("8 : Voir la durée moyenne d'un emprunt par adhérent.")
print("9 : Voir la durée moyenne d'un emprunt par adhérent.")
print("10 : Voir la durée max d'un emprunt par adhérent.")
print("11 : Voir la durée max des prêts.")
print("12 : Voir la durée moyenne des emprunts par ressource.")
print("13 : Voir la durée max d'un emprunt par ressource.")
action = -2
while action == -2:
try:
action = int(input("Veuillez saisir le numéro de votre action:"))
action = int(input("Veuillez saisir le numéro de votre action : "))
except Exception:
action = -2
return(action)
def addLivre():
codeunique = input("Entrer le code du livre:")
titre = input("Entrer le titre du livre:")
dateapparition = datetime.strptime(input("Entrer la date du livre:"))
editeur = input("Entrer l'editeur du livre:")
genre = input("Entrer le genre du livre:")
codeclassification = input("Entrer le code de classification du livre:")
isbn = input("Entrer le code isbn du livre:")
resume = input("Entrer le resume du livre:")
langue = input("Entrer la langue du livre:")
codeunique = input("Entrer le code du livre : ")
titre = input("Entrer le titre du livre : ")
dateapparition = datetime.strptime(input("Entrer la date du livre : "))
editeur = input("Entrer l'éditeur du livre : ")
genre = input("Entrer le genre du livre : ")
codeclassification = input("Entrer le code de classification du livre : ")
isbn = input("Entrer le code ISBN du livre : ")
resume = input("Entrer le résumé du livre : ")
langue = input("Entrer la langue du livre : ")
return (codeunique, titre, dateapparition, editeur, genre, codeclassification, isbn, resume, langue)
def addOeuvremusical():
codeunique = input("Entrer le code de l'oeuvre musical:")
titre = input("Entrer le titre de l'oeuvre musical:")
dateapparition = datetime.strptime(input("Entrer la date de l'oeuvre musical:"))
editeur = input("Entrer l'editeur de l'oeuvre musical:")
genre = input("Entrer le genre de l'oeuvre musical:")
codeclassification = input("Entrer le code de classification de l'oeuvre musical:")
longueur = input("Entrer la longueur de l'oeuvre musical:")
return (codeunique, titre, dateapparition, editeur, genre, codeclassification, longueur)
def addOeuvremusical():
codeunique = input("Entrer le code de l'oeuvre musical:")
titre = input("Entrer le titre de l'oeuvre musical:")
dateapparition = datetime.strptime(input("Entrer la date de l'oeuvre musical:"))
editeur = input("Entrer l'editeur de l'oeuvre musical:")
genre = input("Entrer le genre de l'oeuvre musical:")
codeclassification = input("Entrer le code de classification de l'oeuvre musical:")
longueur = input("Entrer la longueur de l'oeuvre musical:")
codeunique = input("Entrer le code de l'oeuvre musicale : ")
titre = input("Entrer le titre de l'oeuvre musicale : ")
dateapparition = datetime.strptime(input("Entrer la date de l'oeuvre musicale : "))
editeur = input("Entrer l'éditeur de l'oeuvre musicale : ")
genre = input("Entrer le genre de l'oeuvre musicale : ")
codeclassification = input("Entrer le code de classification de l'oeuvre musicale : ")
longueur = input("Entrer la longueur de l'oeuvre musicale : ")
return (codeunique, titre, dateapparition, editeur, genre, codeclassification, longueur)
def addFilm():
codeunique = input("Entrer le code du film:")
titre = input("Entrer le titre du film:")
dateapparition = datetime.strptime(input("Entrer la date du film:"))
editeur = input("Entrer l'editeur du film:")
genre = input("Entrer le genre du film:")
codeclassification = input("Entrer le code de classification du film:")
longueur = input("Entrer la longueur du film:")
synopsis = input("Entrer le synopsis du film:")
codeunique = input("Entrer le code du film : ")
titre = input("Entrer le titre du film : ")
dateapparition = datetime.strptime(input("Entrer la date du film : "))
editeur = input("Entrer l'éditeur du film : ")
genre = input("Entrer le genre du film : ")
codeclassification = input("Entrer le code de classification du film : ")
longueur = input("Entrer la longueur du film : ")
synopsis = input("Entrer le synopsis du film : ")
return (codeunique, titre, dateapparition, editeur, genre, codeclassification, longueur, synopsis)
def pretmanager():
print("---------------------Gérer les prets---------------------------")
print("1 : faire un emprunts.")
print("---------------------Gérer les prêts---------------------------")
print("1 : Faire un emprunt.")
print("2 : Faire un retour.")
print("3 : voir la liste des ecemplaires empruntés")
print("4 : mettre à jour l'état exemplaire.")
action = int(input("veuillez saisir le numéro de votre action:"))
print("3 : Voir la liste des exemplaires empruntés.")
print("4 : Mettre à jour l'état d'un exemplaire.")
action = int(input("Veuillez saisir le numéro de votre action : "))
return (action)
def Menu():
......@@ -217,7 +207,7 @@ def Menu():
act = pretmanager()
if(act==1):
login = input("Entrez le login de l'adhérent : ")
ressources_str = input("Entrez les ids d'exemplaire séparés par une virgule (ex : 7,8,9,10) :")
ressources_str = input("Entrez les ids d'exemplaires séparés par une virgule (ex : 7,8,9,10) :")
ressources = ressources_str.split(",")
duree = input("Entrez le nombre de jours pour le prêt : ")
dataMapper.creerPret(login, ressources, duree)
......@@ -228,7 +218,7 @@ def Menu():
pretID = input("Entrez le numéro de prêt : ")
dataMapper.retourPret(pretID)
elif(act==3):
pretID = input("Entrez le numéro du prêt")
pretID = input("Entrez le numéro du prêt : ")
data = dataMapper.getExemplairesPret(pretID)
affiche(data, ("Réf.", "N° Pret"))
elif(act==4):
......@@ -240,7 +230,7 @@ def Menu():
dataMapper = SanctionDataMapper()
act = sanction()
if (act == 1):
login = input("Saisir le login de l'adherent à ajouter à la blacklist:")
login = input("Saisir le login de l'adhérent à ajouter à la blacklist : ")
dataMapper.blacklister(login)
elif (act == 2):
data = dataMapper.getSanctions()
......@@ -283,38 +273,38 @@ def Menu():
affiche(data, ("Genre", "Nb emprunts"))
elif (act == 4):
genre = input("Entrer :")
data=dataMapper.nombreEmpruntRessourcegenre(genre)
print(f"Le nombre d'emprunt pour le genre {genre} est de {data}.")
data=dataMapper.nombreEmpruntParGenre(genre)
print(f"Le nombre d'emprunts pour le genre {genre} est de {data}.")
elif (act == 5):
login = input("Entrer le login d'un adherent:")
login = input("Entrer le login d'un adhérent:")
data=dataMapper.genrePrefereAdherent(login)
print(f"Le genre prefere de l'adherent {login} est '{data}'.")
print(f"Le genre préféré de l'adhérent {login} est '{data}'.")
elif (act == 6):
data=dataMapper.ageMoyenAdherent()
print(f"L'age moyen des adherents est de {data}.")
print(f"L'âge moyen des adhérents est de {data}.")
elif (act == 7):
data=dataMapper.typeDocumentPopulaire()
print(f"Les documents les plus empruntés sont les {data}.")
elif (act == 8):
login = input("Entrer le login d'un adherent:")
login = input("Entrer le login d'un adhérent:")
data=dataMapper.dureeMoyenneEmpruntParAdherent(login)
print(f"La duree moyenne d'un emprunt par l'adherent {login} est de {data} jours.")
print(f"La durée moyenne d'un emprunt par l'adhérent {login} est de {data} jours.")
elif (act == 9):
data=dataMapper.dureeMoyenneEmprunt()
print(f"La duree moyenne d'un emprunt est de {data} jours.")
print(f"La durée moyenne d'un emprunt est de {data} jours.")
elif (act == 10):
login = input("Entrer le login d'un adherent:")
login = input("Entrer le login d'un adhérent:")
data=dataMapper.dureeMaxEmpruntParAdherent(login)
print(f"Le pret le plus long fu de {data} jours.")
print(f"Le plus long emprunt de {login} a duré {data} jours.")
elif (act == 11):
data=dataMapper.dureeMaxPret()
print(f"Le pret le plus long fu de {data} jours.")
print(f"Le plus long emprunt a duré {data} jours.")
elif (act == 12):
codeunique = input("Entrer le code de la resource:")
codeunique = input("Entrer le code de la ressource : ")
data=dataMapper.dureeMoyenneEmpruntParRessource(codeunique)
print(f"Cette ressource a été empruntée {data} jours en moyenne.")
elif (act == 13):
codeunique = input("Entrer le code de la resource:")
codeunique = input("Entrer le code de la ressource : ")
data=dataMapper.dureeMaxEmpruntParRessource(codeunique)
print(f"Cette ressource a été empruntée au maximum {data} jours.")
......@@ -330,10 +320,10 @@ def Menu():
dataMapper.ajouterUtilisateur(login, modtdepasse, nom, prenom, adresse, mail)
dataMapper.ajouterPersonnel(login)
elif (act == 3):
login = input("entrer le login de l'hadérent à supprimer:")
login = input("Entrer le login de l'adhérent à supprimer : ")
dataMapper.deleteAdherent(login)
elif (act == 4):
login = input("entrer le login du membre du personnel à supprimer:")
login = input("Entrer le login du membre du personnel à supprimer : ")
dataMapper.deletePersonnel(login)
elif (act == 5):
adherentDataMapper = AdherentDataMapper()
......@@ -346,13 +336,13 @@ def Menu():
action=actionAdherent()
if (action == 1):
data=dataMapper.getAvailableExemplaires()
affiche(data, ('Reference','Titre','Editeur','Genre'))
affiche(data, ('Réf.','Titre','Editeur','Genre'))
elif (action == 2):
dataMapper= AdherentDataMapper()
data=dataMapper.getPrets(login)
affiche(data, ('NbArticle','Id','Date','login'))
affiche(data, ('NbArticles','Id','Date','login'))
elif(role==Roles.UNAUTHORIZED):
print("Vous n'êtes pas enregistré à la bibliothéque.")
print("Vous n'êtes pas enregistré à la bibliothèque.")
elif(role==Roles.BLACKLISTED):
print("Vous faites partie de la liste noir de la bibliothéque.\nVous ne pouvez donc plus faire d'emprunt")
print("Vous faites partie de la liste noire de la bibliothèque.\nVous ne pouvez donc plus faire d'emprunts.")
Menu()
\ No newline at end of file
......@@ -39,7 +39,7 @@ class StatistiquesDataMapper(DataMapper):
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT gp.titre, gp.nb_emprunt FROM GenresPopulaires gp"
sql1 = "SELECT gp.genre, gp.nb_emprunt FROM GenresPopulaires gp"
cursor.execute(sql1)
rows = cursor.fetchall()
return rows
......@@ -49,12 +49,12 @@ class StatistiquesDataMapper(DataMapper):
conn.close()
# print('Genre : {0} Nombre d\'emprunts : {1}\n'.format(row[0], row[1]))
# retourne le nombre de fois qu'une ressource a été empruntée
def nombreEmpruntRessourcegenre(self, genre : int) :
# retourne le nombre de fois qu'un genre a été empruntée
def nombreEmpruntParGenre(self, genre : int) :
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT gp.titre, gp.nb_emprunt FROM GenresPopulaires gp WHERE gp.genre = '{0}' GROUP BY gp.genre".format(genre)
sql1 = "SELECT gp.genre, gp.nb_emprunt FROM GenresPopulaires gp WHERE gp.genre = '{0}' GROUP BY gp.genre".format(genre)
cursor.execute(sql1)
ressource = cursor.fetchone()
return ressource[1]
......
CREATE VIEW Exemplaires_Disponibles AS
CREATE OR REPLACE VIEW Exemplaires_Disponibles AS
SELECT DISTINCT(codeunique), titre, editeur, genre
FROM ressource
JOIN exemplaire ON exemplaire.ressource = ressource.codeunique
WHERE disponible = TRUE;
CREATE VIEW Repartition_Emprunts AS
CREATE OR REPLACE VIEW Repartition_Emprunts AS
SELECT
CASE
WHEN exemplaire.ressource IN (SELECT codeunique FROM livre) THEN 'livre'
......@@ -70,27 +70,27 @@ CREATE OR REPLACE VIEW FilmsPopulaires AS
ORDER BY COUNT(ep.ref) DESC;
CREATE OR REPLACE VIEW DureeMaxEmpruntParAdherent AS
SELECT va.nom, va.login login, MAX(duree) dureeEmpruntMax
SELECT va.nom, va.login login, MAX(p.duree) dureeEmpruntMax
FROM VAdherent va JOIN Pret p ON p.adherent = va.login
GROUP BY va.nom, va.login
ORDER BY MAX(duree) DESC;
ORDER BY MAX(p.duree) DESC;
CREATE OR REPLACE VIEW DureeMoyenneEmpruntParAdherent AS
SELECT va.nom nom, va.login login, AVG(duree) dureeMoyenneEmprunt
SELECT va.nom nom, va.login login, AVG(p.duree) dureeMoyenneEmprunt
FROM VAdherent va JOIN Pret p ON p.adherent = va.login
GROUP BY va.nom, va.login
ORDER BY AVG(duree) DESC;
ORDER BY AVG(p.duree) DESC;
CREATE OR REPLACE VIEW DureeMaxEmpruntParRessource AS
SELECT r.titre, r.codeUnique codeUnique, MAX(duree) dureeEmpruntMax
SELECT r.titre, r.codeUnique codeUnique, MAX(p.duree) dureeEmpruntMax
FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref JOIN Pret p ON p.pretID = ep.pret
GROUP BY r.titre, r.codeUnique
ORDER BY MAX(duree) DESC;
ORDER BY MAX(p.duree) DESC;
CREATE OR REPLACE VIEW DureeMoyenneEmpruntParRessource AS
SELECT r.titre, r.codeUnique codeUnique, AVG(duree) dureeMoyenneEmprunt
SELECT r.titre, r.codeUnique codeUnique, AVG(p.duree) dureeMoyenneEmprunt
FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref JOIN Pret p ON p.pretID = ep.pret
GROUP BY r.titre, r.codeUnique
ORDER BY AVG(duree) DESC;
ORDER BY AVG(p.duree) DESC;
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