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 imprimir_Consulta (struct consultas Consultas);
- void finalizar(void);
- int validar_Nome(char *nome);
- int validar_Endereco(char *endereco);
- 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);
- void deletar_medico(void);
- void deletar_paciente(void);
- void deletar_consulta(void);
- void alterar_medico(void);
- void alterar_paciente(void);
- void alterar_consulta(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_medico();
- }
- break;
- case 3:
- {
- alterar_consulta();
- }
- 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
- {
- deletar_paciente();
- }
- break;
- case 2://Excluir medicos
- {
- deletar_medico();
- }
- break;
- case 3://excluir consultas
- {
- deletar_consulta();
- }
- 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 %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_Endereco (char *endereco)
- {
- //O endereço não pode começar com espaço em branco
- int valor=0; //retorna 0 caso não tenha cometido erro na entrada do endereco
- if(isspace(endereco[0]))
- {
- imprime_Erro("\t\tEndereco invalido!\n\tO endereco nao pode começar com espaço em branco.");
- 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 válido
- do{
- printf("\n\tEndereco: ");
- scanf("%[^\n]%*c",paciente_atual.endereco);
- }while (validar_Endereco(paciente_atual.endereco)==1);
- //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: %.2f\n\t",Medico.salario);
- printf("\n\n\t-------------------------------------------------\n\n");
- }
- void imprimir_Consulta (struct consultas Consultas)
- {
- printf("\n\tCodigo medico: %d",Consultas.cod_medico);
- //printf("\n\tNome do medico: %s", Consultas.nome);
- printf("\n\tCodigo paciente: %d",Consultas.cod_paciente);
- //printf("\n\tNome do paciente: %s", Consultas.nome);
- printf("\n\t Data: %d\\%d\\%d",Consultas.dia, Consultas.mes,Consultas.ano);
- printf("\n\t Valor: %.2f",Consultas.valor);
- printf("\n\t Diagnostico: %s",Consultas.diagnostico);
- printf("\n\n\t---------------------------------------------------\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 válido
- do{
- printf("\n\tEndereco: ");
- scanf("%[^\n]%*c",medico_atual.endereco);
- }while (validar_Endereco(medico_atual.endereco)==1);
- //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: %.2f\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;
- struct paciente Paciente;
- struct 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("\n\n\tDigite o codigo do paciente: ");
- scanf("%d%*c", &codeP);
- continuar=0;
- arquivo1 = fopen(ARQ_PAC,"a+b");
- //percorre 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
- {
- imprime_Erro("Nao ha pacientes cadastrados!");
- return;
- }
- //Entrada do codigo do medico (Buscar o cadastro pelo codigo)
- printf("\n\tDigite 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
- {
- imprime_Erro("Nao ha medicos cadastrados!");
- 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\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\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)
- {
- struct paciente Pacientes;
- FILE *arquivo;
- arquivo = fopen(ARQ_PAC,"rb");
- if(arquivo == NULL)
- {
- imprime_Erro("\t\tErro 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);
- }
- if(x==2)
- {
- imprimir_Cabecalho("PESQUISAR PACIENTE POR CODIGO","Digite o codigo a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&aux);
- }
- while(fread(&Pacientes,sizeof(Pacientes),1,arquivo)!=0)
- {
- passa_Minusculo(nome);
- passa_Minusculo(Pacientes.nome);
- if(strstr(Pacientes.nome,nome) != NULL &&Pacientes.idade>0)
- {
- 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\t---------------------------------------------------\n");
- return;
- }
- if(Pacientes.cod_paciente==aux&&Pacientes.idade>0)
- {
- 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\t---------------------------------------------------\n");
- return;
- }
- }
- }
- void pesquisar_Medico(int x)
- {
- struct medico Medico;
- FILE *arquivo;
- arquivo = fopen(ARQ_PAC2,"rb");
- if(arquivo == NULL)
- {
- imprime_Erro("\t\tErro ao abrir o arquivo!");
- return;
- }
- char nome[50];
- char especialidade[30];
- int aux;
- if(x==1)
- {
- imprimir_Cabecalho("PESQUISAR MEDICO POR NOME","Digite o nome a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%[^\n]%*c", nome);
- }
- if(x==2)
- {
- imprimir_Cabecalho("PESQUISAR MEDICO POR CODIGO","Digite o codigo a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&aux);
- }
- if(x==3)
- {
- imprimir_Cabecalho("PESQUISAR MEDICO POR ESPECIALIDADE","Digite o codigo a ser pesquisado:");
- printf("\n\t>>> ");
- scanf("%d%*c",especialidade);
- }
- while(fread(&Medico,sizeof(Medico),1,arquivo)!=0)
- {
- passa_Minusculo(nome);
- passa_Minusculo(Medico.nome);
- passa_Minusculo(especialidade);
- passa_Minusculo(Medico.especialidade);
- if(strstr(Medico.nome,nome) != NULL &&Medico.idade>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");
- return;
- }
- if(Medico.cod_medico==aux&&Medico.idade>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");
- return;
- }
- if(strstr(especialidade,Medico.especialidade) != NULL &&Medico.idade>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");
- return;
- }
- }
- }
- 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++;
- if(Pacientes.idade>0)//verifica se não foi excluido
- 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++;
- if(Medico.idade>0)//verifica se não foi excluido
- imprimir_Medico(Medico);
- }
- fclose(arquivo);
- if(cont == 0)
- imprime_Erro("O arquivo nao pode ser aberto!");
- }
- }
- void pesquisar_Consulta(int x)
- {
- struct 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("\n\tDia: ");
- scanf("%d%*c",&dia);
- printf("\n\tMes: ");
- scanf("%d%*c",&mes);
- printf("\n\tAno: ");
- scanf("%d%*c",&ano);
- while(fread(&Consulta,sizeof(Consulta),1,arquivo))
- {
- if(Consulta.dia==dia&&Consulta.mes==mes&&Consulta.ano==ano&&Consulta.valor>0)
- {
- printf("\n\t Codigo medico: %d",Consulta.cod_medico);
- printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
- printf("\n\t Dia: %d\\%d\\%d",Consulta.dia, Consulta.mes,Consulta.ano);
- printf("\n\t Valor: %.2f",Consulta.valor);
- printf("\n\t Diagnostico: %s",Consulta.diagnostico);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- imprime_Erro("Consulta nao encontrada!");
- }
- }
- if (x==2)
- {
- imprimir_Cabecalho("PESQUISAR CONSULTA POR 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&&Consulta.valor>0)
- {
- printf("\n\t Codigo medico: %d",Consulta.cod_medico);
- printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
- printf("\n\t Data: %d\\%d\\%d",Consulta.dia, Consulta.mes,Consulta.ano);
- printf("\n\t Valor: %.2f",Consulta.valor);
- printf("\n\t Diagnostico: %s",Consulta.diagnostico);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- imprime_Erro("Consulta nao encontrada!");
- }
- }
- if (x==3)
- {
- imprimir_Cabecalho("PESQUISAR CONSULTA POR 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&&Consulta.valor>0)
- {
- printf("\n\t Codigo medico: %d",Consulta.cod_medico);
- printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
- printf("\n\t Data: %d\\%d\\%d",Consulta.dia, Consulta.mes,Consulta.ano);
- printf("\n\t Valor: %.2f",Consulta.valor);
- printf("\n\t Diagnostico: %s",Consulta.diagnostico);
- printf("\n\t---------------------------------------------------\n");
- }
- else
- imprime_Erro("Consulta nao encontrada!");
- }
- }
- fclose(arquivo);
- }
- void listar_Total(void)
- {
- FILE *arquivo;
- struct consultas Consulta;
- float Somar=0;
- arquivo = fopen(ARQ_PAC3,"rb");
- if(arquivo == NULL)
- {
- imprime_Erro("O arquivo nao pode ser aberto!");
- return;
- }
- else
- {
- imprimir_Cabecalho("TOTAL ARRECADADO", "");
- while(fread(&Consulta, sizeof(Consulta),1,arquivo) != 0)
- {
- Somar+=Consulta.valor;
- printf("\tConsulta %d Preco: %.2f\n",Consulta.cod_consulta,Consulta.valor);
- }
- fclose(arquivo);
- printf("\n\t------------------------------------------------");
- printf("\n\n\tTotal Geral: %.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
- {
- imprimir_Cabecalho("LISTA DE PACIENTES","Separados por faixa etaria, a saber:\n\tCriancas: abaixo de 11 anos\n\tAdolescentes: entre 11 e 17 anos\n\tAdultos: entre 18 e 59 anos\n\tIdosos: acima de 60 anos");
- //Exibir
- printf("\n\t------------------------------------------------");
- printf("\n\n\t>>>Criancas:");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- if(Pacientes.idade<11&&Pacientes.idade>0)
- printf("\n\n\t\tNome: %s\n\t\tE-mail: %s",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("\n\t------------------------------------------------");
- printf("\n\n\t>>>Adolescentes:");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- if(Pacientes.idade>=11&&Pacientes.idade<18)
- printf("\n\n\t\tNome: %s\n\t\tE-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("\n\t------------------------------------------------");
- printf("\n\n\t>>>Adultos:");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- if(Pacientes.idade>=18&&Pacientes.idade<60)
- printf("\n\n\t\tNome: %s\n\t\tE-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("\n\t------------------------------------------------");
- printf("\n\n\t>>>Idosos:");
- while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
- {
- if(Pacientes.idade>=60)
- printf("\n\n\t\tNome: %s\n\t\tE-mail: %s\n",Pacientes.nome,Pacientes.email);
- }
- fclose(arquivo);
- }
- }
- void deletar_medico(void)
- {
- Medico medico;
- FILE *arquivo;
- struct consultas Consulta;
- FILE *arquivo2;
- arquivo = fopen(ARQ_PAC2,"r+b");
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- int codigo,fim;
- imprimir_Cabecalho("EXCLUIR MEDICO","Digite o codigo a ser excluido:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codigo);
- arquivo2 = fopen(ARQ_PAC3,"r+b");
- if(arquivo2 == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- while(fread(&Consulta, sizeof(Consulta),1,arquivo2) != 0)
- {
- if(Consulta.cod_medico==codigo&&Consulta.valor>0)
- {
- imprime_Erro("Erro ao excluir: medico com consulta marcada!");
- return;
- }
- }
- 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);
- medico.idade=-1;//para deletar basta marcar com -1
- fseek(arquivo,(codigo -1) * sizeof(Medico),SEEK_SET);
- fwrite(&medico,sizeof(medico),1,arquivo);
- printf("\n\tCadastro de medico excluido!");
- }
- else
- {
- imprime_Erro("Codigo inexistente!");
- }
- fclose(arquivo);
- }
- void deletar_paciente(void)
- {
- struct paciente Paciente;
- FILE *arquivo;
- struct consultas Consulta;
- FILE *arquivo2;
- arquivo = fopen(ARQ_PAC,"r+b");
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- int codigo,fim;
- imprimir_Cabecalho("EXCLUIR PACIENTE","Digite o codigo a ser excluido:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codigo);
- arquivo2 = fopen(ARQ_PAC3,"r+b");
- if(arquivo2 == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- while(fread(&Consulta, sizeof(Consulta),1,arquivo2) != 0)
- {
- if(Consulta.cod_paciente==codigo&&Consulta.valor>0)
- {
- imprime_Erro("Erro ao excluir: paciente com consulta marcada!");
- return;
- }
- }
- fseek(arquivo,0,SEEK_END);
- fim = ftell(arquivo);
- if(fim*1.0 / (sizeof(Paciente)) >= codigo)//
- {
- fseek(arquivo,(codigo -1) * sizeof(Paciente),SEEK_SET);
- fread(&Paciente,sizeof(Paciente),1,arquivo);
- Paciente.idade=-1;//para deletar basta marcar com -1
- fseek(arquivo,(codigo -1) * sizeof(Paciente),SEEK_SET);
- fwrite(&Paciente,sizeof(Paciente),1,arquivo);
- printf("\n\tCadastro de paciente excluido!");
- }
- else
- {
- imprime_Erro("Codigo inexistente!");
- }
- fclose(arquivo);
- }
- void deletar_consulta(void)
- {
- struct consultas Consultas;
- FILE *arquivo;
- arquivo = fopen(ARQ_PAC3,"r+b");
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- int codigo,fim;
- imprimir_Cabecalho("EXCLUIR CONSULTA","Digite o codigo a ser excluido:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codigo);
- fseek(arquivo,0,SEEK_END);
- fim = ftell(arquivo);
- if(fim*1.0 / (sizeof(Consultas)) >= codigo)//
- {
- fseek(arquivo,(codigo -1) * sizeof(Consultas),SEEK_SET);
- fread(&Consultas,sizeof(Consultas),1,arquivo);
- Consultas.valor=0;//para deletar basta marcar com -1
- fseek(arquivo,(codigo -1) * sizeof(Consultas),SEEK_SET);
- fwrite(&Consultas,sizeof(Consultas),1,arquivo);
- printf("\n\tConsulta excluida!");
- }
- else
- {
- imprime_Erro("Codigo inexistente!");
- }
- fclose(arquivo);
- }
- void alterar_medico(void)
- {
- Medico medico;
- FILE *arquivo;
- arquivo = fopen(ARQ_PAC2,"r+b");
- char resposta;
- int sin=0;
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- int codigo,fim;
- imprimir_Cabecalho("ALTERAR MEDICO","Digite o codigo a ser alterado:");
- 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\n\tNome atual: %s", medico.nome);
- //Entrada de nome válido
- do
- {
- printf("\n\tNovo nome: ");
- scanf("%[^\n]%*c",medico.nome);
- }
- while (validar_Nome(medico.nome)==1);
- printf("\n\tE-mail atual: %s", medico.email);
- //Entrada de email válido
- do
- {
- printf("\n\tNovo e-mail: ");
- scanf("%[^\n]%*c",medico.email);
- }
- while (validar_Email(medico.email)==1);
- printf("\n\tTefone atual: %s", medico.fone);
- //Entrada de telefone valido
- do
- {
- printf("\n\tNovo telefone: (DDD + num telefone): ");
- scanf("%[^\n]%*c",medico.fone);
- }
- while (validar_Telefone(medico.fone)==1);
- //Entrada de endereço valido
- do{
- printf("\n\tEndereco: ");
- scanf("%[^\n]%*c",medico.endereco);
- }while (validar_Endereco(medico.endereco)==1);
- printf("\n\tSalario atual: %.2f", medico.salario);
- //Entrada de salario valida
- do
- {
- printf("\n\tSalario: ");
- scanf("%f%*c",&medico.salario);
- }
- while (validar_Salario(medico.salario)==1);
- imprimir_Cabecalho("ALTERAR CONTATO", "Alteracoes a serem realizadas");
- imprimir_Medico(medico);
- printf("\n\tConfirma alteracao? <Sim(s) ou Não(n)>");
- scanf("%c%*c", &resposta);
- if(tolower(resposta) == 's')
- {
- fseek(arquivo,(codigo -1) * sizeof(Medico),SEEK_SET);
- fwrite(&medico,sizeof(medico),1,arquivo);
- sin = 1;
- }
- fclose(arquivo);
- if(sin == 1)
- {
- printf("\n\tAlteracao realizada com sucesso!\n");
- }
- }
- else
- {
- imprime_Erro("Codigo inexistente!");
- }
- }
- void alterar_paciente(void)
- {
- struct paciente Paciente;
- FILE *arquivo;
- arquivo = fopen(ARQ_PAC,"r+b");
- char resposta;
- int sin=0;
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- int codigo,fim;
- imprimir_Cabecalho("CODIGO DO PACIENTE","Digite o codigo a ser alterado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codigo);
- fseek(arquivo,0,SEEK_END);
- fim = ftell(arquivo);
- if(fim*1.0 / (sizeof(Paciente)) >= codigo)//
- {
- fseek(arquivo,(codigo -1) * sizeof(Paciente),SEEK_SET);
- fread(&Paciente,sizeof(Paciente),1,arquivo);
- printf("\n\n\tNome atual: %s", Paciente.nome);
- //Entrada de nome válido
- do
- {
- printf("\n\tNovo nome: ");
- scanf("%[^\n]%*c",Paciente.nome);
- }
- while (validar_Nome(Paciente.nome)==1);
- printf("\n\tE-mail atual: %s", Paciente.email);
- //Entrada de email válido
- do
- {
- printf("\n\tNovo e-mail: ");
- scanf("%[^\n]%*c",Paciente.email);
- }
- while (validar_Email(Paciente.email)==1);
- printf("\n\tTelefone atual: %s", Paciente.fone);
- //Entrada de telefone valido
- do
- {
- printf("\n\tNovo telefone (DDD + num telefone): ");
- scanf("%[^\n]%*c",Paciente.fone);
- }
- while (validar_Telefone(Paciente.fone)==1);
- printf("\n\tEndereco atual: %s", Paciente.endereco);
- //Entrada de endereço válido
- do{
- printf("\n\tNovo endereco: ");
- scanf("%[^\n]%*c",Paciente.endereco);
- }while(validar_Endereco(Paciente.endereco)==1);
- printf("\n\tIdade Atual: %d", Paciente.idade);
- //Entrada de idade valida
- do
- {
- printf("\n\tNova idade: ");
- scanf("%d%*c",&Paciente.idade);
- }
- while (validar_Idade(Paciente.idade)==1);
- imprimir_Cabecalho("ALTERAR PACIENTE", "Alteracoes a serem realizadas");
- imprimir_Paciente(Paciente);
- printf("\n\tConfirma alteracao? <Sim(s) ou Nao(n)>");
- scanf("%c%*c", &resposta);
- if(tolower(resposta) == 's')
- {
- fseek(arquivo,(codigo -1) * sizeof(Paciente),SEEK_SET);
- fwrite(&Paciente,sizeof(Paciente),1,arquivo);
- sin = 1;
- }
- fclose(arquivo);
- if(sin == 1)
- {
- printf("\n\tAlteracao realizada com sucesso!\n");
- }
- }
- else
- {
- imprime_Erro("Codigo inexistente!");
- }
- }
- void alterar_consulta(void)
- {
- struct consultas Consulta;
- struct paciente Paciente;
- struct medico medic;
- char resposta;
- int sin=0;
- FILE *arquivo,*arquivo1,*arquivo2;
- int codeP,codemed,continuar;
- arquivo = fopen(ARQ_PAC3,"r+b");
- if(arquivo == NULL)
- {
- imprime_Erro("Erro ao abrir o arquivo!");
- return;
- }
- int codigo,fim;
- imprimir_Cabecalho("ALTERAR CONSULTAS","Digite o codigo a ser alterado:");
- printf("\n\t>>> ");
- scanf("%d%*c",&codigo);
- fseek(arquivo,0,SEEK_END);
- fim = ftell(arquivo);
- if(fim*1.0 / (sizeof(Consulta)) >= codigo)
- {
- fseek(arquivo,(codigo -1) * sizeof(Consulta),SEEK_SET);
- fread(&Consulta,sizeof(Consulta),1,arquivo);
- //Entrada do codigo do paciente (Buscar o cadastro pelo codigo)
- printf("\n\tDigite 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("\n\tDigite o codigo do medico: ");
- scanf("%d%*c", &codemed);
- continuar=0;
- arquivo2 = fopen(ARQ_PAC2,"a+b");
- while(fread(&medic, sizeof(medic),1,arquivo1) != 0)
- {
- if(medic.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.cod_medico=codemed;
- Consulta.cod_paciente=codeP;
- printf("\n\tData atual: %d\\%d\\%d", Consulta.dia,Consulta.mes,Consulta.ano);
- do
- {
- printf("\n\tDigite a data:\n\n\t\tDia: ");
- scanf("%d", &Consulta.dia);
- printf("\n\t\tMes: ");
- scanf("%d", &Consulta.mes);
- printf("\n\t\tAno: ");
- scanf("%d", &Consulta.ano);
- if (validar_Data(Consulta.dia, Consulta.mes, Consulta.ano)==0)
- imprime_Erro("Data invalida!");
- }
- while (validar_Data(Consulta.dia, Consulta.mes, Consulta.ano)==0);
- printf("\n\tDiagnostico atual: %s", Consulta.diagnostico);
- //Entrada de diagnostico
- int op;
- do
- {
- printf("\n\tNovo diagnostico: ");
- 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.diagnostico,"Asma");
- }
- break;
- case 2:
- {
- strcpy(Consulta.diagnostico,"Eplepsia");
- }
- break;
- case 3:
- {
- strcpy(Consulta.diagnostico,"Transtorno de Ansiedade");
- }
- break;
- case 4:
- {
- strcpy(Consulta.diagnostico,"Insuficiencia Cardiaca");
- }
- break;
- case 5:
- {
- strcpy(Consulta.diagnostico,"Ulcera");
- }
- break;
- case 6:
- {
- strcpy(Consulta.diagnostico,"Febre Reumatica");
- }
- break;
- case 7:
- {
- strcpy(Consulta.diagnostico,"Diabetes");
- }
- break;
- case 8:
- {
- strcpy(Consulta.diagnostico,"Infeccao Generalizada");
- }
- break;
- case 9:
- {
- strcpy(Consulta.diagnostico,"Catarata");
- }
- break;
- case 10:
- {
- strcpy(Consulta.diagnostico,"Endometriose");
- }
- break;
- default:
- imprime_Erro("Opcao invalida. Escolha de 1 a 10");
- }
- }
- while (op<1||op>10);
- printf("\n\tValor da consulta atual: %.2f", Consulta.valor);
- //Entrada de valor valido
- do
- {
- printf("\n\tNovo valor: ");
- scanf("%f%*c", &Consulta.valor);
- }
- while (validar_Valor(Consulta.valor)==1);
- imprimir_Cabecalho("ALTERAR CONSULTA", "Alteracoes a serem realizadas");
- imprimir_Consulta(Consulta);
- printf("\n\tConfirma alteracao? <Sim(s) ou Nao(n)>");
- scanf("%c%*c", &resposta);
- if(tolower(resposta) == 's')
- {
- fseek(arquivo,(codigo -1) * sizeof(Consulta),SEEK_SET);
- fwrite(&Consulta,sizeof(Consulta),1,arquivo);
- sin = 1;
- }
- fclose(arquivo);
- if(sin == 1)
- {
- printf("\n\tAlteracao realizada com sucesso!\n");
- }
- }
- else
- {
- imprime_Erro("Codigo inexistente!");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement