Programa Jesus Veracierta M3 NEOBLOCKBUSTER


//------------------------------------------------------------------------------
/*
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”