Carte Identitée
momoadmo
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Apres quelques jours de travail je viens de finir mon programme qui simule un base de donné ou les informations sur les personnes (Identité) sont stocker.
Mais Bon mon programme marche mais il me parait assez Complex et mal organisé, je Voudrai Savoir s'il ya d'autres Façons pour faire cela,Merci d'avance.
Apres quelques jours de travail je viens de finir mon programme qui simule un base de donné ou les informations sur les personnes (Identité) sont stocker.
Mais Bon mon programme marche mais il me parait assez Complex et mal organisé, je Voudrai Savoir s'il ya d'autres Façons pour faire cela,Merci d'avance.
#include <stdio.h> #include <string.h> #include <time.h> #include <stdlib.h> int main(){ typedef struct personne personne; struct personne { char nom[50]; char prenom[50]; char sexe[4]; int num; char dateN[50]; char lieuN[100]; char nat[50]; char adresse[10000]; }; int saisi(){ personne p;printf("Nom: "); scanf("%s",p.nom); printf("\nPrenom: "); scanf("%s",p.prenom); printf("\nSexe: "); scanf("%s",p.sexe); printf("\nNaissance(JJ/MM/AAAA) "); scanf("%s",p.dateN); printf("\nLieu Naissance:"); scanf("%s",p.lieuN); printf("\nNationalite:"); scanf("%s",p.nat); printf("\nAdresse:"); scanf("%s",p.adresse); srand(time(NULL)); p.num=rand()%(99999999-10000000) +10000000; printf("\n"); printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf("Nom:%s \n",p.nom); printf("----------------------------------------\n"); printf("Prenom:%s \n",p.prenom); printf("----------------------------------------\n"); printf("Num identite:%d \n",p.num); printf("----------------------------------------\n"); printf("Nationalitee:%s ",p.nat); printf("Sexe:%s \n",p.sexe); printf("----------------------------------------\n"); printf("Naissance:%s ",p.dateN); printf("Lieu:%s \n",p.lieuN); printf("----------------------------------------\n"); printf("adresse: %s\n",p.adresse); printf("----------------------------------------\n"); printf("----------------------------------------\n"); printf("----------------------------------------\n"); printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); char y[100]; sprintf(y, "%d", p.num); strcat(y, ".txt"); FILE* fichier = NULL; fichier = fopen(y, "w"); fputs("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n", fichier); fputs("||||||||||||||||||||||||||IDENTITEE CYTOYENS||||||||||||||||||||||||||||||||||||||||\n", fichier); fputs("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n", fichier); fputs("=====================================================================================\n", fichier); fprintf(fichier,"Nom:%s \n",p.nom); fputs("============================\n", fichier); fprintf(fichier,"Prenom:%s\n",p.prenom); fputs("============================\n", fichier); fprintf(fichier,"Numero:%d \n",p.num); fputs("============================\n", fichier); fprintf(fichier,"Nationalitee:%s Sexe:%s\n",p.nat,p.sexe); fputs("============================\n", fichier); fprintf(fichier,"Date de Naissance:%s Lieu:%s\n",p.dateN,p.lieuN); fputs("============================\n", fichier); fprintf(fichier,"Adresse:%s\n",p.adresse); fputs("=====================================================================================\n", fichier); fputs("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n", fichier); fputs("Informations:********************** \n",fichier); fputs("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n", fichier); fputs("=====================================================================================\n", fichier); fputs("Casier Judiciere:********(Vierge)***********\n",fichier); fputs("=====================================================================================\n", fichier); fputs("B2:****(Lock)****\n",fichier); fputs("=====================================================================================\n", fichier); fputs("B1:******(LOCK)*****\n",fichier); fputs("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n", fichier); fputs("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n", fichier); fclose(fichier); FILE* journal = NULL; journal = fopen("Journal-Identitee","a"); fputs("=====================================================================================\n", fichier); time_t actTime; struct tm *timeComp; time(&actTime); timeComp = localtime(&actTime); fprintf(journal,"%d-%02d-%02d %02d:%02d:%02d ", timeComp->tm_year + 1900, timeComp->tm_mon + 1, timeComp->tm_mday, timeComp->tm_hour, timeComp->tm_min, timeComp->tm_sec); fprintf(fichier,"Nom:%s ",p.nom); fprintf(fichier,"Prenom:%s ",p.prenom); fprintf(fichier,"Numero:%d \n",p.num); fclose(journal); getch(); return 0;} saisi(); }
A voir également:
- Carte Identitée
- Carte d'identité - Accueil - Services publics
- Pile carte mere - Guide
- Changer carte graphique - Guide
- Débloquer carte sim sans code puk - Guide
- Mettre des points sur une carte - Guide
2 réponses
Salut,
Moi quand je dois faire ce genre d'interface "textuelles" en fait je les mets dans des fichiers textes, et je mets des balises, par exemple %NOM% ou %PRENOM% la ou je dois compléter, et ensuite je remplace lorsque je dois afficher le %balise% par la valeur voulue, ça t'évite d'avoir tout ça en dure dans ton code, ça rend le truc un peu plus propre.
Après bon ça complique un peu puisque tu vas devoir lire et écrire dans des fichiers, mais bon ça peut être pas mal à savoir faire cependant.
Moi quand je dois faire ce genre d'interface "textuelles" en fait je les mets dans des fichiers textes, et je mets des balises, par exemple %NOM% ou %PRENOM% la ou je dois compléter, et ensuite je remplace lorsque je dois afficher le %balise% par la valeur voulue, ça t'évite d'avoir tout ça en dure dans ton code, ça rend le truc un peu plus propre.
Après bon ça complique un peu puisque tu vas devoir lire et écrire dans des fichiers, mais bon ça peut être pas mal à savoir faire cependant.
Salut momoadmo,
En C, tu ne peux pas déclarer une fonction à l'intérieur d'une autre.
Tu dois donc sortir le code de la fonction de saisie, en dehors de main.
Pour que ton code soit plus lisible, tu peux créer plusieurs fonctions faisant des choses différentes, et appeler ces fonctions depuis main. Sur la lisibilité, tu devrais aussi indenter ton code correctement.
Tu devrais définir ton type structure en dehors de main, ainsi, le type sera accessible aux fonctions, et déclarer ta variable structure dans main, en la passant aux fonctions qui en ont besoin en paramètre, en passant un pointeur sur cette variable quand tu la passes à une fonction qui doit la modifier.
Attention à scanf avec %s, qui s'arrête au premier espace ou tabulation. Essaye de taper cette adresse "1, rue de Deux, 10000 Troyes, France", tu verras que scanf ne va prendre que "1,". Pour une saisie de texte pouvant comporter des espaces il faut utiliser un spécificateur de taille, ou fgets.
Pour te donner une idée, cela donnerait, sur un exemple simplifié :
Dal
En C, tu ne peux pas déclarer une fonction à l'intérieur d'une autre.
Tu dois donc sortir le code de la fonction de saisie, en dehors de main.
Pour que ton code soit plus lisible, tu peux créer plusieurs fonctions faisant des choses différentes, et appeler ces fonctions depuis main. Sur la lisibilité, tu devrais aussi indenter ton code correctement.
Tu devrais définir ton type structure en dehors de main, ainsi, le type sera accessible aux fonctions, et déclarer ta variable structure dans main, en la passant aux fonctions qui en ont besoin en paramètre, en passant un pointeur sur cette variable quand tu la passes à une fonction qui doit la modifier.
Attention à scanf avec %s, qui s'arrête au premier espace ou tabulation. Essaye de taper cette adresse "1, rue de Deux, 10000 Troyes, France", tu verras que scanf ne va prendre que "1,". Pour une saisie de texte pouvant comporter des espaces il faut utiliser un spécificateur de taille, ou fgets.
Pour te donner une idée, cela donnerait, sur un exemple simplifié :
#include <stdio.h> #include <time.h> #include <stdlib.h> typedef struct personne personne; struct personne { int num; char adresse[256]; }; void saisie(personne * p) { printf("=========== Début saisie ===========\n"); printf("Adresse (max 255 caractères) : "); scanf("%255[^\n]", p->adresse); p->num=rand()%(99999999-10000000) +10000000; printf("=========== Fin saisie ===========\n"); } void affichage(personne p) { printf("=========== Début affichage ===========\n"); printf("Numero: %d\n", p.num); printf("Adresse: %s\n",p.adresse); printf("=========== Fin affichage ===========\n"); } int main(void){ personne p; srand(time(NULL)); saisie(&p); affichage(p); /* faire le reste : écriture, etc. */ return 0; }
Dal
et on a une présentation plus aérée, tout en laissant printf gérer nos "balises" :-)
les lignes successives entre guillemets seront concaténées toutes seules en une par le préprocesseur avant la compilation.