Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Como almacenar datos en c++

Estas en el tema de Como almacenar datos en c++ en el foro de C/C++ en Foros del Web. hola tengo un código para crear un conjunto de libros pero quiero que estos se guarden en una base de datos de tal forma que ...
  #1 (permalink)  
Antiguo 26/11/2012, 11:54
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Como almacenar datos en c++

hola tengo un código para crear un conjunto de libros pero quiero que estos se guarden en una base de datos de tal forma que si creo una función buscar_libro me lo encuentre y me diga el autor el titulo la editorial y el precio, y no que se pierdan al cerrar el ejecutable pero no se como. aquí esta el código.


Código C++:
Ver original
  1. #include<iostream>
  2. #include <string.h>
  3. #include <cstdlib>
  4. using namespace std;
  5. int strcmp(const char[], const char[]);
  6.  
  7. struct E_Libro{
  8.        char* titulo;
  9.        char* autor;
  10.        char* editorial;      
  11.        int precio;
  12. };
  13.  
  14. typedef E_Libro* libro;
  15.  
  16. libro crear_libro(){
  17.       libro x=new E_Libro;
  18.       x->titulo=new char[50];
  19.       x->autor=new char[50];
  20.       x->editorial=new char[30];
  21.       return x;
  22. }
  23. void liberar_libro(libro x){
  24.       delete[] x->titulo;
  25.       delete[] x->autor;
  26.       delete[] x->editorial;
  27.       delete[] x;
  28. }
  29.  
  30. libro leer_libro(libro x){
  31.       cout<<"Digite el titulo del libro: ";
  32.       cin.getline(x->titulo,50);
  33.           while(strlen(x->titulo)==0){
  34.                cin.getline(x->titulo,50);
  35.           }
  36.       cout<<"Digite el autor del libro: ";
  37.       cin.getline(x->autor,50);
  38.           while(strlen(x->autor)==0){
  39.                cin.getline(x->autor,50);
  40.           }
  41.       cout<<"Digite la editorial del libro: ";
  42.       cin.getline(x->editorial,30);
  43.           while(strlen(x->editorial)==0){
  44.                cin.getline(x->editorial,50);
  45.           }
  46.       cout<<"Digite el precio del libro: ";
  47.       cin>>x->precio;
  48.           while(x->precio<0){
  49.                cout<<"No valido, digite el precio del libro";
  50.                cin>>x->precio;
  51.           }
  52.       return x;
  53. }
  54.  
  55. void imprimir_libro(libro x){
  56.      cout<<"\nInformacion del libro\n";
  57.      cout<<"-------------------------\n";
  58.      cout<<"Titulo: \t"<<x->titulo;
  59.      cout<<"\nAutor: \t\t"<<x->autor;
  60.      cout<<"\nEditorial: \t"<<x->editorial;
  61.      cout<<"\nPrecio: \t"<<x->precio<<"\n\n";
  62. }
  63.  
  64. libro* leer_conjunto_libros(libro* c, int n){
  65.      for(int i=0;i<n;i++){
  66.              cout<<"\n\nLibro "<<i+1<<":\n\n";
  67.              libro a=crear_libro();
  68.              a=leer_libro(a);
  69.              c[i]=a;
  70.     }  
  71.     return c;
  72. }
  73.  
  74. void imprimir_conjunto_libros(libro* c, int n){
  75.      cout<<"TITULO \t\tAUTOR \t\tEDITORIAL \t\tPRECIO \n";
  76.      for(int i=0;i<n;i++){
  77.              cout<<c[i]->titulo<<"\t\t"<<c[i]->autor<<"\t\t";
  78.              cout<<c[i]->editorial<<"\t\t\t"<<c[i]->precio<<"\n";
  79.      }
  80. }
  81.  
  82. libro* ordenar_por_precio(libro* c, int n){
  83.        libro aux;
  84.        for(int i=0;i<n;i++){
  85.                for(int j=i+1;j<n;j++){
  86.                        if(c[j]->precio<c[i]->precio){
  87.                                 aux=c[i];
  88.                                 c[i]=c[j];
  89.                                 c[j]=aux;
  90.                        }
  91.                }
  92.        }
  93.        return c;
  94. }
  95.  
  96. libro* ordenar_por_autor(libro* c, int n){
  97.        libro aux;
  98. //       int m=0;
  99. //       for(int k=0;k<n;i++){
  100. //               if(c[]->autor=)
  101. //               }
  102.        
  103.        for(int i=0;i<n;i++){
  104.                for(int j=i+1;j<n;j++){
  105.                        if((c[j]->autor)[0]<(c[i]->autor)[0]){
  106.                                 aux=c[i];
  107.                                 c[i]=c[j];
  108.                                 c[j]=aux;
  109.                        }
  110. //                       if(c[j]->autor==c[i]->autor){
  111. //                                                   libro* x=new libro[2];
  112. //                                                   x[0]=c[j];
  113. //                                                   x[1]=c[i];
  114. //                                                   ordenar_por_precio(x,2);
  115. //                                                   }
  116.                }
  117.        }
  118.        return c;
  119. }
  120.  
  121. libro* ordenar_por_titulo(libro* c, int n){
  122.         libro aux;
  123.        for(int i=0;i<n;i++){
  124.                for(int j=i+1;j<n;j++){
  125.                        if((c[j]->titulo)[0]<(c[i]->titulo)[0]){
  126.                                 aux=c[i];
  127.                                 c[i]=c[j];
  128.                                 c[j]=aux;
  129.                        }
  130.                }
  131.        }
  132.        return c;
  133. }
  134.  
  135. libro* ordenar_por_editorial(libro* c, int n){
  136.         libro aux;
  137.        for(int i=0;i<n;i++){
  138.                for(int j=i+1;j<n;j++){
  139.                        if((c[j]->editorial)[0]<(c[i]->editorial)[0]){
  140.                                 aux=c[i];
  141.                                 c[i]=c[j];
  142.                                 c[j]=aux;
  143.                        }
  144.                }
  145.        }
  146.        return c;
  147. }
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154. void ordenar(libro* c,int n,int x){
  155.      switch(x){
  156.                case 1:
  157.                     cout<<"\n___________________________________\n";    
  158.                     cout<<"\nLIBROS ORDENADOS POR TITULO\n";
  159.                     cout<<"___________________________________\n\n";
  160.                     c=ordenar_por_titulo(c,n);
  161.                     imprimir_conjunto_libros(c,n);
  162.                break;
  163.                case 2:
  164.                     cout<<"\n___________________________________\n";    
  165.                     cout<<"\nLIBROS ORDENADOS POR AUTOR\n";
  166.                     cout<<"___________________________________\n\n";
  167.                     c=ordenar_por_autor(c,n);
  168.                     imprimir_conjunto_libros(c,n);
  169.                break;
  170.                case 3:
  171.                     cout<<"\n___________________________________\n";    
  172.                     cout<<"\nLIBROS ORDENADOS POR EDITORIAL\n";
  173.                     cout<<"___________________________________\n\n";
  174.                     c=ordenar_por_editorial(c,n);
  175.                     imprimir_conjunto_libros(c,n);
  176.                                    
  177.                break;
  178.                                
  179.                default:
  180.                cout<<"el numero tiene que ser 1, 2 o 3"<<endl;
  181.                    
  182.                }
  183.                  
  184.      
  185.      
  186. }
  187.  
  188. //void comparar_cadenas()
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198. int main(){
  199.     int n=0;
  200.     cout<<"Cuantos libros desea ingresar? \n";
  201.     cin>>n;
  202.     libro* conjunto=new libro[n];
  203.  
  204.     conjunto=leer_conjunto_libros(conjunto,n);
  205.     cout<<"\n___________________________________\n";
  206.     cout<<"\nLIBROS INGRESADOS POR EL USUARIO\n";
  207.     cout<<"___________________________________\n\n";
  208.     imprimir_conjunto_libros(conjunto,n);
  209.     conjunto=ordenar_por_precio(conjunto,n);
  210.    
  211.     cout<<"\n___________________________________\n";    
  212.     cout<<"\nLIBROS ORDENADOS POR PRECIO\n";
  213.     cout<<"___________________________________\n\n";
  214.     imprimir_conjunto_libros(conjunto,n);
  215.     cout<<"\n";
  216.     cout<<"\n";
  217.     cout<<"\n";
  218.     cout<<"presione 1, 2 o 3 si quiere el ordenamiento por titulo,"<<endl<<" autor o editorial respectivamente"<<endl;
  219.     int o;
  220.     cin>>o;
  221. while(0<=o<4){
  222.     ordenar(conjunto,n,o);
  223.     cout<<"\n";
  224.     cout<<"presione 1, 2 o 3 si quiere el ordenamiento por titulo,"<<endl<<" autor o editorial respectivamente"<<endl;
  225.     cin>>o;
  226. }
  227.     system("pause");
  228. }
  #2 (permalink)  
Antiguo 26/11/2012, 12:03
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Como almacenar datos en c++

Conectar una base de datos es algo trabajoso y no te va a merecer la pena si lo que estás haciendo es una aplicación para algún ejercicio de clase.
  #3 (permalink)  
Antiguo 26/11/2012, 12:12
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como almacenar datos en c++

Bueno es proyecto final, dudo que mi profesor me ponga buena nota por decirle que es algo trabajoso ya que yo le pregunte y me dijo que era facilísimo, aunque no me dijo como "ojala se le queme la casa" si alguno conociera alguna referencia que me sirviera de ejemplo para hacerlo le agradecería he estado googleando pero no encuentro nada que me ayude.

Última edición por sonrasiel; 26/11/2012 a las 12:18
  #4 (permalink)  
Antiguo 26/11/2012, 12:18
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Como almacenar datos en c++

Para SQLite: http://c.conclase.net/sqlite/index.php
Para MySQL: http://c.conclase.net/mysql/index.php

PD: Sólo tienes que googlear un poco...
  #5 (permalink)  
Antiguo 26/11/2012, 12:26
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Como almacenar datos en c++

Cita:
y no que se pierdan al cerrar el ejecutable
y si lo guardas en un archivo, simulando una base de datos???


Saludos
  #6 (permalink)  
Antiguo 26/11/2012, 12:53
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como almacenar datos en c++

hola cesar tienes algún ejemplo que explique como hacer eso? leí lo de MySQL pero que bárbaro es como aprender una segunda programación, yo recién llevo 1 semestre de programación a duras penas entiendo TDA.
  #7 (permalink)  
Antiguo 26/11/2012, 14:30
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Como almacenar datos en c++

Para hacer lo que digo tenes que buscar manejo de archivos en C++, ahi vas a encontrar como abrir, cerrar, etc. un archivo. Sabiendo eso vas a poder guardar registros de datos y de esta manera vas a poder crear una base de datos y manipular el archivo como vos quieras

Te dejo este link de archivos: http://c.conclase.net/ficheros/index.php


Saludos
  #8 (permalink)  
Antiguo 26/11/2012, 15:25
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Como almacenar datos en c++

Cita:
Iniciado por sonrasiel Ver Mensaje
hola cesar tienes algún ejemplo que explique como hacer eso? leí lo de MySQL pero que bárbaro es como aprender una segunda programación, yo recién llevo 1 semestre de programación a duras penas entiendo TDA.
Entonces lo que te piden no es una base de datos, sino, como ya te han comentado, que guardes los datos en ficheros. Aquí te dejo un tutorial: http://c.conclase.net/ficheros/index.php?cap=001#inicio

PD: Vale, es la misma web que ha dejado cesar_casla xD
  #9 (permalink)  
Antiguo 26/11/2012, 16:19
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como almacenar datos en c++

gracias aunque me pusieron aprender código de lenguaje C, hay cosas que no entendia .

una pregunta no veo la diferencia entre estas dos funciones parece obvia al principio pero cuando las ejecutas parecen hacer exactamente los mismo. Ambas me guardan un txt con el nombre y imprimen lo que esta en el fputs. y sobre el modo de el segundo codigo la opcion wt no la entiendo muy bien hay una w y una t pero no una wt.

Bueno como yo lo veo seria lectura y escritura tipo texto. Ahora, ¿puedo combinar varios tipos de letras algo asi como "at" o "a+t"?
Código C++:
Ver original
  1. #include <stdio.h>
  2. int main ()
  3. {
  4.   FILE * pFile;
  5.   pFile = fopen ("yourfile.txt","w");
  6.   if (pFile!=NULL)
  7.   {
  8.     fputs ("fopen example",pFile);
  9.     fclose (pFile);
  10.   }
  11.   return 0;
  12. }

Código C++:
Ver original
  1. /* fclose example */
  2. #include <stdio.h>
  3. int main ()
  4. {
  5.   FILE * pFile;
  6.   pFile = fopen ("myfile.txt","wt");
  7.   fprintf (pFile, "fclose example");
  8.   fclose (pFile);
  9.   return 0;
  10. }

Edito: respecto a lo del modo ya vi que si se puede, gracias.

Última edición por sonrasiel; 26/11/2012 a las 17:11
  #10 (permalink)  
Antiguo 26/11/2012, 18:16
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Como almacenar datos en c++

La diferencia es que el primer código es más robusto que el segundo. En el primero no escribes nada en el fichero si éste no se ha abierto, y en el segundo escribes sí o sí, por lo que en el momento en el que no se abra por cualquier motivo, el programa va a petar.

PD: wt indica que se creará el fichero para escritura en modo texto.

Etiquetas: almacenar, int, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:22.