Carte Identitée

Fermé
momoadmo Messages postés 6 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 2 juin 2017 - 2 juin 2017 à 23:33
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 6 juin 2017 à 17:20
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.

#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:

2 réponses

YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017 12
6 juin 2017 à 09:58
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.
1
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
6 juin 2017 à 15:58
cela fait beaucoup d'efforts et de code délicat à implémenter, à la place de 22 lignes de code contenant de simples printf... non ?
0
YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017 12
6 juin 2017 à 16:32
Oui c'est sûr, mais c'est du code capitalisable pour la suite ^^ ! Maintenant c'est vrai que dans son cas c'est plus simple de ta façon :)!
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié le 6 juin 2017 à 17:26
Pour faire un truc plus propre que 22 printf (un, voire deux, par ligne dans le code de momoadmo), on peut faire un truc comme cela :

    printf(
            "||||||||||||||||||||||||||||||||||||||||||||||||||||\n"
            "||||||||||||||||||||||||||||||||||||||||||||||||||||\n"
            "||||||||||||||||||||||||||||||||||||||||||||||||||||\n"
            "Nom: %s\n"
            "----------------------------------------\n"
            "Prénom: %s\n"
            "----------------------------------------\n"
            "Num identité: %d\n"
            "----------------------------------------\n"
            "Nationalité: %s                Sexe: %s\n"
            "----------------------------------------\n"
            "Naissance: %s               Lieu: %s\n"
            "----------------------------------------\n"
            "adresse: %s\n"
            "----------------------------------------\n"
            "----------------------------------------\n"
            "----------------------------------------\n"
            "||||||||||||||||||||||||||||||||||||||||||||||||||||\n"
            "||||||||||||||||||||||||||||||||||||||||||||||||||||\n"
            "||||||||||||||||||||||||||||||||||||||||||||||||||||\n",
        p.nom,
        p.prenom,
        p.num,
        p.nat, p.sexe,
        p.dateN, p.lieuN,
        p.adresse);

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.
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
6 juin 2017 à 10:39
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é :

#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
0