Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*6) Considerando o arquivo contendo registros gravados com os seguintes campos:
- codmat código do material - numérico inteiro
- nomat nome do material
- qtest quantidade em estoque - numérico inteiro
- qtmin quantidade mínima - numérico inteiro
- prunit preço unitário - numérico real.
- a) Fazer a alteração automática do preço unitário de todos os materiais. O usuário deverá fornecer o índice de reajuste.
- b) Exibir na tela código e nome do material cuja quantidade em estoque seja inferior ou igual a quantidade mínima.*/
- #include <stdio.h>
- #include <stdlib.h>
- #pragma pack (1)
- typedef struct {
- int codmat; //codigo do material
- char nomat[30]; //nome do material
- int qtest; //quantidade em estoque
- int qtmin; //quantidade mínima
- float prunit; //preço unitário
- } estrutura;
- int main (void){
- int escolha;
- for (;;){
- system("clear");
- printf("____________________Cadastro de produtos___________________\n\n");
- printf("\nDigite a opção desejada:\n\n");
- printf("[1] Cadastrar produtos\n");
- printf("[2] Reajustar valores\n");
- printf("[3] Ver itens com estoque abaixo do mínimo\n");
- printf("[4] Ver todos os ítens\n");
- printf("[9] Sair\n\n");
- printf("Opcao escolhida: ");
- scanf("%d", &escolha);
- switch(escolha){
- case 1:
- cadastrar();
- break;
- case 2:
- reajustar_valores();
- break;
- case 3:
- ver_estoque();
- break;
- case 4:
- ver_tudo();
- break;
- case 9:
- system("clear");
- exit(1);
- default :
- system("clear");
- printf("Digite uma opcao valida.");
- sleep(3);
- system("clear");
- break;
- }
- }
- }
- cadastrar(){
- FILE *bd;
- estrutura cadastro;
- system("clear");
- printf("\nCadastro de Material:\n\n");
- printf("Digite o CÓDIGO do material: ");
- scanf("%d", &cadastro.codmat);
- printf("Digite o NOME do material: ");
- __fpurge(stdin);
- gets(cadastro.nomat);
- printf("Digite a quantidade ATUAL em ESTOQUE: ");
- scanf("%d", &cadastro.qtest);
- printf("Digite o a quantidade MINIMA para o material: ");
- scanf("%d", &cadastro.qtmin);
- printf("Digite o preço unitário do material: ");
- scanf("%f", &cadastro.prunit);
- if((bd=fopen("cadastro.data", "a+b")) == NULL) {
- printf("Erro ao abrir o arquivo. O programa foi abortado.\n");
- exit(1);}
- fwrite(&cadastro,sizeof(cadastro),1,bd);
- fclose(bd);
- }
- reajustar_valores(){
- FILE *bd, *temp;
- estrutura cadastro, tempor;
- float reajuste;
- int n, aux;
- system("clear");
- printf("\nDigite o valor da PORCENTAGEM reajuste desejado: ");
- scanf("%f", &reajuste);
- printf("\n");
- if((bd=fopen("cadastro.data", "a+b")) == NULL) {
- printf("Erro ao abrir o arquivo. O programa foi abortado.\n");
- exit(1);}
- if((temp=fopen("temp.data", "w+b")) == NULL) {
- printf("Erro ao abrir o arquivo. O programa foi abortado.\n");
- exit(1);}
- n = n_registros(bd);
- for( aux=0 ; aux<n ; aux++ ){
- fread(&cadastro,sizeof(cadastro),1,bd);
- if (feof(bd))break;
- else{
- tempor.prunit = cadastro.prunit + ((cadastro.prunit/100) * reajuste);
- tempor.codmat = cadastro.codmat;
- strcpy(tempor.nomat, cadastro.nomat);
- tempor.qtest = cadastro.qtest;
- tempor.qtmin = cadastro.qtmin;
- fwrite(&tempor,sizeof(estrutura),1,temp);
- printf("Item %d - Preço R$ %.2f atualizado para R$ %.2f \n" ,cadastro.codmat, cadastro.prunit ,tempor.prunit);
- }
- }
- fclose(bd);
- fclose(temp);
- system("rm cadastro.data");
- system("mv temp.data cadastro.data");
- printf("\nAperte ENTER para continuar.");
- __fpurge(stdin);
- getchar();
- system("clear");
- }
- ver_estoque(){
- system("clear");
- FILE *bd;
- estrutura cadastro;
- int n , aux;
- if((bd=fopen("cadastro.data", "r+b")) == NULL) {
- printf("Erro ao abrir o arquivo. O programa foi abortado.\n");
- exit(1);}
- n = n_registros(bd);
- for( aux=0 ; aux<n ; aux++ ){
- fread(&cadastro,sizeof(cadastro),1,bd);
- if (feof(bd))break;
- else if (cadastro.qtest<cadastro.qtmin){
- printf("\n-----------------------------------------");
- printf("\nCódigo do Material: %d ", cadastro.codmat);
- printf("\nNome do Material: %s ", cadastro.nomat);
- printf("\nQuantidade em estoque: %d ", cadastro.qtest);
- printf("\nQuantidade Minima: %d ", cadastro.qtmin);
- printf("\nPreço unitário: R$ %.2f ", cadastro.prunit);
- }
- }
- fclose(bd);
- printf("\n-----------------------------------------");
- printf("\nAperte ENTER para continuar.");
- __fpurge(stdin);
- getchar();
- }
- ver_tudo(){
- system("clear");
- FILE *bd;
- estrutura cadastro;
- int n , aux;
- if((bd=fopen("cadastro.data", "r+b")) == NULL) {
- printf("Erro ao abrir o arquivo. O programa foi abortado.\n");
- exit(1);}
- n = n_registros(bd);
- for( aux=0 ; aux<n ; aux++ ){
- fread(&cadastro,sizeof(cadastro),1,bd);
- if (feof(bd))break;
- else{
- printf("\n-----------------------------------------");
- printf("\nCódigo do Material: %d ", cadastro.codmat);
- printf("\nNome do Material: %s ", cadastro.nomat);
- printf("\nQuantidade em estoque: %d ", cadastro.qtest);
- printf("\nQuantidade Minima: %d ", cadastro.qtmin);
- printf("\nPreço unitário: R$ %.2f ", cadastro.prunit);
- }
- }
- fclose(bd);
- printf("\n-----------------------------------------");
- printf("\nAperte ENTER para continuar.");
- __fpurge(stdin);
- getchar();
- }
- n_registros(FILE *arquivo){
- long tamanho;
- int registros;
- if (arquivo != NULL) {
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- registros=tamanho/sizeof(estrutura);
- fseek(arquivo,0,SEEK_SET);
- }
- else {printf("Deu erro!");}
- return registros;
- }
Advertisement
Add Comment
Please, Sign In to add comment