ENUNCIADO DA QUESTAO :
17. Considerando o cadastro de 50 funcionários de uma empresa, contendo NOME, ENDEREÇO, IDADE e SALARIO, defina uma estrutura apropriada e construa um programa que através de um menu de seleção esteja capacitado a efetuar:
a) Cadastro
b) Classificação dos funcionários em ordem alfabética <<<
c) Pesquisa dos nomes pelo método binário <<<<
d) Ao final do cadastro de cada cliente deverá ser perguntado: "Novo Cliente (S/N)?".
e) O programa deverá ser perguntar: "Voltar ao menu principal ou continuar (P/C)?".
MEU CODIGO ATE AKI :
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 50
struct Funcionario {
char Nome[50];
char Endereco[50];
char idade[50];
float Preco_Salario;
int Codigo;
} Reg_Fun[MAX];
static int Num_Func = 0;
void Cad_Fun (void);
void List_Fun(void);
void Del_Fun (void);
//void Busc_Fun(void);
void Menu (void);
void Sair (void);
int main(){
Menu();
}
void Menu (void){
int opcao;
system("cls"
do{
system("cls"
printf(" EMPRESA X \n"
printf("[1] - Casdastrar Funcionarios\n\n"
printf("[2] - Listar Funcionarios\n\n"
printf("[3] - Excluir Funcionarios\n\n"
printf("[4] - Sair\n\n"
//printf("[5] - Buscar Funcionarios\n\n"
printf("Qual opção deseja: "
setbuf(stdin,NULL);
scanf("%d",&opcao);
switch(opcao){
case 1:
system("cls"
Cad_Fun();
break;
case 2:
system("cls"
List_Fun();
break;
case 3:
system("cls"
Del_Fun();
break;
case 4:
system("cls"
Sair();
break;
// case 5:
// system ("cls"
// Busc_Fun();
// break;
default :
printf("\n\n\t\t\tOpção inválida O.o \n \t\t\tTente novamente..."
}
} while( (opcao != 1) && (opcao != 2) && (opcao != 3) && (opcao != 4));
}
void Cad_Fun(void){
int escolha;
system("cls"
Num_Func ++;
printf("--------------------------------------------------------------------------------\n"
printf(" CADASTRAR FUNCIONARIO \n"
printf("FUNCIONARIO N%d\n", Num_Func);
Reg_Fun[Num_Func].Codigo = Num_Func;
if (Reg_Fun[Num_Func].Codigo < 10)
printf("\nCODIGO: 0%d\n",Reg_Fun[Num_Func].Codigo);
else
printf("\nCODIGO: %d\n",Reg_Fun[Num_Func].Codigo);
setbuf(stdin,NULL);
printf("\nDigite o Nome: "
gets(Reg_Fun[Num_Func].Nome);
setbuf(stdin,NULL);
printf("\nDigite a Endereco: "
gets(Reg_Fun[Num_Func].Endereco);
setbuf(stdin,NULL);
printf("\nDigite o idade: "
gets(Reg_Fun[Num_Func].idade);
setbuf(stdin,NULL);
printf("\nDigite o Preco do Salario: "
scanf("%f",&Reg_Fun[Num_Func].Preco_Salario);
setbuf(stdin,NULL);
printf("\n\nCadastro Realizado com sucesso...\n"
getch();
do{
system("cls"
printf("--------------------------------------------------------------------------------\n"
printf(" CADASTRAR FUNCIONARIO \n"
printf(" \n"
printf("--------------------------------------------------------------------------------\n"
printf("\n\t\t[1]- Deseja cadastrar um Funcionario?"
printf("\n\t\t[2]- Deseja volta ao menu inicial"
printf("\n\n\t\tQual a opcao: "
scanf("%d",&escolha);
switch(escolha){
case 1:
system("cls"
Cad_Fun();
break;
case 2:
system("cls"
main();
break;
default :
printf("\n\n\t\t\tOpcao invalida O.o \n \t\t\tTente novamente..."
}
} while((escolha != 1) && (escolha != 2));
}
void List_Fun(void){
int Cont;
int opc2,opcao2;
if ( Num_Func >= 1){
printf(" FUNCIONARIOS CADASTRADOS \n"
for ( Cont = 1; Cont <= Num_Func; Cont++){
printf(" FUNCIONARIO Nº%d\n",Cont);
if (Reg_Fun[Cont].Codigo < 10)
printf("\n CODIGO: 0%d",Reg_Fun[Cont].Codigo);
else
printf("\n CODIGO: %d",Reg_Fun[Cont].Codigo);
printf("\n NOME: %s ",strupr (Reg_Fun[Cont].Nome));
printf("\n Endereco: %s",strupr(Reg_Fun[Cont].Endereco));
printf("\n idade: %s",strupr(Reg_Fun[Cont].idade));
printf("\n PRECO DO SALARIO: %.2f",Reg_Fun[Cont].Preco_Salario);
puts("--------------------------------\n"
}
getch();
do{
system("cls"
printf(" FUNCIONARIOS CADASTRADOS \n"
printf("\n\t\t[1] - Excluir Funcionario\n\n"
printf("\t\t[2] - Menu Inicial\n\n"
printf("\n\n\t\tQual opcao deseja: "
setbuf(stdin,NULL);
scanf("%d",&opcao2);
switch(opcao2){
case 1:
system("cls"
Del_Fun();
break;
case 2:
main();
system("cls"
break;
default :
printf("\n\n\t\t\tOpcao invalida O.o \n \t\t\tTente novamente..."
}
} while( (opcao2 != 1) && (opcao2 != 2) );
}
else {
do{
system("cls"
printf(" FUNCIONARIOS CADASTRADOS \n"
printf("\n Nenhum Funcionario foi Cadastrado ate o momento \n"
printf("\n\t\t[1]- Deseja cadastrar um funcionario"
printf("\n\t\t[2]- Deseja volta ao menu inicial"
printf("\n\n\t\tQual a Opcao - "
scanf("%d",&opc2);
switch(opc2){
case 1:
system("cls"
Cad_Fun();
break;
case 2:
system("cls"
main();
break;
default :
printf("\n\n\t\t\tOpcao invalida O.o \n \t\t\tTente novamente..."
}
} while((opc2 != 1) && (opc2 != 2));
}
}
void Del_Fun(void){
int Cod_Del,i,j,Cont;
char escolha1;
int opc2;
if (Num_Func == 0 ){
do{
printf("--------------------------------------------------------------------------------\n"
printf(" REMOVER FUNCIONARIO CADASTRADOS \n"
printf(" \n"
printf("--------------------------------------------------------------------------------\n\n"
printf("\n\t\tNenhum cliente cadastrado \n\t\tImpossivel realizar Operação excluir\n\n"
printf("\n\t\t[1]- Deseja cadastrar um Funcionario?"
printf("\n\t\t[2]- Deseja volta ao menu inicial"
printf("\n\n\t\tQual a Opcao - "
scanf("%d",&opc2);
switch(opc2){
case 1:
system("cls"
Cad_Fun();
break;
case 2:
system("cls"
main();
break;
default :
printf("\n\n\t\t\tOpcao invalida O.o \n \t\t\tTente novamente..."
}
} while((opc2 != 1) && (opc2 != 2));
}
else { if( Num_Func > 0) {
printf(" REMOVER FUNCIONARIO CADASTRADOS \n"
for ( Cont = 1; Cont <= Num_Func ; Cont++){
printf(" FUNCIONARIO N%d\n",Cont);
if (Reg_Fun[Cont].Codigo < 10)
printf("\n CODIGO: 0%d",Reg_Fun[Cont].Codigo);
else
printf("\n CODIGO: %d",Reg_Fun[Cont].Codigo);
printf("\n NOME: %s ",strupr (Reg_Fun[Cont].Nome));
printf("\n Endereco: %s",strupr(Reg_Fun[Cont].Endereco));
printf("\n idade: %s",strupr(Reg_Fun[Cont].idade));
printf("\n PRECO DO SALARIO: %.2f",Reg_Fun[Cont].Preco_Salario);
puts("--------------------------------\n"}
printf("Digite o codigo do funcionario a ser excluido do cadastro: "
scanf("%d",&Cod_Del);
for(i = 0 ; i <= Num_Func ; i++){
if(Reg_Fun[i].Codigo == Cod_Del){ // percorre o vetor até encontrar o codigo do produto a ser excluido
for (j = i; j < Num_Func ; j++){
// Processo de subescrever
Reg_Fun[j].Codigo = Reg_Fun[j].Codigo;
strcpy(Reg_Fun[j].Nome,Reg_Fun[j+1].Nome);
strcpy(Reg_Fun[j].Endereco,Reg_Fun[j+1].Endereco);
strcpy(Reg_Fun[j].idade,Reg_Fun[j+1].idade);
Reg_Fun[j].Preco_Salario = Reg_Fun[j+1].Preco_Salario;
}
Num_Func = Num_Func - 1; // Foi excluido um elemento
printf("\n\n Exclusão realizada com sucesso....\n"
getch();
}
}
do{ system("cls"
printf(" REMOVER FUNCIONARIO CADASTRADOS \n"
printf("\n\t\t[1]- Deseja cadastrar um Funcionario?"
printf("\n\t\t[2]- Deseja volta ao menu inicial"
printf("\n\n\t\tQual a Opcao: "
scanf("%d",&escolha1);
switch(escolha1){
case 1:
system("cls"
Cad_Fun();
break;
case 2:
system("cls"
main();
break;
default :
printf("\n\n\t\t\tOpcao invalida O.o \n \t\t\tTente novamente..."
}
} while((escolha1 != 1) && (escolha1 != 2));
}
}
}
void Sair (void){
system("cls"
printf("--------------------------------------------------------------------------------\n"
printf(" EMPRESA X \n"
printf(" \n"
printf(" \n"
printf("--------------------------------------------------------------------------------\n"
printf("----------------------------- SAINDO DO PROGRAMA ...----------------------------\n"
system("pause > NULL"
}