Ir para conteúdo
Fórum Script Brasil
  • 0

Cadastro de Pacientes! Trabalho PIM


Montoni

Pergunta

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 para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...