Ir ao conteúdo

Folha de pagamento


Ir à solução Resolvido por JoãoApenas,

Posts recomendados

Postado

boa tarde, estou precisando de uma ajuda,

estou fazendo um trabalho do curso que é uma folha de pagamento no programa dev c++,

o problema e que o segundo menu nao esta listando os dados,

o terceiro e quarto, no final do programa ao clicar em continuar ele trava e fecha,

o que poderia ser feito para corrigir tais erros ?

desde ja agradeço...............

 

 

o enunciado do programa e este:

 

 

Criar uma folha de pagamento.

 

A folha deve ter as seguintes opções:

1 Cadastrar Funcionários

2 Listar

3 Pesquisar

4 Calcular / Listar Dados

5 Sair

 

Cada item com exceção do número 5 deverá ser desenvolvido através de uma função.

 

1) Cadastrar Funcionários: Esta função deve cadastrar NOME,SEXO,IDADE,ENDEREÇO, BAIRRO, CIDADE, CEP, UF, CPF, IDENTIDADE E SALARIO BRUTO de até 100  funcionários.

 

2) Listar Funcionários. Esta função deve listar os dados de todos os funcionários cadastrados.

 

3) Pesquisar: Esta função deve permitir a busca de um funcionário pelo nome.

 

4) Calcular / Listar Dados Folha: Esta função deverá calcular o salário líquido do funcionário que é o salário bruto – (menos) descontos:

 

Os descontos são INSS, VT, VREFEIÇÃO, para cada desconto deverá existir uma função com seu nome.

 

Função INSS . Essa função deve receber o salário bruto que é um tipo FLOAT e retornar INSS que também será um tipo FLOAT. O Calculo do INSS será o seguinte:

 

Salário



Descontos



<= 600



10%



> 600  <= 1000



12%



> 1000



15%



 



 


 

Função VT: Essa função recebe o salário bruto e retorna o valor do desconto do vale transporte. O desconto será de 5%, mais não poderá ultrapassar a R$ 150,00.

 

Função VR: Essa função recebe o salário bruto e retorna o desconto de Vale-refeição. O desconto será de 5%, mais não poderá ser maior que R$ 170,00.

 

Após todos os descontos prontos, calcular o salário líquido e listar o nome do funcionário, seu salário bruto, todos os descontos e o salário líquido.

 

 

Abaixo exemplo função INSS .

 

Float INSS (float SAL)

{

     if (sal <= 600)

         return sal*0.10;

         else if (sal <= 1000)

                  return sal*0.12;

                  else return sal * 0,15;

}

 

 

o codigo do meu programa é:

 

 

#include<iostream>

#include<stdlib.h>
 
 
using namespace std;
void cadastro_fun();
void calcular_fun();
void pesquisa_fun();
void lista_fun();
void sair();
     string nome[100], endereco[100], bairro[100], cidade[100], identidade[100], UF[100], op;                                  
     int idade[100], CEP[100];
     float CPF[100], salario[100], salariolq[100], VT[100], VR[100], INSS[100];
     string sexo[100];
int i,j; 
int main()
 {
    string dados;
    int i, continuar=1;
    system ("cls");
                                              
    do
{
        cout <<"\n ***************************************************************************** "<< endl;
        cout <<" **  *********   ***  *****   Folha de Pagamento   *****  ***   **********  ** "<< endl;
        cout <<" ***************************************************************************** "<< endl << endl << endl;
        cout << "1 - Cadastrar Funcionarios \n";
        cout << "2 - Lista Funcionarios \n";
        cout << "3 - Pesquisar Funcionarios \n"; 
        cout << "4 - Calcular \n";      
        cout << "0 - Sair\n \n";
       
        cout << "Opcao escolhida: ";
        cin >> continuar;
       
        switch(continuar)
        {
            case 1:
                cadastro_fun();
                break;
 
            case 2:
                lista_fun();            
                break;
 
            case 3:
               pesquisa_fun();
                break;
 
            case 4:
                calcular_fun();
                break;
                            
            case 0:
                sair();
                break;
 
            default:
               system ("cls");
               cout << "Digite uma opcao valida\n";
        }
    } while(continuar);
  system ("pause");
 } 
 
 
//----------------------------------------------------------- opções DO MENU  -----------------------------------------                      
   void cadastro_fun()
   { 
   //  1 OPÇÃO DO MENU:  Cadastrar Funcionários
          int i;
    string dados;
    system ("cls");
    do{
    cout << "\n  =====   ===== CADASTRO DE FUNCIONARIOS =====   ===== \n";
    cout<<"\n Nome: ";
    fflush(stdin);
    getline (cin, nome);   
      cout<<"\n Sexo: ";
      fflush(stdin);
    getline (cin, sexo);                                     
      cout<<"\n Idade: ";
    cin>> idade;                   
      cout<<"\n Endereco: ";
      fflush(stdin);
    getline (cin, endereco);  
      cout<<"\n Bairro: ";
      fflush(stdin);
    getline (cin, bairro);  
      cout<<"\n Cidade: ";
      fflush(stdin);
    getline (cin, cidade);  
    cout<<"\n CEP: ";                                              
    cin>> CEP;  
      cout<<"\n UF: ";            
      fflush(stdin);
    getline (cin, UF);  
      cout<<"\n CPF: ";
    cin>> CPF;  
      cout<<"\n Identidade: ";
    cin>> identidade;  
      cout<<"\n Salario Bruto: ";
    cin>> salario;  
    cout<<"\n --------------------------------------------------------------- ";
      cout<<"\n";
      i++;
     
      cout << "DESEJA CADASTRAR MAIS NOMES ? (S/N)?";
fflush(stdin);
getline(cin,op);
system("cls");
 
}while(op=="S"||op=="s");
}
 
     
 
   
    void lista_fun()
{
//  2 OPÇÃO DO MENU: Listar Funcionários. Esta função deve listar os dados de todos os funcionários
 
    int j;  
system ("cls");
cout << "=====   ===== LISTA DE FUNCIONARIOS =====   ====="<< endl;
for (j=0;j<i;j++)
{
cout << "O" <<j+1<< " A SER REGISTRADO: \n";
cout << nome[j]<<"\n";
cout << sexo[j]<<"\n";
cout << idade[j]<<"\n";
cout << endereco[j]<<"\n";
cout << bairro[j]<<"\n";
cout << cidade[j]<<"\n";
cout << CEP[j]<<"\n";
cout << UF[j]<<"\n";
cout << CPF[j]<<"\n";
cout << identidade[j]<<"\n";
cout << salario[j]<<endl<<endl;
system("pause");
}
system("cls");
    }
 
    void pesquisa_fun()
{
//  3 OPÇÃO DO MENU: Pesquisar: Esta função deve permitir a busca de um funcionário pelo nome.
 
    int i,j,verific=0;
string cod;
system("cls");
cout << " n  =====   ===== PESQUISA DE FUNCIONARIOS =====   ===== \n \n";
cout << "INSIRA O NOME: ";
cin>>cod;
for (j=0; j<i ; j++)
{
if (cod==nome[j])
{
 
cout << "FUNCIONARIO PESQUISADO ";
cout << "Nome: "<<nome[j]<<endl;
cout << "Sexo: "<<sexo[j]<<endl;
cout << "Idade: "<<idade[j]<<endl;
cout << "Endereco: "<<endereco[j]<<endl;
cout << "Bairro: "<<bairro[j]<<endl;
cout << "CIDADE: "<<cidade[j]<<endl;
cout << "ESTADO: "<<UF[j]<<endl;
cout << "CPF: "<<CPF[j]<<endl;
cout << "IDENTIDADE: "<<identidade[j]<<endl;
cout << "SALARIO BRUTO: "<<salario[j]<<endl;
verific++;
system("pause");
}
if (verific==0)
{
cout << "FUNCIONARIO NAO ENCONTRADO";
}  
    }
}
       
    void calcular_fun()
{  
// 4 OPÇÃO DO MENU: Listar Dados Folha: Esta função deverá calcular o salário líquido do funcionário que é o salário bruto – (menos) desconto
    system ("cls");  
    int j,i, verific=0;
string cod;
system("cls");
cout << "n  =====   ===== PESQUISA DE FUNCIONARIO =====   ===== \n \n";
cout << "DIGITE O NOME DO FUNCIONARIO QUE DESEJA: ";
fflush(stdin);
getline(cin, cod);
for (j=0; j<i ; j++)
{
if (cod==nome[j])
{
verific++;
system ("cls");
cout << "## LISTA DOS NOMES CADASTRADOS E CALCULO DO SALARIO LIQUIDO: ##"<< endl;
cout << "SEU NOME E: "<<nome[j]<<endl;
cout << "SALARIO BRUTO DE: "<<salario[j]<<" REAIS" <<endl;
if (salario[j]<=600){
INSS[j] = salario[j]*10/100;
}
else if (salario[j]<=1000){
INSS[j] = salario[j]*12/100;
}
else if (salario[j]>1000)
{
 
INSS[j] = salario[j]*15/100;
}
 
if(salario[j]*5/100<150){
VT[j]=salario[j]*5/100;
}
else{
VT[j]=150;
}
if(salario[j]*5/100<170){
VR[j]=salario[j]*5/100;
}
else{
VR[j]=170;
}
cout << "O INSS E DE: "<<INSS[j]<<" REAIS" << endl;
cout << "O VALE TRANSPORTE E DE: "<<VT[j]<<" REAIS"<< endl;
cout << "O VALE REFEICAO E DE: "<<VR[j]<< " REAIS" << endl;
salariolq[j]=salario[j]-INSS[j]+VT[j]+VR[j];
cout << "O SALARIO LIQUIDO E "<<salariolq[j]<<" REAIS" << endl;
cout << "OBRIGADO POR TER USADO NOSSOS SERVICOS";
system ("pause");
    system ("cls");
}
 
}
 
}
    void sair()
{  //menu 5 opc
        cout << "\n  Volte Sempre! ...\n \n";
    }
  • Solução
Postado

Você poderia tornar a pessoa um struct ou um union, mas talvez você não tenha aprendido isso ainda.


#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
 
/********************************************
Diretivas
********************************************/
 
#define tam       100
#define SAIR        0
#define ADICIONAR   1
#define VERLISTA    2
 
/********************************************
Estruturas
********************************************/
 
using namespace std;
 
struct Pessoa {
    string nome;
    string endereco;
    string bairro;
    string cidade;
    string identidade;
    string CPF;
    string UF;
    string CEP;
    string sexo;
    int  idade;
    float salario;
} Pessoa;
 
/********************************************
Funções Globais
********************************************/
 
struct Pessoa adicionarFuncionario();
void  verListaDeFuncionarios();
 
/********************************************
Variáveis Globais
********************************************/
 
struct Pessoa listaDeFuncionarios[100];
int numeroDePessoasAdicionadas = 0;
 
/********************************************
Início do Programa
********************************************/
 
int main() {
 
    int opcaoMenu = 1;
    int indice = 0;
 
    while (opcaoMenu != SAIR) {
 
        cout <<"\n ***************************************************************************** "<< endl;
        cout <<" **  *********   ***  *****   Folha de Pagamento   *****  ***   **********  ** "<< endl;
        cout <<" ***************************************************************************** "<< endl << endl << endl;
        cout << "1 - Cadastrar Funcionarios \n";
        cout << "2 - Lista Funcionarios \n";
        cout << "3 - Pesquisar Funcionarios \n";
        cout << "4 - Calcular \n";
        cout << "0 - Sair\n \n";
 
        scanf("%d", &opcaoMenu);
 
        if (opcaoMenu == ADICIONAR) {
            listaDeFuncionarios[numeroDePessoasAdicionadas] = adicionarFuncionario();
            numeroDePessoasAdicionadas++;
        }
 
        if (opcaoMenu == VERLISTA)
            verListaDeFuncionarios();
 
    }
 
    cout << "\nFim da execução do programa.\n";
    return 0;
 
}
 
 
void verListaDeFuncionarios() {
    int indice = 0;
 
    for (; indice < numeroDePessoasAdicionadas; indice++) {
            cout << indice << " " << listaDeFuncionarios[indice].nome << endl;
    }
 
}
 
 
struct Pessoa adicionarFuncionario() {
        struct Pessoa novoFuncionario;
        cout << "\n  =====   ===== CADASTRO DE FUNCIONARIOS =====   ===== \n";
        cout<<"\n Nome: ";
        fflush(stdin);
        getline (std::cin, novoFuncionario.nome);
        cout<<"\n Sexo: ";
        fflush(stdin); /*
        getline (cin, novoFuncionario.sexo);
        cout<<"\n Idade: ";
        cin>> novoFuncionario.idade;
        cout<<"\n Endereco: ";
        fflush(stdin);
        getline (cin, novoFuncionario.endereco);
        cout<<"\n Bairro: ";
        fflush(stdin);
        getline (cin, novoFuncionario.bairro);
        cout<<"\n Cidade: ";
        fflush(stdin);
        getline (cin, novoFuncionario.cidade);
        cout<<"\n CEP: ";
        cin>> novoFuncionario.CEP;
        cout<<"\n UF: ";
        fflush(stdin);
        getline (cin, novoFuncionario.UF);
        cout<<"\n CPF: ";
        getline(cin, novoFuncionario.CPF);
        cout<<"\n Identidade: ";
        getline(cin, novoFuncionario.identidade);
        cout<<"\n Salario Bruto: ";
        cin>> novoFuncionario.salario;
        cout<<"\n --------------------------------------------------------------- ";
        cout<<"\n";
*/
        fflush(stdin);
        system("cls");
        return novoFuncionario;
}

Dúvidas avise! Esse código que eu fiz não é o programa todo, fiz algumas funções básicas, mas que devem ser suficientes pra que você utilize como base. 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...