Advertisement
fmasca

Untitled

Oct 18th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.95 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MED 2
  5. #define PAC 3
  6. #define CONS 3
  7.  
  8. // Inicialização das variaveis globais //
  9. int cont;
  10. int gercodmedico=0;
  11. int gercodpaciente=0;
  12. int gercodconsulta=0;
  13.  
  14. // Inicialização das estruturas //
  15. struct Medico
  16. {
  17.     int cod_medico;
  18.     char nome [100];
  19.     char endereco_med [150];
  20.     float salario;
  21. };
  22.  
  23. struct Medico medicos[MED];
  24.  
  25. struct Paciente
  26. {
  27.     int cod_paciente;
  28.     char nome_pac[100];
  29.     char endereco_pac[150];
  30.     int idade;
  31. };
  32.  
  33. struct Paciente pacientes[PAC];
  34.  
  35. struct Consulta
  36. {
  37.     int num_prontuario;
  38.     char data_consulta[11];
  39.     char diagnostico[150];
  40.     int cod_paciente;
  41.     int cod_medico;
  42. };
  43.  
  44. struct Consulta consultas[CONS];
  45.  
  46. // Inicialização das funções referente a medicos //
  47.  
  48. // Inicialização da função "adicionarmedico //
  49. void adicionarmedico ()
  50. {
  51.    
  52.     system ("cls");
  53.    
  54.     /* Primeiro ele vai verificar se o vetor medicos na posição "cont" tem valor diferente de -1. Se sim, o programa
  55.     pulará essa posição, e continuará a fazer verificação, até encontrar uma posição que tem valor -1. Nisso, significa
  56.     que nenhum médico foi preenchido nessa posição. Será requisitado do usuário os dados que serão requisitados do médico
  57.     Caso o usuário tente preencher com mais médicos que permite o vetor, retornará uma mensagem informando tal erro. Tal
  58.     estrutura se repete em outras interações. */
  59.     for (cont=0; cont < MED; cont++)
  60.     {
  61.         if (medicos[cont].cod_medico != -1)
  62.         {
  63.             continue;
  64.         }
  65.        
  66.         gercodmedico++;
  67.         medicos[cont].cod_medico=gercodmedico;
  68.        
  69.         printf ("Preparando para receber informacoes do medico %d\n", cont+1);
  70.        
  71.         printf ("Insira o nome do medico %d: ", cont+1);
  72.         fflush(stdin);
  73.         gets(medicos[cont].nome);
  74.        
  75.         printf ("Insira o endereco do medico %d: ", cont+1);
  76.         fflush (stdin);
  77.         gets (medicos[cont].endereco_med);
  78.        
  79.         printf ("Insira o salario do medico %d: ", cont+1);
  80.         scanf ("%.2f", &medicos[cont].salario);
  81.         fflush(stdin);
  82.        
  83.         return;
  84.     }
  85.    
  86.     printf ("Capacidade de medicos cheia! Apague um medico do cadastro!\n");
  87.     system ("pause");
  88. }
  89.  
  90. // Inicialização da função "apagarmedico" //
  91. void apagarmedico ()
  92. {
  93.  
  94.     system ("cls");
  95.    
  96.     int verifmedico, apagaconf=0;
  97.    
  98.     printf ("Vamos verificar primeiro se o medico possui alguma consulta marcada.\n");
  99.    
  100.     /* "verifmedico" é uma variavel que servirá como referência. */
  101.     do
  102.     {
  103.     printf ("Por favor, insira o codigo do medico. Lembre que deve ser um numero valido de 1 a %d: ", MED);
  104.         scanf ("%d", &verifmedico);
  105.         verifmedico--;
  106.     }while (verifmedico  < 0 || verifmedico > MED-1);
  107.    
  108.     /* Verificando se no vetor "medicos", utilizando como referência "verifmedico", possui algum medico registrado.
  109.     Caso o valor seja "-1", não há medico. Outro valor, ele continuará o programa. */
  110.     if (medicos[verifmedico].cod_medico == -1)
  111.     {
  112.         printf ("Posicao vazia! Nao ha medico!\n");
  113.         system ("pause");
  114.         return;
  115.     }
  116.    
  117.     int achou = 0;
  118.  
  119.     /* Verificação se o medico possui alguma consulta agendada, segundo a data. */
  120.     for (cont=0; cont < CONS; cont++)
  121.     {
  122.         if (consultas[cont].num_prontuario == -1)
  123.         {
  124.             continue;
  125.         }
  126.         /* Vai verificar se no vetor"consultas", possui alguma incidência que seja igual ao que está registrado em
  127.         "medicos[verifmedico].cod_medico". Se sim, achou recebera valor de 1. Se não, significa que não há consul-
  128.         tas agendadas, e o médico poderá ter seu registro apagado. */
  129.         if (consultas[cont].cod_medico == medicos[verifmedico].cod_medico)
  130.         {
  131.                 achou = 1;
  132.                 break;
  133.         }  
  134.     }
  135.    
  136.     if(achou){
  137.         printf ("Esse medico tem hora marcada!\n");
  138.     }
  139.     else
  140.     {
  141.             printf ("Esse medico nao tem hora marcada. Gostaria de apagar sua entrada?\n ");
  142.             printf ("Digite 1 e ENTER para CONFIRMAR. Outro numero e ENTER para CANCELAR.\n");
  143.             scanf (" %d", &apagaconf);
  144.             fflush (stdin);
  145.  
  146.             if (apagaconf == 1)
  147.             {
  148.                 medicos[verifmedico].cod_medico = -1;
  149.                 printf ("Apagado com sucesso!\n");
  150.             }
  151.    
  152.             else
  153.             {
  154.                 printf ("Medico nao apagado. Ele pode ser cadastrado em consulta futuras.\n.");
  155.             }
  156.     }
  157.     system ("pause");
  158. }
  159. // Fim das funções referentes a medico //
  160.  
  161. // Inicio das funções referentes a paciente //
  162. void adicionarpaciente ()
  163. {
  164.  
  165.     system ("cls");
  166.  
  167.     for (cont=0; cont < CONS; cont++)
  168.     {
  169.    
  170.     if (pacientes[cont].cod_paciente != -1)
  171.         {
  172.             continue;
  173.         }
  174.    
  175.         gercodpaciente++;
  176.         pacientes[cont].cod_paciente=gercodpaciente;
  177.        
  178.         printf ("Preparando para receber informacoes do paciente %d\n", cont+1);
  179.        
  180.         printf ("Insira o nome do paciente %d: ", cont+1);
  181.         fflush(stdin);
  182.         gets(pacientes[cont].nome_pac);
  183.        
  184.         printf ("Insira o endereço do paciente %d: ", cont+1);
  185.         fflush (stdin);
  186.         gets (pacientes[cont].endereco_pac);
  187.        
  188.         printf ("Insira a idade do paciente %d: ", cont+1);
  189.         scanf ("%f", &pacientes[cont].idade);  
  190.        
  191.         return;
  192.     }
  193.    
  194.     printf ("Capacidade de pacientes cheia! Apague um paciente do cadastro!\n");
  195.     system ("pause");
  196. }
  197.  
  198. // Fim das funções de pacientes    //
  199.  
  200. void adicionarconsulta()
  201. {
  202.  
  203.     system ("cls");
  204.  
  205.     for (cont=0; cont < CONS; cont++)
  206.     {
  207.     if (consultas[cont].num_prontuario != -1)
  208.         {
  209.             continue;
  210.         }
  211.    
  212.         gercodconsulta++;
  213.         consultas[cont].num_prontuario=gercodconsulta;
  214.        
  215.         printf ("Preparando para receber informacoes da consulta %d\n", cont+1);
  216.        
  217.         printf ("Insira a data da consulta %d, sem as barras: ", cont+1);
  218.         fflush(stdin);
  219.         gets(consultas[cont].data_consulta);
  220.        
  221.         printf ("Insira o diagnostico %d: ", cont+1);
  222.         fflush (stdin);
  223.         gets (consultas[cont].diagnostico);
  224.        
  225.         // laço criado para buscar o codigo do paciente para adicionar a consulta //
  226.         do
  227.         {
  228.             int verifcodpaciente;
  229.            
  230.             printf ("Insira aqui o codigo do paciente a ser atendido.");
  231.             printf ("Nao esqueca que o codigo deve ir de 1 a %d: ", MED);
  232.             scanf ("%d", &consultas[cont].cod_paciente);
  233.         }while (consultas[cont].cod_paciente < 1 && consultas[cont].cod_paciente > PAC);
  234.        
  235.         // laço criado para buscar o codigo medico para adicionar a consulta //
  236.         do
  237.         {
  238.             printf ("Insira aqui o codigo do medico atendente.");
  239.             printf ("Nao esqueca que o codigo deve ir de 1 a 3: ");
  240.             scanf ("%d", &consultas[cont].cod_medico);
  241.         }while (consultas[cont].cod_paciente < 1 || consultas[cont].cod_paciente > MED);
  242.        
  243.         return;
  244.     }
  245.    
  246.     printf ("Capacidade de consultas cheia! Apague uma consulta do cadastro!\n");
  247.     system ("pause");
  248. }
  249.    
  250. int buscardata()
  251. {
  252.    
  253.     system ("cls");
  254.  
  255.     char buscardata[11];
  256.    
  257.     fflush (stdin);
  258.     printf ("Vamos procurar por data, informando todas as consultas marcadas.\n");
  259.     printf ("Insira uma data, sem as barras: ");
  260.     gets (buscardata);
  261.    
  262.     for (cont=0; cont < CONS; cont++)
  263.     {
  264.         if (!strcmp (consultas[cont].data_consulta, buscardata))
  265.         {
  266.             printf ("Numero do prontuario: %d\n", consultas[cont].num_prontuario);
  267.             printf ("Codigo do medico: %d\n", consultas[cont].cod_medico);
  268.             printf ("Codigo do paciente: %d\n", consultas[cont].cod_paciente);
  269.             printf ("Diagonostico: ");
  270.             puts(consultas[cont].diagnostico);
  271.             printf ("\n");
  272.         }
  273.        
  274.         else
  275.         {
  276.             printf ("Nenhuma consulta foi encontrada para a data!\n");
  277.             break;
  278.         }
  279.        
  280.     }
  281.  
  282.     system ("pause");
  283. }
  284.  
  285. /* Essa função serve para assegurar que os códigos de cada um dos vetores possui "valor vazio", os preenchendo
  286. com o valor "-1". "-1" para o nosso código, é o mesmo que um elemento vazio. */
  287. void inicializar_medicos()
  288. {
  289.     for (cont =0; cont < MED; cont++)
  290.     {
  291.         medicos[cont].cod_medico = -1;
  292.     }
  293. }
  294.  
  295. void inicializar_pacientes()
  296. {
  297.     for (cont =0; cont < PAC; cont++)
  298.     {
  299.         pacientes[cont].cod_paciente = -1;
  300.     }
  301. }
  302.  
  303. void inicializar_consultas()
  304. {
  305.     for (cont =0; cont < CONS; cont++)
  306.     {
  307.         consultas[cont].num_prontuario = -1;
  308.     }
  309. }
  310.  
  311. /* Função principal */
  312. int main ()
  313. {
  314.    
  315.     int opc=0;
  316.     /* Incializando todos os vetores referentes a código com valores vazios (aqui um vetor vazio é
  317.     identificado com o valor "-1") */
  318.     inicializar_medicos();
  319.     inicializar_pacientes();
  320.     inicializar_consultas();
  321.    
  322.     /* Menu de 6 opções. Cada opção é referente a uma das dunções que está descrita. Caso o usuário queira sair do
  323.     programa, poderá entrar com a opção '6', que fechará o programa. */
  324.     do
  325.     {
  326.     system ("cls||clear");
  327.    
  328.     printf ("Bem vindo ao sistema de Registro e consultas MED-URBAM 1.1!\n");
  329.     printf ("Digite a opcao que voce deseja executar:\n");
  330.     printf ("1 - Incluir medicos\n");
  331.     printf ("2 - Excluir medicos\n");
  332.     printf ("3 - Incluir pacientes\n");
  333.     printf ("4 - Incluir consultas\n");
  334.     printf ("5 - Pesquisar consultas por data\n");
  335.     printf ("6 - Sair do programa\n");
  336.    
  337.     scanf ("%d", &opc);
  338.        
  339.     switch (opc)
  340.     {
  341.         case 1:
  342.             adicionarmedico();
  343.             break;
  344.        
  345.         case 2:
  346.             apagarmedico();
  347.             break;
  348.        
  349.         case 3:
  350.             adicionarpaciente();
  351.             break;
  352.        
  353.         case 4:
  354.             adicionarconsulta();
  355.             break;
  356.            
  357.         case 5:
  358.             buscardata();
  359.             break;
  360.            
  361.         default:
  362.             printf ("Escolha uma das opcoes validas.");
  363.     }
  364.    
  365.     }while (opc<6);
  366.    
  367.     system ("cls");
  368.     printf ("Ate a proxima vez! ;)\n");
  369.    
  370.     system ("pause");
  371.     return 0;
  372. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement