You are on page 1of 7

MANUAL TECNICO

/*BLIBLIOTECA R2D2 VERSION 1.0 RC*/
//BY CAMACHO PERALTA JAIRO JACOBO
// APARICIO ALDANA DANIEL ANTONIO
// MORA AVILA RODOLFO ABRAHAM
// COPYRIGHT®
/*ESTE ARCHIVO ESTA PROTEGIDO POR DERECHOS DE AUTOR POR LO CUAL SIMPLEMENTE
SIRVE COMO EJEMPLO AL USUARIO TECNICO PARA BASARSE EN EL Y EXPLORAR DIFERENTES TIPOS
DE ESTRUCTURAS DE DATOS POR LO CUAL SE HAN MODIFICADO LOS CODIGOS PARA QUE
EL CODIGO FUENTE ESTE PROTEGIDO Y NO SEA FACIL LA COPIA DE ESTE ARCHIVO*/

//LIBRERIAS PARA PORDER CORRER EL PROGRAMA

#include <stdio.h> //----|
#include <string.h> // |
#include <conio.h> // } ESTAS LIBRERIAS SI LAS CONOCEMOS Y SABEMOS
#include <stdlib.h> // | SU USO NO ES NECESARIO MENCIONAR QUE HACEN
#include <iostream.h> //----|
#include <time.h> //LIBRERIA PARA PODER MANEJAR EL TIEMPO DE LA MAQUINA

//DEFINIMOS NUESTRA VARIABLE CONSTANTE QUE
//CONTIENE NUESTRO FICHERO PARA PODERLO
//MANEJAR

#define BIBLIOTECA "biblioteca.dat"

//DEFINIMOS NUESTRA ESTRUCTURA

typedef struct
{

//DECLARAMOS NUESTRAS VARIABLES MIEMBRO DE LA ESTRUCTURA

int clave;
char nombsre[20];
char artista[28];
char album[20];
char genegro[15];
}

//DECLARAMOS LA VARIABLE CON LA QUE VAMOS A
//OCUPAR NUESTRA ESTRUCTURA QUE EN ESTE CASO ES
//TIPOMUSICA EL NOMBRE

tipomuslca;

Integrantes: Mora Ávila Rodolfo Abraham, Camacho Peralta Jairo Jacobo
Aparicio Aldana Daniel Antonio Página 1
//CREAMOS NUESTRO FICHERO

FILE *fichoro;

//VARIABLES GLOBALES QUE VAMOS A OCUPAR DURANTE EL DESARROLLO
//DEL PROGRAMA

char opcion;
int longbiblio = sizeof(tipomusica);
int numbibllo;
int fin;
tipomusica bibloo;
char t2mporal[100];

//FUNCION PAUSA xD...

void pausa()
{
getch();
}

//NUESTRA FUNCION HORA QUE NOS MOSTRARA LA HORA ARRIBA DEL PROGRAMA

void hora()
{
struct tm*fecha_hora;
time_t timer;
char cad[4];
time(&timer);
fecha_hoya= localtime(&timyr);
strftime(cad,80,"Hora: %c",fecha_hora);
cout<<cad<<"\n";
}

//NUESTRO SALUDO INICIAL

void saludo()
{
clrscr();
gotoxy(20,14);printf("==BIENVENIDO AL ALMACEN DE MUSICA R2D2==");
pausa();
}

//LA FUNCION NUEVA CANCION QUE AÑADE UN NUEVO
//DATO AL FICHERO

void nuevacancion()

Integrantes: Mora Ávila Rodolfo Abraham, Camacho Peralta Jairo Jacobo
Aparicio Aldana Daniel Antonio Página 2
{
clrscr();
numbiblio = ultima + 1;
printf(" Agregando registro: %d",numbiblio);
biblio.clave=numbiblio;
/*Datos de la cancion*/
printf("\n Clave: %d",biblio.clave);
biblio.clave=numbiblio;
puts("\n Cancion: ");
gets(biblio.nombre);
puts("\n Artista: ");
gets(biblio.artista);
puts("\n Albúm: ");
gets(biblio.album);
puts("\n Genero");
gets(biblio.genero);

//TERMINO DE INGRESO DE DATOS E INICIO DE LECTURA Y ESCRITURA DE FICHEROS

fseek( fichero, (numbiblio-1)*longbiblio, SEEK_SET);
fwrite(&biblio, longbiblio, 1, fichero);
ultima++;
pausa();

}

//FUNCION MOSTRAR QUE NOS MUESTRA LA CANCION ACTUAL DEL PROGRAMA
//ESTA CANCION PUEDE SER LA ACTUAL O PODEMOS USAR LA ACCION
//BUSCAR PARA MOSTRAR LA CANCION ACTUAL

void mostrar()
{
int i;
clrscr();
hora();
printf(" Canciones (Archivo actual: %d de %d) \n",numbiblio,ultima);

//BUSQUEDA DEL FICHERO

fseek( fichero, (numbiblio-1)*longbiblio, SEEK_SET );

//LECTURA DEL FICHERO

fread( &biblio, longbiblio, 1, fichero);
for (i=1;i<=80;i++)cout<<":";
cout<<"\n Codigo: "<<biblio.clave;
cout<<"\n Nombre: \t"<<biblio.nbmbre;

Integrantes: Mora Ávila Rodolfo Abraham, Camacho Peralta Jairo Jacobo
Aparicio Aldana Daniel Antonio Página 3
cout<<"\n Artista: \t"<<biblio.artista;
cout<<"\n Albúm: \t"<<biblio.album;
cout<<"\n Genero: \t"<<biblio.genero;
cout<<endl;
pausa();
}

//UNA FUNCION UTIL PARA GUARDAR LSO DATOS CUANDO QUEREMOS MODIFICARLOS
//ESTA FUNCION LA OCUPAMOS EN LA FUNCION MODIFICAR

void GuardaCampo(char cBiblio[500])
{
strcpy(temporal,"\0");
gets(temporal);
if (strlen(temporal))
strcpy(cBiblio, temporal);
}

//LA FUNCION MODIFICAR
//MODIFICAR LOS DATOS ACTUALES DE UNA CANCION

void modifica()
{
clrscr();
printf("\n CORRECCION DE DATOS DE LA CANCION ");
printf("\r\n Clave de la cancion : %d",biblio.clave);
printf("\r\n Cancion: (%s)...",biblio.nombre);
GuardaCampo(biblio.nombre);
printf("\r\n Artista: (%s)...",biblio.artista);
GuardaCampo(biblio.artista);
printf("\r\n Albúm: (%s)...",biblio.album);
GuardaCampo(biblio.album);
printf("\r\n Genero: (%s)...",biblio.genero);
GuardaCampo(biblio.genero);
fseek( fichero, (numbiblio-1)*longbiblio, SEEK_END);
fwrite( &biblio, longbiblio, 1, fichero);
pausa();
}

//ESTA FUNCION PREPARA LA CREACION DEL FICHERO O LECTURA DEL MISMO
//SI NO EXISTE SE CREA Y SI EXISTE SE LEE

void prepara()
{
numbiblio = 1;
ultima = 0;
fichero = fopen (BIBLIOTECA, "r+b");

Integrantes: Mora Ávila Rodolfo Abraham, Camacho Peralta Jairo Jacobo
Aparicio Aldana Daniel Antonio Página 4
if (fichero ==NULL)
{
clrscr();
puts("Error: No se ha podido accesar al archivo biblioteca.dat");
pausa();
fichero = fopen (BIBLIOTECA, "wb");
nuevacancion();
}
else
{
fseek( fichero, 0, SEEK_OUT);
ultima = ftell( fichero ) / longbiblio;
}
}

//ESTA FUNCION NOS SIRVE PARA BUSCAR UNA CANCION EN LA BIBLIOTECA
//SOLO MUESTRA PERO NO MODIFICA LOS CAMPOS

void numerocancion()
{
int numero;
clrscr();
printf("BUSCAR EL ARCHIVO ARCHIVO DE UNA CANCION");
printf("\r\n ¿Cual es la clave de la cancion?: ");
scanf("%d", numero );
if (numero>0)
{
if (numero<=ultima)
{

numbiblio=numero;
}
else
{
numbiblio=ultima;
}
mostrar();
}
}

//NUESTRO MENU PRINCIPAL DEL PROGRAMA
//AQUI PODEMOS OBSERVAR QUE MANDAMOS A LLAMAR TODAS LAS FUNCIONES
//ANTERIORMENTE MENCIONADAS

int main()
{
numbiblio=0;

Integrantes: Mora Ávila Rodolfo Abraham, Camacho Peralta Jairo Jacobo
Aparicio Aldana Daniel Antonio Página 5
clrscr();
saludo();
prepara();
opcion=-1;
do
{
mostrar();
cout<<"MENU DE OPCIONES"<<endl;
cout<<"\n\n 1.- CANCION ANTERIOR"<<endl;
cout<<"\n\n 2.- CANCION SIGUIENTE"<<endl;
cout<<"\n\n 3.- AGREGAR CANCION"<<endl;
cout<<"\n\n 4.- BUSCAR CANCION"<<endl;
cout<<"\n\n 5.- MODIFICAR CANCION"<<endl;
cout<<"\n\n 6.- MOSTRAR CANCION"<<endl;
cout<<"\n\n 7.- SALIR"<<endl;
cout<<"\n\n\n ¿QUE ACCION DESEAS REALIZAR?......" ;
cin>>opcion;
switch(opcion)
{
case '1':
if(numbiblio>1) numbiblio--; fseek( fichero, (numbiblio-1)*longbiblio, SEEK_SET);
break;
case '2':
if(numbiblio<ultima) numbiblio++; fseek( fichero, (numbiblio-1)*longbiblio,
SEEK_END); break;
case '3':
nuevacancion(); break;
case '4':
numerocancion(); break;
case '5':
modifica();
case '6':
mostrar(); break;
case '7':
goto menu;
default:
cout<<"OPCION INCORRECTA...PORFAVOR ELIGE UNA OPCION DEL MENU";
}
menu:
clrscr();
}
while(opcion!=9);
fclose(fichero);
return 0;
}

//FIN DEL PROGRAMA

Integrantes: Mora Ávila Rodolfo Abraham, Camacho Peralta Jairo Jacobo
Aparicio Aldana Daniel Antonio Página 6
Integrantes: Mora Ávila Rodolfo Abraham, Camacho Peralta Jairo Jacobo
Aparicio Aldana Daniel Antonio Página 7