Salve a tutti, prima di scrivere o cercato una soluzione fra le varie discussioni ma non sono riuscito ancora a capire come risolvere il mio problema...

Ho esigenza di salvare su un file dei dati relativi a dei dipendenti, e in seguito poterli gestire (cancellare, visualizzare, ecc...)

Di seguito riporto il codice che ho creato che però mi da qualche problema, non sò se ho fatto bene o se ci sono dei modi per scriverlo più facilmente.

Utilizzo Visual C++ 2008 Express Edition come compilatore.


codice:
#include <iostream>
#include <string>

using namespace std;

void carica();
void cancella();
void visualizza();

struct dipendente{	
					int matricola;
					string nome;
					string cognome;
					int settore;

					};

typedef struct dipendente dip;
dip database;

FILE *azienda;

void main(){

	int scelta;

cout<<"Database gestione dipendenti" << endl << "---------------------------------" << endl << endl << endl;

cout<< "MENU\n1) Inserisci dip\n2) Cancella dip\n3) Visualizza elenco dip\n0) Uscita";

do{
	cout<< "\n\n\nscelta --> ";
	cin>> scelta;

	switch(scelta){

		case 1: 
				azienda = fopen("database.dat","wb");	
				carica();
				fclose(azienda);
				break;

		case 2: 
				azienda = fopen("database.dat","wb");
				if (azienda != NULL)cancella();
				fclose(azienda);
				break;

		case 3: 
				azienda = fopen("database.dat","rb");
				visualizza();
				fclose(azienda);
				break;

		case 0: 
				break;

		default: 
				cout<<"\n\nError";
				break;

}
    }while(!scelta);


}


void carica(){

char selezione;

fwrite(&database, sizeof(struct dipendente), 1, azienda);

cout<< "\n\n\nCaricamento dati dipendente\n\n\nmatricola:  ";
cin>> database.matricola;
cout<< "\nnome:  ";
cin>> database.nome;
getline(cin, database.nome);
cout<<"\ncognome:  ";
cin>> database.cognome;
getline(cin, database.cognome);
cout<< "\nsettore:  ";
cin>> database.settore;

cout<< "\n\n\n\ninserire un nuovo record? <s/n>";
cin>> selezione;

if(selezione == 's') {carica();}

return;
}





void cancella(){

}



void visualizza(){

fread(&database, sizeof(struct dipendente), 1, azienda);

cout<<"Visualizzazioe elenco dipendenti\n----------------------------";

while(!feof(azienda)){

cout<< "\n\n\n\nmatricola:  " << database.matricola;
cout<< "\nnome:  " << database.nome;
cout<<"\ncognome:  " << database.cognome;
cout<< "\nsettore:  " << database.settore;
fread(&database, sizeof(struct dipendente), 1, azienda);

}

return;

}
Sto imparando ad usare il C++, mi servirebbero anche dei suggerimenti su come cancellare i record, infatti se avete notato la funzione è vuota...

Spero di essere stato il più chiaro possibile e vi ringrazio anticipatamente, attendo vostri suggerimenti.