Sto leggendo il link che mi hai passato sull' MVC.Molto interessante.
Ho iniziato a scrivere un pezzo del programma,ma e' sorto un problema.
Innanzitutto posto il codice:
codice:
//Progetto Corso di Fondamenti di Programmazione anno 2009
#include <iostream>
#include <fstream>
#include <conio.h>
#include <vector>
#define MAX_LOAD_SIZE 500
using namespace std;
class persona{
public:
//riempire
};
class studente : public persona
{
public:
studente();
~studente();
void getDati();
void saveDati();
void cercaModifica(int);
private:
ofstream salvaStud;
ifstream leggi;
char s_cognome[20];
char s_nome[20];
int s_matricola;
int s_annoc;
int s_giorno;
int s_mese;
int s_anno;
int s_recapito;
int vec_count;
char s_email[40];
char *pathS;
vector<string> vecLeggi;
};
//inizializzazione funzioni classe STUDENTE
studente::studente()
{
s_annoc=s_mese=s_giorno=s_anno=s_matricola=vec_count=0;
pathS="studenti.txt";
vector<string> vecLeggi(MAX_LOAD_SIZE);
if(!salvaStud)
{
cout<<"File creation error :studenti.txt";
exit(1);
}
if(!leggi)
{
cout<<"File reading error :studenti.txt";
exit(1);
}
}
studente::~studente()
{
salvaStud.close();
leggi.close();
}
void studente::getDati()
{
cout<<endl<<"Cognome:"<<endl;
cin>>s_cognome;
cout<<"Nome:"<<endl;
cin>>s_nome;
cout<<"Matricola:"<<endl;
cin>>s_matricola;
cout<<"Anno di corso:"<<endl;
cin>>s_annoc;
cout<<"Data di nascita:"<<endl
<<"giorno:"<<endl;
cin>>s_giorno;
cout<<"mese:"<<endl;
cin>>s_mese;
cout<<"anno:"<<endl;
cin>>s_anno;
cout<<"Recapito:"<<endl;
cin>>s_recapito;
cout<<"Indirizzo email:"<<endl;
cin>>s_email;
studente::saveDati();
}
void studente::saveDati()
{
ofstream salvaStud(pathS,ios::app);
cout<<endl<<"DEBUG"<<endl
<<"s_cognome="<<s_cognome;
getch();
salvaStud<<s_nome<<endl
<<s_cognome<<endl
<<s_annoc<<endl
<<s_giorno<<"/"<<s_mese<<"/"<<s_anno<<endl
<<s_recapito<<endl
<<s_email<<endl
<<"*"<<endl;
}
void studente::cercaModifica(int x)
{
ifstream leggi(pathS);
while(!leggi.eof())
{
leggi>>vecLeggi[vec_count];
++vec_count;
}
for(int i=0;i<vecLeggi.size();i++)
{
leggi>>vecLeggi[i];
cout<<vecLeggi.at(i);
}
getch();
}
//Fine definizione funzioni classe STUDENTE
//inizio funzione main
int main()
{
persona perS;
studente stuD;
char scelta1;
int scelta1a;
int nmatr;
cout<<"(a) Gestione studenti"<<endl
<<"(b) Gestione insegnamenti"<<endl
<<"(c) Gestione esami"<<endl;
cin>>scelta1;
if (scelta1=='a')
//PRIMO BLOCCO
{
cout<<"Gestione studenti"<<endl
<<"1. Immissione studente"<<endl
<<"2. Modifica e cancellazione"<<endl
<<"3. Elaborazioni e ricerche"<<endl;
cin>>scelta1a;
if(scelta1a==1)
{
//PRIMO SOTTOBLOCCO
stuD.getDati();
}
if(scelta1a==2)
{
cout<<"Numero di matricola:";
cin>>nmatr;
stuD.cercaModifica(nmatr);
}
}
}
La parte che mi da problemi e' quella inerente al vettore vecLeggi().Sono certo che ho fatto qualche stupidata ad inizializzarlo nella classe..
In pratica quando avvio il programma e scelgo le opzioni per modificare i dati del singolo studente,inserisco il numero di matricola e poi il programma va in loop...sembra che non riesca ad effettuare operazioni sul vettore..
Ho scritto in rosso le porzioni di codice a cui mi riferisco.
Spero di esser stato chiaro nell'espormi.