Ayuda con codigo de banco

Iniciado por MrAxelLag, 9 Mayo 2018, 02:10 AM

0 Miembros y 1 Visitante están viendo este tema.

MrAxelLag

Hola, tengo este codigo el cual solicita cuentas de banco con numero de usuario, nombre, fecha y saldo y debe ingresar datos, poder buscarlos, verlos, modificarlos y ordenarlos, llevo hasta ingresar y ver, me podrian a yudar con la busqueda y la modificacion. Este es el codigo:

#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#define p printf

void mostrar(void);


int main(void)
{
    int op,opc=0;
    char nom[20],fecha[20],num[20],nom2[20],fecha2[20],num2[20],nom3[20],fecha3[20],num3[20],nom4[20],fecha4[20],num4[20],nom5[20],fecha5[20],num5[20],nom6[20],fecha6[20],num6[20],nom7[20],fecha7[20],num7[20],nom8[20],fecha8[20],num8[20],nom9[20],fecha9[20],num9[20],nom10[20],fecha10[20],num10[20];
    float s1, s2, s3,s4, s5, s6, s7, s8, s9, s10;
    do
    {
    p("1.Agregar saldos\n");
    p("2.-Ver saldos\n");
    p("3.-Buscar Saldos\n");
    p("4.-Modificar saldos\n");
    p("5.-Salir\n");
    p("Que opcion desea ejecutar?\n ");
    scanf("%d",&op);

    switch(op)

    {
    case 1:
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha);
        p("Digite el primer saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s1);
        p("Su primer saldo es de: %c%.2f\n",36,s1);
        fflush(stdin);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom2);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num2);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha2);
        fflush(stdin);
        p("Digite el segundo saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s2);
        fflush(stdin);
        p("Su segundo saldo es de: %c%.2f\n",36,s2);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom3);
        fflush(stdin);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num3);
        fflush(stdin);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha3);
        fflush(stdin);
        p("Digite el tercer saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s3);
        fflush(stdin);
        p("Su tercer saldo es de: %c%.2f\n",36,s3);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom4);
        fflush(stdin);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num4);
        fflush(stdin);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha4);
        fflush(stdin);
        p("Digite el cuarto saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s4);
        fflush(stdin);
        p("Su cuarto saldo es de: %c%.2f\n",36,s4);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom5);
        fflush(stdin);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num5);
        fflush(stdin);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha5);
        fflush(stdin);
        p("Digite el quinto saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s5);
        fflush(stdin);
        p("su quinto saldo es de: %c%.2f\n",36,s5);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom6);
        fflush(stdin);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num6);
        fflush(stdin);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha6);
        fflush(stdin);
        p("Digite el sexto saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s6);
        fflush(stdin);
        p("Su sexto saldo es de: %c%.2f\n",36,s6);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom7);
        fflush(stdin);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num7);
        fflush(stdin);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha7);
        fflush(stdin);
        p("Digite el septimo saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s7);
        fflush(stdin);
        p("Su septimo saldo es de: %c%.2f\n",36,s7);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom8);
        fflush(stdin);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num8);
        fflush(stdin);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha8);
        fflush(stdin);
        p("Digite el octavo saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s8);
        fflush(stdin);
        p("Su octavo saldo es de: %c%.2f\n",36,s8);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom9);
        fflush(stdin);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num9);
        fflush(stdin);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha9);
        fflush(stdin);
        p("Digite el noveno saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s9);
        fflush(stdin);
        p("Su noveno saldo es de: %c%.2f\n",36,s9);
        p("Digite su nombre: ");
        fflush(stdin);
        scanf("%s",&nom10);
        fflush(stdin);
        p("Digite su num. de cuenta: ");
        fflush(stdin);
        scanf("%s",&num10);
        fflush(stdin);
        p("Digite la fecha(dd-mm-aaaa)");
        fflush(stdin);
        scanf("%s",&fecha10);
        fflush(stdin);
        p("Digite el decimo saldo:%c",36);
        fflush(stdin);
        scanf("%f",&s10);
        fflush(stdin);
        p("Su decimo saldo es de: %c%.2f\n",36,s10);
        system("cls");
        p("Presione 1 para avanzar");
        scanf("%d",&opc);
    case 2:
        p("Ha elegido ver los saldos...\n");
        p("Nombre: %s \n",nom);
        p("Numero de cuenta %s \n:",num);
        p("Su saldo es de: %c%.2f\n",36,s1);
        p("Nombre: %s \n",nom2);
        p("Numero de cuenta %s \n:",num2);
        p("Su saldo es de: %c%.2f\n",36,s2);
        p("Nombre: %s \n",nom3);
        p("Numero de cuenta %s \n:",num3);
        p("Su saldo es de: %c%.2f\n",36,s3);
        p("Nombre: %s \n",nom4);
        p("Numero de cuenta %s \n:",num4);
        p("Su saldo es de: %c%.2f\n",36,s4);
        p("Nombre: %s \n",nom5);
        p("Numero de cuenta %s \n:",num5);
        p("Su saldo es de: %c%.2f\n",36,s5);
        p("Nombre: %s \n",nom6);
        p("Numero de cuenta %s \n:",num6);
        p("Su saldo es de: %c%.2f\n",36,s6);
        p("Nombre: %s \n",nom7);
        p("Numero de cuenta %s \n:",num7);
        p("Su saldo es de: %c%.2f\n",36,s7);
        p("Nombre: %s \n",nom8);
        p("Numero de cuenta %s \n:",num8);
        p("Su saldo es de: %c%.2f\n",36,s8);
        p("Nombre: %s \n",nom9);
        p("Numero de cuenta %s \n:",num9);
        p("Su saldo es de: %c%.2f\n",36,s9);
        p("Nombre: %s \n",nom10);
        p("Numero de cuenta %s \n:",num10);
        p("Su saldo es de: %c%.2f\n",36,s10);
        p("Presiona 1 para continuar...\n");
        scanf("%d",&opc);
    case 3:
        p("Ha elegido Modificar saldos...\n");
        p("Digite el numero de cuenta sobre el cual desea modificar los datos")
        }
    }
while(opc==1);
}


MOD: El codigo debe ir entre etiquetas GeSHi. No duplicar posts.

Kenji-chan

primero tenemos que arreglar el código trata de explicarme que es lo que intentas hacer con lo que ya tienes echo

MrAxelLag

Bien, Abre un menu con las Opciones de
1.- Ingresar datos
2.- Ver datos
3.- Modificar Datos
4.- Buscar datos
5.- Ordenar datos

El ingreso de datos ya esta listo, y para verlos tambien pero cuando termino de ingresar los datos me abre la opcion de verlos automaticamente sin abrir el menú

Kenji-chan

en cada caso te falto poner al final los break,
el caso es que hay que mejorar el código ya que de la forma en que esta implementado es fácil equivocarse

MrAxelLag

Si, estoy modificandolo, he avanzado esto, como ves el codigo?

#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#define p printf

void mostrar(void);


int main(void)
{
    int op,opc;
    char nom[20],des[20],fecha[20],num[20],nom2[20],fecha2[20],num2[20],nom3[20],fecha3[20],num3[20],nom4[20],fecha4[20],num4[20],nom5[20],fecha5[20],num5[20],nom6[20],fecha6[20],num6[20],nom7[20],fecha7[20],num7[20],nom8[20],fecha8[20],num8[20],nom9[20],fecha9[20],num9[20],nom10[20],fecha10[20],num10[20];
    float s1, s2, s3,s4, s5, s6, s7, s8, s9, s10;
    do
    {
    system("cls");
    p("1.Agregar saldos\n");
    p("2.-Ver saldos\n");
    p("3.-Buscar Saldos\n");
    p("4.-Modificar saldos\n");
    p("5.-Salir\n");
    p("Que opcion desea ejecutar?\n ");
    scanf("%d",&op);

    switch(op)

    {
        case 1:
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha);
            p("Digite el primer saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s1);
            p("Su primer saldo es de: %c%.2f\n",36,s1);
            fflush(stdin);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom2);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num2);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha2);
            fflush(stdin);
            p("Digite el segundo saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s2);
            fflush(stdin);
            p("Su segundo saldo es de: %c%.2f\n",36,s2);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom3);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num3);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha3);
            fflush(stdin);
            p("Digite el tercer saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s3);
            fflush(stdin);
            p("Su tercer saldo es de: %c%.2f\n",36,s3);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom4);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num4);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha4);
            fflush(stdin);
            p("Digite el cuarto saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s4);
            fflush(stdin);
            p("Su cuarto saldo es de: %c%.2f\n",36,s4);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom5);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num5);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha5);
            fflush(stdin);
            p("Digite el quinto saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s5);
            fflush(stdin);
            p("su quinto saldo es de: %c%.2f\n",36,s5);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom6);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num6);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha6);
            fflush(stdin);
            p("Digite el sexto saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s6);
            fflush(stdin);
            p("Su sexto saldo es de: %c%.2f\n",36,s6);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom7);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num7);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha7);
            fflush(stdin);
            p("Digite el septimo saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s7);
            fflush(stdin);
            p("Su septimo saldo es de: %c%.2f\n",36,s7);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom8);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num8);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha8);
            fflush(stdin);
            p("Digite el octavo saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s8);
            fflush(stdin);
            p("Su octavo saldo es de: %c%.2f\n",36,s8);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom9);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num9);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha9);
            fflush(stdin);
            p("Digite el noveno saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s9);
            fflush(stdin);
            p("Su noveno saldo es de: %c%.2f\n",36,s9);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom10);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num10);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha10);
            fflush(stdin);
            p("Digite el decimo saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s10);
            fflush(stdin);
            p("Su decimo saldo es de: %c%.2f\n",36,s10);
            break;
        case 2:
            p("Ha elegido ver los saldos...\n");
            p("Nombre: %s \n",nom);
            p("Numero de cuenta:%s\n",num);
            p("La fecha es: %s\n",fecha);
            p("Su saldo es de: %c%.2f\n",36,s1);
            p("Nombre: %s \n",nom2);
            p("Numero de cuenta:%s\n",num2);
            p("La fecha es:%s\n",fecha2);
            p("Su saldo es de: %c%.2f\n",36,s2);
            p("Nombre: %s \n",nom3);
            p("Numero de cuenta:%s\n",num3);
            p("La fecha es:%s\n",fecha3);
            p("Su saldo es de: %c%.2f\n",36,s3);
            p("Nombre: %s \n",nom4);
            p("Numero de cuenta:%s\n",num4);
            p("La fecha es:%s\n",fecha4);
            p("Su saldo es de: %c%.2f\n",36,s4);
            p("Nombre: %s \n",nom5);
            p("Numero de cuenta: %s\n",num5);
            p("La fecha es:%s\n",fecha5);
            p("Su saldo es de: %c%.2f\n",36,s5);
            p("Nombre: %s \n",nom6);
            p("Numero de cuenta:%s\n",num6);
            p("Su saldo es de: %c%.2f\n",36,s6);
            p("La fecha es:%s\n",fecha6);
            p("Nombre: %s \n",nom7);
            p("Numero de cuenta:%s\n",num7);
            p("La fecha es:%s\n",fecha7);
            p("Su saldo es de: %c%.2f\n",36,s7);
            p("Nombre: %s \n",nom8);
            p("Numero de cuenta:%s\n",num8);
            p("La fecha es:%s\n",fecha8);
            p("Su saldo es de: %c%.2f\n",36,s8);
            p("Nombre: %s \n",nom9);
            p("Numero de cuenta:%s\n",num9);
            p("La fecha es:%s\n",fecha9);
            p("Su saldo es de: %c%.2f\n",36,s9);
            p("Nombre: %s \n",nom10);
            p("Numero de cuenta:%s\n",num10);
            p("La fecha es:%s\n",fecha10);
            p("Su saldo es de: %c%.2f\n",36,s10);
            system("cls");
            break;
        case 3:
            p("Ha elegido Modificar saldos...\n");
            p("Digite el numero de cuenta sobre el cual desea modificar los datos:");
            scanf("%d",&des);
            if (des == num)
                p("\n");
                p("Digite su nombre: ");
                fflush(stdin);
                scanf("%s",&nom);
                p("Digite su num. de cuenta: ");
                fflush(stdin);
                scanf("%s",&num);
                p("Digite la fecha(dd-mm-aaaa)");
                fflush(stdin);
                scanf("%s",&fecha);
                p("Digite el primer saldo:%c",36);
                fflush(stdin);
                scanf("%f",&s1);
                p("Su primer saldo es de: %c%.2f\n",36,s1);
                fflush(stdin);
            }
            p("Presione 1 para avanzar:\n");
            fflush(stdin);
            scanf("%d",&opc);
        }
    while(opc==1);
}


Kenji-chan

#5
En la creacion de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serian muy dificil de describir en los tipos de datos primitivos, esta es la situacion en la que debemos aprovecharnos de las caracteristicas que hacen al lenguaje C especial, o sea el uso de estructuras y punteros.

Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct. Aqui hay ejemplo de la declaracion de una estructura:


struct mystruct{
     int int_member;
     double double_member;
     char string_member[25];
} variable;


esto es algo que podemos utilizar para mejorar el codigo


#include <stdio.h>
#include<stdlib.h>

#define p printf
#define cls system("cls");

const int max = 3;

typedef struct{
char nombre[20];
char fecha[20];
char numero[20];
float saldo;
}_persona;

void agregar(_persona* personas);
void mostrar(const _persona* personas);


int main(int argc, char* argv[]){
int op, opc=0;
_persona personas[max];
do{
cls;
p("1.Agregar saldos\n");
p("2.-Ver saldos\n");
p("3.-Buscar Saldos\n");
p("4.-Modificar saldos\n");
p("5.-Salir\n");
p("Que opcion desea ejecutar?\n ");
scanf("%d",&op);

switch(op){
case 1:
agregar(personas);
break;
case 2:
mostrar(personas);
break;
case 3:
p("Ha elegido Modificar saldos...\n");
p("Digite el numero de cuenta sobre el cual desea modificar los datos");
break;
}
}while(opc != 5);
}

void agregar(_persona* personas){
cls;
int i;
for(i=0; i<max; i++){
p("Digite su nombre: ");
fflush(stdin);
scanf("%s", personas[i].nombre);
p("Digite su num. de cuenta: ");
fflush(stdin);
scanf("%s", personas[i].numero);
p("Digite la fecha(dd-mm-aaaa)");
fflush(stdin);
scanf("%s", personas[i].fecha);
p("Digite el primer saldo:%c",36);
fflush(stdin);
scanf("%f",&personas[i].saldo);
p("Su primer saldo es de: %c%.2f\n",36,personas[i].saldo);
}
}

void mostrar(const _persona* personas){
cls;
int i;
p("Ha elegido ver los saldos...\n");
for(i=0; i<max; i++){
p("Nombre: %s \n",personas[i].nombre);
p("Numero de cuenta %s \n:",personas[i].numero);
p("Su saldo es de: %c%.2f\n",36,personas[i].saldo);
}
}



explicacion del codigo:

en la linea 7 defino una constante que determinara la longitud de mi array
const int max = 3;

de la linea 9 a la 14 definimos la estructura de datos que utilizaremos como un nuevo tipo de variable

typedef struct{
char nombre[20];
char fecha[20];
char numero[20];
float saldo;
}_persona;


en la linea 22 usamos nuestra nueva variable y la hacemos un array

_persona personas[max];// variable de tipo _persona


en las funciones agregar y mostrar es algo que ya sabes como se hace creo...

MrAxelLag

Estoy conciente del uso de punteros y estructuras pero siempre suelo tener muchos errores con ellos, por ejemplo a la hora de modificar las cuentas como podria continuar el codigo, y otra cosa que note es que al ejecutar el programa y dar a la opcion 2, me manda el menu nuevamente. Por que es esto?

Kenji-chan

eso es porque en el caso 2 lo único que hace es imprimir la información almacenada y cuando acaba de imprimirla en pantalla vuelve al menú

MrAxelLag

Si, lo note, le agregue un getch(); para que hiciera una pausa, ahora bien, al modificar los datos como puedo reanudar con el codigo para que me elija uno de los 3?

MrAxelLag

El criterio para modificar es que introduzca un numero de cuenta, y el que coincida debe modificar todo