Muro di cinta
03-03-2006, 16:08
:help: :help: :help: :help: :help: :help:
Da qualche giorno ho realizzato un programma in c++ di più di 1300 righe, ora, errori di debug non me ne dà nessuno, ma in esecuzione mi dà problemi nelle varie verifiche all'interno del programma (proprio su questo richiede l'aiuto, su cui il problema mi sta facendo uscire matto :muro: , ora sto cercando qualcuno che sia bravo in c++ il quale mi possa contattare in pvt così posso spiegare meglio il funzionamento del programma, dato che si tratta di utilizzo di file e pure gli passo anche il programma così se ne si parla insieme.
Ho già contattato altri siti e rispettivi forum, ma spero che ci sia anche qua qualcuno che mi possa dare una mano.
grazie mille e chi mi risponderà.
:D
Muro di cinta
05-03-2006, 09:54
dato che nessuno mi risponde posto il programma intero così potete darci un'occhiata.ho segnalato il problema dove ci stà la faccina con il muro.
grazie ragazzi se mi date una mano. :) perchè sono in crisi. :help:
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
#define Max 100 // max array di classi
using namespace std;
int nr_stud; // Contano il numero di oggetti letti dal file di testo
int nr_corsi;
int nr_piani;
char sep; // Seperatore di data
ifstream ifilestud,ifilecorsi,ifilepiani; //Dichirazione dei file
ofstream ofilestud,ofilecorsi,ofilepiani;
bool risultato=false;
int calcola();
int mem_filestud();
int mem_filecorsi();
int mem_filepiani();
void aggiorna_stud();
void aggiorna_corsi();
void aggiorna_piani();
void tipo(int & b);
void gestione_studenti();
void gestione_corsi();
void gestione_piani();
void ricerca();
void ricerca_c();
void ricerca_m();
void rice_piano();
void elab_rice();
void modificazione_stud();
void modificazione_corsi();
void modificazione_piani();
void cancellazione_stud();
void cancellazione_corsi();
void cancellazione_piani();
void carica(int b[]);
void sett(char b[]);
void nr_studenti();
void nominativi();
string maiuscolo(string s);
void verifica();
string maiuscolo(string s,int n);
int cfu(int codice);
// la classe studente
class Studente {
private:
string cogn; // Il cognome del studente
string nome; // Il nome del studente
int matri; // Numero di matricola studente
int anno; // Nr. anno di corso
int gg,mm,aa; // Data di nascita di studente
string reca; // Il recapito
string e_mail; // L'indirizzo di email del studente
public:
void leggi()
{ //Metodo per leggere da std input
cout << "Inserisci cognome: " << endl;
getline(cin,cogn);
getline(cin,cogn);
cogn=maiuscolo(cogn);
cout << "Inserisci nome: " << endl;
getline(cin,nome);
nome=maiuscolo(nome);
cout<<"Inserisci matricola: " << endl;
tipo(matri);
cout << "Inserisci anno di studio: " << endl;
tipo(anno);
cout<<"Inserisci data di nascita " << endl;
do{
cout<<"Inserisci giorno di nascita" << endl;
tipo(gg);
cout<<"Inserisci mese di nascita" << endl;
tipo(mm);
cout<<"Inserisci anno di nascita" << endl;
tipo(aa);
if((gg<0 || gg>31) || ( mm<0 || mm>12) || (aa>2005))
cout<<"Dati errati! Riprova: ";
}while((gg<0 || gg>31) || (mm<0 || mm>12) || (aa>2005));
cout<<"Inserisci recapito: " << endl;
getline(cin,reca);
getline(cin,reca);
reca=maiuscolo(reca);
cout<<"Inserisci l'indirizzo del'email: " << endl;
getline(cin,e_mail);
}
void carica_file()
{ //Metodo per caricare dal file
ifilestud >> cogn;
ifilestud >> nome;
ifilestud >> reca;
ifilestud >> e_mail;
ifilestud >> gg >> sep >> mm >> sep >> aa;
ifilestud >> matri;
ifilestud >> anno;
}
void modifica()
{ //Metodo di modifica
cout<<"Inserisci nuovo anno di corso: ";
tipo(anno);
cout<<"Inserisci nuovo recapito: ";
getline(cin,reca);
getline(cin,reca);
cout<<"Inserisci nuovo l'indirizzo e-mail: ";
getline(cin,e_mail);
}
void scrive()
{ //Metodo per scrivere nell file
ofilestud << cogn << endl << nome << endl << reca <<
endl << e_mail << endl << gg << "/" << mm << "/" << aa <<
endl << matri << endl << anno;
}
void cancella()
{ //Metodo per cancellare
cogn="";
nome="";
}
void show()
{ //Metodo per visualizare
cout <<"Cognome: "<< cogn << endl;
cout <<"Nome: "<< nome << endl;
cout <<"Matricola: "<< matri << endl;
cout <<"Anno: "<< anno << endl;
cout <<"Data di nascita: "<< gg<<"/"<<mm<<"/"<<aa<<endl;
cout <<"Recapito: "<< reca << endl;
cout <<"E-mail: "<< e_mail << endl;
}
string cognome()
{
return cogn;
}
string no() //Metodi per gli scope
{
return nome;
}
int matricola()
{
return matri;
}
};
//La classe Corso
class Corso {
private:
string temp;
string titolo;
int codice;
string settore;
int cfu;
int anno;
int semestre;
int prope;
public:
void carica_file()
{
ifilecorsi >> codice;
getline(ifilecorsi,titolo);
getline(ifilecorsi,titolo);
getline(ifilecorsi,settore);
ifilecorsi >> cfu;
ifilecorsi >> anno >> semestre;
ifilecorsi >> prope;
ifilecorsi >> temp;
}
void leggi()
{ string temp; int n;
cout<<"Inserisci titolo del corso: ";
getline(cin,titolo);
getline(cin,titolo);
titolo=maiuscolo(titolo);
cout<<"Inserisci il settore del corso(Maiuscolo): ";
getline(cin,settore);
n=settore.size();
settore=maiuscolo(settore,n);
cout<<"Inserisci cfu del corso: ";
do{
tipo(cfu);
if(cfu<1 || cfu>7)cout<<"Il cfu errato RIPROVA!: ";
}while(cfu<1 || cfu>7);
cout<<"Inserisci anno di corso: ";
do{
tipo(anno);
if(anno<1 || anno>3)cout<<"Anno errato RIPROVA!: ";
}while(anno<1 || anno>3);
cout<<"Inserisci semestre di corso: ";
do{
tipo(semestre);
if(semestre<1 || semestre>2)cout<<"Semestre errato RIPROVA!: ";
}while(semestre<1 || semestre>2);
cout<<"Inserisci propedeuticità del corso:(Inserisci -1 apposto di '0' ";
do{
cin>>temp;
if(atoi(temp.c_str())==0)cout<<"Hai inserito un dato non valido ripeti"<<endl;
else if(atoi(temp.c_str())<0)prope=0;
if(atoi(temp.c_str())>0)prope=atoi(temp.c_str());
}while(atoi(temp.c_str())==0);
}
void modifica()
{
cout<<"Inserisci anno di corso: ";
do{
tipo(anno);
if(anno<1 || anno>3)cout<<"Anno errato RIPROVA!: ";
}while(anno<1 || anno>3);
cout<<"Inserisci semestre di corso: ";
do{
tipo(semestre);
if(semestre<1 || semestre>2)cout<<"Semestre errato RIPROVA!: ";
}while(semestre<1 || semestre>2);
cout<<"Inserisci propedeuticità del corso: ";
tipo(prope);
}
void scrive()
{
ofilecorsi << endl;
ofilecorsi << titolo << endl;
ofilecorsi << settore << endl;
ofilecorsi << cfu << endl;
ofilecorsi << anno << ' ' << semestre << endl;
ofilecorsi << prope << endl;
}
void cancella()
{
titolo="";
codice=0;
}
void show()
{
cout <<"Codice corso: "<< codice << endl;
cout <<"Titolo corso: "<< titolo << endl;
cout <<"Settore corso: " <<settore << endl;
cout <<"CFU corso: "<< cfu << endl;
cout <<"Anno e Semestre corso: "<<anno<<" "<<semestre<<endl;
cout <<"Propedeuticita': "<< prope <<endl;
}
string tito()
{
return titolo;
}
int codi()
{
return codice;
}
string set()
{
return settore;
}
int CFU()
{
return cfu;
}
};
//La classe Piani
class Piani {
private:
int ma;
int inf[10];
int mat[10];
int ect[10];
public:
void carica_file()
{
ifilepiani >> ma;
carica(inf);
carica(mat);
carica(ect);
}
void leggi()
{ int i; string temp;
cout<<"Inserisci matricola(premi ^?^ per andare alla ricerca di studenti)"<<endl;
do{
cin>>temp;
if(temp.compare("?")==0){ricerca();
cout<<"Inserisci matricola(premi ^?^ per andare alla ricerca di studenti)"<<endl;cin>>temp;}
else
if(atoi(temp.c_str())<=0 && atoi(temp.c_str())>32)
cout<<"Hai inserito un dato non valido"<<endl;
}while(atoi(temp.c_str())<=0 && atoi(temp.c_str())>32);
ma=atoi(temp.c_str());
cout<<"Inserisci i codici dei corsi nel settore INF,ING-INF/05."<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore )"<<endl;
for(i=0;i<10;i++)
{
do{
cin>>temp;
if(temp.compare("?")==0){sett("INF");sett("ING-INF/05");
cout<<"Inserisci i codici dei corsi nel settore INF,ING-INF/05."<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore)"<<endl;
cin>>temp; break; }
else
if(atoi(temp.c_str())==0 && atoi(temp.c_str())>32)cout<<"Numero non valido ripeti"<<endl;
}while(atoi(temp.c_str())==0 && atoi(temp.c_str())>32);
if(atoi(temp.c_str())>0 && atoi(temp.c_str())<60){inf[i]=atoi(temp.c_str());}
else
if(atoi(temp.c_str())==-1)break;
}
cout<<"Inserisci i codici dei corsi nell settore BIO,CHIM,FIS,GEO,MAT"<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore)"<<endl;
for(i=0;i<10;i++){
do{
cin>>temp;
if(temp.compare("?")==0){sett("BIO");sett("CHIM");sett("FIS");sett("GEO");sett("MAT");
cout<<"Inserisci i codici dei corsi nell settore BIO,CHIM,FIS,GEO,MAT"<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore)"<<endl;
cin>>temp;
break;}
else
if(atoi(temp.c_str())==0 && atoi(temp.c_str())>32)cout<<"Numero non valido ripeti"<<endl;
}while(atoi(temp.c_str())==0 && atoi(temp.c_str())>32);
if(atoi(temp.c_str())>0 && atoi(temp.c_str())<60){mat[i]=atoi(temp.c_str());}
else
if(atoi(temp.c_str())==-1);
break;
}
cout<<"Inserisci i codici dei corsi negli altri settori."<<endl;
cout<<"(premi ^ -1 ^ per finire o ^ ? ^ per visualizzare i corsi nel questo settore)"<<endl;
for(i=0;i<10;i++){
do{
cin>>temp;
if(temp.compare("?")==0){sett("ING-INF/01");sett("ING-IND");sett("ING-INF/03");
cout<<"Inserisci i codici dei corsi negli altri settori."<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore)"<<endl;
cin>>temp;
break;}
else
if(atoi(temp.c_str())==0 && atoi(temp.c_str())>32)cout<<"Numero non valido ripeti"<<endl;
}while(atoi(temp.c_str())==0 && atoi(temp.c_str())>32);
if(atoi(temp.c_str())>0 && atoi(temp.c_str())<60){ect[i]=atoi(temp.c_str()); }
else
if(atoi(temp.c_str())==-1);
break;
}
}
void scrive()
{
ofilepiani<<endl;
ofilepiani<<ma<<endl;
for(int i=0;i<10,inf[i]!=0;i++)
{
ofilepiani<<inf[i]<<' ';
}
ofilepiani<<0;
ofilepiani<<endl;
for(int i=0;i<10,mat[i]!=0;i++)
{
ofilepiani<<mat[i]<<' ';
}
ofilepiani<<0;
ofilepiani<<endl;
for(int i=0;i<10,ect[i]!=0;i++)
{
ofilepiani<<ect[i]<<' ';
}
ofilepiani<<0;
}
void show()
{
cout<<"Matricola: "<<ma<<endl;
cout<<"Settore INF e ING-INF/05: ";
for(int i=0;i<10,inf[i]!=0;i++){
cout<<inf[i]<<' ';
}
cout<<endl;
cout<<"Settore BIO, CHIM, FIS, GEO, MAT: ";
for(int i=0;i<10,mat[i]!=0;i++){
cout<<mat[i]<<' ';
}
cout<<endl;
cout<<"Altri settori: ";
for(int i=0;i<10,ect[i]!=0;i++){
cout<<ect[i]<<' ';
}
cout<<endl;
}
void cancella()
{
ma=0;
}
void modifica()
{
int i; string temp;
cout<<"Immetti i codici dei corsi nel settore INF,ING-INF/05."<<endl;
cout<<"(premi ^?^ per finire o ^-1^ per visualizzare i corsi nel seguente settore )"<<endl;
for(i=0;i<10;i++)
{
do{
cin>>temp;
if(temp.compare("?")==0){sett("INF");sett("ING-INF/05");
cout<<"Inserisci i codici dei corsi nel settore INF,ING-INF/05."<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore)"<<endl;
cin>>temp;
break;
}
else
if(atoi(temp.c_str())==0 && atoi(temp.c_str())>32)cout<<"Numero non valido ripeti"<<endl;
}while(atoi(temp.c_str())==0 && atoi(temp.c_str())>32);
if(atoi(temp.c_str())>0 && atoi(temp.c_str())<60){inf[i]=atoi(temp.c_str());}
else
if(atoi(temp.c_str())==-1);
break;
}
cout<<"Inserisci i codici dei corsi nell settore BIO,CHIM,FIS,GEO,MAT"<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore)"<<endl;
for(i=0;i<10;i++){
do{
cin>>temp;
if(temp.compare("?")==0){sett("BIO");sett("CHIM");sett("FIS");sett("GEO");sett("MAT");
cout<<"Inserisci i codici dei corsi nell settore BIO,CHIM,FIS,GEO,MAT"<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore)"<<endl;
cin>>temp;
break;
}
else
if(atoi(temp.c_str())==0 && atoi(temp.c_str())>32)cout<<"Numero non valido ripeti"<<endl;
}
while(atoi(temp.c_str())==0 && atoi(temp.c_str())>32);
if(atoi(temp.c_str())>0 && atoi(temp.c_str())<60){mat[i]=atoi(temp.c_str());}
else
if(atoi(temp.c_str())==-1)
break;
}
cout<<"Inserisci i codici dei corsi negli altri settori."<<endl;
cout<<"(premi ^ -1 ^ per finire o ^ ? ^ per visualizzare i corsi nel questo settore)"<<endl;
for(i=0;i<10;i++){
do{
cin>>temp;
if(temp.compare("?")==0){sett("ING-INF/01");sett("ING-IND");sett("ING-INF/03");
cout<<"Inserisci i codici dei corsi negli altri settori."<<endl;
cout<<"(premi ^-1^ per finire o ^?^ per visualizzare i corsi nel questo settore)"<<endl;
cin>>temp;
break;
}
else
if(atoi(temp.c_str())==0 && atoi(temp.c_str())>32)cout<<"Numero non valido ripeti"<<endl;
}while(atoi(temp.c_str())==0 && atoi(temp.c_str())>32);
if(atoi(temp.c_str())>0 && atoi(temp.c_str())<60){ect[i]=atoi(temp.c_str()); }
else
if(atoi(temp.c_str())==-1)
break;
}
}
int matricola()
{
return ma;
}
bool ver(int b)
{
for(int i=0;i<10;i++) //Metodo per verificare un codice corso
{
if(inf[i]==b)
return true;
if(mat[i]==b)
return true;
if(ect[i]==b)
return true;
}
return false;
}
int i_inf(int index)
{
return inf[index];
}
int i_mat(int index)
{
return mat[index];
}
int i_ect(int index)
{
return ect[index];
}
};
Studente array_studenti[Max];
Corso array_corsi[Max];
Piani array_piani[Max];
//Inizia la main
int main()
{
//Apertura file studenti
ifilestud.open("studenti.txt");
if(ifilestud.fail()){ cout<<"Errore apertura file";
getch();
return 0;}
//Apertura file corsi
ifilecorsi.open("corsi.txt");
if(ifilecorsi.fail()) { cout<<"Errore apertura file";
getch();
return 0;}
//Apertura file piani
ifilepiani.open("piani.txt");
if(ifilepiani.fail()) {cout<<"Errore apertura file";
getch();
return 0;}
nr_stud=mem_filestud(); // Asegna nr totale di studenti letti dal file
nr_corsi=mem_filecorsi(); //Asegna nr totale di corsi letti dal file
nr_piani=mem_filepiani(); //Asegna nr totale di piani letti dal file
cout<<"------Progetto della gestione archivi studenti, corsi e piani di studio---------"<<endl;
cout<<"-------------------------------------"<<endl;
cout<<"IL CARICAMENTO DEL FILE E' STATO UN SUCCESSO!"<<endl;
for(int i=0;i<nr_corsi;i++){
array_corsi[i].show(); //per visualizzare
}
int scelta;
do{
try{
do{
//Il menu generale
cout<<endl;
cout<<"\n MENU':";
cout<<"scegli il percorso che vuoi seguire."<<endl <<endl;
cout<<" 1.Gestione studenti."<<endl;
cout<<" 2.Gestione corsi."<<endl;
cout<<" 3.Gestione piani di studio."<<endl;
cout<<" 4.Per uscire dal programma."<<endl;
do{ cout<<"scelta: ";
tipo(scelta);
cout<<endl;
if(scelta<1 || scelta>4)
cout<<"Scelta sbagliata. puoi scegliere di nuovo. "<<endl;
}while(scelta<1 || scelta>4);
switch(scelta){
case 1: gestione_studenti();
break;
case 2: gestione_corsi();
break;
case 3: gestione_piani();
break;
case 4: cout<<"\n--------ARRIVERDERCI--------";
break;
}
}
while(scelta!=4);
aggiorna_stud();
aggiorna_corsi();
aggiorna_piani(); //aggiornano i dati
ifilecorsi.close();
ofilecorsi.close();
ifilepiani.close();
ofilepiani.close();
ifilestud.close();
ofilestud.close();
}catch(int i)
{
if(i==0){
cout<<"\n Non si trova nessun corso con questi dati"<<endl;
}
else
if(i==1){
cout<<"\n Non si trova nessun piano di studio con questi dati!"<<endl;
}
else {
cout<<"\n Non si trova nessun studente con questi dati"<<endl;
}
}
}
while(scelta!=4);
getch();
return 0;
}
//PARTE IN CUI SONO IMPLEMENTATE LE FUNZIONI VARIE
int mem_filestud()
{ //Si caricano gli studenti nell'array e restituisce il numero degli studenti
int i=0;
while(i<Max && !ifilestud.eof())
{ // studenti.
array_studenti[i].carica_file();
i++;
}
return i;
}
int mem_filecorsi()
{ //Si caricano gli studenti nell'array e restituisce il numero degli studenti
int i=0;
while(i<Max && !ifilecorsi.eof())
{
array_corsi[i].carica_file();
i++;
}
return i;
}
int mem_filepiani()
{ //Si caricano tutti i piani nell'array e restituisce il numero degli studenti
int i=0;
while(i<Max && !ifilepiani.eof())
{
array_piani[i].carica_file();
i++;
}
return i;
}
//si aggiorna l'array dati degli studenti
void aggiorna_stud()
{
ofilestud.open("studenti.txt");
for(int j=0;j<nr_stud;j++) {
if(array_studenti[j].cognome()!="")
array_studenti[j].scrive();
}
return;
}
void aggiorna_corsi()
{ //si aggiorna il database di tutti i corsi
ofilecorsi.open("corsi.txt");
for(int j=0;j<nr_corsi;j++)
{
if(array_corsi[j].tito()!="")
{
ofilecorsi<<endl;
ofilecorsi << j+1;
array_corsi[j].scrive();
ofilecorsi <<"*";
}
}
return;
}
void aggiorna_piani()
{ //si aggiorna il daatabase di tutti i piani
ofilepiani.open("piani.txt");
for(int j=0;j<nr_piani;j++)
{
if(array_piani[j].matricola()!=0)
array_piani[j].scrive();
}
return;
}
void ricerca_c()
{ //Funzione per cercare studente da cognome
string temp;
risultato==true;
cout<<"Dammi il cognome che vuoi cercare: "; <-qua mi dà problemi! :muro:
getline (cin,temp);
getline (cin,temp);
for(int j=0;j<nr_corsi;j++)
{
if(array_studenti[j].cognome().find (temp,0)!=-1)
{
risultato==true;
array_studenti[j].show();
cout<<"clicca un tasto per continuare il programma*\n";
getch();
}
}
if(risultato==false)throw 2;
return;
}
void ricerca_m()
{ //Funzione per cercare studente da matricola
risultato=false; string temp; int c;
cout<<"Dammi il numero di matricola che vuoi cercare"<<endl;
do{
cin>>temp;
if (atoi(temp.c_str())==0)cout<<"Dato non valido ripeti"<<endl;
} while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int j=0;j<nr_stud;j++)
{
if(array_studenti[j].matricola()==c)
{
risultato=true;
array_studenti[j].show();
cout<<"clicca un tasto per continuare il programma*\n";
getch();
}
}
cout<<"Abbiamo trovato queste persone!"<<endl<<endl;
if(risultato==false)throw 2;
return;
}
void ricerca()
{ //Funzione per cercare un studente
int scelta;
do{
cout<<"1. Cerca uno studente a partire da cognome!"<<endl;
cout<<"2. Cerca uno studente a partire da matricola!"<<endl;
cout<<"3. Torna indietro "<<endl;
do{
cout<<"SCELTA: ";
tipo(scelta);
if(scelta<1 || scelta>3) cout<<"Scelta sbagliata. riprova."<<endl;
}while(scelta<1 || scelta>3);
switch(scelta) {
case 1: ricerca_c();
break;
case 2: ricerca_m();
break;
}
}while(scelta!=3);
return;
}
void ricerca_co()
{ //Funzione che cerca corso da suo codice
string temp; risultato=false; int c;
cout<<"Dammi il codice del corso che vuoi ricercare."<<endl;
do{
cin>>temp;
if (atoi(temp.c_str())==0)cout<<"Codice non valido, ripeti."<<endl;
} while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(
int j=0;j<nr_corsi;j++)
{
if(array_corsi[j].codi()==c)
{
risultato=true;
array_corsi[j].show();
cout<<"clicca un tasto per contnuare*\n";
getch();
cout<<"sono presenti questi corsi: "<<endl;
}
}
if(risultato==false) throw 0;
return;
}
void ricerca_ti()
{ //Funzione che cerca una corso da suo titolo
string titolo; risultato=false; int scelta;
cout<<"Dammi il titolo di corso che vuoi cercare"<<endl;
getline(cin,titolo);
for(int j=0;j<nr_corsi;j++)
{
if(array_corsi[j].tito().find(titolo,0) != -1)
{
risultato=true;
array_corsi[j].show();
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
}
}
if(risultato==false)throw 0;
return;
}
void ricerca_cor()
{ //Funzione per ricerca corso
int scelta;
do{
cout<<endl<<endl;
cout<<" Motore di ricerca"<<endl;
cout<<" 1 - Potrai cercare corso apartire da codice !"<<endl;
cout<<" 2 - Potrai cercare corso apartire da titolo!"<<endl;
cout<<" 3 - Per tornare indietro "<<endl;
do{
cout<<"SCELTA: ";
tipo(scelta);
if(scelta<1 || scelta>3) cout<<"Scelta errata! RIPROVA? "<<endl;
}while(scelta<1 || scelta>3);
switch(scelta) {
case 1: ricerca_co(); break;
case 2: ricerca_ti(); break;
}
}while(scelta!=3);
return;
}
void gestione_studenti()
{ //Funzione di gestione dei studenti
int scelta;
cout<<"Benvenuto nel sezione dei studenti"<<endl<<endl;
cout<<"Sono disponibili questi operazioni, scegli apartire dal suo numero"<<endl<<endl;
do{
cout<<"\n MENU"<<endl;
cout<<" 1 - Potrai inserire nuovo studente"<<endl;
cout<<" 2 - Potrai cercare uno studente in base a:"<<endl;
cout<<" Matricola"<<endl;
cout<<" Cognome"<<endl;
cout<<" 3 - Potrai modifcare un studente."<<endl;
cout<<" 4 - Potrai cancellare un studente."<<endl;
cout<<" 5 - Per andare al menu principale"<<endl;
do{
cout<<"SCELTA: ";
tipo(scelta);
if(scelta<1 || scelta>5)cout<<"La scelta errata! RIPROVA? "<<endl;
}while(scelta<1 || scelta>5);
switch(scelta)
{
case 1: array_studenti[nr_stud++].leggi(); break;
case 2: ricerca(); break;
case 3: modificazione_stud(); break;
case 4: cancellazione_stud(); break;
}
}while(scelta!=5);
return;
}
void gestione_corsi()
{ //Funzione per la gestione dei corsi
int scelta;
cout<<"Benvenuto nel sezione di corsi"<<endl;
cout<<"Sono disponibili questi operazioni, scegli apartire dal suo numero"<<endl<<endl;
do{
cout<<"\n MENU"<<endl;
cout<<" 1 - Potrai inserire nuovo corso"<<endl;
cout<<" 2 - Potrai cercare uno corso in base a:"<<endl;
cout<<" Codice corso"<<endl;
cout<<" Titolo"<<endl;
cout<<" 3 - Potrai modifcare un corso."<<endl;
cout<<" 4 - Potrai cancellare un corso."<<endl;
cout<<" 5 - Per andare al menu principale"<<endl;
do{
cout<<"SCELTA: ";
tipo(scelta);
if(scelta<1 || scelta>5)cout<<"La scelta errata! RIPROVA? "<<endl;
}while(scelta<1 || scelta>5);
switch(scelta)
{
case 1: array_corsi[nr_corsi++].leggi(); break;
case 2: ricerca_cor(); break;
case 3: modificazione_corsi(); break;
case 4: cancellazione_corsi(); break;
}
}while(scelta!=5);
return;
}
void gestione_piani()
{ //Funzione per gestione dei piani di studio
int scelta;
cout<<"Benvenuto nell sezione dei piani di studio"<<endl;
cout<<"Sono disponibili questi operazioni, scegli apartire dal suo numero"<<endl<<endl;
do{
cout<<"\n MENU"<<endl;
cout<<" 1 - Potrai inserire nuovo piano di studio"<<endl;
cout<<" 2 - Elaborazioni e ricerche:"<<endl;
cout<<" 3 - Potrai modifcare un piano di studio."<<endl;
cout<<" 4 - Potrai cancellare un piano di studio."<<endl;
cout<<" 5 - verifica che un piano di studio soddisfi i vincoli "<<endl;
cout<<" 6 - Per andare al menu principale"<<endl;
do{
cout<<"SCELTA: ";
tipo(scelta);
if(scelta<1 || scelta>6)cout<<"La scelta errata! RIPROVA? "<<endl;
}while(scelta<1 || scelta>6);
switch(scelta){
case 1:{array_piani[nr_piani++].leggi();break;}
case 2:{elab_rice();break;}
case 3:{modificazione_piani();break;}
case 4:{cancellazione_piani();break;}
case 5:{verifica();break;}
}
}while(scelta!=6);
return;
}
void elab_rice()
{
int scelta;
cout<<"Sono disponibili questi operazioni, scegli apartire dal suo numero"<<endl<<endl;
do{
cout<<"\n ***************************MENU***************************"<<endl;
cout<<" 1 - Potrai stampare un piano di studio di un studente"<<endl;
cout<<" 2 - Trova nr. studenti che hanno inserito nel proprio piano"<<endl;
cout<<" di studio un certo corso :"<<endl;
cout<<" 3 - Stampa tutti studenti che hanno inserito nel proprio piano"<<endl;
cout<<" di studio un certo corso."<<endl;
cout<<" 4 - Per andare indietro"<<endl;
cout<<" ***************************MENU***************************"<<endl;
do{
cout<<"SCELTA: ";
tipo(scelta);
if(scelta<1 || scelta>4)cout<<"La scelta errata! RIPROVA? "<<endl;
}while(scelta<1 || scelta>4);
switch(scelta){
case 1:{rice_piano();break;}
case 2:{nr_studenti();break;}
case 3:{nominativi();break;}
}
}while(scelta!=4);
return;
}
void rice_piano()
{ //Funzione che cerca un piano di studio
int c; string temp; risultato=false;
cout<<"Inserisci matricola"<<endl;
do{
cin>>temp;
if (atoi(temp.c_str())==0)cout<<"Matricola non valida, ripeti!"<<endl;
} while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_piani;i++)
{
if(array_piani[i].matricola()==c)
{
risultato=true;
array_piani[i].show();
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
}
}
if(risultato==false)throw 1;
}
int calcola() //Funzione che verifica un corso
{
string temp; int c=0; int d;
cout<<endl;
cout<<"Dammi il codice di corso:"<<endl;
do{
cin>>temp;
if (atoi(temp.c_str())==0)cout<<"Codice non valido, ripeti!"<<endl;
}while(atoi(temp.c_str())==0);
d=atoi(temp.c_str());
for(int i=0;i<nr_piani;i++)
{
if(array_piani[i].ver(d)==true)c++;
}
return c;
}
void nominativi()
{
int c; string temp; risultato=false;
cout<<endl;
cout<<"Dammi il codice di corso che vuoi verificare:"<<endl;
do{
cin>>temp;
if(atoi(temp.c_str())==0)cout<<"Codice non valido ripeti"<<endl;
}while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_piani;i++)
{
if(array_piani[i].ver(c)==true)
{ risultato=true;
array_piani[i].show();
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
}
}
if(risultato==false)cout<<"Non e trovato nessun studente che ha inserito quest corso"<<endl;
}
void nr_studenti()
{
int nr;
nr=calcola();
cout<<"Il numero di studenti che hanno inserito questo corso e': "<< nr <<endl;
}
void modificazione_stud()
{ //Funzione per modificare un studente
string temp; int c; risultato=false;
cout<<"Dammi il nr di matricola che vuoi modificare"<<endl;
do{
cin>>temp;
if (atoi(temp.c_str())==0)cout<<"Matricola non valida, ripeti!"<<endl;
} while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_stud;i++){
if(array_studenti[i].matricola()==c){
risultato=true;
array_studenti[i].modifica();
cout<<"Il studente e stato modificato"<<endl<<endl;
break; }
}
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
if(risultato==false)throw 2;
return;
}
void modificazione_corsi()
{ //Funzione per modificare un corso
int c; string temp; risultato=false;
cout<<"Dammi il nr. di codice che vuoi modificare"<<endl;
do{
cin>>temp;
if(atoi(temp.c_str())==0)cout<<"Codice non valido, ripeti!"<<endl;
}while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_corsi;i++){
if(array_corsi[i].codi()==c){
risultato=true;
array_corsi[i].modifica();
cout<<"Il corso e stato modificato"<<endl<<endl;
break; }
}
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
if(risultato==false)throw 0;
return;
}
void modificazione_piani()
{ int c; string temp; risultato=false;
cout<<"Dammi la matricola che vuoi modificare"<<endl;
do{
cin>>temp;
if(atoi(temp.c_str())==0)cout<<"Matricola non valida, ripeti!"<<endl;
}while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_piani;i++)
{
if(array_piani[i].matricola()==c)
{risultato=true;
array_piani[i].modifica();
cout<<"Il piano di studio e stato modificato"<<endl<<endl;
break; }
}
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
if(risultato==false)throw 1;
return;
}
void cancellazione_stud()
{ //Funzione per cancellare un studente
int c; string temp; risultato=false;
cout<<"Dammi il nr di matricola che vuoi cancellare"<<endl;
do{
cin>>temp;
if(atoi(temp.c_str())==0)cout<<"Matricola non valida, ripeti!"<<endl;
}while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_stud;i++){
if(array_studenti[i].matricola()==c){
risultato=true;
array_studenti[i].cancella();
cout<<"Il studente e stato cancellato"<<endl<<endl;
break; }
}
if(risultato==false)throw 2;
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
return;
}
void cancellazione_corsi()
{ //Funzione per cancellare un corso
int c; string temp; risultato=false; int scelta;
cout<<"Dammi il nr di codice che vuoi cancellare"<<endl;
do{
cin>>temp;
if(atoi(temp.c_str())==0)cout<<"Codice non valido, ripeti!"<<endl;
}while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_corsi;i++){
if(array_corsi[i].codi()==c){
risultato=true;
array_corsi[i].cancella();
cout<<"Il corso e stato cancellato"<<endl<<endl;
break; }
}
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
if(risultato==false)throw 0;
return;
}
void cancellazione_piani()
{ //Funzione per cancellare un corso
int c; string temp; risultato=false;
cout<<"Dammi la matricola che vuoi cancellare"<<endl;
do{
cin>>temp;
if(atoi(temp.c_str())==0)cout<<"Matricola non valida, ripeti!"<<endl;
}while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_piani;i++){
if(array_piani[i].matricola()==c)
{ risultato=true;
array_piani[i].cancella();
cout<<"Il piano di studio e stato cancellato"<<endl<<endl;
break; }
}
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
if(risultato==false)throw 1;
return;
}
void carica(int b[]) //Funzione per carica di un settore di piano di studio
{
int c; int n=0;
ifilepiani>>c;
while(n<10 && c!=0 && !ifilepiani.eof())
{
b[n]=c;
n++;
ifilepiani>>c;
}
return;
}
void tipo(int & b) // funzione che controlla il tipo che viene inserito da std input
{
string temp;
do {
cin >> temp;
if(atoi(temp.c_str())<=0) cout <<"Hai inserito un dato non valido, ripeti: ";
}
while(atoi(temp.c_str())<=0);
if(atoi(temp.c_str())>0) b=atoi(temp.c_str());
}
void sett(char b[]) //Funzione per visualizare i corsi di un settore
{
for(int i=0;i<nr_corsi;i++)
if(array_corsi[i].set()==b)
{ array_corsi[i].show();
cout<<"PREMI UN QUALSIASI TASTO PER CONTINUARE\n";
getch();
}
}
void verifica()
{ //Funzione per verificare il vincoli per ogni piano di studio
int c; string temp; risultato=false; int a=0; int b=0; int d=0;
cout<<"Dammi la matricola di studente che vuoi verificare"<<endl;
do{
cin>>temp;
if(atoi(temp.c_str())==0)cout<<"Matricola non valida, ripeti!"<<endl;
}while(atoi(temp.c_str())==0);
c=atoi(temp.c_str());
for(int i=0;i<nr_piani;i++){
if(array_piani[i].matricola()==c)
{ risultato=true;
for(int j=0;j<10;j++){
a+=cfu(array_piani[i].i_inf(j));
b+=cfu(array_piani[i].i_mat(j));
d+=cfu(array_piani[i].i_ect(j));
}
}
}
if(a<13)cout<<"Non soddisfa il numero di cfu nel settore INF e ING-INF/05!"<<endl;
else if(b<12)cout<<"Non soddisfa il numero di cfu nel settore BIO, CHIM, FIS, GEO, MAT!"<<endl;
else if(d<23)cout<<"Non soddisfa il numero di cfu negli altri settori"<<endl;
else if((a+b+d)<55)cout<<"Non soddisfa il numero totale di CFU"<<endl;
else cout<<"Il piano di studio di studente e rregolare"<<endl;
if(risultato==false)cout<<"Non si trova nessun piano di studio con questa matricola!"<<endl;
cout<<" *PREMERE UN TASTO PER CONTINUARE*\n";
getch();
}
string maiuscolo(string s)
{ //Funzione per iniziore la parola con maiuscolo
s[0]=s[0]-32;
return s;
}
string maiuscolo(string s,int n)
{
//Funzione per convertire i settori in maiuscolo
for(int i=0;i<n;i++){
if(s[i]>=97 && s[i]<=122){
s[i]=s[i]-32;
}
}
return s;
}
int cfu(int codice)
{
for(int i=0;i<nr_corsi;i++)
if(array_corsi[i].codi()==codice) return array_corsi[i].CFU();
return 0;
}
//
Muro di cinta
05-03-2006, 10:36
ah mi son dimenticato una cosa....in questo programma servono 3 file .txt,cioè studenti.txt,corsi.txt,piani.txt per farlo eseguire.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.