codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DIM 15
#define MAX_CORS 10
#define MAX_TEL 10
#define MESI 12
#define OUT 100
/*struct ind {
char via[DIM];
int num;
};*/
struct pers {
char nome[DIM], cognome[DIM], corso[DIM];
char ind[31];
char numTel[MAX_TEL];
char mese;
int giorno, anno;
};
FILE *fp;
struct pers lista;
//Funzioni utilizzate
int menu(void);
int insPer(void);
int cerNom(void);
long cerPer(char *cg, char *nm);
int visEl (void);
void eliPer(long pos);
void canPer (void);
//Main, stampa il menu e lancia la funzione scelta
main(){
int scelta = 0;
while (scelta!=OUT){
switch(scelta){
case 0:
scelta=menu();
if (scelta==0)
scelta = OUT;
break;
case 1:
insPer();
scelta = 0;
break;
case 2:
cerNom();
scelta = 0;
break;
}
}
}
// funzione che visualizza menu
int menu(void)
{
int scelta, vero=1;
char invio;
while(vero){
printf("\n\n\t\t---------MENU---------");
printf("\n\t1. inserisci persona");
printf("\t\t2. cerca per nome");
do{
printf("\n\n\tscegli opzione: ");
scanf("%d", &scelta); }
while(scelta>2 || scelta<0);
return(scelta);
}
return (0);
}
//1. inserimento persona con salvataggio su file
int insPer (void)
{
struct pagamenti *p;
int invio;
printf("\n\n------INSERIMENTO PERSONA------");
fp = fopen("lista.txt", "a+");
printf("\n\n\t\t---------INSERIMENTO---------");
printf("\n");
printf("\n\t Nome: ");
scanf("%s",&lista.nome);
fflush(stdin);
printf("\n\t Cognome: ");
scanf("%s",&lista.cognome);
fflush(stdin);
printf("\n\t Indirizzo: ");
scanf("%s",&lista.ind);
fflush(stdin);
printf("\n\t Numero telefono: ");
scanf("%s",&lista.numTel);
fflush(stdin);
printf("\n \t Corso: ");
scanf("%s",&lista.corso);
fflush(stdin);
printf("\n\tGiorno ultimo pagamento: ");
scanf("%d",&lista.giorno);
printf("\n\tMese ultimo pagamento: ");
scanf("%s",&lista.mese);
printf("\n\tAnno ultimo pagamento: ");
scanf("%d", &lista.anno);
fwrite(&lista, sizeof(struct pers), 1, fp);
fclose(fp);
}
//2. ricerca per nome
int cerNom(void)
{
char nome[DIM],cognome[DIM],pausa;
long pos;
printf("\n\t\t\t-------CERCA--------");
printf("\n\tNome: ");
scanf("%s",&lista.nome);
printf("\n\tCognome: ");
scanf("%s",&lista.cognome);
scanf("%c", &pausa);
pos==cerPer(cognome, nome);
if(pos==-1){
printf("\nLa persona cercata non è nella scuola");
scanf("%c", &pausa);
//return(0);
}
else{
printf("\n----------------------------");
printf("\nCognome: %s",lista.cognome);
printf("\nNome: %s",lista.nome);
printf("\nIndirizzo: %s",lista.ind);
printf("\nNumero di telefono: %s",lista.numTel);
printf("\nUltimo pagamento il : %d di %s del %d",lista.giorno, lista.mese, lista.anno);
printf("\n----------------------------");
scanf("%c",&pausa);
// return(0);
}}
//scansione elenco per cercare nomi
long cerPer(char *cg, char *nm)
{
int n;
long pos;
fp= fopen("lista.txt","r");
for( ; ; ){
n=fread(&lista, sizeof(struct pers), 1,fp);
if(n==0){
fclose(fp);
pos=-1;
return(pos);
}
else{
if(strcmp(cg, lista.cognome))
if(strcmp(nm, lista.nome))
pos=ftell(fp);
fclose(fp);
return(pos-sizeof(struct pers));
}
}
}