Advertisement
Guest User

Untitled

a guest
May 19th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.11 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. #define MAXNOM 15
  7. #define MAXADD 20
  8. typedef struct date {
  9. int jour;
  10. int mois;
  11. int annee;
  12. } DATE;
  13.  
  14. typedef struct adherent {
  15. int numero_cpt;
  16. char nom[MAXNOM];
  17. char adresse[MAXADD];
  18. char cat[2];
  19. DATE date;
  20. DATE modif
  21. } ADHERENT;
  22.  
  23. void getDate(DATE *d) {
  24. time_t nsec;
  25. struct tm *temps;
  26. nsec = time(NULL);
  27. temps = localtime(&nsec);
  28. d->jour = temps->tm_mday;
  29. d->mois = temps->tm_mon + 1;
  30. d->annee = temps->tm_year + 1900;
  31. }
  32.  
  33. void ouvrir(FILE **f, char nomfich[]) {
  34. *f = fopen(nomfich, "r+");
  35. if (*f == NULL) {
  36. *f = fopen(nomfich, "w+");
  37. if (*f == NULL) {
  38. perror("Erreur d'ouverture du fichier");
  39. exit(EXIT_FAILURE);
  40. }
  41. }
  42. }
  43.  
  44. void fermer(FILE *fich) {
  45. if (fich != NULL) {
  46. fclose(fich);
  47. }
  48. }
  49.  
  50. int chercher_nom(FILE *fich, char *nom) {
  51. ADHERENT client;
  52. int trouve = 0, ret;
  53. rewind(fich);
  54. while (! trouve) {
  55. ret = fread(&client, sizeof(ADHERENT), 1, fich);
  56. if (ret == 0) break;
  57. if (strcmp(client.nom, nom) == 0) {
  58. fseek(fich, -1l * sizeof(ADHERENT), SEEK_CUR);
  59. return 1;
  60. }
  61. }
  62. return 0;
  63. }
  64.  
  65. int chercher_compte(FILE *fich, int cpt) {
  66. ADHERENT client;
  67. int trouve = 0, ret;
  68. rewind(fich);
  69. while (! trouve) {
  70. ret = fread(&client, sizeof(ADHERENT), 1, fich);
  71. if (ret == 0) break;
  72. if (client.numero_cpt == cpt) {
  73. fseek(fich, -1l * sizeof(ADHERENT), SEEK_CUR);
  74. return 1;
  75. }
  76. }
  77. return 0;
  78. }
  79.  
  80. int ajout(FILE *fich) {
  81. int ret;
  82. char *pc;
  83. ADHERENT client;
  84. printf("Ajout d'un client\n");
  85. printf("\tNumero de compte : ");
  86. scanf("%d", &client.numero_cpt);
  87. if (chercher_compte(fich, client.numero_cpt)) {
  88. fprintf(stderr, "Compte existant\n");
  89. return 0;
  90. }
  91. getchar();
  92. printf("\tNom et prenom : ");
  93. fgets(client.nom, MAXNOM, stdin); pc = strchr(client.nom, '\n'); *pc = 0;
  94. if (chercher_nom(fich, client.nom)) {
  95. fprintf(stderr, "Deja existant\n");
  96. return 0;
  97. }
  98. printf("\tAdresse : ");
  99. fgets(client.adresse, MAXADD, stdin); pc = strchr(client.adresse, '\n'); *pc = 0;
  100. printf("\tCategorie (Adulte (A), Enfant (E), Adolescent (AD)");
  101. fgets(client.cat, MAXADD, stdin); pc = strchr(client.cat, '\n'); *pc = 0;
  102. getDate(&client.date);
  103. fseek(fich, 0, SEEK_END);
  104. ret = fwrite(&client, sizeof(ADHERENT), 1, fich);
  105. return ret;
  106. }
  107.  
  108. void affiche(FILE *fich) {
  109. ADHERENT cli;
  110. char nom[MAXNOM];
  111. int cpt, ret;
  112. char choix;
  113. printf(" - Consultation par Nom ou par Numero\n");
  114. printf("Numero du compte : ");
  115. scanf("%d", &cpt);
  116. ret = chercher_compte(fich, cpt);
  117. if (ret == 0) {
  118. printf("Compte ou nom inexistant...\n");
  119. }
  120. else {
  121. fread(&cli, sizeof(ADHERENT), 1, fich);
  122. printf("\n - Numero d'adherent : %d\n - Nom : %s\n - Adresse : %s\n - Categorie : %s\n - Date d'inscription : %d/%d/%d\n", cli.numero_cpt,cli.nom, cli.adresse, cli.cat, cli.date.jour, cli.date.mois, cli.date.annee);
  123. }
  124. }
  125.  
  126. void lister(FILE *fich) {
  127. ADHERENT cli;
  128. rewind(fich);
  129. printf("Listage du contenu du fichier.\n");
  130. printf("Num adhesion \tNom \tAdresse \tCategorie \tDate d'inscription\n");
  131. while (fread(&cli, sizeof(ADHERENT), 1, fich) == 1) {
  132. printf(" %d \t%s \t%s \t%s \t%d/%d/%d\n", cli.numero_cpt,cli.nom,
  133. cli.adresse, cli.cat, cli.date.jour,
  134. cli.date.mois, cli.date.annee);
  135. }
  136. printf("\n");
  137. }
  138.  
  139. void changernom(FILE *fich,char nom[])
  140. {
  141. int records=0;
  142. ADHERENT cli;
  143. while(fread(&cli,sizeof(ADHERENT),1,fich)==1)
  144. {
  145. if(strcmp(nom,cli.nom)==0)
  146. {
  147. printf("Nouveau nom : ");
  148. scanf("%s",cli.nom);
  149. fseek(fich,sizeof(ADHERENT)*records,SEEK_SET);
  150. fwrite(&cli,sizeof(ADHERENT),1,fich);
  151. }
  152. records++;
  153. }
  154. printf("Effectue ! \n\n");
  155. }
  156.  
  157. void changercat(FILE *fich,char catg)
  158. {
  159. int records=0;
  160. ADHERENT cli;
  161. while(fread(&cli,sizeof(ADHERENT),1,fich)==1)
  162. {
  163. if(strcmp(catg,cli.nom)==0)
  164. {
  165. printf("Nouvelle categorie : ");
  166. scanf("%s",cli.cat);
  167. fseek(fich,sizeof(ADHERENT)*records,SEEK_SET);
  168. fwrite(&cli,sizeof(ADHERENT),1,fich);
  169. }
  170. records++;
  171. }
  172. printf("Effectue ! \n\n");
  173. }
  174.  
  175. void changeradresse(FILE *fich,char street[])
  176. {
  177. int records=0;
  178. ADHERENT cli;
  179. while(fread(&cli,sizeof(ADHERENT),1,fich)==1)
  180. {
  181. if(strcmp(street,cli.adresse)==0)
  182. {
  183. printf("Nouvelle adresse : ");
  184. scanf("%s",cli.adresse);
  185. fseek(fich,sizeof(ADHERENT)*records,SEEK_SET);
  186. fwrite(&cli,sizeof(ADHERENT),1,fich);
  187. }
  188. records++;
  189. }
  190. printf("Effectue ! \n\n");
  191. }
  192.  
  193. void menuprincipal(FILE *fic);
  194. void menuadmin(FILE *fic);
  195. void menuadmin(FILE *fic) {
  196. int choix2=0, choix3=0;
  197. ADHERENT cli;
  198. do {
  199. printf("\t \t Menu :\n");
  200. printf(" - Ajouter un nouvel adherent : 1\n");
  201. printf(" - Consulter un adherent : 2\n");
  202. printf(" - Lister toute la base de donnees adherents : 3\n");
  203. printf(" - Modifier le nom d'un adherent : 4\n");
  204. printf("- Modifier l'adresse d'un adherent : 5\n");
  205. printf("- Modifier la categorie d'un adherent : 6\n");
  206. printf("- Retour au menu principal : 7\n");
  207. printf("- Quitter le programme : 0\n");
  208. printf("= Veuillez effectuer votre choix : ");
  209. scanf("%d", &choix2);
  210. printf("\n");
  211. switch(choix2) {
  212. case 1: { ajout(fic); break; }
  213. case 2: { affiche(fic); break; }
  214. case 3: { lister(fic); break; }
  215. case 4: {
  216. printf("Veuillez entrer le numero d'adherent : ");
  217. scanf("%d", &choix3);
  218. if (chercher_compte(fic, choix3)){
  219. int choix2=0;
  220. fread(&cli, sizeof(ADHERENT), 1, fic);
  221. printf("Desirez vous changer le nom de (%s) ? \n", cli.nom);
  222. printf("Si vous etes sur, veuillez recopier le nom : ");
  223. scanf("%s", cli.nom);
  224. if(chercher_nom(fic, cli.nom))
  225. changernom(fic, cli.nom);
  226. } break;
  227. }
  228. case 5: {
  229. printf("Veuillez entrer le numero d'adherent : ");
  230. scanf("%d", &choix3);
  231. if (chercher_compte(fic, choix3)){
  232. int choix2=0;
  233. fread(&cli, sizeof(ADHERENT), 1, fic);
  234. printf("Desirez vous changer la categorie de (%s) ? \n", cli.nom);
  235. printf("Si vous etes sur, veuillez recopier le nom : ");
  236. scanf("%s", cli.nom);
  237. if(chercher_nom(fic, cli.nom))
  238. changercat(fic, cli.cat); break;
  239. }
  240. }
  241. case 6: {
  242. printf("Veuillez entrer le numero d'adherent : ");
  243. scanf("%d", &choix3);
  244. if (chercher_compte(fic, choix3)){
  245. int choix2=0;
  246. fread(&cli, sizeof(ADHERENT), 1, fic);
  247. printf("Desirez vous changer l'adresse de (%s) ? \n", cli.nom);
  248. printf("Si vous etes sur, veuillez recopier le nom : ");
  249. scanf("%s", cli.nom);
  250. if(chercher_nom(fic, cli.nom))
  251. changeradresse(fic, cli.adresse); break;
  252. }
  253. }
  254. case 7: { menuprincipal(fic); }
  255. case 0: exit(EXIT_SUCCESS);
  256. default:
  257. printf("Erreur de saisie, recommencez...\n");
  258. break;
  259. }
  260. }
  261. while (choix2!=0);
  262. }
  263.  
  264. void menuprincipal(FILE *fic) {
  265. int choix;
  266. do {
  267. printf("\t \t Menu :\n");
  268. printf(" - Menu Administration : 1\n");
  269. printf(" - Mwnu Films : 2\n");
  270. printf(" - Menu Emprunts : 3\n");
  271. printf("- Quitter le programme : 4\n");
  272. printf("= Veuillez effectuer votre choix : ");
  273. scanf("%d", &choix);
  274. switch(choix) {
  275. case 1: { menuadmin(fic); break; }
  276. case 2: { affiche(fic); break; }
  277. case 3: { lister(fic); break; }
  278. case 4: { break; }
  279. default:
  280. printf("Erreur de saisie, recommencez...\n");
  281. break;
  282. }
  283. }
  284. while (choix!=4);
  285. }
  286.  
  287. int main() {
  288. FILE *fich;
  289. ouvrir(&fich, "adherents.txt");
  290. menuprincipal(fich);
  291. fermer(fich);
  292. return 0;
  293. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement