Salve a tutti,
premetto che non sono per nulla esperto di programmazione in c++. Sono uno studente e sto avendo molta difficoltà con questo mini progetto.
L'obbiettivo è creare delle strutture che vengano salvate anche su dei file binari ( è un programma tipo per un ospedale e avro un file per i pazienti ed uno per gli esami) in modo tale che quando riaprirò il programma posso riprendere i dati.
A me è venuto in mente di organizzarlo così
questa è la mia struttura
codice:
struct recPazienti {
int codPaz;
char cognomePaz[30];
char nomePaz[30];
char dataNascita[15];
int telefonoPaz;
};
Dal menu principale con una voce mando una funzione che carica struttura. Ecco a funzione :
codice:
void nuovoPaziente (recPazienti paziente[],int &i){
int cont;
system("CLS");
cout<<"\n Quanti pazienti vuoi inserire ?";
cin>>cont;
cout<<"\n Inserisci i dati richiesti";
do {
cout<<"\n\n Codice del paziente : ";
cin>>paziente[i].codPaz;
cout<<" Cognome : ";
cin>>paziente[i].cognomePaz;
cout<<" Nome : ";
cin>>paziente[i].nomePaz;
cout<<" Data di nascita : ";
cin>>paziente[i].dataNascita;
cout<<" Numero di telefono : ";
cin>>paziente[i].telefonoPaz;
cout<<"\n~~~~~~~~~~~~~~~~~~~~~~~~~~";
fflush(stdin);
i++;
cont--;
scriviFilePaziente(paziente);
} while(cont!=0);
}
Poi come vedete appena carico un paziente lo metto subito anche su file con questa funzione :
codice:
void scriviFilePaziente(recPazienti paziente[]){
pPaz=fopen("Pazienti.dat","ab");
if (pPaz==NULL){
printf("ERRORE : File Pazienti.dat non aperto");
return;
}
fwrite(&paziente, sizeof(recPazienti),1,pPaz);
fclose(pPaz);
}
e fino a qui ok. Dopo con un altra voce del menu' principale chiamo due funzioni
Una che mette i dati dal file alla struttura :
codice:
void caricaStrPaz(recPazienti paziente[], int &i){
int n;
pPaz=fopen("Pazienti.dat","rb");
if (pPaz==NULL){
printf("Il file Pazienti.dat non esiste");
}
while(!feof(pPaz)){
n = fread(&paziente[i], sizeof(recPazienti),1,pPaz);
if (n==1){
i++;
}
}
fclose(pPaz);
}
e l'altra funzione che alla fine mi visualizza la struttura
codice:
void visualPaz(recPazienti paziente[], int num){
int i;
system("CLS");
cout<<"\n Elenco dei dati di tutti i pazienti "<<endl;
for (i=0;i<num;i++){
cout<<"\n Codice del paziente : "<<paziente[i].codPaz;
cout<<"\n Cognome : "<<paziente[i].cognomePaz;
cout<<"\n Nome : "<<paziente[i].nomePaz;
cout<<"\n Data di nascita : "<<paziente[i].dataNascita;
cout<<"\n Numero di telefono : "<<paziente[i].telefonoPaz;
cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
cout<<"\n Premere un tasto per tornare al menu' principale...";
getch();
}
nel main oltre al menu switch ho questo :
codice:
ecPazienti paziente[DIM]; (dim lo definito a 1000)
int posPaz=0,posEsa=0;
e queste sono le chiamate delle funzioni sopra riportate :
codice:
nuovoPaziente(paziente,posPaz);
caricaStrPaz(paziente,posPaz);
visualPaz(paziente,posPaz);
Il programma non funziona per nulla. Non visualizza niente di quello che deve ma solo caratteri strani al posto dei dati.
Se qualcuno ha la pazienza di aiutarmi gliene sarei grato. Sto impazzendo ed è un lavoro molto importante.