Enunciado:
"Realizar un programa en el que se tenga como entrada: nombre, edad y 3 notas del estudiante con un menú en el que se pueda:
1 - Ingresar los datos de los estudiantes.
2 - Buscar datos del estudiante mediante su nombre.
3 - Informe de datos de los estudiantes ordenado por su nota de menor a mayor y mostrando si ha aprobado o reprobado.
4- Cantidad de estudiantes aprobados, reprobados y promedio de notas de la seccion.
Además guardar el informe y la cantidad de estudiantes aprobados y reprobados junto al promedio de notas en un archivo txt."
Clases:Estudiante.h
#ifndef ESTUDIANTE_H_
#define ESTUDIANTE_H_
#include <iostream>
#include <string.h>
using namespace std;
class Estudiante {
private:
string nombre;
int edad;
float nota1;
float nota2;
float nota3;
public:
Estudiante();
void setnombre(string nom);
string getnombre();
void setedad(int eda);
int getedad();
float getNota1();
void setNota1(float not1);
float getNota2();
void setNota2(float not2);
float getNota3();
void setNota3(float not3);
float Calnotaf();
string CalApRp();
};
#endif /* ESTUDIANTE_H_ */
Estudiante.cpp
#include "Estudiante.h"
Estudiante::Estudiante() {
// TODO Auto-generated constructor stub
nombre = "";
edad = 0;
nota1 = 0;
nota2 = 0;
nota3 = 0;
}
void Estudiante::setnombre(string nom){
nombre = nom;
}
string Estudiante::getnombre(){
return nombre;
}
void Estudiante::setedad(int eda){
edad = eda;
}
int Estudiante::getedad(){
return edad;
}
float Estudiante::getNota1() {
return nota1;
}
void Estudiante::setNota1(float not1) {
nota1 = not1;
}
float Estudiante::getNota2() {
return nota2;
}
void Estudiante::setNota2(float not2) {
nota2 = not2;
}
float Estudiante::getNota3() {
return nota3;
}
void Estudiante::setNota3(float not3) {
nota3 = not3;
}
float Estudiante::Calnotaf() {
float notaf;
notaf = ((nota1 + nota2 + nota3) * 20) /100;
return notaf;
}
string Estudiante::CalApRp() {
string ApRp;
if(Calnotaf() >= 10 & Calnotaf()<= 20)
ApRp = "Aprobado";
else
if(Calnotaf() >= 0 & Calnotaf()< 10)
ApRp = "Reprobado";
else
ApRp = "Error al verificar nota";
return ApRp;
}
Seccion.h
#ifndef SECCION_H_
#define SECCION_H_
#include "Estudiante.h"
const int MAX=3;
class Seccion {
private:
int ptr;
Estudiante AEstudiante[MAX];
public:
Seccion();
int getptr();
void setAEstudiante(Estudiante elEstudiante);
Estudiante getAEstudiante(int i);
void OrdenarEstudiante();
int Buscar(string nombreB);
int Calcantap();
int Calcantrep();
float Calpromnot();
};
#endif /* SECCION_H_ */
Seccion.cpp
/*
* Seccion.cpp
*
* Created on: 23/02/2013
* Author: Francisco Velásquez
*/
#include "Seccion.h"
Seccion::Seccion() {
// TODO Auto-generated constructor stub
ptr = 0;
}
int Seccion::getptr(){
return ptr;
}
void Seccion::setAEstudiante(Estudiante elEstudiante){
AEstudiante[ptr] = elEstudiante;
ptr++;
}
Estudiante Seccion::getAEstudiante(int i){
return AEstudiante[i];
}
void Seccion::OrdenarEstudiante(){
Estudiante Aux;
int i, j;
for(i=0; i<ptr-1; i++){
for (j=i+1; j<ptr; j++){
if(AEstudiante[i].Calnotaf() > AEstudiante[j].Calnotaf())
{
Aux = AEstudiante[i];
AEstudiante[i] = AEstudiante[j];
AEstudiante[j] = Aux;
}
}
}
}
int Seccion::Buscar(string nombreB) {
int i=0, enc = -1;
while(i<ptr & enc == -1){
if(AEstudiante[i].getnombre() == nombreB)
enc = i;
else i++;
}
return enc;
}
int Seccion::Calcantap() {
int cantap;
int contap=0;
for(int i=0; i < ptr; i++){
if(AEstudiante[i].CalApRp() == "Aprobado")
contap++;
}
cantap = contap;
return cantap;
}
int Seccion::Calcantrep() {
int cantrep;
int contrep = 0;
for(int i=0; i < ptr; i++){
if(AEstudiante[i].CalApRp() == "Reprobado")
contrep++;
}
cantrep = contrep;
return cantrep;
}
float Seccion::Calpromnot() {
float promnot;
float acum=0;
for(int i = 0; i<ptr;i++){
acum = acum + AEstudiante[i].Calnotaf();
}
promnot = acum/ptr;
return promnot;
}
Función principal
Principal.cpp
#include "Estudiante.h"
#include "Seccion.h"
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
void IESeccion(Seccion & laSeccion);
void IS(Seccion laSeccion);
void IBuscar(Seccion laSeccion);
void Menu(Seccion laSeccion);
void Msjsalida(Seccion laSeccion);
void EstApRepProm(Seccion laSeccion);
int main(){
Seccion laSeccion;
Menu(laSeccion);
Msjsalida(laSeccion);
return 0;
}
void EstApRepProm(Seccion laSeccion){
cout << "La cantidad de estudiantes aprobados es de: " << laSeccion.Calcantap() << endl;
cout << "La cantidad de estudiantes reprobados es de: " << laSeccion.Calcantrep() << endl;
cout << "El promedio de notas es de " << laSeccion.Calpromnot() << " ptos"<< endl;
ofstream archivo; // objeto de la clase ofstream
archivo.open("ARP.txt");
archivo << "La cantidad de estudiantes aprobados es de: " << laSeccion.Calcantap() << endl;
archivo << "La cantidad de estudiantes reprobados es de: " << laSeccion.Calcantrep() << endl;
archivo << "El promedio de notas es de " << laSeccion.Calpromnot() << " ptos"<< endl;
archivo.close();
system("pause>null");
}
void Msjsalida(Seccion laSeccion){
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << " GRACIAS POR USAR FRANCVES SYSTEM" << endl;
cout << " @francves" << endl;
}
void Menu(Seccion laSeccion){
system("cls");
int variable;
cout << endl;
cout << "BIENVENIDO AL MENU DE USUARIO, PORFAVOR INGRESE UNA DE LAS SIGUIENTES OPCIONES" << endl;
cout << "______________________________________________________________________________" << endl;
cout << "1 Ingresar datos (si ya ha ingresado datos anteriormente elija otra opcion)" << endl;
cout << "2 Buscar datos de estudiante a travez de su nombre" << endl;
cout << "3 Informe de estudiantes ordenados por su nota de menor a mayor" << endl;
cout << "4 Cantidad de estudiantes aprobados, reprobados y promedio de notas de la seccion" << endl;
cout << "0 SALIR" << endl;
cin >> variable;
switch(variable){
case 1:
system("cls");
IESeccion(laSeccion);
Menu(laSeccion);
break;
case 2:
system("cls");
IBuscar(laSeccion);
Menu(laSeccion);
break;
case 3:
system("cls");
IS(laSeccion);
Menu(laSeccion);
break;
case 4:
system("cls");
EstApRepProm(laSeccion);
Menu(laSeccion);
break;
case 0:
system("cls");
Msjsalida(laSeccion);
break;
default:
cout << endl;
cout << "Porfavor solo ingrese opcion 1 - 2 - 3 - 4 - 0" << endl;
break;
}
system("pause>null");
}
void IEEstudiante(Estudiante & elEstudiante){
string nom;
int eda;
float not1, not2, not3;
cout << "Ingrese el Nombre del estudiante" << endl;
cin >> nom;
elEstudiante.setnombre(nom);
cout << "Ingrese la edad del estudiante" << endl;
cin >> eda;
elEstudiante.setedad(eda);
cout << "Ingrese las 3 notas del estudiante una por una" << endl;
cin >> not1;
elEstudiante.setNota1(not1);
cin >> not2;
elEstudiante.setNota2(not2);
cin >> not3;
elEstudiante.setNota3(not3);
}
void IESeccion(Seccion & laSeccion){
Estudiante elEstudiante;
for(int i=0; i < MAX; i++){
IEEstudiante(elEstudiante);
laSeccion.setAEstudiante(elEstudiante);
laSeccion.OrdenarEstudiante();
}
cout << endl;
cout << "Se han ingresado todos los datos correctamente " << endl;
cout << "Presione cualquier tecla para ser redirigido al menu nuevamente" << endl;
system("pause>null");
}
void IS(Seccion laSeccion){
int i;
cout << " INFORME ESTUDIANTES DE LA SECCION " << endl;
cout << "__________________________________________________________________________" << endl;
cout << "Nombre Edad Nota Aprobado/Reprobado" << endl;
for(i=0;i<MAX;i++){
cout << laSeccion.getAEstudiante(i).getnombre() << " " << laSeccion.getAEstudiante(i).getedad() << " "<< laSeccion.getAEstudiante(i).Calnotaf() << " "<< laSeccion.getAEstudiante(i).CalApRp() <<endl;
}
cout << endl;
cout << "Presione cualquiere tecla para regresar al menu" << endl;
ofstream archivo;
archivo.open("reporte.txt");
archivo << " INFORME ESTUDIANTES DE LA SECCION " << endl;
archivo << "__________________________________________________________________________" << endl;
archivo << "Nombre Edad Nota Aprobado/Reprobado" << endl;
for(i=0;i<MAX;i++){
archivo << laSeccion.getAEstudiante(i).getnombre() << " " << laSeccion.getAEstudiante(i).getedad() << " "<< laSeccion.getAEstudiante(i).Calnotaf() << " "<< laSeccion.getAEstudiante(i).CalApRp() <<endl;
}
archivo << endl;
archivo << "Presione cualquiere tecla para regresar al menu" << endl;
system("pause>null");
}
void IBuscar(Seccion laSeccion){
Seccion OSeccion;
Estudiante OEstudiante;
string nombreB;
int posi;
cout << "Ingrese el nombre a buscar: " << endl;
cin >> nombreB;
posi = laSeccion.Buscar(nombreB);
if(posi != -1){
cout << "El nombre existe en la posicion: " << posi << endl;
cout << "La edad es: " << laSeccion.getAEstudiante(posi).getedad() << endl;
cout << "La nota es: " << laSeccion.getAEstudiante(posi).Calnotaf() << endl;
cout << "El estudiante ha " << laSeccion.getAEstudiante(posi).CalApRp() << " la materia" << endl;
}
else{
cout << "No existen datos del estudiante " << nombreB << endl;}
cout << endl;
cout << "Presione cualquiere tecla para regresar al menu" << endl;
system("pause>null");
}