
Enviado em 22/05/2013 - 09:40h
oi estou precisando de ajuda em um trabalho da faculdade, pede o seguinte" fazer um cadastro de n.. funcionarios e quando for solicitado o nome ou o ramal imprimir os dados referente ao funcionario.cheguei a fazer o programa mais esta com muitos erros e não consigo eliminalos , ajudaaaaa.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct cadastro {
char nome_completo[50];
char usuario[10];
char email[40];
int ramal;
int matricula;
};
//chama funçao---------------------------------------------------------------------
void incluir(void);
void pesquisar(void);
void ramal(void);
char validaresp();
//static int qtd=0;
struct cadastro funcionario;
FILE *fp;
//incluir dados do cadastro--------------------------------------------------------
void incluir(void){
int retorno=0;
char op ='s';
if((fp=fopen("base.dat","a"))==NULL)
{
printf("Arquivo nao pode ser aberto.\n");
printf("Insira os dados do funcionario\n");
exit(1);
}
while(op=='s')
{
printf("Digite seu nome completo: ");
gets(funcionario.nome_completo);
printf("Digite o nome de usuario: ");
gets(funcionario.usuario);
printf("Digite seu e-mail: ");
gets(funcionario.email);
printf("Digite seu ramal: ");
scanf(funcionario.ramal);
printf("Digite sua matricula: ");
scanf(funcionario.matricula);
retorno=fwrite(&funcionario,sizeof(struct cadastro),1,fp);//se o retorno for igual a 1 "numero de bits a gravação foi OK
if (retorno==1){
printf("\nGravado com sucesso! ");
}
//total++;
op=validaresp();
//qtd++;
}
fclose(fp);
}
//valida resposta----------------------
char Validaresp() {
char op;
do {
printf(" \nDeseja inserir novos dados? [S ou N] ? " );
// op = getch();
printf("\n" );
} while (op != 's' && op != 'n');
return op;
}
//pesquisar contato pelo nome----------------------------------------------------
void pesquisar(void){
int indice=0;
int retorno=1;
int cont=0;
char nome_completo[50];
char op;
if((fp=fopen("base.dat","r"))==NULL){
printf("Arquivo nao pode ser aberto.\n");
printf("insira os dados do usuario\n");
exit(1);
}
printf("digite seu nome conpleto: ");
gets(nome_completo);
retorno=fread(&funcionario[indice],sizeof(struct cadastro),1,fp);
while (retorno == 1){
if (strcmp(nome_completo,funcionario[indice].nome_completo)== 0){ // strcmp() compara a string 1 com a string 2. Se as duas forem identicas a funcao retorna zero. Se elas forem diferentes a funcao retorna num-zero.
printf("\nNome completo..:%s\nUsuario..:%s\ne-mail..:%s\nRamal..:%s\nMatricula..:%s\n",nome_completo,funcionario[indice].usuario,funcionario[indice].email,funcionario[indice].ramal,funcionario[indice].matricula);
cont++;
}
indice++;
retorno=fread(&funcionario[indice],sizeof(struct cadastro),1,fp);
}
if(cont==0){
printf("Nao ha usuario com este nome!\n");
}
fclose(fp);
}
//pesquisar ramal--------------------------------------------
void ramal(void){
int indice=0;
int retorno=1;
int cont=0;
char ramal[20];
char op;
if((fp=fopen("base.dat","r"))==NULL){
printf("Arquivo nao pode ser aberto.\n");
printf("insira os dados do usuario\n");
exit(1);
}
printf("digite o ramal a ser pesquisado");
gets(ramal);
retorno=fread(&funcionario[indice],sizeof(struct cadastro),1,fp);
while (retorno == 1){
if (strcmp(ramal,funcionario[indice].ramal)== 0){ // strcmp() compara a string 1 com a string 2. Se as duas forem identicas a funcao retorna zero. Se elas forem diferentes a funcao retorna num-zero.
printf("\nNome completo..:%s\nUsuario..:%s\ne-mail..:%s\nRamal..:%s\nMatricula..:%s\n",nome_completo,funcionario[indice].usuario,funcionario[indice].email,funcionario[indice].ramal,funcionario[indice].matricula);
cont++
}
indice++;
retorno=fread(&funcionario[indice],sizeof(struct cadastro),1,fp);
}
if(cont==0){
printf("Nao ha funcionario com este ramal!\n");
}
fclose(fp);
}
//-----menu-------------------------
void menu (void){
char op;
int teste;
if((fp=fopen("base.dat","r"))!=NULL){
qtd=0;
do{
teste=fread(&funcionario,sizeof(struct cadastro),1,fp);
qtd++;
} while (teste==1);
qtd--;
}
do{
system("cls");
printf("\n(1)incluir\n(2)pesquisar por nome\n(3)pesquisar pelo ramal\n(4)qualquer tecla para sair\n\n");
switch(op){
case '1':
incluir();
break;
case '2':
pesquisar();
break;
case '3'
ramal();
break;
default:
exit(1);
}
}while (op<'4');
}
int main(){
int var;
printf("\n\n\n\n\n\n\n\\n");
printf(" ..CADASTRO DE FUNCIONARIOS.. \n\n");
printf(" Analise o menu e selecione a opcao desejada \n");
if(var==27){ exit(1);}
menu();
system("pause");
}
File Browser: Crie sua Nuvem Pessoal Privada
A produção de áudio e vídeo no Linux e as distribuições dedicadas a esse fim
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
Gerenciamento de Vídeo Híbrido (Intel/NVIDIA) via nvidia-prime no Ubuntu e derivados
Assistindo IPTV no Linux com Fred TV e Lista Free TV
Impressora Tomate MDK-007 no Ubuntu (ou qualquer distro Linux)
Acelerando a compilação de pacotes no Arch Linux (AUR) usando todos os núcleos do processador
Depois não querem que eu fale sobre as baseadas... (4)
Tive um problema ao abrir minha partição Btrfs. Como posso resolver is... (0)









