Facultad de Ingeniería

Programa de Ingeniería de Sistemas
Programación I
Semana 4

CASO DE ESTUDIO: ESTADÍSTICAS DE
VOTACIONES MUNICIPALES
1. ENUNCIADO
Elabore un programa en C++ que permita el registro y administración de cuentas de ahorro
para los usuarios de un banco, el sistema debe permitir crear cuentas con los siguientes
datos: Número de cuenta, Cédula, Nombre, Estado (A. Abierta o C. Cerrada) y Saldo inicial.
El sistema debe poder registrar cada movimiento realizado por los usuarios teniendo en
cuenta:
Datos de entrada:
1. Debe permitir abrir y cerrar cuentas
2. Cada movimiento debe quedar registrado, el sistema debe permitir mostrar todos los
movimientos de una cuenta en particular (se debe buscar por número o cédula)
3. El sistema debe permitir el depósitos y retiros, teniendo en cuenta el saldo que el usuario
posee (el sistema debe pedir la cuenta y el monto)
4. El sistema debe permitir la realización de transferencias de una cuenta a otra (el sistema
debe pedir la cuenta de origen, la cuenta de destino y el monto)

Datos de salida:
1. El sistema debe permitir listar todas las cuentas con su saldo
2. Cada movimiento debe quedar registrado, el sistema debe permitir mostrar todos los
movimientos de una cuenta en particular (se debe buscar por número o cédula)
3. El sistema debe permitir listar todas las cuentas con su saldo

Contexto del caso:
Según el enunciado correspondiente al ejercicio propuesto, el sistema requerido debe
gestionar el manejo de una cuenta de ahorro para cada cliente de un banco cuyas
funcionalidades también comprenden la gestión y el control de los movimientos que
conciernen a dicho manejo
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Semana 4

2. ESTRUCTURAS DE DATOS

Defina las estructuras en las que se almacenarán los datos, y su código respectivo.
Nombre Descripción Tipo de datos
listado[] Contiene todos los registros Cuenta
de las cuentas
Nombre Nombre del titular de la Char
cuenta
numeroCuenta Número de la cuenta de Char
ahorros
Cedula Cedula del titular Char
saldo Saldo disponible en la Double
cuenta
Estado Estado de cuenta char

3. REQUERIMIENTOS FUNCIONALES

RF1: Crear cuenta de ahorros
void registrarCuenta(){

fflush(stdin);
cout<<"\nDIGITE EL NUMERO DE CUENTA: ";
gets(listado[indice].numeroCuenta);

fflush(stdin);
cout<<"\nDIGITE EL NUMERO DE CEDULA: ";
cin>>listado[indice].cedula;

fflush(stdin);
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Semana 4

cout<<"\nDIGITE NOMBRE DEL CLIENTE: ";
gets(listado[indice].nombre);

cout<<"\nDIGITE EL SALDO DE LA CUENTA: ";
cin>>listado[indice].saldo;

listado[indice].estado = 'A';

indice++;
}

RF2: Abrir cuenta
int abrirCuenta(char numeroCuentaBuscada[15]){

for(int i=0; i<indice; i++){

if(strcmp(listado[i].numeroCuenta, numeroCuentaBuscada)==0){

if(listado[i].estado == 'C'){
listado[i].estado = 'A';
return 1;
}
else{
return -1;
}

}
}

return 0;
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Semana 4

}
RF3: Cerrar cuenta
int cerrarCuenta(char numeroCuentaBuscada[15]){

for(int i=0; i<indice; i++){

if(strcmp(listado[i].numeroCuenta, numeroCuentaBuscada)==0){

if(listado[i].estado == 'A'){
listado[i].estado = 'C';
return 1;
}
else{
return -1;
}

}
}

return 0;
}

RF4: Efectuar depósitos
RF5: Efectuar transferencias
RF6: Efectuar retiros
RF7: Listar registros
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Semana 4

4. REQUERIMIENTOS INSTRUCCIONALES

void menu(char respuesta){

cout<<"\nQUE DESEA HACER\n";
cout<<"\n\n1. CREAR CUENTA";
cout<<"\n2. ABRIR/CERRAR CUENTA";
cout<<"\n3. VER MOVIMIENTOS";
cout<<"\n4. REALIZAR DEPOSITO/RETIRO";
cout<<"\n5. REALIZAR TRANSFERENCIA";
cout<<"\n6. LISTAR TODAS LAS CUENTAS";
cout<<"\n\nPARA SALIR DIGITE CUALQUIER TECLA\n\n->";
cin>>respuesta;
system("CLS");
switch(respuesta){

case '1':
registrarCuenta();
break;

case '2':
char cuentaBuscada[30], abreOcierra;

do{
cout<<"\nDESEA ABRIR(A) O CERRAR(B) LA CUENTA?\n->";
cin>>abreOcierra;
system("CLS");
}while(abreOcierra !='A' && abreOcierra !='a' && abreOcierra !='c' &&
abreOcierra !='C');
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Semana 4

if(abreOcierra=='A' || abreOcierra=='a'){
fflush(stdin);
cout<<"\nDIGITE EL NUMERO DE CUENTA QUE DESEA ABRIR\n->";
gets(cuentaBuscada);

switch(abrirCuenta(cuentaBuscada)){

case -1:
cout<<"\nESTA CUENTA YA ESTABA ABIERTA";
break;

case 1:
cout<<"\nLA CUENTA HA CAMBIADO DE ESTADO A ABIERTA
(A)";
break;

case 0:
cout<<"\nNO EXISTE ESE NUMERO";
break;
}

}else {

fflush(stdin);
cout<<"\nDIGITE EL NUMERO DE CUENTA QUE DESEA ABRIR\n->";
gets(cuentaBuscada);

switch(cerrarCuenta(cuentaBuscada)){
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Semana 4

case -1:
cout<<"\nESTA CUENTA YA ESTABA CERRADA";
break;

case 1:
cout<<"\nLA CUENTA HA CAMBIADO DE ESTADO A
CERRADA (C)";
break;

case 0:
cout<<"\nNO EXISTE ESE NUMERO";
break;
}

}

break;

case '3':
break;

case '4':

break;

case '5':
break;
}
}