Jump to content
Fórum Script Brasil
  • 0

Cadastro de Pacientes! Trabalho PIM


Question

Bom dia a todos, estou tendo um problema com meu projeto, depois que escrevi o código vi que faltou algumas coisas pedidas, como comparar a idade do paciente com mais de 65 anos e informar que ele é paciente de risco e Fazer com que o programa seja salvo em formato binário! Alguém pode me dar uma ajuda????

Segue o Código Fonte: 

 

 

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<locale.h>
#include<string.h>
#include<conio.h>

typedef struct Paciente{
    char nome[50];
    char cpf[50];
    char sexo[20];
    char comorbidades[500];
    int telefone;
    int idade;
    int codi;
    int urg;
    struct Paciente *prox;

}paciente;

typedef struct Listas{
    int qnt;
    struct Paciente *head;
}listas;

typedef struct Arvore{
    struct Paciente *No;
    struct Arvore *Esq;
    struct Arvore *Dir;
}arvore;

int pacientes = 0;

void adicionar(arvore **Arv, paciente *tmp);

listas* inicializarLista(){
    listas *tmp = (listas*)malloc(sizeof(listas));
    tmp->qnt = 0;
    tmp->head = NULL;
    return tmp;
}
//Cadastra os Eletronicos no estoque
void cadastrar_paciente(listas *tmp, arvore *Arv){
      int op_cadastro_paciente = 0;

    printf("\t\t-------------------------CADASTRO-------------------------\n\n");
    do{
        system("cls");
        paciente *aux = (paciente *)malloc(sizeof(paciente));
        printf("\tInforme o nome do paciente\n");
        printf("\tNome: ");
        fflush(stdin);
        gets(aux->nome);
        fflush(stdin);

        printf("\n\tInforme o CPF do paciente\n");
        printf("\tCPF: ");
        scanf("%s", aux->cpf);

        printf("\n\tInforme o telefone do paciente\n");
        printf("\tTelefone: ");
        scanf("%d", &aux->telefone);

        printf("\n\tInforme a idade do paciente\n");
        printf("\tIdade: ");
        scanf("%d", &aux->idade);


        printf("\n\tInforme o sexo do paciente\n");
        printf("\tSexo [M]-[F]: ");
        fflush(stdin);
        scanf("%s", aux->sexo);
        fflush(stdin);

        printf("\n\tInforme as comorbidades do paciente\n");
        printf("\tComorbidades: ");
        fflush(stdin);
        gets(aux->comorbidades);
        fflush(stdin);


        printf("\n\tInforme a urgencia do paciente [de 1 (Mais urgente) a 20 (Menos urgente)]\n");
        printf("\tUrgencia: ");
        scanf("%d", &aux->urg);
        printf("\n\n");


        printf("\n\tInforme o código do paciente\n");
        printf("\tCódigo: ");
        scanf("%d", &aux->codi);
        printf("\n\n");

        //Salva os dados dos Pacientes em TXT
        FILE *paci;
        paci = fopen("Dados_Pacientes.txt", "a+");
        fprintf(paci,"Nome: %s -> CPF: %s -> Sexo: %s -> Idade: %d -> Telefone: %d -> Código: %d\n", aux->nome, aux->cpf, aux->sexo, aux->idade, aux->telefone, aux->codi);
          fclose(paci);

          FILE *sint;
          sint = fopen("Comorbidades.txt", "a+");
          fprintf(sint,"Nome: %s\nIdade: %d\nComorbidades: %s\n", aux->nome,aux->idade, aux->comorbidades);
          fprintf(sint,"----------------------------------------------------------------\n");
        fclose(sint);

        adicionar(&Arv, aux);

        aux->prox = tmp->head;
        tmp->head = aux;
        tmp->qnt++;


        printf("1-Novo cadastro\n2-Voltar ao Menu\n");
        printf("Opção: ");
        scanf("%d", &op_cadastro_paciente);
    }while(op_cadastro_paciente != 2);
}

//Faz a listagem dos pacientes
void listar_pacientes(listas *tmp){
    int op = 0;
    printf("\t----------------------PACIENTES----------------------\n");

    paciente *aux;
    printf("\n\n");
    printf("---------------------------------------------------------------------------------------------------------\n");
    for(aux = tmp->head; aux != NULL; aux = aux->prox){
        printf("Nome: %s\nCPF: %s\nSexo: %s\nIdade: %d\nTelefone: %d\nComorbidades: %s\nCódigo: %d\n", aux->nome, aux->cpf, aux->sexo, aux->idade, aux->telefone,aux->comorbidades, aux->codi);
        printf("---------------------------------------------------------------------------------------------------------\n\n\n");
    }


    printf("---------------------------------------------------------------------------------------------------------\n\n\n");
    printf("\t\t\tExistem %d pacientes cadastrados\n", tmp->qnt);
    free(aux);
    printf("\n\n");
    printf("1-Voltar ao menu\n2-Encerrar o programa ");
    scanf("%d", &op);
    if(op == 2){
        exit(0);
    }
}

void adicionar(arvore **Arv, paciente *pac){
    arvore *temp = NULL;
    if (*Arv == NULL){
        temp = (arvore*)malloc(sizeof(arvore));
        temp->Esq = NULL;
        temp->Dir = NULL;
        temp->No = pac;
        *Arv = temp;
    }
    else {
        if (pac->urg < ((*Arv)->No->urg)){
            adicionar(&((*Arv)->Esq), pac);
        }
        else{
            adicionar(&((*Arv)->Dir), pac);
        }
    }
}

// Em Ordem (Do menor pro maior)
void Mostrar(arvore *Arv){
    if(Arv != NULL){
        Mostrar(Arv->Esq);
        printf("Nome: %s\nCPF: %s\nSexo: %s\nIdade: %d\nTelefone: %d\nComorbidades: %s\nUrgencia: %d\nCódigo: %d\n", Arv->No->nome, Arv->No->cpf, Arv->No->sexo, Arv->No->idade, Arv->No->telefone, Arv->No->comorbidades, Arv->No->urg, Arv->No->codi);
        Mostrar(Arv->Dir);
    }
}


//Alterando os dados dos pacientes
void alterar_paciente(listas* lista_escolhida){
     char nome_substituto[50];
     char cpf_substituto[50];
     int codigo, idade_substituto, telefone_substituto;
     paciente* atual = lista_escolhida->head;
     system("cls");

     printf("\tCódigo do paciente a ser alterado: ");
     scanf("%d", &codigo);

     //Verificando se o código é válido
     while(atual != NULL && atual->codi != codigo){
        atual = atual->prox;
     }


     if(atual!=NULL){
        printf("\n\tNovo nome: ");
        scanf("%s", nome_substituto);
        strcpy(atual->nome,nome_substituto);//Faz a mudança de nome

        printf("\n\tNova idade: ");
        scanf("%d", &idade_substituto);
        atual->idade = idade_substituto;//Altera a idade

        printf("\n\tNovo CPF: ");
        scanf("%s", cpf_substituto);
        strcpy(atual->cpf,cpf_substituto);//Altera o CPF

        printf("\n\tNovo telefone: ");
        scanf("%d", &telefone_substituto);
        atual->telefone = telefone_substituto;//Altera o Telefone


        printf("\n\tDados alterados com sucesso.\n\tVoltando ao menu...");

     }else{
        printf("\n\tpaciente não encontrado\n\tVoltando ao menu...");
     }
     Sleep(3000);

}

listas* excluir_paciente(listas* lista_escolhida){

    //Ponteiro para saber o elemento anterior ao elemento atual da lista.
    paciente *anterior = NULL;
    //Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
    paciente *atual = lista_escolhida->head;
    int codigo;
    system("cls");
    //Requisitando e lendo o código do paciente a ser excluído.
    printf("\n\nCódigo do paciente a ser excluído: ");
    scanf("%d", &codigo);

    //Procurando o paciente na lista.
    while(atual != NULL && atual->codi != codigo){
       anterior = atual;
       atual = atual->prox;
    }

    //Mensagem caso o paciente não seja encontrado.
    if(atual == NULL){
       printf("\n  Paciente não encontrado.");
       Sleep(1500);
       return lista_escolhida;
    }
    //Excluindo o primeiro paciente da lista.
    if(anterior == NULL){
       printf("\n  Paciente excluído com sucesso.");
       lista_escolhida->head = atual->prox;
       Sleep(1500);
       return lista_escolhida;
    //Excluindo um paciente do meio da lista.
    }else{
       printf("\n  Paciente excluído com sucesso.");
       anterior->prox = atual->prox;
       Sleep(1500);
       return lista_escolhida;
    }
    lista_escolhida->qnt--;
    //Desalocando o espaço da memória.
    free(atual);
    return lista_escolhida;
}


//Faz a animação do "Entrando..."
void entrando(){
    int carregando;
    for(carregando=1;carregando<=3;carregando++){
        printf("\n\n\n\t\t\tCarregando.");
           Sleep(100);
        system("cls");
        printf("\n\n\n\t\t\tCarregando..");
        Sleep(100);
        system("cls");
        printf("\n\n\n\t\t\tCarregando....");
        Sleep(100);
        system("cls");
    }
}

//Menu principal
void menu(){

    int op_menu;
    listas *lista_paciente = inicializarLista();
    arvore *Arv = NULL;

    do{
        printf("\t\t--------------------HOSPITAL UNIP COVID-------------------------\n\n");
        printf("\n\n");
        printf("\tEscolha a opcao desejada\n");
        printf("\t[1] - Adicionar paciente\n");
        printf("\t[2] - Alterar dados do paciente\n");
        printf("\t[3] - Exibir pacientes [Por chegada]\n");
        printf("\t[4] - Exibir pacientes [Por urgencia]\n");
        printf("\t[5] - Excluir pacientes\n");
        printf("\t[0] - Encerrar o programa\n");
        printf("\n\tOpcao: ");
        scanf("%d", &op_menu);
        switch(op_menu){
            case 1:
                system("cls");
                cadastrar_paciente(lista_paciente, Arv);
                break;
            case 2:
                system("cls");
                alterar_paciente(lista_paciente);
                break;
            case 3:
                system("cls");
                listar_pacientes(lista_paciente);
                break;
            case 4:
                system("cls");
                printf("-- Pacientes por ordem de urgencia --");
                Mostrar(Arv);
                system("pause>null");
                break;
            case 5:
                system("cls");
                printf("\tQual paciente deseja excluir?\n");
                lista_paciente = excluir_paciente(lista_paciente);
                break;
            case 0:
                exit(0);
                break;
            default:
                printf("\n\n\n\n");
                printf("Opcao invalida\n");
                Sleep(1500);
                printf("\n\n\n\n");
        }
        system("cls");
    }while(op_menu != 0);
}


//Função principal
int main(){

     while(1)
    {

        char string[5];
        char enter[2];

        printf ("\n Digite a senha : ");
        string[0] = getch();
        printf ("*");
        string[1] = getch();
        printf ("*");
        string[2] = getch();
        printf ("*");
        string[3] = getch();
        printf ("*");
        string[4] = getch();
        printf ("*");

        enter[0] = getch();
        if(enter[0] == 13)
        {
            if((string[0] == 'C') && (string[1] == 'o') && (string[2] == 'v') && (string[3] == 'i') && (string[4] == 'd')) // senha correta é "Covid".
            {


                system("color F1");
                system("cls"); // limpa a tela.
                printf ("\n\n\t\tAcesso permitido!\n\n\t\tParabens!\n\t\tTecle Enter para Acessar o Sistema!\n\n\n\n\n\n\n");
                getchar(); // quando precionar o "ENTER" continua o programa.
                system("cls"); // limpa a tela.
            }
            else
            {
                system("color F1");
                system("cls"); // limpa a tela.
                printf ("\n\n\t\tAcesso negado!\n\n\t\tVoce não tem permissao para acesso! Tecle Enter Para Tentar Novamente!\n\n\n\n\n\n\n\n\n\n\n");
                system("pause>null");
                system("cls"); // limpa a tela.

                return main();
            }


    system("color F1");//Muda a cor do programa
    setlocale(LC_ALL,"Portuguese");
    entrando();//Chama a função responsável por realizar a animação
    menu();//Chama o menu principal
    system("pause>null");
}}}
 

Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148875
    • Total Posts
      644917
×
×
  • Create New...