#include #include #include #include bool Gerar_Base_Aleatoria(Banco_Dados *banco_dados) { int i=1000000; Preenche preenche; // Mensagem: printf("\n\033[1;33mGerar base randômica\033[0m\n"); // Tenta ler um número válido: while (i > 999999) { printf(" \033[0;1mDigite o número de registros a ser inserido:\033[1;30m (1-999999, <1=Cancela)\033[1;35m "); scanf("%i",&i); printf("\033[0m"); if (i > 999999) { printf("\n \033[31mERRO:\033[0;1m O número máximo de registros é 999.999, devido ao fato de o número poder ter somente 6 posições.\033[0m\n"); } else if (i < 1) return false; } // Mensagem: printf("\033[0;1m Ok, gerando \033[1;36m%i\033[0;1m registros randomicos.\033[0m\n",i); // Recomeça banco de dados banco_dados->Apaga(); // Insere e mostra status: printf("\033[0;1m Feito: "); int j; for (j=1; j <= i; j++) { if (!banco_dados->Insere(preenche.Numero(), preenche.Nome().Texto(), preenche.Idade(), preenche.Diagnostico().Texto(), preenche.Tratamento().Texto())) { j--; // o numero foi repetido, volta... } else { printf("\033[11G\033[1;35m%3.1f%% \033[1;30m(\033[1;36m%06i\033[1;30m/\033[0;36m%06i\033[1;30m)\033[0m",100.0*j/i,j,i); } } printf("\n\033[0;1m Base gerada.\n\033[0m"); return true; } bool Procurar_Registro(Banco_Dados *banco_dados) { int i; // Mensagem: printf("\n\033[1;33mProcurar por Registro\033[0m\n"); // Lê numero a ser procurado printf("\033[0;1m Número a ser procurado: \033[1;35m"); scanf("%d",&i); printf("\033[0m"); // Procura no índice: Registro *reg; reg = banco_dados->Procura_Numero(i); // Mostra resultado: if (reg != NULL) { printf(" \033[1;30m#\033[0m#\033[1m#\033[1;36mN\033[0;36múmero\033[0;1m.....: \033[1;35m%06i\033[0m\n" " \033[1;30m#\033[0m#\033[1m#\033[1;36mN\033[0;36mome\033[0;1m.......: \033[1;35m%s\033[0m\n" " \033[1;30m#\033[0m#\033[1m#\033[1;36mI\033[0;36mdade\033[0;1m......: \033[1;35m%i\033[0m\n" " \033[1;30m#\033[0m#\033[1m#\033[1;36mD\033[0;36miagnóstico\033[0;1m: \033[1;35m%s\033[0m\n" " \033[1;30m#\033[0m#\033[1m#\033[1;36mT\033[0;36mratamento\033[0;1m.:\n", reg->Numero(), reg->Nome().Texto(), reg->Idade(), reg->Diagnostico().Texto()); Lista_Simples *lista = reg->Tratamento().Quebra('/'); Lista_Simples *aux = lista; while (aux != NULL) { printf(" \033[0;1m+-> \033[1;35m%s\033[0m\n",aux->Valor().Texto()); aux=aux->Proximo(); } delete lista; delete reg; return true; } else { printf("\033[1;36m %i\033[0;1m não existe.\033[0m\n",i); return false; } return false; } bool Calcula_Media(Banco_Dados *banco_dados) { double media; // Mensagem: printf("\n\033[1;33mCalcular média das Idades\033[0m\n"); printf("\033[0;1m Calculando a média das idades.\033[0m.\033[1;30m.\033[0m\n"); // Calcula e retorna resultado if (banco_dados->Media("idade",&media) == true) printf("\033[0;1m Média = \033[1;36m%i\033[0m\n",(int) media ); else printf("\033[1;31mERRO:\033[0;1m Não existem registros para se calcular a média\033[0m\n"); return true; } int Menu() { int opc=' '; printf("\033[1;36mMC326 \033[0;1m- \033[1;35mH\033[0;35mospital \033[1;35mU\033[0;35mnicamp \033[0;1m(TP1)\033[0m\n" "\033[1;36mGrupo:\033[0;1m Gustavo Barbieri(ra008849), Ivens Alves(ra008908), Walter Wong(ra010080)\033[0m\n" "\033[1;36mE\033[0;36mscolha uma das opções\033[1;36m:\033[0m\n" " \033[1;35m0\033[0;1m Sair\033[0m\n" " \033[1;35m1\033[0;1m Gerar base aleatória\033[0m\n" " \033[1;35m2\033[0;1m Calcular média\033[0m\n" " \033[1;35m3\033[0;1m Procurar por registro\033[0m\n" "\033[0;1mOpção escolhida: \033[1;35m"); scanf("%i",&opc); printf("\033[0m"); return opc; } int main(void) { Lista_Simples campos; campos.Muda_Valor("NUMERO"); campos.Add_Depois("TRATAMENTO"); campos.Add_Depois("DIAGNOSTICO"); campos.Add_Depois("IDADE"); campos.Add_Depois("NOME"); Banco_Dados banco_dados("dados.dat",campos); int opc; while ((opc=Menu()) != 0) { switch (opc) { case 1: Gerar_Base_Aleatoria(&banco_dados); break; case 2: Calcula_Media(&banco_dados); break; case 3: Procurar_Registro(&banco_dados); break; } printf("\033[16G\033[1;30m---=[\033[0;1mPressione Alguma Tecla Para Continuar\033[1;30m]=---\033[0m\n"); getchar(); getchar(); } printf("\033[1;36mFa\033[0;36mlow\033[1;30mwwww w\033[0m\n\n"); return 0; }