/*---------------------------*/ /*Bulletin Board*/ /*--------------------------*/ #include #include #include #include typedef struct { char argomento[50]; char notizia[200]; char autore[50]; } Infos; typedef char stringa[40]; //dichiarazione funzioni utili per il programma void controllo(int &control); void psw(stringa password,int &n); void carica(int argc,char **argv); void interfaccia(FILE *NotizieFile); void Aggiungi(FILE *NotizieFile); void LeggiPos(FILE *NotizieFile); void CercaNome(FILE *NotizieFile); void StampaArgomenti(FILE *NotizieFile); void elimina(FILE *NotizieFile); void modifica(FILE *NotizieFile); void reset(FILE *NotizieFile); void main(int argc,char **argv) { int control=0; cout<<"\n********BULLETIN BOARD********\n"; do { controllo(control); if(control==0) { carica(argc,argv); control=3; } }while(control<3); cout<<"\n Il lavoro e' finito...\n"; } void controllo(int &control) { int n; stringa password; cout<<"\nInserisci password: "<>password; //gets(password); psw(password,n); if(n==1) { cout<< "\n la password è esatta!"; control=0; } else { cout<<"\n la password è errata!"; control=control+1; } } void psw(stringa password,int &n) { int i,j,a,b; stringa parola; /*assegno come password di default la parola napoli*/ strcpy(parola,"napoli "); cout<<"\nla password di default è napoli"; /*conta dei caratteri*/ a=strlen(password); b=strlen(parola); /*controllo*/ n=0; cout<<"\n\ncontrollo :"<]\n"); TuttoOK=0; break; } /* Apriamo il notebook */ NotizieFile=fopen(NomeFile,"a+"); if (NotizieFile==NULL) { printf("\nErrore in apertura del file\n"); TuttoOK=0; } /*Se tutto è a posto Iniziamo a lavorare lanciando l'interfaccia...*/ if(TuttoOK!=0) { interfaccia(NotizieFile); /* Il lavoro e' concluso... */ fclose(NotizieFile); } } void interfaccia(FILE *NotizieFile) { int cont; int Val; cont=1; while(cont==1) { cout<<"\n\n"; cout<<"\n**************************"; cout<<"\n* BULLETIN BOARD *"; cout<<"\n* MENU: *"; cout<<"\n**************************"; cout<<"\n* Aggiungi: 1 *"; cout<<"\n* Leggi per pos.: 2 *"; cout<<"\n* Cerca per nome: 3 *"; cout<<"\n* Argomenti in mem.: 4 *"; cout<<"\n* Cancella notizia: 5 *"; cout<<"\n* Reset memoria: 6 *"; cout<<"\n* Modifica notizia 7 *"; cout<<"\n* Finisci: 0 *"; cout<<"\n**************************"; cout<<"\n\nInserisci la tua scelta: "; cin>>Val; cout<<"\nHai scelto: "<"; break; } } } /* Output video */ void Stampa(Infos tmp) { cout<<"\nArgomento: "<"; } /* Procedura per la richiesta dei nuovi dati: richiama i programmi di interfaccia e quelli che effettuano le operazioni sul file */ void Aggiungi(FILE *NotizieFile) { Infos tmp; /* elminazione bug (è presente perchè si usa la funz. gets())*/ char bug[10]; gets(bug); /* Richiesta dei dati da inserire */ cout<<"\nInserisci l'argomento:"<>Pos; if(Pos<=(i-1) && Pos>0) { fseek(NotizieFile,0,SEEK_SET); while(!feof(NotizieFile)&&(actpos!=Pos)) { fseek(NotizieFile,sizeof(tmp),SEEK_CUR); actpos++; } if (actpos!=Pos) { cout<<"\nNon ci sono sufficienti elementi\n"<>*/gets(lArgomento); //Posizionati all'inizio del file fseek(NotizieFile,0,SEEK_SET); while(!feof(NotizieFile) && control==0) { fread(&tmp,sizeof(tmp),1,NotizieFile); if (strcmp(tmp.argomento,lArgomento)==0) { Stampa(tmp); control=1; } } if(control==0) cout<<"\n"; } void modifica(FILE *NotizieFile) { FILE *FileTemp; char ft[20]; Infos tmp; int Pos; int i=0; int j=1; cout<<"\nInserisci la posizione della notizia da modificare:"<>Pos; fseek(NotizieFile,0,SEEK_SET); while( !feof(NotizieFile) ) { fread(&tmp,sizeof(tmp),1,NotizieFile); i++; } if(Pos<=(i-1) && Pos>0) { strcpy(ft,"temp.dat"); FileTemp=fopen(ft,"a+"); fseek(NotizieFile,0,SEEK_SET); fseek(FileTemp,0,SEEK_SET); while( !feof(NotizieFile) && j>Pos; fseek(NotizieFile,0,SEEK_SET); while( !feof(NotizieFile) ) { fread(&tmp,sizeof(tmp),1,NotizieFile); i++; } if(Pos<=(i-1) && Pos>0) { strcpy(ft,"temp.dat"); FileTemp=fopen(ft,"a+"); fseek(NotizieFile,0,SEEK_SET); fseek(FileTemp,0,SEEK_SET); while( !feof(NotizieFile) && j>a; if(a=='s') { fclose(NotizieFile); remove("notizie.dat"); strcpy(local,"notizie.dat"); NotizieFile=fopen(local,"a+"); cout<<"\n"<