#include #include #include // Structure pour représenter un article struct Article { char nom[50]; float prix; int quantite; }; struct Article *articles = NULL; // Tableau dynamique pour stocker les articles FILE *fichier; char nom_fichier[] = "stock.txt"; int nombreArticles = 0; // Fonction pour afficher les détails d'un article void afficherArticle(struct Article article) { printf("Nom : %s\n", article.nom); printf("Prix : %.2f\n", article.prix); printf("Quantité en stock : %d\n", article.quantite); printf("\n"); } // Fonction pour enregistrer des données dans un fichier void sauvegarder() { FILE *fichierStock; fichierStock = fopen("stock.txt", "w"); for (int i = 0; i < nombreArticles; i++) { fprintf(fichierStock, "Article : %d\n", i + 1); fprintf(fichierStock, "Nom : %s\n", articles[i].nom); fprintf(fichierStock, "Prix : %.2f\n", articles[i].prix); fprintf(fichierStock, "Quantité en stock : %d\n", articles[i].quantite); fprintf(fichierStock, "\n"); } fclose(fichierStock); } void chargerArticles() { struct Article a; int k = 0; // Ouvrir le fichier en lecture fichier = fopen(nom_fichier, "r"); if (fichier != NULL) { while (fscanf(fichier, "Article : %d\nNom : %s\nPrix : %f\nQuantité en stock : %d\n\n", &k, a.nom, &a.prix, &a.quantite) != EOF) { //printf("Here %d",i); articles = realloc(articles, (nombreArticles + 1) * sizeof(struct Article)); strcpy(articles[nombreArticles].nom, a.nom); articles[nombreArticles].prix = a.prix; articles[nombreArticles].quantite = a.quantite; nombreArticles++; } fclose(fichier); } } int main() { int choix; printf("Bienvenue dans le programme de gestion de stock.\n"); chargerArticles(); printf("Nombre d'articles : %d\n", nombreArticles); while (1) { printf("\nMenu :\n"); printf("1. Ajouter un article\n"); printf("2. Modifier un article\n"); printf("3. Supprimer un article\n"); printf("4. Afficher tous les articles\n"); printf("5. Quitter\n"); printf("Choix : "); scanf("%d", &choix); if (choix == 5) { free(articles); break; // Quitter le programme } switch (choix) { case 1: // Ajouter un article nombreArticles++; articles = realloc(articles, nombreArticles * sizeof(struct Article)); printf("\nSaisir les détails de l'article :\n"); printf("Nom : "); scanf("%s", articles[nombreArticles - 1].nom); printf("Prix : "); scanf("%f", &articles[nombreArticles - 1].prix); printf("Quantité en stock : "); scanf("%d", &articles[nombreArticles - 1].quantite); sauvegarder(); break; case 2: // Modifier un article if (nombreArticles == 0) { printf("\nAucun article à modifier.\n"); } else { int choixModification; printf("\nSélectionnez l'article à modifier (de 1 à %d) : ", nombreArticles); scanf("%d", &choixModification); if (choixModification >= 1 && choixModification <= nombreArticles) { printf("\nSaisir les nouvelles informations pour l'article :\n"); printf("Nom : "); scanf("%s", articles[choixModification - 1].nom); printf("Prix : "); scanf("%f", &articles[choixModification - 1].prix); printf("Quantité en stock : "); scanf("%d", &articles[choixModification - 1].quantite); sauvegarder(); } else { printf("\nNuméro d'article invalide.\n"); } } break; case 3: // Supprimer un article if (nombreArticles == 0) { printf("\nAucun article à supprimer.\n"); } else { int choixSuppression; printf("\nSélectionnez l'article à supprimer (de 1 à %d) : ", nombreArticles); scanf("%d", &choixSuppression); if (choixSuppression >= 1 && choixSuppression <= nombreArticles) { // Supprimer l'article en décalant les éléments du tableau for (int i = choixSuppression - 1; i < nombreArticles - 1; i++) { strcpy(articles[i].nom, articles[i + 1].nom); articles[i].prix = articles[i + 1].prix; articles[i].quantite = articles[i + 1].quantite; } nombreArticles--; articles = realloc(articles, nombreArticles * sizeof(struct Article)); sauvegarder(); printf("\nL'article a été supprimé avec succès.\n"); } else { printf("\nNuméro d'article invalide.\n"); } } break; case 4: // Afficher tous les articles printf("\nListe des articles : %d\n", nombreArticles); for (int i = 0; i < nombreArticles; i++) { printf("Article : %d\n", i + 1); afficherArticle(articles[i]); } break; default: printf("\nChoix invalide. Veuillez réessayer.\n"); break; } } }