Proyecto final de Procesamiento de datos
Posted by José Luis Chafardet Grimaldi in Blah!, Programación, tags: chafardet, codigo, cpp, HostingVE, procesamiento, procesamiento de datos, Programación, proyecto, UNEAquí publico ya el proyecto final de procesamiento de datos de semestre 2 en la UNE.
El programa en C++ debe llevar contrl de 1 materia para un grado, 3 lapsos, hasta 10 estudiantes.
El proyecto tenía valor de 2 pts, la definitiva de mi grupo fue 1.9 / 2
Principal.cpp
#include
#include
#include
#include
#include
#include
#include
using namespace std;
// inclusiones de funciones y archivos externos
#include “pantalla.h”
// prototipo de funcion para reportes
int reportes();
// definicion de variables globales
int i,f,c,p,ci,nota1,nota2,nota3,salir=0,z,cont=0,ble,total;
string profesor[2],materia,lapso[3],alumno[10][6],a,b,l,m,n;
char opcion;
// programa
int GetIntVal(string strConvert) {
int intReturn;
intReturn = atoi(strConvert.c_str());
return(intReturn);
}
// bla bla bla aqui estaba el gui
int login(void)
{
// crea la variable local validado, y la pone en 0
int validado=0;
do {
gui();
string b,c,clave=”entradasegura”;
gotoxy(25,17);
blanco
cout < < "Inserte su nombre de usuario: " ;
rojo
getline(cin, b);
// valida que el usuario sea insertado correctamente
if(b == "")
{
blanco
gotoxy(30,19);
cout << "No introdujo un usuario.";
gotoxy(1,40);
system("PAUSE");
}
else
{
gotoxy(25,19);
blanco
cout << "Inserte su clave: " ;
textcolor(BLUE);
getline(cin, c);
// valida que la clave sea correcta.
if(c != clave)
{
gotoxy(25,21);
blanco
cout << "Disculpe su clave no es correcta.";
gotoxy(1,40);
blanco
system("PAUSE");
}
else
{
gotoxy(30,21);
verde
printf("%c ", 251);
blanco
cout << "Bienvenido: " << b;
validado = 1;
gotoxy(1,40);
system("PAUSE");
//return 1;
}
}
}
while (validado != 1);
}
int menu(void)
{
gui();
// imprime las opciones del menu
// Imprime el titulo del programa
gotoxy(30,3);
verde
cout << "CONTROL DE ESTUDIOS" << endl;
amarillo
// Inresar profesor
gotoxy(5,7);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "P";
blanco
cout << ")";
cout << " - Ingresar profesor.";
// Asignar notas
gotoxy(50,7);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "N";
blanco
cout << ")";
cout << " - Asignar notas.";
// Ingresar materia
gotoxy(5,9);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "M";
blanco
cout << ")";
cout << " - Ingresar Materia.";
// Calcular promedio
gotoxy(50,9);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "C";
blanco
cout << ")";
cout << " - Calcular promedio.";
// imprimir reportes
gotoxy(50,11);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "R";
blanco
cout << ")";
cout << " - Gegnerar reportes.";
// Ingresar Lapso
gotoxy(5,11);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "L";
blanco
cout << ")";
cout << " - Ingresar Lapso.";
// Ingresar Alumno
gotoxy(5,13);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "A";
blanco
cout << ")";
cout << " - Ingresar Alumno.";
// Mostrar datos
gotoxy(5,15);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "D";
blanco
cout << ")";
cout << " - Mostrar datos.";
// Mostrar datos
gotoxy(5,17);
verde
printf("%c ", 175);
blanco
cout << "(";
rojo
cout << "S";
blanco
cout << ")";
cout << " - Salir.";
// dibujar linea divisora
amarillo
gotoxy(1,19);
IIZQ
for(i=0;i&lt;78;i++)
{
HOR
}
IDER
blanco
gotoxy(1,40);
// operaciones
gotoxy(5,21);
blanco
cout << "Seleccione una opcion por favor: ";
rojo
cin.clear ();
cin >> opcion;
blanco
// comienzo de las operaciones del menu basada en las opciones seleccionadas.
switch (opcion)
{
// Caso profesor.
case ‘p’:
case ‘P’: Profesor:
if(profesor[0] != “”)
{
gotoxy(5,27);
verde
printf(“%c”, 175);
rojo
cout < < " Ya ha definido un profesor.";
blanco
}
else
{
gotoxy(5,23);
blanco
cout << "Ingrese la cedula del profesor: ";
rojo
cin.ignore(1,'\n');
cin >> ci;
cin.ignore(numeric_limits
if (!cin || cin.gcount() != 1)
{
gotoxy(5,27);
verde
printf(“%c”, 175);
rojo
cout < < " No es un valor numerico." << flush;
cin.clear();
break;
blanco
}
else
{
blanco
gotoxy(5,25);
cout << "Ingresar el nombre y apellido del profesor: ";
rojo
getline(cin, b);
blanco
if(b == "")
{
gotoxy(5,27);
verde
printf("%c", 175);
rojo
cout << " No introdujo Nombre.";
blanco
}
else
{
stringstream out;
out << ci;
a = out.str();
profesor[0]= a;
profesor[1]= b;
}
}
}
break;
// caso materia
case 'm':
case 'M': Materia:
gotoxy(5,23);
blanco
cout << "Ingresar la Materia: ";
cin.ignore(1,'\n');
rojo
getline(cin, a);
blanco
// validaciones basicas
if(a == "")
{
gotoxy(5,23);
verde
printf("%c", 175);
rojo
cout << " Debe introducir una materia.";
blanco
}
else if ( materia != "")
{
gotoxy(5,23);
verde
printf("%c", 175);
rojo
cout << " Ya se ha definido una materia.";
blanco
}
else if ( profesor[0] == "")
{
gotoxy(5,23);
rojo
printf("%c", 175);
blanco
cout << " Debe ingresar un profesor para poder ingresar una materia.";
}
else
{
materia = a;
}
break;
// caso del lapso
case 'l':
case 'L': Lapso:
// Validaciones basicas.
if (profesor[0] == "" || materia == "")
{
gotoxy(5,23);
cout << "Debe ingresar Profesor y Materia";
}
else
{
blanco
gotoxy(5,23);
cout << "Ingrese el lapso: ";
cin.ignore(1,'\n');
rojo
cin >> a;
blanco
if(lapso[0] != “” && lapso[1] != “” && lapso[2] != “”)
{
gotoxy(5,25);
verde
printf(“%c”, 175);
rojo
cout < < " Ya los lapsos han sido ingresados.";
blanco
}
else if(a == "1" && lapso[0] == "")
{
if (!cin || cin.gcount() != 1){
cout << "No introdujo un numero.";
cin.clear ();
}
else{
lapso[0] = a;}
}
else if(a == "2" && lapso[1] == "")
{
lapso[1] = a;
}
else if (a == "3" && lapso[2] == "")
{
lapso[2] = a;
}
else
{
gotoxy(5,25);
verde
printf("%c", 175);
rojo
cout << " Solo pueden haber 3 lapsos, entre 1 y 3.";
blanco
}
}
break;
// caso de los alumnos
case 'a':
case 'A': Alumno:
// validaciones basicas
if(profesor[0] == "" || materia == "" || lapso[0] == "" || lapso[1] == "" || lapso[2] == "" )
{
gotoxy(5,23);
blanco
cout << "Posibles errores:";
gotoxy(5,25);
verde
printf("%c", 175);
rojo
cout << " No se ha definido un profesor";
gotoxy(5,26);
verde
printf("%c", 175);
rojo
cout << " No ha definido materia";
gotoxy(5,27);
verde
printf("%c", 175);
rojo
cout << " No ha definido lapsos";
blanco
}
else
{
gotoxy(5,23);
blanco
cout << "Ingrese el numero de de cedula del alumno: ";
rojo
//cin.ignore(1,'\n');
cin >> ci;
cin.ignore(numeric_limits
if (!cin || cin.gcount() != 1)
{
gotoxy(5,27);
verde
printf(“%c”, 175);
rojo
cout < < " No es un valor numerico."<
cin.clear ();
}
else
{
stringstream out;
out << ci;
a = out.str();
blanco
gotoxy(5,25);
cout << "Ingrese el nombre del alumno: ";
rojo
getline(cin, b);
blanco
for ( c=0 ; c<=9; c++ )
{
// mas validaciones, especificas del alumno.
if(a == "" || b == "")
{
gotoxy(5,27);
verde
printf("%c", 175);
rojo
cout << " No introdujo nombre o cedula.";
blanco
}
else if (alumno[c][0] == a)
{
gotoxy(5,27);
verde
printf("%c", 175);
rojo
cout << " El alumno ya existe.";
blanco
break;
}
else if(profesor[0] == a)
{
gotoxy(5,27);
verde
printf("%c", 175);
rojo
cout << " El profesor no puede ser alumno.";
blanco
break;
}
else if(alumno[9][0] != "")
{
gotoxy(5,27);
verde
printf("%c", 175);
rojo
cout << " Ya se han definido la totalidad de alumnos";
blanco
break;
}
else if (alumno[c][0] == "" && alumno[c][0] != a)
{
stringstream out;
out << ci;
a = out.str();
alumno[c][0] = a;
alumno[c][1] = b;
break;
}
//else if
//{
// gotoxy(5,27);
// verde
// printf("%c", 175);
// rojo
// cout << " Disculpe, hubo un error en el sistema.";
// blanco
// break;
// }
}
}
}
break;
// Caso de impresion de datos.
case 'd':
case 'D': Datos:
if(profesor[0] == "" || materia == "" || lapso[0] == "" || lapso[1] == "" || lapso[2] == "" )
{
gotoxy(5,23);
verde
printf("%c", 175);
rojo
cout << " Debe ingresar datos para poder mostrarlos.";
blanco
}
else
{
gotoxy(5,23);
blanco
cout << "Profesor: ";
rojo
cout << profesor[1];
blanco
cout << ", C.I.: ";
rojo
cout << profesor[0];
gotoxy(5,24);
blanco
cout << "Materia: ";
rojo
cout << materia;
gotoxy(5,25);
blanco
cout << "Lapsos ingresados: ";
rojo
for(i=0;i<=2;i++)
{
cout << lapso[i] << " ";
}
gotoxy(5,26);
blanco
cout << "Alumnos: ";
// recorre el arreglo de los alumnos para imprimir solo los valores que contengan datos
for(i=0;i<=9;i++)
{
if(alumno[i][0] != "")
{
gotoxy(5,i+27);
blanco
cout << "Nombre: ";
rojo
cout << alumno[i][1];
blanco
cout << ", C.I: ";
rojo
cout << alumno[i][0];
verde
if(alumno[i][2] != "")
{
blanco
cout << ", notas: ";
cout << alumno[i][2] << " ";
if(alumno[i][3] != "")
{ cout << alumno[i][3] << " ";}
if(alumno[i][4] != "")
{ cout << alumno[i][4] << " ";}
if(alumno[i][2] != "" && alumno[i][3] != "" && alumno[i][4] != "")
{
int notas1 = atoi(alumno[i][2].c_str());
int notas2 = atoi(alumno[i][3].c_str());
int notas3 = atoi(alumno[i][4].c_str());
int promedio = (notas1 + notas2 + notas3)/3;
stringstream out;
out << promedio;
a = "";
a = out.str();
alumno[i][5] = a;
cout << " Promedio: " << alumno[i][5];
}
else
{
gotoxy(5,i+28);
rojo
cout << " No estan todas las notas.";
blanco
}
}
}
}
}
break;
// Caso de Asignacion de notas..
case 'n':
case 'N': Notas:
if(profesor[0] == "" || materia == "" || lapso[0] == "" || lapso[1] == "" || lapso[2] == "" )
{
gotoxy(5,23);
verde
printf("%c", 175);
rojo
cout << " Debe ingresar datos para poder mostrarlos.";
blanco
}
else
{
gotoxy(5,23);
blanco
cout << "Profesor: ";
rojo
cout << profesor[1];
blanco
cout << ", C.I.: ";
rojo
cout << profesor[0];
gotoxy(5,24);
blanco
cout << "Materia: ";
rojo
cout << materia;
gotoxy(5,25);
blanco
cout << "Lapsos ingresados: ";
rojo
for(i=0;i<=2;i++)
{
cout << lapso[i] << " ";
}
gotoxy(5,26);
blanco
cout << "Alumnos: ";
// recorre el arreglo de los alumnos para imprimir solo los valores que contengan datos
for(i=0;i<=9;i++)
{
if(alumno[i][0] != "")
{
gotoxy(5,i+27);
blanco
cout << "( ";
verde
cout << i;
blanco
cout << " )";
cout << " Nombre: ";
rojo
cout << alumno[i][1];
blanco
cout << ", C.I: ";
rojo
cout << alumno[i][0];
blanco
}
}
}
gotoxy(5,37);
blanco
cout << "Seleccione el alumno al asignarle la nota: ";
rojo
cin >> z;
clrscr();
gui();
cin.ignore(numeric_limits
if (!cin || cin.gcount() != 1)
{
gotoxy(5,17);
verde
printf(“%c”, 175);
rojo
cout < < " No es un valor numerico.";
blanco
cin.clear ();
break;
}
else
{
gotoxy(5,17);
blanco
cout << "Ingrese nota del lapso 1: ";
rojo
cin >> nota1;
if (!cin || cin.gcount() != 1)
{
gotoxy(5,18);
verde
printf(“%c”, 175);
rojo
cout < < " No es un valor numerico.";
blanco
cin.clear ();
break;
}
else if(nota1 < 0 || nota1 > 20)
{
gotoxy(5,18);
rojo
cout < < "La nota no puede ser menor a 0 ni mayor a 20";
blanco
break;
}
else
{
stringstream out;
out << nota1;
l = out.str();
alumno[z][2] = l;
}
if(alumno[z][2] != "")
{
gotoxy(5,18);
blanco
cout << "Ingrese la nota del lapso 2: ";
rojo
cin >> nota2;
if (!cin || cin.gcount() != 1)
{
gotoxy(5,19);
verde
printf(“%c”, 175);
rojo
cout < < " No es un valor numerico.";
blanco
cin.clear ();
break;
}
else if(nota2 < 0 || nota2 > 20)
{
gotoxy(5,19);
rojo
cout < < "La nota no puede ser menor a 0 ni mayor a 20";
blanco
break;
}
else
{
stringstream out;
out << nota2;
m = out.str();
alumno[z][3] = m;
}
}
else
{
gotoxy(5,19);
rojo
cout << " no ha introducido la nota del lapso anterior.";
blanco
break;
}
if(alumno[z][3] != "")
{
gotoxy(5,19);
blanco
cout << "Ingrese la nota del lapso 3: ";
rojo
cin >> nota3;
if (!cin || cin.gcount() != 1)
{
gotoxy(5,20);
verde
printf(“%c”, 175);
rojo
cout < < " No es un valor numerico.";
blanco
cin.clear ();
break;
}
else if(nota3 < 0 || nota3 > 20)
{
gotoxy(5,20);
rojo
cout < < "La nota no puede ser menor a 0 ni mayor a 20";
blanco
break;
}
else
{
stringstream out;
out << nota3;
n = out.str();
alumno[z][4] = n;
}
}
else
{
gotoxy(5,20);
rojo
cout << "no ha introducido la nota del lapso anterior.";
blanco
break;
}
}
blanco
break;
// caso calcular promedio general del salon
case 'c':
case 'C': Calcular:
if(profesor[0] == "" || materia == "" || lapso[0] == "" || lapso[1] == "" || lapso[2] == "" )
{
gotoxy(5,23);
verde
printf("%c", 175);
rojo
cout << " Debe ingresar datos para poder mostrarlos.";
blanco
}
else
{
for(i=0;i&lt;10;i++)
{
if(alumno[i][5] == "")
break;
int bla = atoi(alumno[i][5].c_str());
ble = ble+bla;
++cont;
}
if(cont != 0)
{
total = ble / cont;
gotoxy(5,23);
verde
printf("%c", 175);
rojo
cout << " El promedio general del salon es: " << total << endl;
blanco
cin.clear();
}
else
{
gotoxy(5,23);
verde
printf("%c", 175);
rojo
cout << " El promedio general del salon no se puede promediar, hubo un error en el sistema." << endl;
blanco
cin.clear();
break;
}
}
break;
// caso llenar datos dummy
case 'y':
case 'Y': Dummy:
profesor[0] = "14234543";
profesor[1] = "Wilpia flores";
materia = "Procesamiento de Datos";
lapso[0] = "1";
lapso[1] = "2";
lapso[2] = "3";
alumno[0][0] = "123123";
alumno[0][1] = "Jose Luis Chafardet";
alumno[0][2] = "19";
alumno[0][3] = "17";
alumno[0][4] = "20";
alumno[0][5] = "";
alumno[1][0] = "124124";
alumno[1][1] = "Angel Uribe";
alumno[1][2] = "16";
alumno[1][3] = "19";
alumno[1][4] = "19";
alumno[1][5] = "";
alumno[2][0] = "125125";
alumno[2][1] = "Oswaldo Coronel";
alumno[2][2] = "18";
alumno[2][3] = "17";
alumno[2][4] = "20";
alumno[2][5] = "";
alumno[3][0] = "143628";
alumno[3][1] = "Algun Otro Alumno";
alumno[3][2] = "11";
alumno[3][3] = "12";
alumno[3][4] = "16";
alumno[3][5] = "";
alumno[4][0] = "173618";
alumno[4][1] = "Algun Alumno Mas";
alumno[4][2] = "13";
alumno[4][3] = "12";
alumno[4][4] = "15";
alumno[4][5] = "";
alumno[5][0] = "173618";
alumno[5][1] = "Algun Mas Mas";
alumno[5][2] = "11";
alumno[5][3] = "9";
alumno[5][4] = "8";
alumno[5][5] = "";
alumno[6][0] = "136169";
alumno[6][1] = "Mas dummy data";
alumno[6][2] = "10";
alumno[6][3] = "7";
alumno[6][4] = "15";
alumno[6][5] = "";
break;
// caso salida
case 's':
case 'S': Salir:
gotoxy(27,29);
verde
cout << "Gracias por usar el sistema.";
blanco
salir = 1;
break;
case 'r':
case 'R': Reportes:
reportes();
break;
default:
gotoxy(27,29);
rojo
cout << "No selecciono una opcion valida.";
blanco
}
// ir al final de la pantalla e imprimir la pausa ahi.
gotoxy(1,40);
blanco
system("PAUSE");
}
int main(int argc, char *argv[])
{
//login();
do
{
menu();
gotoxy(1,40);
blanco
} while(salir != 1);
//system("PAUSE");
return EXIT_SUCCESS;
}
// funcion que crea reportes
int reportes()
{
// llama al gui
gui();
// Imprime el titulo del programa
gotoxy(37,3);
verde
cout << "REPORTE" << endl;
blanco
if
(profesor[0] == "" || materia == "" ||
lapso[0] == "" || lapso[1] == "" ||
lapso[2] == "" || alumno[0][0] == "" || alumno[0][5] == "")
{
gotoxy(5,19);
verde
printf("%c", 175);
rojo
cout << " Debe ingresar datos para poder mostrarlos.";
blanco
}
else
{
gotoxy(5,7);
blanco
cout << "Institucion: " ;
rojo
gotoxy(25,7);
cout << "Unidad Educativa UNE ";
gotoxy(5,9);
blanco
cout << "Grado: " ;
rojo
gotoxy(25,9);
cout << "2do Diversificado ";
gotoxy(5,11);
blanco
cout << "Materia: ";
rojo
gotoxy(25,11);
cout << materia ;
gotoxy(5,13);
blanco
cout << "Docente encargado: ";
rojo
gotoxy(25,13);
cout << profesor[1];
blanco
gotoxy(45,13);
cout << "Cedula: " ;
rojo
cout << profesor[0];
blanco
gotoxy(37,16);
verde
cout << "ALUMNOS" ;
gotoxy(5,18);
blanco
cout << "Cedula";
gotoxy(15,18);
cout << "Nombre y apellido" ;
gotoxy(35,18);
cout << "Lapso 1";
gotoxy(45,18);
cout << "Lapso 2";
gotoxy(55,18);
cout << "Lapso 3";
gotoxy(65,18);
cout << "Promedio";
int y = 20;
for(i=0;i<=9;i++)
{
if(alumno[i][0] != "")
{
gotoxy(5,y);
rojo
cout << alumno[i][0];
gotoxy(15,y);
cout << alumno[i][1];
gotoxy(35,y);
verde
cout << alumno[i][2];
gotoxy(45,y);
cout << alumno[i][3];
gotoxy(55,y);
cout << alumno[i][4];
gotoxy(65,y);
amarillo
cout << alumno[i][5];
blanco
y += 1;
}
}
gotoxy(5,32);
blanco
cout << "Promedio general del grado: " ;
verde
cout << total;
blanco
int archivo;
gotoxy(5,34);
cout << "Desea guardar este reporte en un archivo? para si ingrese 1, para no ingrese 0: ";
rojo
cin >> archivo;
if(archivo != 0)
{
// constructor para invocar la clase ofstream
ofstream c_Reporte;
// abre el archivo
c_Reporte.open ( “reporte_notas.txt”, ios::trunc );
// inserta en el archivo los valores predeterminados para un nuevo personaje
c_Reporte < < "Institucion: Unidad Educativa UNE\n";
c_Reporte << "Grado: 2do Diversificado\n";
c_Reporte << "Materia: " << materia << "\n";
c_Reporte << "Docente encargado: " << profesor[1] << " Cedula: " << profesor[0] << "\n";
c_Reporte << "ALUMNOS\n" ;
for(i=0;i<=9;i++)
{
if(alumno[i][0] != "")
{
c_Reporte << "CI: " << alumno[i][0] << " ";
c_Reporte << "Nombre: " << alumno[i][1] << " ";
c_Reporte << "Lapso 1: " << alumno[i][2] << " ";
c_Reporte << "Lapso 2: " < c_Reporte << "Lapso 3: " < c_Reporte << "Definitiva: " < y += 1; // cierra el archivo } pantalla.h /// // Definiciones de colores // Definiciones de caracteres ASCII-extended //// Esquinas //// laterales y horizontales //// intersecciones #define testa cout << static_cast // prototipos int gui(); // funcion // dibujar linea del tope // dibujar lineas laterales // dibuja la linea inferior del GUI // dibujar linea para dividir el titulo } #endif
}
}
c_Reporte << "\n\n" << "Promedio del aula: " << total << "\n";
c_Reporte.close();
// avisar de la creacion del personaje
gotoxy(5,37);
verde
cout << "Archivo guardado";
blanco
}
}
///
/// Archivo de funciones para dibujar pantalla, por Jose Luis Chafardet
///
///
#ifndef __PANTALLA_H
#define __PANTALLA_H
#define amarillo textcolor(YELLOW);
#define verde textcolor(LIGHTGREEN);
#define blanco textcolor(WHITE);
#define rojo textcolor(LIGHTRED);
#define negro textcolor(BLACK);
// fin de las definiciones de color
#define EDS char ( 187 );
#define EIS char ( 201 );
#define EDI char ( 188 );
#define EII char ( 200 );
//// fin de las esquinas
#define VER char ( 186 );
#define HOR char ( 205 );
//// fin de las lineas Laterales y horizontales
#define IDER char ( 185 );
#define IIZQ char ( 204 );
#define ITOP char ( 203 );
#define IBOT char ( 202 );
int gui()
{
int i;
clrscr();
amarillo
system(“TITLE Control de notas”);
system(“COLOR 1F”);
textbackground(BLUE);
gotoxy(1,1);
amarillo
cout << EIS ;
for( i = 0 ; i < 78 ; i++)
{
cout << HOR ;
}
cout << EDS ;
for( i = 2 ; i <= 38 ; i++)
{
gotoxy(1,i);
cout << VER ;
gotoxy(80,i);
cout << VER ;
}
gotoxy(1,39);
cout << EII ;
for( i = 0 ; i < 78 ; i++)
{
cout << HOR ;
}
cout << EDI ;
gotoxy(1,5);
cout << IIZQ ;
for( i = 0; i < 78 ; i++)
{
cout << HOR ;
}
cout << IDER ;
Entries (RSS)