| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
LeoSimanca
Registrado: 15 Abr 2011 Mensajes: 20
| Publicado: 23/05/2011 10:16 am | | | Título: Arreglos de estructuras |
| Hola muchachos!, el problema es el siguiente:
Como proyecto debo hacer un banco y hasta ahora estoy empezando. Pero como uds saben los bancos manejan bases de datos, en este caso la debo manejar con un arreglo de tipo estructura, pero no me funciona, llevo lo siguiente:
| Código: | #include <iostream>
using namespace std;
struct{ char nombre[30]; char apellido[30]; string direccion[30]; int telefono; int IDcliente; }regcliente;
int main() { regcliente totalclientes[10]; char op; int opcion=0; int Nclientes=0; cout<<"Que desea hacer? "<<endl; cout<<"1. Nuevo registro de cliente "; cin>>opcion; if(opcion==1) { system("CLS"); cout<<"Nombre: "; cin>>totalclientes[Nclientes].nombre; cout<<"Apellido: "; cin>>totalclientes[Nclientes].apellido; cout<<"Direccion: "; cin>>totalclientes[Nclientes].direccion; cout<<"Telefono: "; cin>>totalclientes[Nclientes].telefono; Nclientes++; opcion=0; cout<<"Desea agregar un nuevo registro? S/N"; cin>>op; if(op=='s' || op=='S')opcion==1; } system("PAUSE"); return 0; }
|
Es para agregas un cliente a la base de datos, lo estoy haciendo asi porque solo tengo 2 dias para hacerlos y creo que no es tiempo suficiente para aprender como manejar la base de datos desde un programa externo como Acces o SQL, sin embargo si cansideran que si es tiempo suficiente y tienen algun tutorial o me lo pueden explicar, de antemano muchisimas gracias por su ayuda![/code] |
| | Volver arriba | |  | LeoSimanca
Registrado: 15 Abr 2011 Mensajes: 20
| Publicado: 23/05/2011 10:19 am | | | Título: |
| Por cierto,
Sistema operativo: Windows 7 Compilador: Bloodshed Dev C++ |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7530 Ubicación: Mexico
| Publicado: 23/05/2011 11:28 am | | | Título: |
| El problema es que solo tienes dos dias, si fuera un poco mas te recomendaria que lo hicieras en Access, al menos en mis tiempos (hace mas de dies años) hacer una base de datos con el era facil y si se requeria mayor control su lenguaje era Visual Basic para Aplicaciones (VBA). Relativamente facil.
En cuanto al programa no entiendo cual es el "error". Tal vez no funcione ya que falta el bucle donde se repite el proceso (presentar el menu, elegir una opcion, etc.). Tambien combinas arrays de caracteres y cadenas (clase string) algo que deberias evitar. Y ya que es C++ puedes optar por un vector (clase con el mismo nombre) para almacenar los registros.
El programa con el bucle incluido y algunas correciones mas es:
| Código: | #include <iostream> using std::cin; using std::cout; using std::endl;
#include <string> using std::string;
struct Cliente { string nombre; string apellido; string direccion; int telefono; int IDcliente; };
const int max_num_clientes = 10; int main() { Cliente cliente[max_num_clientes]; int i = 0; string linea; int opcion; do { cout << "Menu de opciones:" << endl; cout << "1) Agregar cliente" << endl; cout << "2) Salir " << endl; cout << "Que desea hacer? "; cin >> opcion; getline(cin, linea); // Descartar resto de la linea switch (opcion){ case 1: // Agregar registro cout << "Nombre: "; getline(cin, cliente[i].nombre); cout << "Apellido: "; getline(cin, cliente[i].apellido); cout << "Direccion: "; getline(cin, cliente[i].direccion); cout << "Telefono: "; cin >> cliente[i].telefono; cout << "ID del cliente: "; cin >> cliente[i].IDcliente; getline(cin, linea); // Descartar resto de la linea ++i; // Actualizamos el numero de clientes break; case 2: // Salir, nada que hacer break; default: cout << "Opcion no valida!" << endl; break; } }while (opcion != 2); return 0; } |
En el caso ideal deberias crear funciones para cada operacion y colocar en la sentencia de seleccion "switch" solo llamadas a ellas.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
Ultima edición por rir3760 el 24/05/2011 4:43 am; editado 1 vez |
| | Volver arriba | |  | | LeoSimanca
Registrado: 15 Abr 2011 Mensajes: 20
| Publicado: 23/05/2011 7:16 pm | | | Título: |
| gracias rir3760
Pero tu version no me guarda los strings, sin embargo ya resolvi mi problema jeje era algo muy tonto, en mi codigo original tenia;
| Código: | struct {
char nombre[30]; char apellido[30]; string direccion[30]; int telefono; int IDcliente; }regclientes; |
Luego cmabie los char por strings y les quite la definicion de arreglos y aun no funcionaba, luego simplemente cambie el lugar del nombre de la estructura y funciono...jejeje quedo asi:
| Código: | struct regclientes{
string nombre; string apellido; string direccion; int telefono; int IDcliente }; |
Y ya sirvio....sin embargo tengo otro problema,
Como hago para que me cuente los espacios como caracteres?
porque por ejemplo cuando digito mi nombre, digito por ejemplo "Alberto Andres" y solo me guarda lo que esta antes del espacio y se salta el apellido! |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7530 Ubicación: Mexico
| Publicado: 24/05/2011 4:41 am | | | Título: |
| | LeoSimanca escribió: | gracias rir3760
Pero tu version no me guarda los strings |
Mea culpa. Abuse (solo un poco) del "Copy & Paste", ya esta corregido en el programa.
Para leer una linea de texto completa descartando el avance de linea utilizas la funcion getline.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |