martes, 18 de diciembre de 2012

Proyecto final

Obetivo:

El Proyecto ‘Control de Becas Alimenticias’ es creado para agilización de la entrega de los alimentos en la Institución Tecnológico de Tijuana la cual cuenta con el servicio de una cafetería particular en la cual son entregadas las becas.
Objetivo General: Implementar el proyecto en la cafetería para reducir el tiempo que se lleva a cabo en la entrega de la comida por cada alumno que es de aproximadamente 3 minutos ya con la implementación del programa el tiempo será de mas tardar de un minuto.

Codificacion C++:
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <iostream.h>
#include <fstream.h>
#include <iostream>
#include <fstream>
#include <dos.h>
char const * const dia_str[7] =
{
"Domingo",
"Lunes",
"Martes",
"Miercoles",
"Jueves",
"Viernes",
"Sabado"
};

char const * const mes_str[12] =
{
"Enero",
"Febrero",
"Marzo",
"Abril",
"Mayo",
"Junio",
"Julio",
"Agosto",
"Septiembre",
"Octubre",
"Noviembre",
"Diciembre"
};

char const * const menu_dia[7][3] =
{
{"", "", ""},
{"Enchiladas rojas y postre", "3 Sopes con sopa de vegetales", "Huevos con chorizo y frijoles"},
{"Milanesa de res y frijoles", "2 Quesadillas con frijoles y sopa", "Un sandwich de jamon"},
{"Una hamburguesa", "Espagueti con carne y queso", "2 Burritos de bistec"},
{"Caldo de pollo y vegetales", "Una torta de carne azada", "Waffles con miel y chocolate"},
{"Tortas de papa con una sopa de fideos", "Caldo de res con arroz", "Enchiladas verdes y postre"},
{"", "", ""}
};

char g_nombre[60][64];
char g_carrera[60][64];
int  g_numero[60];
int  g_estadoalumnos;
char g_pass[6 + 1];

void reemplazar(char *str, char o, char v);
void preparardatos(int modo);
void editaralumno(int numero);
void inicializarregistro(int k);
void cargaralumnos();
void guardaralumnos();
int buscaralumno(int numero);
#define buscardisponible() buscaralumno(0)
void borraralumno(int numero);
void registraralumno(int numero);
void editaralumno(int numero);
void desplegaralumnos();
tm *obtenerhorafecha();
int obtenernumero();
void introducirnumero(int numero);
void desplegaralimentos(int numero);


void main()
{
int opc;
tm *ltm;


cargaralumnos();

do
{
clrscr();
ltm = obtenerhorafecha();
cout << "\n\tHoy es " << dia_str[ltm->tm_wday] << " " << ltm->tm_mday << " de " << mes_str[ltm->tm_mon] << " de " << (1900 + ltm->tm_year) << endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
cout << "\n\tMenu principal" << endl;
cout<<"--------------------------------------------------------------------------------"<<endl;

cout << "\n\t1. Registrar alumno." << endl;
cout << "\n\t2. Introducir numero de control." << endl;
cout << "\n\t3. Lista de alumnos registrados." << endl;
cout << "\n\t4. Borrar alumno." << endl;
cout << "\n\t5. Modificar alumno." << endl;
cout << "\n\t6. Alimentos consumidos." << endl;
cout << "\n\t7. Salir." << endl;
cout << "\n\tOpcion: ";
cin >> opc;

switch (opc)
{
case 1: registraralumno(obtenernumero());
break;
case 2: introducirnumero(obtenernumero());
break;
case 3: desplegaralumnos();
break;
case 4: borraralumno(obtenernumero());
break;
case 5: editaralumno(obtenernumero());
break;
case 6: desplegaralimentos(obtenernumero());
break;

}

if (opc != 7)
{
cout << "\n\tPresione cualquier tecla para continuar..." << endl;
getch();
}
}
while (opc != 7);

guardaralumnos();

}


void reemplazar(char *str, char o, char v)
{
char *p;
while (p = strchr(str, o)) {*p = v;}
}

void preparardatos(int modo)
{
char o, v;

if (modo == g_estadoalumnos) {return;}

switch (modo)
{
case 1:
o = '_';
v = ' ';
break;
case 2:
o = ' ';
v = '_';
break;
default:
return;
}

for (int k = 0; k < 60; k++)
{
reemplazar(g_nombre[k], o, v);
reemplazar(g_carrera[k], o, v);
}

g_estadoalumnos = modo;
}

void inicializarregistro(int k)
{
g_numero[k] = 0;
g_nombre[k][0] = '0';
g_nombre[k][1] = '\0';
g_carrera[k][0] = '0';
g_carrera[k][1] = '\0';
}

void cargaralumnos()
{
ifstream ib("C:\\proyecto\\alumnos.txt");
for (int k = 0; k < 60; k++) {inicializarregistro(k);}
for (int k = 0; k < 60 && ib.good(); k++) {ib >> g_numero[k] >> g_nombre[k] >> g_carrera[k];}
preparardatos(1);
}

void guardaralumnos()
{
ofstream ob("C:\\proyecto\\alumnos.txt");
preparardatos(2);
for (int k = 0; k < 60; k++) {ob << g_numero[k] << ' ' << g_nombre[k] << ' ' << g_carrera[k] << endl;}
preparardatos(1);
}

int buscaralumno(int numero)
{
for (int k = 0; k < 60; k++) {if (g_numero[k] == numero) {return k;}}
return -1;
}

void borraralumno(int numero)
{
int k;


k = buscaralumno(numero);

if (k < 0)
{
cout << "\n\tRegistro no encontrado." << endl;
return;
}

inicializarregistro(k);
}

void registraralumno(int numero)
{
char sel;
int k;

k = buscaralumno(numero);

if (k >= 0)
{
cout << "\n\tEste numero de control ya esta registrado." << endl;
cout << "\n\tEditar registro? (s/n): ";
cin >> sel;

if (sel == 's' || sel == 'S') {editaralumno(numero);}
return;
}

k = buscardisponible();

if (k < 0)
{
cout << "\n\tSe ha alcanzado el numero maximo de alumnos registrados." << endl;
return;
}

g_numero[k] = numero;
cin.ignore(8192, '\n');

cout << "\n\tNombre: ";
cin.getline(g_nombre[k], 64, '\n');

cout << "\n\tCarrera: ";
cin.getline(g_carrera[k], 64, '\n');
}

void editaralumno(int numero)
{
char sel;
int k;



k = buscaralumno(numero);

if (k < 0)
{
cout << "\n\tNo se ha encontrado el numero de control especificado." << endl;
cout << "\n\tRegistrar alumno? (s/n): ";
cin >> sel;

if (sel == 's' || sel == 'S') {registraralumno(numero);}
return;
}

cout << "\n\tNombre: " << g_nombre[k] << endl;
cout << "\n\tEditar (s/n): ";
cin >> sel;

cin.ignore(8192, '\n');

if (sel == 's' || sel == 'S')
{
cout << "\n\tNombre: ";
cin.getline(g_nombre[k], 64);
}

cout << "\n\tCarrera: " << g_carrera[k] << endl;
cout << "\n\tEditar (s/n): ";
cin >> sel;

cin.ignore(8192, '\n');

if (sel == 's' || sel == 'S')
{
cout << "\n\tCarrera: ";
cin.getline(g_carrera[k], 64);
}
}

void desplegaralumnos()
{
for (int k = 0; k < 60; k++)
{
if (g_numero[k] != 0)
{
cout << g_numero[k] << " " <<  g_nombre[k] << " " << g_carrera[k] << endl;
}
}
}

tm *obtenerhorafecha()
{
time_t ms = time(0);
return localtime(&ms);
}

int obtenernumero()
{
int numero;
cout << "\n\tNumero de control: ";
cin >> numero;
return numero;
}

void desplegaralimentos(int numero)
{
int r_num, r_mdia, r_mmes, r_myear, dia, menu;
bool encontrados;
ifstream ial;

ial.open("C:\\proyecto\\alimentos.txt");
encontrados = false;

cout << "\n\tAlimentos consumidos por " << numero << ":" << endl;
ial >> r_num;

while (ial.good())
{
if (r_num == numero)
{
ial >> r_mdia >> r_mmes >> r_myear >> dia >> menu;
cout << dia_str[dia] << " " << r_mdia << "/" << (r_mmes + 1) << "/" << (r_myear + 1900) << " "<< menu_dia[dia][menu - 1] << "." << endl;
encontrados = true;
}
ial.ignore(8192, '\n');
ial >> r_num;
}

if (!encontrados) {cout << "Ninguno." << endl;}
}

void introducirnumero(int numero)
{
int dia, menu, r_num, r_mdia, r_mmes, r_myear;
ofstream oal;
ifstream ial;
char sel;
tm *lctm;

if (buscaralumno(numero) < 0)
{
cout << "\n\tNo se ha encontrado el numero de control especificado." << endl;
cout << "\n\tRegistrar alumno? (s/n): ";
cin >> sel;
if (sel == 's' || sel == 'S') {registraralumno(numero);}
else return;
}

ial.open("C:\\proyecto\\alimentos.txt");
lctm = obtenerhorafecha();

while (ial.good())
{
ial >> r_num;

if (r_num == numero)
{
ial >> r_mdia >> r_mmes >> r_myear;
if (r_mdia == lctm->tm_mday && r_mmes == lctm->tm_mon && r_myear == lctm->tm_year)
{
cout << "\n\tEste alumno ya consumio alimentos este dia." << endl;
return;
}
}

ial.ignore(8192, '\n');
}

ial.close();
dia = lctm->tm_wday;

if (dia == 0 || dia == 6)
{
cout << "\n\tNo hay menu disponible para dia " << dia_str[dia] << "." << endl;
return;
}

cout << "\n\tMenu del dia " << dia_str[dia] << ":" << endl;
for (int i = 0; i < 3; i++)
{
cout << (i + 1) << ". " << menu_dia[dia][i] << "." << endl;
}

cout << "\n\tOpcion: ";
cin >> menu;

if (menu < 1 || menu >3)
{
cout << "\n\tMenu invalido." << endl;
return;
}

oal.open("C:\\proyecto\\alumnos.txt", ios::app);
oal << numero << " " << lctm->tm_mday << " " << lctm->tm_mon << " " << lctm->tm_year << " "
<< dia << " " << menu;
oal << endl;
}

Imagen de corrida del proyecto:


No hay comentarios:

Publicar un comentario