Programmi C / C++ - prof. Claudio Maccherani - Perugia - 2008
Gestione Archivio SEQUENZIALE
/* Gestione Archivio SEQUENZIALE, Dev-C++, prof.Claudio Maccherani, 2008 il file "FileSeq.txt" contiene 'studenti' con record così strutturati: +----------+------+-------+--------+---------+-----+-----+-----+ |matricola | nome | sesso | classe | sezione |corso|tasse|città| +----------+------+-------+--------+---------+-----+-----+-----+ */ #include
#include
#include
#include
FILE *fp; // fp è il "file pointer" che conterrà il descrittore del file int matr,classe,tasse; // matricola, classe,tasse char sex,sez; // sesso, sezione char nome[31],corso[3],citta[21]; // nome, corso, città (NB: 30+1, 2+1,20+1) void creazione(); // creazione/azzeramento archivio e registrazione di 1 record void aggiunta(); // aggiunta, registrazione di un nuovo record void scrittura(); // scrive un record nel file void elenco(); // elenco studenti void ricerca(); // ricerca di uno studente int main() { // programma principale ------------------------------------------ int scelta; do { system("cls"); scelta = -1; cout<<"Gestione file STUDENTI 'sequenziale' \n"; cout<<"1 - Aggiunta record\n"; cout<<"2 - Elenco record\n"; cout<<"3 - Ricerca record\n"; cout<<"9 - Creazione file\n"; cout<<" scegli (0=fine) "; cin>>scelta; switch (scelta) { case 1: { aggiunta(); break; } case 2: { elenco(); break; } case 3: { ricerca(); break; } case 9: { creazione(); break; } } } while (scelta!= 0); return 0; } void creazione() {// creazione/azzeramento archivio e registrazione di un record fp = fopen("FileSeq.txt", "w"); // apre il file in modalità "w": write cout<<"Archivio creato / azzerato !\n"; scrittura(); // memorizza un record fclose(fp); } void aggiunta() { // aggiunta - memorizzazione di un nuovo record -------------- fp = fopen("FileSeq.txt", "a"); // apre il file in modalità "a": append scrittura(); // memorizza un record fclose(fp); } void scrittura() { // scrive un record nel file -------------------------------- cout<<"Matricola "; cin>>matr; cout<<"Nome "; cin>>nome; cout<<"Sesso "; cin>>sex; cout<<"Classe "; cin>>classe; cout<<"Sezione "; cin>>sez; cout<<"Corso "; cin>>corso; cout<<"Tasse "; cin>>tasse; cout<<"Citta' "; cin>>citta; // memorizzazione record studente fprintf(fp,"%i %s %c %i %c %s %i %s\n", matr,nome,sex,classe,sez,corso,tasse,citta); cout<<"record registrato !\n"; system("pause"); } void elenco() { // elenco studenti --------------------------------------------- fp = fopen("FileSeq.txt", "r"); // apre il file in modalità "r": read while (!feof(fp)) { // lettura record studente fscanf(fp,"%i %s %c %i %c %s %i %s\n", &matr,&nome,&sex,&classe,&sez,&corso,&tasse,&citta); cout<
>matrx; fp = fopen("FileSeq.txt", "r"); // apre il file in modalità "r": read while (!feof(fp) && trovato==0) { // lettura record studente fscanf(fp,"%i %s %c %i %c %s %i %s\n", &matr,&nome,&sex,&classe,&sez,&corso,&tasse,&citta); if (matr == matrx) { // controlla se il record è quello cercato cout<