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:


