Advertisement
Guest User

Untitled

a guest
Jul 4th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 44.39 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<ctype.h>
  5. #define ARQ_PAC "Paciente.dat"
  6. #define ARQ_PAC2 "Medico.dat"
  7. #define ARQ_PAC3 "Consulta.dat"
  8.  
  9. struct paciente
  10. {
  11. char nome[80];
  12. char email[50];
  13. char fone[20];
  14. char endereco[50];
  15. int idade;
  16. int cod_paciente;
  17. };
  18.  
  19. struct medico
  20. {
  21. char nome[80];
  22. char email[50];
  23. char fone[20];
  24. char endereco[50];
  25. char especialidade [30];
  26. int idade;
  27. int cod_medico;
  28. float salario;
  29. };
  30.  
  31. struct consultas
  32. {
  33. int cod_consulta;
  34. int cod_medico;
  35. int cod_paciente;
  36. int dia;
  37. int mes;
  38. int ano;
  39. float valor;
  40. char diagnostico[100];
  41. };
  42.  
  43. typedef struct paciente Pacientes;
  44. typedef struct medico Medico;
  45. typedef struct consultas Consultas;
  46.  
  47. int menu_Principal();
  48. int menu_Inserir();
  49. int menu_Pesquisar();
  50. int menu_Relatorios();
  51. int menu_Alterar();
  52. int menu_Excluir();
  53. void imprimir_Titulo(void);
  54. void imprimir_Cabecalho(char *titulo, char *mensagem);
  55. void imprime_Erro( char *mensagem);
  56. void imprimir_Paciente (struct paciente Pacientes);
  57. void imprimir_Medico (struct medico Medico);
  58. void finalizar(void);
  59. int validar_Nome(char *nome);
  60. int validar_Email(char *email);
  61. int validar_Idade(int idade);
  62. int validar_Salario(float salario);
  63. int validar_Telefone(char *fone);
  64. int validar_Data(int dia, int mes, int ano);
  65. int validar_Valor(float valor);
  66. void cadastrar_Paciente();
  67. void cadastrar_Medico();
  68. void cadastrar_Consulta();
  69. void pesquisar_Paciente(int x);
  70. void pesquisar_Medico(int x);
  71. void pesquisar_Consulta(int x);
  72. void passa_Minusculo(char *texto);
  73. void listar_Pacientes(void);
  74. void listar_Medicos(void);
  75. void listar_Total(void);
  76. void listar_idades(void);
  77.  
  78. int main ()
  79. {
  80. int op;
  81. //Limpa do diretório arquivos temporários
  82. system("rm *~");
  83. do
  84. {
  85. op = menu_Principal();
  86.  
  87. switch(op)
  88. {
  89. case 1://Inserir
  90. {
  91. menu_Inserir();
  92. }
  93. break;
  94. case 2://Pesquisar
  95. {
  96. menu_Pesquisar();
  97. }
  98. break;
  99. case 3://Alterar
  100. {
  101. menu_Alterar();
  102. }
  103. break;
  104. case 4://Excluir
  105. {
  106. menu_Excluir();
  107. }
  108. break;
  109. case 5: //Exibir relatórios
  110. {
  111. menu_Relatorios();
  112. }
  113. break;
  114. case 6:
  115. {
  116. finalizar();
  117. }
  118. break;
  119.  
  120. }//Fim do switch
  121. if(op != 6)
  122. {
  123. printf("\n\t------------------------------------------------\n\tDigite enter para voltar ao menu principal!\n\t------------------------------------------------\n\t");
  124. getchar();
  125. }
  126. } while (op!=6);
  127. }
  128.  
  129. int menu_Principal ()
  130. {
  131. int op;
  132. imprimir_Titulo();
  133.  
  134. //Validar a entrada de opcoes
  135. do
  136. {
  137. printf("\n\n\t\t1- Cadastrar");
  138. printf("\n\t\t2- Pesquisar");
  139. printf("\n\t\t3- Alterar cadastro");
  140. printf("\n\t\t4- Excluir cadastro");
  141. printf("\n\t\t5- Exibir relatorios");
  142. printf("\n\t\t6- Sair do sistema");
  143. printf("\n\n\tDigite a opcao desejada: ");
  144. scanf("%d%*c", &op);
  145. if (op<1 || op>6)
  146. {
  147. imprime_Erro("Opcao invalida! Escolha uma opcao de 1 a 6");
  148. }
  149. } while (op<1 || op>6);
  150.  
  151. return op;
  152. }
  153.  
  154. int menu_Inserir ()
  155. {
  156. int op;
  157. imprimir_Titulo();
  158.  
  159. //Validar a entrada de opcoes
  160. do
  161. {
  162. printf("\n\n\t\t1- Cadastrar pacientes");
  163. printf("\n\t\t2- Cadastrar medicos");
  164. printf("\n\t\t3- Cadastrar consultas");
  165. printf("\n\t\t4- Voltar ao menu principal");
  166. printf("\n\n\tDigite a opcao desejada: ");
  167. scanf("%d%*c", &op);
  168.  
  169. switch (op)
  170. {
  171. case 1: //Cadastrar pacientes
  172. {
  173. cadastrar_Paciente();
  174. }
  175. break;
  176. case 2: //Cadastrar medicos
  177. {
  178. cadastrar_Medico();
  179. }
  180. break;
  181. case 3: //Cadastrar consultas
  182. {
  183. cadastrar_Consulta();
  184. }
  185. break;
  186. case 4:
  187. {
  188. }//Retornar ao menu principal
  189. break;
  190. default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
  191. }
  192. } while (op<1 || op>4);
  193.  
  194. return op;
  195. }
  196.  
  197. int menu_Pesquisar ()
  198. {
  199. int op;
  200. imprimir_Titulo();
  201.  
  202. //Validar a entrada de opcoes
  203. do
  204. {
  205. printf("\n\n\t\t1- Pesquisar pacientes");
  206. printf("\n\t\t2- Pesquisar medicos");
  207. printf("\n\t\t3- Pesquisar consultas");
  208. printf("\n\t\t4- Retornar ao menu principal");
  209. printf("\n\n\tDigite a opcao desejada: ");
  210. scanf("%d%*c", &op);
  211.  
  212. switch (op)
  213. {
  214. case 1: //Pesquisar paciente
  215. {
  216.  
  217. imprimir_Titulo();
  218.  
  219. printf("\n\n\t\t1- Pesquisar por nome");
  220. printf("\n\t\t2- Pesquisar por codigo");
  221. printf("\n\t\t3- Retornar ao menu principal");
  222. printf("\n\n\tDigite a opcao desejada: ");
  223. scanf("%d%*c",&op);
  224.  
  225. switch(op)
  226. {
  227. case 1: //pesquisa por nome
  228. {
  229. pesquisar_Paciente(1);
  230. }
  231. break;
  232. case 2: //parametro 2 pesquisa por codigo
  233. {
  234. pesquisar_Paciente(2);
  235. }
  236. break;
  237. case 3:
  238. {
  239.  
  240. }
  241. break;
  242. default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 3");
  243. }
  244. }
  245. break;
  246.  
  247. case 2: //Pesquisar medicos
  248. {
  249.  
  250. imprimir_Titulo();
  251.  
  252. printf("\n\n\t\t1- Pesquisar por nome");
  253. printf("\n\t\t2- Pesquisar por codigo");
  254. printf("\n\t\t3- Pesquisar por especialidade");
  255. printf("\n\t\t4- Retornar ao menu principal");
  256. printf("\n\n\tDigite a opcao desejada: ");
  257. scanf("%d%*c",&op);
  258.  
  259. switch(op)
  260. {
  261. case 1: //Parametro 1 pesquisa por nome
  262. {
  263. pesquisar_Medico(1);
  264. }
  265. break;
  266. case 2: //Parametro 2 pesquisa por codigo
  267. {
  268. pesquisar_Medico(2);
  269. }
  270. break;
  271. case 3: //Parametro 3 pesquisa por especialidade
  272. {
  273. pesquisar_Medico(3);
  274. }
  275. break;
  276. case 4:
  277. {
  278. }
  279. break;
  280. default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
  281. }
  282. }
  283. break;
  284.  
  285. case 3: //Pesquisar consultas
  286. {
  287.  
  288. imprimir_Titulo();
  289.  
  290. printf("\n\n\t\t1- Pesquisar por data");
  291. printf("\n\t\t2- Pesquisar por medico");
  292. printf("\n\t\t3- Pesquisar por paciente");
  293. printf("\n\t\t4- Retornar ao menu principal");
  294. printf("\n\n\tDigite a opcao desejada: ");
  295. scanf("%d%*c",&op);
  296.  
  297. switch(op)
  298. {
  299. case 1: //Parametro 1 pesquisa por data
  300. //pesquisa por data
  301. pesquisar_Consulta(1);
  302. break;
  303.  
  304. case 2://parametro 2 pesquisa por medico
  305. pesquisar_Consulta(2);
  306. break;
  307.  
  308. case 3://parametro 3 pesquisa por paciente
  309. pesquisar_Consulta(3);
  310. break;
  311. case 4: break;
  312.  
  313. default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
  314. }
  315. }
  316. break;
  317. case 4: //Retornar ao menu principal
  318. break;
  319. default: imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
  320. }
  321. } while (op<1 || op>4);
  322.  
  323. return op;
  324. }
  325.  
  326. int menu_Relatorios ()
  327. {
  328. int op;
  329. imprimir_Titulo();
  330.  
  331. //Validar a entrada de opcoes
  332. do
  333. {
  334. printf("\n\n\t\t1- Lista de todos os pacientes");
  335. printf("\n\t\t2- Lista de todos os medicos");
  336. printf("\n\t\t3- Lista do total arrecado por consultas");
  337. printf("\n\t\t4- Lista de pacientes separados por idade");
  338. printf("\n\t\t5- Retornar ao menu principal");
  339. printf("\n\n\tDigite a opcao desejada: ");
  340. scanf("%d%*c", &op);
  341.  
  342. switch (op)
  343. {
  344. case 1:
  345. {
  346. listar_Pacientes();
  347. }
  348. break;
  349. case 2:
  350. {
  351. listar_Medicos();
  352. }
  353. break;
  354. case 3:
  355. {
  356. listar_Total();
  357. }
  358. break;
  359. case 4:
  360. {
  361. listar_idades();
  362. }
  363. break;
  364. case 5:
  365. {
  366.  
  367. }
  368. break;
  369. default: imprime_Erro("Opcao invalida. Escolha de 1 a 5");
  370. }
  371. }while (op<1 || op>5);
  372. return op;
  373. }
  374.  
  375. int menu_Alterar ()
  376. {
  377. int op;
  378. imprimir_Titulo();
  379.  
  380. //Validar a entrada de opcoes
  381. do
  382. {
  383. printf("\n\n\t\t1- Alterar dados de pacientes");
  384. printf("\n\t\t2- Alterar dados de medicos");
  385. printf("\n\t\t3- Alterar consultas");
  386. printf("\n\t\t4- Retornar ao menu principal");
  387. printf("\n\n\tDigite a opcao desejada: ");
  388. scanf("%d%*c", &op);
  389.  
  390. switch (op)
  391. {
  392. case 1:
  393. {
  394. //alterar_Paciente();
  395. }
  396. break;
  397.  
  398. case 2:
  399. {
  400. //alterar medicos
  401. }
  402. break;
  403.  
  404. case 3:
  405. {
  406. //alterar consultas
  407. }
  408. break;
  409.  
  410. case 4://retornar ao menu principal
  411. {
  412.  
  413. }
  414. break;
  415. default: imprime_Erro("Digite uma opcao de 1 a 4.");
  416. }
  417. } while (op<1 || op>4);
  418. return op;
  419. }
  420.  
  421. int menu_Excluir()
  422. {
  423. int op;
  424. imprimir_Titulo();
  425.  
  426. //Validar a entrada de opcoes
  427. do
  428. {
  429. printf("\n\n\t\t1- Excluir pacientes");
  430. printf("\n\t\t2- Excluir medicos");
  431. printf("\n\t\t3- Excluir consultas");
  432. printf("\n\t\t4- Retornar ao menu principal");
  433. printf("\n\n\tDigite a opcao desejada: ");
  434. scanf("%d%*c", &op);
  435.  
  436. switch (op)
  437. {
  438. case 1://Excluir pacientes
  439. {
  440.  
  441. }
  442. break;
  443.  
  444. case 2://Excluir medicos
  445. {
  446.  
  447. }
  448. break;
  449.  
  450. case 3://excluir consultas
  451. {
  452.  
  453. }
  454. break;
  455.  
  456. case 4://Retornar ao menu principal
  457. {
  458.  
  459. }
  460. break;
  461. default: imprime_Erro("Digite uma opcao de 1 a 4.");
  462. }
  463. } while (op<1 || op>4);
  464. return op;
  465. }
  466.  
  467. void imprimir_Titulo(void)
  468. {
  469. system("clear || cls");
  470. printf("\n\n\t------------------------------------------------\n\n\t\t\t CLINICA MEDICA \n\n\t------------------------------------------------");
  471. }
  472.  
  473. void imprimir_Cabecalho(char *titulo, char *mensagem)
  474. {
  475. imprimir_Titulo();
  476. printf("\n\n\t------------------------------------------------\n\t\t\t %s \n\t------------------------------------------------\n\n\t%s\n", titulo, mensagem);
  477. }
  478.  
  479. void imprime_Erro( char *mensagem)
  480. {
  481. imprimir_Titulo();
  482.  
  483. printf("\n\n\t------------------------------------------------\n\t\t\t \tERRO \n\t------------------------------------------------\n\t%s\n\t\tDigite corretamente desta vez!\n\t------------------------------------------------\n", mensagem);
  484. }
  485.  
  486. void finalizar(void)
  487. {
  488. imprimir_Titulo();
  489. printf("\n\n\t------------------------------------------------\n\t\t\t PROGRAMA ENCERRADO !!! \n\t------------------------------------------------\n\n\n\t");
  490. }
  491.  
  492. int validar_Nome(char *nome)
  493. {
  494. //O nome não pode começar com espaço em branco e deve conter pelo menos 3 caracteres
  495. int valor=0; //retorna 0 caso não tenha cometido erro na entrada do nome
  496.  
  497. if(isspace(nome[0]))
  498. {
  499. imprime_Erro("\t\tNome invalido!\n\tO nome nao pode começar com espaço em branco.");
  500. valor = 1;
  501. }
  502. else if(strlen(nome) < 3)
  503. {
  504. imprime_Erro("\t\tNome invalido!\n\tO nome deve possuir pelo menos 3 caracteres.");
  505. valor = 1;
  506. }
  507. return valor;
  508. }
  509.  
  510. int validar_Email(char *email)
  511. {
  512. //O email deve conter o caractere @ em alguma parte do email e possuir pelo menos 10 caracteres
  513. int valor=0; //retorna 0 caso não tenha cometido erro na entrada do email
  514.  
  515. if(strchr(email, '@') == NULL )
  516. {
  517. imprime_Erro("\t\tE-mail invalido!\n\tO e-mail deve conter o caractere @.");
  518. valor = 1;
  519. }
  520. else if(strlen(email) < 10)
  521. {
  522. imprime_Erro("\t\tE-mail invalido!\n\tO nome deve possuir pelo menos 10 caracteres.");
  523. valor = 1;
  524. }
  525. return valor;
  526. }
  527.  
  528. int validar_Idade(int idade)
  529. {
  530. int valor=0;
  531. //A idade deve estar compreendida entre 1 e 110 anos.
  532.  
  533. if(idade<1||idade>110)
  534. {
  535. imprime_Erro("\t\tIdade invalida!\n\tA idade deve estar compreendida entre 1 e 110 anos.");
  536. valor = 1;
  537. }
  538. return valor;
  539. }
  540.  
  541. int validar_Salario(float salario)
  542. {
  543. int valor=0;
  544. //O salario tem que ser maior que R$0,00
  545.  
  546. if(salario<=0)
  547. {
  548. imprime_Erro("\t\tSalario invalido!\n\tO salario nao pode ser menor ou igual a R$0,00.");
  549. valor = 1;
  550. }
  551.  
  552. return valor;
  553. }
  554.  
  555. int validar_Telefone(char *fone)
  556. {
  557. /*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
  558. */
  559. int valor=0, valida = 1;
  560.  
  561. int t,i;
  562. valida = 1;
  563. t = strlen(fone);
  564. for (i = 0; i < t; i++)
  565. {
  566. if(strchr("0123456789",fone[i] ) == NULL)
  567. {
  568. imprime_Erro("\t\tTelefone invalido!\n\tO telefone não pode conter caracteres nao numericos!");
  569. valida = 0;
  570. valor =1;
  571. break;
  572. }
  573. }
  574. if(valida!= 0 && t != 10 && t != 11)
  575. {
  576. imprime_Erro("\t\tTelefone invalido!\n\tO telefone deve conter entre 10 e 11 digitos com DDD.");
  577. valida = 0;
  578. valor = 1;
  579. }
  580. return valor; //retorna 0 caso não tenha cometido erro na entrada do telefone
  581. }
  582.  
  583. int validar_Data(int dia, int mes, int ano)
  584. {
  585. if ((dia >= 1 && dia <= 31) && (mes >= 1 && mes <= 12) && (ano >= 1900 && ano <= 2100)) //verifica se os numeros sao validos
  586. {
  587. if ((dia == 29 && mes == 2) && ((ano % 4) == 0)) //verifica se o ano e bissexto
  588. {
  589. return 1;
  590. }
  591. if (dia <= 28 && mes == 2) //verifica o mes de feveireiro
  592. {
  593. return 1;
  594. }
  595. if ((dia <= 30) && (mes == 4 || mes == 6 || mes == 9 || mes == 11)) //verifica os meses de 30 dias
  596. {
  597. return 1;
  598. }
  599. if ((dia <=31) && (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes ==8 || mes == 10 || mes == 12)) //verifica os meses de 31 dias
  600. {
  601. return 1;
  602. }
  603. else
  604. {
  605. return 0;
  606. }
  607. }
  608. else
  609. {
  610. return 0; //retorna 0 se for invalido
  611. }
  612. }
  613.  
  614. int validar_Valor(float valor)
  615. {
  616. int aux=0;
  617. if (valor<=0)
  618. {
  619. imprime_Erro("Valor da consulta invalido");
  620. aux=1;
  621. }
  622. return aux;
  623. }
  624.  
  625. void cadastrar_Paciente()
  626. {
  627. Pacientes ultimo_paciente;
  628. Pacientes paciente_atual;
  629. FILE *arquivo;
  630.  
  631. imprimir_Titulo();
  632. imprimir_Cabecalho("CADASTRO DE PACIENTES","Digite os seguintes dados:");
  633.  
  634. //Entrada de nome válido
  635. do
  636. {
  637. printf("\n\n\tNome: ");
  638. scanf("%[^\n]%*c",paciente_atual.nome);
  639. }while (validar_Nome(paciente_atual.nome)==1);
  640.  
  641. //Entrada de email válido
  642. do
  643. {
  644. printf("\n\tE-mail: ");
  645. scanf("%[^\n]%*c",paciente_atual.email);
  646. }while (validar_Email(paciente_atual.email)==1);
  647.  
  648. //Entrada de telefone valido
  649. do
  650. {
  651. printf("\n\tDDD + num telefone: ");
  652. scanf("%[^\n]%*c",paciente_atual.fone);
  653. }while (validar_Telefone(paciente_atual.fone)==1);
  654.  
  655. //Entrada de endereço
  656. printf("\n\tEndereco: ");
  657. scanf("%[^\n]%*c",paciente_atual.endereco);
  658.  
  659. //Entrada de idade valida
  660. do
  661. {
  662. printf("\n\tIdade: ");
  663. scanf("%d%*c",&paciente_atual.idade);
  664. }while (validar_Idade(paciente_atual.idade)==1);
  665.  
  666. arquivo = fopen(ARQ_PAC,"a+b");
  667. if(arquivo != NULL)
  668. {
  669. //Pula pro ultimo registro do arquivo
  670. fseek(arquivo,0,SEEK_END);
  671. //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
  672. if(ftell(arquivo) == 0)
  673. {
  674. paciente_atual.cod_paciente = 1;
  675. }else
  676. {
  677. fseek(arquivo,-sizeof(Pacientes),SEEK_END);
  678. //Le o ultimo paciente
  679. fread(&ultimo_paciente,sizeof(Pacientes),1,arquivo);
  680. //Pega o ultimo codigo e soma +1
  681. paciente_atual.cod_paciente = ultimo_paciente.cod_paciente + 1;
  682. }
  683. fseek(arquivo,0,SEEK_END);
  684. fseek(arquivo,-(sizeof(Pacientes)),SEEK_END);
  685. fwrite(&paciente_atual,sizeof(Pacientes),1,arquivo);
  686. imprimir_Cabecalho("CADASTRO DE PACIENTES","Cadastro realizado com sucesso!");
  687.  
  688. //Imprimir o cadastro do paciente
  689.  
  690. printf("\n\tCodigo: %d",paciente_atual.cod_paciente);
  691. printf("\n\tNome: %s",paciente_atual.nome);
  692. printf("\n\tEmail: %s",paciente_atual.email);
  693. printf("\n\tTelefone: %s",paciente_atual.fone);
  694. printf("\n\tEndereco: %s",paciente_atual.endereco);
  695. printf("\n\tIdade: %d",paciente_atual.idade);
  696. printf("\n\n\t-------------------------------------------------\n\n");
  697.  
  698. fclose(arquivo);
  699. }
  700. else
  701. {
  702. imprimir_Cabecalho("CADASTRO DE PACIENTES","Cadastro nao realizado!");
  703. }
  704. }
  705.  
  706. void imprimir_Paciente (struct paciente Pacientes)
  707. {
  708. printf("\n\tCodigo: %d",Pacientes.cod_paciente);
  709. printf("\n\tNome: %s",Pacientes.nome);
  710. printf("\n\tEmail: %s",Pacientes.email);
  711. printf("\n\tTelefone: %s",Pacientes.fone);
  712. printf("\n\tEndereco: %s",Pacientes.endereco);
  713. printf("\n\tIdade: %d",Pacientes.idade);
  714. printf("\n\n\t-------------------------------------------------\n\n");
  715. }
  716.  
  717. void imprimir_Medico (struct medico Medico)
  718. {
  719. printf("\n\tCodigo: %d\n\t",Medico.cod_medico);
  720. printf("Nome: %s\n\t",Medico.nome);
  721. printf("Email: %s\n\t",Medico.email);
  722. printf("Telefone: %s\n\t",Medico.fone);
  723. printf("Endereco: %s\n\t",Medico.endereco);
  724. printf("Especialidade: %s\n\t",Medico.especialidade);
  725. printf("Salario: %f\n\t",Medico.salario);
  726. printf("\n\n\t-------------------------------------------------\n\n");
  727. }
  728.  
  729. void cadastrar_Medico()
  730. {
  731. Medico ultimo_medico;
  732. Medico medico_atual;
  733. FILE *arquivo;
  734.  
  735. imprimir_Titulo();
  736. imprimir_Cabecalho("CADASTRO DE MEDICOS","Digite os seguintes dados:");
  737.  
  738. //Entrada de nome válido
  739. do
  740. {
  741. printf("\n\n\tNome: ");
  742. scanf("%[^\n]%*c",medico_atual.nome);
  743. }while (validar_Nome(medico_atual.nome)==1);
  744.  
  745. //Entrada de email válido
  746. do
  747. {
  748. printf("\n\tE-mail: ");
  749. scanf("%[^\n]%*c",medico_atual.email);
  750. }while (validar_Email(medico_atual.email)==1);
  751.  
  752. //Entrada de telefone valido
  753. do
  754. {
  755. printf("\n\tDDD + num telefone: ");
  756. scanf("%[^\n]%*c",medico_atual.fone);
  757. }while (validar_Telefone(medico_atual.fone)==1);
  758.  
  759. //Entrada de endereço
  760. printf("\n\tEndereco: ");
  761. scanf("%[^\n]%*c",medico_atual.endereco);
  762.  
  763. //Entrada de especialidade
  764. int op;
  765. do
  766. {
  767. printf("\n\tEspecialidades:");
  768. printf("\n\t1- Clinica Geral");
  769. printf("\n\t2- Ortopedia");
  770. printf("\n\t3- Geriatria");
  771. printf("\n\t4- Pediatria");
  772. printf("\n\t5- Infectologia");
  773. printf("\n\t6- Neurologia");
  774. printf("\n\t7- Cardiologia");
  775. printf("\n\t8- Ginecologia");
  776. printf("\n\t9- Oftalmologia");
  777. printf("\n\t10- Psiquiatria");
  778. printf("\n\tEscolha uma opcao: ");
  779. scanf("%d%*c", &op);
  780.  
  781. switch (op)
  782. {
  783. case 1: {strcpy(medico_atual.especialidade,"Clinica Geral");}
  784. break;
  785. case 2: {strcpy(medico_atual.especialidade,"Ortopedia");}
  786. break;
  787. case 3: {strcpy(medico_atual.especialidade,"Geriatria");}
  788. break;
  789. case 4: {strcpy(medico_atual.especialidade,"Pediatria");}
  790. break;
  791. case 5: {strcpy(medico_atual.especialidade,"Infectologia");}
  792. break;
  793. case 6: {strcpy(medico_atual.especialidade,"Neurologia");}
  794. break;
  795. case 7: {strcpy(medico_atual.especialidade,"Cardiologia");}
  796. break;
  797. case 8: {strcpy(medico_atual.especialidade,"Ginecologia");}
  798. break;
  799. case 9: {strcpy(medico_atual.especialidade,"Oftalmologia");}
  800. break;
  801. case 10: {strcpy(medico_atual.especialidade,"Psiquiatria");}
  802. break;
  803. default:{imprime_Erro("Opcao invalida. Escolha de 1 a 10");}
  804. }
  805. }while (op<1||op>10);
  806.  
  807. //Entrada de salario valida
  808. do
  809. {
  810. printf("\n\tSalario: ");
  811. scanf("%f%*c",&medico_atual.salario);
  812. }while (validar_Salario(medico_atual.salario)==1);
  813.  
  814. arquivo = fopen(ARQ_PAC2,"a+b");
  815. if(arquivo != NULL)
  816. {
  817. //Pula pro ultimo registro do arquivo
  818. fseek(arquivo,0,SEEK_END);
  819. //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
  820. if(ftell(arquivo) == 0)
  821. {
  822. medico_atual.cod_medico = 1;
  823. }
  824. else
  825. {
  826. fseek(arquivo,-sizeof(Medico),SEEK_END);
  827. //Le o ultimo paciente
  828. fread(&ultimo_medico,sizeof(Medico),1,arquivo);
  829. //Pega o ultimo codigo e soma +1
  830. medico_atual.cod_medico = ultimo_medico.cod_medico + 1;
  831. }
  832.  
  833.  
  834. //Após ter todos os dados validados, armazenar no arquivo
  835. fseek(arquivo,0,SEEK_END);
  836. fwrite(&medico_atual,sizeof(Medico),1,arquivo);
  837. imprimir_Cabecalho("CADASTRO DE MEDICOS","Cadastro realizado com sucesso!");
  838.  
  839. //Imprimir o cadastro do medico
  840.  
  841. printf("\n\tCodigo: %d\n\t",medico_atual.cod_medico);
  842. printf("Nome: %s\n\t",medico_atual.nome);
  843. printf("Email: %s\n\t",medico_atual.email);
  844. printf("Telefone: %s\n\t",medico_atual.fone);
  845. printf("Endereco: %s\n\t",medico_atual.endereco);
  846. printf("Especialidade: %s\n\t",medico_atual.especialidade);
  847. printf("Salario: %f\n\t",medico_atual.salario);
  848.  
  849. fclose(arquivo);
  850. }
  851. else
  852. {
  853. imprimir_Cabecalho("CADASTRO DE MEDICOS","Cadastro nao realizado!");
  854. }
  855. }
  856.  
  857. void cadastrar_Consulta()
  858. {
  859. Consultas ultima_consulta;
  860. Consultas consulta_atual;
  861. paciente Paciente;
  862. medico Medico;
  863. FILE *arquivo;
  864. FILE *arquivo1;
  865. FILE *arquivo2;
  866. int codeP;
  867. int codemed;
  868. int continuar;
  869.  
  870. imprimir_Titulo();
  871. imprimir_Cabecalho("CADASTRO DE CONSULTAS","Digite os seguintes dados:");
  872.  
  873. //Verificar se existe pelo menos 1 medico e 1 paciente cadastrado
  874.  
  875.  
  876. //Entrada do codigo do paciente (Buscar o cadastro pelo codigo)
  877. printf("Digite o codigo do paciente: ");
  878. scanf("%d%*c", &codeP);
  879. continuar=0;
  880. arquivo1 = fopen(ARQ_PAC,"a+b");
  881. //percoree arquivo
  882. while(fread(&Paciente, sizeof(Paciente),1,arquivo1) != 0)
  883. {
  884. if(Paciente.cod_paciente==codeP)
  885. continuar=1;
  886.  
  887. }
  888. fclose(arquivo1);
  889. if(continuar==0){//verifica se o paciente esta cadastrado
  890. printf("ERRO: paciente não cadastrado");
  891. return;
  892. }
  893.  
  894.  
  895. //Entrada do codigo do medico (Buscar o cadastro pelo codigo)
  896. printf("Digite o codigo do medico: ");
  897. scanf("%d%*c", &codemed);
  898. continuar=0;
  899. arquivo2 = fopen(ARQ_PAC2,"a+b");
  900. while(fread(&Medico, sizeof(Medico),1,arquivo1) != 0)
  901. {
  902. if(Medico.cod_medico==codemed)
  903. continuar=1;
  904. }
  905. fclose(arquivo2);
  906. if(continuar==0){//verifica se o medico esta cadastrado
  907. printf("ERRO: Medico não cadastrado");
  908. return;
  909. }
  910.  
  911. //Entrada de data valida recebe os codigos
  912.  
  913. consulta_atual.cod_medico=codemed;
  914. consulta_atual.cod_paciente=codeP;
  915.  
  916.  
  917.  
  918.  
  919.  
  920. do
  921. {
  922. printf("\n\tDigite a data:\n\n\t\tDia: ");
  923. scanf("%d", &consulta_atual.dia);
  924. printf("\n\t\tMes: ");
  925. scanf("%d", &consulta_atual.mes);
  926. printf("\n\t\tAno: ");
  927. scanf("%d", &consulta_atual.ano);
  928. if (validar_Data(consulta_atual.dia, consulta_atual.mes, consulta_atual.ano)==0)
  929. imprime_Erro("Data invalida!");
  930. }while (validar_Data(consulta_atual.dia, consulta_atual.mes, consulta_atual.ano)==0);
  931.  
  932. //Entrada de diagnostico
  933. int op;
  934. do
  935. {
  936. printf("\n\tDiagnosticos: ");
  937. printf("\n\t1- Asma");
  938. printf("\n\t2- Eplepsia");
  939. printf("\n\t3- Transtorno de Ansiedade");
  940. printf("\n\t4- Isuficiencia Cardiaca");
  941. printf("\n\t5- Ulcera");
  942. printf("\n\t6- Febre Reumatica");
  943. printf("\n\t7- Diabetes");
  944. printf("\n\t8- Infeccao Generalizada");
  945. printf("\n\t9- Catarata");
  946. printf("\n\t10- Endometriose");
  947. printf("\n\tEscolha a opcao desejada: ");
  948. scanf("%d%*c", &op);
  949. switch (op)
  950. {
  951. case 1: {strcpy(consulta_atual.diagnostico,"Asma");}
  952. break;
  953. case 2: {strcpy(consulta_atual.diagnostico,"Eplepsia");}
  954. break;
  955. case 3: {strcpy(consulta_atual.diagnostico,"Transtorno de Ansiedade");}
  956. break;
  957. case 4: {strcpy(consulta_atual.diagnostico,"Insuficiencia Cardiaca");}
  958. break;
  959. case 5: {strcpy(consulta_atual.diagnostico,"Ulcera");}
  960. break;
  961. case 6: {strcpy(consulta_atual.diagnostico,"Febre Reumatica");}
  962. break;
  963. case 7: {strcpy(consulta_atual.diagnostico,"Diabetes");}
  964. break;
  965. case 8: {strcpy(consulta_atual.diagnostico,"Infeccao Generalizada");}
  966. break;
  967. case 9: {strcpy(consulta_atual.diagnostico,"Catarata");}
  968. break;
  969. case 10: {strcpy(consulta_atual.diagnostico,"Endometriose");}
  970. break;
  971. default:imprime_Erro("Opcao invalida. Escolha de 1 a 10");
  972. }
  973. }while (op<1||op>10);
  974.  
  975. //Entrada de valor valido
  976. do
  977. {
  978. printf("\n\tValor da consulta: ");
  979. scanf("%f%*c", &consulta_atual.valor);
  980. }while (validar_Valor(consulta_atual.valor)==1);
  981.  
  982. arquivo = fopen(ARQ_PAC3,"a+b");
  983. if(arquivo != NULL)
  984. {
  985. //Pula pro ultimo registro do arquivo
  986. fseek(arquivo,0,SEEK_END);
  987.  
  988.  
  989. //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
  990. if(ftell(arquivo) == 0)
  991. {
  992. consulta_atual.cod_consulta = 1;
  993. }else
  994. {
  995. fseek(arquivo,-sizeof(Consultas),SEEK_END);
  996. //Le o ultimo paciente
  997. fread(&ultima_consulta,sizeof(Consultas),1,arquivo);
  998. //Pega o ultimo codigo e soma +1
  999. consulta_atual.cod_consulta = ultima_consulta.cod_consulta + 1;
  1000. }
  1001. /*
  1002.  
  1003.  
  1004. */
  1005. fseek(arquivo,0,SEEK_END);
  1006. fseek(arquivo,-(sizeof(Consultas)),SEEK_END);
  1007. fwrite(&consulta_atual,sizeof(Consultas),1,arquivo);
  1008. imprimir_Cabecalho("CADASTRO DE CONSULTAS","Cadastro realizado com sucesso!");
  1009.  
  1010. //Imprimir o cadastro da consulta
  1011.  
  1012. printf("\n\tCodigo da consulta: %d",consulta_atual.cod_consulta);
  1013. //printf("\n\tNome do paciente: %s
  1014. //printf("\n\tNome do medico: %s
  1015. printf("\n\tData: %d\\%d\\%d", consulta_atual.dia,consulta_atual.mes,consulta_atual.ano);
  1016. printf("\n\tValor da consulta: %.2f", consulta_atual.valor);
  1017. printf("\n\tDiagnostico: %s", consulta_atual.diagnostico);
  1018. printf("\n\n\t-------------------------------------------------\n\n");
  1019.  
  1020. fclose(arquivo);
  1021. }
  1022. else
  1023. {
  1024. imprimir_Cabecalho("CADASTRO DE CONSULTAS","Cadastro nao realizado!");
  1025. }
  1026. }
  1027.  
  1028. void pesquisar_Paciente (int x)
  1029. {
  1030.  
  1031. Pacientes paciente;
  1032. FILE *arquivo;
  1033.  
  1034. arquivo = fopen(ARQ_PAC,"rb");
  1035. if(arquivo == NULL)
  1036. {
  1037. imprime_Erro("Erro ao abrir o arquivo!");
  1038. return;
  1039. }
  1040.  
  1041. char nome[50];
  1042. int aux;
  1043.  
  1044. if(x==1){
  1045. imprimir_Cabecalho("PESQUISAR PACIENTE POR NOME","Digite o nome a ser pesquisado:");
  1046. printf("\n\t>>> ");
  1047. scanf("%[^\n]%*c", nome);
  1048. passa_Minusculo(nome);
  1049. passa_Minusculo(paciente.nome);
  1050. }
  1051. if(x==2){
  1052. imprimir_Cabecalho("PESQUISAR PACIENTE POR CODIGO","Digite o codigo a ser pesquisado:");
  1053. printf("\n\t>>> ");
  1054. scanf("%d%*c",&aux);
  1055.  
  1056. }
  1057.  
  1058. while(fread(&paciente,sizeof(Pacientes),1,arquivo))
  1059. {
  1060. if(strcmp(nome,paciente.nome) == 0)
  1061. {
  1062. printf("\n\tCodigo: %d",paciente.cod_paciente);
  1063. printf("\n\tNome: %s",paciente.nome);
  1064. printf("\n\tEmail: %s",paciente.email);
  1065. printf("\n\tTelefone: %s",paciente.fone);
  1066. printf("\n\tEndereco: %s",paciente.endereco);
  1067. printf("\n\tIdade: %d",paciente.idade);
  1068. printf("\n\t---------------------------------------------------\n");
  1069. }
  1070. else
  1071. printf("\n\tPaciente nao encontrado!");
  1072.  
  1073.  
  1074. if(paciente.cod_paciente==aux)
  1075. {
  1076. printf("\n\tCodigo: %d",paciente.cod_paciente);
  1077. printf("\n\tNome: %s",paciente.nome);
  1078. printf("\n\tEmail: %s",paciente.email);
  1079. printf("\n\tTelefone: %s",paciente.fone);
  1080. printf("\n\tEndereco: %s",paciente.endereco);
  1081. printf("\n\tIdade: %d",paciente.idade);
  1082. printf("\n\t---------------------------------------------------\n");
  1083. }
  1084. else
  1085. printf("\n\tPaciente nao encontrado!");
  1086. }
  1087. }
  1088.  
  1089. /*else
  1090. {
  1091. int codigo,fim;
  1092. imprimir_Cabecalho("PESQUISAR PACIENTE POR CODIGO","Digite o codigo a ser pesquisado:");
  1093. printf("\n\t>>> ");
  1094. scanf("%d%*c",&codigo);
  1095. fseek(arquivo,0,SEEK_END);
  1096. fim = ftell(arquivo);
  1097. if(fim / (sizeof(Pacientes)) >= codigo)
  1098. {
  1099. fseek(arquivo,(codigo -1) * sizeof(Pacientes),SEEK_SET);
  1100. fread(&paciente,sizeof(Pacientes),1,arquivo);
  1101. printf("\n\tCodigo: %d",paciente.cod_paciente);
  1102. printf("\n\tNome: %s",paciente.nome);
  1103. printf("\n\tEmail: %s",paciente.email);
  1104. printf("\n\tTelefone: %s",paciente.fone);
  1105. printf("\n\tEndereco: %s",paciente.endereco);
  1106. printf("\n\tIdade: %d",paciente.idade);
  1107. printf("\n\t---------------------------------------------------\n");
  1108. }
  1109. else
  1110. {
  1111. imprime_Erro("Codigo inexistente!");
  1112. }
  1113.  
  1114. }*/
  1115.  
  1116.  
  1117. void pesquisar_Medico(int x)
  1118. {
  1119. Medico medico;
  1120. FILE *arquivo;
  1121. arquivo = fopen(ARQ_PAC2,"rb");
  1122. if(arquivo == NULL)
  1123. {
  1124. imprime_Erro("Erro ao abrir o arquivo!");
  1125. return;
  1126. }
  1127. if(x == 1)
  1128. {
  1129. char nome[50];
  1130. imprimir_Cabecalho("PESQUISAR MEDICO POR NOME","Digite o nome a ser pesquisado:");
  1131. printf("\n\t>>> ");
  1132. scanf("%[^\n]%*c", nome);
  1133. passa_Minusculo(nome);
  1134. passa_Minusculo(medico.nome);
  1135. while(fread(&medico,sizeof(Medico),1,arquivo))
  1136. {
  1137. if(strcmp(nome,medico.nome) == 0)
  1138. {
  1139. printf("\n\tCodigo: %d",medico.cod_medico);
  1140. printf("\n\tNome: %s",medico.nome);
  1141. printf("\n\tEmail: %s",medico.email);
  1142. printf("\n\tTelefone: %s",medico.fone);
  1143. printf("\n\tEndereco: %s",medico.endereco);
  1144. printf("\n\tEspecialidade: %s",medico.especialidade);
  1145. printf("\n\tSalario: %.2f",medico.salario);
  1146. printf("\n\t---------------------------------------------------\n");
  1147. }
  1148. else
  1149. printf("\n\tMedico nao encontrado!");
  1150. }
  1151. }
  1152. if (x==2)
  1153. {
  1154. int codigo,fim;
  1155. imprimir_Cabecalho("PESQUISAR MEDICO POR CODIGO","Digite o codigo a ser pesquisado:");
  1156. printf("\n\t>>> ");
  1157. scanf("%d%*c",&codigo);
  1158. fseek(arquivo,0,SEEK_END);
  1159. fim = ftell(arquivo);
  1160. if(fim*1.0 / (sizeof(Medico)) >= codigo)//
  1161. {
  1162. fseek(arquivo,(codigo -1) * sizeof(Medico),SEEK_SET);
  1163. fread(&medico,sizeof(Medico),1,arquivo);
  1164. printf("\n\tCodigo: %d",medico.cod_medico);
  1165. printf("\n\tNome: %s",medico.nome);
  1166. printf("\n\tEmail: %s",medico.email);
  1167. printf("\n\tTelefone: %s",medico.fone);
  1168. printf("\n\tEndereco: %s",medico.endereco);
  1169. printf("\n\tEspecialidade: %s",medico.especialidade);
  1170. printf("\n\tSalario: %.2f",medico.salario);
  1171. printf("\n\t---------------------------------------------------\n");
  1172. }
  1173. else
  1174. {
  1175. imprime_Erro("Codigo inexistente!");
  1176. }
  1177.  
  1178. }
  1179. if (x==3)
  1180. {
  1181. char especialidade[30];
  1182. imprimir_Cabecalho("PESQUISAR MEDICO POR ESPECIALIDADE","Digite a especialidade a ser pesquisada:");
  1183. printf("\n\t>>> ");
  1184. scanf("%[^\n]%*c", especialidade);
  1185. passa_Minusculo(especialidade);
  1186. passa_Minusculo(medico.especialidade);
  1187. while(fread(&medico,sizeof(Medico),1,arquivo))
  1188. {
  1189. if(strstr(especialidade,medico.especialidade) == NULL)
  1190. {
  1191. printf("\n\tCodigo: %d",medico.cod_medico);
  1192. printf("\n\tNome: %s",medico.nome);
  1193. printf("\n\tEmail: %s",medico.email);
  1194. printf("\n\tTelefone: %s",medico.fone);
  1195. printf("\n\tEndereco: %s",medico.endereco);
  1196. printf("\n\tSalario: %.2f",medico.salario);
  1197. printf("\n\t---------------------------------------------------\n");
  1198. }
  1199. else
  1200. printf("\n\tEspecialidade nao encontrada!");
  1201. }
  1202. }
  1203. }
  1204.  
  1205. void passa_Minusculo(char *texto)
  1206. {
  1207. int i = 0, t = strlen(texto);
  1208. while(i<t)
  1209. {
  1210. texto[i] = tolower(texto[i]);
  1211. i++;
  1212. }
  1213. }
  1214.  
  1215. void listar_Pacientes(void)
  1216. {
  1217. FILE *arquivo;
  1218. struct paciente Pacientes;
  1219.  
  1220. arquivo = fopen("Paciente.dat", "rb");
  1221. if(arquivo == NULL)
  1222. {
  1223. imprime_Erro("O arquivo nao pode ser aberto!");
  1224. return;
  1225. }
  1226. else
  1227. {
  1228. //Exibir
  1229. int cont =0;
  1230. imprimir_Cabecalho("EXIBINDO TODOS OS PACIENTES","");
  1231. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1232. {
  1233. cont++;
  1234. imprimir_Paciente(Pacientes);
  1235. }
  1236. fclose(arquivo);
  1237. if(cont == 0)
  1238. imprime_Erro("O arquivo nao pode ser aberto!");
  1239. }
  1240. }
  1241.  
  1242.  
  1243.  
  1244.  
  1245. void listar_Medicos(void)
  1246. {
  1247. FILE *arquivo;
  1248. struct medico Medico;
  1249.  
  1250. arquivo = fopen("Medico.dat", "rb");
  1251. if(arquivo == NULL)
  1252. {
  1253. imprime_Erro("O arquivo nao pode ser aberto!");
  1254. return;
  1255. }
  1256. else
  1257. {
  1258. //Exibir
  1259. int cont =0;
  1260. imprimir_Cabecalho("EXIBINDO TODOS OS MEDICOS","");
  1261. while(fread(&Medico, sizeof(Medico),1,arquivo) != 0)
  1262. {
  1263. cont++;
  1264. imprimir_Medico(Medico);
  1265. }
  1266. fclose(arquivo);
  1267. if(cont == 0)
  1268. imprime_Erro("O arquivo nao pode ser aberto!");
  1269. }
  1270. }
  1271. void pesquisar_Consulta(int x)
  1272. {
  1273.  
  1274. consultas Consulta;
  1275. FILE *arquivo;
  1276. int dia,mes,ano;
  1277. int codeP;
  1278. int codemed;
  1279. arquivo = fopen(ARQ_PAC3,"rb");
  1280. if(arquivo == NULL)
  1281. {
  1282. imprime_Erro("Erro ao abrir o arquivo!");
  1283. return;
  1284. }
  1285. if(x == 1)
  1286. {
  1287.  
  1288. imprimir_Cabecalho("PESQUISAR CONSULTA POR DATA","Digite data a ser pesquisada:");
  1289. printf("Dia:\n\t>>> ");
  1290. scanf("%d%*c",&dia);
  1291. printf("Mes:\n\t>>> ");
  1292. scanf("%d%*c",&mes);
  1293. printf("Ano:\n\t>>> ");
  1294. scanf("%d%*c",&ano);
  1295.  
  1296.  
  1297. while(fread(&Consulta,sizeof(Consulta),1,arquivo))
  1298. {
  1299. if(Consulta.dia==dia&&Consulta.mes==mes&&Consulta.ano==ano)
  1300. {
  1301. printf("\n\tCodigo medico: %d",Consulta.cod_medico);
  1302. printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
  1303. printf("\n\t Dia: %d",Consulta.dia);
  1304. printf("\n\t Mes: %d",Consulta.mes);
  1305. printf("\n\t Ano: %d",Consulta.ano);
  1306. printf("\n\t Valor: %.2f",Consulta.valor);
  1307. printf("\n\t Diagnostico: %s",Consulta.diagnostico);
  1308.  
  1309. printf("\n\t---------------------------------------------------\n");
  1310. }
  1311.  
  1312. }
  1313. }
  1314. if (x==2)
  1315. {
  1316.  
  1317. imprimir_Cabecalho("PESQUISAR POR CODIGO Medico","Digite o codigo a ser pesquisado:");
  1318. printf("\n\t>>> ");
  1319. scanf("%d%*c",&codemed);
  1320. while(fread(&Consulta,sizeof(Consulta),1,arquivo))
  1321. {
  1322. if(Consulta.cod_medico==codemed)
  1323. {
  1324. printf("\n\tCodigo medico: %d",Consulta.cod_medico);
  1325. printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
  1326. printf("\n\t Dia: %d",Consulta.dia);
  1327. printf("\n\t Mes: %d",Consulta.mes);
  1328. printf("\n\t Ano: %d",Consulta.ano);
  1329. printf("\n\t Valor: %.2f",Consulta.valor);
  1330. printf("\n\t Diagnostico: %s",Consulta.diagnostico);
  1331.  
  1332. printf("\n\t---------------------------------------------------\n");
  1333. }
  1334.  
  1335. }
  1336.  
  1337. }
  1338. if (x==3)
  1339. {
  1340.  
  1341. imprimir_Cabecalho("PESQUISAR POR CODIGO PAciente","Digite o codigo a ser pesquisado:");
  1342. printf("\n\t>>> ");
  1343. scanf("%d%*c",&codeP);
  1344. while(fread(&Consulta,sizeof(Consulta),1,arquivo))
  1345. {
  1346. if(Consulta.cod_paciente==codeP)
  1347. {
  1348. printf("\n\tCodigo medico: %d",Consulta.cod_medico);
  1349. printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
  1350. printf("\n\t Dia: %d",Consulta.dia);
  1351. printf("\n\t Mes: %d",Consulta.mes);
  1352. printf("\n\t Ano: %d",Consulta.ano);
  1353. printf("\n\t Valor: %.2f",Consulta.valor);
  1354. printf("\n\t Diagnostico: %s",Consulta.diagnostico);
  1355.  
  1356. printf("\n\t---------------------------------------------------\n");
  1357. }
  1358.  
  1359. }
  1360.  
  1361. }
  1362. fclose(arquivo);
  1363. }
  1364. void listar_Total(void)
  1365. {
  1366. FILE *arquivo;
  1367. consultas Consulta;
  1368. float Somar=0;
  1369.  
  1370. arquivo = fopen(ARQ_PAC3,"rb");
  1371. if(arquivo == NULL)
  1372. {
  1373. imprime_Erro("O arquivo nao pode ser aberto!");
  1374. return;
  1375. }
  1376. else
  1377. {
  1378.  
  1379.  
  1380. while(fread(&Consulta, sizeof(Consulta),1,arquivo) != 0)
  1381. {
  1382. Somar+=Consulta.valor;
  1383.  
  1384. printf("Consulta %d Preco: %.2f\n",Consulta.cod_consulta,Consulta.valor);
  1385. }
  1386. fclose(arquivo);
  1387. printf("Total Arrecadado: %.2f\n",Somar);
  1388.  
  1389. }
  1390. }
  1391. void listar_idades(void)
  1392. {
  1393. FILE *arquivo;
  1394. struct paciente Pacientes;
  1395.  
  1396. arquivo = fopen("Paciente.dat", "rb");
  1397. if(arquivo == NULL)
  1398. {
  1399. imprime_Erro("O arquivo nao pode ser aberto!");
  1400. return;
  1401. }
  1402. else
  1403. {
  1404. //Exibir
  1405.  
  1406. printf("EXIBINDO OS PACIENTES < 11 anos\n");
  1407. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1408. {
  1409. if(Pacientes.idade<11)
  1410. printf("Nome: %s , E-MAIL: %s\n",Pacientes.nome,Pacientes.email);
  1411. }
  1412. fclose(arquivo);
  1413.  
  1414. }
  1415.  
  1416. arquivo = fopen("Paciente.dat", "rb");
  1417. if(arquivo == NULL)
  1418. {
  1419. imprime_Erro("O arquivo nao pode ser aberto!");
  1420. return;
  1421. }
  1422. else
  1423. {
  1424. //Exibir
  1425.  
  1426. printf("EXIBINDO OS PACIENTES 11=<idade<18 anos\n");
  1427. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1428. {
  1429. if(Pacientes.idade>=11&&Pacientes.idade<18)
  1430. printf("Nome: %s , E-MAIL: %s\n",Pacientes.nome,Pacientes.email);
  1431. }
  1432. fclose(arquivo);
  1433.  
  1434. }
  1435.  
  1436. arquivo = fopen("Paciente.dat", "rb");
  1437. if(arquivo == NULL)
  1438. {
  1439. imprime_Erro("O arquivo nao pode ser aberto!");
  1440. return;
  1441. }
  1442. else
  1443. {
  1444. //Exibir
  1445.  
  1446. printf("EXIBINDO OS PACIENTES 11=<idade<18 anos\n");
  1447. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1448. {
  1449. if(Pacientes.idade>=18&&Pacientes.idade<60)
  1450. printf("Nome: %s , E-MAIL: %s\n",Pacientes.nome,Pacientes.email);
  1451. }
  1452. fclose(arquivo);
  1453.  
  1454. }
  1455.  
  1456. arquivo = fopen("Paciente.dat", "rb");
  1457. if(arquivo == NULL)
  1458. {
  1459. imprime_Erro("O arquivo nao pode ser aberto!");
  1460. return;
  1461. }
  1462. else
  1463. {
  1464. //Exibir
  1465.  
  1466. printf("EXIBINDO OS PACIENTES 11=<idade<18 anos\n");
  1467. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1468. {
  1469. if(Pacientes.idade>=60)
  1470. printf("Nome: %s , E-MAIL: %s\n",Pacientes.nome,Pacientes.email);
  1471. }
  1472. fclose(arquivo);
  1473.  
  1474. }
  1475.  
  1476.  
  1477.  
  1478. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement