• Miércoles 18 de Diciembre de 2024, 10:49

Autor Tema:  Re: Ayuda Por Favor.  (Leído 885 veces)

Riskbreaker

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Ayuda Por Favor.
« en: Miércoles 25 de Mayo de 2005, 04:49 »
0
Hola espero que alguien me pueda ayudar por favor con este programa
tengo que hacer una "base de datos" a base de clases
una clase llamada LIBRO donde tiene arreglos nombre, autor, editorial, edicion
otra clase llamada BIBLIOTECA que me pregunta si quiero ver los libros o quiero meter datos de libros.
otra clase llamada ESCUELAS esta es 3 objetos (3 escuelas) para tener 3 lugares donde meter y desplegar datos.
Lo logre hacer con struct pero me lo piden con clases
espero me puedan ayudar
aqui esta mi programa en struct para q se puedan dar una idea.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

pitukilloloco

  • Miembro MUY activo
  • ***
  • Mensajes: 104
    • Ver Perfil
Re: Ayuda Por Favor.
« Respuesta #1 en: Miércoles 25 de Mayo de 2005, 08:21 »
0
Te paso una versión en clases de tu programa, es sólo un borrador que puedes pulirlo más. Espero que te pueda ayudar para que te des una idea del cambio que sufre un programa orientado a procedimientos como es tu programa en lenguaje C a un programa orientado a objetos en C++. Definí una clase Libro idéntica a la que tu definiste como la estructura libro, sólo le añadí dos funciones miembro: una para obtener los datos del objeto Libro y otro para imprimirlos. Definí la clase Biblioteca conteniendo N objetos de la clase Libro (bueno en realidad cambié la constante N que habias definido por el nombre NLIBROS) y un entero nLibros que contiene el número de libros que tiene la clase Biblioteca. Esta es la definición más lógica, ya que una biblioteca en el mundo real se compone de varios libros. Ademas definí un constructor que inicializa nLibros a 0 y dos funciones miembro: una que lee los libros que va a tener la biblioteca y otra que los imprime. Por último defini la clase Escuela conteniendo una biblioteca (pero en realidad puede tener más de una, definiendo la constante NBIBLIOS mayor que 1) y una variable nombre que va a contener el nombre de la escuela. Esta clase de escuela tiene 3 funciones miembro: Una función para darle el nombre de la escuela, otra para regresar el nombre que tiene la escuela y una última que da de alta los libros de las bibliotecas. Otra vez, esto es lo más lógico, ya que una escuela puede tener más de una biblioteca, aunque por norma general sólo cuenta con una. Aquí te paso el código. Espero no te sea muy difícil entenderlo y por los errores que tenga, pues perdóname, ya que lo hice a la carrera sin meditar mucho. Hasta luego y suerte
Código: Text
  1.  
  2. #include<iostream.h>
  3. #include<conio.h>
  4. #include<stdio.h>
  5. #include<string.h>
  6.  
  7. const int NLIBROS = 100;
  8. const int NBIBLIOS = 1;
  9.  
  10. char *namescuels[] = {
  11.  "ESIME",
  12.  "ESIT",
  13.  "ESIQIE"
  14. };
  15.  
  16. // ************** Clase Libro **********************
  17. class Libro
  18.  {
  19.   char nombre[20];
  20.   char autor[20];
  21.   char editorial[20];
  22.   int edicion;
  23. public:
  24.   void ObtenerDatos ();
  25.   void ImprimeLibro();
  26.  };
  27.  
  28. void Libro::ObtenerDatos ()
  29. {
  30.  cout<<"Dame el nombre del libro \n";
  31.  gets(nombre);
  32.  cout<<"Dame el autor \n";
  33.  gets(autor);
  34.  cout<<"Dame la editorial \n";
  35.  gets(editorial);
  36.  cout<<"Dame el numero de edicion \n";
  37.  cin>>edicion;
  38. }
  39.  
  40. void Libro::ImprimeLibro()
  41. {
  42.    cout<<"NOMBRE: "<<nombre<<"\n";
  43.    cout<<"AUTOR: "<<autor<<"\n";
  44.    cout<<"EDITORIAL: "<<editorial<<"\n";
  45.    cout<<"EDICION: "<<edicion<<"\n";
  46. }
  47.  
  48. // ************** Clase Biblioteca *****************
  49. class Biblioteca
  50. {
  51.   Libro libros[NLIBROS];
  52.   int nLibros;
  53. public:
  54.    Biblioteca () { nLibros = 0; }
  55.    void ObtenerLibros (int nlibros);
  56.    void ImprimeLibros();
  57. };
  58.  
  59. void Biblioteca::ObtenerLibros (int nlibros)
  60. {
  61.    clrscr();
  62.    for(int i=0;i<nlibros;i++)
  63.       libros[i].ObtenerDatos ();
  64. }
  65.  
  66. void Biblioteca::ImprimeLibros()
  67. {
  68.    for(int i=0;i<nLibros;i++)
  69.    {
  70.       libros[i].ImprimeLibro ();
  71.       getch();
  72.    }
  73. }
  74.  
  75. // ************** Clase Escuela ****************
  76. class Escuela
  77. {
  78.   Biblioteca bibliotecas[NBIBLIOS];
  79.   char nombre[10];
  80. public:
  81.    void PonNombre (char *name) { strcpy (nombre, name); }
  82.    char *DameNombre () { return nombre; }
  83.    void ObtenerBiblios ();
  84. };
  85.  
  86. void Escuela::ObtenerBiblios ()
  87. {
  88.    for (int i = 0; i < NBIBLIOS; i++) {
  89.        cout << nombre << ": Datos de la bilioteca #" << i + 1 << "\n";
  90.     do
  91.     {
  92.            int opc2, contact;
  93.            clrscr();
  94.            cout<<"1. Introducir Datos\n\n";
  95.            cout<<"2. Imprimir Datos\n\n";
  96.            cout<<"3. Salir\n\n";
  97.            cout<<"Escoge:  ";
  98.            cin>>opc2;
  99.            
  100.        switch(opc2)
  101.        {
  102.            case 1:
  103.             cout<<"Cuantos contactos vas a introducir? ";
  104.             cin>>contact;
  105.             bibliotecas[i].ObtenerLibros (contact);
  106.             break;
  107.                case 2:
  108.             bibliotecas[i].ImprimeLibros();
  109.             break;
  110.            case 3:
  111.             char opc3;
  112.             cout<<"Quieres regresar al menu principal?\n";
  113.             cin>>opc3;
  114.             if(opc3=='s')
  115.             return;
  116.             break;
  117.            default:
  118.             cout<<"Vuelve a intentarlo";
  119.             getch();
  120.             break;
  121.        }
  122.     }
  123.       while(1);
  124.    }
  125. }
  126.  
  127. // *************************************************
  128. const int nescuelas = sizeof (namescuels) / sizeof (char **);
  129. Escuela escuelas[nescuelas];
  130.  
  131.  
  132. int menu(void)
  133. {
  134.  int opc;
  135.  clrscr();
  136.  for (int i = 0; i < nescuelas; i++)
  137.     cout<< i + 1 << ". " << escuelas[i].DameNombre () << "\n\n";
  138.  cout<< i + 1 << ". Salir\n\n";
  139.  cout<<"Escoge:  ";
  140.  cin>>opc;
  141.  return(opc);
  142. }
  143.  
  144. void main(void)
  145. {
  146.   for (int i = 0; i < nescuelas; i++)
  147.     escuelas[i].PonNombre (namescuels[i]);
  148.     int opc;
  149.   do
  150.   {
  151.     opc=menu();  
  152.     if (opc > nescuelas) {
  153.       cout<<"Vuelve a intentarlo";
  154.       getch();
  155.     } else if (opc == nescuelas) {
  156.       cout<<"Adios";
  157.       getch();
  158.     } else
  159.       escuelas[i].ObtenerBiblios ();
  160.   } while(opc!=nescuelas);
  161. }
  162.  
  163.