0% encontró este documento útil (0 votos)
4 vistas30 páginas

Informe Final Proyecto

informatica y administracion
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas30 páginas

Informe Final Proyecto

informatica y administracion
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS-CORTES

INFORME SISTEMA DE PRESTAMOS BANCARIOS

INTEGRANTES:
PABLO JOSE ALVARENGA AGUILAR 20232030443
JHONY SEBASTAN TREJO LOPEZ 20212000326

LICENCIADA:
ERICKA GIRON

ASIGNATURA:
METODOLOGIA DE LA PROGRAMACION

SECCION: 1900

SAN PEDRO SULA, CORTES


INTRODUCCION

El presente informe detalla el desarrollo y funcionamiento de un sistema de


gestión de préstamos bancarios, implementado en el lenguaje de programación
C++.
Este sistema ofrece herramientas para registrar clientes, procesar solicitudes
de préstamos y consultar un historial global de operaciones.
Su diseño busca simular de forma sencilla, pero realista, el proceso que sigue
una institución financiera para evaluar, aprobar o rechazar solicitudes,
aplicando condiciones, restricciones y cálculos basados en criterios reales del
sector bancario.
Gracias a su estructura, permite al usuario administrar de manera eficiente la
información de los clientes y realizar estimaciones precisas sobre pagos y
cuotas mensuales, asegurando que cada préstamo cumpla con las políticas
establecidas.
INDICE

Contenido
INTRODUCCION............................................................................................................... 2
INDICE........................................................................................................................... 3
OBJETIVOS GENERALES Y ESPECIFICOS..........................................................4
Objetivos específicos................................................................................................4
Objetivos Generales.................................................................................................4
DESARROLLO DEL SISTEMA...................................................................................5
Estructura de datos...................................................................................................5
Ordinograma del proceso............................................................................................6
ANEXOS........................................................................................................................ 8
PSEUDOCODIGO EN PSEINT:..............................................................................8
CODIGO C++:......................................................................................................... 18
Documentación: Trabajo en Equipo.........................................................................29
OBJETIVOS GENERALES Y ESPECIFICOS
Objetivos específicos
 Implementar funciones para registrar clientes con sus datos personales y
económicos.
 Aplicar criterios de aprobación de prestamos basados en edad, tipo de
cliente y capacidad de pago.
 Calcular las coutas mensuales de pago considerando la tasa de interés y
el plazo
 Mantener un historial de clientes y prestamos otorgados

Objetivos Generales
 Desarrollar un sistema de préstamo bancario C++ que permita gestionar
de manera eficiente el registro de clientes y la administración de
solicitudes de prestamos
 Simular el funcionamiento básico de una institución financiera, aplicando
criterios reales de aprobación, como limites de edad, ingresos y buen
historial crediticio.
 Mejorar la experiencia del usuario al brindar un sistema sencillo, claro y
adaptable a diferentes tipos de clientes(naturales y juridicos)
DESARROLLO DEL SISTEMA
El sistema de préstamo bancario ha sido implementado en el lenguaje de
programación C++, empleando un enfoque de programación estructurada que
garantiza un control preciso del flujo de ejecución y una comprensión clara de
cada uno de sus módulos funcionales. A continuación, se presenta una
descripción detallada de su lógica interna y del comportamiento de cada
componente que lo conforma.

Estructura de datos
El sistema se basa en dos estructuras principales:

1. Cliente
Contiene la información básica y financiera del solicitante, como:
o Código del cliente
o Nombre y apellido
o Edad
o Tipo de cliente (natural o jurídico)
o Ingresos mensuales
o Estado de récord crediticio (bueno o malo)
2. Préstamo
Almacena la información de cada operación de crédito:
o Monto solicitado
o Plazo (en meses o años)
o Tasa de interés aplicada
o Cuota mensual calculada
o Estado de aprobación o rechazo

Estas estructuras permiten que la información se organice de forma ordenada y


sea fácil de manipular dentro del programa.

Funciones principales

El programa se compone de varias funciones que dividen las tareas y evitan la


repetición de código. Entre las más importantes se encuentran:

 buscarc(): Localiza un cliente existente mediante su código.


 potencia(): Realiza el cálculo de potencias necesarias para la fórmula
de cuotas.
 calcums(): Aplica la fórmula de anualidades para calcular la cuota
mensual del préstamo.
 tplazo(): Devuelve la tasa de interés en función del plazo elegido.
 mostrarc(): Muestra toda la información de un cliente específico.
 solicpr(): Gestiona el proceso de solicitud de préstamo, verificando
requisitos y calculando cuotas.
 regiscl(): Registra los datos de un nuevo cliente.
 histo(): Muestra un historial completo de todos los clientes y préstamos
registrados.

Ordinograma del proceso

Explicacion del Ordinograma

El ordinograma representa el flujo lógico de funcionamiento del sistema de


préstamos bancarios, detallando cada una de las operaciones que el usuario
puede realizar.

1. Inicio
El programa comienza mostrando la pantalla inicial y cargando los
recursos necesarios para su funcionamiento.
2. Menú Principal
Una vez iniciado, el sistema presenta un menú principal con las
opciones disponibles:
1. Registrar cliente.
2. Solicitar préstamo.
3. Ver historial global.
4. Salir.
3. Opción 1 – Registrar Cliente

o El usuario ingresa los datos personales del cliente (nombre,


identificación, edad, etc.).
o El sistema valida la información y la guarda en el registro de
clientes.
o Tras finalizar, retorna al menú principal.
4. Opción 2 – Solicitar Préstamo
o El sistema solicita el código o identificación del cliente.
o Se verifican las condiciones de aprobación (edad, ingresos,
historial, etc.).
 Si no cumple los requisitos, la solicitud es rechazada y se
regresa al menú.
 Si cumple, se calcula la cuota mensual en base al monto,
tasa de interés y plazo.
o El préstamo aprobado se guarda en el historial y el sistema
regresa al menú principal.
5. Opción 3 – Ver Historial Global
o Se muestra en pantalla una lista de todos los clientes registrados
junto con la información de los préstamos realizados.
o Tras la visualización, se retorna al menú principal.
6. Opción 4 – Salir
o El sistema finaliza su ejecución mostrando el mensaje de cierre y
liberando los recursos utilizados.
ANEXOS

PSEUDOCODIGO EN PSEINT:
Definir tipo Cliente:

codigo Como Entero

nombre Como Cadena

edad Como Entero

ingresoM Como Real

FinTipo

Definir tipo Prestamo:

codigoc Como Entero

monto Como Real

tasai Como Real

plazom Como Entero

tipoc Como Cadena

subtipp Como Cadena

FinTipo

Definir clientes[100] Como Cliente

Definir prestamos[100] Como Prestamo

Definir totalc, totalpr Como Entero

totalc <- 0

totalpr <- 0

SubProceso CopiarCadena(origen, destino Por Referencia)

destino <- origen


FinSubProceso

SubProceso MostrarCliente(c Como Cliente)

Escribir "--- Datos del Cliente ---"

Escribir "Codigo: ", [Link]

Escribir "Nombre: ", [Link]

Escribir "Edad: ", [Link]

Escribir "Ingreso mensual: L.", [Link]

FinSubProceso

Funcion pos <- BuscarCliente(codigo)

Definir i Como Entero

pos <- -1

Para i <- 0 Hasta totalc-1

Si clientes[i].codigo = codigo Entonces

pos <- i

i <- totalc // salir del bucle

FinSi

FinPara

FinFuncion

Funcion resultado <- Potencia(base, exponente)

Definir i Como Entero

resultado <- 1

Si exponente >= 0 Entonces

Para i <- 1 Hasta exponente

resultado <- resultado * base

FinPara
SiNo

Para i <- 1 Hasta Abs(exponente)

resultado <- resultado / base

FinPara

FinSi

FinFuncion

Funcion cuota <- CalcularCuotaMensual(monto, tasaAnual, meses)

Definir tasaMensual, denom Como Real

tasaMensual <- tasaAnual / 12

denom <- 1 - Potencia(1 + tasaMensual, -meses)

cuota <- (monto * tasaMensual) / denom

FinFuncion

Funcion tasa <- TasaPorPlazo(plazo)

Segun plazo Hacer

12: tasa <- 0.13

24: tasa <- 0.16

36: tasa <- 0.20

De Otro Modo: tasa <- 0.25

FinSegun

FinFuncion

SubProceso SolicitarPrestamo(codigoCliente)

pos <- BuscarCliente(codigoCliente)

Si pos = -1 Entonces

Escribir ">> Cliente no encontrado."

SalirSubProceso
FinSi

c <- clientes[pos]

MostrarCliente(c)

Escribir "Seleccione tipo de cliente:"

Escribir "1. Natural"

Escribir "2. Juridico"

Leer tipoCliente

Si tipoCliente = 1 Entonces

Si [Link] < 18 O [Link] > 54 Entonces

Escribir ">> Prestamo RECHAZADO: Edad fuera del rango permitido (18-54)."

SalirSubProceso

FinSi

SiNo

Si tipoCliente = 2 Entonces

Si [Link] < 26 O [Link] > 59 Entonces

Escribir ">> Prestamo RECHAZADO: Edad fuera del rango permitido (26-59)."

SalirSubProceso

FinSi

SiNo

Escribir ">> Tipo de cliente invalido."

SalirSubProceso

FinSi

FinSi

Escribir "Tiene buen record crediticio? (S/N): "


Leer record

Si record <> "S" Y record <> "s" Entonces

Escribir ">> Prestamo RECHAZADO: No cumple con buen record crediticio."

SalirSubProceso

FinSi

Si tipoCliente = 1 Entonces

tipoClienteStr <- "Natural"

Escribir "Seleccione tipo de prestamo:"

Escribir "1. Personal"

Escribir "2. Educacion"

Escribir "3. Hipotecario"

Leer subTipo

Segun subTipo Hacer

1: subtipoStr <- "Personal"

2: subtipoStr <- "Educacion"

De Otro Modo: subtipoStr <- "Hipotecario"

FinSegun

SiNo

tipoClienteStr <- "Juridico"

Escribir "Seleccione tipo de prestamo:"

Escribir "1. Microempresario"

Escribir "2. Maquinaria y Equipo"

Leer subTipo

Segun subTipo Hacer

1: subtipoStr <- "Microempresario"

De Otro Modo: subtipoStr <- "Maquinaria y Equipo"

FinSegun
FinSi

Escribir "Ingrese monto del prestamo: L"

Leer monto

Escribir "Seleccione plazo (meses): "

Leer plazo

tasa <- TasaPorPlazo(plazo)

cuota <- CalcularCuotaMensual(monto, tasa, plazo)

maxCuota <- [Link] * 0.45

Escribir "Tasa de interes anual: ", tasa * 100, "%"

Escribir "Pago mensual aproximado: L.", cuota

Escribir "Limite permitido (45% de ingresos): L.", maxCuota

Si cuota > maxCuota Entonces

Escribir ">> Prestamo RECHAZADO: la cuota mensual supera el 45% de sus


ingresos."

SalirSubProceso

FinSi

// Guardar prestamo

[Link] <- codigoCliente

[Link] <- monto

[Link] <- tasa

[Link] <- plazo

[Link] <- tipoClienteStr

[Link] <- subtipoStr


prestamos[totalpr] <- p

totalpr <- totalpr + 1

Escribir ">> Prestamo aprobado con exito."

FinSubProceso

SubProceso RegistrarCliente()

Definir c Como Cliente

Escribir "Ingrese codigo del cliente: "

Leer [Link]

Si BuscarCliente([Link]) <> -1 Entonces

Escribir ">> Cliente ya registrado."

SalirSubProceso

FinSi

Escribir "Ingrese nombre del cliente: "

Leer [Link]

Escribir "Ingrese edad: "

Leer [Link]

Escribir "Ingrese ingreso mensual: "

Leer [Link]

clientes[totalc] <- c

totalc <- totalc + 1

Escribir ">> Cliente registrado con exito."


Escribir "Desea solicitar un prestamo ahora? (S/N): "

Leer opc

Si opc = "S" O opc = "s" Entonces

SolicitarPrestamo([Link])

FinSi

FinSubProceso

SubProceso Historial()

Si totalc = 0 Entonces

Escribir ">> No hay clientes registrados."

SalirSubProceso

FinSi

Escribir "=== HISTORIAL GLOBAL DE CLIENTES Y PRESTAMOS ==="

Para i <- 0 Hasta totalc-1

c <- clientes[i]

Escribir "Cliente #", i + 1

Escribir "Codigo: ", [Link]

Escribir "Nombre: ", [Link]

Escribir "Edad: ", [Link]

Escribir "Ingreso mensual: L.", [Link]

tienePrestamos <- Falso

Para j <- 0 Hasta totalpr-1

p <- prestamos[j]

Si [Link] = [Link] Entonces


Si No tienePrestamos Entonces

Escribir "Prestamos:"

tienePrestamos <- Verdadero

FinSi

Escribir " - Monto: L.", [Link], ", Tasa: ", [Link] * 100, "%, Plazo: ", [Link],
" meses, Tipo cliente: ", [Link], ", Subtipo: ", [Link]

FinSi

FinPara

Si No tienePrestamos Entonces

Escribir "Prestamos: Ninguno"

FinSi

FinPara

FinSubProceso

Proceso Principal

Definir opcion Como Entero

Repetir

Escribir ""

Escribir " SISTEMA DE PRESTAMO BANCARIO "

Escribir "1. Registrar nuevo cliente"

Escribir "2. Buscar cliente"

Escribir "3. Ver historial global"

Escribir "0. Salir"

Escribir "Seleccione una opcion: "

Leer opcion

Segun opcion Hacer

1: RegistrarCliente()
2:

Escribir "Ingrese codigo del cliente a buscar: "

Leer cod

pos <- BuscarCliente(cod)

Si pos = -1 Entonces

Escribir ">> Cliente no encontrado."

SiNo

MostrarCliente(clientes[pos])

FinSi

3: Historial()

0: Escribir "Saliendo del sistema..."

De Otro Modo:

Escribir ">> Opcion no valida."

FinSegun

Hasta Que opcion = 0

FinProceso
CODIGO C++:
#include <iostream>

using namespace std;

struct Cliente {

int codigo;

char nombre[50];

int edad;

float ingresoM;

};

struct Prestamo {

int codigoc;

float monto;

float tasai;

int plazom;

char tipoc[20];

char subtipp[30];

};

Cliente clientes[100];

Prestamo prestamos[100];

int totalc = 0;

int totalpr = 0;

int buscarc(int codigo);

float potencia(float base, int exponente);


float calcums(float monto, float tasaAnual, int meses);

float tplazo(int plazo);

void mostrarc(const Cliente& c);

void solicpr(int codigoCliente);

void regiscl();

void histo();

void copicad(char destino[], const char origen[]);

int main() {

int opcion;

do {

cout << "\n SISTEMA DE PRESTAMO BANCARIO \n";

cout << "1. Registrar nuevo cliente\n";

cout << "2. Buscar cliente\n";

cout << "3. Ver historial global\n";

cout << "0. Salir\n";

cout << "Seleccione una opcion: ";

cin >> opcion;

[Link]();

switch (opcion) {

case 1: regiscl(); break;

case 2: {

int cod;

cout << "Ingrese codigo del cliente a buscar: ";

cin >> cod;

[Link]();
int pos = buscarc(cod);

if (pos == -1) cout << ">> Cliente no encontrado.\n";

else mostrarc(clientes[pos]);

break;

case 3: histo(); break;

case 0: cout << "Saliendo del sistema...\n";

break;

default: cout << ">> Opcion no valida.\n";

} while (opcion != 0);

return 0;

int buscarc(int codigo) {

for (int i = 0; i < totalc; i++)

if (clientes[i].codigo == codigo)

return i;

return -1;

float potencia(float base, int exponente) {

float resultado = 1.0f;

if (exponente >= 0) {

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

resultado *= base;
}

} else {

for (int i = 0; i < -exponente; i++) {

resultado /= base;

return resultado;

float calcums(float monto, float tasaAnual, int meses) {

float tasaMensual = tasaAnual / 12;

float denom = 1 - potencia(1 + tasaMensual, -meses);

return (monto * tasaMensual) / denom;

float tplazo(int plazo) {

if (plazo == 12) return 0.13f;

else if (plazo == 24) return 0.16f;

else if (plazo == 36) return 0.20f;

else return 0.25f;

void mostrarc(const Cliente& c) {

cout << "\n--- Datos del Cliente ---\n";

cout << "Codigo: " << [Link] << "\n";

cout << "Nombre: " << [Link] << "\n";

cout << "Edad: " << [Link] << "\n";

cout << "Ingreso mensual: L." << [Link] << "\n";


}

void solicpr(int codigoCliente) {

int pos = buscarc(codigoCliente);

if (pos == -1) {

cout << ">> Cliente no encontrado.\n";

return;

Cliente & c = clientes[pos];

mostrarc(c);

cout << "\nSeleccione tipo de cliente:\n1. Natural\n2. Juridico\nOpcion: ";

int tipoCliente;

cin >> tipoCliente;

[Link]();

if (tipoCliente == 1) {

if ([Link] < 18 || [Link] > 54) {

cout << ">> Prestamo RECHAZADO: Edad fuera del rango permitido para cliente
Natural (18-54).\n";

return;

} else if (tipoCliente == 2) {

if ([Link] < 26 || [Link] > 59) {

cout << ">> Prestamo RECHAZADO: Edad fuera del rango permitido para cliente
Juridico (26-59).\n";

return;

}
} else {

cout << ">> Tipo de cliente invalido.\n";

return;

char record;

cout << "Tiene buen record crediticio? (S/N): ";

cin >> record;

[Link]();

if (record != 'S' && record != 's') {

cout << ">> Prestamo RECHAZADO: No cumple con buen record crediticio.\n";

return;

char tipoClienteStr[20];

char subtipoStr[30];

if (tipoCliente == 1) {

copicad(tipoClienteStr, "Natural");

cout << "Seleccione tipo de prestamo:\n1. Personal\n2. Educacion\n3.


Hipotecario\nOpcion: ";

int subTipo;

cin >> subTipo;

[Link]();

if (subTipo == 1) copicad(subtipoStr, "Personal");

else if (subTipo == 2) copicad(subtipoStr, "Educacion");

else copicad(subtipoStr, "Hipotecario");

} else {
copicad(tipoClienteStr, "Juridico");

cout << "Seleccione tipo de prestamo:\n1. Microempresario\n2. Maquinaria y


Equipo\nOpcion: ";

int subTipo;

cin >> subTipo;

[Link]();

if (subTipo == 1) copicad(subtipoStr, "Microempresario");

else copicad(subtipoStr, "Maquinaria y Equipo");

float monto;

int plazo;

cout << "Ingrese monto del prestamo: L";

cin >> monto;

cout << "Seleccione plazo (meses): ";

cin >> plazo;

[Link]();

float tasa = tplazo(plazo);

float cuota = calcums(monto, tasa, plazo);

float maxCuota = [Link] * 0.45f;

cout << "\n Detalles del prestamo \n";

cout << "Tasa de interes anual: " << tasa * 100 << "%\n";

cout << "Pago mensual aproximado: L." << cuota << "\n";

cout << "\nCuota mensual calculada: L." << cuota << "\n";
cout << "Limite permitido (45% de ingresos): L." << maxCuota << "\n";

if (cuota > maxCuota) {

cout << ">> Prestamo RECHAZADO: la cuota mensual supera el 45% de sus
ingresos.\n";

return;

Prestamo p;

[Link] = codigoCliente;

[Link] = monto;

[Link] = tasa;

[Link] = plazo;

copicad([Link], tipoClienteStr);

copicad([Link], subtipoStr);

prestamos[totalpr++] = p;

cout << ">> Prestamo aprobado con exito.\n";

void regiscl() {

Cliente c;

cout << "Ingrese codigo del cliente: ";

cin >> [Link];

[Link]();

if (buscarc([Link]) != -1) {

cout << ">> Cliente ya registrado.\n";

return;
}

cout << "Ingrese nombre del cliente: ";

[Link]([Link], 50);

cout << "Ingrese edad: ";

cin >> [Link];

cout << "Ingrese ingreso mensual: ";

cin >> [Link];

[Link]();

clientes[totalc++] = c;

cout << ">> Cliente registrado con exito.\n";

char opc;

cout << "Desea solicitar un prestamo ahora? (S/N): ";

cin >> opc;

[Link]();

if (opc == 'S' || opc == 's') {

solicpr([Link]);

void histo() {

if (totalc == 0) {

cout << ">> No hay clientes registrados.\n";

return;

cout << "\n=== HISTORIAL GLOBAL DE CLIENTES Y PRESTAMOS ===\n";


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

Cliente& c = clientes[i];

cout << "\nCliente #" << (i + 1) << "\n";

cout << "Codigo: " << [Link] << "\n";

cout << "Nombre: " << [Link] << "\n";

cout << "Edad: " << [Link] << "\n";

cout << "Ingreso mensual: $" << [Link] << "\n";

bool tienePrestamos = false;

for (int j = 0; j < totalpr; j++) {

Prestamo& p = prestamos[j];

if ([Link] == [Link]) {

if (!tienePrestamos) {

cout << "Prestamos:\n";

tienePrestamos = true;

cout << " - Monto: $" << [Link]

<< ", Tasa: " << [Link] * 100 << "%"

<< ", Plazo: " << [Link] << " meses"

<< ", Tipo cliente: " << [Link]

<< ", Subtipo: " << [Link] << "\n";

if (!tienePrestamos)

cout << "Prestamos: Ninguno\n";

}
void copicad(char destino[], const char origen[]) {

int i = 0;

while (origen[i] != '\0') {

destino[i] = origen[i];

i++;

destino[i] = '\0';

}
Documentación: Trabajo en Equipo
1. Concepto de Trabajo en Equipo
El trabajo en equipo es un proceso colaborativo en el que varias personas, con
habilidades y roles complementarios, unen esfuerzos para alcanzar un objetivo común.
Se basa en la comunicación efectiva, la cooperación y la coordinación de tareas, de
manera que el resultado final sea más eficiente y de mayor calidad que el que podría
lograrse de forma individual.

2. Importancia en Proyectos de Programación


En el desarrollo de software, el trabajo en equipo es esencial debido a la complejidad
de las tareas y la necesidad de integrar múltiples conocimientos. Algunos beneficios
clave son:

1) Distribución de responsabilidades: evitando la sobrecarga en una sola persona.


2) Diversidad de ideas: lo que permite encontrar soluciones creativas y efectivas.
3) Mayor productividad: gracias a la especialización de tareas.

También podría gustarte