Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <string.h>
- #include <conio.h>
- #include "header.h"
- typedef int ITEM_TYPE ;
- int main() {
- AlunoNode* alunos_lista = (AlunoNode*)malloc(sizeof(AlunoNode));
- alunos_lista->info = NULL;
- alunos_lista->next = NULL;
- DisciplinaNode* disc_lista = (DisciplinaNode*)malloc(sizeof(DisciplinaNode));
- disc_lista->info = NULL;
- disc_lista->next=NULL;
- ExameNode* exame_lista = (ExameNode*)malloc(sizeof(ExameNode));
- exame_lista->info = NULL;
- exame_lista->next=NULL;
- FILE *fich_alunos;
- fich_alunos = fopen("Alunos.txt", "r");
- FILE *fich_exames;
- fich_exames = fopen("Exames.txt", "r");
- menu(alunos_lista,exame_lista,disc_lista);
- }
- void menu(AlunoNode* alunos_lista,ExameNode* exame_lista,DisciplinaNode* disc_lista){
- int tru=0;
- int resp;
- int pos=1;
- int c;
- while (!tru)
- {
- system("cls");
- printf("--------------------------------------------------------------------------------\n Bem-Vindo\n\n--------------------------------------------------------------------------------\n*Por favor, escolha uma opcao:\n");
- switch (pos)
- {
- case 1:
- printf("-->Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n ");
- break;
- case 2:
- printf(" Criar/Modificar dados de um aluno.\n-->Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
- break;
- case 3:
- printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n-->Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
- break;
- case 4:
- printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n-->Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
- break;
- case 5:
- printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n-->Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
- break;
- case 6:
- printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n-->Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
- break;
- case 7:
- printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n-->Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
- break;
- case 8:
- printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n-->Sair.\n");
- break;
- }
- switch((c=getch()))
- {
- case 72:
- pos--;
- if (pos<1){pos=8;}
- break;
- case 80:
- pos++;
- if (pos>8){pos=1;}
- break;
- case 13:
- printf("\a");
- switch(pos)
- {
- case 1:
- system("cls");
- printf("Pretende adicionar ou modificar a informacao sobre um aluno?\nPara adicionar escreva (0).\n Para modificar escreva (1).\n Resposta : ");
- scanf("%d", &resp);
- if(resp == 0){
- adicionar_aluno(alunos_lista,exame_lista,disc_lista);
- }
- else {
- modificar_aluno(alunos_lista);
- }
- break;
- case 2:
- system("cls");
- printf("Pretende adicionar ou modificar a informacao sobre uma disciplina?\nPara adicionar escreva (0).\t Para modificar escreva (1).\t Para apagar disciplina escreva(2)\n Resposta : ");
- scanf("%d", &resp);
- if(resp == 0){
- adicionar_disciplina(disc_lista);
- }
- else if(resp ==1) {
- modificar_disciplina(disc_lista,alunos_lista,exame_lista);
- }
- else if(resp==2) {
- apaga_disciplina(disc_lista,alunos_lista,exame_lista);
- }
- break;
- case 3:
- system("cls");
- printf("Pretende Criar um exame ou configurar a sala para um exame?\n Para criar um exame escreva (0).\t Para configurar uma sala escreva(1).");
- scanf("%d",&resp);
- if(resp==0){
- adicionar_exame(disc_lista,exame_lista);
- }
- break;
- case 4:
- system("cls");
- //apaga_exame(exame_lista);
- break;
- case 5:
- system("cls");
- ///imprime_exame(exame_lista,disc_lista);
- break;
- case 6:
- system("cls");
- printf("O que pretende imprimir?\nAlunos escreva(0).\t Disciplinas escreva(1).\tExames escreva(2)\n Resposta : ");
- scanf("%d", &resp);
- if(resp == 0){
- imprime_aluno1(alunos_lista);
- }
- else if(resp ==1) {
- imprime_disciplina(disc_lista);
- }
- else if(resp==2) {
- imprime_exames(exame_lista);
- }
- system("cls");
- break;
- case 7:
- system("cls");
- //Verificar_salas();
- break;
- case 8:
- exit(0);
- }
- break;
- }
- }
- }
- AlunoNode* cria_aluno(Aluno* al){
- printf("Nome do Aluno: ");
- al->nome = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(al->nome);
- printf("Numero do Aluno: ");
- scanf("%d",&(al->numero));
- printf("Curso do Aluno: ");
- al->curso = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(al->curso);
- printf("Ano do Aluno: ");
- scanf("%d",&al->ano);
- printf("Regime do aluno: ");
- al->regime = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(al->regime);
- return al ;
- }
- AlunoNode* adicionar_aluno(AlunoNode* alunos_lista,ExameNode* exame_lista,DisciplinaNode* disc_lista)
- {
- Aluno* novo = (Aluno*)malloc(sizeof(Aluno));
- novo = cria_aluno(novo);
- while(alunos_lista->next!=NULL){
- alunos_lista = alunos_lista->next;
- }
- AlunoNode* prox = (AlunoNode*)malloc(sizeof(AlunoNode));
- novo->next = NULL ;
- prox->info = novo ;
- prox->next = NULL ;
- alunos_lista->next = prox ;
- int resp = 0;
- while(resp == 0){
- printf("Pretende inscrever o aluno numa disciplina?\n Para adicionar escreva(0)\tCaso contrario escreva (1).");
- scanf("%d",&resp);
- if(resp==1){
- system("cls");
- break ;
- }
- ///inscrever_aluno_disciplina(exame_lista,alunos_lista);
- }
- while(resp == 1){
- printf("Pretende inscrever o aluno num exame?\n Para adicionar escreva(1)\tCaso contrario escreva (0).");
- scanf("%d",&resp);
- if(resp==0){
- system("cls");
- }
- else{
- inscrever_aluno(exame_lista,alunos_lista,disc_lista);
- }
- }
- }
- DisciplinaNode* cria_disciplina(Disciplina* nova){
- printf("Nome da Disciplina: ");
- nova->nome_disciplina = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(nova->nome_disciplina);
- printf("Nome do docente: ");
- nova->nome_docente = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(nova->nome_docente);
- return nova ;
- }
- DisciplinaNode* adicionar_disciplina(DisciplinaNode* disc_lista)
- {
- Disciplina* novo = (Disciplina*)malloc(sizeof(Disciplina));
- novo = cria_disciplina(novo);
- while(disc_lista->next!= NULL )
- {
- disc_lista = disc_lista->next ;
- }
- DisciplinaNode* prox = (DisciplinaNode*)malloc(sizeof(DisciplinaNode));
- novo->next = NULL ;
- prox->info = novo ;
- prox->next = NULL ;
- disc_lista->next = prox ;
- printf("%s,%s",disc_lista->next->info->nome_disciplina,disc_lista->next->info->nome_docente) ;
- fflush(stdin);
- getchar();
- }
- ExameNode* cria_exame(Exame* e){
- printf("Epoca do exame:(n-normal/r-recurso/e-especial ");
- e->epoca_exame = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(e->epoca_exame);
- printf("Sala: ");
- e->sala = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(e->sala);
- printf("Duracao: ");
- scanf("%d",&e->duracao);
- printf("Data: (Formato : dd/mm/aaaa)\n");
- scanf("%d/%d/%d",&e->dia,&e->mes,&e->ano);
- printf("Horas : (Formato : hh:mm)\n");
- scanf("%d:%d",&e->hora,&e->min);
- return e ;
- printf("Epoca do Exame = %s\nDuracao: %ddata (dia/mes/ano): %d/%d/%d \nhoras: %d:%d\n salas:%s ",e->epoca_exame,e->duracao,e->dia,e->mes,e->ano,e->hora,e->min,e->sala);
- return e ;
- }
- DisciplinaNode* adicionar_exame(DisciplinaNode* disc_lista,ExameNode* exame_lista){
- printf("Qual a disciplina a qual pretende adicionar um exame?\n Resposta : ");
- char a = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(a);
- while(disc_lista!= NULL )
- {
- if (disc_lista->info->nome_disciplina == a){
- break ;
- }
- disc_lista = disc_lista->next ;
- }
- DisciplinaNode* prox = (DisciplinaNode*)malloc(sizeof(DisciplinaNode));
- Exame* novo = (Exame*)malloc(sizeof(Exame));
- novo = cria_exame(novo);
- novo->next = NULL ;
- prox->info = novo ;
- prox->next = NULL ;
- disc_lista->info->exame_lista = prox ;
- }
- void modificar_aluno(AlunoNode* lista)
- {
- int opcao = 1,num;
- printf("Qual o numero do aluno que pretende modificar?\n Resposta : ");
- scanf("%d",&num);
- lista = lista->next;
- printf("Alunos existentes:\n");
- while(lista!= NULL){
- printf("Alunos existentes:\n");
- if(lista->info->nome == num){
- printf("iguais") ;
- printf("O que deseja modificar? (1 - Nome , 2 - Numerp , 3- Ano, 4- Regime, 5-Curso, 6-terminar modificacoes) ");
- scanf("%d",&opcao);
- switch(opcao)
- {
- case 1:
- printf("Nome do Aluno: ");
- lista->info->nome = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(lista->info->nome);
- case 2:
- printf("Numero do Aluno: ");
- scanf("%d",&lista->info->numero);
- case 3:
- printf("Ano do Aluno: ");
- scanf("%d",&lista->info->ano);
- case 4:
- printf("Regime do aluno: ");
- lista->info->regime = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(lista->info->regime);
- case 5:
- printf("Curso do Aluno: ");
- lista->info->curso = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(lista->info->curso);
- case 6:
- break;
- }
- break;
- }
- else {
- lista = lista->next ;
- }
- }
- fflush(stdin);
- getchar();
- }
- AlunoNode* apaga_aluno(AlunoNode* aluno_lista,ExameNode* exame_lista,DisciplinaNode* disc_lista){
- int num ;
- AlunoNode* atual = aluno_lista->next;
- AlunoNode* ant = aluno_lista;
- printf("Qual o numero do aluno que pretende apagar?\n Resposta : ");
- scanf("%d",&num);
- while(atual != NULL )
- {
- if(atual->info->numero == num){
- break;
- }
- aluno_lista = atual ;
- atual = atual->next ;
- }
- aluno_lista->next = atual->next;
- free(atual);
- printf("Aluno Apagado!\n");
- getchar();
- }
- DisciplinaNode* apaga_disciplina(AlunoNode* alunos_lista,ExameNode* exame_lista,DisciplinaNode* disc_lista){
- char nome[100] ;
- DisciplinaNode* atual=disc_lista->next;
- printf("Qual a disciplina que pretende apagar?\n Resposta : ");
- scanf("%s",&nome);
- while(atual != NULL )
- {
- if((atual)->info->nome_disciplina == nome){
- break;
- }
- atual = (atual)->next ;
- }
- DisciplinaNode* prox=(atual)->next;
- free(atual);
- atual->next = prox;
- printf("Disciplina Apagada!\n");
- getchar();
- }
- DisciplinaNode* modificar_disciplina(AlunoNode* alunos_lista,ExameNode* exame_lista,DisciplinaNode* atual)
- {
- int opcao ;
- printf("Qual a disciplina que pretende modificar?\n Resposta : ");
- char nome = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(nome);
- AlunoNode* prox = atual->next ;
- while(prox!= NULL )
- {
- if(atual->info->nome_disciplina==nome){
- printf("O que deseja modificar? (1 - Nome da disciplina , 2 - Nome do docente, 3-terminar modificacoes) ");
- scanf("%d",&opcao);
- switch(opcao)
- {
- case 1:
- printf("Nome da disciplina: ");
- atual->info->nome_disciplina = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(atual->info->nome_disciplina);
- case 2:
- printf("Nome do docente: ");
- atual->info->nome_disciplina = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(atual->info->nome_disciplina);
- case 3:
- break;
- }
- }
- else {
- atual = prox ;
- prox = atual->next ;
- }
- }
- }
- ExameNode* procura_exame(ExameNode* exame_lista,DisciplinaNode* disc_lista )
- {
- ExameNode *atual = exame_lista->next ;
- printf("Qual é a disciplina?\n Resposta : ");
- char d = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(d);
- printf("Qual é a epoca do exame?\n(n-Normal,r-Recurso,e-Especial)\n Resposta: ");
- char ep = (char*)malloc(30*sizeof(char));
- fflush(stdin);
- gets(ep);
- int l = 1;
- int num;
- while(atual->next != NULL )
- {
- if(atual->info->epoca_exame == ep && disc_lista->info->nome_disciplina == d){
- l = 1;
- break;
- }
- printf("a");
- atual = atual->next ;
- l = 0 ;
- }
- if(l == 1){
- return atual;
- } else {
- printf("Aluno nao encontrado!");
- }
- }
- //funзгo que imprime da lista de ponteiros
- AlunoNode* procura_aluno(AlunoNode* atual)
- {
- int l = 1;
- int num;
- printf("Qual o numero?\n Resposta : ");
- scanf("%d",&num);
- while(atual->next != NULL )
- {
- if(atual->info->numero == num){
- l = 1;
- break;
- }
- printf("a");
- atual = atual->next ;
- l = 0 ;
- }
- if(l == 1){
- return atual;
- } else {
- printf("Aluno nao encontrado!");
- }
- }
- /*ExameNode* imprime_exame(ExameNode* exame_lista,DisciplinaNode* disc_lista){
- ExameNode *atual = procura_exame(exame_lista,disc_lista);
- printf("a");
- printf("Informacoes do exame:\n Disciplina: %s\nEpoca de Exame: %s\nSala: %s\nDuracao: %d\nHora : %d:%d\nData: %d/%d/%d",(atual)->info->disc_lista->info->nome_disciplina,(atual)->info->epoca_exame
- ,(atual)->info->sala,(atual)->info->duracao,(atual)->info->hora,(atual)->info->min,(atual)->info->dia,(atual)->info->mes,(atual)->info->ano);
- }*/
- ExameNode* imprime_alunos_exame(ExameNode* atual){
- while(atual->info->alunos_lista->next!=NULL){
- printf("Nome = %s\tnumero = %d\n",atual->info->alunos_lista->info->nome,atual->info->alunos_lista->info->numero) ;
- atual->info->alunos_lista->next ;
- }
- }
- AlunoNode* imprime_aluno(AlunoNode* aluno_lista){
- aluno_lista = procura_aluno(aluno_lista);
- printf("c") ;
- printf("Informacoes do aluno:\n Nome: %d\nCurso: %s\nAno: %d\nRegime : %s",aluno_lista->info->nome,aluno_lista->info->curso,aluno_lista->info->ano,aluno_lista->info->regime);
- getchar();
- printf("Exames em que o aluno o inscrito");
- /*while(atual->info->exames_lista->next!=NULL){
- printf("Disciplina: %s\tEpoca: %s\n",atual->info->exames_lista->info->disc_lista->info->nome_disciplina,atual->info->exames_lista->info->epoca_exame);
- }*/
- }
- ExameNode* inscrever_aluno(ExameNode* exame_lista,AlunoLista aluno_lista,DiscLista disc_lista){
- ExameNode *atual1 = exame_lista;
- AlunoNode *atual2 = aluno_lista;
- ExameNode *exame = procura_exame(exame_lista,disc_lista);
- AlunoNode *aluno = procura_aluno(aluno_lista);
- ExameNode *curr = exame->info->alunos_lista;
- while(curr->next!=NULL){
- if(curr->info->alunos_lista->info->numero == aluno->info->numero){
- printf("Aluno já inscrito no exame");
- break;
- }
- curr=curr->next;
- }
- curr->info=aluno;
- int opcao = 0;
- printf("Pretende adicionar mais alunos(0-Nao 1-Sim) :"); scanf("%d",&opcao) ;
- while(opcao == 1){
- inscrever_aluno(exame_lista,aluno_lista,disc_lista) ;
- }
- }
- void imprime_aluno1(AlunoNode *lista){
- lista = lista->next;
- printf("Alunos existentes:\n");
- while(lista!= NULL){
- printf("%s,%d,%s,%d,%s\n",lista->info->nome,lista->info->numero,lista->info->curso,lista->info->ano,lista->info->regime);
- lista = lista->next;
- }
- fflush(stdin);
- getchar();
- system("cls");
- }
- void imprime_disciplina(DisciplinaNode *lista){
- lista = lista->next;
- printf("Disciplinas existentes:\n");
- while(lista!= NULL){
- printf("%s,%s",lista->info->nome_disciplina,lista->info->nome_docente);
- lista = lista->next;
- }
- fflush(stdin);
- getchar();
- system("cls");
- }
- void imprime_exames(ExameNode *lista){
- lista = lista->next;
- printf("Exames existentes:\n");
- while(lista!= NULL){
- printf("%s,%s,%d,%d/%d/%d,%d:%d\n",lista->info->epoca_exame,lista->info->sala,lista->info->duracao,lista->info->dia,lista->info->mes,lista->info->ano,lista->info->hora,lista->info->min);
- lista = lista->next;
- }
- fflush(stdin);
- getchar();
- system("cls");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement