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:


domingo, 2 de diciembre de 2012

Tarea 5 unidad 3

Preguntas:

1- Que cosas se necesitan para almacenar y recuperar datos fuera de un programa en C++?
R- Un archivo y un objeto de flujo de archivos

2-Que es un archivo?
R-Es una coleccion de datos almacenados juntos bajo un nombre comun, por lo general en un disco, cinta magnetica o CD-ROM


3-De que forma se almacena un archivo en un medio externo como un disco?
R- De forma fisica.

4-Cada archivo tiene un nombre de archivo unico conocido como?
R- Nombre externo del archivo

5-Que es el nombre externo de archivo?
R-Es la manera en que es conocido el archivo por el sistema operativo.

6-Desde hace cuando existian los archivos de datos?
R- Desde antes que existieran las computadoras

7-Que es un flujo?
R- Es la ruta de transmision en un solo sentido entre una fuente y un destino.

8-Como se llama la ruta por donde se envian la informacion?
R-Ruta de transmison

9-Que proporciona el objeto cin?
R-Una ruta de transmision del teclado al programa


10- Que proporciona el objeto cout?
R-Una ruta de transmision del programa a la pantalla terminal/

11-Apartir de que clases son creados los objetos cin y cout?
R-Clases de flujo iostream y ostream

12-Cuales son los dos tipos de archivos basicos que existen?
R- archivos de texto y archivos binarios

13-Que permite el uso de un codigo de caracteres?
R-A un procesador de palabras o a un editor de texto desplegar los archivos de modo que puedan ser leidos

14-Cual es la ventaja de los archivos binarios?
R- Que son mas compactos,usan menos espacio al almacenarlos

15-Que es un flujo de archivos?
R-Es una ruta de transmision unidireccional utilizada para conectar un archivo almacenado en un dispositivo fisico


16-Como se le conoce al flujo de archivos que recibe o lee datos de un archivo a un programa?
R-Flujo de archivos de entrada

17-Como se le conoce al flujo de archivos que envia o escribe datos en un archivo?
R-Flujo de archivos de salida

18-Con que metodo se cierra un archivo?
R- Con el metodo close()

19-Que hace el metodo close()?
R- Rompe la conexion  entre el nombre externo del archivo y el objeto de flujo de archivos

20-Que hace el metodo peek?
R-Devuelve el siguiente caracter en el flujo de entrada sin extraerlo del flujo



 Problema 10(a) Seccion 6.8
Codificacion c++

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <fstream>
#include <string>

int main()
{

string nombre_archivo="datos.dat";
ofstream archivo_sal;

archivo_sal.open(nombre_archivo.c_str());

if (archivo_sal.fail())
{
cout<<"el archivo no  habrio con exito"<<endl;
exit(1);
}
archivo_sal<<setiosflags(ios::fixed)<<setiosflags(ios::showpoint)<<setprecision(3);

cout<<"Nombre"<<"\t    "<<"   Tarifa"<<"  "<<"Horas"<<endl;
cout<<"----------------------------"<<endl;
cout<<"Callaway,G."<<"\t"<<"6.00"<<"\t"<<"40"<<endl;
cout<<"Hanson,P."<<"\t"<<"5.00"<<"\t"<<"48"<<endl;
cout<<"Lasard,D."<<"\t"<<"6.50"<<"\t"<<"35"<<endl;
cout<<"Stillman,W."<<"\t"<<"8.00"<<"\t"<<"50"<<endl;

archivo_sal<<"Nombre"<<"\t    "<<"   Tarifa"<<"  "<<"Horas"<<endl;
archivo_sal<<"-----------------------------"<<endl;
archivo_sal<<"Callaway,G."<<"\t"<<"6.00"<<"\t"<<"40"<<" "<<endl;
archivo_sal<<"Hanson,P."<<"\t"<<"5.00"<<"\t"<<"48"<<endl;
archivo_sal<<"Lasard,D."<<"\t"<<"6.50"<<"\t"<<"35"<<endl;
archivo_sal<<"Stillman,W."<<"\t"<<"8.00"<<"\t"<<"50"<<endl;
archivo_sal.close();
getch();
return 0;
}

Pseudocodigo:

Inicio


string nombre_archivo="datos.dat"
ofstream archivo_sal

archivo_sal.open(nombre_archivo.c_str())

if (archivo_sal.fail())
{
Print "el archivo no  habrio con exito"
exit(1)
}
archivo_sal, setiosflags(ios::fixed), setiosflags(ios::showpoint), setprecision(3)

Print "Nombre", "    ", "   Tarifa", "  ", "Horas"
Print "----------------------------"
Print "Callaway,G.", "", "6.00", "", "40"
Print "Hanson,P.", "", "5.00", "", "48"
Print "Lasard,D.", "", "6.50", "", "35"
Print "Stillman,W.", "", "8.00", "", "50"

archivo_sal, "Nombre", "    ", "   Tarifa", "  ", "Horas"
archivo_sal, "-----------------------------"
archivo_sal, "Callaway,G.", "", "6.00", "", "40", "              "
archivo_sal, "Hanson,P.", "", "5.00", "", "48"
archivo_sal, "Lasard,D.", "", "6.50", "", "35"
archivo_sal, "Stillman,W.", "", "8.00", "", "50"
archivo_sal.close()
FIN

Imagen de corrida del programa:


 Problema 10(b) Seccion 6.8

Codificacion C++#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <fstream>
#include <string>

int main()
{

string nombre_archivo="Datos.dat";
ofstream archivo_sal;

archivo_sal.open(nombre_archivo.c_str());

if (archivo_sal.fail())
{
cout<<"el archivo no  habrio con exito"<<endl;
exit(1);
}
archivo_sal<<setiosflags(ios::fixed)<<setiosflags(ios::showpoint)<<setprecision(3);

cout<<"Nombre"<<"\t    "<<"   Tarifa"<<"  "<<"Horas"<<"  "<<"Pago bruto"<<"  "<<"Pago de tiempo extra"<<"  "<<"Pago regular"<<endl;
cout<<"-----------------------------------------------------------------------------"<<endl;
cout<<"Callaway,G."<<"\t"<<"6.00"<<"\t"<<"40"<<" "<<(40*6)<<"    "<<(0)<<"          "<<(40*6)<<endl;
cout<<"Hanson,P."<<"\t"<<"5.00"<<"\t"<<"48"<<" "<<(48*1.5+48*5)<<"   "<<48*1.5<<"       "<<48*5<<endl;
cout<<"Lasard,D."<<"\t"<<"6.50"<<"\t"<<"35"<<" "<<(35*6.50)<<"    "<<0<<"         "<<35*6.50<<endl;
cout<<"Stillman,W."<<"\t"<<"8.00"<<"\t"<<"50"<<" "<<(50*1.5+50*8.0)<<"    "<<50*1.5<<"       "<<50*8.0<<endl;

archivo_sal<<"Nombre"<<"\t    "<<"   Tarifa"<<"  "<<"Horas"<<"  "<<"Pago bruto"<<"  "<<"Pago de tiempo extra"<<"  "<<"Pago regular"<<endl;
archivo_sal<<"-----------------------------------------------------------------------------"<<endl;
archivo_sal<<"Callaway,G."<<"\t"<<"6.00"<<"\t"<<"40"<<" "<<(40*6)<<"    "<<(0)<<"         "<<(40*6)<<endl;
archivo_sal<<"Hanson,P."<<"\t"<<"5.00"<<"\t"<<"48"<<" "<<(48*1.5+48*5)<<"         "<<(48*1.5)<<"      "<<(48*5)<<endl;
archivo_sal<<"Lasard,D."<<"\t"<<"6.50"<<"\t"<<"35"<<" "<<(35*6.50)<<"    "<<(0)<<"         "<<(35*6.50)<<endl;
archivo_sal<<"Stillman,W."<<"\t"<<"8.00"<<"\t"<<"50"<<" "<<(50*1.5+50*8.0)<<"    "<<(50*1.5)<<"       "<<(50*8.0)<<endl;
archivo_sal.close();
getch();
return 0;
}

Pseudocodigo:

Inicio

string nombre_archivo="Datos.dat"
ofstream archivo_sal

archivo_sal.open(nombre_archivo.c_str())

if (archivo_sal.fail())
{
Print "el archivo no  habrio con exito"
exit(1)
}
archivo_sal, setiosflags(ios::fixed), setiosflags(ios::showpoint), setprecision(3)

Print "Nombre", "    ", "   Tarifa", "  ", "Horas", "  ", "Pago bruto", "  ", "Pago de tiempo extra", "  ", "Pago regular"
Print "-----------------------------------------------------------------------------"
Print "Callaway,G.", "", "6.00", "", "40", "             ", (40*6), "                          ", (0), "                 ", (40*6)
Print "Hanson,P.", "", "5.00", "", "48", "                ", (48*1.5+48*5), "                         ", 48*1.5, "         ", 48*5
Print "Lasard,D.", "", "6.50", "", "35", "  ", (35*6.50), "                    ", 0, "                    ", 35*6.50
Print "Stillman,W.", "", "8.00", "", "50", "              ", (50*1.5+50*8.0), "                      ", 50*1.5, "         ", 50*8.0

archivo_sal, "Nombre", "    ", "   Tarifa", "  ", "Horas", "  ", "Pago bruto", "  ", "Pago de tiempo extra", "  ", "Pago regular"
archivo_sal, "-----------------------------------------------------------------------------"
archivo_sal, "Callaway,G.", "", "6.00", "", "40", "              ", (40*6), "                          ", (0), "                 ", (40*6)
archivo_sal, "Hanson,P.", "", "5.00", "", "48", "  ", (48*1.5+48*5), "         ", (48*1.5), "     ", (48*5)
archivo_sal, "Lasard,D.", "", "6.50", "", "35", "    ", (35*6.50), "                    ", (0), "                 ", (35*6.50)
archivo_sal, "Stillman,W.", "", "8.00", "", "50", "               ", (50*1.5+50*8.0), "                      ", (50*1.5), "                      ", (50*8.0)
archivo_sal.close()
FIN

Imagen de corrida del programa: