
Pedroso de Paula
Membros-
Total de itens
2 -
Registro em
-
Última visita
Sobre Pedroso de Paula

Pedroso de Paula's Achievements
0
Reputação
-
Bom dia galera, sei que foje um pouco a temática do fórum, mas vamos lá. Estou a elaborar um Data Warehouse, porém necessito de uma base de dados bem povoada. Obtive informações que o IBGE poderia disponibilizar essa base de dados. Porém revirando o site, não obtive sucesso até o presente momento. Se alguém já fez isso, ou sabe como faz, poderia me dizer como? Ou algum outro lugar que eu possa obter uma base de dados livre. Agradeço, qualquer informação. :)
-
Galera, eu estou com esse trabalho, e ele está com erros ainda, e preciso de um auxílio. Eu tenho as estruturas aluno e disciplina, com isso eu preciso cadastrar o aluno(isso já funciona) e uma lista de disciplinas para cada aluno, a questão é que eu não encontrei o meio para referenciá-las para cada aluno, sei que usa ponteiros mas não tive a visão ainda. Se alguém tiver uma dica de como se resolve isso, sou grato desde já. Abraço! #include <stdio.h> #include <conio.h> #include <string.h> #include <math.h> #include <stdlib.h> struct disciplina { int codigod, n_creditos, periodod; char nomed[50]; struct disciplina *esq, *dir; }; struct disciplina *pinicio; struct aluno //Declaração da estrutura aluno { int codigo;//Atributos da estrutura aluno char nome[50], endereco[50], curso[50], periodo[50]; struct aluno *proximo; struct disciplina *piniciodisciplina; }; struct aluno *inicio; //Primeiro Matricula //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //SubRotinas Utilizadas //Aluno void insereInicio(int codigo); void removeInicio(); void insereDepois(struct aluno *a, int codigo); void remove_depois(struct aluno *a); void percorreLista(); void insereOrdenado(int codigo); void remove_ordenado(int codigo); //Disciplina void insereInicio_Disciplina(struct aluno **piniciodisciplina, int codigod); void insereDepois_Disciplina(struct disciplina *p, int codigo, int codigod); void removeInicio_Disciplina(); void removeDepois_Disciplina(struct disciplina *p); void percorreLista_Disciplina(int codigo); void insereOrdenado_Disciplina(struct aluno **piniciodisciplina, int codigod); void remove_ordenado_Disciplina(int codigo, int codigod); void busca_aluno(int codigo); //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// main(){ int x = 1, codigo, codigod; while(x != 7) { printf("\n*************** Matricula de Aluno ***************\n\n\n"); //Menu printf("Para cadastrar um novo aluno.....................Digite 1:\n\n"); printf("Para imprimir a lista de alunos..................Digite 2:\n\n"); printf("Para remover um Aluno............................Digite 3:\n\n"); printf("Para adicionar uma Disciplina para um aluno......Digite 4:\n\n"); printf("Para remover uma Disciplina......................Digite 5:\n\n"); printf("Para imprimir lista de disciplinas de um Aluno...Digite 6:\n\n"); printf("Para sair........................................Digite 7:\n\n"); printf("Escolha: "); scanf("%d", &x); system("cls"); //Limpa a Tela if(x == 1) //Insere um novo cadastro ordenadamente { printf("\n*************** Matricula de Aluno ***************\n\n\n"); fflush(stdin); printf("Digite o codigo: "); scanf("%d", &codigo); fflush(stdin); insereOrdenado(codigo); } if(x == 2)//Imprime a lista de alunos percorreLista(); if(x == 3)// Remove Aluno { printf("Digite o codigo: "); //Remova o aluno pelo codigo scanf("%d", &codigo); remove_ordenado(codigo); } if(x == 4)//Adiciona uma Disicplina { printf("\n*************** Cadastro de Disciplinas ***************\n\n\n"); fflush(stdin); printf("Digite o codigo do Aluno: "); scanf("%d", &codigo); busca_aluno(codigo); } if(x == 5)//Remove Uma Disciplna { printf("Digite o Codigo do Aluno"); scanf("%d", &codigo); printf("\nDigite o codigo: "); scanf("%d", &codigod); remove_ordenado_Disciplina(codigo, codigod); } if(x == 6)//Imprime Lista de Disciplinas de um Alunos { fflush(stdin); printf("\n\nDigite o Codigo do Aluno: "); scanf("%d", &codigo); percorreLista_Disciplina(codigo); } if(x == 7)// Sair { system("cls"); //Limpa a Tela printf("\n\nPressione qualquer tecla para sair...."); getch(); } if(x != 1 && x != 2 && x != 3 && x != 4 && x != 5 && x != 6 && x != 7) //Verifica se foi digitado um valor valido de 1 a 7 { system("cls"); //Limpa a Tela printf("\n\nValor Invalido!\n\nDigite Novamente\n\n"); } }//Fim do While }//Fim do Main //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// void insereInicio(int codigo){// Insere um novo Aluno no ínicio da Fila, Passando todos atributos por referência struct aluno *aux; aux =(struct aluno*)malloc(sizeof(struct aluno)); //Aloca Espaço na Memoria fflush(stdin); //Definindo atributos com base na chave código aux ->codigo = codigo; //Insere Codigo na Estrutura aluno printf("Digite o Nome: "); gets(aux->nome); //Insere Nome na Estrutura aluno fflush(stdin); printf("Digite o Curso: "); gets(aux->curso); //Insere Curso na Estrutura aluno fflush(stdin); printf("Digite o Endereco: "); gets(aux->endereco); //Insere Endereço na Estrutura aluno fflush(stdin); printf("Digite o Periodo: "); gets(aux->periodo); //Insere Periodo na Estrutura aluno fflush(stdin); system("cls"); //Limpa Tela aux->proximo = inicio; inicio = aux; printf("Aluno Inserido com sucesso"); getch(); system("cls"); //Limpa a Tela printf("\n\nPressione qualquer tecla para voltar ao menu"); } void removeInicio(){ // Remove o primeiro registro struct aluno *aux; aux = inicio; inicio = inicio->proximo; free(aux); printf("Aluno removido com sucesso"); system("cls"); //Limpa a Tela printf("\n\nPressione qualquer tecla para voltar ao menu"); getch(); } //////////////////////////////////////////////////////////////////////////////// void insereDepois(struct aluno *a, int codigo){ //Insere uma matrícula após outra matrícula específica struct aluno *aux,c; aux =(struct aluno*)malloc(sizeof(struct aluno)); //Aloca Espaço na Memoria aux->codigo = codigo; //Definindo atributos com base na chave código printf("Digite o Nome: "); gets(aux->nome); fflush(stdin); printf("Digite o Curso: "); gets(aux->curso); fflush(stdin); printf("Digite o Endereco: "); gets(aux->endereco); printf("Digite o Periodo: "); gets(aux->periodo); fflush(stdin); system("cls"); aux->proximo = a->proximo; a->proximo = aux; printf("Aluno Inserido com sucesso"); getch(); system("cls"); //Limpa a Tela } void remove_depois(struct aluno *a){ // Remove uma matrícula após outra matrícula específica struct aluno *aux; aux = a->proximo; a->proximo = aux->proximo; free(aux); printf("Aluno removido com sucesso"); getch(); system("cls"); //Limpa a Tela } //////////////////////////////////////////////////////////////////////////////// void percorreLista() //Faz a listagem de todas matriculas da Estrutura, e as imprimem { struct aluno *p; p = inicio; printf("\n*************** Alunos Matriculados ***************\n\n\n"); while(p != NULL) { fflush(stdin); printf("Codigo = %d \n\n", p->codigo); fflush(stdin); printf("Nome = %s\n\n" ,p->nome); fflush(stdin); printf("Endereco = %s \n\n" , p->endereco); fflush(stdin); printf("Curso = %s \n\n", p->curso); fflush(stdin); printf("Periodo = %s \n\n\n\n\n", p->periodo); fflush(stdin); p = p->proximo; } getch(); system("cls"); //Limpa a Tela } //////////////////////////////////////////////////////////////////////////////// void insereOrdenado(int codigo) /*Insere um valor na lista de alunos de acordo com seu código*/ { struct aluno *p, *q; p = inicio; if((p == NULL)||(codigo < p->codigo)) { insereInicio(codigo); return; } q = p; while((q != NULL) && (q->codigo < codigo)) { p = q; q = p->proximo; } if((q == NULL) || (q->codigo > codigo)) insereDepois(p,codigo); else printf("\nElemento já Existe"); } //////////////////////////////////////////////////////////////////////////////// void remove_ordenado(int codigo) { struct aluno *p, *q; p = inicio; if (p == NULL) { printf("\n\nLista Vazia!"); getch(); system("cls"); //Limpa a Tela return; } if (codigo == p->codigo) { removeInicio(); return; } q = p; while(q != NULL && q->codigo < codigo) { p = q; q = p->proximo; } if (q!=NULL && q->codigo == codigo) remove_depois(p); else { printf("\n\nElemento não Cadastrado!"); getch(); system("cls"); //Limpa a Tela } } //////////////////////////////////////////////////////////////////////////////// void insereInicio_Disciplina(struct disciplina **piniciodisciplina, int codigod) { struct disciplina *aux; aux=(struct disciplina *)malloc(sizeof(struct disciplina)); aux->codigod = codigod; fflush(stdin); printf("\nDigite o Nome: "); gets(aux->nomed); fflush(stdin); printf("\nDigite o Periodo: "); scanf("%d", &aux->periodod); fflush(stdin); printf("\nDigite o Numeros de Creditos: "); scanf("%d", &aux->n_creditos); system("cls"); //Limpa a Tela aux->dir = pinicio; aux->esq = NULL; if (pinicio != NULL) (pinicio)->esq = aux; pinicio=aux; printf("Disciplina Inserida com sucesso"); getch(); system("cls"); //Limpa a Tela } //////////////////////////////////////////////////////////////////////////////// void insereDepois_Disciplina(int codigod, struct disciplina *p) { struct disciplina *aux; aux=(struct disciplina *)malloc(sizeof(struct disciplina)); aux ->codigod = codigod; fflush(stdin); printf("\nDigite o Nome: "); gets(aux->nomed); fflush(stdin); printf("\nDigite o Periodo: "); scanf("%d", &aux->periodod); fflush(stdin); printf("\nDigite o Numeros de Creditos: "); scanf("%d", &aux->n_creditos); system("cls"); //Limpa a Tela aux ->dir=p->dir; aux ->esq=p; if (p->dir!=NULL) (p->dir)->esq = aux; p->dir=aux; printf("\n\n\nDisciplina Inserida com sucesso"); getch(); system("cls"); //Limpa a Tela } //////////////////////////////////////////////////////////////////////////////// void removeInicio_Disciplina() { struct disciplina *aux; aux = pinicio; pinicio=(pinicio)->dir; if(pinicio != NULL) (pinicio)->esq=NULL; free(aux); printf("Disciplina Removida com sucesso"); getch(); system("cls"); //Limpa a Tela } //////////////////////////////////////////////////////////////////////////////// void removeDepois_Disciplina(struct disciplina *p) { struct disciplina *aux; aux = p->dir; p->dir = aux->dir; if (aux->dir != NULL) (aux->dir)->esq=p; free(aux); printf("Disciplina Removida com sucesso"); getch(); system("cls"); //Limpa a Tela } //////////////////////////////////////////////////////////////////////////////// void percorreLista_Disciplina(int codigo) { struct disciplina *p; p = pinicio; printf("***********Disciplinas Cadastradas**********\n"); while(p != NULL) { { printf("\n\nCodigo: %d \n\n" , p->codigod); printf("Nome: %s \n\n" , p->nomed); printf("Periodo: %d \n\n" , p->periodod); printf("Numero de Creditos: %d \n\n\n\n" , p->n_creditos); printf("____________________________________________________________"); } p = p->dir; } getch(); system("cls"); //Limpa a Tela } //////////////////////////////////////////////////////////////////////////////// void insereOrdenado_Disciplina(struct aluno *s, int codigod) { struct disciplina *p, *q; p = pinicio; if((p == NULL)||(codigod < p->codigod)) { insereInicio_Disciplina(&(s->piniciodisciplina),codigod); return; } q=p; while((q!=NULL) && (q->codigod < codigod)) { p=q; q=p->dir; } if((q == NULL) || (q->codigod > codigod)) insereDepois_Disciplina(codigod, p); else printf("\nElemento já Existe"); } //////////////////////////////////////////////////////////////////////////////// void remove_ordenado_Disciplina(int codigo, int codigod) { struct disciplina *p,*q; p = pinicio; if (p==NULL) { printf("lista vazia"); getch(); return; } if (codigod == p->codigod) { removeInicio_Disciplina(); return; } q = p; while (q !=NULL && q->codigod < codigod ) { p = q; q = p->dir; } if (q != NULL && q->codigod == codigod) removeDepois_Disciplina(p); else { printf("\nElemento não Cadastrado"); getch(); } } //////////////////////////////////////////////////////////////////////////////// void busca_aluno(int codigo) { int codigod; struct aluno *p; p = inicio; while(p != NULL) { if(codigo == p->codigo) { printf("\nDigite o Codigo da Disciplina: "); scanf("%d", &codigod); insereOrdenado_Disciplina(p,codigod); break; } p = p->proximo; } getch(); }