{"id":25086837,"url":"https://github.com/ozzies-code/cuentasahorro","last_synced_at":"2026-01-11T01:46:26.251Z","repository":{"id":273620025,"uuid":"920321930","full_name":"ozzies-code/CuentasAhorro","owner":"ozzies-code","description":"Este proyecto consiste en una aplicacion que gestiona procesos y movimientos bancarios de un cliente a partir de la creacion de una cuenta y el manejo de sus movimientos bancarios","archived":false,"fork":false,"pushed_at":"2025-01-22T00:23:32.000Z","size":57,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T09:19:10.069Z","etag":null,"topics":["collections","events","listbox-control","message-box"],"latest_commit_sha":null,"homepage":"https://github.com/ozzies-code/CuentasAhorro/","language":"Visual Basic .NET","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ozzies-code.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-22T00:11:00.000Z","updated_at":"2025-01-22T00:26:51.000Z","dependencies_parsed_at":"2025-01-22T01:33:34.460Z","dependency_job_id":null,"html_url":"https://github.com/ozzies-code/CuentasAhorro","commit_stats":null,"previous_names":["ozzies-code/cuentasahorro"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzies-code%2FCuentasAhorro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzies-code%2FCuentasAhorro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzies-code%2FCuentasAhorro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzies-code%2FCuentasAhorro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ozzies-code","download_url":"https://codeload.github.com/ozzies-code/CuentasAhorro/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246659337,"owners_count":20813323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collections","events","listbox-control","message-box"],"created_at":"2025-02-07T09:19:20.505Z","updated_at":"2026-01-11T01:46:26.224Z","avatar_url":"https://github.com/ozzies-code.png","language":"Visual Basic .NET","funding_links":[],"categories":[],"sub_categories":[],"readme":" # Project Title: CuentasAhorro\n \nEste proyecto consiste en una aplicacion que gestiona procesos \ny movimientos bancarios de un cliente a partir de la creacion \nde una cuenta y el manejo de sus movimientos bancarios.\n\n# Descripcion\n\n Este proyecto consiste en el desarrollo de una aplicacion que lleva\n a cabo una serie de moviimientos a traves de una plataforma\n bancaria para gestionar la informacion del cliente desde la apertura\n de la cuenta, la consulta del saldo disponible, el ingreso de dinero,\n el retiro de dinero y los movimientos son observados en detalle \n a traves de dos objetos ListBox donde se aprecia el manejo de las tran\n sacciones del cliente tanto para ingreso de dinero como retiro de \n dinero.\n \n # Actualizacion: 21/01/2025\n # Hora: 20:17\n\nDetalles técnicos del proyecto:\nIdioma: Visual Basic.NET\nVersión del framework: 4.7.2\n\n## Autores\n\n- [@ozzies-code](https://www.github.com/ozzies-code)\n\n## Contribuciones\n\n¡Las contribuciones son siempre bienvenidas!\n\nConsulta `contributing.md` para conocer cómo comenzar.\n\nPor favor, respeta el `código de conducta` de este proyecto.\n\n## Despliegue\n\nPara implementar este proyecto, descargue los archivos del proyecto\ndel repositorio y el código del proyecto que se encuentra\nen el archivo README.md\n\n## 🚀 Acerca de Mi\nSoy un apasionado desarrollador fullstack de Venezuela 🇻🇪 y Países Bajos 🇳🇱\n\n\n🔭 Actualmente estoy trabajando en .NET Framework\n\n🔭 Actualmente estoy trabajando en desarrollo web\n\n🔭 Actualmente estoy trabajando en proyectos de .Console\n\n🔭 Actualmente estoy trabajando en bases de datos .SQL\n\n🌱 Actualmente estoy aprendiendo sobre frameworks, cursos, tutoriales y libros electrónicos\n\n💬 Pregúntame sobre desarrollo de software\n\n📫 Cómo contactarme oswaldojmp.nl@proton.me\n\n👨‍💻 Todos mis proyectos están disponibles en https://developerandtechnologyozziescode.blogspot.com/ (mi sitio web)\n\n📝 Escribo artículos regularmente en Medium.com/Ozzies.Code\n\n    ## 🔗 Links\n[![portfolio](https://img.shields.io/badge/my_portfolio-000?style=for-the-badge\u0026logo=ko-fi\u0026logoColor=white)]( https://developerandtechnologyozziescode.blogspot.com)\n[![linkedin](https://img.shields.io/badge/linkedin-0A66C2?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](www.linkedin.com/in/oswaldo-jesús-marín-pagés-ab4499a4)\n[![twitter](https://img.shields.io/badge/twitter-1DA1F2?style=for-the-badge\u0026logo=twitter\u0026logoColor=white)](https://twitter.com/ozzies_code)\n\n## Lecciones Aprendidas\n\n- Manejo de listas y groupbox\n- eventos\n- manejo del Message Box\n- manejo de InputBox Box\n- Manejo de Listas como\ncolecciones de objetos\n\n## image of the Project\n\n![imagen](https://github.com/user-attachments/assets/4fb3bf56-6722-4443-88a7-1aafd15cbb4c)\n\n## Soporte\n\nPara soporte, email oswaldojmp.nl@proton.me\n\n## Pila de tecnología\n\n**Plataforma:** Visual studio 2022\n\n**Lenguaje:** Visual Basic.NET\n\nCodigo del Proyecto:\n\nPublic Class Form1\n    'Se llama al banco con el numero de sucursal y el nombre del banco\n    Private banco As New Banco(1, \"XYZ\")\n    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load\n        'la Propiedad Text en el formulario usara la propiedad Nombre_Banco para mostrar el nombre del banco \n        Me.Text = banco.Nombre_Banco\n    End Sub\n\n    Private Sub btnIngresarDinero_Click(sender As Object, e As EventArgs) Handles btnIngresardinero.Click\n\n        'Se utiliza un Try Catch para capturar cualquier excepción que se pueda presentar\n        'en el momento de ingresar el número de cuenta y el valor a ingresar\n        'Si se presenta una excepción se muestra un mensaje de error\n        'Si no se presenta ninguna excepción se ingresa el dinero a la cuenta de ahorros\n        'Todo ocurre a traves de un InputBox para capturar la informacion necesaria\n        'Tambien se emplea el metodo Integer.Parse para convertir el valor ingresado a un entero\n\n        Try\n            Dim numeroCuenta As Integer = Integer.Parse(InputBox(\"Ingrese el número de cuenta\", \"Ingresa Dinero\", \"\", 500, 200))\n\n            Dim valorIngresar As Integer = Double.Parse(InputBox(\"Ingrese el valor a Ingresar\", \"Ingresa Dinero\", \"\", 500, 200))\n\n            banco.ingresarDineroCuenta(numeroCuenta, valorIngresar)\n\n        Catch ex As Exception\n            MsgBox(\"Ha ocurrido un error, se ha ingresado un valor incorrecto\")\n        End Try\n\n\n    End Sub\n\n    'Limpia las cajas de texto\n    Public Sub limpiarCajas()\n\n        txtNombres.Clear()\n        txtNumId.Clear()\n        txtDireccion.Clear()\n        txtTelefono.Clear()\n        txtSaldoInicial.Clear()\n\n    End Sub\n\n    Private Sub btnCrearCuenta_Click(sender As Object, e As EventArgs) Handles btnCrearCuenta.Click\n\n        'valida que los campos del formulario no esten vacios\n\n        If txtNombres.Text \u003c\u003e \"\" And txtNumId.Text \u003c\u003e \"\" And txtDireccion.Text \u003c\u003e \"\" And txtTelefono.Text \u003c\u003e \"\" And txtSaldoInicial.Text \u003c\u003e \"\" Then\n\n            'Crea un nuevo cliente con los datos ingresados en el formulario\n            Dim cte As New Cliente(txtNombres.Text, txtNumId.Text, txtDireccion.Text, txtTelefono.Text)\n            'Convierte el saldo inicial a un valor numerico\n            Dim saldoInicial As Double = Double.Parse(txtSaldoInicial.Text)\n            'Crea una cuenta de ahorros con el cliente y el saldo inicial\n            banco.crearCuentaAhorro(cte, saldoInicial)\n            'Limpia las cajas de texto\n            limpiarCajas()\n\n        Else\n            'Muestra un mensaje de error si faltan datos en el formulario\n            MsgBox(\"No se pudo crear la cuenta de ahorros, porque faltaron datos en el formulario\")\n        End If\n\n    End Sub\n\n    Private Sub btnNuevo_Click(sender As Object, e As EventArgs) Handles btnNuevo.Click\n        'Limpia las cajas de texto para manejar un nuevo registro\n        limpiarCajas()\n\n    End Sub\n\n    Private Sub btnRetirarDinero_Click(sender As Object, e As EventArgs) Handles btnRetirardinero.Click\n\n        'Se utiliza un Try Catch para capturar cualquier excepción que se pueda presentar\n        'en el momento de ingresar el número de cuenta y el valor a retirar\n        'Si se presenta una excepción se muestra un mensaje de error\n        'Si no se presenta ninguna excepción se retira el dinero a la cuenta de ahorros\n        'Todo ocurre a traves de un InputBox para capturar la informacion necesaria\n        'Tambien se emplea el metodo Integer.Parse para convertir el valor ingresado a un entero\n\n        Try\n            Dim numeroCuenta As Integer = Integer.Parse(InputBox(\"Ingrese el número de cuenta\", \"Retira Dinero\", \"\", 500, 200))\n\n            Dim valorRetirar As Integer = Double.Parse(InputBox(\"Ingrese el valor a Retirar\", \"Retira Dinero\", \"\", 500, 200))\n\n            banco.retirarDineroCuenta(numeroCuenta, valorRetirar)\n        Catch ex As Exception\n            MsgBox(\"Ha ocurrido un error, se ha ingresado un valor incorrecto\")\n        End Try\n\n    End Sub\n\n    Private Sub btnVerSaldo_Click(sender As Object, e As EventArgs) Handles btnVerSaldo.Click\n\n        'Se utiliza un Try Catch para capturar cualquier excepción que se pueda presentar\n        'en el momento de ingresar el número de cuenta del cliente para consultar su saldo\n        'Si se presenta una excepción se muestra un mensaje de error\n        'Si no se presenta ninguna excepción se muestra  el dinero que hay en la cuenta de ahorros\n        'Todo ocurre a traves de un InputBox para capturar la informacion necesaria\n        'Tambien se emplea el metodo Integer.Parse para convertir el valor ingresado a un entero\n\n        Try\n            Dim numeroCuenta As Integer = Integer.Parse(InputBox(\"Ingrese el número de cuenta\", \"Ver Saldo\", \"\", 500, 200))\n\n            MsgBox(\"Saldo Disponible $\" \u0026 banco.getSaldoCuenta(numeroCuenta))\n        Catch ex As Exception\n            MsgBox(\"Ha ocurrido un error, se ha ingresado un valor incorrecto\")\n        End Try\n\n    End Sub\n\n    Private Sub btnVerTransacciones_Click(sender As Object, e As EventArgs) Handles btnVerdetalletransacciones.Click\n\n        'Se utiliza un Try Catch para capturar cualquier excepción que se pueda presentar\n        'en el momento de ingresar el número de cuenta del cliente para consultar sus transacciones\n        'Se obtiene el indice de la cuenta de ahorros que contiene el historial de ingresos del cliente\n        'La informacion se agrega a la lista liIngresos a traves del metodo Add\n        'Para retiros es el mismo procedimiento y la informacion se muestra en la lista liRetiros\n        'Si se presenta una excepción se muestra un mensaje de error\n        Try\n            Dim numeroCuenta As Integer = Integer.Parse(InputBox(\"Ingrese el número de cuenta\", \"Ver Historial\", \"\", 500, 200))\n\n            Dim ingresosCuenta As List(Of String) = banco.getCuentaAhorro(numeroCuenta).ListaHistorialIngresos\n\n            For i = 0 To ingresosCuenta.Count - 1 Step 1\n\n                liIngresos.Items.Add(ingresosCuenta.Item(i))\n            Next\n\n            Dim retirosCuenta As List(Of String) = banco.getCuentaAhorro(numeroCuenta).ListaHistorialRetiros\n\n            For i = 0 To retirosCuenta.Count - 1 Step 1\n\n                liRetiros.Items.Add(retirosCuenta.Item(i))\n            Next\n        Catch ex As Exception\n            MsgBox(\"Ha ocurrido un error, se ha ingresado un valor incorrecto\")\n        End Try\n\n    End Sub\n\n    Public Class Cliente\n\n    'Atributos de la Clase Cliente\n\n    Private nombre As String\n    Private numIdentificacion As String\n    Private direccion As String\n    Private telefono As String\n\n    'Constructor por defecto\n    Public Sub New()\n\n    End Sub\n\n    Public Sub New(ByVal nom As String, ByVal numId As String, ByVal dire As String, ByVal tel As String)\n\n        nombre = nom\n        numIdentificacion = numId\n        direccion = dire\n        telefono = tel\n\n    End Sub\n\n    Public Property NombreCliente As String\n\n        Get\n            Return nombre\n        End Get\n        Set(ByVal value As String)\n            nombre = value\n        End Set\n    End Property\n\n    Public Property NumIdCliente As String\n\n        Get\n            Return numIdentificacion\n        End Get\n        Set(ByVal value As String)\n            numIdentificacion = value\n        End Set\n    End Property\n\n    Public Property DireccionCliente As String\n        Get\n            Return direccion\n        End Get\n        Set(ByVal value As String)\n            direccion = value\n        End Set\n    End Property\n\n    Public Property TelefonoCliente As String\n        Get\n            Return telefono\n        End Get\n        Set(ByVal value As String)\n            telefono = value\n        End Set\n    End Property\n\nEnd Class\n\nPublic Class Banco\n\n    'Atributos de la Clase Banco\n    Private numSucursal As Integer\n    Private nombreBanco As String\n    Private cuentasAhorros As List(Of CuentaAhorro)\n\n\n    'Constructor de la Clase Banco\n\n    Public Sub New(ByVal numS As Integer, ByVal nomBanco As String)\n\n        numSucursal = numS\n        nombreBanco = nomBanco\n        cuentasAhorros = New List(Of CuentaAhorro)\n\n    End Sub\n\n    Public ReadOnly Property NumeroSucursal As Integer\n        'Propiedad de Solo Lectura para el metodo Get\n        Get\n            Return numSucursal\n        End Get\n    End Property\n\n    Public ReadOnly Property Nombre_Banco As String\n        'Propiedad de Solo Lectura para el metodo Get\n        Get\n            Return nombreBanco\n        End Get\n    End Property\n\n    'Metodo para crear una cuenta de ahorros, pero antes verifica que el cliente no tenga una cuenta de ahorros ya creada\n\n    Public Sub crearCuentaAhorro(ByVal cte As Cliente, ByVal saldoInicial As Double)\n\n        Dim existe As Boolean = False\n\n        'Verifica que el cliente no tenga una cuenta de ahorros ya creada\n        For i = 0 To cuentasAhorros.Count - 1 Step 1\n\n            Dim clienteLista As Cliente = cuentasAhorros.Item(i).ClienteCuentaAhorros\n\n            If clienteLista.NumIdCliente.Equals(cte.NumIdCliente) Then\n                existe = True\n                Exit For\n            End If\n        Next\n\n        If existe = False Then\n\n            Dim cuentaAhorros As New CuentaAhorro(cte, saldoInicial)\n\n            cuentasAhorros.Add(cuentaAhorros)\n\n            MsgBox(\"Cuenta de Ahorros creada Correctamente\")\n        End If\n    End Sub\n\n    'Método que permite obtener el indice del objeto CuentaAhorro, de acuerdo al número de cuenta pasado por parámetro\n    Public Function getIndiceCuenta(ByVal numCuenta) As Integer\n\n        Dim indice As Integer = -1\n\n        'Busca el indice del numCuenta pasado por parámetro en el atributo lista de la clase Banco\n        For i = 0 To cuentasAhorros.Count - 1 Step 1\n\n            Dim cuentaLista As CuentaAhorro = cuentasAhorros.Item(i)\n\n            If cuentaLista.NumCuentaahorros = numCuenta Then\n\n                indice = i\n                Exit For\n            End If\n        Next\n\n        Return indice\n\n    End Function\n\n    'Método que permite obtener una cuenta de ahorros especifica\n    Public Function getCuentaAhorro(ByVal numCuenta As Integer) As CuentaAhorro\n\n        Return cuentasAhorros.Item(getIndiceCuenta(numCuenta))\n    End Function\n\n    'Método que permite ingresar dinero a la cuenta de ahorros de un cliente teniendo en cuenta su número de cuenta\n    Public Sub ingresarDineroCuenta(ByVal numCuenta As Integer, ByVal ingresar As Double)\n\n        Dim indice As Integer = getIndiceCuenta(numCuenta)\n\n        cuentasAhorros.Item(indice).IngresarDinero(ingresar)\n\n    End Sub\n\n    'Método que permite retirar dinero de la cuenta de ahorros de un cliente teniendo en cuenta su número de cuenta\n    Public Sub retirarDineroCuenta(ByVal numCuenta As Integer, ByVal retirar As Double)\n\n        Dim indice As Integer = getIndiceCuenta(numCuenta)\n\n        cuentasAhorros.Item(indice).RetirarDinero(retirar)\n\n    End Sub\n\n    'Método que permite obtener el saldo disponible de la cuenta de ahorros de un cliente teniendo en cuenta su número de cuenta\n    Public Function getSaldoCuenta(ByVal numCuenta As Integer)\n\n        Dim indice As Integer = getIndiceCuenta(numCuenta)\n\n        Return cuentasAhorros.Item(indice).getSaldoCuenta()\n\n    End Function\n\nEnd Class\n\nImports System.CodeDom\nImports System.Runtime.InteropServices\n\nPublic Class CuentaAhorro\n\n    'Atributos de la Clase CuentaAhorro\n\n    Private numCuenta As Integer\n    Private cliente As Cliente\n    Private saldoCuenta As Double\n    Private historialIngresos As List(Of String)\n    Private historialRetiros As List(Of String)\n    Private Shared contadorNumCuenta As Integer = 1\n\n    'Constructor de la Clase CuentaAhorro\n\n    Public Sub New(ByVal cte As Cliente, ByVal saldoInicial As Double)\n\n        numCuenta = contadorNumCuenta\n        cliente = cte\n        historialIngresos = New List(Of String)\n        historialRetiros = New List(Of String)\n\n        If saldoInicial \u003e 0 Then\n            saldoCuenta = saldoInicial\n\n        Else\n            saldoCuenta = 0\n\n        End If\n\n        contadorNumCuenta += 1\n\n    End Sub\n\n    Public ReadOnly Property NumCuentaahorros As Integer\n        'Propiedad de Solo Lectura para el metodo Get\n        Get\n            Return numCuenta\n        End Get\n    End Property\n\n    Public Property ClienteCuentaAhorros As Cliente\n        'Devuelve o establece al cliente de la cuenta de ahorros\n        Get\n            Return cliente\n        End Get\n\n        Set(ByVal value As Cliente)\n            cliente = value\n        End Set\n    End Property\n\n    Public ReadOnly Property ListaHistorialIngresos As List(Of String)\n        'Propiedad de Solo Lectura para el metodo Get\n        Get\n            Return historialIngresos\n        End Get\n    End Property\n\n    Public ReadOnly Property ListaHistorialRetiros As List(Of String)\n        'Propiedad de Solo Lectura para el metodo Get\n        Get\n            Return historialRetiros\n        End Get\n    End Property\n\n    Public Function getSaldoCuenta() As Double\n        'Devuelve el saldo de la cuenta de ahorros\n        Return saldoCuenta\n    End Function\n\n    Public Sub IngresarDinero(ByVal ingresar As Double)\n        If ingresar \u003e 0 Then\n            'Metodo Ingresar Dinero a la Cuenta de Ahorros y manejo del historial de ingresos\n            saldoCuenta += ingresar\n            MsgBox(\"Los $\" \u0026 ingresar \u0026 \" fueron agregados al saldo de la cuenta correctamente\")\n            MsgBox(\"Su nuevo saldo es $\" \u0026 saldoCuenta)\n\n            historialIngresos.Add(\"Valor Ingresado: $\" \u0026 ingresar \u0026 \" Fecha Transaccion: \" \u0026 Date.Now.ToString)\n\n        Else\n            MsgBox(\"No puede ingresar un valor menor o igual a 0\")\n        End If\n    End Sub\n\n    Public Sub RetirarDinero(ByVal retirar As Double)\n        'Metodo Retirar Dinero a la Cuenta de Ahorros y manejo del historial de egresos\n        If retirar \u003c= saldoCuenta Then\n\n            saldoCuenta -= retirar\n            MsgBox(\"Los $\" \u0026 retirar \u0026 \" fueron retirados de la cuenta correctamente\")\n            MsgBox(\"Su nuevo saldo es $\" \u0026 saldoCuenta)\n\n            historialRetiros.Add(\"Valor Retirado: $\" \u0026 retirar \u0026 \" Fecha Transaccion: \" \u0026 Date.Now.ToString)\n\n        Else\n            MsgBox(\"No puede retirar un valor menor o igual a 0\")\n        End If\n    End Sub\n\nEnd Class\n\n\nEnd Class\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozzies-code%2Fcuentasahorro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fozzies-code%2Fcuentasahorro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozzies-code%2Fcuentasahorro/lists"}