Final Proyect!!

Este es uno de mis últimos programas que haré y la verdad se algo pesado pero finalmente se pudo hacer con el apoyo de mi compañero Horacio.

El programa es una base de datos en el cual el usuario puede anotar el nombre del alumno despues escribir algunas calificaciones de tareas, trabajos, exámenes y el programa automáticamente da el promedio de esas calificaciones.

A continuación el codigo:

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

using namespace std;

typedef struct Homework{

int id;

char description[50];

double grade;

}Homework;

typedef struct Test{

int id;

double grade;

}test;

typedef struct Quiz{

int id;

double grade;

char description[50];

}Quiz;

typedef struct Research{

int id;

double grade;

char description[50];

}Research;

typedef struct Partial{

int id;

Homework homeworks[10];

Test tests[10];

Quiz quizzes[10];

Research researches[10];

}Partial;

typedef struct Student{

int id;

char name[50];

Partial partial[3];

}Students;

typedef struct Clas{

int id;

char name[50];

Students students[10];

}Class;

void agregarAlumno(Students []);

void agregarClase(Class[]);

void verClases(Class []);

void modificarAlumno(Students[]);

void mostrarAlumnosPorClase(Class cla);

void verCalificacionAlumnos(Students student[]);

void agregarTarea(Class cla[]);

void mostrarCalificacionPorAlumno(Class cla[]);

void verCalificacionAlumno(Student student);

void eliminarAlumno(Students[]);

void eliminarClases(Class cla[]);

int contadorResearch(Partial partial);

int contadorTarea(Partial partial);

int contadorQuiz(Partial partial);

void agregarQuiz(Class cla[]);

void agregarResearch(Class cla[]);

void verAlumnos(Class []);

void menuPrincipal();

void agregarEliminarVer();

int contadorEstudiantePorClase(Class clas);

int i = 0;

void cargar();

int idClase = 0;

Students al[40];

Class classs[40];

int main()

{

int opcionMenu=0;

int opcionAlumno =0;

int opcionClase = 0;

cargar();

do

{

menuPrincipal();

cin>>opcionMenu;

switch(opcionMenu)

{

case 1:

do

{

agregarEliminarVer();

cin>>opcionClase;

switch(opcionClase)

{

case 1:

agregarClase(classs);

break;

case 2:

verClases(classs);

break;

case 3:

break;

case 4:

eliminarClases(classs);

break;

}

}while(opcionClase!=5);

break;

case 2:

do

{

agregarEliminarVer();

cin>>opcionAlumno;

switch(opcionAlumno){

case 1:

agregarAlumno(al);

break;

case 2:

verAlumnos(classs);

break;

}

}while(opcionAlumno !=5);

break;

case 3:

agregarTarea(classs);

break;

case 4:

agregarQuiz(classs);

break;

case 5:

agregarResearch(classs);

break;

case 6:

mostrarCalificacionPorAlumno(classs);

break;

}

}while(opcionMenu!=8);

return 0;

}

void agregarAlumno(Students alumnos[])

{

char nombreAlumnos[50];

int idclass = 0;

int contador = 0;

cout<<«Nombre del alumno \n»<<endl;

scanf(«%s», alumnos[i].name);

verClases(classs);

cout<<«Agregar clase selecciona el id \n»<<endl;

alumnos[i].id = i+1;

scanf(«%i»,&idclass);

contador = contadorEstudiantePorClase(classs[idclass]);

classs[idclass].students[contador] = alumnos[i];

i = i+1;

}

void verAlumnos(Class clas[])

{

int x;

int idClase =0;

cout<<«Selecciona el id de la clase para ver los alumnos \n «<<endl;

verClases(classs);

scanf(«%i»,&idClase);

int contadorAlumno = contadorEstudiantePorClase(clas[idClase]);

for(x = 0;x<contadorAlumno;x++)

{

printf(«Id Alumno : %i \n», clas[idClase].students[x].id); //Number

printf(«Nombre Alumno: %s\n», clas[idClase].students[x].name); //Name

printf(«Nombre de la Clase %s \n»,clas[idClase].name);

}

}

//

void agregarCalificacionAlumno(Class clas, int partialPosition, char descriptionHomework[50])

{

int x;

int idClase = 0;

double cali = 0;

int contadorAlumno = contadorEstudiantePorClase(clas);

for(x = 0;x<contadorAlumno;x++)

{

printf(«Ingresa la calificacion del Alumno: %s \n», clas.students[x].name);

scanf(«%lf»,&cali);

int count = contadorTarea(clas.students[x].partial[partialPosition]);

strcpy(clas.students[x].partial[partialPosition].homeworks[count].description, descriptionHomework);

clas.students[x].partial[partialPosition].homeworks[count].grade = cali;

}

}

void agregarCalificacionQuiz(Class clas,int partialPosition)

{

int x;

int idClase = 0;

double cali = 0;

int contadorAlumno = contadorEstudiantePorClase(clas);

for(x = 0;x<contadorAlumno;x++)

{

printf(«Ingresa la calificacin del alumno: %s \n»,clas.students[x].name);

scanf(«%lf»,&cali);

int count = contadorQuiz(clas.students[x].partial[partialPosition]);

clas.students[x].partial[partialPosition].quizzes[count].grade = cali;

}

}

void agregarCalificacionResearch(Class clas,int partialPosition){

int x;

double cali = 0;

int contadorAlumno = contadorEstudiantePorClase(clas);

for(x = 0;x<contadorAlumno;x++)

{

printf(«Ingresa la calificacin del alumno: %s \n»,clas.students[x].name);

scanf(«%lf»,&cali);

int count = contadorResearch(clas.students[x].partial[partialPosition]);

clas.students[x].partial[partialPosition].quizzes[count].grade = cali;

}

}

int contadorEstudiantePorClase(Class clas)

{

int contadorAlumnos = 0;

int i;

int result = 0;

contadorAlumnos = sizeof(clas.students)/sizeof(clas.students[0]);

for(i = 0 ;i <contadorAlumnos;i++){

if(strlen(clas.students[i].name) == 0){

break;

}

result++;

}

return result;

}

int contadorClases(Class clas[])

{

int i;

int contadorClases;

int result;

contadorClases = sizeof(clas)/sizeof(clas);

for(i = 0 ;i<contadorClases;i++){

if(strlen(clas[i].name)==0){

break;

}

result++;

}

return result;

}

void verClases(Class clas[])

{

int y ;

for(y = 0;y<idClase;y++)

{

printf(«Id Clase: %i\n», clas[y].id);

printf(«Nombre de la Clase: %s \n», clas[y].name);

}

}

void agregarClase(Class clas[])

{

cout<<«Dame el nombre de la clase \n»<<endl;

scanf(«%s»,clas[idClase].name);

clas[idClase].id = idClase;

idClase++;

}

void eliminarClases(Class clas[])

{

verClases(classs);

int i;

int selectedClass = 0;

int pointClass = 0;

char name[50] = {«\0»};

cout<<«Ingresa el id de la clase a eliminar \n»<<endl;

scanf(«%i»,&selectedClass);

strcpy(clas[selectedClass].name,name);

idClase –;

for(i = 0 ;i<idClase;i++)

{

if(i>=selectedClass){

clas[i].id = clas[i+1].id -1;

strcpy(clas[i].name , clas[i+1].name);

}

}

}

void eliminarAlumno(Students alumnos[])

{

verClases(classs);

int alumnoSelected = 0;

cout<<«Selecciona la clase del alumno a eliminar»<<endl;

scanf(«%i»,&alumnoSelected);

}

void agregarTarea(Class clas[])

{

char nombreTarea[50];

int claseAAsignar;

int partialToAsign;

cout<<«Dame el nombre de la tarea»<<endl;

scanf(«%s»,&nombreTarea);

verClases(classs);

cout<<«Selecciona el parcial a asignar \n»<<endl;

scanf(«%i»,&partialToAsign);

cout<<«Selecciona la clase a asignar\n «<<endl;

scanf(«%i»,&claseAAsignar);

agregarCalificacionAlumno(clas[claseAAsignar],partialToAsign,nombreTarea);

}

void agregarQuiz(Class clas[])

{

int partialToAsign;

int claseAAsignar;

verClases(classs);

cout<<«Selecciona la clase a asignar\n «<<endl;

scanf(«%i»,&claseAAsignar);

cout<<«Selecciona el parcial a asignar\n»<<endl;

scanf(«%i»,&partialToAsign);

agregarCalificacionQuiz(clas[claseAAsignar],partialToAsign);

}

void agregarResearch(Class clas[]){

int partialToAsign;

int claseAAsignar;

verClases(classs);

cout<<«Selecciona la clase a asignar\n «<<endl;

scanf(«%i»,&claseAAsignar);

cout<<«Selecciona el parcial a asignar\n»<<endl;

scanf(«%i»,&partialToAsign);

agregarCalificacionResearch(clas[claseAAsignar],partialToAsign);

}

int contadorTarea(Partial partial){

int countArray = sizeof(partial.homeworks)/sizeof(partial.homeworks[0]);

int result = 0;

int i = 0;

for(i = 0;i<countArray;i++){

if(strlen(partial.homeworks[i].description)==0){

break;

}

result++;

}

return result++;

}

int contadorQuiz(Partial partial){

int countArray = sizeof(partial.quizzes)/sizeof(partial.quizzes[0]);

int result = 0;

int i = 0;

for(i = 0;i<countArray;i++){

if(strlen(partial.quizzes[i].description)==0){

break;

}

result++;

}

return result++;

}

int contadorResearch(Partial partial){

int countArray = sizeof(partial.researches)/sizeof(partial.researches[0]);

int result = 0;

int i = 0;

for(i = 0;i<countArray;i++){

if(strlen(partial.researches[i].description)==0){

break;

}

result++;

}

return result++;

}

void mostrarCalificacionPorAlumno(Class cla[])

{

verClases(cla);

int idClaseSelected = 0;

int idAlumnoSelected = 0;

Student student [1];

cout<<«Seleciona el id de la Clase \n»<<endl;

scanf(«%i»,&idClaseSelected);

mostrarAlumnosPorClase(cla[idClaseSelected]);

cout<<«Selecciona el id del alumno \n»<<endl;

scanf(«%i»,&idAlumnoSelected);

verCalificacionAlumno(cla[idClaseSelected].students[idAlumnoSelected]);

}

void cargar(){

classs[0].id = 0;

strcpy(classs[0].name , «Primera clase»);

classs[0].students[0].id = 0;

strcpy(classs[0].students[0].name,»Amador»);

classs[0].students[0].partial[0].homeworks[0].grade = 100;

strcpy(classs[0].students[0].partial[0].homeworks[0].description , «tarea1»);

classs[0].students[0].partial[0].quizzes[0].grade = 100;

strcpy(classs[0].students[0].partial[0].quizzes[0].description , «quiz de fisica»);

classs[0].students[0].partial[0].tests[0].grade = 100;

classs[0].students[0].partial[0].researches[0].grade = 100;

strcpy(classs[0].students[0].partial[0].researches[0].description , «investigacion»);

idClase++;

}

void verCalificacionAlumno(Student student){

int x = 0;

double parcial1 = 0;

double parcial2 = 0;

double parcial3 = 0;

double final = 0;

int j = 0;

int jforparcial2 = 0;

int jforparcial3 = 0;

double resultHomework = 0;

double resultQuiz = 0;

double resultResearch = 0;

double resultTest = 0;

double resultHomework2 = 0;

double resultQuiz2 = 0;

double resultResearch2 = 0;

double resultTest2 = 0;

double resultHomework3 = 0;

double resultQuiz3 = 0;

double resultResearch3 = 0;

double resultTest3 = 0;

int countHomework = sizeof(student.partial[0].homeworks)/sizeof(student.partial[0].homeworks[0]);

int countQuiz     = sizeof(student.partial[0].quizzes)/sizeof(student.partial[0].quizzes[0]);

int countResearch = sizeof(student.partial[0].researches)/sizeof(student.partial[0].researches[0]);

int countTest = sizeof(student.partial[0].researches)/sizeof(student.partial[0].researches[0]);

for(j =0 ;j<countHomework;j++){

resultHomework = resultHomework + student.partial[0].homeworks[j].grade;

}

for(j =0 ;j<countQuiz;j++){

resultQuiz = resultHomework + student.partial[0].quizzes[j].grade;

}

for(j =0 ;j<countHomework;j++){

resultResearch = resultHomework + student.partial[0].researches[j].grade;

}

for(j =0 ;j<countTest;j++){

resultTest = resultTest + student.partial[0].tests[j].grade;

}

int promedioHomework = resultHomework/countHomework;

int promedioQuiz = resultQuiz/countQuiz;

int promedioResearch = resultResearch/countResearch;

int promedioTest = resultTest/countTest;

/* 2 parcial   */

int countHomework2 = sizeof(student.partial[1].homeworks)/sizeof(student.partial[1].homeworks[0]);

int countQuiz2     = sizeof(student.partial[1].quizzes)/sizeof(student.partial[1].quizzes[0]);

int countResearch2 = sizeof(student.partial[1].researches)/sizeof(student.partial[1].researches[0]);

int countTest2 = sizeof(student.partial[1].researches)/sizeof(student.partial[1].researches[0]);

for(jforparcial2 =0 ;jforparcial2<countHomework2;jforparcial2++){

resultHomework2 = resultHomework2 + student.partial[1].homeworks[jforparcial2].grade;

}

for(jforparcial2 =0 ;jforparcial2<countQuiz2;jforparcial2++){

resultQuiz2 = resultHomework2 + student.partial[1].quizzes[jforparcial2].grade;

}

for(jforparcial2 =0 ;jforparcial2<countHomework2;jforparcial2++){

resultResearch2 = resultHomework2 + student.partial[1].researches[jforparcial2].grade;

}

for(jforparcial2 =0 ;jforparcial2<countTest2;jforparcial2++){

resultTest2 = resultTest2 + student.partial[1].tests[jforparcial2].grade;

}

int promedioHomework2 = resultHomework2/countHomework2;

int promedioQuiz2 = resultQuiz2/countQuiz2;

int promedioResearch2 = resultResearch2/countResearch2;

int promedioTest2 = resultTest2/countTest2;

/*3 parcial */

int countHomework3 = sizeof(student.partial[2].homeworks)/sizeof(student.partial[2].homeworks[0]);

int countQuiz3     = sizeof(student.partial[2].quizzes)/sizeof(student.partial[2].quizzes[0]);

int countResearch3 = sizeof(student.partial[2].researches)/sizeof(student.partial[2].researches[0]);

int countTest3 = sizeof(student.partial[2].researches)/sizeof(student.partial[2].researches[0]);

for(jforparcial3 =0 ;jforparcial3<countHomework3;jforparcial3++){

resultHomework3 = resultHomework3 + student.partial[2].homeworks[jforparcial3].grade;

}

for(jforparcial3 =0 ;jforparcial3<countQuiz3;jforparcial3++){

resultQuiz3 = resultHomework3 + student.partial[2].quizzes[jforparcial3].grade;

}

for(jforparcial3 =0 ;jforparcial3<countHomework3;jforparcial3++){

resultResearch3 = resultHomework3 + student.partial[2].researches[jforparcial3].grade;

}

for(jforparcial3 =0 ;jforparcial3<countTest3;jforparcial3++){

resultTest3 = resultTest3 + student.partial[2].tests[jforparcial3].grade;

}

int promedioHomework3 = resultHomework3/countHomework3;

int promedioQuiz3 = resultQuiz3/countQuiz3;

int promedioResearch3 = resultResearch3/countResearch3;

int promedioTest3 = resultTest3/countTest3;

/* Final */

parcial1 = (promedioHomework *.40) + (promedioQuiz  *.10) + (promedioTest*.40)+(promedioResearch*.10);

parcial2 = (promedioHomework2*.40) + (promedioQuiz2 * .10)+ (promedioTest2*.40)+(promedioResearch2*.10);

parcial3 = (promedioHomework3*.40) + (promedioQuiz3 * .10)+ (promedioTest3*.40)+(promedioResearch3*.10);

final = (parcial1 + parcial2 + parcial3)/(3);

cout<<«ID  NOMBRE    PARCIAL 1  PARCIAL 2  PARCIAL 3  FINAL»<<endl;

printf(«%i   %s      %.2lf      %.2lf     %.2lf      %.2lf \n», student.id, student.name, parcial1, parcial2, parcial3, final);

if(final>=60){

cout<<«Felicidades has pasado el curso»<<endl;

}

else{

double faltante;

faltante = 60 – final;

printf(«Lo siento has reprobado el curso te faltaron %.2lf puntos \n «,faltante );

}

}

void verCalificacionAlumnos(Students student[]){

int x = 0;

int countStudents = sizeof(student)/sizeof(student[0]);

for(x = 0;x<countStudents;x++)

{

printf(«Id %i \n»,student[x].id);

printf(«Nombre %s \n»,student[x].name);

double parcial1 = 0;

int j = 0;

double resultHomework = 0;

double resultQuiz = 0;

double resultResearch = 0;

double resultTest = 0;

int countHomework = sizeof(student[x].partial[0].homeworks)/sizeof(student[x].partial[0].homeworks[0]);

int countQuiz     = sizeof(student[x].partial[0].quizzes)/sizeof(student[x].partial[0].quizzes[0]);

int countResearch = sizeof(student[x].partial[0].researches)/sizeof(student[x].partial[0].researches[0]);

int countTest = sizeof(student[x].partial[0].researches)/sizeof(student[x].partial[0].researches[0]);

for(j =0 ;j<countHomework;j++){

resultHomework = resultHomework + student[x].partial[0].homeworks[j].grade;

}

for(j =0 ;j<countQuiz;j++){

resultQuiz = resultHomework + student[x].partial[0].quizzes[j].grade;

}

for(j =0 ;j<countHomework;j++){

resultResearch = resultHomework + student[x].partial[0].researches[j].grade;

}

for(j =0 ;j<countTest;j++){

resultTest = resultTest + student[x].partial[0].tests[j].grade;

}

int promedioHomework = resultHomework/countHomework;

int promedioQuiz = resultQuiz/countQuiz;

int promedioResearch = resultResearch/countResearch;

int promedioTest = resultTest/countTest;

parcial1 = (promedioHomework *.40) + (promedioQuiz*.10) + (promedioTest*.40)+(promedioResearch*.10);

printf(«parcial 1 %lf,»,parcial1);

}

}

void mostrarAlumnosPorClase(Class cla){

int x;

int count = contadorEstudiantePorClase(cla);

for(x=0;x<count;x++){

printf(«Id Alumno %i \n»,cla.students[x].id);

printf(«Nombre del Alumno %s \n»,cla.students[x].name);

}

}

void menuPrincipal(){

cout<<«Menu»<<endl;

cout<<«1.Clases «<<endl;

cout<<«2.Estudiantes»<<endl;

cout<<«3.Agregar Tareas»<<endl;

cout<<«4.-Agregar Quiz»<<endl;

cout<<«5.-Agregar Research»<<endl;

cout<<«6.Mostrar informaci\242n Alumnos»<<endl;

cout<<«7.Mostrar informaci\242n por Grupos»<<endl;

cout<<«8. Salir»<<endl;

cout<<«Seleccione una opcion: «<<endl;

}

void agregarEliminarVer(){

cout<<«1.Agregar «<<endl;

cout<<«2.Ver»<<endl;

cout<<«3.Modificar»<<endl;

cout<<«4.Eliminar»<<endl;

cout<<«5.Regresar»<<endl;

}

Deja un comentario