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.
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);
}
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;
Pergunta
lucas costa da cruz
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");
}
}
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.