Ir ao conteúdo

Posts recomendados

Postado

boa noite fiz esse exercício e não está certo pode me ajudar por favor  

1-    Inserir dados da consulta; 
a.    Iniciar atendimento; 
2-    Exibir consultas; 
3-    Consultar atendimentos; 
4-    Finalizar programa. 
O programa deve funcionar da seguinte maneira. Quando um cliente chega na veterinária, o atendente antes de iniciar o atendimento insere os dados dele no sistema e logo após inserir os dados é apresentado a opção de iniciar o atendimento. Os dados devem ficar em um arquivo binário e servirá para todos que forem atendidos na veterinária, já o atendimento deve ser um arquivo de texto, gerado com o nome do animal + o nome do dono. 
Ao finalizar a entrada dos dados de atendimento, que deve ser um arquivo de texto para cada atendimento, o sistema retorna para o menu. 
O arquivo de texto do atendimento, pode ser feito com a inserção de várias linhas de texto até que o veterinário não queira mais inserir texto finalizando o arquivo, este não poderá ser reaberto. 
A opção Exibir consultas, apresenta todos as consultas cadastradas.
A opção Consultar atendimentos, permite que o usuário digite o nome do animal+dono e seja feita a busca pelo arquivo.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

typedef struct {
char nome1[100];
char nome2[100];
int data1, data2;
float valor;
} clinica;
void menu();
void Inserirdadosdaconsulta();
void escreverdadosarquivo();
void carregararquivo();
void Exibirconsultas();
void Finalizarprograma();
void Consultaratendimentos();
void Iniciaratendimento();
int cont=0;
FILE *arquivo;
animal_+_dono f[1000];
animal_+_dono F;

int main ()
{
char opc;
setlocale(LC_ALL,"Portuguese");
do
{
fflush(stdin);
        menu();
        fflush(stdin);
        printf("\nDeseja continuar: s/n?");
        scanf("%c",&opc);
    }
    while (opc != 'n');

    return 0;
}

void Inserirdadosdaconsulta() {
    printf("Para finalizar o cadastro clica ponto:\n");

    while (1)
    {
        fflush(stdin);
        printf("\nNome1? ");
        gets(f[cont].nome1);
        if ( !strcmp(f[cont].nome1,".") ) break;
        printf("\nNome2? ");
        gets(f[cont].nome2);
        if ( !strcmp(f[cont].nome2,".") ) break;
        printf("\nData1? ");
        scanf("%i",&f[cont].data1);
        printf("\nData2? ");
        scanf("%i",&f[cont].data2);
        printf("\nValor? ");
        scanf("%f",&f[cont].valor);
        cont++;
    }
Finalizarprograma();
}
void Exibirconsultas() {
    for (int i = 0; i < cont; i++) {
        printf("%i\t%s\t%7.2f\n", f[i].data1, f[i].data2, f[i].nome1, f[i].nome2, f[i].valor);
    }
Finalizarprograma();
}
void escreverdadosarquivo(){

    if ( (arqv = fopen("dados.x","wb"))== NULL )
    {
        printf("Arquivo não pode ser criado\n");
        exit(1);
    }
    for (int i = 0; i < cont; i++) {
        fwrite(&f[i],sizeof(animal+dono),1,arqv);
    }

    printf("Dados digitados com sucesso!\n");

    fclose(arqv);
}
Finalizarprograma();
}
void carregararquivo(){

    if ( (arqv = fopen("dados.x","r"))== NULL )
    {
        printf("O arquivo não pode ser aberto\n");
        exit(1);
    }

    // limpeza de todos os itens dentro da memória antes de carregar os dados do arquivo
    memset(f, 0, sizeof(f));
    cont = 0;

    while (1) {
        fread(&F,sizeof(animal+dono),1,arqv);
        if ( feof(arqv) ) break;
        f[cont] = F;
        cont++;
    }
    printf("Abertura dos dados na memória com sucesso!");
    fclose(arqv);
}
Iniciaratendimento();
while (1) {
        fread(&F,sizeof(animal+dono),1,arqv);
        if ( feof(arqv) ) break;
 }
}
fclose(arqv);
printf("\n %i\t %s\t %7.2f", f.data1, f.data2, f.nome1, f.nome2, f.valor);
        }
    printf("Arquivo não pode ser aberto\n");
        exit(1);
    }
}
void Consultaratendimentos(){
    char nome1[100];
    char nome2[100];
    animal+dono aux[100];
    int i = 0;

    fflush(stdin);
    printf("Digite o atendimento que você quer consultar?");
    gets(nome1);
    printf("Digite o atendimento que você quer consultar?");
    gets(nome2);
Iniciaratendimento();

    while (1) {
        fread(&F,sizeof(animal+dono),1,arqv);
        if ( feof(arqv) ) break;

        if (strstr(F.nome1, F.nome2, nome) != NULL) {
            aux[i] = F;
            i++;
        }

    }
fflush(stdin);
    for (int x = 0; x < i; x++){
        printf("\n %i\t %s\t %7.2f", aux[x].data1, aux[x].data2, aux[x].nome1, aux[x].nome2, aux[x].valor);
    }
 fclose(arqv);
}
void Iniciaratendimento() {
    if ( (arqv = fopen("dados.x","r")) == NULL ) {
        printf("Não foi possível abrir o arquivo!!\n");
        exit(1);
    }
}
void Finalizarprograma()
{
    fclose(arqv);
}
void menu() {
    int opc;
    printf("\n1- Inserir dados da consulta");
    printf("\na.- Iniciar atendimento");
    printf("\n2- Exibir consultas");
    printf("\n3- Consultar atendimentos");
    printf("\n4- Finalizar programa");
    printf("\nEscolha sua opcao: ");
    scanf("%d",&opc);
    switch (opc)
    {
case 1:
       Inserirdados();
        break;
    case 2:
        Iniciaratendimento();
        break;
    case 3:
        Exibirconsultas();
        break;
    case 4:
        Consultaratendimentos();
        break;
    case 5:
        Finalizarprograma();
        break;
    default:
        printf("\nOpcao inválida");
    }
}

  • Obrigado 1
  • 3 semanas depois...
Postado
Em 12/12/2021 às 22:37, oromotoceu disse:

Quando um cliente chega na veterinária, o atendente antes de iniciar o atendimento insere os dados dele no sistema

se o atendente não conhece esse cliente , então como vai inserir os dados dele no sistema  para depois iniciar o atendimento  ?  , 

para que serve uma função que vai apenas fechar um arquivo  ?   ,   por que você está usando argv , para abrir o arquivo  ?  ,     e por que você disse que o arquivo não poderá mais ser aberto   ?   ,    mas para fazer a busca no arquivo vai precisar abrir o arquivo sim  ,    e o que significa essas duas linhas  ?  

Em 12/12/2021 às 22:37, oromotoceu disse:

animal_+_dono f[1000];
animal_+_dono F;

e usando o botão  code <>  para postar ,  seu código  ficou assim :

/*
Denunciar
#1
Postado 12 de dezembro
boa noite fiz esse exercício e não está certo pode me ajudar por favor

1 - Inserir dados da consulta;
a.Iniciar atendimento;
2 - Exibir consultas;
3 - Consultar atendimentos;
4 - Finalizar programa.
O programa deve funcionar da seguinte maneira.Quando um cliente chega na veterinária, o atendente antes de iniciar o atendimento insere os dados dele no sistema e logo após inserir os dados é apresentado a opção de iniciar o atendimento.Os dados devem ficar em um arquivo binário e servirá para todos que forem atendidos na veterinária, já o atendimento deve ser um arquivo de texto, gerado com o nome do animal + o nome do dono.
Ao finalizar a entrada dos dados de atendimento, que deve ser um arquivo de texto para cada atendimento, o sistema retorna para o menu.
O arquivo de texto do atendimento, pode ser feito com a inserção de várias linhas de texto até que o veterinário não queira mais inserir texto finalizando o arquivo, este não poderá ser reaberto.
A opção Exibir consultas, apresenta todos as consultas cadastradas.
A opção Consultar atendimentos, permite que o usuário digite o nome do animal + dono e seja feita a busca pelo arquivo.
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define getch() _getch()
#define kbhit() _kbhit()

typedef struct 
{
    char nome1[100];
    char nome2[100];
    int data1, data2;
    float valor;
    int cont;
} clinica;

int menu();
int Inserirdadosdaconsulta(clinica*);
int escreverdadosarquivo(FILE* , clinica*);
int carregararquivo(FILE* , clinica*);
int Exibirconsultas(FILE* , clinica*);
int Finalizarprograma(FILE*);
int Consultaratendimentos(FILE*, clinica*);
int Iniciaratendimento(FILE*,clinica*);
/*
int cont = 0;
FILE* arquivo;
animal_ + _dono f[1000];
animal_ + _dono F;
*/
int main()
{
    clinica c[10];
    c[0].cont = 0;
    FILE* arquivo ;
    arquivo = fopen("dados.x", "r");
    int opc = 0;
    setlocale(LC_ALL, "Portuguese");
    do
    {
        fflush(stdin);
        opc = menu();
        switch (opc)
        {
        case 1:
            Inserirdadosdaconsulta(c);
            break;
        case 2:
            Iniciaratendimento(arquivo,c);
            break;
        case 3:
            Exibirconsultas(arquivo,c);
            break;
        case 4:
            Consultaratendimentos(arquivo, c);
            break;
        case 5:
            Finalizarprograma(arquivo);
            break;
        default:
            printf("\nOpcao inválida");
        }
        fflush(stdin);
        printf("\nDeseja continuar: s/n?");
        scanf("%c", &opc);
    } while (opc != 78 || opc != 110);

    return 0;
}

int Inserirdadosdaconsulta(clinica f[]) 
{
    printf("Para finalizar o cadastro clica ponto:\n");
    while (1)
    {
        fflush(stdin);
        printf("Nome1? ");
        fgets(f[f[0].cont].nome1,99,stdin);
        if (!strcmp(f[f[0].cont].nome1, ".")) break;
        printf("Nome2? ");
        fgets(f[f[0].cont].nome2,99,stdin);
        if (!strcmp(f[f[0].cont].nome2, ".")) break;
        printf("Data1? ");
        scanf("%d", &f[f[0].cont].data1);
        printf("Data2? ");
        scanf("%d", &f[f[0].cont].data2);
        printf("Valor? ");
        scanf("%f", &f[f[0].cont].valor);
        f[0].cont++;
    }
    return 0;
}
int Exibirconsultas(clinica f[]) 
{
    for (int i = 0; i < f[0].cont; i++) 
    {
        printf("Data 1 --= %d     \n\
              \rData 2 --= %d     \n\
              \rNome 1 --= %s     \n\
              \rNome 2 --= %s     \n\
              \rValor ---= %7.2f \n", 
              f[i].data1, f[i].data2, 
              f[i].nome1, f[i].nome2, 
              f[i].valor);
    }
    return 0;
}
int escreverdadosarquivo(FILE* arq, clinica f[]) 
{

    if ((arq = fopen("dados.x", "wb")) == NULL)
    {
        printf("Arquivo não pode ser criado\n");
        exit(1);
    }
    for (int i = 0; i < f[0].cont; i++) 
    {
        fwrite(&f[i], sizeof(clinica ), 1, arq);
    }
    printf("Dados digitados com sucesso!\n");
    fclose(arq);
    return 0;
}
int carregararquivo(FILE* arq,clinica f[]) 
{
    if ((arq = fopen("dados.x", "r")) == NULL)
    {
        printf("O arquivo não pode ser aberto\n");
        exit(1);
    }
    // limpeza de todos os itens dentro da memória antes de carregar os dados do arquivo
    memset(f, 0, sizeof(f));
    int cont = 0;
    while (1) 
    {
        fread(&f, sizeof(clinica), 1, arq);
        if (feof(arq)) break;
        //f[cont] = f;
        cont++;
    }
    printf("Abertura dos dados na memória com sucesso!");
    fclose(arq);
    return 0;
}
int Iniciaratendimento(FILE* arq , clinica f[])
{
    while (1)
    {
        fread(&f, sizeof(clinica), 1, arq);
        if (feof(arq)) break;
        printf("\
            \n Data 1 ---= %d      \n\
            \r Data 2 ---= %d      \n\
            \r Nome 1 ---= %s      \n\
            \r Nome 2 ---= %s      \n\
            \r Valor ----= %7.2f \n\n",
            f[f[0].cont].data1, f[f[0].cont].data2, f[f[0].cont].nome1,
            f[f[0].cont].nome2, f[f[0].cont].valor
        );
    }
    fclose(arq);
    exit(1);
    return 0;
}
int Consultaratendimentos(FILE* arq,clinica f[]) 
{
    char nome1[100];
    char nome2[100];
    clinica aux[100];
    int i = 0;
    fflush(stdin);
    printf("Digite o atendimento que você quer consultar?");
    fgets(nome1,99,stdin);
    printf("Digite o atendimento que você quer consultar?");
    fgets(nome2,99,stdin);
    //Iniciaratendimento();
    while (1) 
    {
        fread(&f, sizeof(clinica), 1, arq);
        if (feof(arq)) break;

        //if (strstr(F.nome1, F.nome2, nome) != NULL) 
        {
            //aux[i] = f;
            i++;
        }
    }
    fflush(stdin);
    for (int x = 0; x < i; x++) 
    {
        printf("\n Data 1 ---= %d       \n\
                \r Data 3 ---= %d       \n\
                \r Nome 1 ---= %s       \n\
                \r Nome 2 ---= %s       \n\
                \r Valor ----= %7.2f \n\n", 
                aux[x].data1, aux[x].data2, 
                aux[x].nome1, aux[x].nome2, 
                aux[x].valor);
    }
    fclose(arq);
    return 0;
}
int Iniciaratendimento(FILE* arq) 
{
    if ((arq = fopen("dados.x", "r")) == NULL) {
        printf("Não foi possível abrir o arquivo!!\n");
        exit(1);
    }
    return 0;
}
int Finalizarprograma(FILE* arq)
{
    fclose(arq);
    return 0;
}
int menu() 
{
    printf("\n 1  - Inserir dados da consulta\n\
            \r na.- Iniciar atendimento      \n\
            \r 2  - Exibir consultas         \n\
            \r 3  - Consultar atendimentos   \n\
            \r 4  - Finalizar programa       \n\
            \r      Escolha sua opcao : "     );
    return getch() - 48;
}

mas ainda tem algum erro que não consegui descobrir .

  • Curtir 1
  • 3 meses depois...
Postado
Em 30/12/2021 às 22:57, devair1010 disse:

se o atendente não conhece esse cliente , então como vai inserir os dados dele no sistema  para depois iniciar o atendimento  ?  , 

para que serve uma função que vai apenas fechar um arquivo  ?   ,   por que você está usando argv , para abrir o arquivo  ?  ,     e por que você disse que o arquivo não poderá mais ser aberto   ?   ,    mas para fazer a busca no arquivo vai precisar abrir o arquivo sim  ,    e o que significa essas duas linhas  ?  

e usando o botão  code <>  para postar ,  seu código  ficou assim :

/*
Denunciar
#1
Postado 12 de dezembro
boa noite fiz esse exercício e não está certo pode me ajudar por favor

1 - Inserir dados da consulta;
a.Iniciar atendimento;
2 - Exibir consultas;
3 - Consultar atendimentos;
4 - Finalizar programa.
O programa deve funcionar da seguinte maneira.Quando um cliente chega na veterinária, o atendente antes de iniciar o atendimento insere os dados dele no sistema e logo após inserir os dados é apresentado a opção de iniciar o atendimento.Os dados devem ficar em um arquivo binário e servirá para todos que forem atendidos na veterinária, já o atendimento deve ser um arquivo de texto, gerado com o nome do animal + o nome do dono.
Ao finalizar a entrada dos dados de atendimento, que deve ser um arquivo de texto para cada atendimento, o sistema retorna para o menu.
O arquivo de texto do atendimento, pode ser feito com a inserção de várias linhas de texto até que o veterinário não queira mais inserir texto finalizando o arquivo, este não poderá ser reaberto.
A opção Exibir consultas, apresenta todos as consultas cadastradas.
A opção Consultar atendimentos, permite que o usuário digite o nome do animal + dono e seja feita a busca pelo arquivo.
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define getch() _getch()
#define kbhit() _kbhit()

typedef struct 
{
    char nome1[100];
    char nome2[100];
    int data1, data2;
    float valor;
    int cont;
} clinica;

int menu();
int Inserirdadosdaconsulta(clinica*);
int escreverdadosarquivo(FILE* , clinica*);
int carregararquivo(FILE* , clinica*);
int Exibirconsultas(FILE* , clinica*);
int Finalizarprograma(FILE*);
int Consultaratendimentos(FILE*, clinica*);
int Iniciaratendimento(FILE*,clinica*);
/*
int cont = 0;
FILE* arquivo;
animal_ + _dono f[1000];
animal_ + _dono F;
*/
int main()
{
    clinica c[10];
    c[0].cont = 0;
    FILE* arquivo ;
    arquivo = fopen("dados.x", "r");
    int opc = 0;
    setlocale(LC_ALL, "Portuguese");
    do
    {
        fflush(stdin);
        opc = menu();
        switch (opc)
        {
        case 1:
            Inserirdadosdaconsulta(c);
            break;
        case 2:
            Iniciaratendimento(arquivo,c);
            break;
        case 3:
            Exibirconsultas(arquivo,c);
            break;
        case 4:
            Consultaratendimentos(arquivo, c);
            break;
        case 5:
            Finalizarprograma(arquivo);
            break;
        default:
            printf("\nOpcao inválida");
        }
        fflush(stdin);
        printf("\nDeseja continuar: s/n?");
        scanf("%c", &opc);
    } while (opc != 78 || opc != 110);

    return 0;
}

int Inserirdadosdaconsulta(clinica f[]) 
{
    printf("Para finalizar o cadastro clica ponto:\n");
    while (1)
    {
        fflush(stdin);
        printf("Nome1? ");
        fgets(f[f[0].cont].nome1,99,stdin);
        if (!strcmp(f[f[0].cont].nome1, ".")) break;
        printf("Nome2? ");
        fgets(f[f[0].cont].nome2,99,stdin);
        if (!strcmp(f[f[0].cont].nome2, ".")) break;
        printf("Data1? ");
        scanf("%d", &f[f[0].cont].data1);
        printf("Data2? ");
        scanf("%d", &f[f[0].cont].data2);
        printf("Valor? ");
        scanf("%f", &f[f[0].cont].valor);
        f[0].cont++;
    }
    return 0;
}
int Exibirconsultas(clinica f[]) 
{
    for (int i = 0; i < f[0].cont; i++) 
    {
        printf("Data 1 --= %d     \n\
              \rData 2 --= %d     \n\
              \rNome 1 --= %s     \n\
              \rNome 2 --= %s     \n\
              \rValor ---= %7.2f \n", 
              f[i].data1, f[i].data2, 
              f[i].nome1, f[i].nome2, 
              f[i].valor);
    }
    return 0;
}
int escreverdadosarquivo(FILE* arq, clinica f[]) 
{

    if ((arq = fopen("dados.x", "wb")) == NULL)
    {
        printf("Arquivo não pode ser criado\n");
        exit(1);
    }
    for (int i = 0; i < f[0].cont; i++) 
    {
        fwrite(&f[i], sizeof(clinica ), 1, arq);
    }
    printf("Dados digitados com sucesso!\n");
    fclose(arq);
    return 0;
}
int carregararquivo(FILE* arq,clinica f[]) 
{
    if ((arq = fopen("dados.x", "r")) == NULL)
    {
        printf("O arquivo não pode ser aberto\n");
        exit(1);
    }
    // limpeza de todos os itens dentro da memória antes de carregar os dados do arquivo
    memset(f, 0, sizeof(f));
    int cont = 0;
    while (1) 
    {
        fread(&f, sizeof(clinica), 1, arq);
        if (feof(arq)) break;
        //f[cont] = f;
        cont++;
    }
    printf("Abertura dos dados na memória com sucesso!");
    fclose(arq);
    return 0;
}
int Iniciaratendimento(FILE* arq , clinica f[])
{
    while (1)
    {
        fread(&f, sizeof(clinica), 1, arq);
        if (feof(arq)) break;
        printf("\
            \n Data 1 ---= %d      \n\
            \r Data 2 ---= %d      \n\
            \r Nome 1 ---= %s      \n\
            \r Nome 2 ---= %s      \n\
            \r Valor ----= %7.2f \n\n",
            f[f[0].cont].data1, f[f[0].cont].data2, f[f[0].cont].nome1,
            f[f[0].cont].nome2, f[f[0].cont].valor
        );
    }
    fclose(arq);
    exit(1);
    return 0;
}
int Consultaratendimentos(FILE* arq,clinica f[]) 
{
    char nome1[100];
    char nome2[100];
    clinica aux[100];
    int i = 0;
    fflush(stdin);
    printf("Digite o atendimento que você quer consultar?");
    fgets(nome1,99,stdin);
    printf("Digite o atendimento que você quer consultar?");
    fgets(nome2,99,stdin);
    //Iniciaratendimento();
    while (1) 
    {
        fread(&f, sizeof(clinica), 1, arq);
        if (feof(arq)) break;

        //if (strstr(F.nome1, F.nome2, nome) != NULL) 
        {
            //aux[i] = f;
            i++;
        }
    }
    fflush(stdin);
    for (int x = 0; x < i; x++) 
    {
        printf("\n Data 1 ---= %d       \n\
                \r Data 3 ---= %d       \n\
                \r Nome 1 ---= %s       \n\
                \r Nome 2 ---= %s       \n\
                \r Valor ----= %7.2f \n\n", 
                aux[x].data1, aux[x].data2, 
                aux[x].nome1, aux[x].nome2, 
                aux[x].valor);
    }
    fclose(arq);
    return 0;
}
int Iniciaratendimento(FILE* arq) 
{
    if ((arq = fopen("dados.x", "r")) == NULL) {
        printf("Não foi possível abrir o arquivo!!\n");
        exit(1);
    }
    return 0;
}
int Finalizarprograma(FILE* arq)
{
    fclose(arq);
    return 0;
}
int menu() 
{
    printf("\n 1  - Inserir dados da consulta\n\
            \r na.- Iniciar atendimento      \n\
            \r 2  - Exibir consultas         \n\
            \r 3  - Consultar atendimentos   \n\
            \r 4  - Finalizar programa       \n\
            \r      Escolha sua opcao : "     );
    return getch() - 48;
}

mas ainda tem algum erro que não consegui descobrir .

obrigado por ter respondido o meu comentário esse dia foi tenso para mim e uma derrota que até hoje não esqueci 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!