12
Biblio Database 2013 – Manuel del Desarrollador Desarrollado por: -Daniel Alejandro Pulgarin Cruz - 20131020091 -Nicolás Huertas Bejarano – 201310200 Universidad Distrital Francisco José de Caldas

Manuel tecnico

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Manuel tecnico

Biblio Database 2013 – Manuel del Desarrollador

Desarrollado por:

-Daniel Alejandro Pulgarin Cruz - 20131020091

-Nicolás Huertas Bejarano – 201310200

Universidad Distrital Francisco José de Caldas

Page 2: Manuel tecnico

Introducción

Biblio Database es un software libre que facilita la sistematización de registros en una biblioteca para mejorar su funcionamiento y brindar un mejor servicio a los usuarios de la misma.

Requerimientos del sistema:

Sistema operativo :Microprocesador recomendado :Memoria recomendada :Resolución gráfica :

Windows 95, 98, NT4, Me, 2000, XPPentium32 MBVGA o superior

Nota*: Si se desea trabajar con el archivo fuente se necesita un software que maneje aquel entorno, se recomienda usar DEV-C++ o CodeBlocks.

Funciones:

*Permitir el registro de libros nuevos, recibiendo como parámetros el nombre del libro, autor y año.

*Realizar la búsqueda de un libro específico, ya sea por su nombre, autor o año de publicación, el programa muestra si el libro existe o no.

*Mostrar cuántos libros en total posee la biblioteca, mostrando su información por nombre del título, nombre del autor y fecha de publicación.

Objetivos

*Facilitar y sintetizar la tarea de organizar los datos en un archivo donde se guardarán todos los datos registrados.

*Realizar operaciones de forma rápida y que estas se muestran en pantalla para todoslos usuarios.

*Mostrar todo lo aprendido en clase de programación como el manejo de condicionales, funciones recursivas, operaciones con datos, y demás.

Page 3: Manuel tecnico

Desarrollo del problema

Análisis del problema:

-Datos de Entrada:

Registrar libro: “1”

*Nombre del libro.

*Nombre del autor.

*Año de publicación.

Buscar libro: “2”

* ”n” o “N” para búsqueda por nombre del libro.

Tipo Char

* ”a” o “A” para búsqueda por autor del libro.

Tipo Char

* ”o” o “O” para búsqueda por año de publicación.

Tipo Entero

Mostar la información de todos los libros: “3”

Salir: “0”

-Procesos:

*Guardar los datos de entrada en un archivo.

Escribir o leer sobre el archivo.

*Por cada dato del libro (i++).

-Datos de Salida:

*Menú principal (Registrar libro, buscar libro, mostrar todos los registros guardados)

Registrar libro:

*”Ingrese el nombre del libro”:

*”Ingrese el nombre del autor”:

Page 4: Manuel tecnico

*”Ingrese el año de publicación”:

Buscar libro:

*”Búsqueda por [N]ombre, [Autor]o Añ[o]”

*Información del libro buscado.

Mostrar libros de la biblioteca:

*Mostrar los datos de todos los registros en orden de creación.

Salir:

*”Presione cualquier tecla para salir”

Page 5: Manuel tecnico

Diagrama DFD:

Page 6: Manuel tecnico
Page 7: Manuel tecnico

Código fuente:

#include <algorithm>#include <cctype>#include <cstdio>#include <cstdlib>#include <fstream>#include <iostream>#include <string>#include <vector>using namespace std;// Estructura del librostruct Libro{string Nombre; // Nombre del librostring Autor; // Autor del libroint Anio; // Año del libro (la variable dice anio para evitar problemas con el compilador)};// Listado de los libros, tipo Vectortypedef vector<Libro> LibroVector;// Leer y escribir el archivovoid leerArchivo();void escribirArchivo();// Mostrar el menúvoid menu();// Limpiar la pantallavoid limpiaPantalla();// Imprimir el listado completo de librosvoid imprimirLibros();// Imprimir un listado parcial de libros dado por el argumento 'lalista'void imprimirLibros(LibroVector lalista);// Agregar un librovoid registrarLibro();// Buscar libros según un criterio, devuelve los resultados de búsqueda para su manipulación o impresión.LibroVector buscarLibro();// Elimina un libro de la base principalvoid eliminarLibro(Libro libro);// Pasa una palabra a minúsculas, para realizar la búsquedastring minusculas(string str);// La base principal de librosLibroVector listadoLibros;// Mainint main(int argc, char *argv[]) {// Lee el archivoleerArchivo();// Flag de salida, si es 0, el programa se cierraint salida = 1;

Page 8: Manuel tecnico

// Si salida = 0, salir del programawhile(salida){// Limpia la pantallalimpiaPantalla();// Muestra el menúmenu();// Captura el flagcin >> salida;// Limpia la pantallalimpiaPantalla();// Determina la acción a seguirswitch(salida){case 1: // 1: Registrar un nuevo libroregistrarLibro();break;case 2: // 2: Buscar un(os) libros e imprimirlo(s)imprimirLibros(buscarLibro());break;case 3: // Imprime la lista completa de librosimprimirLibros();default: // Acción incorrecta, vuelve a empezar o salebreak;}// Al de una opción espera acción del usuariosystem("pause");// Limpia la pantallalimpiaPantalla();}return 0;}void menu(){// Aquí imprime el menúcout << "Sistema de biblioteca Biblio Database 2013" << endl << endl<< "1) Registrar libro" << endl<< "2) Buscar libro" << endl<< "3) Imprimir libreria" << endl<< "0) Salir" << endl << endl<< "Escriba la opcion: ";}void limpiaPantalla(){// Aquí limpia la pantalla (NO FUNCIONA EN SISTEMAS UNIX)system("cls");}void imprimirLibros(){//Imprime la lista de libros de la base principalimprimirLibros(listadoLibros);}void imprimirLibros(LibroVector lalista){cout << "Resultados:\n" << endl;// Para cada libro imprimefor(int i = 0; i < lalista.size(); i++){// El consecutivo

Page 9: Manuel tecnico

cout << "------------- LIBRO " << i + 1 << " -------------" << endl;// El nombre del librocout << "Nombre: " << lalista[i].Nombre << endl;// EL autor del librocout << "Autor: " << lalista[i].Autor << endl;// El año de publicacióncout << "Ano: " << lalista[i].Anio << endl << endl;}}void registrarLibro(){// Crea una variable de tipo libroLibro nuevoLibro;// Toma los datos (AUTOR; NOMBRE; AÑO)cout << "Escriba el nombre del autor: ";while (getline(cin, nuevoLibro.Autor)){if (nuevoLibro.Autor != ""){break;}}cout << "Escriba el nombre del libro: ";getline(cin, nuevoLibro.Nombre);cout << "Escriba el ano del libro: ";cin >> nuevoLibro.Anio;// Inserta el libro en la base de libroslistadoLibros.push_back(nuevoLibro);escribirArchivo();}LibroVector buscarLibro(){// Genera una lista para filtrarLibroVector resultados;// Caracter de filtro (A=Autor, N=Nombre, O=Año)char filtro;// La cadena a buscarstring busqueda;// Lee el caracter de filtrocout << "Desea buscar por [N]ombre, [A]utor, o An[o]?: ";cin >> filtro;// Lee el término de búsquedacout << "Por favor ingrese el termino a buscar: ";while (getline(cin, busqueda)){// Para que lea la línea completaif (busqueda != ""){break;}}// Genera una copia de la base de librosLibroVector lalista = listadoLibros;switch(filtro){// n/N: Busca por nombrecase 'N':case 'n':

Page 10: Manuel tecnico

default:for(int i = 0; i < lalista.size(); i++){if(minusculas(lalista[i].Nombre).find(minusculas(busqueda)) != string::npos){resultados.push_back(lalista[i]); // Si hay coincidencias con el nombre, agrega a la lista filtrada}}break;// Busca por autorcase 'A':case 'a':for(int i = 0; i < lalista.size(); i++){if(minusculas(lalista[i].Autor).find(minusculas(busqueda)) != string::npos){resultados.push_back(lalista[i]); // Si hay coincidencias con el autor, agrega a la lista filtrada}}// Busca por añocase 'O':case 'o':int value = atoi(busqueda.c_str()); // Convierte de cadena a númerofor(int i = 0; i < lalista.size(); i++){if(lalista[i].Anio == value){resultados.push_back(lalista[i]); // Si es el año indicado, agrega a la lista filtrada}}break;}// Retorna los resultadosreturn resultados;}void escribirArchivo(){// Abre el archivo "Biblioteca" para escrituraofstream archivo;archivo.open("Biblioteca");// Existe la cantidad de libros en el archivoarchivo << listadoLibros.size() << endl;// Escribe cada libro en el archivofor(int i = 0; i < listadoLibros.size(); i++){archivo << listadoLibros[i].Nombre << endl;archivo << listadoLibros[i].Autor << endl;archivo << listadoLibros[i].Anio << endl;}// Cierra el archivoarchivo.close();}void leerArchivo(){// Abre el archivo "Biblioteca" para lecturaifstream archivo("Biblioteca");// Si el archivo existeif(!archivo.fail()){

Page 11: Manuel tecnico

int size;// Lee la cantidad de libros existentesarchivo >> size;// Para cada libro en el archivo, lee la información y la guarda en la base principalfor(int i = 0; i < size; i++){Libro nuevoLibro;while(getline(archivo, nuevoLibro.Nombre)){if(nuevoLibro.Nombre != ""){break;}}while(getline(archivo, nuevoLibro.Autor)){if(nuevoLibro.Autor != ""){break;}}archivo >> nuevoLibro.Anio;listadoLibros.push_back(nuevoLibro);}}// Cierra el archivoarchivo.close();}string minusculas(string str){// Convierte toda la palabra a minúsculas. Usa la función transform sobre str.std::transform(str.begin(), str.end(), str.begin(), (int(*)(int))std::tolower);return str;}

Conclusiones

En síntesis podemos observar que este programa facilitara y agilizara los procesos de información no solo de esta aplicación sino que al ser de libre uso también puede ser usada para otros procesos, llevando a cabo el fin de la Informática que es como su nombre lo indica Información Automática.

Bibliografía

*Cómo programar en C++ - Harvey M. Deitel, Paul J. Deitel - 6ta Edición

*http://c.conclase.net/

*http://es.wikipedia.org/wiki/Inform%C3%A1tica

*http://c.conclase.net/ficheros/

Page 12: Manuel tecnico