Je suis étudiant et je dois rendre un projet mais je rencontre des difficultés pour le faire. Le but de ce projet est de faire une badgeuse. On doit pouvoir : - rentrer le nom de la personne et son heure d'entrée, - le nom de la personne ainsi que l'heure de sortie, - l'historique des personnes présentes dans le bâtiment, - l'affichage des personnes présentes dans le bâtiment à un créneau précis, - la durée totale passée dans le bâtiment d'une personne précise. J'ai commencé à faire quelque chose mais je le posterai tout à l'heure.
#!/usr/bin/python3
print("\n")
print(" ##################################################################")
print(" ## ##")
print(" ## Programmme Python ##")
print(" ## Auteur: ##")
print(" ## Année: 2018/2019 ##")
print(" ## Projet tuteuré: Gestion des accès à un bâtiment ##")
print(" ## ##")
print(" ##################################################################")
print("\n")
#Crétion d'une fonction horaire pour faciliter l'entrée de l'heure d'entrée/sortie du bâtiment
def heure():
h=int(input("Entrer les heures svp: "))
m=int(input("Entrer les minutes svp: "))
s=int(input("Entrer les secondes svp: "))
return [h,m,s]
#Création du menu principal
n=0
def menu():
n=0
print("Bonjour et bienvenue sur le menu. Que désirez-vous faire ?")
print("1- Entrée \n" "2- Sortie \n" "3- Affichage \n" "4- Historique des entrées/sorties \n" "5- Liste des personnes présentes dans le bâtiment actuellement \n" "6- Liste des personnes présentes à un créneau précis \n" "7- Temps total passé dans le bâtiment \n" "8- Quitter")
n=(input("Taper le nombre correspondant à ce que vous souhaitez faire dans le menu (Entre 1 et 8): "))
return n
while n!="10":
n=menu()
if n=="1":
print("Entrée")
entree()
elif n=="2":
print("Sortie")
sortie()
elif n=="3":
print("Affichage")
elif n=="4":
print("Historique des entrées/sorties")
elif n=="5":
print("Liste des personnes présentes actuellement dans le bâtiment")
elif n=="6":
print("Liste des personnes présentes à un créneau précis")
elif n=="7":
print("Temps total passé dans le bâtiment")
elif n=="8":
print("Quitter")
print(menu())
#Définition de la fonction "Entrée"
nom=0
h=0
utilisateur=[] #On crée une liste pour enregistrer les personnes
def entree():
nom=input("Entrer votre nom svp: ") #On demande à la personne d'entrer son nom pour qu'elle puisse s'enregistrer dans les données de la badgeuse
return nom
verif=[nom] #On vérifie que la personne n'est pas déjà présente dans le bâtiment
entree=heure() #On lui demande de rentrer l'heure à laquelle il rentre dans le bâtiment
verif.append(entree)
utilisateur.append(verif)
print("Bonjour",nom,",vous êtes bien enregistré(e)")
#Création de la fonction "Sortie" (à complèter)
def sortie():
name=input("Entrer votre nom svp: ") #On demande à l'utilisateur enregistré d'entrer son nom
sortie=heure() #On lui demande de rentrer l'heure à laquelle il/elle quitte le bâtiment
#Définition de la fonction "Historique des entrées/sorties"
def hist_entrees_sorties():
name=input("Veuillez rentrer le nom d'une personne à rechercher dans les données: ") #On demande à la personne de rentrer le nom de quelqu'un pour vérifier ses entrées/sorties
J'ai essayé de commencer quelque chose, mais j'ai beaucoup de mal à continuer :/
Déjà l'organisation du code le rend dur à lire. En général on met toutes les déclarations de fonction ensemble, et on met pas du code hors fonction en plein milieu.
Ensuite je crois que tu n'as pas testé ton code, dans ta fonction entrée, tout ce qui est après le return ne s'exécute pas (c'est normal), il faut mettre le return à la fin de la fonction. Mais pourquoi mettre un return alors que tu ne récupère pas la valeur renvoyée par la fonction quand tu l'exécute ?
Ensuite pour avancer, tu peux commencer par les données, tu as une liste des utilisateurs ligne 53, mais ce sera sans doute pas suffisant.
Il te faudra une ou plusieurs structures de données pour stocker les utilisateurs et leurs entrées-sorties, c'est le coeur du programme, tout tourne autour de ça. Rien que ce genre de démarche peut te débloquer.
Ensuite il faudra définir précisément les autres fonctionnalités. Par exemple Affichage, elle doit afficher toutes les données ou juste une partie ?
EDIT : Et c'est pour quel niveau ? C'est pour l'ISN en terminale ?
- Edité par LoupSolitaire 11 janvier 2019 à 19:21:06
Bonsoir, déjà merci de ton aide. J'ai réussi à un peu avancer mon programme. Voici ce que j'ai fais :
#!/usr/bin/python3
print("\n")
print(" ##################################################################")
print(" ## ##")
print(" ## Programmme Python ##")
print(" ## Auteur: Bastian Cannere ##")
print(" ## Année: 2018/2019 ##")
print(" ## Projet tuteuré: Gestion des accés à un bâtiment ##")
print(" ## ##")
print(" ##################################################################")
print("\n")
##################################################################################
#Fonctions pratiques :
#Informations de la personne
def affichage(elem):
return "Nom: " + elem[0] + " | Entrée: "+ aff_heure(elem[1]) + " | Sortie: " + aff_heure(elem[2])
def aff_heure(h):
if h==None:
return "None"
else:
return (str(h[0])+"h "+str(h[1])+"min "+str(h[2])+"s")
#Création d'une fonction horaire pour faciliter l'entrée de l'heure d'entrée/sortie du bâtiment
def heure():
h=int(input("Entrer les heures svp: "))
while h<0 or h>23:
h=int(input("Une erreur s'est produite ! Veuillez ressayer: "))
m=int(input("Entrer les minutes svp: "))
while m<0 or m>59:
m=int(input("Une erreur s'est produite ! Veuillez ressayer: "))
s=int(input("Entrer les secondes svp: "))
while s<0 or s>59:
s=int(input("Une erreur s'est produite ! Veuillez ressayer."))
return [h,m,s]
###################################################################################
#Création du menu principal
n=0
def menu():
n=0
print("Bonjour et bienvenue sur le menu. Que désirez-vous faire ?")
print("1- Entrée \n" "2- Sortie \n" "3- Affichage \n" "4- Historique des entrées/sorties \n" "5- Liste des personnes présentes dans le bâtiment actuellement \n" "6- Liste des personnes présentes à un créneau précis \n" "7- Temps total passé dans le bâtiment \n" "8- Quitter")
n=input("Taper le nombre correspondant à ce que vous souhaitez faire dans le menu (Entre 1 et 8): ")
return n
#Définition de la fonction "Entrée"
nom=0
entree=0
utilisateur=[] #On crée une liste pour enregistrer les personnes
def entree():
nom=input("Entrer votre nom svp: ") #On demande à la personne d'entrer son nom pour qu'elle puisse s'enregistrer dans les données de la badgeuse
verif=[nom] #On vérifie que la personne n'est pas déjà présente dans le bâtiment
entree=heure() #On lui demande de rentrer l'heure à laquelle il rentre dans le bâtiment
verif.append(entree)
verif.append(None) #Signifie que l'utilisateur n'a pas rentré une heure de sortie
utilisateur.append(verif)
print("Bonjour",nom,",vous êtes bien enregistré(e)")
#Création de la fonction "Sortie" (à compléter)
def sortie():
name=input("Entrer votre nom svp: ") #On demande à l'utilisateur enregistré d'entrer son nom
sortie=heure() #On lui demande de rentrer l'heure à laquelle il/elle quitte le bâtiment
check=True
#Définition de la fonction "Historique des entrées/sorties"
def hist_entrees_sorties():
name=input("Veuillez rentrer le nom d'une personne à rechercher dans les données: ") #On demande à la personne de rentrer le nom de quelqu'un pour vérifier ses entrées/sorties
for elem in utilisateur:
if name==elem[0]:
print(affichage(elem))
#Création de la fonction permettant de savoir qui se trouve actuellement dans le bâtiment
def pers_bat():
for elem in utilisateur:
if elem[2]==None:
print(affichage(elem))
#Suite fonction menu
while n!=10:
n=menu()
if n=="1":
print("Entrée")
entree()
elif n=="2":
print("Sortie")
sortie()
elif n=="3":
print("Affichage")
for elem in utilisateur:
print(affichage(elem))
elif n=="4":
print("Historique des entrées/sorties")
hist_entrees_sorties()
elif n=="5":
print("Liste des personnes présentes actuellement dans le bâtiment")
pers_bat()
elif n=="6":
print("Liste des personnes présentes à un créneau précis")
elif n=="7":
print("Temps total passé dans le bâtiment")
elif n=="8":
exit()
print("Quitter")
else:
n=menu()
menu()
Est-il possible de m'aider à le terminer et à l'améliorer par la suite si j'ai le temps ? Merci d'avance
Ps: Ce n'est pas pour l'ISN. Je suis en Dut Réseaux et Télécoms
Projet python
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...