GUERFI AMIRA CHERADI MANEL G1
Projet algorithem:
l idee de ce programme de donne la chance pour stocker les donnes
de les etudient d’un faculity dans un systeme gestion des
etudient a l’aide de bib ncurses .
Il compose de :
struct Etudiant
unsigned long long int id;
char nom[MAX_NAME_LENGTH];
char prenom[MAX_NAME_LENGTH];
char adresse[MAX_ADDRESS_LENGTH];
char email[MAX_EMAIL_LENGTH];
int age;
float moyenne;
struct {
char nom_module[MAX_NAME_LENGTH];
float coefficient;
float note;
} modules[MAX_MODULES];
*id est numero compose de 12 chifeur donc positif (unsigned) en
utilise long long int
* nom prenom addresse email sont des information de type char.
*age information de type int
*moudules c est un type perssonal.
Les founction:
void ajouter()
pour ajouter un etudient
FILE *f=fopen([Link],"w");
ovreteur d un fichier de type ecrit nomer avec etudient nom.
Et pour stocker les information en utilise le founction de
<stdio.h> bib fprintf();
GUERFI AMIRA CHERADI MANEL G1
exmple:fprintf(f,"nom:%s\n",[Link]);
FILE *nom=fopen("les_noms.txt","a");
en overier un authere fichier pour stocker les nom de les etudient
en mode appande que nous utilise dans founction affichier.
En utilise les fonction scanw(pour pround les information)et
printw(pour affiches sur l’eceren) que sont des founction de
ncurses.
Le temp que nous termenous ajoutous les information ne fermer les
deux fichier nom et f avec la founction fclose(le pointeur);
Exemple:
fclose(nom);
fclose(f);
la deuxieme founction:
void afficher()
ce founction pour afficher tous les etudient avec les information
dans l’ecren a l’aide de le fichier “les_noms.text” et la boucle
while(condition){
code
}
donc en overir le fichier en mode lectteur (“r”) donc en verifier
ask le fichier est vide avec une petit condition
si no en utilisons la boucle
if (nom==NULL) {
printw("Aucun etudiant enregistre.\n");
}
si le fichier est vide le programme afiche Aucun etudiant enregistre.
//si no//
else
{
while (fgets(n,50,nom)!=EOF)
{
f=fopen(n,"r");
while (fgets(FAQ,50,f)!=EOF)
{
printw("%s",FAQ);
refresh();
GUERFI AMIRA CHERADI MANEL G1
}
fclose(f);
return;
}
fclose(nom);}
en utilisuons fgets pour prend les information les paramater sont
(n==>variable pour stocker les infos dans fichier )
(50==>la tille de le varible)
(f==> pointeur de le fichier)
EOF= end of file donc tanque nous ne sommes pas arrives a la fin
de le fichier nous prend les info et stocker de variable n
et utilise ce info pour overier les fichier de les etudient
et afficher les info de les etudient dans l’ecren.
Troisiem fouction est:
void rechercher() {
char information[500];
char nomRecherche[MAX_NAME_LENGTH];
printw("Nom de l'etudiant a rechercher : ");
scanw("%s", nomRecherche);
FILE *F=fopen(nomRecherche,"r");
if(F==NULL) {
printw("Aucun etudiant trouve avec ce nom.\n");
}
else{
while(fgets(information,500,F)!=EOF){
printw("%s",information);
}
}
fclose(F);
}
en prend les le nom de le etudient de l’utilisateur en ouverir le
fichier avec fopen c’est l’etudient n’exist pas le programme
afficher Aucun etudiant trouve avec ce nom
si no le program affiche les info de l’etudient
4eme founction:
void modifier()
GUERFI AMIRA CHERADI MANEL G1
modifier est une deux en un en utilise la fonction rechercher pour
trouver l etudient que nous vous modifier les information et en
utilise ajouter pour les neveau information
5eme founction:
void supprimer() {
char nomSuppr[MAX_NAME_LENGTH];
printw("Nom de l'etudiant a supprimer : ");
scanw("%s", nomSuppr);
for (int i = 0; i < nombreEtudiants; i++) {
if (strcmp(etudiants[i].nom, nomSuppr) == 0) {
for (int j = i; j < nombreEtudiants - 1; j++) {
etudiants[j] = etudiants[j + 1];
}
nombreEtudiants--;
int s=remove(nomSuppr);
if (s==0){
printw("L'etudiant a ete supprime avec succes.\n");
}
else{
printw("Error\n");
}
return;
}
}
printw("Aucun etudiant trouve avec ce nom.\n");
}
en trouve letudient et effacer dans le tableu de les etudient et
effacer le fichier de l etudient avec founction remove()de le type
int que return 0 si le fichier est supprime si non elle return
numbre deferent
6eme founction
oid calculer_moyenne() {
char nomCalc[MAX_NAME_LENGTH];
float sommeCoefficients = 0;
float sommeNotes = 0;
printw("Nom de l'etudiant dont vous souhaitez calculer la moyenne : ");
scanw("%s", nomCalc);
for (int i = 0; i < nombreEtudiants; i++) {
if (strcmp(etudiants[i].nom, nomCalc) == 0) {
for (int j = 0; j < MAX_MODULES; j++) {
scanw("%d",& etudiants[i].modules[j].coefficient);
scanw("%f",& etudiants[i].modules[j].note);
GUERFI AMIRA CHERADI MANEL G1
sommeCoefficients += etudiants[i].modules[j].coefficient;
sommeNotes += etudiants[i].modules[j].note * etudiants[i].modules[j].coefficient;
}
if (sommeCoefficients > 0) {
etudiants[i].moyenne = sommeNotes / sommeCoefficients;
printw("La moyenne de l'etudiant est : %.2f\n", etudiants[i].moyenne);
} else {
printw("Aucun module n'a ete enregistre pour cet etudiant.\n");
}
return;
}
}
printw("Aucun etudiant trouve avec ce nom.\n");
}
l utilisateur donne le nom de lmodules conficion et la note et la
founction calcule le moyen
la partie main():
initscr();
pour entrer mode ncurses
getmaxyx(stdscr,x,y);
la fonction getmaxyx un founction utiliser pour donner la taille
de l ecren (stdscr) et stocker le numbre de line dans x et de
colone dans y.
WINDOW *xoxo=newwin(x/2,y/2,10,10);
pour prend un espace dans l ecren
box(xoxo,0,0);
pour disgner un box
keypad(xoxo,true);
pour donner la ability de utiliser le clavier
for (int i = 0; i < 6; i++)
{
if(i==0){
wattron(xoxo,A_STANDOUT);
}
else{
wattroff(xoxo,A_STANDOUT);
}
mvwprintw(xoxo,i+1,2,"%s",choix[i]);
GUERFI AMIRA CHERADI MANEL G1
}
pour couleurier les choix en utlise la fonction wattron que donne
un effet
et wattroff pour efacer l efet
while ((cho=wgetch(xoxo))!='q')
{
mvwprintw(xoxo,highlight+1,2,"%s",choix[highlight]);
switch (cho)
{
case KEY_UP:
highlight--;
if (highlight==-1)
{
highlight=0;
}
break;
case KEY_DOWN:
highlight++;
if (highlight==6)
{
highlight=5;
}
break;
en utilise while boucle pour eter sur que le programme est valider
jusque l utilisateur quitter avec boutoun q
et switch case pour utilise les flache dans le clavier
case '\n':
switch(highlight) {
case 0:
clear();
ajouter();
getch();
clear();
refresh();
goto hna;
break;
case 1:
clear();
afficher();
getch();
refresh();
GUERFI AMIRA CHERADI MANEL G1
clear();
refresh();
goto hna;
break;
case 2:
clear();
rechercher();
getch();
clear();
refresh();
goto hna;
break;
case 3:
clear();
modifier();
getch();
clear();
refresh();
goto hna;
break;
case 4:
clear();
supprimer();
getch();
clear();
refresh();
goto hna;
break;
case 5:
clear();
calculer_moyenne();
getch();
clear();
refresh();
goto hna;
default:
break;
}
if (cho==10)
{
break;
}
}
wattron( xoxo, A_STANDOUT );
GUERFI AMIRA CHERADI MANEL G1
mvwprintw( xoxo, highlight+1, 2, "%s",choix[highlight]);
wattroff( xoxo, A_STANDOUT );
finalmant en utilise switch cases pour appler les founction
d’apres le choix de l’utilisateur et en termine le mode ncurses
avec la founction
endwin();