Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/11/2012, 11:54
sonrasiel
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 6 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. }