Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<ctype.h>
- #define ARQ_PAC "Paciente.dat"
- #define ARQ_PAC2 "Medico.dat"
- #define ARQ_PAC3 "Consulta.dat"
- struct paciente
- {
- char nome[80];
- char email[50];
- char fone[20];
- char endereco[50];
- int idade;
- int cod_paciente;
- };
- struct medico
- {
- char nome[80];
- char email[50];
- char fone[20];
- char endereco[50];
- char especialidade [30];
- int idade;
- int cod_medico;
- float salario;
- };
- struct consultas
- {
- int cod_consulta;
- int cod_medico;
- int cod_paciente;
- int dia;
- int mes;
- int ano;
- float valor;
- char diagnostico[100];
- };
- typedef struct paciente Pacientes;
- typedef struct medico Medico;
- typedef struct consultas Consultas;
- int menu_Principal();
- int menu_Inserir();
- int menu_Pesquisar();
- int menu_Relatorios();
- int menu_Alterar();
- int menu_Excluir();
- void imprimir_Titulo(void);
- void imprimir_Cabecalho(char *titulo, char *mensagem);
- void imprime_Erro( char *mensagem);
- void imprimir_Paciente (struct paciente Pacientes);
- void imprimir_Medico (struct medico Medico);
- void finalizar(void);
- int validar_Nome(char *nome);
- int validar_Email(char *email);
- int validar_Idade(int idade);
- int validar_Salario(float salario);
- int validar_Telefone(char *fone);
- int validar_Data(int dia, int mes, int ano);
- int validar_Valor(float valor);
- void cadastrar_Paciente();
- void cadastrar_Medico();
- void cadastrar_Consulta();
- void pesquisar_Paciente(int x);
- void pesquisar_Medico(int x);
- void pesquisar_Consulta(int x);
- void passa_Minusculo(char *texto);
- void listar_Pacientes(void);
- void listar_Medicos(void);
- void listar_Total(void);
- void listar_idades(void);
- int main ()
- {
- int op;
- //Limpa do diretório arquivos temporários
- system("rm *~");
- do
- {
- op = menu_Principal();
- switch(op)
- {
- case 1://Inserir
- {
- menu_Inserir();
- }
- break;
- case 2://Pesquisar
- {
- menu_Pesquisar();
- }
- break;
- case 3://Alterar
- {
- menu_Alterar();
- }
- break;
- case 4://Excluir
- {
- menu_Excluir();
- }
- break;
- case 5: //Exibir relatórios
- {
- menu_Relatorios();
- }
- break;
- case 6:
- {
- finalizar();
- }
- break;
- }//Fim do switch
- if(op != 6)
- {
- printf("\n\t------------------------------------------------\n\tDigite enter para voltar ao menu principal!\n\t------------------------------------------------\n\t");
- getchar();
- }
- } while (op!=6);
- }
- int menu_Principal ()
- {
- int op;
- imprimir_Titulo();
- //Validar a entrada de opcoes
- do
- {
- printf("\n\n\t\t1- Cadastrar");
- printf("\n\t\t2- Pesquisar");
- printf("\n\t\t3- Alterar cadastro");
- printf("\n\t\t4- Excluir cadastro");
- printf("\n\t\t5- Exibir relatorios");
- printf("\n\t\t6- Sair do sistema");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c", &op);
- if (op<1 || op>6)
- {
- imprime_Erro("Opcao invalida! Escolha uma opcao de 1 a 6");
- }
- } while (op<1 || op>6);
- return op;
- }
- int menu_Inserir ()
- {
- int op;
- imprimir_Titulo();
- //Validar a entrada de opcoes
- do
- {
- printf("\n\n\t\t1- Cadastrar pacientes");
- printf("\n\t\t2- Cadastrar medicos");
- printf("\n\t\t3- Cadastrar consultas");
- printf("\n\t\t4- Voltar ao menu principal");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c", &op);
- switch (op)
- {
- case 1: //Cadastrar pacientes
- {
- cadastrar_Paciente();
- }
- break;
- case 2: //Cadastrar medicos
- {
- cadastrar_Medico();
- }
- break;
- case 3: //Cadastrar consultas
- {
- cadastrar_Consulta();
- }
- break;
- case 4:
- {
- }//Retornar ao menu principal
- break;
- default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
- }
- } while (op<1 || op>4);
- return op;
- }
- int menu_Pesquisar ()
- {
- int op;
- imprimir_Titulo();
- //Validar a entrada de opcoes
- do
- {
- printf("\n\n\t\t1- Pesquisar pacientes");
- printf("\n\t\t2- Pesquisar medicos");
- printf("\n\t\t3- Pesquisar consultas");
- printf("\n\t\t4- Retornar ao menu principal");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c", &op);
- switch (op)
- {
- case 1: //Pesquisar paciente
- {
- imprimir_Titulo();
- printf("\n\n\t\t1- Pesquisar por nome");
- printf("\n\t\t2- Pesquisar por codigo");
- printf("\n\t\t3- Retornar ao menu principal");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c",&op);
- switch(op)
- {
- case 1: //pesquisa por nome
- {
- pesquisar_Paciente(1);
- }
- break;
- case 2: //parametro 2 pesquisa por codigo
- {
- pesquisar_Paciente(2);
- }
- break;
- case 3:
- {
- }
- break;
- default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 3");
- }
- }
- break;
- case 2: //Pesquisar medicos
- {
- imprimir_Titulo();
- printf("\n\n\t\t1- Pesquisar por nome");
- printf("\n\t\t2- Pesquisar por codigo");
- printf("\n\t\t3- Pesquisar por especialidade");
- printf("\n\t\t4- Retornar ao menu principal");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c",&op);
- switch(op)
- {
- case 1: //Parametro 1 pesquisa por nome
- {
- pesquisar_Medico(1);
- }
- break;
- case 2: //Parametro 2 pesquisa por codigo
- {
- pesquisar_Medico(2);
- }
- break;
- case 3: //Parametro 3 pesquisa por especialidade
- {
- pesquisar_Medico(3);
- }
- break;
- case 4:
- {
- }
- break;
- default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
- }
- }
- break;
- case 3: //Pesquisar consultas
- {
- imprimir_Titulo();
- printf("\n\n\t\t1- Pesquisar por data");
- printf("\n\t\t2- Pesquisar por medico");
- printf("\n\t\t3- Pesquisar por paciente");
- printf("\n\t\t4- Retornar ao menu principal");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c",&op);
- switch(op)
- {
- case 1: //Parametro 1 pesquisa por data
- //pesquisa por data
- pesquisar_Consulta(1);
- break;
- case 2://parametro 2 pesquisa por medico
- pesquisar_Consulta(2);
- break;
- case 3://parametro 3 pesquisa por paciente
- pesquisar_Consulta(3);
- break;
- case 4: break;
- default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
- }
- }
- break;
- case 4: //Retornar ao menu principal
- break;
- default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
- }
- } while (op<1 || op>4);
- return op;
- }
- int menu_Relatorios ()
- {
- int op;
- imprimir_Titulo();
- //Validar a entrada de opcoes
- do
- {
- printf("\n\n\t\t1- Lista de todos os pacientes");
- printf("\n\t\t2- Lista de todos os medicos");
- printf("\n\t\t3- Lista do total arrecado por consultas");
- printf("\n\t\t4- Lista de pacientes separados por idade");
- printf("\n\t\t5- Retornar ao menu principal");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c", &op);
- switch (op)
- {
- case 1:
- {
- listar_Pacientes();
- }
- break;
- case 2:
- {
- listar_Medicos();
- }
- break;
- case 3:
- {
- listar_Total();
- }
- break;
- case 4:
- {
- listar_idades();
- }
- break;
- case 5:
- {
- }
- break;
- default: imprime_Erro("Opcao invalida. Escolha de 1 a 5");
- }
- }while (op<1 || op>5);
- return op;
- }
- int menu_Alterar ()
- {
- int op;
- imprimir_Titulo();
- //Validar a entrada de opcoes
- do
- {
- printf("\n\n\t\t1- Alterar dados de pacientes");
- printf("\n\t\t2- Alterar dados de medicos");
- printf("\n\t\t3- Alterar consultas");
- printf("\n\t\t4- Retornar ao menu principal");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c", &op);
- switch (op)
- {
- case 1:
- {
- //alterar_Paciente();
- }
- break;
- case 2:
- {
- //alterar medicos
- }
- break;
- case 3:
- {
- //alterar consultas
- }
- break;
- case 4://retornar ao menu principal
- {
- }
- break;
- default: imprime_Erro("Digite uma opcao de 1 a 4.");
- }
- } while (op<1 || op>4);
- return op;
- }
- int menu_Excluir()
- {
- int op;
- imprimir_Titulo();
- //Validar a entrada de opcoes
- do
- {
- printf("\n\n\t\t1- Excluir pacientes");
- printf("\n\t\t2- Excluir medicos");
- printf("\n\t\t3- Excluir consultas");
- printf("\n\t\t4- Retornar ao menu principal");
- printf("\n\n\tDigite a opcao desejada: ");
- scanf("%d%*c", &op);
- switch (op)
- {
- case 1://Excluir pacientes
- {
- }
- break;
- case 2://Excluir medicos
- {
- }
- break;
- case 3://excluir consultas
- {
- }
- break;
- case 4://Retornar ao menu principal
- {
- }
- break;
- default: imprime_Erro("Digite uma opcao de 1 a 4.");
- }
- } while (op<1 || op>4);
- return op;
- }
- void imprimir_Titulo(void)
- {
- system("clear || cls");
- printf("\n\n\t------------------------------------------------\n\n\t\t\t CLINICA MEDICA \n\n\t------------------------------------------------");
- }
- void imprimir_Cabecalho(char *titulo, char *mensagem)
- {
- imprimir_Titulo();
- printf("\n\n\t------------------------------------------------\n\t\t\t %s \n\t------------------------------------------------\n\n\t%s\n", titulo, mensagem);
- }
- void imprime_Erro( char *mensagem)
- {
- imprimir_Titulo();
- printf("\n\n\t------------------------------------------------\n\t\t\t \tERRO \n\t------------------------------------------------\n\t%s\n\t\tDigite corretamente desta vez!\n\t------------------------------------------------\n", mensagem);
- }
- void finalizar(void)
- {
- imprimir_Titulo();
- printf("\n\n\t------------------------------------------------\n\t\t\t PROGRAMA ENCERRADO !!! \n\t------------------------------------------------\n\n\n\t");
- }
- int validar_Nome(char *nome)
- {
- //O nome não pode começar com espaço em branco e deve conter pelo menos 3 caracteres
- int valor=0; //retorna 0 caso não tenha cometido erro na entrada do nome
- if(isspace(nome[0]))
- {
- imprime_Erro("\t\tNome invalido!\n\tO nome nao pode começar com espaço em branco.");
- valor = 1;
- }
- else if(strlen(nome) < 3)
- {
- imprime_Erro("\t\tNome invalido!\n\tO nome deve possuir pelo menos 3 caracteres.");
- valor = 1;
- }
- return valor;
- }
- int validar_Email(char *email)
- {
- //O email deve conter o caractere @ em alguma parte do email e possuir pelo menos 10 caracteres
- int valor=0; //retorna 0 caso não tenha cometido erro na entrada do email
- if(strchr(email, '@') == NULL )
- {
- imprime_Erro("\t\tE-mail invalido!\n\tO e-mail deve conter o caractere @.");
- valor = 1;
- }
- else if(strlen(email) < 10)
- {
- imprime_Erro("\t\tE-mail invalido!\n\tO nome deve possuir pelo menos 10 caracteres.");
- valor = 1;
- }
- return valor;
- }
- int validar_Idade(int idade)
- {
- int valor=0;
- //A idade deve estar compreendida entre 1 e 110 anos.
- if(idade<1||idade>110)
- {
- imprime_Erro("\t\tIdade invalida!\n\tA idade deve estar compreendida entre 1 e 110 anos.");
- valor = 1;
- }
- return valor;
- }
- int validar_Salario(float salario)
- {
- int valor=0;
- //O salario tem que ser maior que R$0,00
- if(salario<=0)
- {
- imprime_Erro("\t\tSalario invalido!\n\tO salario nao pode ser menor ou igual a R$0,00.");
- valor = 1;
- }
- return valor;
- }
- int validar_Telefone(char *fone)
- {
- /*O telefone deve ser digitado com DDD, deve conter no máximo 11 caracteres e no mínimo 10, ex: 3835318921 (caso de MG) ou 11935141200 (caso de SP) e deve ser composto somente por números
- */
- int valor=0, valida = 1;
- int t,i;
- valida = 1;
- t = strlen(fone);
- for (i = 0; i < t; i++)
- {
- if(strchr("0123456789",fone[i] ) == NULL)
- {
- imprime_Erro("\t\tTelefone invalido!\n\tO telefone não pode conter caracteres nao numericos!");
- valida = 0;
- valor =1;
- break;
- }
- }
- if(valida!= 0 && t != 10 && t != 11)
- {
- imprime_Erro("\t\tTelefone invalido!\n\tO telefone deve conter entre 10 e 11 digitos com DDD.");
- valida = 0;
- valor = 1;
- }
- return valor; //retorna 0 caso não tenha cometido erro na entrada do telefone
- }
- int validar_Data(int dia, int mes, int ano)
- {
- if ((dia >= 1 && dia <= 31) && (mes >= 1 && mes <= 12) && (ano >= 1900 && ano <= 2100)) //verifica se os numeros sao validos
- {
- if ((dia == 29 && mes == 2) && ((ano % 4) == 0)) //verifica se o ano e bissexto
- {
- return 1;
- }
- if (dia <= 28 && mes == 2) //verifica o mes de feveireiro
- {
- return 1;
- }
- if ((dia <= 30) && (mes == 4 || mes == 6 || mes == 9 || mes == 11)) //verifica os meses de 30 dias
- {
- return 1;
- }
- if ((dia <=31) && (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes ==8 || mes == 10 || mes == 12)) //verifica os meses de 31 dias
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- else
- {
- return 0; //retorna 0 se for invalido
- }
- }
- int validar_Valor(float valor)
- {
- int aux=0;
- if (valor<=0)
- {
- imprime_Erro("Valor da consulta invalido");
- aux=1;
- }
- return aux;
- }
- void cadastrar_Paciente()
- {
- Pacientes ultimo_paciente;
- Pacientes paciente_atual;
- FILE *arquivo;
- imprimir_Titulo();
- imprimir_Cabecalho("CADASTRO DE PACIENTES","Digite os seguintes dados:");
- //Entrada de nome válido
- do
- {
- printf("\n\n\tNome: ");
- scanf("%[^\n]%*c",paciente_atual.nome);
- }while (validar_Nome(paciente_atual.nome)==1);
- //Entrada de email válido
- do
- {
- printf("\n\tE-mail: ");
- scanf("%[^\n]%*c",paciente_atual.email);
- }while (validar_Email(paciente_atual.email)==1);
- //Entrada de telefone valido
- do
- {
- printf("\n\tDDD + num telefone: ");
- scanf("%[^\n]%*c",paciente_atual.fone);
- }while (validar_Telefone(paciente_atual.fone)==1);
- //Entrada de endereço
- printf("\n\tEndereco: ");
- scanf("%[^\n]%*c",paciente_atual.endereco);
- //Entrada de idade valida
- do
- {
- printf("\n\tIdade: ");
- scanf("%d%*c",&paciente_atual.idade);
- }while (validar_Idade(paciente_atual.idade)==1);
- arquivo = fopen(ARQ_PAC,"a+b");
- if(arquivo != NULL)
- {
- //Pula pro ultimo registro do arquivo
- fseek(arquivo,0,SEEK_END);
- //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
- if(ftell(arquivo) == 0)
- {
- paciente_atual.cod_paciente = 1;
- }else
- {
- fseek(arquivo,-sizeof(Pacientes),SEEK_END);
- //Le o ultimo paciente
- fread(&ultimo_paciente,sizeof(Pacientes),1,arquivo);
- //Pega o ultimo codigo e soma +1
- paciente_atual.cod_paciente = ultimo_paciente.cod_paciente + 1;
- }
- fseek(arquivo,0,SEEK_END);
- fseek(arquivo,-(sizeof(Pacientes)),SEEK_END);
- fwrite(&paciente_atual,sizeof(Pacientes),1,arquivo);
- imprimir_Cabecalho("CADASTRO DE PACIENTES","Cadastro realizado com sucesso!");
- //Imprimir o cadastro do paciente
- printf("\n\tCodigo: %d",paciente_atual.cod_paciente);
- printf("\n\tNome: %s",paciente_atual.nome);
- printf("\n\tEmail: %s",paciente_atual.email);
- printf("\n\tTelefone: %s",paciente_atual.fone);
- printf("\n\tEndereco: %s",paciente_atual.endereco);
- printf("\n\tIdade: %d",paciente_atual.idade);
- printf("\n\n\t-------------------------------------------------\n\n");
- fclose(arquivo);
- }
- else
- {
- imprimir_Cabecalho("CADASTRO DE PACIENTES","Cadastro nao realizado!");
- }
- }
- void imprimir_Paciente (struct paciente Pacientes)
- {
- printf("\n\tCodigo: %d",Pacientes.cod_paciente);
- printf("\n\tNome: %s",Pacientes.nome);
- printf("\n\tEmail: %s",Pacientes.email);
- printf("\n\tTelefone: %s",Pacientes.fone);
- printf("\n\tEndereco: %s",Pacientes.endereco);
- printf("\n\tIdade: %d",Pacientes.idade);
- printf("\n\n\t-------------------------------------------------\n\n");
- }
- void imprimir_Medico (struct medico Medico)
- {
- printf("\n\tCodigo: %d\n\t",Medico.cod_medico);
- printf("Nome: %s\n\t",Medico.nome);
- printf("Email: %s\n\t",Medico.email);
- printf("Telefone: %s\n\t",Medico.fone);
- printf("Endereco: %s\n\t",Medico.endereco);
- printf("Especialidade: %s\n\t",Medico.especialidade);
- printf("Salario: %f\n\t",Medico.salario);
- printf("\n\n\t-------------------------------------------------\n\n");
- }
- void cadastrar_Medico()
- {
- Medico ultimo_medico;
- Medico medico_atual;
- FILE *arquivo;
- imprimir_Titulo();
- imprimir_Cabecalho("CADASTRO DE MEDICOS","Digite os seguintes dados:");
- //Entrada de nome válido
- do
- {
- printf("\n\n\tNome: ");
- scanf("%[^\n]%*c",medico_atual.nome);
- }while (validar_Nome(medico_atual.nome)==1);
- //Entrada de email válido
- do
- {
- printf("\n\tE-mail: ");
- scanf("%[^\n]%*c",medico_atual.email);
- }while (validar_Email(medico_atual.email)==1);
- //Entrada de telefone valido
- do
- {
- printf("\n\tDDD + num telefone: ");
- scanf("%[^\n]%*c",medico_atual.fone);
- }while (validar_Telefone(medico_atual.fone)==1);
- //Entrada de endereço
- printf("\n\tEndereco: ");
- scanf("%[^\n]%*c",medico_atual.endereco);
- //Entrada de especialidade
- int op;
- do
- {
- printf("\n\tEspecialidades:");
- printf("\n\t1- Clinica Geral");
- printf("\n\t2- Ortopedia");
- printf("\n\t3- Geriatria");
- printf("\n\t4- Pediatria");
- printf("\n\t5- Infectologia");
- printf("\n\t6- Neurologia");
- printf("\n\t7- Cardiologia");
- printf("\n\t8- Ginecologia");
- printf("\n\t9- Oftalmologia");
- printf("\n\t10- Psiquiatria");
- printf("\n\tEscolha uma opcao: ");
- scanf("%d%*c", &op);
- switch (op)
- {
- case 1: {strcpy(medico_atual.especialidade,"Clinica Geral");}
- break;
- case 2: {strcpy(medico_atual.especialidade,"Ortopedia");}
- break;
- case 3: {strcpy(medico_atual.especialidade,"Geriatria");}
- break;
- case 4: {strcpy(medico_atual.especialidade,"Pediatria");}
- break;
- case 5: {strcpy(medico_atual.especialidade,"Infectologia");}
- break;
- case 6: {strcpy(medico_atual.especialidade,"Neurologia");}
- break;
- case 7: {strcpy(medico_atual.especialidade,"Cardiologia");}
- break;
- case 8: {strcpy(medico_atual.especialidade,"Ginecologia");}
- break;
- case 9: {strcpy(medico_atual.especialidade,"Oftalmologia");}
- break;
- case 10: {strcpy(medico_atual.especialidade,"Psiquiatria");}
- break;
- default:{imprime_Erro("Opcao invalida. Escolha de 1 a 10");}
- }
- }while (op<1||op>10);
- //Entrada de salario valida
- do
- {
- printf("\n\tSalario: ");
- scanf("%f%*c",&medico_atual.salario);
- }while (validar_Salario(medico_atual.salario)==1);
- arquivo = fopen(ARQ_PAC2,"a+b");
- if(arquivo != NULL)
- {
- //Pula pro ultimo registro do arquivo
- fseek(arquivo,0,SEEK_END);
- //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
- if(ftell(arquivo) == 0)
- {
- medico_atual.cod_medico = 1;
- }
- else
- {
- fseek(arquivo,-sizeof(Medico),SEEK_END);
- //Le o ultimo paciente
- fread(&ultimo_medico,sizeof(Medico),1,arquivo);
- //Pega o ultimo codigo e soma +1
- medico_atual.cod_medico = ultimo_medico.cod_medico + 1;
- }
- //Após ter todos os dados validados, armazenar no arquivo
- fseek(arquivo,0,SEEK_END);
- fwrite(&medico_atual,sizeof(Medico),1,arquivo);
- imprimir_Cabecalho("CADASTRO DE MEDICOS","Cadastro realizado com sucesso!");
- //Imprimir o cadastro do medico
- printf("\n\tCodigo: %d\n\t",medico_atual.cod_medico);
- printf("Nome: %s\n\t",medico_atual.nome);
- printf("Email: %s\n\t",medico_atual.email);
- printf("Telefone: %s\n\t",medico_atual.fone);
- printf("Endereco: %s\n\t",medico_atual.endereco);
- printf("Especialidade: %s\n\t",medico_atual.especialidade);
- printf("Salario: %f\n\t",medico_atual.salario);
- fclose(arquivo);
- }
- else
- {
- imprimir_Cabecalho("CADASTRO DE MEDICOS","Cadastro nao realizado!");
- }
- }
- void cadastrar_Consulta()
- {
- Consultas ultima_consulta;
- Consultas consulta_atual;
- paciente Paciente;
- medico Medico;
- FILE *arquivo;
- FILE *arquivo1;
- FILE *arquivo2;
- int codeP;
- int codemed;
- int continuar;
- imprimir_Titulo();
- imprimir_Cabecalho("CADASTRO DE CONSULTAS","Digite os seguintes dados:");
- //Verificar se existe pelo menos 1 medico e 1 paciente cadastrado
- //Entrada do codigo do paciente (Buscar o cadastro pelo codigo)
- printf("Digite o codigo do paciente: ");
- scanf("%d%*c", &codeP);
- continuar=0;
- arquivo1 = fopen(ARQ_PAC,"a+b");
- //percoree arquivo
- while(fread(&Paciente, sizeof(Paciente),1,arquivo1) != 0)
- {
- if(Paciente.cod_paciente==codeP)
- continuar=1;
- }
- fclose(arquivo1);
- if(continuar==0){//verifica se o paciente esta cadastrado
- printf("ERRO: paciente não cadastrado");
- return;
- }
- //Entrada do codigo do medico (Buscar o cadastro pelo codigo)
- printf("Digite o codigo do medico: ");
- scanf("%d%*c", &codemed);
- continuar=0;
- arquivo2 = fopen(ARQ_PAC2,"a+b");
- while(fread(&Medico, sizeof(Medico),1,arquivo1) != 0)
- {
- if(Medico.cod_medico==codemed)
- continuar=1;
- }
- fclose(arquivo2);
- if(continuar==0){//verifica se o medico esta cadastrado
- printf("ERRO: Medico não cadastrado");
- return;
- }
- //Entrada de data valida recebe os codigos
- consulta_atual.cod_medico=codemed;
- consulta_atual.cod_paciente=codeP;
- do
- {
- printf("\n\tDigite a data:\n\n\t\tDia: ");
- scanf("%d", &consulta_atual.dia);
- printf("\n\t\tMes: ");
- scanf("%d", &consulta_atual.mes);
- printf("\n\t\tAno: ");
- scanf("%d", &consulta_atual.ano);
- if (validar_Data(consulta_atual.dia, consulta_atual.mes, consulta_atual.ano)==0)
- imprime_Erro("Data invalida!");
- }while (validar_Data(consulta_atual.dia, consulta_atual.mes, consulta_atual.ano)==0);
- //Entrada de diagnostico
- int op;
- do
- {
- printf("\n\tDiagnosticos: ");
- printf("\n\t1- Asma");
- printf("\n\t2- Eplepsia");
- printf("\n\t3- Transtorno de Ansiedade");
- printf("\n\t4- Isuficiencia Cardiaca");
- printf("\n\t5- Ulcera");
- printf("\n\t6- Febre Reumatica");
- printf("\n\t7- Diabetes");
- printf("\n\t8- Infeccao Generalizada");
- printf("\n\t9- Catarata");
- printf("\n\t10- Endometriose");
- printf("\n\tEscolha a opcao desejada: ");
- scanf("%d%*c", &op);
- switch (op)
- {
- case 1: {strcpy(consulta_atual.diagnostico,"Asma");}
- break;
- case 2: {strcpy(consulta_atual.diagnostico,"Eplepsia");}
- break;
- case 3: {strcpy(consulta_atual.diagnostico,"Transtorno de Ansiedade");}
- break;
- case 4: {strcpy(consulta_atual.diagnostico,"Insuficiencia Cardiaca");}
- break;
- case 5: {strcpy(consulta_atual.diagnostico,"Ulcera");}
- break;
- case 6: {strcpy(consulta_atual.diagnostico,"Febre Reumatica");}
- break;
- case 7: {strcpy(consulta_atual.diagnostico,"Diabetes");}
- break;
- case 8: {strcpy(consulta_atual.diagnostico,"Infeccao Generalizada");}
- break;
- case 9: {strcpy(consulta_atual.diagnostico,"Catarata");}
- break;
- case 10: {strcpy(consulta_atual.diagnostico,"Endometriose");}
- break;
- default:imprime_Erro("Opcao invalida. Escolha de 1 a 10");
- }
- }while (op<1||op>10);
- //Entrada de valor valido
- do
- {
- printf("\n\tValor da consulta: ");
- scanf("%f%*c", &consulta_atual.valor);
- }while (validar_Valor(consulta_atual.valor)==1);
- arquivo = fopen(ARQ_PAC3,"a+b");
- if(arquivo != NULL)
- {
- //Pula pro ultimo registro do arquivo
- fseek(arquivo,0,SEEK_END);
- //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
- if(ftell(arquivo) == 0)
- {
- consulta_atual.cod_consulta = 1;
- }else
- {
- fseek(arquivo,-sizeof(Consultas),SEEK_END);
- //Le o ultimo paciente
- fread(&ultima_consulta,sizeof(Consultas),1,arquivo);
- //Pega o ultimo codigo e soma +1
- consulta_atual.cod_consulta = ultima_consulta.cod_consulta + 1;
- }
- /*
- */
- fseek(arquivo,0,SEEK_END);
- fseek(arquivo,-(sizeof(Consultas)),SEEK_END);
- fwrite(&consulta_atual,sizeof(Consultas),1,arquivo);
- imprimir_Cabecalho("CADASTRO DE CONSULTAS","Cadastro realizado com sucesso!");
- //Imprimir o cadastro da consulta
- printf("\n\tCodigo da consulta: %d",consulta_atual.cod_consulta);
- //printf("\n\tNome do paciente: %s
- //printf("\n\tNome do medico: %s
- printf("\n\tData: %d\\%d\\%d", consulta_atual.dia,consulta_atual.mes,consulta_atual.ano);
- printf("\n\tValor da consulta: %.2f", consulta_atual.valor);
- printf("\n\tDiagnostico: %s", consulta_atual.diagnostico);
- printf("\n\n\t-------------------------------------------------\n\n");
- fclose(arquivo);
- }
- else
- {
- imprimir_Cabecalho("CADASTRO DE CONSULTAS","Cadastro nao realizado!");
- }
- }
- void pesquisar_Paciente (int x)
- {
- Pacientes paciente;
- FILE *arquivo;
- arquivo = fopen(ARQ_PAC,"rb");
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- char nome[50];
- int aux;
- if(x==1){
- imprimir_Cabecalho("PESQUISAR PACIENTE POR NOME","Digite o nome a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%[^\n]%*c", nome);
- passa_Minusculo(nome);
- passa_Minusculo(paciente.nome);
- }
- if(x==2){
- imprimir_Cabecalho("PESQUISAR PACIENTE POR CODIGO","Digite o codigo a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&aux);
- }
- while(fread(&paciente,sizeof(Pacientes),1,arquivo))
- {
- if(strcmp(nome,paciente.nome) == 0)
- {
- printf("\n\tCodigo: %d",paciente.cod_paciente);
- printf("\n\tNome: %s",paciente.nome);
- printf("\n\tEmail: %s",paciente.email);
- printf("\n\tTelefone: %s",paciente.fone);
- printf("\n\tEndereco: %s",paciente.endereco);
- printf("\n\tIdade: %d",paciente.idade);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- printf("\n\tPaciente nao encontrado!");
- if(paciente.cod_paciente==aux)
- {
- printf("\n\tCodigo: %d",paciente.cod_paciente);
- printf("\n\tNome: %s",paciente.nome);
- printf("\n\tEmail: %s",paciente.email);
- printf("\n\tTelefone: %s",paciente.fone);
- printf("\n\tEndereco: %s",paciente.endereco);
- printf("\n\tIdade: %d",paciente.idade);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- printf("\n\tPaciente nao encontrado!");
- }
- }
- /*else
- {
- int codigo,fim;
- imprimir_Cabecalho("PESQUISAR PACIENTE POR CODIGO","Digite o codigo a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codigo);
- fseek(arquivo,0,SEEK_END);
- fim = ftell(arquivo);
- if(fim / (sizeof(Pacientes)) >= codigo)
- {
- fseek(arquivo,(codigo -1) * sizeof(Pacientes),SEEK_SET);
- fread(&paciente,sizeof(Pacientes),1,arquivo);
- printf("\n\tCodigo: %d",paciente.cod_paciente);
- printf("\n\tNome: %s",paciente.nome);
- printf("\n\tEmail: %s",paciente.email);
- printf("\n\tTelefone: %s",paciente.fone);
- printf("\n\tEndereco: %s",paciente.endereco);
- printf("\n\tIdade: %d",paciente.idade);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- {
- imprime_Erro("Codigo inexistente!");
- }
- }*/
- void pesquisar_Medico(int x)
- {
- Medico medico;
- FILE *arquivo;
- arquivo = fopen(ARQ_PAC2,"rb");
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- if(x == 1)
- {
- char nome[50];
- imprimir_Cabecalho("PESQUISAR MEDICO POR NOME","Digite o nome a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%[^\n]%*c", nome);
- passa_Minusculo(nome);
- passa_Minusculo(medico.nome);
- while(fread(&medico,sizeof(Medico),1,arquivo))
- {
- if(strcmp(nome,medico.nome) == 0)
- {
- printf("\n\tCodigo: %d",medico.cod_medico);
- printf("\n\tNome: %s",medico.nome);
- printf("\n\tEmail: %s",medico.email);
- printf("\n\tTelefone: %s",medico.fone);
- printf("\n\tEndereco: %s",medico.endereco);
- printf("\n\tEspecialidade: %s",medico.especialidade);
- printf("\n\tSalario: %.2f",medico.salario);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- printf("\n\tMedico nao encontrado!");
- }
- }
- if (x==2)
- {
- int codigo,fim;
- imprimir_Cabecalho("PESQUISAR MEDICO POR CODIGO","Digite o codigo a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codigo);
- fseek(arquivo,0,SEEK_END);
- fim = ftell(arquivo);
- if(fim*1.0 / (sizeof(Medico)) >= codigo)//
- {
- fseek(arquivo,(codigo -1) * sizeof(Medico),SEEK_SET);
- fread(&medico,sizeof(Medico),1,arquivo);
- printf("\n\tCodigo: %d",medico.cod_medico);
- printf("\n\tNome: %s",medico.nome);
- printf("\n\tEmail: %s",medico.email);
- printf("\n\tTelefone: %s",medico.fone);
- printf("\n\tEndereco: %s",medico.endereco);
- printf("\n\tEspecialidade: %s",medico.especialidade);
- printf("\n\tSalario: %.2f",medico.salario);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- {
- imprime_Erro("Codigo inexistente!");
- }
- }
- if (x==3)
- {
- char especialidade[30];
- imprimir_Cabecalho("PESQUISAR MEDICO POR ESPECIALIDADE","Digite a especialidade a ser pesquisada:");
- printf("\n\t>>> ");
- scanf("%[^\n]%*c", especialidade);
- passa_Minusculo(especialidade);
- passa_Minusculo(medico.especialidade);
- while(fread(&medico,sizeof(Medico),1,arquivo))
- {
- if(strstr(especialidade,medico.especialidade) == NULL)
- {
- printf("\n\tCodigo: %d",medico.cod_medico);
- printf("\n\tNome: %s",medico.nome);
- printf("\n\tEmail: %s",medico.email);
- printf("\n\tTelefone: %s",medico.fone);
- printf("\n\tEndereco: %s",medico.endereco);
- printf("\n\tSalario: %.2f",medico.salario);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- printf("\n\tEspecialidade nao encontrada!");
- }
- }
- }
- void passa_Minusculo(char *texto)
- {
- int i = 0, t = strlen(texto);
- while(i<t)
- {
- texto[i] = tolower(texto[i]);
- i++;
- }
- }
- void listar_Pacientes(void)
- {
- FILE *arquivo;
- struct paciente Pacientes;
- arquivo = fopen("Paciente.dat", "rb");
- if(arquivo == NULL)
- {
- imprime_Erro("O arquivo nao pode ser aberto!");
- return;
- }
- else
- {
- //Exibir
- int cont =0;
- imprimir_Cabecalho("EXIBINDO TODOS OS PACIENTES","");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- cont++;
- imprimir_Paciente(Pacientes);
- }
- fclose(arquivo);
- if(cont == 0)
- imprime_Erro("O arquivo nao pode ser aberto!");
- }
- }
- void listar_Medicos(void)
- {
- FILE *arquivo;
- struct medico Medico;
- arquivo = fopen("Medico.dat", "rb");
- if(arquivo == NULL)
- {
- imprime_Erro("O arquivo nao pode ser aberto!");
- return;
- }
- else
- {
- //Exibir
- int cont =0;
- imprimir_Cabecalho("EXIBINDO TODOS OS MEDICOS","");
- while(fread(&Medico, sizeof(Medico),1,arquivo) != 0)
- {
- cont++;
- imprimir_Medico(Medico);
- }
- fclose(arquivo);
- if(cont == 0)
- imprime_Erro("O arquivo nao pode ser aberto!");
- }
- }
- void pesquisar_Consulta(int x)
- {
- consultas Consulta;
- FILE *arquivo;
- int dia,mes,ano;
- int codeP;
- int codemed;
- arquivo = fopen(ARQ_PAC3,"rb");
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- if(x == 1)
- {
- imprimir_Cabecalho("PESQUISAR CONSULTA POR DATA","Digite data a ser pesquisada:");
- printf("Dia:\n\t>>> ");
- scanf("%d%*c",&dia);
- printf("Mes:\n\t>>> ");
- scanf("%d%*c",&mes);
- printf("Ano:\n\t>>> ");
- scanf("%d%*c",&ano);
- while(fread(&Consulta,sizeof(Consulta),1,arquivo))
- {
- if(Consulta.dia==dia&&Consulta.mes==mes&&Consulta.ano==ano)
- {
- printf("\n\tCodigo medico: %d",Consulta.cod_medico);
- printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
- printf("\n\t Dia: %d",Consulta.dia);
- printf("\n\t Mes: %d",Consulta.mes);
- printf("\n\t Ano: %d",Consulta.ano);
- printf("\n\t Valor: %.2f",Consulta.valor);
- printf("\n\t Diagnostico: %s",Consulta.diagnostico);
- printf("\n\t---------------------------------------------------\n");
- }
- }
- }
- if (x==2)
- {
- imprimir_Cabecalho("PESQUISAR POR CODIGO Medico","Digite o codigo a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codemed);
- while(fread(&Consulta,sizeof(Consulta),1,arquivo))
- {
- if(Consulta.cod_medico==codemed)
- {
- printf("\n\tCodigo medico: %d",Consulta.cod_medico);
- printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
- printf("\n\t Dia: %d",Consulta.dia);
- printf("\n\t Mes: %d",Consulta.mes);
- printf("\n\t Ano: %d",Consulta.ano);
- printf("\n\t Valor: %.2f",Consulta.valor);
- printf("\n\t Diagnostico: %s",Consulta.diagnostico);
- printf("\n\t---------------------------------------------------\n");
- }
- }
- }
- if (x==3)
- {
- imprimir_Cabecalho("PESQUISAR POR CODIGO PAciente","Digite o codigo a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codeP);
- while(fread(&Consulta,sizeof(Consulta),1,arquivo))
- {
- if(Consulta.cod_paciente==codeP)
- {
- printf("\n\tCodigo medico: %d",Consulta.cod_medico);
- printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
- printf("\n\t Dia: %d",Consulta.dia);
- printf("\n\t Mes: %d",Consulta.mes);
- printf("\n\t Ano: %d",Consulta.ano);
- printf("\n\t Valor: %.2f",Consulta.valor);
- printf("\n\t Diagnostico: %s",Consulta.diagnostico);
- printf("\n\t---------------------------------------------------\n");
- }
- }
- }
- fclose(arquivo);
- }
- void listar_Total(void)
- {
- FILE *arquivo;
- consultas Consulta;
- float Somar=0;
- arquivo = fopen(ARQ_PAC3,"rb");
- if(arquivo == NULL)
- {
- imprime_Erro("O arquivo nao pode ser aberto!");
- return;
- }
- else
- {
- while(fread(&Consulta, sizeof(Consulta),1,arquivo) != 0)
- {
- Somar+=Consulta.valor;
- printf("Consulta %d Preco: %.2f\n",Consulta.cod_consulta,Consulta.valor);
- }
- fclose(arquivo);
- printf("Total Arrecadado: %.2f\n",Somar);
- }
- }
- void listar_idades(void)
- {
- FILE *arquivo;
- struct paciente Pacientes;
- arquivo = fopen("Paciente.dat", "rb");
- if(arquivo == NULL)
- {
- imprime_Erro("O arquivo nao pode ser aberto!");
- return;
- }
- else
- {
- //Exibir
- printf("EXIBINDO OS PACIENTES < 11 anos\n");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- if(Pacientes.idade<11)
- printf("Nome: %s , E-MAIL: %s\n",Pacientes.nome,Pacientes.email);
- }
- fclose(arquivo);
- }
- arquivo = fopen("Paciente.dat", "rb");
- if(arquivo == NULL)
- {
- imprime_Erro("O arquivo nao pode ser aberto!");
- return;
- }
- else
- {
- //Exibir
- printf("EXIBINDO OS PACIENTES 11=<idade<18 anos\n");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- if(Pacientes.idade>=11&&Pacientes.idade<18)
- printf("Nome: %s , E-MAIL: %s\n",Pacientes.nome,Pacientes.email);
- }
- fclose(arquivo);
- }
- arquivo = fopen("Paciente.dat", "rb");
- if(arquivo == NULL)
- {
- imprime_Erro("O arquivo nao pode ser aberto!");
- return;
- }
- else
- {
- //Exibir
- printf("EXIBINDO OS PACIENTES 11=<idade<18 anos\n");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- if(Pacientes.idade>=18&&Pacientes.idade<60)
- printf("Nome: %s , E-MAIL: %s\n",Pacientes.nome,Pacientes.email);
- }
- fclose(arquivo);
- }
- arquivo = fopen("Paciente.dat", "rb");
- if(arquivo == NULL)
- {
- imprime_Erro("O arquivo nao pode ser aberto!");
- return;
- }
- else
- {
- //Exibir
- printf("EXIBINDO OS PACIENTES 11=<idade<18 anos\n");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- if(Pacientes.idade>=60)
- printf("Nome: %s , E-MAIL: %s\n",Pacientes.nome,Pacientes.email);
- }
- fclose(arquivo);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement