Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- struct trabalhador
- {
- int id_trabalhador;
- char nome[50];
- int idade;
- char morada[30];
- float salario_bruto;
- float percentagem_irs;
- float percentagem_tsu;
- char departamento[50];
- float valor_irs;
- float valor_tsu;
- float salario_liquido;
- };
- #define num_trabalhadores 100
- struct trabalhador x[num_trabalhadores];
- alterar_struct(int id_trab)
- {
- printf("%d\n\n", id_trab);
- int idade2;
- float salario_bruto2, salario_liquido2, percentagem_irs2, percentagem_tsu2, valor_tsu2, valor_irs2;
- char nome2[50], morada2[30], departamento2[50];
- printf("ATENCAO: Quando pretender manter o valor anterior introduza 0!\n\n");
- //-------------------------------------------------------------------------------------------------
- printf("Introduza o um novo nome para o trabalhador %d: ", id_trab);
- scanf(" %s", &nome2);
- //printf("%s\n", nome2);
- if(nome2 == "0")
- {
- return;
- }
- else
- {
- strcpy((x+(id_trab-1))->nome,nome2);
- }
- //-------------------------------------------------------------------------------------------------
- printf("Introduza uma nova idade para o trabalhador %d: ", id_trab);
- scanf("%d", &idade2);
- if(idade2 == 0)
- {
- return;
- }
- else
- {
- (x+(id_trab-1))->idade = idade2;
- }
- //-------------------------------------------------------------------------------------------------
- printf("Introduza uma nova morada para o trabalhador %d: ", id_trab);
- scanf(" %s", &morada2);
- if(morada2 == "0")
- {
- return;
- }
- else
- {
- strcpy((x+(id_trab-1))->morada,morada2);
- }
- //-------------------------------------------------------------------------------------------------
- printf("Introduza um novo departamento para o trabalhador %d: ", id_trab);
- scanf(" %s", &departamento2);
- if(departamento2 == "0")
- {
- return;
- }
- else
- {
- strcpy((x+(id_trab-1))->departamento,departamento2);
- }
- //-------------------------------------------------------------------------------------------------
- printf("Introduza uma nova percentagem de IRS para o trabalhador %d (ex: 10%c = 0.10): ", id_trab);
- scanf("%f", &percentagem_irs2);
- if(percentagem_irs2 == 0)
- {
- return;
- }
- else
- {
- (x+(id_trab-1))->percentagem_irs = percentagem_irs2;
- }
- //-------------------------------------------------------------------------------------------------
- printf("Introduza uma nova percentagem de TSU para o trabalhador %d (ex: 10%c = 0.10): ", id_trab);
- scanf("%f", &percentagem_tsu2);
- if(percentagem_tsu2 == 0)
- {
- return;
- }
- else
- {
- (x+(id_trab-1))->percentagem_tsu = percentagem_tsu2;
- }
- //-------------------------------------------------------------------------------------------------
- printf("Introduza um novo salario bruto para o trabalhador %d: ", id_trab);
- scanf("%f", &salario_bruto2);
- if(salario_bruto2 == 0)
- {
- return;
- }
- else
- {
- (x+(id_trab-1))->salario_bruto = salario_bruto2;
- (x+(id_trab-1))->valor_irs = (x+(id_trab-1))->salario_bruto * (x+(id_trab-1))->percentagem_irs;
- (x+(id_trab-1))->valor_tsu = (x+(id_trab-1))->salario_bruto * (x+(id_trab-1))->percentagem_tsu;
- (x+(id_trab-1))->salario_liquido = (x+(id_trab-1))->salario_bruto - ((x+(id_trab-1))->valor_irs + (x+(id_trab-1))->valor_tsu);
- }
- //-------------------------------------------------------------------------------------------------
- printf("Trabalhador %d editado com sucesso!", id_trab);
- }
- eliminar_dado(int id)
- {
- strcpy((x+(id-1))->nome,"");
- (x+(id-1))->idade = 0;
- strcpy((x+(id-1))->morada,"");
- (x+(id-1))->salario_bruto = 0;
- (x+(id-1))->percentagem_irs = 0;
- (x+(id-1))->percentagem_tsu = 0;
- strcpy((x+(id-1))->departamento,"");
- (x+(id-1))->valor_irs = 0;
- (x+(id-1))->valor_tsu = 0;
- (x+(id-1))->salario_liquido = 0;
- (x+(id-1))->id_trabalhador = 0;
- }
- main()
- {
- int opcao, op, id, num_dados;
- int i;
- do
- {
- printf("Menu:\n");
- printf("1 - Inserir dados\n");
- printf("2 - Listagem geral dos dados\n");
- printf("3 - Consultar dados e alterar dados\n");
- printf("4 - Alterar dados\n");
- printf("5 - Eliminar dado\n");
- printf("6 - Sair\n");
- printf("Insira o numero da opcao: ");
- scanf("%d",&opcao);
- printf("\n");
- switch(opcao)
- {
- case 1:
- printf("Quantos dados pretende inserir? ");
- scanf("%d",&num_dados);
- if(num_dados <= 0 || num_dados > num_trabalhadores)
- {
- printf("So pode inserir valores entre 1 e %d", num_trabalhadores);
- }
- else
- {
- for(i=0; i < num_dados; i++)
- {
- int id_trabalhador_antes;
- int *id_trabalhador_antes_ponteiro;
- printf("\nInsira o id do trabalhador %d: ", i+1);
- scanf("%d",&id_trabalhador_antes);
- id_trabalhador_antes_ponteiro = id_trabalhador_antes;
- if(id_trabalhador_antes_ponteiro <= 0)
- {
- printf("Os valores tem de ser maiores que 0.");
- getch();
- break;
- }
- int i2;
- for(i2=0; i2 < num_trabalhadores; i2++)
- {
- if((x+i2)->id_trabalhador == id_trabalhador_antes_ponteiro)
- {
- printf("Ja existe um trabalhador com esse id!");
- getch();
- system("cls");
- main();
- }
- else
- {
- (x+i)->id_trabalhador=id_trabalhador_antes_ponteiro;
- }
- }
- printf("Insira o nome do trabalhador %d: ", i+1);
- //scanf(" %s",&x[i].nome);
- scanf("%s",&(x+i)->nome);
- printf("Insira a idade do trabalhador %d: ", i+1);
- scanf("%d",&(x+i)->idade);
- printf("Insira a morada do trabalhador %d: ", i+1);
- scanf("%s",&(x+i)->morada);
- printf("Insira o salario bruto do trabalhador %d: ", i+1);
- scanf("%f",&(x+i)->salario_bruto);
- printf("Insira a percentagem de IRS do trabalhador %d (ex: 10%c = 0.10): ", i+1, 37);
- scanf("%f",&(x+i)->percentagem_irs);
- printf("Insira a percentagem de TSU do trabalhador %d (ex: 10%c = 0.10): ", i+1, 37);
- scanf("%f",&(x+i)->percentagem_tsu);
- printf("Insira o nome do departamento do trabalhador %d: ", i+1);
- scanf("%s", &(x+i)->departamento);
- (x+i)->valor_irs = (x+i)->salario_bruto * (x+i)->percentagem_irs;
- (x+i)->valor_tsu = (x+i)->salario_bruto * (x+i)->percentagem_tsu;
- (x+i)->salario_liquido = (x+i)->salario_bruto - ((x+i)->valor_irs + (x+i)->valor_tsu);
- system("cls");
- }
- }
- break;
- case 2:
- if(num_dados <= 10)
- {
- for(i=0; i < num_dados; i++)
- {
- printf("ID Trabalhador: %d\n", (x+i)->id_trabalhador);
- printf("Nome: %s\n", (x+i)->nome);
- printf("Idade: %d\n", (x+i)->idade);
- printf("Morada: %s\n", (x+i)->morada);
- printf("Departamento: %s\n", (x+i)->departamento);
- printf("Salario Bruto: %.2f\n", (x+i)->salario_bruto);
- printf("Percentagem IRS: %.2f\n", (x+i)->percentagem_irs);
- printf("Percentagem TSU: %.2f\n", (x+i)->percentagem_tsu);
- printf("Valor IRS: %.2f\n", (x+i)->valor_irs);
- printf("Valor TSU: %.2f\n", (x+i)->valor_tsu);
- printf("Salario Liquido: %.2f\n\n", (x+i)->salario_liquido);
- }
- }
- else if(num_dados > 10)
- {
- for(i=0; i < num_dados; i++)
- {
- if(i % 10 == 0)
- {
- getch();
- }
- printf("ID Trabalhador: %d\n", (x+i)->id_trabalhador+1);
- printf("Nome: %s\n", (x+i)->nome);
- printf("Idade: %d\n", (x+i)->idade);
- printf("Morada: %s\n", (x+i)->morada);
- printf("Departamento: %s\n", (x+i)->departamento);
- printf("Salario Bruto: %.2f\n", (x+i)->salario_bruto);
- printf("Percentagem IRS: %.2f\n", (x+i)->percentagem_irs);
- printf("Percentagem TSU: %.2f\n", (x+i)->percentagem_tsu);
- printf("Valor IRS: %.2f\n", (x+i)->valor_irs);
- printf("Valor TSU: %.2f\n", (x+i)->valor_tsu);
- printf("Salario Liquido: %.2f\n\n", (x+i)->salario_liquido);
- }
- }
- getch();
- system("cls");
- break;
- case 3:
- printf("Introduza o id de trabalhador que pretende visualizar: ");
- scanf("%d",&id);
- printf("ID Trabalhador: %d\n", (x+(id-1))->id_trabalhador);
- printf("Nome: %s\n", (x+(id-1))->nome);
- printf("Idade: %d\n",(x+(id-1))->idade);
- printf("Morada: %s\n", (x+(id-1))->morada);
- printf("Departamento: %s\n", (x+(id-1))->departamento);
- printf("Salario Bruto: %.2f\n", (x+(id-1))->salario_bruto);
- printf("Percentagem IRS: %.2f\n", (x+(id-1))->percentagem_irs);
- printf("Percentagem TSU: %.2f\n", (x+(id-1))->percentagem_tsu);
- printf("Valor IRS: %.2f\n", (x+(id-1))->valor_irs);
- printf("Valor TSU: %.2f\n", (x+(id-1))->valor_tsu);
- printf("Salario Liquido: %.2f\n\n", (x+(id-1))->salario_liquido);
- getch();
- printf("Pretende editar os dados do trabalhador?\n");
- printf("1 - Sim\n");
- printf("2 - Nao\n");
- scanf("%d",&op);
- if(op == 1)
- {
- alterar_struct(id);
- }
- else if (op == 2)
- {
- system("cls");
- }
- else
- {
- printf("Opcao Invalida!");
- }
- break;
- case 4:
- printf("Introduza o id de trabalhador que pretende alterar: ");
- scanf("%d",&id);
- alterar_struct(id);
- system("cls");
- break;
- case 5:
- printf("Introduza o id de trabalhador que pretende remover: ");
- scanf("%d",&id);
- eliminar_dado(id);
- getch();
- system("cls");
- break;
- case 6:
- exit(0);
- break;
- }
- } while(opcao != 6);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement