[C con Clase] un acces en c++
wolf
wolverine_ch en hotmail.com
Lun Oct 25 05:45:27 CEST 2010
hola amigos gracias por sus respuestas, acabo de terminar el codigo pero hay muchos errores logicos la verdad yame hice bolas ojala tengan la paciencia de ejecutarlo y decirme en que puedo mejorarlo =/
lo hice en base a insercion dinamica de tablas y campos por medio de una funcion crece cuando yano haya espacio
*por ahora solo me interesa la parte de diseņo de las tablas y no el ingreso
de datos
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
class campo{
char* nombre3; //nombre del campo
int tipo;
char* nombretipo;
char* descripcion; //descripcion
public:
void leer3();
void presenta();
} ;
void campo::leer3(){
int op;
cout<<"\n Nombre del campo: ";
fflush(stdin);
gets(nombre3);
//aki ira el tipo de dato k contendra el atributo
cout<<"\n Tipo de dato: ";
cout<<"\n [1]Entero";
cout<<"\n [2]Decimal";
cout<<"\n [3]Fecha/hora";
cout<<"\n [4]cadena";
cout<<"\n Ingrese opcion: ";
cin>>op;
switch(op){
case 1: nombretipo="entero";
break;
case 2: nombretipo="decimal";
break;
case 3: nombretipo="fecha/hora";
break;
case 4: nombretipo="cadena";
break;
}
cout<<"\n Descripcion del campo: ";
fflush(stdin);
gets(descripcion);
}
void campo::presenta(){
cout<<nombre3;
cout<<" ";
cout<<nombretipo;
cout<<" ";
cout<<descripcion;
getch();
}
///////////////////////////////////////////////////////////////////////////////////////////
class tabla{
char nombre2[20]; /*nombre de la tabla*/
int n2;
int max2; //maximo de campos
campo* data2; //arreglo de campos
public:
tabla(){ //constructor
n2=max2=0;
data2=NULL;
}
void leernombre2();
void inserta2(campo);
void crece2();
void procesa2();
void visualiza2();
~tabla(){delete data2;}//destructor
};
//definiendo funciones
void tabla::leernombre2()
{
cout<<"\n\t TABLA: ";
cout<<"\n nombre: ";
fflush(stdin);
gets(nombre2);
}
void tabla::procesa2(){
campo C;
int op;
do{
clrscr();
cout<<"\t MENU :\n";
cout<<"[1] Agregar campo:\n";
cout<<"[2]Ver campos:\n";
cout<<"[3]Salir:\n";
cout<<" Ingrese opcion: ";
cin>>op;
switch(op){
case 1:
C.leer3();
inserta2(C);
break;
case 2: visualiza2();
break;
}//fin switch
}while(!(op==3));
}// fin procesa
void tabla::inserta2(campo c){
if(n2==max2)
crece2(); // es llamada cuando yano hay espacio
data2[n2]=c;
n2++;
}
void tabla::crece2(){
campo* temp2;
temp2= new campo [max2 + 5]; //se reserva 5 espacios mas al arreglo data2
for(int i=0; i<n2; i++) //aqui temp2 se llena hasta donde llegue el arreglo data2 kedando aun 5 espacios
temp2[i]=data2[i];
delete data2;
data2=temp2; // ahora data tiene 5 espacios mas para almacenar
max2+=5; // su max tbm debe ser aumentado en 5
}
void tabla:: visualiza2(){
if(n2 > 0){
cout<<"\nCampos: \n";
for(int i=0;i<n2;i++)
data2[i].presenta();
}else
cout<<"\nNO HAY CAMPOS";
}
///////////////////////////////////////////////////////////////////////////////////////////
class basedatos{
char nombre1[];
int max3; //Maximo de tablas
int n3;
tabla *data; //arreglo de tablas
public:
basedatos(); //constructor
void leernombre1();
void inserta(tabla);
void crece();
void procesa();
void visualiza3();
~basedatos(){delete data;}//destructor
};
//definiendo funciones
basedatos::basedatos(){ //CONSTRUCTOR
max3=n3=0;
data=NULL;
}
void basedatos::leernombre1()
{
cout<<"\n\t BASE DE DATOS: ";
cout<<"\n nombre: ";
fflush(stdin);
gets(nombre1);
}
void basedatos::procesa(){
tabla T;
int op;
do{
clrscr();
cout<<"\t MENU :\n";
cout<<"[1]Crear una tabla:\n";
cout<<"[2]Ver tablas:\n";
cout<<"[3]Salir:\n";
cout<<" Ingrese opcion: ";
cin>>op;
switch(op){
case 1:
T.leernombre2();
T.procesa2();
inserta(T);
break;
case 2: visualiza3();
break;
}//fin switch
}while(!(op==3));
}// fin procesa
void basedatos::inserta(tabla t){
if(n3==max3)
crece(); // es llamada cuando yano hay espacio
data[n3]=t;
n3++;
}
void basedatos::crece(){
tabla* temp;
temp= new tabla [max3 + 5]; //se reserva 5 espacios mas al arreglo data
for(int i=0; i<n3; i++) //aqui temp se llena hasta donde llegue el arreglo data kedando aun 5 espacios
temp[i]=data[i];
delete data;
data=temp; // ahora data tiene 5 espacios mas para almacenar
max3+=5; // su max tbm debe ser aumentado en 5
}
void basedatos:: visualiza3(){
if(n3 > 0){
for(int i=0;i<n3;i++){
cout<<"\n\t TABLA N§ " <<i+1;
data[i].visualiza2(); }
}else
cout<<"\nNO HAY TABLAS";
}
main(){
basedatos B;
clrscr();
B.leernombre1();
B.procesa();
getch();
return 0;
Más información sobre la lista de distribución Cconclase