Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gérer un fichier client ??

    28 septembre 2022 à 10:02:58

    Bonjour à tous, 

    Je suis étudiant et je suis assez inexpérimenté en python. Je connaissait le base et j'ai même plutôt apprécié.

    Alors voilà, mon formateur d'informatique à donné a ma promo la mission de réalisé un logiciel de facturation en python. Étonnant oui, mais c'est surtout pour nous torturer l'esprit, ce ne sera pas un logiciel sérieux.

    Dans le cahier des charges on nous demande de gérer un fichier client ainsi qu'un stock.

    J'ai réussi a créer la partie qui va créer le client ainsi que celle qui affiche la liste mais me voila bloquer au moment de créer la partie de modification et de suppression des clients. Je ne comprend pas quel est la façon de trouver un client dans mon fichier puis le supprimer... 

    Voilà la partie de mon code qui concerne la gestion des clients. 

    def gestionClient():
      choixMenuClient = 0
      while choixMenuClient != 5:
        print("""
        1 - Ajouter un client
        2 - Supprimer un client
        3 - Modifier un client
        4 - Consulter les clients
        5 - Retour
        """)
        choixMenuClient = int(input("Action : "))
        if choixMenuClient == 1:
          currentFile = open("fichierClient.txt","a")
          print("- Ajout d'un client -")
          tempNom = input("Nom du client : ")
          tempPre = input("Prenom du client : ")
          tempCity = input("Ville du client : ")
          currentFile.write(tempNom+":"+tempPre+":"+tempCity+"\n")
          currentFile.close()
        elif choixMenuClient == 2:
          replit.clear()
          print("----------------------")
          print("- Supprimer un client -")
          print("----------------------")
          print("- Liste des clients -")
          print("----------------------")
          currentFile = open("fichierClient.txt","r")
          tmpCurrentFile = currentFile.readlines()
          for line in tmpCurrentFile:
            print(line)
          print("\n--------------------------")
        elif choixMenuClient == 3:
          print("- Modification d'un client -\n")
          nclient = int(input("Numéro du client a modifier : "))
          nclient = (nclient-1)*3
          file = open('fichierClient.txt', 'r')
          files = file.read().replace(':',' ').split()
          with open("fichierClient.txt", 'r') as fp:
            lines = len(fp.readlines())
          print(" Voulez vous réellement supprimer ce client : \n")
          for i in range (1):
            print(files[nclient],"  ",files[nclient+1],"  ",files[nclient+2])
          print("\n--------------------------")
          choix = int(input("1 - Oui | 2 - Non ?"))
          if choix == 1:
            files.pop(nclient)
            files.pop(nclient+1)
            files.pop(nclient+2)
            
            print("----------------------------------")
            print("\nVous avez supprimer le client.\n")
            print("----------------------------------")
          else:
            print("Annulation de la suppression.")
            gestionClient()
          gestionClient()
        elif choixMenuClient == 4:
          replit.clear()
          print("---------------------")
          print("- Liste des clients -")
          print("---------------------\n")
          currentFile = open("fichierClient.txt","r")
          tmpCurrentFile = currentFile.read().replace(":"," ")
          listClient = tmpCurrentFile.split()
          with open("fichierClient.txt",'r') as fp:
            lines = len(fp.readlines())
          count = 0
          for i in range (1, lines):
            print(listClient[0+count],"  ",listClient[1+count],"  ",listClient[2+count])
            count += 3
          print("\n--------------------------")
          currentFile.close()
        elif choixMenuClient == 5:
          replit.clear()
          mainMenu()

    et voici a quoi ressemble mon txt :

    J'aimerais beaucoup que vous m'aidiez a trouver la solution, pas que vous me la donniez directement, le but c'est d'apprendre !

    Merci beaucoup à ce qui m'aideront !

    -
    Edité par Arekus_ 28 septembre 2022 à 10:05:30

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      28 septembre 2022 à 10:37:59

      Salut !
      Ce n'est pas très compliqué, tu ouvres ton fichierClient.txt, tu extrais chaque ligne dans une liste, tu cherches une correspondance dans chaque ligne avec une boucle for, tu enlèves la ligne de la liste avec remove(value) ou pop(id) et tu réécris la ligne dans un fichier texte.

      • Partager sur Facebook
      • Partager sur Twitter
        28 septembre 2022 à 11:44:33

        Bonjour,

        Par contre, c'est touffu ton truc !

        On peut éclaircir un peu avec des fonctions:

        fichier_client = 'fichierClient.txt' ;#on défini le nom une bonne fois pour toutes
        
        menu = '''
        1	Ajouter un client
        2	Retirer un client
        3	Modifier un client
        4	Lister les clients
        5	Quitter
        > '''
        
        def gestion_clients():
            choix = ''
        
            while(not choix in [1,2,3,4,5]):
                os.system('cls' if os.name=='nt' else 'clear')
                print('\n' + '''Action'''.center(50,'*'))
                choix = int(input(menu))
        
            if(choix == 1):
                ajout_client()
            elif(choix == 2):
                supression_client()
            elif(choix == 3):
                modif_client()
            elif(choix == 4):
                liste_clients
            elif(choix == 5):
                replit.clear()
                mainMenu()





        -
        Edité par Phil_1857 28 septembre 2022 à 13:10:15

        • Partager sur Facebook
        • Partager sur Twitter
          28 septembre 2022 à 16:23:38

          Dans ta partie supprimer, tu affiches les lignes de ton fichier, pourquoi ne pas le faire comme dans le menus "consulter les clients" (d'où l'utilité de faire des fonctions) ?

          Pour supprimer, il faut demander à l'utilisateur d'indiquer lequel: soit quand tu affiches la liste, tu fais précéder chaque ligne par un numéro et l'utilisateur devra rentrer ce numéro ou tu demandes de rentrer son nom (attention dans le cas où il y aurait plusieurs clients avec le même nom, c'est pour ça que j'aurai une préférence pour la saisie du numéro de ligne, c'est plus simple). Ne pas oublier de demander confirmation de la suppression de l'utilisateur choisi en rappelant ses infos (nom prénom,adresse)

          Pour la modification, même principe sauf que tu demandes "nouveau nom ([nom actuel]):" si juste un appui sur entrée, on ne modifie pas, sinon on remplace le nom (idem pour prénom et adresse)

          Pour tout ça tu travailles sur la liste du fichier (tmpCurrentFile dans ta partie suppression)

          PS: attention tu parles de suppression dans ta partie modification (modification n'est pas suppression)

          • Partager sur Facebook
          • Partager sur Twitter

          Gérer un fichier client ??

          × 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.
          • Editeur
          • Markdown