Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- SINTESE
- Objetivo: Armazenar os dados de venda dos agasalhos de uma loja
- Entrada: Codigo do agasalho, a cor do agasalho e o tamanho de cada agasalho cadastrado.
- Saida: Lista em ordem alfabetica das cores com os dados dos agasalhos cadastrados
- */
- #include <stdio.h>
- #include <stdlib.h> //alocacao
- #include <string.h> //string
- #include <ctype.h> //toupper
- #include <conio.h>
- #define MAX_COR 40 //tam da cor
- #define ARQUIVO "backup.bin" //noem arquivo
- #define MAX_AGASALHO 200
- typedef struct {
- int codigo;
- char cor [MAX_COR];
- char tamanho;
- } ficha;
- /*PROTOTIPOS*/
- void validaCodigo (long int *pCodigo);
- void corrigeString (char *pString);
- void validaCor (char *pCor);
- char validaTamanho (char tamanho);
- void arquivarRegistro (ficha *pAgasalho);
- void listar ();
- int main(void) {
- //Declaracoes
- ficha agasalho;
- int opcaoMenu;
- //Instrucoes
- system ("TITLE AGASALHOS");
- do{
- system ("cls");
- printf("\n*********************************\n");
- printf("*\t\tMENU\t\t*");
- printf("\n*********************************\n");
- printf("*\t[1] - NOVO REGISTRO\t*\n");
- printf("*\t[2] - LISTAR REGISTROS\t*\n");
- printf("*\t[3] - SAIR\t\t*\n");
- printf("*********************************\n");
- printf("\t\nInforme o numero de acordo com o que se deseja:\t\n");
- scanf ("%d", &opcaoMenu);
- switch (opcaoMenu){
- case 1:
- system ("cls");
- printf ("\nInsira o codigo (max. 10 numeros) do agasalho: \n");
- scanf ("%d", &agasalho.codigo);
- validaCodigo (&agasalho.codigo);
- fflush (stdin);
- printf ("CODIGO: %d", agasalho.codigo);
- printf ("\n______________________________________________________\n");
- printf ("Informe o tamanho do agasalho: \n\t(P) pequeno \t(M) medio \tG (grande): \n");
- scanf ("%c", &agasalho.tamanho);
- fflush (stdin);
- agasalho.tamanho = toupper (agasalho.tamanho);
- agasalho.tamanho = validaTamanho (agasalho.tamanho);
- printf ("TAMANHO: %c\n", agasalho.tamanho);
- printf ("\n______________________________________________________\n");
- printf("Informe a cor do agasalho: \n");
- fgets (agasalho.cor, MAX_COR, stdin);
- validaCor (agasalho.cor);
- corrigeString (agasalho.cor);
- printf ("COR: %s", strlwr (agasalho.cor));
- arquivarRegistro (&agasalho);
- break;
- case 2:
- system ("cls");
- listar ();
- printf ("\n\n\t\t Aperte enter para continuar...\n\n\n");
- getche();
- break;
- case 3:
- system ("cls");
- printf("\nPROGRAMA FINALIZADO!\n");
- break;
- default:
- printf("\n\tNUMERO INVALIDO!\n");
- break;
- }
- } while (opcaoMenu != 3);
- return 0;
- }
- /*SINTESE
- Objetivo: Validar codigo do agasalho
- Parametro: Endereco de agasalho.codigo
- Retorno: Sem retorno
- */
- void validaCodigo (long int *pCodigo){
- while (*pCodigo < 0 || *pCodigo > 1000000000 ){
- // system("cls");
- printf ("\n\tCODIGO INVALIDO! \nInforme um codigo MAIOR que ZERO e MENOR que 10 digitos: ");
- scanf("%ld", pCodigo);
- }
- }
- /*SINTESE
- Objetivo: Validar tamanho do agasalho
- Parametro: Endereco de tamanho.codigo
- Retorno: Tamanho validado
- */
- char validaTamanho (char tamanho){
- while ((tamanho != 'P' && tamanho != 'M' && tamanho != 'G') || tamanho == '\n'){
- //system ("cls");
- printf("\n\tTAMANHO INVALIDO! \nInforme novamente o tamanho do agasalho: \n\t(P) pequeno \t(M) medio \tG (grande): \n");
- scanf ("%c", &tamanho);
- fflush (stdin);
- tamanho = toupper (tamanho);
- }
- }
- /*SINTESE
- Objetivo: Corrigir string
- Parametro: string
- Retorno: Sem retorno
- */
- void corrigeString (char *pString){
- if (pString [strlen(pString)-1] == '\n'){
- pString [strlen(pString)-1] = '\0';
- }
- }
- /*SINTESE
- Objetivo: Validar cor
- Parametro: agasalho.cor
- Retorno: Sem retorno
- */
- void validaCor (char *pCor){
- while (strlen (pCor) == 0 || pCor [0] == '\n'){
- //system ("cls");
- printf ("\n\tCOR INVALIDA! \nInforme a cor novamente: ");
- fgets (pCor, MAX_COR, stdin);
- pCor = strlwr (pCor);
- corrigeString (pCor);
- }
- }
- //------------------------------------------------------------------------------------------------------------------------------ARQUIVOS-----------------------
- /*SINTESE
- Objetivo: Cadastrar os dados dos agasalhos usando arquivos
- Parametro: codigo, cor e tamanho
- Retorno: Sem retorno
- */
- void arquivarRegistro (ficha *pAgasalho){
- FILE *arquivo;
- arquivo = fopen (ARQUIVO, "ab");
- if (arquivo == NULL){
- printf ("\nARQUIVO NAO FOI CRIADO!\n");
- exit (1);
- }else {
- fwrite (pAgasalho, sizeof (ficha), 1, arquivo);
- /*
- fwrite (&pAgasalho->codigo, sizeof ( int), 1, arquivo);
- fwrite (&pAgasalho->tamanho, sizeof (char), 1, arquivo);
- fwrite (pAgasalho->cor, sizeof (char), MAX_COR, arquivo);
- */
- system ("cls");
- printf("\nARQUIVO CRIADO COM SUCESSO!\n");
- }
- fclose (arquivo);
- }
- void listar (){
- ficha agasalho;
- FILE *arquivo;
- arquivo = fopen (ARQUIVO, "rb");
- if (arquivo == NULL){
- system ("cls");
- printf ("ARQUIVO NAO ENCONTRADO!\n");
- exit(1);
- }else {
- system ("cls");
- printf ("\t CODIGO \t\tTAMANHO \t\t COR");
- /*
- while (fread (&agasalho.codigo, sizeof ( int), 1, arquivo) != 0){
- fread (&agasalho.tamanho, sizeof (char), 1, arquivo);
- fread (agasalho.cor, sizeof (char), MAX_COR, arquivo);
- */
- while (! feof (arquivo)){
- fread (&agasalho, sizeof (ficha), 1, arquivo);
- printf ("\t %d ", agasalho.codigo);
- printf ("\t\t%s ", agasalho.tamanho);
- printf ("\t\t %s", agasalho.cor);
- }
- }
- fclose(arquivo);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement