//------------------------------------------------------------------------------
/*
Resumen: Programa que realiza la mayoria de las operaciones de un club de video. Contiene funciones tales como: cargar videos, los clientes y listarlos. Tambien posee la capacidad de alquilar y devolver dichos videos. Guarda los datos a peticion y carga automaticamente al iniciar el programa. Al guardar genera 3 archivos .txt: CLIENTES.TXT: Datos de todos los clientes registrados. VIDEOS.TXT : Datos de los videos cargados.
SISTEMA.TXT : Opciones generales del sistema. Las funciones en el programa son bastante explicitas y faciles de usar. Nunca tirará pantallas azules ni tequemara el CPU pero no por favor no intentes introducir valores no correspondientes en campos de entrada.
*/
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>
#include <fstream.h>
#define cursorsolido (_setcursortype(1))
#define cursorhidden (_setcursortype(0))
//DECLARACION DE REGISTROS------------------------------------------------------
struct pelicula
{ int codigo,cantidad,censura,genero; float costo; char nombre[30];};
struct pelicula video[30]={NULL};
struct afiliado
{ int cedula,edad,dia,mes,ano,puntos,alquilados,codigos[10]; float mora; char nombre[30],direccion[201],telefono[13];
};
struct afiliado cliente[10]={NULL};
struct date dates;
struct time tiempo;
//DECLARACION DE VARIABLES GLOBALES---------------------------------------------
int V=0; //cantidad de videos registrados
int C=0; //cantidad de clientes registrados
char *buffer=new char[4096]; //Utilizado para guardar y cargar los datos de pantalla
int CFONDO=9,CTEXTO=15,CBORDES=11;
float IVA=0.12;
void main()
{
int *opcion=new int;
*opcion=0;
cargar();
clrscr();
while (*opcion != '9')
{
cursorhidden;
*opcion=0;
ventana();
menu("Menu Principal",1,30,5,24,16);
gotoxy(32,9);
cprintf("1.- Cargar Peliculas");gotoxy(32,10);
cprintf("2.- Cargar Clientes");gotoxy(32,11);
cprintf("3.- Listar Peliculas");gotoxy(32,12);
cprintf("4.- Listar Clientes");gotoxy(32,13);
cprintf("5.- Alquilar Videos");gotoxy(32,14);
cprintf("6.- Devolucion");gotoxy(32,15);
cprintf("7.- Guardar Datos");gotoxy(32,16);
cprintf("8.- Opciones");gotoxy(32,17);
cprintf("9.- Salir");gotoxy(32,18);
*opcion = barraestado("..::|||Developed By Jesus Veracierta|||::..");
switch(*opcion)
{
case '1':
cargarvideo();
break;
case '2':
nuevoafiliado();
break;
case '3':
listadodevideos();
break;
case '4':
listadoclientes();
break;
case '5':
alquiler();
break;
case '6':
devolucion();
break;
case '7':
guardar();
break;
case '8':
opciones();
break;
case '9':
cursorhidden;
menu("ATENCION",1,3,4,20,5);
gotoxy(4,7);
cprintf(" Desea guardar?");
comentario("Guardar los cambios en la base de datos");
if (siono() == 1)
guardar();
gotoxy(31,19);
cprintf("\x07");
cprintf(".:Shutdowning System:.");
comentario("Cerrando el programa..");
delete buffer;
getch();
break;
}//fin switch opcion
}//fin while
delete opcion;
}//fin main
//GUARDA LA BASE DE DATOS-------------------------------------------------------
void guardar(void)
{
int *i= new int,*j= new int;
clrscr();
ventana();
comentario("S: Guardar / N: Cancelar");
gotoxy(2,3);
cprintf("Realmente desea guardar los cambios?\n\r\xBASe sobreescribiran los datos actuales!");
if (siono() == 1)
{
gotoxy(2,6);
textcolor(LIGHTRED);
cprintf("GUARDANDO BASE DE DATOS POR FAVOR ESPERE....\n\r");gotoxy(2,8);
clock_t start = clock(), end;
int tick=0,tick2=1,tiempo=0;
cprintf("---");
while(tiempo!=5)
{
end = clock();
tick = (end-start)/CLK_TCK*2;
if (tick2 != tick)
{
tick2 = tick;
cprintf("[%d%]---",tiempo*25);
end = 0;
tiempo++;
}
}
cprintf("\n\r");
textcolor(WHITE);
ofstream(DATOSCLIENTES);
DATOSCLIENTES.open("CLIENTES.TXT",ios::out);
if (!DATOSCLIENTES)
{
gotoxy(2,10);
cprintf("No se pudo abrir el archivo CLIENTES.TXT");
}
else
{
DATOSCLIENTES << C << endl;
for (*i=0 ; *i<C ; ++*i)
{
DATOSCLIENTES << cliente[*i].alquilados << " ";
for(*j=0;*j<cliente[*i].alquilados;++*j)
{
DATOSCLIENTES << cliente[*i].codigos[*j] << " ";
}
DATOSCLIENTES << cliente[*i].dia << " " << cliente[*i].mes
<< " " << cliente[*i].ano << " " << cliente[*i].puntos
<< " " << cliente[*i].mora << " " << cliente[*i].telefono << " "
<< cliente[*i].edad << " " << cliente[*i].cedula << " "
<< cliente[*i].nombre << " " << cliente[*i].direccion << endl ;
}
DATOSCLIENTES.close();
gotoxy(2,10);
cprintf("Base de datos de los clientes guardada con exito.");
}
//GUARDA AHORA LAS PELICULAS---sss---sss---sss---sss---sss---sss---sss---sss---s
ofstream DATOSVIDEOS;
DATOSVIDEOS.open("VIDEOS.TXT",ios::out);
if (!DATOSVIDEOS)
{
gotoxy(2,11);
cprintf("No se pudo abrir el archivo VIDEOS.TXT");
}
else
{
DATOSVIDEOS << V << endl ;
for (*i=0 ; *i<V ; ++*i)
{
DATOSVIDEOS << video[*i].codigo << " " << video[*i].cantidad
<< " " << video[*i].censura << " " << video[*i].genero << " " << video[*i].costo
<< " " << video[*i].nombre << endl;
}
DATOSVIDEOS.close();
gotoxy(2,11);
cprintf("Base de datos de las peliculas guardada con exito.");
}
comentario(" ");
gotoxy(2,13);
cprintf("Presione una tecla para continuar...");
getch();
delete i;
delete j;
}
}
//CARGA LA BASE DE DATOS--------------------------------------------------------
void cargar()
{
char *aux=new char[30],*esp = " ";
int *i=new int,*j=new int;
clrscr();
cprintf("\n\r");
textcolor(LIGHTGREEN);
cprintf(" CARGANDO BASE DE DATOS POR FAVOR ESPERE....\n\n\r");
clock_t *start=new long, *end=new long;
*start=clock();
int *tick=new int,*tick2=new int,*tiempo=new int;
*tick=0;
*tick2=1;
*tiempo=0;
cprintf(" ---");
while(*tiempo!=5)
{
*end = clock();
*tick = (*end-*start)/CLK_TCK*2;
if (*tick2 != *tick)
{
*tick2 = *tick;
cprintf("[%d%]---",(*tiempo)*25);
*end = 0;
++*tiempo;
}
}
cprintf("\n\n\r");
delete start,end;
delete tick,tick2,tiempo;
ifstream DATOSCLIENTES;
DATOSCLIENTES.open("CLIENTES.TXT",ios::in);
if (DATOSCLIENTES==NULL)
{
cprintf(" No se pudo abrir CLIENTES.TXT para cargar los datos.\n\r");
}
else
{
DATOSCLIENTES >> C;
for (*i=0 ; *i<C ; ++*i)
{
if (*i < C)
{
DATOSCLIENTES >> cliente[*i].alquilados;
for(*j=0 ; *j < cliente[*i].alquilados ; ++*j)
{
DATOSCLIENTES >> cliente[*i].codigos[*j];
}
DATOSCLIENTES >> cliente[*i].dia >> cliente[*i].mes >> cliente[*i].ano
>> cliente[*i].puntos >>cliente[*i].mora >> cliente[*i].telefono
>> cliente[*i].edad >> cliente[*i].cedula >> ws >> cliente[*i].nombre >> aux >> ws;
strcat(cliente[*i].nombre,esp);
strcat(cliente[*i].nombre,aux);
DATOSCLIENTES.getline(cliente[*i].direccion,200,'\n');
}
}
DATOSCLIENTES.close();
cprintf(" Exito al cargar %02d clientes.\n\r",C);
}
//AHORA CARGA LAS PELICULAS---sss---sss---sss---sss---sss---sss---sss---sss---ss
ifstream DATOSVIDEOS;
DATOSVIDEOS.open("VIDEOS.TXT",ios::in);
if (!DATOSVIDEOS)
{
cprintf(" No se pudo abrir VIDEOS.TXT para cargar los datos.\n\n\r");
}
else
{
DATOSVIDEOS >> V;
for (*i=0;*i<V;++*i)
{
DATOSVIDEOS >> video[*i].codigo >> video[*i].cantidad >> video[*i].censura
>> video[*i].genero >> video[*i].costo >> ws;
DATOSVIDEOS.getline(video[*i].nombre,31,'\n');
}
delete i;
delete j;
delete[] aux;
DATOSVIDEOS.close();
cprintf(" Exito al cargar %02d peliculas.\n\n\r",V);
}
ifstream DATOSSISTEMA;
DATOSSISTEMA.open("SISTEMA.TXT",ios::in);
if (!DATOSSISTEMA)
{
cprintf(" No se pudo abrir el archivo SISTEMA.TXT\n\n\r");
}
else
{
DATOSSISTEMA >> CTEXTO >> CFONDO >> CBORDES >> IVA;
DATOSSISTEMA.close();
cprintf(" Datos del sistema cargados con exito.\n\n\r");
}
cprintf(" Presione una tecla para continuar...\n\r",V);
getch();
}
//GUARDA LAS OPCIONES DEL SISTEMA-----------------------------------------------
void guardarsistema(void)
{
ofstream DATOSSISTEMA;
DATOSSISTEMA.open("SISTEMA.TXT",ios::out);
if (!DATOSSISTEMA)
{
clrscr();
ventana();
gotoxy(2,11);
cprintf("No se pudo abrir el archivo SISTEMA.TXT");
}
else
{
DATOSSISTEMA << CTEXTO << " " << CFONDO << " " << CBORDES << " " << IVA;
DATOSSISTEMA.close();
}
}
//***FUNCIONES VARIAS PARA EL CONTROL DE LA APLICACION***-----------------------
//FUNCION QUE HACE LOS MENUS----------------------------------------------------
void menu(const char* X,int cabecera, int posx, int posy, int tamx, int tamy)
{
int *i=new int,*j=new int,*centro=new int;
char *B[]={"\xDA","\xBF","\xC0","\xD9","\xC4","\xB3","\xC3","\xB4"};
if (cabecera == 2)
{
cursorhidden;
gotoxy(posx,posy);
for (*i=0;*i<tamy+1;++*i)
{
gotoxy(posx,posy+(*i));
for (*j=0;*j<tamx+1;++*j)
cprintf("\xFF");
}
}
else
{
gotoxy(posx,posy);
textcolor(CBORDES);
cprintf(B[0]);for (*i=0;*i<tamx-2;++*i)cprintf(B[4]);cprintf(B[1]);
gotoxy(posx,wherey()+1);
for (*i=0;*i<tamy-2;++*i)
{
gotoxy(posx,posy+1+(*i));
cprintf(B[5]);
gotoxy((posx+tamx)-1,wherey());
cprintf(B[5]);
textcolor(BLACK);
if (cabecera == 1)
cprintf("\xB1");
textcolor(CBORDES);
}
gotoxy(posx,wherey()+1);
cprintf(B[2]);for (*i=0;*i<tamx-2;++*i)cprintf(B[4]);cprintf(B[3]);
textcolor(BLACK);
if (cabecera == 1)
cprintf("\xB1");
textcolor(CBORDES);
for (*i=1;*i<=tamx;++*i)
{
gotoxy(posx+(*i),tamy+posy);
textcolor(BLACK);
if (cabecera == 1)
cprintf("\xB1");
textcolor(CBORDES);
}
if (cabecera == 1)
{
gotoxy(posx,posy+2);
cprintf(B[6]);for (*i=0;*i<tamx-2;++*i)cprintf(B[4]);cprintf(B[7]);
*centro = ((tamx)-strlen(X))/2;
gotoxy(*centro+posx,posy+1);
cprintf(X);
textcolor(CTEXTO);
}
}
textcolor(CTEXTO);
delete i,j,centro;
}
//FUNCION QUE DIBUJA EL MARCO DE LA VENTANA-------------------------------------
void ventana()
{
int *i=new int,*j=new int;
clrscr();
char titulo[] =
"-->SnipeR_Wolf<-- N e o B L O C K B U S T E R© 2010 Version 3.0(c)";
textbackground(LIGHTGRAY);
textcolor(BLACK);
insline();
gotoxy(3,1);cprintf(titulo);
textbackground(CFONDO);
textcolor(CTEXTO);
gotoxy(1,2);
cprintf("\xC9");for(*i=0;*i<78;++*i) cprintf("\xCD");cprintf("\xBB");
for(*i=3;*i<24;++*i){cprintf("\xBA");for (*j=0;*j<78;++*j)cprintf(" ");cprintf("\xBA");}
cprintf("\xC8");for(*i=0;*i<78;++*i)cprintf("\xCD");cprintf("\xBC");
textbackground(LIGHTGRAY);
textcolor(BLACK);
insline();
textbackground(CFONDO);
textcolor(CTEXTO);
delete i,j;
}
//DIBUJA LA BARRA DE ESTADO Y ADEMAS DEVUELVE EL VALOR DE getch()---------------
int barraestado(const char* YY)
{
int pulsado;
cursorhidden;
clock_t *start=new long, *end=new long;
int *tick=new int,*tick2=new int,*centro=new int;
*tick=0;
*tick2=1;
textbackground(LIGHTGRAY);
textcolor(BLACK);
//muestra los comentarios segun la ventana
*centro=(80-(strlen(YY)))/2;
gotoxy(*centro,25);
cprintf(YY);
//-------------------------------------
while(!kbhit())
{
*tick = (*end-*start)/CLK_TCK;
if (*tick2 != *tick)
{
gotoxy(70,25);
fecha();
*end = 0;
gotoxy(2,25);
reloj();
*start = clock();
}
*tick2=*tick;
*end = clock();
}
pulsado=getch();
textbackground(CFONDO);
textcolor(CTEXTO);
cursorsolido;
delete tick,tick2,centro;
delete start,end;
return (pulsado);
}
//DIBUJA EL RELOJ---------------------------------------------------------------
void reloj()
{
struct time tiempo;
gettime(&tiempo);
cprintf("%02d:%02d:%02d",tiempo.ti_hour,tiempo.ti_min,tiempo.ti_sec);
}
//DIBUJA Y ACTUALIZA LA FECHA---------------------------------------------------
void fecha()
{
getdate(&dates);
cprintf("%02d/%02d/%4d",dates.da_day,dates.da_mon,dates.da_year);
}
No response to “Programa Jesus Veracierta M3 NEOBLOCKBUSTER”
Publicar un comentario