Programmation en C, Système de gestion

Fermé
kartrotax Messages postés 4 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012 - 16 mai 2012 à 15:12
kartrotax Messages postés 4 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012 - 16 mai 2012 à 16:19
Bonjour,
Je suis un eleve de 1ere annee en telecommunication et on ma donne a faire un projet de programmation en C. Jai debute l'ecriture du programme mais je suis arrive a un bloquage. Je suis perdu et jai vraiment besoin d'aide. J'ai vraiment besoin d'une reponse finale pour mon pragramme! Jespere que pour pourriez m'aider c'est primordial! Je vous remerci de votre comprehension et de votre aide. Voici la donnee du projet demande:

Système de gestion des étudiants, enseignants, matières d'une formation.
L'application doit proposer trois types d'accès : Administrateur, Enseignant et Etudiant.
Un administrateur a tous les droits (d'ajout, de modification et de suppression) sur les étudiants, les enseignants et les matières.
Un enseignant a tous les droits sur la gestion des étudiants et des matières dont il est responsable.
Un étudiant a le droit uniquement de consulter ses informations, ses notes ...

Accès Administrateur :
1. Gestion des formations
2. Gestion des enseignants
3. Gestion des étudiants
4. Gestion des matières
5. Générer un carnet d'appréciation
6. Quitter

Accès Enseignant :
1. Gestion des matières
2. Gestion des étudiants
3. Quitter

Accès Etudiant :
1. Accès aux notes par matière
2. Afficher le carnet d'évaluation
3. Quitter

Dans chaque rubrique gestion, on a un sous menu qui s'affiche pour proposer le choix entre l'affichage, l'ajout, la modification et la suppression.

Une matière est caractérisée par son code, son titre et son coefficient. Une formation est composée de plusieurs matières.

Un enseignant peut enseigner plusieurs matières.
Un étudiant et un enseignant sont caractérisés par leur matricule, nom, prénom, adresse et leur date de naissance.

Un étudiant peut suivre une formation, il la valide lorsqu'il obtient une moyenne générale supérieure à 10. Sinon, il est considéré comme redoublant.
Un carnet d'évaluation est généré dès qu'un étudiant valide une formation.

Dans le but de compléter ou de faire évoluer votre projet, vous ajouterez suivant l'état d'avancement et le niveau de difficulté de votre projet, une ou plusieurs fonctionnalités supplémentaires (bonus) au choix.



A voir également:

3 réponses

Linukcs Messages postés 79 Date d'inscription lundi 12 octobre 2009 Statut Membre Dernière intervention 10 octobre 2012 14
Modifié par Linukcs le 16/05/2012 à 15:50
Bonjour,
On commence, comme toujours, par lire la consigne et modéliser.

1°) Nous avons 3 types accès : Administrateur, Enseignant et Etudiant.

Administrateur : Droits totaux sur l'ensemble des Enseignants, Etudiants et matières

Question à se poser : Quels sont ses droits ?
Réponse : En dessous on indique Affichage, Ajout, Modification et Suppression.
Q : Combien de fonctions au total ?
R : 12, 4 par Type.

Enseignant : A des droits de modification sur la gestion des étudiants et matières

Q : Quels sont ses droits ?
R : Au dessus on indique Affichage, Ajout, Modification et Suppression.
Q : Combien de fonctions au total:
R : 8, 4 par type.

Elève : A des droits de consultation
Q : Quels sont ses droits ?
R : Au dessus on déduit qu'il n'a que l'affichage.
Q : Combien de fonctions au total ?
R : 2. De la lecture seulement.

2°) Nous apprenons qu'une matière sera faite de 3 clefs : Code, Titre et Coefficient.
Q : De quels types sont ces trois clefs.
R : Code sera un entier ou une chaîne de caractère, courte de préférence (y'a pas 36000 matières, quoique...). Titre une chaîne de caractères, et Coefficient un flottant.
Nous apprenons qu'un Enseignant est caractérisé par plusieurs champs divers et variés, je pense que ce sera facile de les déterminer. L'enseignant doit avoir également un tableau unidimensionnel dans lequel seront les codes de ses élèves (idéal pour la gestion de ceux-ci).
Nous apprenons qu'un Elève est aussi caractérisé par plusieurs champs divers et variés semblables à ceux de l'Enseignant.

En clair pour le code C :

=> On définit une structure pour chacun des types : Matiere, Enseignant et Eleve. A noter : Pour la structure Enseignant, on pourra lui faire hériter les champs de la structure Eleve + ajouter un tableau de matricules.
=> On définit une fonction pour chacune des commandes d'Ajout, de Modification, de Suppression et d'Affichage, une fonction pour chaque menu et sous-menu, et on n'oublie pas d'y mettre un retour entier pour détecter les erreurs !
=> Pour les autorisations, cela pourra se faire de plusieurs manières :
===> Soit en ligne de commandes : dans argv[][], dire que le deuxième argument désigne un admin, un élève ou un enseignant. Facile à appliquer mais malheureusement ouvert à l'insécurité
===> Soit en login/password : Un par élève, par enseignant et par admin : Nécessite que cela soit stocké dans un fichier.
=> On n'oublie pas que pour le programme entier, sachant qu'on est en C, on doit définir la taille maximale des conteneurs de structures. Donc, on peut contenir X matières, avoir X enseignants, et X élèves. A voir : Est-ce qu'un élève peut avoir plusieurs enseignants ou non ?

J'espère que cela va t'aider ;)

(Et sinon passer par le Site du Zéro c'est pas mal non plus.
N'oubliez pas le bouton '+' si la réponse vous a aidé !
1
kartrotax Messages postés 4 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 16:19
Bon je sais pas pourquoi mais j'avais ecris enormement pour essayer de vous faciliter la comprenhension de ce que jai fais et de faire parvenir qu'est ce que jai realiser et ou je suis bloque jusqu'a present mais ca na pas valider et le texte a disparut bon ... je vais vous copier mon programme jusqu'a maintenant si vous pouvez corriger les gaffes et/ou continuer son ecriture j'en serai reconnaissant! Je sais que dans mon programme j'ai utiliser pleins de fonction juste pour le username et le password... voila le programme merci de votre aide scriptiz et Linukcs! Donc voila:


#include<stdio.h>
#include<string.h>

typedef struct matiere
{
int code;
char titre[30];
int coefficient;
};

typedef struct user
{
char matricule[20];
char username[20];
char password[20];
int id;
};

typedef struct Profiles
{
user users[30];
int nbr;
};

void Sauvegarde(char matricule[20],char username[20],char password[20],char formation[20],int id)
{

FILE*fichier=NULL;
fichier=fopen("C:\\Profiles.txt","a");
if(fichier !=NULL)
{
fprintf(fichier,"%s %s %s %s %d\n",matricule,username,password,formation,id);
}
fclose(fichier);

};

void SauvegardeRemplace(char matricule[20],char username[20],char password[20],char formation[20],int id)
{

FILE*fichier=NULL;
fichier=fopen("C:\\Profiles.txt","w");
if(fichier !=NULL)
{
fprintf(fichier,"%s %s %s %s %d\n",matricule,username,password,formation,id);
}
fclose(fichier);

};

int verification(char T[])
{
int a=0;
user u1;
int id;

FILE*fichier=NULL;
fichier=fopen("C:\\Profiles.txt","r");
if(fichier !=NULL)
{
do{
fscanf(fichier,"%s %s %s %s %d\n",&u1.matricule,&u1.username,&u1.password,&u1.formation,&u1.id);
if(strcmp(u1.matricule,T)==0)
{
printf("Username existe\n");
a=1;
break;
}

}while(!feof(fichier));

return(a);
}
};

user Identification()
{
user profile,u1;
profile.id=0;

printf("username (Pas d'espaces):");
scanf("%s",&profile.matricule);
FILE*fichier=NULL;
fichier=fopen("C:\\Profiles.txt","r");
if(fichier !=NULL)
{
do{
fscanf(fichier,"%s %s %s %s %d\n",&u1.matricule,&u1.username,&u1.password,&u1.formation,&u1.id);
if(strcmp(u1.matricule,profile.matricule)==0)
{
printf("Password (Pas d'espaces):");
scanf("%s",&profile.password);
profile.id=u1.id;
strcpy(profile.formation,u1.formation);
strcpy(profile.username,u1.username);
while((strcmp(u1.password,profile.password)!=0)&&(profile.password[0]!=' '))
{
printf("Mot de passe invalide,essayer a nouveau ou saisr espace pour quitter\n");
printf("Password(Pas d'espaces):");
scanf("%s",&profile.password);
};
if(profile.password[0]==' ')
profile.id=4;
break;
}

}while(!feof(fichier));
if(profile.id==0)
printf("username invalide!\n");
fclose(fichier);
return(profile);
}
};

Profiles Recuperation(int id)
{
Profiles P;
int i=0;
P.nbr=0;
FILE*fichier=NULL;
fichier=fopen("C:\\Profiles.txt","r");
if(fichier !=NULL)
{
do{
fscanf(fichier,"%s %s %s %s %d\n",&P.users[P.nbr].matricule,&P.users[P.nbr].username,&P.users[P.nbr].password,&P.users[P.nbr].formation,&P.users[P.nbr].id);
if(P.users[P.nbr].id==id)
P.nbr++;

}while(!feof(fichier));
}
return(P);
};

Profiles SupprimerUtilisateur(Profiles P,char matricule[20])
{
for(int i=0;i<P.nbr-1;i++)
{
if(strcmp(P.users[i].matricule,matricule)==0)
{
for(int j=i;j<P.nbr-1;j++)
P.users[j]=P.users[j+1];
P.nbr--;
}
}
if(strcmp(P.users[P.nbr].matricule,matricule)==0)
P.nbr--;

return(P);
};

Profiles ModifierUtilisateur(Profiles P,char matricule[20],char user[20],char password[20],char formation[20])
{

for(int i=0;i<P.nbr;i++)
{
if(strcmp(P.users[i].matricule,matricule)==0)
{
strcpy(P.users[i].password,password);
strcpy(P.users[i].username,user);
strcpy(P.users[i].formation,formation);
}
}
return(P);

};

int UserCheck(char matricule[20],Profiles P)
{
int perm=0,i=0;
FILE*fichier=NULL;
fichier=fopen("C:\\Profiles.txt","r");
if(fichier !=NULL)
{
do{

fscanf(fichier,"%s %s %s %s %d\n",&P.users[i].matricule,&P.users[i].username,&P.users[i].password,&P.users[i].formation,&P.users[i].id);
if(strcmp(P.users[i].matricule,matricule)==0)
perm=1;
i++;

}while(!feof(fichier));
}
return(perm);
}

int UserCheckID(char matricule[20],Profiles P)
{
int perm=0,i=0;
for(i=0;i<P.nbr;i++)
{
if(strcmp(P.users[i].matricule,matricule)==0)
perm=1;

}
return(perm);
};

void MenuAdminEtudiant()
{
Profiles P,X,Y;
int a;
char matricule[20],pass[20],user[20],formation[20];
int id;
do
{
printf(" === MENU Administrateur Gestion des Etudiants ===\n");
printf("1- Ajouter un etudiants\n");
printf("2- Modifier un etudiants\n");
printf("3- Supprimer un etudiants\n");
printf("4- Quitter\n");
printf("Faites un choix\n");
scanf("%d",&a);
while((a>4)&&(a<1))
{
printf("Choix non valide, veuillez resaisir:");
scanf("%d",&a);
}

switch(a)
{
case 1:
printf("Veuillez entrez la matricule:");
scanf("%s",&matricule);
printf("Veuillez entrez le username:");
scanf("%s",&user);
printf("Veuillez entrez le mot de passe:");
scanf("%s",&pass);
printf("Veuillez entrez la formation:");
scanf("%s",&formation);
Sauvegarde(matricule,user,pass,formation,3);
break;

case 2:
P=Recuperation(3);
X=Recuperation(1);
Y=Recuperation(2);
printf("Veuillez entrez la matricule a modifier:");
scanf("%s",&matricule);
while(UserCheckID(matricule,P)==0)
{
printf("User Non Trouve, Veuillez saisir un autre.\n");
scanf("%s",&user);
}
printf("User Trouve!\n");

printf("Veuillez entrez le nouveau username:");
scanf("%s",&user);
printf("Veuillez entrez le nouveau mot de passe:");
scanf("%s",&pass);
printf("Veuillez entrez la nouvelle formation:");
scanf("%s",&formation);
P=ModifierUtilisateur(P,matricule,user,pass,formation);
SauvegardeRemplace(P.users[0].matricule,P.users[0].username,P.users[0].password,P.users[0].formation,P.users[0].id);
for(int i=1;i<P.nbr;i++)
Sauvegarde(P.users[i].matricule,P.users[i].username,P.users[i].password,P.users[i].formation,P.users[i].id);
for(int i=0;i<X.nbr;i++)
Sauvegarde(X.users[i].matricule,X.users[i].username,X.users[i].password,X.users[i].formation,X.users[i].id);
for(int i=0;i<Y.nbr;i++)
Sauvegarde(Y.users[i].matricule,Y.users[i].username,Y.users[i].password,Y.users[i].formation,Y.users[i].id);
break;

case 3:
P=Recuperation(3);
X=Recuperation(1);
Y=Recuperation(2);
printf("Veuillez entrer la matricule a supprimer s.v.p.:");
scanf("%s",&matricule);
while(UserCheckID(matricule,P)==0)
{
printf("Matricule Non Trouve, Veuillez saisir une autre.\n");
scanf("%s",&matricule);
}
printf("User Trouve!\n");
P=SupprimerUtilisateur(P,matricule);
SauvegardeRemplace(P.users[0].matricule,P.users[0].username,P.users[0].password,P.users[0].formation,P.users[0].id);
for(int i=0;i<X.nbr;i++)
Sauvegarde(X.users[i].matricule,X.users[i].username,X.users[i].password,X.users[i].formation,X.users[i].id);
for(int i=0;i<Y.nbr;i++)
Sauvegarde(Y.users[i].matricule,Y.users[i].username,Y.users[i].password,Y.users[i].formation,Y.users[i].id);
}
}while(a!=4);
}

void MenuAdminEnseignants()
{
Profiles P,X,Y;
int a;
char formation[20],user[20],pass[20],matricule[20];
int id;
do
{
printf(" === MENU Administrateur Gestion des Enseignants ===\n");
printf("1- Ajouter un enseignants\n");
printf("2- Modifier un enseignants\n");
printf("3- Supprimer un enseignants\n");
printf("4- Quitter\n");
printf("Faites un choix\n");
scanf("%d",&a);
while((a>4)&&(a<1))
{
printf("choix non valide, veuille resaisir:");
scanf("%d",&a);
}

switch(a)
{
case 1:
printf("Veuillez entrez le username:");
scanf("%s",&user);
strcpy(matricule,user);
printf("Veuillez entrez le mot de passe:");
scanf("%s",&pass);
printf("Veuillez entrez la formation:");
scanf("%s",&formation);
Sauvegarde(matricule,user,pass,formation,2);
break;

case 2:
P=Recuperation(2);
X=Recuperation(1);
Y=Recuperation(3);
printf("Veuillez entrez le user a modifier:");
scanf("%s",&matricule);
strcpy(user,matricule);

while(UserCheckID(matricule,P)==0)
{
printf("User Non Trouve, Veuillez saisir un autre.\n");
scanf("%s",&matricule);
strcpy(user,matricule);

}
printf("User Trouve!\n");

printf("Veuillez entrez le nouveau mot de passe:");
scanf("%s",&pass);
printf("Veuillez entrez la nouvelle formation:");
scanf("%s",&formation);
P=ModifierUtilisateur(P,matricule,user,pass,formation);
SauvegardeRemplace(P.users[0].matricule,P.users[0].username,P.users[0].password,P.users[0].formation,P.users[0].id);
for(int i=1;i<P.nbr;i++)
Sauvegarde(P.users[i].matricule,P.users[i].username,P.users[i].password,P.users[i].formation,P.users[i].id);
for(int i=0;i<X.nbr;i++)
Sauvegarde(X.users[i].matricule,X.users[i].username,X.users[i].password,X.users[i].formation,X.users[i].id);
for(int i=0;i<Y.nbr;i++)
Sauvegarde(Y.users[i].matricule,Y.users[i].username,Y.users[i].password,Y.users[i].formation,Y.users[i].id);
break;

case 3:
P=Recuperation(2);
X=Recuperation(1);
Y=Recuperation(3);
printf("Veuillez entrer le user a supprimer s.v.p.:");
scanf("%s",&matricule);
while(UserCheckID(matricule,P)==0)
{
printf("User Non Trouve, Veuillez saisir un autre.\n");
scanf("%s",&matricule);
}
printf("User Trouve!\n");
P=SupprimerUtilisateur(P,matricule);
SauvegardeRemplace(P.users[0].matricule,P.users[0].username,P.users[0].password,P.users[0].formation,P.users[0].id);
for(int i=0;i<X.nbr;i++)
Sauvegarde(X.users[i].matricule,X.users[i].username,X.users[i].password,X.users[i].formation,X.users[i].id);
for(int i=0;i<Y.nbr;i++)
Sauvegarde(Y.users[i].matricule,Y.users[i].username,Y.users[i].password,Y.users[i].formation,Y.users[i].id);
}
}while(a!=4);
}

int main()
{
user profile;
Profiles P;
int a;

profile=Identification();

if(profile.id==1)
do
{
printf("\nUser: %s Formation: %s\n\n",profile.username,profile.formation);

printf(" === MENU Administrateur ===\n");
printf("1- Gestion des Formations\n");
printf("2- Gestion des Enseignants\n");
printf("3- Gestion des Etudiants\n");
printf("4- Gestion des Matieres\n");
printf("5- Generer un Carnet d'Appreciation\n");
printf("6- Quitter\n");
printf("Faites un choix\n");

scanf("%d",&a);
while((a>6)&&(a<1))
{
printf("choix non valide, veuille resaisir:");
scanf("%d",&a);
}

switch(a)
{
case 1:
break;

case 2:
MenuAdminEnseignants();
break;

case 3:
MenuAdminEtudiant();
break;
}
}while(a!=6);

else
if(profile.id==2)
do
{
printf("\nUser: %s Formation: %s\n\n",profile.username,profile.formation);

printf(" === MENU Enseignant ===\n");
printf("1- Gestion des matieres\n");
printf("2- Gestion des etudiants\n");
printf("3- Quitter\n");
printf("Faites un choix\n");

scanf("%d",&a);
while((a>3)&&(a<1));
{
printf("choix non valide, veuille resaisir:");
scanf("%d",&a);
}

switch(a)
{
case 1:
break;

case 2:
MenuAdminEnseignants();
break;
}
}while(a!=3);
}
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
16 mai 2012 à 15:26
Beaucoup de personnes dont moi seraient ravies de t'aider si tu rencontre un problème spécifique lors du codage de ton projet.

Tu dis que tu es arrivé à un blocage, dit nous lequel, explique ce que tu as déjà fait et sur quoi tu bloque et on t'aidera à franchir cette étape.

Car je ne pense pas que quelqu'un réalisera à ta place tout ton projet ;)

Sinon si tu n'y connais rien en C :
https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c

Bonne chance
-1