Advertisement
Guest User

Untitled

a guest
Jul 6th, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 57.23 KB | None | 0 0
  1.  
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. #include<ctype.h>
  6. #define ARQ_PAC "Paciente.dat"
  7. #define ARQ_PAC2 "Medico.dat"
  8. #define ARQ_PAC3 "Consulta.dat"
  9.  
  10.  
  11. struct paciente
  12. {
  13. char nome[80];
  14. char email[50];
  15. char fone[20];
  16. char endereco[50];
  17. int idade;
  18. int cod_paciente;
  19. };
  20.  
  21. struct medico
  22. {
  23. char nome[80];
  24. char email[50];
  25. char fone[20];
  26. char endereco[50];
  27. char especialidade [30];
  28. int idade;
  29. int cod_medico;
  30. float salario;
  31. };
  32.  
  33. struct consultas
  34. {
  35. int cod_consulta;
  36. int cod_medico;
  37. int cod_paciente;
  38. int dia;
  39. int mes;
  40. int ano;
  41. float valor;
  42. char diagnostico[100];
  43. };
  44.  
  45. typedef struct paciente Pacientes;
  46. typedef struct medico Medico;
  47. typedef struct consultas Consultas;
  48.  
  49. int menu_Principal();
  50. int menu_Inserir();
  51. int menu_Pesquisar();
  52. int menu_Relatorios();
  53. int menu_Alterar();
  54. int menu_Excluir();
  55. void imprimir_Titulo(void);
  56. void imprimir_Cabecalho(char *titulo, char *mensagem);
  57. void imprime_Erro( char *mensagem);
  58. void imprimir_Paciente (struct paciente Pacientes);
  59. void imprimir_Medico (struct medico Medico);
  60. void imprimir_Consulta (struct consultas Consultas);
  61. void finalizar(void);
  62. int validar_Nome(char *nome);
  63. int validar_Endereco(char *endereco);
  64. int validar_Email(char *email);
  65. int validar_Idade(int idade);
  66. int validar_Salario(float salario);
  67. int validar_Telefone(char *fone);
  68. int validar_Data(int dia, int mes, int ano);
  69. int validar_Valor(float valor);
  70. void cadastrar_Paciente();
  71. void cadastrar_Medico();
  72. void cadastrar_Consulta();
  73. void pesquisar_Paciente(int x);
  74. void pesquisar_Medico (int x);
  75. void pesquisar_Consulta(int x);
  76. void passa_Minusculo(char *texto);
  77. void listar_Pacientes(void);
  78. void listar_Medicos(void);
  79. void listar_Total(void);
  80. void listar_idades(void);
  81. void deletar_medico(void);
  82. void deletar_paciente(void);
  83. void deletar_consulta(void);
  84. void alterar_medico(void);
  85. void alterar_paciente(void);
  86. void alterar_consulta(void);
  87.  
  88. int main ()
  89. {
  90. int op;
  91. //Limpa do diretório arquivos temporários
  92. system("rm *~");
  93. do
  94. {
  95. op = menu_Principal();
  96.  
  97. switch(op)
  98. {
  99. case 1://Inserir
  100. {
  101. menu_Inserir();
  102. }
  103. break;
  104. case 2://Pesquisar
  105. {
  106. menu_Pesquisar();
  107. }
  108. break;
  109. case 3://Alterar
  110. {
  111. menu_Alterar();
  112. }
  113. break;
  114. case 4://Excluir
  115. {
  116. menu_Excluir();
  117. }
  118. break;
  119. case 5: //Exibir relatórios
  120. {
  121. menu_Relatorios();
  122. }
  123. break;
  124. case 6:
  125. {
  126. finalizar();
  127. }
  128. break;
  129.  
  130. }//Fim do switch
  131. if(op != 6)
  132. {
  133. printf("\n\t------------------------------------------------\n\tDigite enter para voltar ao menu principal!\n\t------------------------------------------------\n\t");
  134. getchar();
  135. }
  136. }
  137. while (op!=6);
  138. }
  139.  
  140. int menu_Principal ()
  141. {
  142. int op;
  143. imprimir_Titulo();
  144.  
  145. //Validar a entrada de opcoes
  146. do
  147. {
  148. printf("\n\n\t\t1- Cadastrar");
  149. printf("\n\t\t2- Pesquisar");
  150. printf("\n\t\t3- Alterar cadastro");
  151. printf("\n\t\t4- Excluir cadastro");
  152. printf("\n\t\t5- Exibir relatorios");
  153. printf("\n\t\t6- Sair do sistema");
  154. printf("\n\n\tDigite a opcao desejada: ");
  155. scanf("%d%*c", &op);
  156. if (op<1 || op>6)
  157. {
  158. imprime_Erro("Opcao invalida! Escolha uma opcao de 1 a 6");
  159. }
  160. }
  161. while (op<1 || op>6);
  162.  
  163. return op;
  164. }
  165.  
  166. int menu_Inserir ()
  167. {
  168. int op;
  169. imprimir_Titulo();
  170.  
  171. //Validar a entrada de opcoes
  172. do
  173. {
  174. printf("\n\n\t\t1- Cadastrar pacientes");
  175. printf("\n\t\t2- Cadastrar medicos");
  176. printf("\n\t\t3- Cadastrar consultas");
  177. printf("\n\t\t4- Voltar ao menu principal");
  178. printf("\n\n\tDigite a opcao desejada: ");
  179. scanf("%d%*c", &op);
  180.  
  181. switch (op)
  182. {
  183. case 1: //Cadastrar pacientes
  184. {
  185. cadastrar_Paciente();
  186. }
  187. break;
  188. case 2: //Cadastrar medicos
  189. {
  190. cadastrar_Medico();
  191. }
  192. break;
  193. case 3: //Cadastrar consultas
  194. {
  195. cadastrar_Consulta();
  196. }
  197. break;
  198. case 4:
  199. {
  200. }//Retornar ao menu principal
  201. break;
  202. default:
  203. imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
  204. }
  205. }
  206. while (op<1 || op>4);
  207.  
  208. return op;
  209. }
  210.  
  211. int menu_Pesquisar ()
  212. {
  213. int op;
  214. imprimir_Titulo();
  215.  
  216. //Validar a entrada de opcoes
  217. do
  218. {
  219. printf("\n\n\t\t1- Pesquisar pacientes");
  220. printf("\n\t\t2- Pesquisar medicos");
  221. printf("\n\t\t3- Pesquisar consultas");
  222. printf("\n\t\t4- Retornar ao menu principal");
  223. printf("\n\n\tDigite a opcao desejada: ");
  224. scanf("%d%*c", &op);
  225.  
  226. switch (op)
  227. {
  228. case 1: //Pesquisar paciente
  229. {
  230.  
  231. imprimir_Titulo();
  232.  
  233. printf("\n\n\t\t1- Pesquisar por nome");
  234. printf("\n\t\t2- Pesquisar por codigo");
  235. printf("\n\t\t3- Retornar ao menu principal");
  236. printf("\n\n\tDigite a opcao desejada: ");
  237. scanf("%d%*c",&op);
  238.  
  239. switch(op)
  240. {
  241. case 1: //pesquisa por nome
  242. {
  243. pesquisar_Paciente(1);
  244. }
  245. break;
  246. case 2: //parametro 2 pesquisa por codigo
  247. {
  248. pesquisar_Paciente(2);
  249. }
  250. break;
  251. case 3:
  252. {
  253.  
  254. }
  255. break;
  256. default:
  257. imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 3");
  258. }
  259. }
  260. break;
  261.  
  262. case 2: //Pesquisar medicos
  263. {
  264.  
  265. imprimir_Titulo();
  266.  
  267. printf("\n\n\t\t1- Pesquisar por nome");
  268. printf("\n\t\t2- Pesquisar por codigo");
  269. printf("\n\t\t3- Pesquisar por especialidade");
  270. printf("\n\t\t4- Retornar ao menu principal");
  271. printf("\n\n\tDigite a opcao desejada: ");
  272. scanf("%d%*c",&op);
  273.  
  274. switch(op)
  275. {
  276. case 1: //Parametro 1 pesquisa por nome
  277. {
  278. pesquisar_Medico(1);
  279. }
  280. break;
  281. case 2: //Parametro 2 pesquisa por codigo
  282. {
  283. pesquisar_Medico(2);
  284. }
  285. break;
  286. case 3: //Parametro 3 pesquisa por especialidade
  287. {
  288. pesquisar_Medico(3);
  289. }
  290. break;
  291. case 4:
  292. {
  293. }
  294. break;
  295. default:
  296. imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
  297. }
  298. }
  299. break;
  300.  
  301. case 3: //Pesquisar consultas
  302. {
  303.  
  304. imprimir_Titulo();
  305.  
  306. printf("\n\n\t\t1- Pesquisar por data");
  307. printf("\n\t\t2- Pesquisar por medico");
  308. printf("\n\t\t3- Pesquisar por paciente");
  309. printf("\n\t\t4- Retornar ao menu principal");
  310. printf("\n\n\tDigite a opcao desejada: ");
  311. scanf("%d%*c",&op);
  312.  
  313. switch(op)
  314. {
  315. case 1: //Parametro 1 pesquisa por data
  316. //pesquisa por data
  317. pesquisar_Consulta(1);
  318. break;
  319.  
  320. case 2://parametro 2 pesquisa por medico
  321. pesquisar_Consulta(2);
  322. break;
  323.  
  324. case 3://parametro 3 pesquisa por paciente
  325. pesquisar_Consulta(3);
  326. break;
  327. case 4:
  328. break;
  329.  
  330. default:
  331. imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
  332. }
  333. }
  334. break;
  335. case 4: //Retornar ao menu principal
  336. break;
  337. default:
  338. imprime_Erro("\t\tOpcao invalida!\n\tEscolha uma opcao de 1 a 4");
  339. }
  340. }
  341. while (op<1 || op>4);
  342.  
  343. return op;
  344. }
  345.  
  346. int menu_Relatorios ()
  347. {
  348. int op;
  349. imprimir_Titulo();
  350.  
  351. //Validar a entrada de opcoes
  352. do
  353. {
  354. printf("\n\n\t\t1- Lista de todos os pacientes");
  355. printf("\n\t\t2- Lista de todos os medicos");
  356. printf("\n\t\t3- Lista do total arrecado por consultas");
  357. printf("\n\t\t4- Lista de pacientes separados por idade");
  358. printf("\n\t\t5- Retornar ao menu principal");
  359. printf("\n\n\tDigite a opcao desejada: ");
  360. scanf("%d%*c", &op);
  361.  
  362. switch (op)
  363. {
  364. case 1:
  365. {
  366. listar_Pacientes();
  367. }
  368. break;
  369. case 2:
  370. {
  371. listar_Medicos();
  372. }
  373. break;
  374. case 3:
  375. {
  376. listar_Total();
  377. }
  378. break;
  379. case 4:
  380. {
  381. listar_idades();
  382. }
  383. break;
  384. case 5:
  385. {
  386.  
  387. }
  388. break;
  389. default:
  390. imprime_Erro("Opcao invalida. Escolha de 1 a 5");
  391. }
  392. }
  393. while (op<1 || op>5);
  394. return op;
  395. }
  396.  
  397. int menu_Alterar ()
  398. {
  399. int op;
  400. imprimir_Titulo();
  401.  
  402. //Validar a entrada de opcoes
  403. do
  404. {
  405. printf("\n\n\t\t1- Alterar dados de pacientes");
  406. printf("\n\t\t2- Alterar dados de medicos");
  407. printf("\n\t\t3- Alterar consultas");
  408. printf("\n\t\t4- Retornar ao menu principal");
  409. printf("\n\n\tDigite a opcao desejada: ");
  410. scanf("%d%*c", &op);
  411.  
  412. switch (op)
  413. {
  414. case 1:
  415. {
  416. alterar_paciente();
  417. }
  418. break;
  419.  
  420. case 2:
  421. {
  422. alterar_medico();
  423. }
  424. break;
  425.  
  426. case 3:
  427. {
  428. alterar_consulta();
  429. }
  430. break;
  431.  
  432. case 4://retornar ao menu principal
  433. {
  434.  
  435. }
  436. break;
  437. default:
  438. imprime_Erro("Digite uma opcao de 1 a 4.");
  439. }
  440. }
  441. while (op<1 || op>4);
  442. return op;
  443. }
  444.  
  445. int menu_Excluir()
  446. {
  447. int op;
  448. imprimir_Titulo();
  449.  
  450. //Validar a entrada de opcoes
  451. do
  452. {
  453. printf("\n\n\t\t1- Excluir pacientes");
  454. printf("\n\t\t2- Excluir medicos");
  455. printf("\n\t\t3- Excluir consultas");
  456. printf("\n\t\t4- Retornar ao menu principal");
  457. printf("\n\n\tDigite a opcao desejada: ");
  458. scanf("%d%*c", &op);
  459.  
  460. switch (op)
  461. {
  462. case 1://Excluir pacientes
  463. {
  464. deletar_paciente();
  465. }
  466. break;
  467.  
  468. case 2://Excluir medicos
  469. {
  470. deletar_medico();
  471.  
  472. }
  473. break;
  474.  
  475. case 3://excluir consultas
  476. {
  477. deletar_consulta();
  478. }
  479. break;
  480.  
  481. case 4://Retornar ao menu principal
  482. {
  483.  
  484. }
  485. break;
  486. default:
  487. imprime_Erro("Digite uma opcao de 1 a 4.");
  488. }
  489. }
  490. while (op<1 || op>4);
  491. return op;
  492. }
  493.  
  494. void imprimir_Titulo(void)
  495. {
  496. system("clear || cls");
  497. printf("\n\n\t------------------------------------------------\n\n\t\t\t CLINICA MEDICA \n\n\t------------------------------------------------");
  498. }
  499.  
  500. void imprimir_Cabecalho(char *titulo, char *mensagem)
  501. {
  502. imprimir_Titulo();
  503. printf("\n\n\t------------------------------------------------\n\t\t %s \n\t------------------------------------------------\n\n\t%s\n", titulo, mensagem);
  504. }
  505.  
  506. void imprime_Erro( char *mensagem)
  507. {
  508. imprimir_Titulo();
  509.  
  510. printf("\n\n\t------------------------------------------------\n\t\t\t \tERRO \n\t------------------------------------------------\n\t%s\n\t\tDigite corretamente desta vez!\n\t------------------------------------------------\n", mensagem);
  511. }
  512.  
  513. void finalizar(void)
  514. {
  515. imprimir_Titulo();
  516. printf("\n\n\t------------------------------------------------\n\t\t\t PROGRAMA ENCERRADO !!! \n\t------------------------------------------------\n\n\n\t");
  517. }
  518.  
  519. int validar_Nome(char *nome)
  520. {
  521. //O nome não pode começar com espaço em branco e deve conter pelo menos 3 caracteres
  522. int valor=0; //retorna 0 caso não tenha cometido erro na entrada do nome
  523.  
  524. if(isspace(nome[0]))
  525. {
  526. imprime_Erro("\t\tNome invalido!\n\tO nome nao pode começar com espaço em branco.");
  527. valor = 1;
  528. }
  529. else if(strlen(nome) < 3)
  530. {
  531. imprime_Erro("\t\tNome invalido!\n\tO nome deve possuir pelo menos 3 caracteres.");
  532. valor = 1;
  533. }
  534. return valor;
  535. }
  536.  
  537. int validar_Endereco (char *endereco)
  538. {
  539. //O endereço não pode começar com espaço em branco
  540. int valor=0; //retorna 0 caso não tenha cometido erro na entrada do endereco
  541.  
  542. if(isspace(endereco[0]))
  543. {
  544. imprime_Erro("\t\tEndereco invalido!\n\tO endereco nao pode começar com espaço em branco.");
  545. valor = 1;
  546. }
  547. return valor;
  548. }
  549.  
  550. int validar_Email(char *email)
  551. {
  552. //O email deve conter o caractere @ em alguma parte do email e possuir pelo menos 10 caracteres
  553. int valor=0; //retorna 0 caso não tenha cometido erro na entrada do email
  554.  
  555. if(strchr(email, '@') == NULL )
  556. {
  557. imprime_Erro("\t\tE-mail invalido!\n\tO e-mail deve conter o caractere @.");
  558. valor = 1;
  559. }
  560. else if(strlen(email) < 10)
  561. {
  562. imprime_Erro("\t\tE-mail invalido!\n\tO nome deve possuir pelo menos 10 caracteres.");
  563. valor = 1;
  564. }
  565. return valor;
  566. }
  567.  
  568. int validar_Idade(int idade)
  569. {
  570. int valor=0;
  571. //A idade deve estar compreendida entre 1 e 110 anos.
  572.  
  573. if(idade<1||idade>110)
  574. {
  575. imprime_Erro("\t\tIdade invalida!\n\tA idade deve estar compreendida entre 1 e 110 anos.");
  576. valor = 1;
  577. }
  578. return valor;
  579. }
  580.  
  581. int validar_Salario(float salario)
  582. {
  583. int valor=0;
  584. //O salario tem que ser maior que R$0,00
  585.  
  586. if(salario<=0)
  587. {
  588. imprime_Erro("\t\tSalario invalido!\n\tO salario nao pode ser menor ou igual a R$0,00.");
  589. valor = 1;
  590. }
  591.  
  592. return valor;
  593. }
  594.  
  595. int validar_Telefone(char *fone)
  596. {
  597. /*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
  598. */
  599. int valor=0, valida = 1;
  600.  
  601. int t,i;
  602. valida = 1;
  603. t = strlen(fone);
  604. for (i = 0; i < t; i++)
  605. {
  606. if(strchr("0123456789",fone[i] ) == NULL)
  607. {
  608. imprime_Erro("\t\tTelefone invalido!\n\tO telefone não pode conter caracteres nao numericos!");
  609. valida = 0;
  610. valor =1;
  611. break;
  612. }
  613. }
  614. if(valida!= 0 && t != 10 && t != 11)
  615. {
  616. imprime_Erro("\t\tTelefone invalido!\n\tO telefone deve conter entre 10 e 11 digitos com DDD.");
  617. valida = 0;
  618. valor = 1;
  619. }
  620. return valor; //retorna 0 caso não tenha cometido erro na entrada do telefone
  621. }
  622.  
  623. int validar_Data(int dia, int mes, int ano)
  624. {
  625. if ((dia >= 1 && dia <= 31) && (mes >= 1 && mes <= 12) && (ano >= 1900 && ano <= 2100)) //verifica se os numeros sao validos
  626. {
  627. if ((dia == 29 && mes == 2) && ((ano % 4) == 0)) //verifica se o ano e bissexto
  628. {
  629. return 1;
  630. }
  631. if (dia <= 28 && mes == 2) //verifica o mes de feveireiro
  632. {
  633. return 1;
  634. }
  635. if ((dia <= 30) && (mes == 4 || mes == 6 || mes == 9 || mes == 11)) //verifica os meses de 30 dias
  636. {
  637. return 1;
  638. }
  639. if ((dia <=31) && (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes ==8 || mes == 10 || mes == 12)) //verifica os meses de 31 dias
  640. {
  641. return 1;
  642. }
  643. else
  644. {
  645. return 0;
  646. }
  647. }
  648. else
  649. {
  650. return 0; //retorna 0 se for invalido
  651. }
  652. }
  653.  
  654. int validar_Valor(float valor)
  655. {
  656. int aux=0;
  657. if (valor<=0)
  658. {
  659. imprime_Erro("Valor da consulta invalido");
  660. aux=1;
  661. }
  662. return aux;
  663. }
  664.  
  665. void cadastrar_Paciente()
  666. {
  667. Pacientes ultimo_paciente;
  668. Pacientes paciente_atual;
  669. FILE *arquivo;
  670.  
  671. imprimir_Titulo();
  672. imprimir_Cabecalho("CADASTRO DE PACIENTES","Digite os seguintes dados:");
  673.  
  674. //Entrada de nome válido
  675. do
  676. {
  677. printf("\n\n\tNome: ");
  678. scanf("%[^\n]%*c",paciente_atual.nome);
  679. }
  680. while (validar_Nome(paciente_atual.nome)==1);
  681.  
  682. //Entrada de email válido
  683. do
  684. {
  685. printf("\n\tE-mail: ");
  686. scanf("%[^\n]%*c",paciente_atual.email);
  687. }
  688. while (validar_Email(paciente_atual.email)==1);
  689.  
  690. //Entrada de telefone valido
  691. do
  692. {
  693. printf("\n\tDDD + num telefone: ");
  694. scanf("%[^\n]%*c",paciente_atual.fone);
  695. }
  696. while (validar_Telefone(paciente_atual.fone)==1);
  697.  
  698. //Entrada de endereço válido
  699. do{
  700. printf("\n\tEndereco: ");
  701. scanf("%[^\n]%*c",paciente_atual.endereco);
  702. }while (validar_Endereco(paciente_atual.endereco)==1);
  703.  
  704. //Entrada de idade valida
  705. do
  706. {
  707. printf("\n\tIdade: ");
  708. scanf("%d%*c",&paciente_atual.idade);
  709. }
  710. while (validar_Idade(paciente_atual.idade)==1);
  711.  
  712. arquivo = fopen(ARQ_PAC,"a+b");
  713. if(arquivo != NULL)
  714. {
  715. //Pula pro ultimo registro do arquivo
  716. fseek(arquivo,0,SEEK_END);
  717. //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
  718. if(ftell(arquivo) == 0)
  719. {
  720. paciente_atual.cod_paciente = 1;
  721. }
  722. else
  723. {
  724. fseek(arquivo,-sizeof(Pacientes),SEEK_END);
  725. //Le o ultimo paciente
  726. fread(&ultimo_paciente,sizeof(Pacientes),1,arquivo);
  727. //Pega o ultimo codigo e soma +1
  728. paciente_atual.cod_paciente = ultimo_paciente.cod_paciente + 1;
  729. }
  730. fseek(arquivo,0,SEEK_END);
  731. fseek(arquivo,-(sizeof(Pacientes)),SEEK_END);
  732. fwrite(&paciente_atual,sizeof(Pacientes),1,arquivo);
  733. imprimir_Cabecalho("CADASTRO DE PACIENTES","Cadastro realizado com sucesso!");
  734.  
  735. //Imprimir o cadastro do paciente
  736.  
  737. printf("\n\tCodigo: %d",paciente_atual.cod_paciente);
  738. printf("\n\tNome: %s",paciente_atual.nome);
  739. printf("\n\tEmail: %s",paciente_atual.email);
  740. printf("\n\tTelefone: %s",paciente_atual.fone);
  741. printf("\n\tEndereco: %s",paciente_atual.endereco);
  742. printf("\n\tIdade: %d",paciente_atual.idade);
  743. printf("\n\n\t-------------------------------------------------\n\n");
  744.  
  745. fclose(arquivo);
  746. }
  747. else
  748. {
  749. imprimir_Cabecalho("CADASTRO DE PACIENTES","Cadastro nao realizado!");
  750. }
  751. }
  752.  
  753. void imprimir_Paciente (struct paciente Pacientes)
  754. {
  755. printf("\n\tCodigo: %d",Pacientes.cod_paciente);
  756. printf("\n\tNome: %s",Pacientes.nome);
  757. printf("\n\tEmail: %s",Pacientes.email);
  758. printf("\n\tTelefone: %s",Pacientes.fone);
  759. printf("\n\tEndereco: %s",Pacientes.endereco);
  760. printf("\n\tIdade: %d",Pacientes.idade);
  761. printf("\n\n\t-------------------------------------------------\n\n");
  762. }
  763.  
  764. void imprimir_Medico (struct medico Medico)
  765. {
  766. printf("\n\tCodigo: %d\n\t",Medico.cod_medico);
  767. printf("Nome: %s\n\t",Medico.nome);
  768. printf("Email: %s\n\t",Medico.email);
  769. printf("Telefone: %s\n\t",Medico.fone);
  770. printf("Endereco: %s\n\t",Medico.endereco);
  771. printf("Especialidade: %s\n\t",Medico.especialidade);
  772. printf("Salario: %.2f\n\t",Medico.salario);
  773. printf("\n\n\t-------------------------------------------------\n\n");
  774. }
  775.  
  776. void imprimir_Consulta (struct consultas Consultas)
  777. {
  778. printf("\n\tCodigo medico: %d",Consultas.cod_medico);
  779. //printf("\n\tNome do medico: %s", Consultas.nome);
  780. printf("\n\tCodigo paciente: %d",Consultas.cod_paciente);
  781. //printf("\n\tNome do paciente: %s", Consultas.nome);
  782. printf("\n\t Data: %d\\%d\\%d",Consultas.dia, Consultas.mes,Consultas.ano);
  783. printf("\n\t Valor: %.2f",Consultas.valor);
  784. printf("\n\t Diagnostico: %s",Consultas.diagnostico);
  785. printf("\n\n\t---------------------------------------------------\n");
  786. }
  787.  
  788. void cadastrar_Medico()
  789. {
  790. Medico ultimo_medico;
  791. Medico medico_atual;
  792. FILE *arquivo;
  793.  
  794. imprimir_Titulo();
  795. imprimir_Cabecalho("CADASTRO DE MEDICOS","Digite os seguintes dados:");
  796.  
  797. //Entrada de nome válido
  798. do
  799. {
  800. printf("\n\n\tNome: ");
  801. scanf("%[^\n]%*c",medico_atual.nome);
  802. }
  803. while (validar_Nome(medico_atual.nome)==1);
  804.  
  805. //Entrada de email válido
  806. do
  807. {
  808. printf("\n\tE-mail: ");
  809. scanf("%[^\n]%*c",medico_atual.email);
  810. }
  811. while (validar_Email(medico_atual.email)==1);
  812.  
  813. //Entrada de telefone valido
  814. do
  815. {
  816. printf("\n\tDDD + num telefone: ");
  817. scanf("%[^\n]%*c",medico_atual.fone);
  818. }
  819. while (validar_Telefone(medico_atual.fone)==1);
  820.  
  821. //Entrada de endereço válido
  822. do{
  823. printf("\n\tEndereco: ");
  824. scanf("%[^\n]%*c",medico_atual.endereco);
  825. }while (validar_Endereco(medico_atual.endereco)==1);
  826.  
  827. //Entrada de especialidade
  828. int op;
  829. do
  830. {
  831. printf("\n\tEspecialidades:");
  832. printf("\n\t1- Clinica Geral");
  833. printf("\n\t2- Ortopedia");
  834. printf("\n\t3- Geriatria");
  835. printf("\n\t4- Pediatria");
  836. printf("\n\t5- Infectologia");
  837. printf("\n\t6- Neurologia");
  838. printf("\n\t7- Cardiologia");
  839. printf("\n\t8- Ginecologia");
  840. printf("\n\t9- Oftalmologia");
  841. printf("\n\t10- Psiquiatria");
  842. printf("\n\tEscolha uma opcao: ");
  843. scanf("%d%*c", &op);
  844.  
  845. switch (op)
  846. {
  847. case 1:
  848. {
  849. strcpy(medico_atual.especialidade,"Clinica Geral");
  850. }
  851. break;
  852. case 2:
  853. {
  854. strcpy(medico_atual.especialidade,"Ortopedia");
  855. }
  856. break;
  857. case 3:
  858. {
  859. strcpy(medico_atual.especialidade,"Geriatria");
  860. }
  861. break;
  862. case 4:
  863. {
  864. strcpy(medico_atual.especialidade,"Pediatria");
  865. }
  866. break;
  867. case 5:
  868. {
  869. strcpy(medico_atual.especialidade,"Infectologia");
  870. }
  871. break;
  872. case 6:
  873. {
  874. strcpy(medico_atual.especialidade,"Neurologia");
  875. }
  876. break;
  877. case 7:
  878. {
  879. strcpy(medico_atual.especialidade,"Cardiologia");
  880. }
  881. break;
  882. case 8:
  883. {
  884. strcpy(medico_atual.especialidade,"Ginecologia");
  885. }
  886. break;
  887. case 9:
  888. {
  889. strcpy(medico_atual.especialidade,"Oftalmologia");
  890. }
  891. break;
  892. case 10:
  893. {
  894. strcpy(medico_atual.especialidade,"Psiquiatria");
  895. }
  896. break;
  897. default:
  898. {
  899. imprime_Erro("Opcao invalida. Escolha de 1 a 10");
  900. }
  901. }
  902. }
  903. while (op<1||op>10);
  904.  
  905. //Entrada de salario valida
  906. do
  907. {
  908. printf("\n\tSalario: ");
  909. scanf("%f%*c",&medico_atual.salario);
  910. }
  911. while (validar_Salario(medico_atual.salario)==1);
  912.  
  913. arquivo = fopen(ARQ_PAC2,"a+b");
  914. if(arquivo != NULL)
  915. {
  916. //Pula pro ultimo registro do arquivo
  917. fseek(arquivo,0,SEEK_END);
  918. //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
  919. if(ftell(arquivo) == 0)
  920. {
  921. medico_atual.cod_medico = 1;
  922. }
  923. else
  924. {
  925. fseek(arquivo,-sizeof(Medico),SEEK_END);
  926. //Le o ultimo paciente
  927. fread(&ultimo_medico,sizeof(Medico),1,arquivo);
  928. //Pega o ultimo codigo e soma +1
  929. medico_atual.cod_medico = ultimo_medico.cod_medico + 1;
  930. }
  931.  
  932.  
  933. //Após ter todos os dados validados, armazenar no arquivo
  934. fseek(arquivo,0,SEEK_END);
  935. fwrite(&medico_atual,sizeof(Medico),1,arquivo);
  936. imprimir_Cabecalho("CADASTRO DE MEDICOS","Cadastro realizado com sucesso!");
  937.  
  938. //Imprimir o cadastro do medico
  939.  
  940. printf("\n\tCodigo: %d\n\t",medico_atual.cod_medico);
  941. printf("Nome: %s\n\t",medico_atual.nome);
  942. printf("Email: %s\n\t",medico_atual.email);
  943. printf("Telefone: %s\n\t",medico_atual.fone);
  944. printf("Endereco: %s\n\t",medico_atual.endereco);
  945. printf("Especialidade: %s\n\t",medico_atual.especialidade);
  946. printf("Salario: %.2f\n\t",medico_atual.salario);
  947.  
  948. fclose(arquivo);
  949. }
  950. else
  951. {
  952. imprimir_Cabecalho("CADASTRO DE MEDICOS","Cadastro nao realizado!");
  953. }
  954. }
  955.  
  956. void cadastrar_Consulta()
  957. {
  958. Consultas ultima_consulta;
  959. Consultas consulta_atual;
  960. struct paciente Paciente;
  961. struct medico Medico;
  962. FILE *arquivo;
  963. FILE *arquivo1;
  964. FILE *arquivo2;
  965. int codeP;
  966. int codemed;
  967. int continuar;
  968.  
  969. imprimir_Titulo();
  970. imprimir_Cabecalho("CADASTRO DE CONSULTAS","Digite os seguintes dados:");
  971.  
  972. //Verificar se existe pelo menos 1 medico e 1 paciente cadastrado
  973.  
  974.  
  975. //Entrada do codigo do paciente (Buscar o cadastro pelo codigo)
  976. printf("\n\n\tDigite o codigo do paciente: ");
  977. scanf("%d%*c", &codeP);
  978. continuar=0;
  979. arquivo1 = fopen(ARQ_PAC,"a+b");
  980. //percorre arquivo
  981. while(fread(&Paciente, sizeof(Paciente),1,arquivo1) != 0)
  982. {
  983. if(Paciente.cod_paciente==codeP)
  984. continuar=1;
  985.  
  986. }
  987. fclose(arquivo1);
  988. if(continuar==0) //verifica se o paciente esta cadastrado
  989. {
  990. imprime_Erro("Nao ha pacientes cadastrados!");
  991. return;
  992. }
  993.  
  994.  
  995. //Entrada do codigo do medico (Buscar o cadastro pelo codigo)
  996. printf("\n\tDigite o codigo do medico: ");
  997. scanf("%d%*c", &codemed);
  998. continuar=0;
  999. arquivo2 = fopen(ARQ_PAC2,"a+b");
  1000. while(fread(&Medico, sizeof(Medico),1,arquivo1) != 0)
  1001. {
  1002. if(Medico.cod_medico==codemed)
  1003. continuar=1;
  1004. }
  1005. fclose(arquivo2);
  1006. if(continuar==0) //verifica se o medico esta cadastrado
  1007. {
  1008. imprime_Erro("Nao ha medicos cadastrados!");
  1009. return;
  1010. }
  1011.  
  1012. //Entrada de data valida recebe os codigos
  1013.  
  1014. consulta_atual.cod_medico=codemed;
  1015. consulta_atual.cod_paciente=codeP;
  1016.  
  1017. do
  1018. {
  1019. printf("\n\tDigite a data:\n\t\tDia: ");
  1020. scanf("%d", &consulta_atual.dia);
  1021. printf("\n\t\tMes: ");
  1022. scanf("%d", &consulta_atual.mes);
  1023. printf("\n\t\tAno: ");
  1024. scanf("%d", &consulta_atual.ano);
  1025. if (validar_Data(consulta_atual.dia, consulta_atual.mes, consulta_atual.ano)==0)
  1026. imprime_Erro("Data invalida!");
  1027. }
  1028. while (validar_Data(consulta_atual.dia, consulta_atual.mes, consulta_atual.ano)==0);
  1029.  
  1030. //Entrada de diagnostico
  1031. int op;
  1032. do
  1033. {
  1034. printf("\n\tDiagnosticos: ");
  1035. printf("\n\t1- Asma");
  1036. printf("\n\t2- Eplepsia");
  1037. printf("\n\t3- Transtorno de Ansiedade");
  1038. printf("\n\t4- Isuficiencia Cardiaca");
  1039. printf("\n\t5- Ulcera");
  1040. printf("\n\t6- Febre Reumatica");
  1041. printf("\n\t7- Diabetes");
  1042. printf("\n\t8- Infeccao Generalizada");
  1043. printf("\n\t9- Catarata");
  1044. printf("\n\t10- Endometriose");
  1045. printf("\n\tEscolha a opcao desejada: ");
  1046. scanf("%d%*c", &op);
  1047. switch (op)
  1048. {
  1049. case 1:
  1050. {
  1051. strcpy(consulta_atual.diagnostico,"Asma");
  1052. }
  1053. break;
  1054. case 2:
  1055. {
  1056. strcpy(consulta_atual.diagnostico,"Eplepsia");
  1057. }
  1058. break;
  1059. case 3:
  1060. {
  1061. strcpy(consulta_atual.diagnostico,"Transtorno de Ansiedade");
  1062. }
  1063. break;
  1064. case 4:
  1065. {
  1066. strcpy(consulta_atual.diagnostico,"Insuficiencia Cardiaca");
  1067. }
  1068. break;
  1069. case 5:
  1070. {
  1071. strcpy(consulta_atual.diagnostico,"Ulcera");
  1072. }
  1073. break;
  1074. case 6:
  1075. {
  1076. strcpy(consulta_atual.diagnostico,"Febre Reumatica");
  1077. }
  1078. break;
  1079. case 7:
  1080. {
  1081. strcpy(consulta_atual.diagnostico,"Diabetes");
  1082. }
  1083. break;
  1084. case 8:
  1085. {
  1086. strcpy(consulta_atual.diagnostico,"Infeccao Generalizada");
  1087. }
  1088. break;
  1089. case 9:
  1090. {
  1091. strcpy(consulta_atual.diagnostico,"Catarata");
  1092. }
  1093. break;
  1094. case 10:
  1095. {
  1096. strcpy(consulta_atual.diagnostico,"Endometriose");
  1097. }
  1098. break;
  1099. default:
  1100. imprime_Erro("Opcao invalida. Escolha de 1 a 10");
  1101. }
  1102. }
  1103. while (op<1||op>10);
  1104.  
  1105. //Entrada de valor valido
  1106. do
  1107. {
  1108. printf("\n\tValor da consulta: ");
  1109. scanf("%f%*c", &consulta_atual.valor);
  1110. }
  1111. while (validar_Valor(consulta_atual.valor)==1);
  1112.  
  1113. arquivo = fopen(ARQ_PAC3,"a+b");
  1114. if(arquivo != NULL)
  1115. {
  1116. //Pula pro ultimo registro do arquivo
  1117. fseek(arquivo,0,SEEK_END);
  1118.  
  1119.  
  1120. //Verifica se existe alguem cadastrado, se não tiver entao o id é o primeiro
  1121. if(ftell(arquivo) == 0)
  1122. {
  1123. consulta_atual.cod_consulta = 1;
  1124. }
  1125. else
  1126. {
  1127. fseek(arquivo,-sizeof(Consultas),SEEK_END);
  1128. //Le o ultimo paciente
  1129. fread(&ultima_consulta,sizeof(Consultas),1,arquivo);
  1130. //Pega o ultimo codigo e soma +1
  1131. consulta_atual.cod_consulta = ultima_consulta.cod_consulta + 1;
  1132. }
  1133. /*
  1134.  
  1135.  
  1136. */
  1137. fseek(arquivo,0,SEEK_END);
  1138. fseek(arquivo,-(sizeof(Consultas)),SEEK_END);
  1139. fwrite(&consulta_atual,sizeof(Consultas),1,arquivo);
  1140. imprimir_Cabecalho("CADASTRO DE CONSULTAS","Cadastro realizado com sucesso!");
  1141.  
  1142. //Imprimir o cadastro da consulta
  1143.  
  1144. printf("\n\tCodigo da consulta: %d",consulta_atual.cod_consulta);
  1145. printf("\n\tData: %d\\%d\\%d", consulta_atual.dia,consulta_atual.mes,consulta_atual.ano);
  1146. printf("\n\tValor da consulta: %.2f", consulta_atual.valor);
  1147. printf("\n\tDiagnostico: %s", consulta_atual.diagnostico);
  1148. printf("\n\n\t-------------------------------------------------\n\n");
  1149.  
  1150. fclose(arquivo);
  1151. }
  1152. else
  1153. {
  1154. imprimir_Cabecalho("CADASTRO DE CONSULTAS","Cadastro nao realizado!");
  1155. }
  1156. }
  1157.  
  1158. void pesquisar_Paciente (int x)
  1159. {
  1160. struct paciente Pacientes;
  1161. FILE *arquivo;
  1162.  
  1163. arquivo = fopen(ARQ_PAC,"rb");
  1164. if(arquivo == NULL)
  1165. {
  1166. imprime_Erro("\t\tErro ao abrir o arquivo!");
  1167. return;
  1168. }
  1169.  
  1170. char nome[50];
  1171. int aux;
  1172.  
  1173. if(x==1)
  1174. {
  1175. imprimir_Cabecalho("PESQUISAR PACIENTE POR NOME","Digite o nome a ser pesquisado:");
  1176. printf("\n\t>>> ");
  1177. scanf("%[^\n]%*c", nome);
  1178. }
  1179. if(x==2)
  1180. {
  1181. imprimir_Cabecalho("PESQUISAR PACIENTE POR CODIGO","Digite o codigo a ser pesquisado:");
  1182. printf("\n\t>>> ");
  1183. scanf("%d%*c",&aux);
  1184.  
  1185. }
  1186.  
  1187. while(fread(&Pacientes,sizeof(Pacientes),1,arquivo)!=0)
  1188. {
  1189. passa_Minusculo(nome);
  1190. passa_Minusculo(Pacientes.nome);
  1191. if(strstr(Pacientes.nome,nome) != NULL &&Pacientes.idade>0)
  1192. {
  1193. printf("\n\tCodigo: %d",Pacientes.cod_paciente);
  1194. printf("\n\tNome: %s",Pacientes.nome);
  1195. printf("\n\tEmail: %s",Pacientes.email);
  1196. printf("\n\tTelefone: %s",Pacientes.fone);
  1197. printf("\n\tEndereco: %s",Pacientes.endereco);
  1198. printf("\n\tIdade: %d",Pacientes.idade);
  1199. printf("\n\t---------------------------------------------------\n");
  1200. return;
  1201. }
  1202.  
  1203. if(Pacientes.cod_paciente==aux&&Pacientes.idade>0)
  1204. {
  1205. printf("\n\tCodigo: %d",Pacientes.cod_paciente);
  1206. printf("\n\tNome: %s",Pacientes.nome);
  1207. printf("\n\tEmail: %s",Pacientes.email);
  1208. printf("\n\tTelefone: %s",Pacientes.fone);
  1209. printf("\n\tEndereco: %s",Pacientes.endereco);
  1210. printf("\n\tIdade: %d",Pacientes.idade);
  1211. printf("\n\t---------------------------------------------------\n");
  1212. return;
  1213. }
  1214.  
  1215. }
  1216. }
  1217.  
  1218. void pesquisar_Medico(int x)
  1219. {
  1220. struct medico Medico;
  1221. FILE *arquivo;
  1222.  
  1223. arquivo = fopen(ARQ_PAC2,"rb");
  1224. if(arquivo == NULL)
  1225. {
  1226. imprime_Erro("\t\tErro ao abrir o arquivo!");
  1227. return;
  1228. }
  1229.  
  1230. char nome[50];
  1231. char especialidade[30];
  1232. int aux;
  1233.  
  1234. if(x==1)
  1235. {
  1236. imprimir_Cabecalho("PESQUISAR MEDICO POR NOME","Digite o nome a ser pesquisado:");
  1237. printf("\n\t>>> ");
  1238. scanf("%[^\n]%*c", nome);
  1239. }
  1240. if(x==2)
  1241. {
  1242. imprimir_Cabecalho("PESQUISAR MEDICO POR CODIGO","Digite o codigo a ser pesquisado:");
  1243. printf("\n\t>>> ");
  1244. scanf("%d%*c",&aux);
  1245. }
  1246. if(x==3)
  1247. {
  1248. imprimir_Cabecalho("PESQUISAR MEDICO POR ESPECIALIDADE","Digite o codigo a ser pesquisado:");
  1249. printf("\n\t>>> ");
  1250. scanf("%d%*c",especialidade);
  1251. }
  1252.  
  1253. while(fread(&Medico,sizeof(Medico),1,arquivo)!=0)
  1254. {
  1255. passa_Minusculo(nome);
  1256. passa_Minusculo(Medico.nome);
  1257. passa_Minusculo(especialidade);
  1258. passa_Minusculo(Medico.especialidade);
  1259. if(strstr(Medico.nome,nome) != NULL &&Medico.idade>0)
  1260. {
  1261. printf("\n\tCodigo: %d",Medico.cod_medico);
  1262. printf("\n\tNome: %s",Medico.nome);
  1263. printf("\n\tEmail: %s",Medico.email);
  1264. printf("\n\tTelefone: %s",Medico.fone);
  1265. printf("\n\tEndereco: %s",Medico.endereco);
  1266. printf("\n\tEspecialidade: %s",Medico.especialidade);
  1267. printf("\n\tSalario: %.2f",Medico.salario);
  1268. printf("\n\t---------------------------------------------------\n");
  1269. return;
  1270. }
  1271.  
  1272. if(Medico.cod_medico==aux&&Medico.idade>0)
  1273. {
  1274. printf("\n\tCodigo: %d",Medico.cod_medico);
  1275. printf("\n\tNome: %s",Medico.nome);
  1276. printf("\n\tEmail: %s",Medico.email);
  1277. printf("\n\tTelefone: %s",Medico.fone);
  1278. printf("\n\tEndereco: %s",Medico.endereco);
  1279. printf("\n\tEspecialidade: %s",Medico.especialidade);
  1280. printf("\n\tSalario: %.2f",Medico.salario);
  1281. printf("\n\t---------------------------------------------------\n");
  1282. return;
  1283. }
  1284.  
  1285. if(strstr(especialidade,Medico.especialidade) != NULL &&Medico.idade>0)
  1286. {
  1287. printf("\n\tCodigo: %d",Medico.cod_medico);
  1288. printf("\n\tNome: %s",Medico.nome);
  1289. printf("\n\tEmail: %s",Medico.email);
  1290. printf("\n\tTelefone: %s",Medico.fone);
  1291. printf("\n\tEndereco: %s",Medico.endereco);
  1292. printf("\n\tEspecialidade: %s",Medico.especialidade);
  1293. printf("\n\tSalario: %.2f",Medico.salario);
  1294. printf("\n\t---------------------------------------------------\n");
  1295. return;
  1296. }
  1297.  
  1298. }
  1299. }
  1300.  
  1301. void passa_Minusculo(char *texto)
  1302. {
  1303. int i = 0, t = strlen(texto);
  1304. while(i<t)
  1305. {
  1306. texto[i] = tolower(texto[i]);
  1307. i++;
  1308. }
  1309. }
  1310.  
  1311. void listar_Pacientes(void)
  1312. {
  1313. FILE *arquivo;
  1314. struct paciente Pacientes;
  1315.  
  1316. arquivo = fopen("Paciente.dat", "rb");
  1317. if(arquivo == NULL)
  1318. {
  1319. imprime_Erro("O arquivo nao pode ser aberto!");
  1320. return;
  1321. }
  1322. else
  1323. {
  1324. //Exibir
  1325. int cont =0;
  1326. imprimir_Cabecalho("EXIBINDO TODOS OS PACIENTES","");
  1327. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1328. {
  1329. cont++;
  1330. if(Pacientes.idade>0)//verifica se não foi excluido
  1331. imprimir_Paciente(Pacientes);
  1332. }
  1333. fclose(arquivo);
  1334. if(cont == 0)
  1335. imprime_Erro("O arquivo nao pode ser aberto!");
  1336. }
  1337. }
  1338.  
  1339. void listar_Medicos(void)
  1340. {
  1341. FILE *arquivo;
  1342. struct medico Medico;
  1343.  
  1344. arquivo = fopen("Medico.dat", "rb");
  1345. if(arquivo == NULL)
  1346. {
  1347. imprime_Erro("O arquivo nao pode ser aberto!");
  1348. return;
  1349. }
  1350. else
  1351. {
  1352. //Exibir
  1353. int cont =0;
  1354. imprimir_Cabecalho("EXIBINDO TODOS OS MEDICOS","");
  1355. while(fread(&Medico, sizeof(Medico),1,arquivo) != 0)
  1356. {
  1357. cont++;
  1358. if(Medico.idade>0)//verifica se não foi excluido
  1359. imprimir_Medico(Medico);
  1360. }
  1361. fclose(arquivo);
  1362. if(cont == 0)
  1363. imprime_Erro("O arquivo nao pode ser aberto!");
  1364. }
  1365. }
  1366.  
  1367. void pesquisar_Consulta(int x)
  1368. {
  1369.  
  1370. struct consultas Consulta;
  1371. FILE *arquivo;
  1372. int dia,mes,ano;
  1373. int codeP;
  1374. int codemed;
  1375. arquivo = fopen(ARQ_PAC3,"rb");
  1376. if(arquivo == NULL)
  1377. {
  1378. imprime_Erro("Erro ao abrir o arquivo!");
  1379. return;
  1380. }
  1381. if(x == 1)
  1382. {
  1383.  
  1384. imprimir_Cabecalho("PESQUISAR CONSULTA POR DATA","Digite data a ser pesquisada:");
  1385. printf("\n\tDia: ");
  1386. scanf("%d%*c",&dia);
  1387. printf("\n\tMes: ");
  1388. scanf("%d%*c",&mes);
  1389. printf("\n\tAno: ");
  1390. scanf("%d%*c",&ano);
  1391.  
  1392.  
  1393. while(fread(&Consulta,sizeof(Consulta),1,arquivo))
  1394. {
  1395. if(Consulta.dia==dia&&Consulta.mes==mes&&Consulta.ano==ano&&Consulta.valor>0)
  1396. {
  1397. printf("\n\t Codigo medico: %d",Consulta.cod_medico);
  1398. printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
  1399. printf("\n\t Dia: %d\\%d\\%d",Consulta.dia, Consulta.mes,Consulta.ano);
  1400. printf("\n\t Valor: %.2f",Consulta.valor);
  1401. printf("\n\t Diagnostico: %s",Consulta.diagnostico);
  1402.  
  1403. printf("\n\t---------------------------------------------------\n");
  1404. }
  1405. else
  1406. imprime_Erro("Consulta nao encontrada!");
  1407.  
  1408. }
  1409. }
  1410. if (x==2)
  1411. {
  1412.  
  1413. imprimir_Cabecalho("PESQUISAR CONSULTA POR MEDICO","Digite o codigo a ser pesquisado:");
  1414. printf("\n\t>>> ");
  1415. scanf("%d%*c",&codemed);
  1416. while(fread(&Consulta,sizeof(Consulta),1,arquivo))
  1417. {
  1418. if(Consulta.cod_medico==codemed&&Consulta.valor>0)
  1419. {
  1420. printf("\n\t Codigo medico: %d",Consulta.cod_medico);
  1421. printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
  1422. printf("\n\t Data: %d\\%d\\%d",Consulta.dia, Consulta.mes,Consulta.ano);
  1423. printf("\n\t Valor: %.2f",Consulta.valor);
  1424. printf("\n\t Diagnostico: %s",Consulta.diagnostico);
  1425.  
  1426. printf("\n\t---------------------------------------------------\n");
  1427. }
  1428. else
  1429. imprime_Erro("Consulta nao encontrada!");
  1430.  
  1431. }
  1432.  
  1433. }
  1434. if (x==3)
  1435. {
  1436.  
  1437. imprimir_Cabecalho("PESQUISAR CONSULTA POR PACIENTE","Digite o codigo a ser pesquisado:");
  1438. printf("\n\t>>> ");
  1439. scanf("%d%*c",&codeP);
  1440. while(fread(&Consulta,sizeof(Consulta),1,arquivo))
  1441. {
  1442. if(Consulta.cod_paciente==codeP&&Consulta.valor>0)
  1443. {
  1444. printf("\n\t Codigo medico: %d",Consulta.cod_medico);
  1445. printf("\n\t Codigo paciente:: %d",Consulta.cod_paciente);
  1446. printf("\n\t Data: %d\\%d\\%d",Consulta.dia, Consulta.mes,Consulta.ano);
  1447. printf("\n\t Valor: %.2f",Consulta.valor);
  1448. printf("\n\t Diagnostico: %s",Consulta.diagnostico);
  1449.  
  1450. printf("\n\t---------------------------------------------------\n");
  1451. }
  1452. else
  1453. imprime_Erro("Consulta nao encontrada!");
  1454.  
  1455. }
  1456.  
  1457. }
  1458. fclose(arquivo);
  1459. }
  1460.  
  1461. void listar_Total(void)
  1462. {
  1463. FILE *arquivo;
  1464. struct consultas Consulta;
  1465. float Somar=0;
  1466.  
  1467. arquivo = fopen(ARQ_PAC3,"rb");
  1468. if(arquivo == NULL)
  1469. {
  1470. imprime_Erro("O arquivo nao pode ser aberto!");
  1471. return;
  1472. }
  1473. else
  1474. {
  1475.  
  1476. imprimir_Cabecalho("TOTAL ARRECADADO", "");
  1477. while(fread(&Consulta, sizeof(Consulta),1,arquivo) != 0)
  1478. {
  1479. Somar+=Consulta.valor;
  1480.  
  1481. printf("\tConsulta %d Preco: %.2f\n",Consulta.cod_consulta,Consulta.valor);
  1482. }
  1483. fclose(arquivo);
  1484. printf("\n\t------------------------------------------------");
  1485. printf("\n\n\tTotal Geral: %.2f\n",Somar);
  1486.  
  1487. }
  1488. }
  1489.  
  1490. void listar_idades(void)
  1491. {
  1492. FILE *arquivo;
  1493. struct paciente Pacientes;
  1494.  
  1495. arquivo = fopen("Paciente.dat", "rb");
  1496. if(arquivo == NULL)
  1497. {
  1498. imprime_Erro("O arquivo nao pode ser aberto!");
  1499. return;
  1500. }
  1501. else
  1502. {
  1503. 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");
  1504. //Exibir
  1505.  
  1506. printf("\n\t------------------------------------------------");
  1507. printf("\n\n\t>>>Criancas:");
  1508. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1509. {
  1510. if(Pacientes.idade<11&&Pacientes.idade>0)
  1511. printf("\n\n\t\tNome: %s\n\t\tE-mail: %s",Pacientes.nome,Pacientes.email);
  1512. }
  1513. fclose(arquivo);
  1514.  
  1515. }
  1516.  
  1517. arquivo = fopen("Paciente.dat", "rb");
  1518. if(arquivo == NULL)
  1519. {
  1520. imprime_Erro("O arquivo nao pode ser aberto!");
  1521. return;
  1522. }
  1523. else
  1524. {
  1525. //Exibir
  1526.  
  1527. printf("\n\t------------------------------------------------");
  1528. printf("\n\n\t>>>Adolescentes:");
  1529. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1530. {
  1531. if(Pacientes.idade>=11&&Pacientes.idade<18)
  1532. printf("\n\n\t\tNome: %s\n\t\tE-mail: %s\n",Pacientes.nome,Pacientes.email);
  1533. }
  1534. fclose(arquivo);
  1535.  
  1536. }
  1537.  
  1538. arquivo = fopen("Paciente.dat", "rb");
  1539. if(arquivo == NULL)
  1540. {
  1541. imprime_Erro("O arquivo nao pode ser aberto!");
  1542. return;
  1543. }
  1544. else
  1545. {
  1546. //Exibir
  1547.  
  1548. printf("\n\t------------------------------------------------");
  1549. printf("\n\n\t>>>Adultos:");
  1550. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1551. {
  1552. if(Pacientes.idade>=18&&Pacientes.idade<60)
  1553. printf("\n\n\t\tNome: %s\n\t\tE-mail: %s\n",Pacientes.nome,Pacientes.email);
  1554. }
  1555. fclose(arquivo);
  1556.  
  1557. }
  1558.  
  1559. arquivo = fopen("Paciente.dat", "rb");
  1560. if(arquivo == NULL)
  1561. {
  1562. imprime_Erro("O arquivo nao pode ser aberto!");
  1563. return;
  1564. }
  1565. else
  1566. {
  1567. //Exibir
  1568.  
  1569. printf("\n\t------------------------------------------------");
  1570. printf("\n\n\t>>>Idosos:");
  1571. while(fread(&Pacientes, sizeof(Pacientes),1,arquivo) != 0)
  1572. {
  1573. if(Pacientes.idade>=60)
  1574. printf("\n\n\t\tNome: %s\n\t\tE-mail: %s\n",Pacientes.nome,Pacientes.email);
  1575. }
  1576. fclose(arquivo);
  1577.  
  1578. }
  1579.  
  1580. }
  1581.  
  1582. void deletar_medico(void)
  1583. {
  1584. Medico medico;
  1585. FILE *arquivo;
  1586. struct consultas Consulta;
  1587. FILE *arquivo2;
  1588. arquivo = fopen(ARQ_PAC2,"r+b");
  1589. if(arquivo == NULL)
  1590. {
  1591. imprime_Erro("Erro ao abrir o arquivo!");
  1592. return;
  1593. }
  1594.  
  1595.  
  1596. int codigo,fim;
  1597. imprimir_Cabecalho("EXCLUIR MEDICO","Digite o codigo a ser excluido:");
  1598. printf("\n\t>>> ");
  1599. scanf("%d%*c",&codigo);
  1600. arquivo2 = fopen(ARQ_PAC3,"r+b");
  1601. if(arquivo2 == NULL)
  1602. {
  1603. imprime_Erro("Erro ao abrir o arquivo!");
  1604. return;
  1605. }
  1606. while(fread(&Consulta, sizeof(Consulta),1,arquivo2) != 0)
  1607. {
  1608. if(Consulta.cod_medico==codigo&&Consulta.valor>0)
  1609. {
  1610. imprime_Erro("Erro ao excluir: medico com consulta marcada!");
  1611. return;
  1612. }
  1613.  
  1614. }
  1615. fseek(arquivo,0,SEEK_END);
  1616. fim = ftell(arquivo);
  1617. if(fim*1.0 / (sizeof(Medico)) >= codigo)//
  1618. {
  1619. fseek(arquivo,(codigo -1) * sizeof(Medico),SEEK_SET);
  1620. fread(&medico,sizeof(Medico),1,arquivo);
  1621. medico.idade=-1;//para deletar basta marcar com -1
  1622. fseek(arquivo,(codigo -1) * sizeof(Medico),SEEK_SET);
  1623. fwrite(&medico,sizeof(medico),1,arquivo);
  1624. printf("\n\tCadastro de medico excluido!");
  1625.  
  1626. }
  1627. else
  1628. {
  1629. imprime_Erro("Codigo inexistente!");
  1630. }
  1631.  
  1632.  
  1633. fclose(arquivo);
  1634. }
  1635.  
  1636.  
  1637.  
  1638. void deletar_paciente(void)
  1639. {
  1640. struct paciente Paciente;
  1641. FILE *arquivo;
  1642. struct consultas Consulta;
  1643. FILE *arquivo2;
  1644. arquivo = fopen(ARQ_PAC,"r+b");
  1645. if(arquivo == NULL)
  1646. {
  1647. imprime_Erro("Erro ao abrir o arquivo!");
  1648. return;
  1649. }
  1650.  
  1651. int codigo,fim;
  1652. imprimir_Cabecalho("EXCLUIR PACIENTE","Digite o codigo a ser excluido:");
  1653. printf("\n\t>>> ");
  1654. scanf("%d%*c",&codigo);
  1655. arquivo2 = fopen(ARQ_PAC3,"r+b");
  1656. if(arquivo2 == NULL)
  1657. {
  1658. imprime_Erro("Erro ao abrir o arquivo!");
  1659. return;
  1660. }
  1661. while(fread(&Consulta, sizeof(Consulta),1,arquivo2) != 0)
  1662. {
  1663. if(Consulta.cod_paciente==codigo&&Consulta.valor>0)
  1664. {
  1665. imprime_Erro("Erro ao excluir: paciente com consulta marcada!");
  1666. return;
  1667. }
  1668.  
  1669. }
  1670.  
  1671. fseek(arquivo,0,SEEK_END);
  1672. fim = ftell(arquivo);
  1673. if(fim*1.0 / (sizeof(Paciente)) >= codigo)//
  1674. {
  1675. fseek(arquivo,(codigo -1) * sizeof(Paciente),SEEK_SET);
  1676. fread(&Paciente,sizeof(Paciente),1,arquivo);
  1677. Paciente.idade=-1;//para deletar basta marcar com -1
  1678. fseek(arquivo,(codigo -1) * sizeof(Paciente),SEEK_SET);
  1679. fwrite(&Paciente,sizeof(Paciente),1,arquivo);
  1680. printf("\n\tCadastro de paciente excluido!");
  1681.  
  1682.  
  1683. }
  1684. else
  1685. {
  1686. imprime_Erro("Codigo inexistente!");
  1687. }
  1688.  
  1689. fclose(arquivo);
  1690.  
  1691. }
  1692.  
  1693. void deletar_consulta(void)
  1694. {
  1695. struct consultas Consultas;
  1696. FILE *arquivo;
  1697. arquivo = fopen(ARQ_PAC3,"r+b");
  1698. if(arquivo == NULL)
  1699. {
  1700. imprime_Erro("Erro ao abrir o arquivo!");
  1701. return;
  1702. }
  1703.  
  1704. int codigo,fim;
  1705. imprimir_Cabecalho("EXCLUIR CONSULTA","Digite o codigo a ser excluido:");
  1706. printf("\n\t>>> ");
  1707. scanf("%d%*c",&codigo);
  1708. fseek(arquivo,0,SEEK_END);
  1709. fim = ftell(arquivo);
  1710. if(fim*1.0 / (sizeof(Consultas)) >= codigo)//
  1711. {
  1712. fseek(arquivo,(codigo -1) * sizeof(Consultas),SEEK_SET);
  1713. fread(&Consultas,sizeof(Consultas),1,arquivo);
  1714. Consultas.valor=0;//para deletar basta marcar com -1
  1715. fseek(arquivo,(codigo -1) * sizeof(Consultas),SEEK_SET);
  1716. fwrite(&Consultas,sizeof(Consultas),1,arquivo);
  1717. printf("\n\tConsulta excluida!");
  1718. }
  1719. else
  1720. {
  1721. imprime_Erro("Codigo inexistente!");
  1722. }
  1723.  
  1724. fclose(arquivo);
  1725.  
  1726.  
  1727. }
  1728.  
  1729.  
  1730. void alterar_medico(void)
  1731. {
  1732. Medico medico;
  1733. FILE *arquivo;
  1734. arquivo = fopen(ARQ_PAC2,"r+b");
  1735. char resposta;
  1736. int sin=0;
  1737. if(arquivo == NULL)
  1738. {
  1739. imprime_Erro("Erro ao abrir o arquivo!");
  1740. return;
  1741. }
  1742.  
  1743. int codigo,fim;
  1744. imprimir_Cabecalho("ALTERAR MEDICO","Digite o codigo a ser alterado:");
  1745. printf("\n\t>>> ");
  1746. scanf("%d%*c",&codigo);
  1747. fseek(arquivo,0,SEEK_END);
  1748. fim = ftell(arquivo);
  1749. if(fim*1.0 / (sizeof(Medico)) >= codigo)//
  1750. {
  1751. fseek(arquivo,(codigo -1) * sizeof(Medico),SEEK_SET);
  1752. fread(&medico,sizeof(Medico),1,arquivo);
  1753.  
  1754. printf("\n\n\tNome atual: %s", medico.nome);
  1755. //Entrada de nome válido
  1756. do
  1757. {
  1758. printf("\n\tNovo nome: ");
  1759. scanf("%[^\n]%*c",medico.nome);
  1760. }
  1761. while (validar_Nome(medico.nome)==1);
  1762.  
  1763. printf("\n\tE-mail atual: %s", medico.email);
  1764. //Entrada de email válido
  1765. do
  1766. {
  1767. printf("\n\tNovo e-mail: ");
  1768. scanf("%[^\n]%*c",medico.email);
  1769. }
  1770. while (validar_Email(medico.email)==1);
  1771.  
  1772. printf("\n\tTefone atual: %s", medico.fone);
  1773. //Entrada de telefone valido
  1774. do
  1775. {
  1776. printf("\n\tNovo telefone: (DDD + num telefone): ");
  1777. scanf("%[^\n]%*c",medico.fone);
  1778. }
  1779. while (validar_Telefone(medico.fone)==1);
  1780.  
  1781. //Entrada de endereço valido
  1782. do{
  1783. printf("\n\tEndereco: ");
  1784. scanf("%[^\n]%*c",medico.endereco);
  1785. }while (validar_Endereco(medico.endereco)==1);
  1786.  
  1787. printf("\n\tSalario atual: %.2f", medico.salario);
  1788. //Entrada de salario valida
  1789. do
  1790. {
  1791. printf("\n\tSalario: ");
  1792. scanf("%f%*c",&medico.salario);
  1793. }
  1794. while (validar_Salario(medico.salario)==1);
  1795.  
  1796. imprimir_Cabecalho("ALTERAR CONTATO", "Alteracoes a serem realizadas");
  1797. imprimir_Medico(medico);
  1798. printf("\n\tConfirma alteracao? <Sim(s) ou Não(n)>");
  1799. scanf("%c%*c", &resposta);
  1800. if(tolower(resposta) == 's')
  1801. {
  1802. fseek(arquivo,(codigo -1) * sizeof(Medico),SEEK_SET);
  1803. fwrite(&medico,sizeof(medico),1,arquivo);
  1804. sin = 1;
  1805. }
  1806.  
  1807. fclose(arquivo);
  1808. if(sin == 1)
  1809. {
  1810. printf("\n\tAlteracao realizada com sucesso!\n");
  1811. }
  1812. }
  1813. else
  1814. {
  1815. imprime_Erro("Codigo inexistente!");
  1816. }
  1817.  
  1818.  
  1819. }
  1820.  
  1821. void alterar_paciente(void)
  1822. {
  1823. struct paciente Paciente;
  1824. FILE *arquivo;
  1825. arquivo = fopen(ARQ_PAC,"r+b");
  1826. char resposta;
  1827. int sin=0;
  1828. if(arquivo == NULL)
  1829. {
  1830. imprime_Erro("Erro ao abrir o arquivo!");
  1831. return;
  1832. }
  1833.  
  1834. int codigo,fim;
  1835. imprimir_Cabecalho("CODIGO DO PACIENTE","Digite o codigo a ser alterado:");
  1836. printf("\n\t>>> ");
  1837. scanf("%d%*c",&codigo);
  1838. fseek(arquivo,0,SEEK_END);
  1839. fim = ftell(arquivo);
  1840. if(fim*1.0 / (sizeof(Paciente)) >= codigo)//
  1841. {
  1842. fseek(arquivo,(codigo -1) * sizeof(Paciente),SEEK_SET);
  1843. fread(&Paciente,sizeof(Paciente),1,arquivo);
  1844.  
  1845. printf("\n\n\tNome atual: %s", Paciente.nome);
  1846. //Entrada de nome válido
  1847. do
  1848. {
  1849. printf("\n\tNovo nome: ");
  1850. scanf("%[^\n]%*c",Paciente.nome);
  1851. }
  1852. while (validar_Nome(Paciente.nome)==1);
  1853.  
  1854. printf("\n\tE-mail atual: %s", Paciente.email);
  1855. //Entrada de email válido
  1856. do
  1857. {
  1858. printf("\n\tNovo e-mail: ");
  1859. scanf("%[^\n]%*c",Paciente.email);
  1860. }
  1861. while (validar_Email(Paciente.email)==1);
  1862.  
  1863. printf("\n\tTelefone atual: %s", Paciente.fone);
  1864. //Entrada de telefone valido
  1865. do
  1866. {
  1867. printf("\n\tNovo telefone (DDD + num telefone): ");
  1868. scanf("%[^\n]%*c",Paciente.fone);
  1869. }
  1870. while (validar_Telefone(Paciente.fone)==1);
  1871.  
  1872. printf("\n\tEndereco atual: %s", Paciente.endereco);
  1873. //Entrada de endereço válido
  1874. do{
  1875. printf("\n\tNovo endereco: ");
  1876. scanf("%[^\n]%*c",Paciente.endereco);
  1877. }while(validar_Endereco(Paciente.endereco)==1);
  1878.  
  1879. printf("\n\tIdade Atual: %d", Paciente.idade);
  1880. //Entrada de idade valida
  1881. do
  1882. {
  1883. printf("\n\tNova idade: ");
  1884. scanf("%d%*c",&Paciente.idade);
  1885. }
  1886. while (validar_Idade(Paciente.idade)==1);
  1887.  
  1888. imprimir_Cabecalho("ALTERAR PACIENTE", "Alteracoes a serem realizadas");
  1889. imprimir_Paciente(Paciente);
  1890. printf("\n\tConfirma alteracao? <Sim(s) ou Nao(n)>");
  1891. scanf("%c%*c", &resposta);
  1892. if(tolower(resposta) == 's')
  1893. {
  1894. fseek(arquivo,(codigo -1) * sizeof(Paciente),SEEK_SET);
  1895. fwrite(&Paciente,sizeof(Paciente),1,arquivo);
  1896. sin = 1;
  1897. }
  1898.  
  1899. fclose(arquivo);
  1900. if(sin == 1)
  1901. {
  1902. printf("\n\tAlteracao realizada com sucesso!\n");
  1903. }
  1904. }
  1905. else
  1906. {
  1907. imprime_Erro("Codigo inexistente!");
  1908. }
  1909. }
  1910.  
  1911. void alterar_consulta(void)
  1912. {
  1913. struct consultas Consulta;
  1914. struct paciente Paciente;
  1915. struct medico medic;
  1916. char resposta;
  1917. int sin=0;
  1918. FILE *arquivo,*arquivo1,*arquivo2;
  1919. int codeP,codemed,continuar;
  1920. arquivo = fopen(ARQ_PAC3,"r+b");
  1921. if(arquivo == NULL)
  1922. {
  1923. imprime_Erro("Erro ao abrir o arquivo!");
  1924. return;
  1925. }
  1926.  
  1927.  
  1928. int codigo,fim;
  1929. imprimir_Cabecalho("ALTERAR CONSULTAS","Digite o codigo a ser alterado:");
  1930. printf("\n\t>>> ");
  1931. scanf("%d%*c",&codigo);
  1932. fseek(arquivo,0,SEEK_END);
  1933. fim = ftell(arquivo);
  1934. if(fim*1.0 / (sizeof(Consulta)) >= codigo)
  1935. {
  1936. fseek(arquivo,(codigo -1) * sizeof(Consulta),SEEK_SET);
  1937. fread(&Consulta,sizeof(Consulta),1,arquivo);
  1938.  
  1939.  
  1940. //Entrada do codigo do paciente (Buscar o cadastro pelo codigo)
  1941. printf("\n\tDigite o codigo do paciente: ");
  1942. scanf("%d%*c", &codeP);
  1943. continuar=0;
  1944. arquivo1 = fopen(ARQ_PAC,"a+b");
  1945. //percoree arquivo
  1946. while(fread(&Paciente, sizeof(Paciente),1,arquivo1) != 0)
  1947. {
  1948. if(Paciente.cod_paciente==codeP)
  1949. continuar=1;
  1950.  
  1951. }
  1952. fclose(arquivo1);
  1953. if(continuar==0) //verifica se o paciente esta cadastrado
  1954. {
  1955. printf("ERRO: paciente não cadastrado");
  1956. return;
  1957. }
  1958.  
  1959.  
  1960. //Entrada do codigo do medico (Buscar o cadastro pelo codigo)
  1961. printf("\n\tDigite o codigo do medico: ");
  1962. scanf("%d%*c", &codemed);
  1963. continuar=0;
  1964. arquivo2 = fopen(ARQ_PAC2,"a+b");
  1965. while(fread(&medic, sizeof(medic),1,arquivo1) != 0)
  1966. {
  1967. if(medic.cod_medico==codemed)
  1968. continuar=1;
  1969. }
  1970. fclose(arquivo2);
  1971. if(continuar==0) //verifica se o medico esta cadastrado
  1972. {
  1973. printf("ERRO: Medico não cadastrado");
  1974. return;
  1975. }
  1976.  
  1977.  
  1978. //Entrada de data valida recebe os codigos
  1979.  
  1980. Consulta.cod_medico=codemed;
  1981. Consulta.cod_paciente=codeP;
  1982. printf("\n\tData atual: %d\\%d\\%d", Consulta.dia,Consulta.mes,Consulta.ano);
  1983. do
  1984. {
  1985. printf("\n\tDigite a data:\n\n\t\tDia: ");
  1986. scanf("%d", &Consulta.dia);
  1987. printf("\n\t\tMes: ");
  1988. scanf("%d", &Consulta.mes);
  1989. printf("\n\t\tAno: ");
  1990. scanf("%d", &Consulta.ano);
  1991. if (validar_Data(Consulta.dia, Consulta.mes, Consulta.ano)==0)
  1992. imprime_Erro("Data invalida!");
  1993. }
  1994. while (validar_Data(Consulta.dia, Consulta.mes, Consulta.ano)==0);
  1995.  
  1996. printf("\n\tDiagnostico atual: %s", Consulta.diagnostico);
  1997. //Entrada de diagnostico
  1998. int op;
  1999. do
  2000. {
  2001. printf("\n\tNovo diagnostico: ");
  2002. printf("\n\t1- Asma");
  2003. printf("\n\t2- Eplepsia");
  2004. printf("\n\t3- Transtorno de Ansiedade");
  2005. printf("\n\t4- Isuficiencia Cardiaca");
  2006. printf("\n\t5- Ulcera");
  2007. printf("\n\t6- Febre Reumatica");
  2008. printf("\n\t7- Diabetes");
  2009. printf("\n\t8- Infeccao Generalizada");
  2010. printf("\n\t9- Catarata");
  2011. printf("\n\t10- Endometriose");
  2012. printf("\n\tEscolha a opcao desejada: ");
  2013. scanf("%d%*c", &op);
  2014. switch (op)
  2015. {
  2016. case 1:
  2017. {
  2018. strcpy(Consulta.diagnostico,"Asma");
  2019. }
  2020. break;
  2021. case 2:
  2022. {
  2023. strcpy(Consulta.diagnostico,"Eplepsia");
  2024. }
  2025. break;
  2026. case 3:
  2027. {
  2028. strcpy(Consulta.diagnostico,"Transtorno de Ansiedade");
  2029. }
  2030. break;
  2031. case 4:
  2032. {
  2033. strcpy(Consulta.diagnostico,"Insuficiencia Cardiaca");
  2034. }
  2035. break;
  2036. case 5:
  2037. {
  2038. strcpy(Consulta.diagnostico,"Ulcera");
  2039. }
  2040. break;
  2041. case 6:
  2042. {
  2043. strcpy(Consulta.diagnostico,"Febre Reumatica");
  2044. }
  2045. break;
  2046. case 7:
  2047. {
  2048. strcpy(Consulta.diagnostico,"Diabetes");
  2049. }
  2050. break;
  2051. case 8:
  2052. {
  2053. strcpy(Consulta.diagnostico,"Infeccao Generalizada");
  2054. }
  2055. break;
  2056. case 9:
  2057. {
  2058. strcpy(Consulta.diagnostico,"Catarata");
  2059. }
  2060. break;
  2061. case 10:
  2062. {
  2063. strcpy(Consulta.diagnostico,"Endometriose");
  2064. }
  2065. break;
  2066. default:
  2067. imprime_Erro("Opcao invalida. Escolha de 1 a 10");
  2068. }
  2069. }
  2070. while (op<1||op>10);
  2071.  
  2072. printf("\n\tValor da consulta atual: %.2f", Consulta.valor);
  2073. //Entrada de valor valido
  2074. do
  2075. {
  2076. printf("\n\tNovo valor: ");
  2077. scanf("%f%*c", &Consulta.valor);
  2078. }
  2079. while (validar_Valor(Consulta.valor)==1);
  2080.  
  2081. imprimir_Cabecalho("ALTERAR CONSULTA", "Alteracoes a serem realizadas");
  2082. imprimir_Consulta(Consulta);
  2083. printf("\n\tConfirma alteracao? <Sim(s) ou Nao(n)>");
  2084. scanf("%c%*c", &resposta);
  2085. if(tolower(resposta) == 's')
  2086. {
  2087. fseek(arquivo,(codigo -1) * sizeof(Consulta),SEEK_SET);
  2088. fwrite(&Consulta,sizeof(Consulta),1,arquivo);
  2089. sin = 1;
  2090. }
  2091.  
  2092. fclose(arquivo);
  2093. if(sin == 1)
  2094. {
  2095. printf("\n\tAlteracao realizada com sucesso!\n");
  2096. }
  2097. }
  2098. else
  2099. {
  2100. imprime_Erro("Codigo inexistente!");
  2101.  
  2102. }
  2103.  
  2104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement