Pages

segunda-feira, 11 de julho de 2016

Sistema de Cadastro para controlar alunos usando Estrutura em C

Uma escola de idiomas precisa de um sistema para auxiliá-la a controlar os cursos que oferece e os alunos que tem. Para isso, é necessário armazenar as seguintes informações:
Sobre os cursos:
            Idioma, duração (em meses) e valor
            Sobre os alunos:
                       Nome, idade, sexo
O sistema deve controlar que curso cada aluno faz, lembrando que um aluno não pode fazer mais de uma vez o mesmo curso. Exiba para o usuário o seguinte menu:
        1-Cadastrar curso
        2-Cadastrar aluno
        3-Matricular aluno
        4-Exibir (Ao fim de cada filtro, exibir o total)
                1-Alunos
                     1-Por idade
                     2-Por sexo
                2-Cursos
                    1-Por duração
                    2-Por valor (maior ou igual ao informado)
      0-Sair

#include<stdio.h>
#include<string.h>
#define T 3
#define Erro_menu "\n\n\t\tOPCAO INVALIDA! ESCOLHA OUTRA OPCAO "
#define ERRO_C "\n\n\t\tVOCE NAO PODE MAIS CADASTRAR"
#define ERRO_V "\n\n\t\tNENHUM CADASTRO ENCONTRADO "

struct Cursos{//Estrutura cursos
char idioma;
int duracao;
float valor;
};

struct Aluno{//Estrutura Alunos
char nome[20],sexo;
int idade,id;
};

struct Matricular{//Estrutura matricula que vai receber os dados do cursos e alunos
char curso,nome[20];
};

int menu();//Função Menu
struct Cursos CadastrarCursos();//estrutura para cadastrar Cursos
char tipoIdiomas(); //Função para Verificar o tipo de Idiomas
int duracaoMeses();//Função para retornar o mês do Ano
struct Aluno CadastrarAlunos(int cont);//estrutura para Cadastrar Aluno
char menuSexo();//Função para retornar o sexo
void exibirCursos(struct Cursos c);//Função para Exibir o Cursos
void exibirAluno(struct Aluno a );//Função para Exibir Aluno
struct Matricular cadastroMatricula(struct Cursos c[T],struct Aluno a[T],int x,int y);//estrutura para Matricular Aluno
int confirIdioma(char i, struct Cursos c);//Função para confirmar o Idioma
void exibirMatricula(struct Matricular m);//Função para Exibir as Matriculas
int confirNome(int id,struct Aluno a);//Função para confirmar o nome

int main(){//função principal 
struct Cursos c[T];
struct Aluno a[T];
struct Matricular m[T];
int cont=0,cont1=0,cont2=0,aux;
int op;
do{
// system("cls");
op = menu();//A variavel op vai receber o valor inteiro da função menu
switch(op){
case 1://Aqui vai cadastrar o curso
if(cont<T){ //Se a quantidade de cursos cadastrados for menor que a constante T entra para efetuar mais um cadastro
c[cont] = CadastrarCursos(); //A estrutura cursos receber os valores da estrutura CadastrarCursos
cont++;//Enclementa mais um no cont
}
else
printf(ERRO_C);//Se não houver mais espaço pra cadastrar entra aqui.
break;
case 2:
if(cont1<T){
a[cont1] = CadastrarAlunos(cont1+1);
cont1++;
}
else{
printf(ERRO_C);
getchar();
               }
break;
case 3:{
if(cont2 <T){
if(cont > 0 && cont1 > 0){
printf("\n MATRICULA DE ALUNO");
printf("\n\t\tCURSOS CADASTRADOS\n");
for(aux=0;aux<cont;aux++)//Exibir os Cursos Cadastrados
exibirCursos(c[aux]);
printf("\n\t\tALUNOS CADASTRADOS\n");
for(aux=0;aux<cont1;aux++)
exibirAluno(a[aux]);//Exibir Alunos Cadastrados
// getchar();
for(aux=0;aux<cont2;aux++){
m[cont2] = cadastroMatricula(c,a,cont,cont1);
}
cont2++;
}
else{
printf("\n\n\\t\t erro aqui\n");
printf(ERRO_V);
getchar();
}
}
else{
printf(Erro_menu);
getchar();
}
break;
}
case 4:
for(aux=0;aux<cont;aux++)
//exibirCursos(c[aux]);
exibirMatricula(m[aux]);
getchar();
break;
case 0:
break;
default:
printf(Erro_menu);
getchar();
break;
}
}while(op!=0);
return 0;
}

int menu(){//função que vai retornar o menu
int op;
printf("1-Cadastrar curso\n2-Cadastrar aluno\n3-Matricular aluno\n4-Exibir\n0-sair: ");
scanf("%d",&op);
getchar();
return op;
}

struct Cursos CadastrarCursos(){ //Estrutura CadastrarCurso que vai retornar na estrutura curso
struct Cursos c;
c.idioma = tipoIdiomas();//Aqui o idioma vai receber da função tipoIdiomas um valor
c.duracao = duracaoMeses(); //aqui vai receber da função o valor da duração do mês
printf("Informe o valor do curso: ");
scanf("%f",&c.valor);
getchar();
return c; //Aqui vai retornar a estrutura curso
}
char tipoIdiomas(){
char id;
do{
printf("\nInforme um curso");
printf("\nI - ingles\nE- espanhol\nJ- japones\nA- alemao: ");
id = toupper(getchar());
if(id != 'I'&& id != 'E' && id != 'J' && id != 'A'){
printf(Erro_menu);
getchar();
}
}while(id != 'I'&& id != 'E' && id != 'J' && id != 'A');
return id;
}
int duracaoMeses(){
int tempo;
do{
printf("\nInforme a duracao do curso em mes de 1 - 12: ");
scanf("%d",&tempo);
if(tempo < 1 || tempo >12){
printf(Erro_menu);
getchar();
}
}while(tempo < 1 || tempo >12);
return tempo;
}

struct Aluno CadastrarAlunos(int cont){
struct Aluno a;
a.id = cont;
printf("Informe o nome do aluno: ");
gets(a.nome);
printf("Informe a idade do aluno: ");
scanf("%d",&a.idade);
getchar();
a.sexo = menuSexo();
return a;
}

char menuSexo(){
char sexo;
do{
printf("\nInforme o sexo do Aluno\nM - Masculino\nF-Feminino: ");
sexo = toupper(getchar());
if(sexo != 'M' && sexo != 'F'){
printf(Erro_menu);
getchar();
}
}while(sexo != 'M' && sexo != 'F');
return sexo;
}
void exibirCursos(struct Cursos c ){
// printf("\n\t\tCURSOS CADASTRADOS\n");
printf("\nIdioma:\tDuracao(meses)\tValor:\n%c\t%d (meses)\tR$: %.2f",c.idioma,c.duracao,c.valor);
printf("\n______________________________\n");
}
void exibirAluno(struct Aluno a ){
// printf("\n\t\tALUNOS CADASTRADOS\n");
printf("\nIndice\tNome\tIdade\tSexo\n%d\t%s\t%d (anos)\t\t%c",a.id,a.nome,a.idade,a.sexo);
printf("\n_____________________________\n");
}

struct Matricular cadastroMatricula(struct Cursos c[T],struct Aluno a[T],int x,int y){
struct Matricular m;
char tipo;
int id, aux,sair=0;
do{
tipo = tipoIdiomas();
for(aux=0;aux<x;aux++){
    if(confirIdioma(tipo,c[aux])){
    sair = confirIdioma(tipo,c[aux]);
    m.curso = tipo ;
    }
    else{
    printf(Erro_menu);
    getchar();
    }
      }
}while(sair!=1);
do{
printf("Informe o indice do Aluno : ");
scanf("%d",&id);
getchar();
for(aux=0;aux<y;aux++){
    if(confirNome(id,a[aux])){
   
    strcpy(m.nome,a[aux].nome);
    }
    else{
    printf(Erro_menu);
    getchar();
    }
      }
}while(!confirNome(id,a[aux]));
return m;
}

int confirIdioma(char i, struct Cursos c){
printf("\n02 - Tipo: %c   struct: %c", i,c.idioma);
return toupper(c.idioma )== i;
}
void exibirMatricula(struct Matricular m){
printf("\t\tALUNOS MATRICULADOS\n");
printf("ALUNOS\tCURSOS\n%s\t%c",m.nome,m.curso);
}

int confirNome(int id,struct Aluno a){
return a.id == id ;
}

Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

0 comentários:

Postar um comentário