Pages

segunda-feira, 11 de julho de 2016

Sistema de controle de alunos usando Pilha.

Faça um programa que permita ao usuário fazer o cadastro de o acompanhamento dos alunos em uma determinada disciplina. Sobre os alunos é necessário saber:
Nome char[30] Sexo char Idade int Curso char [S-sistemas|A-administração|C-Contabilidade] Nota1float Nota2float
O sistema deve exibir o seguinte menu de opções: 
1-Cadastrar(10) -> O número à direita da opção indica a quantidade de alunos que ainda podem ser cadastrados. 
Este número deve ser atualizado a medida que a opção for selecionada.

2-Exibir(0) -> O número à direita da opção indica a quantidade de alunos que já foram cadastrados. 
Este número deve ser atualizado a medida que um novo cadastrado for realizado.

3-Exibir por curso -> Exibe todos os alunos cadastrados organizados por curso e o total de alunos em cada um.
0-Sair

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MAXIMO 10

struct Alunos{
char nome[30],sexo,curso;
int idade;
float nota1, nota2;

};

struct PILHA{
struct Alunos al;
struct PILHA *prox;
};

typedef struct PILHA pilha;
int menu(int *cadastrados);
int isEmpty(pilha *p);// Inicia Pilha
pilha *iniciaPilha();// Inicia Pilha
pilha *getNode();//obter Nó
void freeNode(pilha *p);//Nó livre
void print(pilha *p);// imprimir
void printCurso(pilha *p);
char menuSexo();
char menuCurso();

int main(){
pilha *pi = iniciaPilha();
int opc, cadastrados = 0;

do{
opc = menu(&cadastrados);
switch(opc){
case 1:{
if(cadastrados<MAXIMO){
if(!isEmpty(pi)){
pi = getNode();
}else{
pilha *temp = getNode();
temp->prox = pi;
pi = temp;
}
cadastrados++;
}else{
system("cls");
printf("\n\n\t\tNAO PODE FAZER MAIS CADASTROS");
getchar();
}
break;
}

case 2:{
if(pi != NULL){
system("cls");
print(pi);
getchar();
}else{
system("cls");
printf("\n\n\tNAO HA SMARTPHONE CADASTRADOS!");
getchar();
}
break;
}
}
}while(opc!=0);

return 0;
}

int menu(int *cadastrados){
int opc;
do{
printf("1-Cadastrar(%d)\n2-Exibir(%d)\n3-Exibir por curso\n0 - sair", MAXIMO -(*cadastrados), *cadastrados);
scanf("%d",&opc);
getchar();
if(opc < 0 || opc > 3){
system("cls");
printf("\n\n\tOPCAO INVALIDA!");
getchar();
}
}while(opc<0 || opc>3);
return opc;
}

int isEmpty(pilha *p){
return p==NULL;
}

pilha *iniciaPilha(){
return NULL;
}

pilha *getNode(){
pilha *p = (pilha*)malloc(sizeof(pilha));
printf("informe o nome: ");
gets(p->al.nome);


p->al.sexo = menuSexo();

getchar();
p->al.curso = menuCurso();
// scanf("%c",&p->al.curso);

printf("Informe a Idade: ");
scanf("%d",&p->al.idade);
getchar();

printf("Informe a Nota1: ");
scanf("%f",&p->al.nota1);
getchar();

printf("Informe a Nota2: ");
scanf("%f",&p->al.nota2);
getchar();
p->prox = NULL;

return p;

}
char menuSexo(){
char sexo;
do{
printf("INFORME O SEXO");
sexo = toupper(getchar());
if(sexo != 'M'&&sexo !='F'){
system("cls");
printf("SEXO INVALIDO...");
getchar();
}
}while(sexo != 'M'&&sexo !='F');
return sexo;
}

char menuCurso(){
char curso;
do{
printf("INFORME UM CURSO\n[S-sistemas|A-administracao|C-Contabilidade]: ");
curso = toupper(getchar());
if(curso != 'A' && curso != 'S' && curso != 'C' ){
system("cls");
printf("CURSO INVALIDO!");
getchar();
}
}while(curso != 'A' && curso != 'S' && curso != 'C');
return curso;
}
void freeNode(pilha *p){
system("cls");
printf("ELEMENTO REMOVIDO %s",p->al.nome);
free(p);
getchar();
}

void print(pilha *p){
if(p != NULL){
printf("NOME: %s  SEXO: %c  Curso: %c  idade: %d  Nota1: %.2f  Nota2: %.2f",p->al.nome,p->al.sexo, p->al.curso, p->al.idade, p->al.nota1, p->al.nota2);
print(p->prox);
}
}
void printCurso(pilha *p){
char tipo;
printf("INFORME O CURSO: ");
tipo = toupper(getchar());
if(p != NULL){
if(p->al.curso == tipo){
print(p);
}
}
}

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

0 comentários:

Postar um comentário