Noctural
Membro
Código:
#include <cstdlib>
#include <iostream>
#include <fstream>
#define MAXNOME 30
using namespace std;
// Defini‡ao da estrutura empregado
typedef struct empregado
{
char prinome[MAXNOME];
char apelido[MAXNOME];
int num_empregado;
float ordenado;
};
void inicializaEmpregado(empregado* p)
{
int k;
for(k=0;k<MAXNOME;k++) p->prinome[k]='\0';
for(k=0;k<MAXNOME;k++) p->apelido[k]='\0';
p->num_empregado=0;p->ordenado=0;
}
void leDados(empregado* p)
{
cout<<"Qual o primeiro nome: ";
cin>>(*p).prinome;
cout<<"Qual o apelido: ";
cin>>p->apelido;
cout<<"Qual o numero do empregado: ";
cin>>(*p).num_empregado;
cout<<"Qual o ordenado do empregado: ";
cin>>(*p).ordenado;
}
int leDados(empregado* p, char *nomeficheiro)
{
ifstream fichLeitura;
char buffer[MAXNOME];
for (int k=0;k<MAXNOME;k++) buffer[k]='\0';
inicializaEmpregado(p);
fichLeitura.open(nomeficheiro);
if (!fichLeitura)
{
cout<<"Ficheiro com Erro! \n";
return(1);//Erro
}
do
{
inicializaEmpregado(p);
fichLeitura.getline((*p).prinome,MAXNOME,'\n');
cout<<"Nome lido: "<<(*p).prinome<<endl;
fichLeitura.getline((*p).apelido,MAXNOME,'\n');
cout<<"Apelido lido: "<<(*p).apelido<<endl;
fichLeitura.getline(buffer,MAXNOME,'\n');
(*p).num_empregado=atoi(buffer);
cout<<"Numero do empregado lido: "<<(*p).num_empregado<<endl;
fichLeitura.getline(buffer,MAXNOME,'\n');
(*p).ordenado=atof(buffer);
cout<<"Ordenado lido: "<<(*p).ordenado<<endl;
}
while (!fichLeitura.eof()&& fichLeitura.good()&&fichLeitura.peek()!=EOF);
cout<<endl;
fichLeitura.close();
return(0);
}
void corrigeDados(empregado *p)
{
(*p).prinome[0]=toupper((*p).prinome[0]);
(*p).apelido[0]=toupper((*p).apelido[0]);
}
char *qualFicheiro()
{
char *nomeficheiro=NULL;
nomeficheiro=new char [MAXNOME];
for(int k=0;k<MAXNOME;k++) *(nomeficheiro+k)='\0';
cout<<"Qual o nome do ficheiro: ";
cin>>nomeficheiro;
return(nomeficheiro);
}
int guardaDados(empregado p,char *nomeficheiro)
{
ofstream fichEscrita;
fichEscrita.open(nomeficheiro,ios::app);
if(!fichEscrita)
{
cout <<"Impossivel abrir ficheiro.\n";
return 1;//Erro
}
cout<<"Escrita de dados no ficheiro "<<nomeficheiro<<".\n";
fichEscrita << p.prinome<<"\n";
fichEscrita << p.apelido<<"\n";
fichEscrita << p.num_empregado<<"\n";
fichEscrita << p.ordenado<<"\n";
cout<<"Dados escritos no ficheiro.\n";
fichEscrita.close();
return 0;
}
void mostraDados(empregado p)
{
cout<<endl;
cout<<"O empregado com o nome "<<p.prinome<<" "<<p.apelido;
cout<<"Numero "<<p.num_empregado<<" e recebe ";
cout<<p.ordenado<<"Euros.\n";
cout<<endl;
}
char *pedeCampoPesquisa()
{
char* nome="";
nome=new char [MAXNOME];
for(int k=0;k<MAXNOME;k++) *(nome+k)='\0';
cout<<"Nome a pesquisar: ";
cin>>nome;
return(nome);
}
int pesquisaCampo(char *nome, empregado *p, char *nomeficheiro)
{
ifstream fichLeitura;
char buffer[MAXNOME];
for (int k=0;k<MAXNOME;k++) buffer[k]='\0';
inicializaEmpregado(p);
fichLeitura.open(nomeficheiro);
if (!fichLeitura)
{
cout <<"Impossivel abrir Ficheiro!\n";
return(1); //Erro
}
do
{
inicializaEmpregado(p);
fichLeitura.getline(buffer,MAXNOME,'\n');
if (strcmp(buffer,nome)==0)
{
strcpy((*p).prinome,buffer);
cout<<"Nome lido: "<<(*p).prinome<<endl;
fichLeitura.getline((*p).apelido,MAXNOME,'\n');
cout<<"Apelido lido: "<<(*p).apelido<<endl;
fichLeitura.getline(buffer,MAXNOME,'\n');
(*p).num_empregado=atoi(buffer);
cout<<"Numero do empregado lido: "<<(*p).num_empregado<<endl;
fichLeitura.getline(buffer,MAXNOME,'\n');
(*p).ordenado=atof(buffer);
cout<<"Ordenado lido: "<<(*p).ordenado<<endl;
mostraDados((*p));
}
else
{
fichLeitura.ignore(MAXNOME,'\n');
fichLeitura.ignore(MAXNOME,'\n');
fichLeitura.ignore(MAXNOME,'\n');
fichLeitura.ignore(MAXNOME,'\n');
}
}
while
(!fichLeitura.eof()&& fichLeitura.good()&&fichLeitura.peek()!=EOF);
cout<<endl;
fichLeitura.close();
return(0);
}
char querSair()
{
char resposta='\0';
cout<<"Quer repetir (s/n) ? ";
cin>>resposta;
if ((resposta=='n') || (resposta=='N'))
{
cout<<"Volte Sempre.\n";
return ('s');
}
else return ('n');
}
int main()
{
empregado p; char *nomeficheiro="", *nome="";
char sair='\0';
do
{
system("CLS");
inicializaEmpregado(&p);
leDados(&p);
corrigeDados(&p);
nomeficheiro=qualFicheiro();
guardaDados(p,nomeficheiro);
leDados(&p,nomeficheiro);
nome=pedeCampoPesquisa();
pesquisaCampo(nome,&p,nomeficheiro);
sair=querSair();
}
while(sair=='n');
system("PAUSE");
return 0;
}
Última edição pelo moderador: