Ir para conteúdo
Fórum Script Brasil

Montoni

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por Montoni

  1. 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");
    }}}
     

×
×
  • Criar Novo...