Post on 29-Sep-2018
PROYECTO TERMINAL
APLICACIONES DE LA METODOLOGIA UMLA UN CASO PRACTICO
ASESOR: LUIS FERNANDO CASTRO CAREAGA
ALUMNA: ROSA MA. RODRÍGUEZ AGUILAR
LICENCIATURA: COMPUTACIÓN
MATRICULA: 90226236
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________1
ÍNDICE
ÍNDICE............................................................................................................................. 1
ADMINISTRACIÓN DEL PROYECTO............................................................................ 5
INTRODUCCIÓN ............................................................................................................ 6
ADMINISTRACIÓN DEL PROYECTO ...................................................................... 7
PLAN DE DESARROLLO .................................................................................... 7
LISTA DE RIESGOS ............................................................................................ 10
PLAN DE MEDICIONES ....................................................................................... 11
DEFINICIÓN DE REQUERIMIENTOS ........................................................................... 12
DEFINICIÓN DEL PROBLEMA ...................................................................................... 13
LISTA DE CARACTERÍSTICAS DESEADAS ................................................................ 14
DIAGRAMA GENERAL DE CASOS DE USO ................................................................ 15
PROTOTIPO ................................................................................................................... 16
DETALLE DE CASOS DE USO ..................................................................................... 24
Caso de uso: Acceder al sistema ......................................................................... 24
Caso de uso: Mantenimiento de artículos ........................................................... 25
Caso de uso: Alta de artículos ............................................................................. 26
Caso de uso: Actualizar artículos ......................................................................... 27
Caso de uso: Baja artículo .................................................................................... 29
Caso de uso: Registrar préstamo ......................................................................... 30
Caso de uso: Devolución ...................................................................................... 31
Caso de uso: Ampliar tiempo de préstamo ........................................................... 33
Caso de uso: Mantenimiento de amigos .............................................................. 34
Caso de uso: Alta de amigos ................................................................................ 35
Caso de uso: Actualizar amigos ........................................................................... 36
Caso de uso: Baja de amigos ............................................................................... 38
Caso de uso: Lista de artículos prestados ............................................................ 39
Caso de uso: Lista de amigos morosos ................................................................ 41
Casos de uso: Salir del Sistema ........................................................................... 41
REQUISITOS NO FUNCIONALES ................................................................................. 42
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________2
GLOSARIO DE TÉRMINOS ........................................................................................... 43
PLAN DE PRUEBAS ...................................................................................................... 44
ADMINISTRACIÓN DE LA CONFIGURACIÓN ............................................................. 46
ADMINISTRACIÓN DE LA CONFIGURACIÓN ......................................................... 47
ELEMENTOS DE LA CONFIGURACIÓN A RESGUARDAR .................................... 48
CREACIÓN DEL DEPÓSITO DEL PROYECTO ....................................................... 49
PLAN DE CONFIGURACIÓN .................................................................................... 49
MECANISMOS DE NOMBRADO .............................................................................. 49
DEFINICIÓN DE LÍNEA BASE .................................................................................. 49
SOLICITUD DE CAMBIOS Y SUS PROCEDIMIENTOS .......................................... 50
DISEÑO .......................................................................................................................... 52
DISEÑO ..................................................................................................................... 53
DESCRIPCIÓN DE LA ARQUITECTURA ................................................................. 53
Patrón de arquitectura .......................................................................................... 53
Patrón para aplicaciones Web
...............................................................................
55
DIAGRAMA DE INSTALACIÓN ................................................................................. 55
DIAGRMA DE PAQUETES ....................................................................................... 56
DIAGRAMA DE COMPONENTES ............................................................................ 57
DISEÑO DETALLADO ................................................................................................... 58
DISEÑO DETALLADO ............................................................................................... 59
DIAGRAMA DE CLASES DE DISEÑO ...................................................................... 59
INTERFAZ ................................................................................................................. 59
DOMINIO DEL PROBLE MA ..................................................................................... 60
MODELO DE DATOS ................................................................................................ 62
DISEÑO DE LA BASES DE DATOS ......................................................................... 64
DIAGRAMAS DE SECUENCIA ................................................................................. 65
Acceder al sistema OK ........................................................................................ 65
Acceder al sistema ERROR
..................................................................................
66
Mantenimiento de artículos ................................................................................... 67
Alta de artículos OK (Cuaderno) ........................................................................... 67
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________3
Alta de artículos ERROR (Cuaderno) ................................................................... 67
Actualización de artículos OK (Cuaderno) ............................................................ 68
Actualización de artículos ERROR (Cuaderno) .................................................... 69
Baja de artículos OK (Cuaderno) .......................................................................... 69
Baja de artículos ERROR (Cuaderno) .................................................................. 70
Alta de artículo OK (CdMúsica) ............................................................................ 70
Alta de artículo ERROR (CdMúsica) .................................................................... 71
Actualización de artículos OK (CdMúsica) ........................................................... 71
Actualización de artículos ERROR (CdMúsica) .................................................... 72
Baja de Artículos OK (CdMúsica) ........................................................................ 73
Baja de artículos ERROR (CdMúsica) ................................................................. 73
Alta de artículos OK (Libro) .................................................................................. 74
Alta de artículos ERROR(Libro) ............................................................................ 74
Actualización de artículos OK (Libro) .................................................................. 75
Actualización de artículos ERROR (Libro) ........................................................... 76
Baja de artículos OK (Libro) ................................................................................ 76
Baja de artículos ERROR (Libro) .......................................................................... 77
Actualización de artículos ERROR (Cualquier tipo) ............................................. 77
Registro de préstamos OK ................................................................................... 78
Registro de préstamos ERROR ............................................................................ 79
Registro de préstamo (Nuevo amigo) ................................................................... 79
Registro de préstamo (Nuevo artículo) ................................................................ 80
Devolución OK ..................................................................................................... 81
Devolución ERROR ............................................................................................ 81
Ampliar tiempo de préstamo OK .......................................................................... 82
Ampliar tiempo de préstamo ERROR (Datos ya extraídos)
..................................
83
Ampliar tiempo de préstamo ERROR (Datos sin extraer) .................................... 84
Mantenimiento de amigos ..................................................................................... 85
Alta de amigos OK ................................................................................................ 85
Alta de amigos ERROR ........................................................................................ 85
Actualización de amigo OK ................................................................................... 86
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________4
Actualización de amigo ERROR (Datos ya extraídos)
..........................................
87
Actualización de amigo ERROR (Datos sin extraer) ............................................ 88
Baja de amigo OK ................................................................................................ 89
Baja de amigo ERROR ........................................................................................ 90
Lista de artículos prestados ................................................................................. 90
Lista de amigos morosos ...................................................................................... 91
Salir ....................................................................................................................... 91
DIAGRAMA DE ESTADOS ....................................................................................... 92
DIAGRAMA DE COMPONENTES ............................................................................ 95
ACTUALIZACIÓN DE LA PLANEACIÓN .................................................................. 96
IMPLEMENTACIÓN ....................................................................................................... 98
IMPLEMENTACIÓN .................................................................................................. 98
CLASES ..................................................................................................................... 99
PLAN DE PRUEBAS UNITARIAS Y SU EJECUCIÓN .............................................. 153
PLAN DE PRUEBAS DE INTEGRACIÓN ................................................................. 160
PLAN DE PRUEBAS DE COMPONENTES............................................................... 170
CONCLUSIONES ...................................................................................................... 179
REFERENCIAS BIBLIOGRAFICAS .......................................................................... 180
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________5
SISTEMA DE PRÉSTAMOSPERSONALES
ADMINISTRACIÓN DEL PROYECTO
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________6
INTRODUCCIÓN
El objetivo de este Proyecto terminal es observar la importancia que tiene el Proceso
Unificado en el desarrollo de algún producto de software, además de aprender cuales son
las metodologías necesarias para su culminación.
Por lo tanto veremos que el Proceso Unificado describe un conjunto de actividades que
deben realizarse en un determinado orden y nos indican qué hacer, cómo hacerlo, cuando
hacerlo y el motivo por el cual debe ser hecho.
En este proceso es preciso diferenciar cuales son las fases de las que esta compuesto
para poder ver la iniciación y terminación de cada uno de ellas.
El Proceso Unificado propone una serie de ciclos de desarrollo, en donde hay que separar
claramente la etapa de Ingeniería de la etapa de Producción, de los cuales cada uno de
ellos se divide en fases y las fases se dividen en iteraciones.
Los objetivos de las fases son:
• Inicio del proyecto: donde es necesario definir el objetivo del proyecto;
• Elaboración: donde se define la funcionalidad y una arquitectura básica.
• Construcción: en esta parte el producto se desarrolla a través de iteraciones.
• Transición: es donde se librera el producto y se entrega al usuario para uso real.
La división temporal necesita puntos de control o hitos que separen las etapas, las fases,
las iteraciones en los flujos de trabajo, organizando las actividades fundamentales de
gestión y desarrollo, donde estas pueden ir solapadas unas con otras no necesariamente
secuenciales, y de hecho no son actividades secuenciales sino concurrentes. El resultado
de las actividades de los flujos de trabajo son los productos (también conocidos como
artefactos), en donde también son incluidos los diagramas de UML, el código, ejecutables,
etc. Esto se va haciendo de manera incremental.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________7
ADMINISTRACIÓN DEL PROYECTO
PLAN DE DESARROLLO
El objetivo de este proyecto es aprender el Proceso Unificado a lo largo deldesarrollo de un producto de software.
La estrategia que se seguirá para este desarrollo estará basada precisamente en elProceso Unificado (PU), que plantea 4 fases:Inicio, Elaboración, Construcción y Transición.
Estas fases, tienen flujos de trabajo que por el proceso de aprendizaje que se estarásiguiendo, se trabajarán de manera secuencial, aunque se pueden hacer iteraciones delos flujos anteriores al que estaremos aprendiendo en un momento dado.
Los flujos de trabajo que estudiaremos y trataremos de implementar son:
Administración del proyectoDefinición de requerimientosAdministración de la configuraciónAnálisisDiseñoImplementaciónPruebas
Las tareas a realizar y las fechas de entrega de cada flujo de trabajo son:
Administración del proyecto.Productos: Entrega 17 de marzo
• Plan de desarrollo• Lista de riesgos• Plan de mediciones
Definición de requerimientos.Productos:
• Definición del problema• Diagrama general de casos de uso• Prototipo
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________8
Productos: Entrega 31 de marzo• Detalle de casos de uso• Requerimientos no funcionales• Glosario de términos• Plan de prueba del sistema
Administración de configuraciónProductos: Entrega 19 de marzo
• Elementos de la configuración a resguardar• Creación del depósito del proyecto• Plan de configuración
AnálisisProductos: Entrega 7 de abril
• Diagramas de clases del análisis• Modelo de la arquitectura del análisis
DiseñoProductos: Entrega 30 de abril
• Descripción de la arquitectura del diseño• Diagramas de paquetes• Diagrama de instalación
Productos: Entrega 12 de mayo• Diagrama de clases del diseño• Diseño de la base de datos• Diagramas de secuencia
ImplementaciónProductos: Entrega 26 de mayo
• Construcción de la interfaz• Código de clases• Plan de pruebas unitarias• Ejecución de pruebas unitarias
PruebasProductos: Entrega 4 de junio
• Plan de pruebas de integración• Plan de pruebas de componentes• Plan de pruebas del sistema
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________9
*Con la utilización de Microsoft Project podemos observar la planeación como sigue:
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________10
LISTA DE RIESGOS
A continuación se muestra una tabla con los riesgos considerados para este proyecto:
Riesgo Prob de Ocurr Indicador Plan de ContingenciaNo sé programar enJava.
1 Alto Estudio del lenguaje por miparte y la asistencia al tallerde Java.
Falta de conocimientoen el desarrollo deaplicaciones contecnología web.
1 Alto Estudio del lenguaje por miparte y la asistencia al tallerde Java.
Conseguir el manejadorde bases de datos paralas máquinas depruebas
1 Alto Preparación previa de lasmáquinas de prueba con elsoftware necesario.
La sincronización entrelas materiasinvolucradas en elproyecto
0.5 Significativo Comunicación entre losinvolucrados; y mutuoconocimiento del plan.
Conclusión de losproductos en la fechasposteriores a lasestablecidas en el plan
0.4 Moderado Establecer un ritmo detrabajo constante, apegadoal plan y coordinado con laprofesora y mi par.
Contar con el RationalRose en las máquinasde la escuela.
0.5 Moderado Revisión de las máquinas enlos laboratorios.
Conocimientos de otraherramienta paradocumentar (Poseidon)
0.5 Moderado Trabajar con estaherramienta desde el iniciodel proyecto.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________11
PLAN DE MEDICIONES
Como se comentó anteriormente, este proyecto se desarrollará tomando comobase el Proceso Unificado que plantea 4 fases, mismas que cuentan con los siguientesindicadores de su seguimiento:
1) Fase de Inicio.Indicador: Identificar los objetivos del producto a desarrollar.
2) Fase de Elaboración.Indicador: Definición de la arquitectura del producto
3) Fase de Construcción.Indicador: Producto terminado en versión beta.
4) Fase de Transición.Indicador: Liberación del producto al cliente y entrega a revisión por la maestra.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________12
SISTEMA PARA BIBLIOTECA
DEFINICIÓN DE REQUERIMIENTOS
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________13
DEFINICIÓN DE REQUERIMIENTOS
DEFINICIÓN DEL PROBLEMA
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”
Objetivo del sistema:
Este sistema se construirá para apoyar a un compañero en su control del préstamode artículos personales a sus amigos. El compañero tiene algunos objetos personales quepuede prestar como cd’s musicales, libros y cuadernos.Así mismo se contará con un registro de los datos de sus amigos, tales como nombre,dirección, teléfono y correo electrónico.Entonces, cuando lleve a cabo un préstamo, hará un registro del objeto, amigo y tiempoinvolucrados. Y cuando recupere este objeto podrá procesarse su devolución.Pero habrá otra forma que tendrá para modificar la información de los préstamos y estaserá el ampliar el tiempo de préstamo para los objetos personales ya prestados.
Además podrá llevar a cabo consultas tales como la obtención de una lista de los objetosprestados en ese momento y que amigo los tienen.Y el sistema también podrá proporcionar una lista de amigos morosos en regresar losobjetos que se le han prestado, de tal forma que le sirva como herramienta para poderpedir los objetos cuyo plazo de préstamo ha vencido.
Es necesario mencionar también que el compañero podrá acceder al sistema por la reddesde cualquier máquina disponible que tenga conexión a internet; siendo él, el únicohabilitado para entrar al sistema.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________14
LISTA DE CARACTERÍSTICAS DESEADAS
A continuación se presentarán las características con las que el sistema debería contar:
1. Se debe poder acceder a través de internet.2. El acceso al sistema será a través de claves que permitan conservar la seguridad
e integridad de la información.3. El registro de los préstamos debe involucrar toda la información suficiente y
necesaria.4. Dentro del registro del préstamo debe ser sencillo la introducción del amigo y del
artículo involucrados.5. Los reportes deben proporcionar la información que el usuario necesita de acuerdo
a la lista requerida.6. El sistema permitirá al usuario actualizar sus registros de préstamo al marcarlo
como artículo devuelto.7. También deberá estar permitido al usuario ampliar la fecha de préstamo.8. Se podrán realizar registros de préstamos de objetos personales tales como cd’s
musicales, libros y cuadernos.9. El sistema deberá contar con datos correspondientes a los amigos, tales como
nombre, dirección, teléfono y correo electrónico.10. Se podrá obtener una lista de los amigos morosos en regresar los objetos
prestados, para poder pedírselos.11. Y también podrá generarse una lista de las cosas que tiene prestadas y a quien.12. Las pantallas que contendrá el sistema deberán ser claras, amigables y útiles para
apoyar al usuario a cumplir con sus objetivos.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________15
DIAGRAMA GENERAL DE CASOS DE USO
Como es sabido a continuación se mostrarán los casos de uso generales que estaráncontemplados dentro de este sistema.
Accesar al sistema Mantenimiento de artículosMantenimiento de amigos
Registrar préstamo
Devolución
Ampliar tiempo de préstamos
Lista de artículos prestadosLista de amigos morosos
Propietario
Salir del s istema
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________16
PROTOTIPO
Ingresar Al Sistema
Pantalla principal, donde en todo momento se tendrán presentes los préstamos quese tienen actualmente.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________17
Registro de préstamo
Devolución
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________18
Ampliación de tiempo de préstamo
Cambio en la fecha de devolución
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________19
Mantenimiento de artículosAlta de artículos
Baja de artículos
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________20
Actualización de artículos
Cambios en los valores de los artículos
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________21
Mantenimiento de amigosAlta de amigos
Baja de amigos
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________22
Cambios en los campos amigos
Actualización de amigos
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________23
Lista de artículos prestados
Lista de amigos morosos
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________24
DETALLE DE CASOS DE USO
Caso de uso : Accesar al sistema
Actor : Propietario
Descripción : El propietario debe teclear su clave de acceso para poder entrar al sistemay hacer uso del él.
Precondiciones:• El propietario accesa a la página del sistema.• El usuario necesita registrar algún préstamo, consultar las listas, actualizar el
catálogo de artículos, actualizar el catálogo de amigos o hacer una devolución.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Entra a la página del sistema 2 Despliega la interface para laintroducción de la clave deacceso
3 Teclea su clave de acceso E24 Elige la opción enviar 5 Valida la clave de acceso E1, E2
6 Muestra la interface principal delsistema que incluye el menú detrabajo
Excepciones :
Id Nombre AcciónE1 Clave de acceso incorrecta (clave no
existente o nula)El sistema informa el error en la clave ypermite nuevamente su introducción
E2 Cancelación del acceso al sistema El usuario cambia de página y no entra alsistema
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________25
Poscondiciones:• El usuario está ya logeado en el sistema.• El sistema se ha posicionado en la pantalla principal del sistema, donde se
muestran al propietario los préstamos que tiene actualmente.
Caso de Uso : Mantenimiento de artículos
Actor : Propietario
Propietario
Alta de artículos Actualización de artículos
Mantenimiento de artículos
<<include>><<include>>
Baja de artículos
<<include>>
Descripción : El propietario puede llevar a cabo la actualización de su catálogo deartículos, operación que incluye las acciones de agregar artículo, modificarlo y eliminarlo.
Precondición :
• El propietario desea llevar a cabo un préstamo de un artículo aún no dado de altoen el sistema.
• Necesita modificar o corregir los datos asociados a algún artículo.• Tiene un artículo que ya no va a prestar y necesita darlo de baja para ya no
incluirlo en algún préstamo.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________26
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Para llevar a cabo algunaoperación de actualización alcatálogo, el usuarioselecciona alguna de lasopciones : “Alta de artículos”,“Actualización de artículos” o“Baja de artículos” en elmenú principal.
2 El sistema despliega la interfacecorrespondiente a la opciónseleccionada
A continuación de esto último se realiza la transacción correspondiente; cuyos pasos estarándescritos en los casos de uso incluidos dentro de éste.
Postcondiciones :• El catálogo de artículos coincide con los artículos que posee el propietario.
Caso de Uso : Alta de artículos
Actor : Propietario
PropietarioAlta de artículos
Descripción : El propietario va actualizar su catálogo de artículos, y lo hará al agregar unomás.Con esto estará dando de alta un nuevo artículo que podrá prestar más adelante.
Precondiciones:• El propietario ha adquirido un nuevo artículo y desea agregarlo a su catálogo de
artículos en el sistema.• Ó el propietario desea prestar un artículo que aún no ha dado de alta en el
sistema.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________27
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Elige el tipo de artículo queestá agregando
E1
2 Teclea el nombre del artículoque dará de alta
3 De acuerdo al tipo de artículo, sedespliegan los campos que sedeben llenar
E1
4 Se llenan los camposcorrespondientes a lascaracterísticas del artículo
E1
5 Se da clic al botón de“Guardar”
6 El sistema almacena el nuevoarticulo
7 Se regresa nuevamente a lainterfaz principal
Excepciones:
Id Nombre AcciónE1 Cancelación de la transacción, cuando
el propietario da clic en CancelarEl sistema se posiciona nuevamente en lapantalla principal
Poscondiciones:• El propietario ahora tiene un artículo más en su inventario; y este artículo está
disponible para ser prestado.
Caso de Uso : Actualización de artículos
Actor : Propietario
PropietarioActualización de artículos
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________28
Descripción : El propietario va actualizar su catálogo de artículos, y lo hará modificandolas características de sus artículos en el sistema. Y estos cambios vendrán dados porcambios reales en los artículos.
Precondiciones:• Algunas características de un artículo pudo haber cambiado, por su uso o por
errores en el alta del artículo.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Muestra una lista en la pantallacon todos los artículosregistrados
E1
2 Selecciona el artículo amodificar
E1
3 Da clic al botón Actualizar 4 El sistema se posiciona en lainterfaz donde presenta lascaracterísticas del artículoseleccionado.
E1
5 Modifica las característicasnecesarias y permitidas.
E2
6 Da clic en la opción Guardar 7 Almacena los cambios hechos alartículo.
Excepciones:
Id Nombre AcciónE1 Cancelación de transacción, cuando el
propietario da clic en CancelarEl sistema se posiciona nuevamente en lapantalla principal
E2 Cancelación de transacción, cuando elpropietario da clic en Cancelar
El sistema se posiciona nuevamente en lapantalla donde se despliegan todos losartículos
Poscondiciones:• El artículo quedó almacenado en el sistema con los cambios hechos a sus
características.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________29
Caso de Uso : Baja de artículos
Actor : Propietario
PropietarioBaja de artículos
Descripción : El propietario va actualizar su catálogo de artículos, y lo hará al dar de bajaalguno de ellos.Esto querrá decir, que ya no tendrá disponible ese artículo personal para prestarlo.
Precondiciones:• El propietario ya no puede o quiere tener un artículo disponible para su préstamo.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Muestra una lista en la pantallacon todos los artículosregistrados
E1
2 Selecciona el artículo aeliminar
E1
3 Da clic al botón Eliminar 4 El sistema elimina el artículo delsistema.
Excepciones:
Id Nombre AcciónE1 Cancelación de transacción, cuando el
propietario da clic en CancelarEl sistema se posiciona nuevamente en lapantalla principal
Poscondiciones:• El artículo quedó eliminado del sistema, por lo que ahora no es posible llevar a
cabo el registro de préstamos para ese artículo.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________30
Caso de Uso : Registrar préstamo
Actor : Propietario
Propietario Alta de amigosRegistrar préstamo
Alta de artículos
<<include>>
<<include>>
Descripción : El propietario realiza el préstamo de un artículo personal y debe realizar elregistro del préstamo en el sistema. Si el artículo en cuestión, no está dado de alta en elsistema, entonces podrá darlo de alta “al vuelo”.Si el amigo al que se le hace el préstamo no está dado de alta en el sistema, entoncespodrá darlo de alta “al vuelo”.
Precondiciones:• El propietario realiza un préstamo, y necesita registrarlo en el sistema.• El propietario elige la opción “Registrar préstamo” en el menú principal.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 El usuario elige la opción“Registrar préstamo” en elmenú principal
2 El sistema muestra la interfazcorrespondiente al registro delpréstamo
3 Elige el artículo involucradoen el préstamo
E1, E3
4 Elige el amigo al que se lehace el préstamo.
E2, E3
5 Determina la fecha dedevolución del artículopersonal en cuestión.
E3
6 Elige la opción guardar 7 El sistema registra el nuevopréstamo
E3
8 Se posiciona nuevamente en lainterfaz principal
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________31
Excepciones:
Id Nombre AcciónE1 El artículo que se presta no
está dado de alta en elsistema
• El usuario selecciona el campo check para indicarque es un “Nuevo artículo”.
• El sistema se posiciona en la pantalla de alta deartículos personales.
• Se da de alta el nuevo artículo.• El sistema regresa a la interfaz de registro de
préstamo con el nuevo artículo seleccionado.E2 El amigo al que se le hace
el préstamo no está dadode alta en el sistema.
• El usuario selecciona el campo check para indicarque es un “Nuevo amigo”.
• El sistema se posiciona en la pantalla de alta deamigos.
• Se da de alta el nuevo amigo.• El sistema regresa a la interfaz de registro de
préstamo con el nuevo amigo seleccionado.E3 Cancelación de
transacción, cuando elpropietario da clic enCancelar
El sistema se posiciona nuevamente en la pantallaprincipal
Poscondiciones:• El préstamo queda registrado en el sistema.• Queda registrado el artículo, si no estaba dado de alta el artículo personal.• Queda registrado el nuevo amigo, si no estaba dado de alta en el sistema.
Caso de Uso : Devolución
Actor : Propietario
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________32
Descripción : Un artículo personal le es devuelto al propietario; por lo tanto, esto debequedar registrado en el sistema para poder prestarlo nuevamente.
Precondiciones:• Que el artículo esté dado de alta en el sistema.• Que el préstamo del artículo personal haya quedado registrado.• Que el artículo le sea devuelto.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 El usuario elige la opción“Devolución” en el menúprincipal
2 El sistema muestra la interfazcorrespondiente a la devolución,donde se muestran los préstamosactuales.
3 Selecciona el préstamocorrespondiente a ladevolución (artículo y amigo)
E1
4 Elige la opción “Guardarcambios”
5 Actualiza el préstamo,asignándole el estatus dedevuelto
6 Asigna el estatus de devuelto alartículo
7 El sistema regresa a la interfaz dedevolución.
Excepciones:
Id Nombre AcciónE1 Cancelación de transacción,
cuando el propietario da clic enCancelar
El sistema se posiciona nuevamente en la pantallaprincipal
Poscondiciones:• El préstamo queda con status de devuelto.• El artículo queda con status de devuelto por lo que ya es posible volverlo a prestar.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________33
Caso de Uso : Ampliar tiempo de préstamos
Actor : Propietario
Descripción : El amigo al que se le hizo un préstamo solicitó una prórroga debido a queaún está utilizando el artículo que se le prestó.Si el propietario acepta entonces debe cambiar la fecha de devolución en el sistema.
Precondiciones:• Que el amigo involucrado en el préstamo solicite una prórroga.• Que el préstamo del artículo personal esté registrado.• Que el propietario acepte el cambio en la fecha de devolución.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 El usuario elige la opción“Ampliar tiempo depréstamos” en el menúprincipal
2 El sistema muestra la interfaz de“Devolución” donde muestra lalista de los préstamos actuales.
3 Selecciona el préstamocorrespondiente a ladevolución (artículo y amigo)
E1
4 Elige la opción “Ampliartiempo”
5 Se posiciona en la interfaz decambio de fecha de devolución.(Muestra los datos generales)
6 Cambia la fecha dedevolución
E2
7 Da clic al botón “Guardar” 8 Almacena el cambio en la fechade devolución
9 Se posiciona nuevamente en lainterfaz de “Devolución”.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________34
Excepciones:
Id Nombre AcciónE1 Cancelación de transacción,
cuando el propietario da clic enCancelar sin modificar fechas.
El sistema se posiciona nuevamente en la pantallaprincipal.
E2 Cancelación de transacción,cuando el propietario da clic enCancelar sin cambiar la fechade devolución a un préstamo.
El sistema se posiciona nuevamente en la pantalla dedespliegue de préstamos.
Poscondiciones:• El préstamo queda con la fecha de devolución modificada.• Si la fecha de devolución había vencido, ahora el amigo no aparecerá en la lista de
morosos (por lo menos si sólo tenía prestado el artículo involucrado).
Caso de Uso : Mantenimiento de amigos
Actor : Propietario
Propietario
Alta de amigos Actualización de amigos
Mantenimiento de amigos
Baja de amigos
<<include>>
<<include>>
<<include>>
Descripción : El propietario puede llevar a cabo la actualización de su catálogo deamigos, operación que incluye las acciones de agregar amigo, modificarlo y eliminarlo.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________35
Precondición :
• El propietario desea llevar a cabo un préstamo de un artículo a un amigo aún nodado de alto en el sistema.
• Necesita modificar o corregir los datos asociados a un amigo.• Tiene un amigo al que ya no se le harán préstamos.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Para llevar a cabo algunaoperación de actualización alcatálogo, el propietarioselecciona alguna de lasopciones : “Alta de amigos”,“Actualización de amigos” o“Baja de amigos” en el menúprincipal.
2 El sistema despliega la interfacecorrespondiente a la opciónseleccionada.
A continuación de esto último, se realiza la transacción correspondiente; cuyos pasos estarándescritos en los casos de uso incluidos dentro de éste.
Postcondiciones :• El catálogo de amigos coincide con los amigos que tiene el propietario, y que les
puede prestar artículos.
Caso de Uso : Alta de amigos
Actor : Propietario
PropietarioAlta de amigos
Descripción : El propietario va actualizar su catálogo de amigos, y lo hará agregando unomás.Con esto estará dando de alta un nuevo amigo al que se le podrán hacer préstamos másadelante.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________36
Precondiciones:• El propietario tiene un nuevo “amigo” al que le hará préstamos más adelante .• Ó el propietario desea prestar un artículo a un amigo que aún no ha dado de alta
en el sistema.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Teclea los datos del amigoque dará de alta
E1
2 Da clic al botón de “Guardar” 3 El sistema almacena el nuevoamigo
4 Se posiciona nuevamente a lainterfaz principal
Excepciones:
Id Nombre AcciónE1 Cancelación de la transacción, cuando
el propietario da clic en CancelarEl sistema se posiciona nuevamente en lapantalla principal
Poscondiciones:• El propietario ahora tiene un amigo más en su catálogo al que le podrá hacer
préstamos.
Caso de Uso : Actualización de amigos
Actor : Propietario
PropietarioActualización de amigos
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________37
Descripción : El propietario actualizará su catálogo de amigos, y lo hará modificando susdatos en el sistema.
Precondiciones:• Algunos datos de un amigo pueden haber cambiado o fueron capturados de modo
erróneo al darlos de alta.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Muestra una lista en la pantallacon todos los amigos registrados
E1
2 Selecciona el amigo al quehará cambios
E1
3 Da clic al botón “Actualizar” 4 El sistema se posiciona en lainterfaz donde presenta lascaracterísticas del amigoseleccionado.
5 Modifica las datos necesariosy permitidos.
E2
6 Da clic en la opción “Guardar” 7 Almacena los cambios hechos alamigo.
Excepciones:
Id Nombre AcciónE1 Cancelación de transacción, cuando el
propietario da clic en CancelarEl sistema se posiciona nuevamente en lapantalla principal
E2 Cancelación de transacción, cuando elpropietario da clic en Cancelar
El sistema se posiciona nuevamente en lapantalla donde se despliegan todos losamigos
Poscondiciones:• El amigo quedó almacenado en el sistema con los cambios hechos a sus datos.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________38
Caso de Uso : Baja de amigos
Actor : Propietario
PropietarioBaja de amigos
Descripción : El propietario va actualizar su catálogo de amigos, y lo hará al dar de bajaalguno de ellos.Esto quiere decir que ya no será posible prestarle objetos personales.
Precondiciones:• El propietario ya no prestará artículos personales a un amigo.• Este amigo se encuentra ya registrado en el sistema.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Muestra una lista en la pantallacon los amigos registrados
E1
2 Selecciona el amigo aeliminar
E1
3 Da clic al botón “Eliminar” 4 Elimina al amigo seleccionadopor el propietario.
5 Se posiciona nuevamente en lainterfaz principal.
Excepciones:
Id Nombre AcciónE1 Cancelación de transacción, cuando el
propietario da clic en “Cancelar”.El sistema se posiciona nuevamente en lapantalla principal
Poscondiciones:• El amigo quedó eliminado del sistema.• Ahora no es posible registrar préstamos para él.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________39
Caso de Uso : Lista de artículos prestados
Actor : Propietario
Descripción : El propietario consulta los artículos que tiene prestados en este momento. Ylo hace a través de la lista que genera el sistema y que son desplegados en pantalla.Esta vista estará siempre visible en la interfaz principal.
Precondiciones:• Para que el sistema muestre una lista de los artículos prestados, es necesario que
se tengan préstamos registrados.• Esta lista aparecerá siempre que el propietario entre al sistema.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Selecciona la opción “Lista deartículos prestados” del menúprincipal.
2 Se posiciona en la interfaz dondedespliega la lista de artículos quese tienen prestados.
Poscondiciones:
• El propietario puede revisar los préstamos que tiene hechos hasta este momento(amigo, artículo y fecha de devolución).
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________40
Caso de Uso : Lista de amigos morosos
Actor : Propietario
Descripción : El propietario consulta los amigos que son morosos hasta este momento. Ylo hace a través de la lista que genera el sistema y que son desplegados en pantalla.
Precondiciones:
• Para que el sistema muestre una lista de amigos morosos, es necesario que setengan préstamos registrados a amigos con fechas de devolución vencidas.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Selecciona la opción “Lista deamigos morosos” del menúprincipal.
2 Se posiciona en la interfaz dondedespliega la lista de amigosmorosos.
Poscondiciones:
• El propietario puede revisar los amigos que son morosos hasta este momento(amigo y fecha de devolución).
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________41
Caso de Uso : Salir del sistema
Actor : Propietario
Descripción : El propietario ya realizó todas las operaciones que necesitaba dentro delsistema. Ahora debe salir del sistema para que nadie que no tenga la clave pueda realizarcambios dentro del sistema que altere la integridad de la información que en éste sealmacena.
Precondiciones:
• El propietario ya no necesita realizar más transacciones dentro del sistema.
Flujo :
ACTOR SISTEMAPaso Acción Paso Acción Excepción
1 Selecciona la opción “Salir”del menú principal.
2 Sale de la interfaz en que seencontraba y se posicionanuevamente en la pantalla delogin del sistema.
Poscondiciones:
• El propietario ha salido del sistema.• Nadie puede utilizar el sistema mientras no sea logeado nuevamente.• El usuario podrá cambiar de página sin riesgo a perder la integridad en la
información que maneja el sistema.• El sistema se posiciona nuevamente en la página de login.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________42
REQUISITOS NO FUNCIONALES
Se desea que el sistema mantenga un equilibrio entre la facilidad de su uso y la utilidadque proporcione al usuario.
Y esto deberá estar cimentado también en un funcionamiento confiable donde semantenga la integridad de los datos que maneje.
No deberá presentar problemas para trabajar en todos los browsers de uso común.
La interfaz con el usuario deberá ser útil, navegable, amigable, clara y suficiente para elusuario y el cumplimiento de su tarea.
El tiempo máximo de espera en la apertura de las páginas no deberá ser mayor a 20segundos.
No deberá ser posible accesar al sistema si no se proporciona la clave correcta de accesoal sistema.
Como requisitos operacionales para el uso del sistema se tienen :
• Computadora personal Pentium como mínimo.• Acceso a internet.• 64 MB de memoria RAM.• Navegador de internet
Para el desarrollo de este sistema se utilizarán las siguientes herramientas :
• Poseidon (CE) para la documentación UML del sistema.• Forte for Java (CE) para la codificación.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________43
GLOSARIO DE TÉRMINOS
Amigo : Persona registrada en el sistema, a la que el propietario puede prestar susartículos personales.
Amigo moroso : Amigo registrado en el sistema al que se le hizo un préstamo, pero lafecha de devolución del artículo ha vencido.
Artículo personal : Objetos personales que el propietario presta a sus amigos. Losobjetos que puede prestar son cd’s musicales, libros y cuadernos.
Préstamo : El propietario presta un artículo personal a un amigo. Y esta información(artículo personal, amigo, fecha de devolución), queda registrada en el sistema.
Propietario : Usuario principal del sistema, quien es el dueño de los objetos personalesque se prestan.
Tipo de artículo : Categorías a las que pertenecen los objetos personales. Estascategorías son diskettes, cd´s programas, cd´s música, películas, libros, cuadernos,copias y manuales.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________44
PLAN DE PRUEBA DEL SISTEMA
Caso de uso Caso de prueba ResultadoAccesar alsistema
Introducción de unaclave de acceso noválida
El sistema muestra en la pantalla un mensajede error de clave inválida y se le permite volvera capturar al propietario
Cancelación deacceso
El usuario no proporciona la clave de acceso alsistema y sólo cambia de página.
Introducción de laclave correcta
El sistema muestra el menú principal y la listade artículos personales prestados en esemomento.
Agregar artículo Llenar datoscorrectamente
El usuario llenó correctamente los datos delartículo.El sistema almacena el nuevo artículo
Llenado de datosincompleto
Si no llenó datos obligatorios, el sistemasolicitará el llenado de éstos para almacenar elnuevo registro.
Cancelación de alta El usuario canceló la transacción antes deguardar el nuevo artículo.El sistema vuelve a la pantalla principal sinningún cambio.
Modificar artículo Cancelación decambios
El usuario dio clic en “Cancelar” a latransacción en la pantalla de muestra de losartículos .El sistema vuelve a la pantalla principal sinningún cambio.
Cancelación decambios a artículoya seleccionado
El usuario dio “Cancelar” a la transacción en lapantalla de cambios a un artículo.El sistema vuelve a la pantalla que muestratodos los artículos.
Guardar cambioscorrectamente
El usuario cambió los datos del artículo.El sistema guarda los cambios hechos.
Eliminar artículo Cancelación deeliminación
El usuario dio clic en “Cancelar” a latransacción en la pantalla que muestra losartículos.El sistema vuelve a la pantalla principal sinningún cambio.
Eliminacióncorrecta
El usuario seleccionó el artículo y dio clic albotón de “Eliminar”.El sistema borra el artículo.
Registrarpréstamo
Prestar un artículopersonal aún nodado de alta
El usuario prestará un artículo personal, peroaún no está registrado.El usuario elige la opción (Check), “NuevoArtículo”.El sistema permite dar de alta al nuevo artículo(Pantallas de Alta de artículos) y regresa a laventana de registro del préstamo
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________45
Prestar un artículoa un amigo aún noregistrado
El usuario prestará un artículo a un amigo, peroaún no está registrado en el sistema.El usuario elige la opción (Check). “Nuevoamigo”. El sistema permite dar de alta al nuevoamigo y regresa a la ventana de registro delpréstamo.
Prestar un artículoexistente a unamigo ya existente
El usuario elige un artículo, un amigo y asignala fecha de devolución.El sistema almacena el registro.
Devolución Cancelar ladevolución sinmarcar comodevuelto
El usuario elige “Cancelar” antes de marcarcomo devuelto algún artículo.El sistema se posiciona nuevamente en lapantalla principal.
Ampliar tiempode préstamos
Cancelar sinseleccionar unpréstamo
El usuario da clic en “Cancelar” sin haber leído.
Cancelar sinmodificar la fechade devolución
El usuario da clic en “Cancelar” sin habermodificado la fecha de devolución.
Asignar fechaincongruente
El usuario cambió la fecha de devolución peroes menor que la fecha de devolución original.El sistema debe indicar la incongruencia y noalmacena el cambo aún.
Agregar amigo Cancelar sin haberintroducido losdatos
El usuario elige “Guardar ”El sistema almacena los cambios.
Agregarcorrectamente
El usuario proporciona los datos necesarios.El sistema almacena la información.
Modificar amigo Cancelar sin haberseleccionadodeterminado amigo
El usuario da clic en “Cancelar” sin habermodificado nada.
Cancelar sinmodificar los datosdel amigo
El usuario da clic en “Cancelar” y el sistemavuelve a la pantalla donde se muestran losamigos.
Modificacióncorrecta
El usuario seleccionó un amigo, y modificócorrectamente los datos.El sistema almacenó los datos correctos.
Eliminar amigo Cancelar sin habereliminado nada
El usuario da clic en “Eliminar amigo” sin haberseleccionado nada.
Eliminar amigo Se seleccionó un amigo y se eliminacorrectamente.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________46
SISTEMA DE PRÉSTAMOSPERSONALES
ADMINISTRACIÓN DE LACONFIGURACIÓN
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________47
ADMINISTRACIÓN DE LA CONFIGURACIÓN
ELEMENTOS DE LA CONFIGURACIÓN A RESGUARDAR
Los elementos de la configuración son todos aquellos productos del proyecto a losque se les pueden hacer cambios durante el proceso.Y además de que nos interesa conservar sus respaldos a lo largo de sus modificaciones.
Y precisamente en nuestro caso, estos elementos coinciden con todos los productos quese generarán en el proyecto.
A continuación los productos se enlistarán agrupados por flujo de trabajo:
Administración del proyecto1. Plan de desarrollo2. Lista de riesgos3. Plan de mediciones
Definición de requerimientos1. Definición del problema2. Diagrama general de casos de uso3. Prototipo4. Detalle de casos de uso5. Requerimientos no funcionales6. Glosario de términos7. Plan de prueba del sistema
Administración de configuración1. Elementos de la configuración a resguardar2. Creación del depósito del proyecto3. Plan de configuración
Análisis1. Diagramas de clases del análisis2. Modelo de la arquitectura del análisis
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________48
Diseño1. Descripción de la arquitectura del diseño2. Diagramas de paquetes3. Diagrama de instalación4. Diagrama de clases del diseño5. Diseño de la base de datos6. Diagramas de secuencia
Implementación1. Construcción de la interfaz2. Código de clases3. Plan de pruebas unitarias4. Ejecución de pruebas unitarias
Pruebas1. Plan de pruebas de integración2. Plan de pruebas de componentes3. Plan de pruebas del sistema
Además de estos productos, sin lugar a dudas, si algo también sufre cambios es elcódigo:
1. *.java2. *.class
Además de que es importante conservar sus distintas versiones.
CREACIÓN DEL DEPÓSITO DEL PROYECTO
La construcción de nuestro depósito del proyecto se divide a dos niveles:
v Electrónico: Estará dado en la siguiente carpetaC:\IIMAS\TOO\SISTEMA DE PRÉSTAMOS PERSONALES\DEPÓSITO\
para el trabajo en casa.
Y C:\DOCUMENTS AND SETTINGS\HURIBE\TOO\SISTEMA DE PRESTAMOSPERSONALES\ Para el trabajo en las máquinas del IIMAS.
v En papel: Estará conformado por toda la documentación que se irá entregando ala maestra a lo largo del tiempo ya planeado, hasta llegar a formar la carpetacompleta.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________49
PLAN DE CONFIGURACIÓN
MECANISMO DE NOMBRADO
A continuación definiremos el mecanismo que implementaremos para nombrarnuestros elementos de configuración que estarán almacenados en nuestro depósito:
XX…XX_n.mm.TIPO
• Donde XX…XX corresponde al nombre del archivo con posibles secuénciales• n.mm Versión• TIPO Tipo del documento.
Con los archivos almacenados en distintas carpetas de acuerdo al flujo de trabajo al quepertenezcan:\admonproy\\admonconfig\\defrequerimientos\\análisis\\diseño\\implementación\\pruebas\
Ejemplo:
…\SISTEMA DE PRÉSTAMOSPERSONALES\DEPÓSITO\Diseño\DiagPaquetes10_1.5.bmp
Debemos dejar claro también que las versiones iniciales de todos nuestros productos, esdecir el inicio del conteo, será a partir de la versión 1.0.
DEFINICIÓN DE LÍNEAS BASE
En esta sección deberemos determinar cuales serán las líneas base de nuestroselementos de configuración que ya mencionamos antes.Estas líneas base estarán determinadas por los productos generados, que se deberánentregar en las fechas establecidas en el plan del proyecto, pero esto se dará sólo hastaque sean aprobados por el par y la maestra.
Y será a partir de estos archivos base, que se llevarán cabo las modificaciones y cambiosque surjan a raíz del avance del proyecto, en consenso con el par y la maestra.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________50
SOLICITUD DE CAMBIO Y SUS PROCEDIMIENTOS
El motivo de tener determinada una solicitud para llevar a cabo los cambios, espoder contar con un registro y seguimiento de los cambios que sean requeridos a lo largodel proyecto.
El formato de la solicitud de cambio quedaría como sigue:
Forma de Solicitud de Cambio
Proyecto: Solicitante:Flujo de trabajo: Responsable:Fecha:
Nombre del producto:______________________________________________________________Razones por las que se solicita elcambio:______________________________________________________________________________________________________________________________Beneficios con elcambio:____________________________________________________________
Repercusiones en el resto delproyecto:________________________________________________
Descripción delcambio:_____________________________________________________________
Estado del cambio:AprobadoRechazado
Aprobado/Rechazado por:Administrador del proyecto (Maestra): ___________________________________Par (Compañero): ___________________________________________________Responsable (Yo): ___________________________________________________
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________51
Debido al alcance del proyecto y a que habrá un solo responsable (multi-rol), elcambio podrá ser solicitado por el par, por la maestra ó por mi mismo; de tal forma quesea posible tener registrado a través de estos documentos los cambios hechos a laslíneas base de los productos.
Una vez solicitado el cambio, las otras dos partes del proyecto deberán determinar si esAceptado o Rechazado para su realización; quedando registrado en el mismo documento.
En caso de ser aceptado, deberá llevarse a cabo el cambio a la línea base del productoafectado; y este cambio se reportará como un anexo del estado de la configuración en losentregables ya planeados.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________52
SISTEMA DE PRÉSTAMOSPERSONALES
DISEÑO
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________53
DISEÑO
Este documento servirá como el punto de partida para nuestro flujo de trabajo deimplementación.Para lograr esto deberemos llegar a un mayor nivel de detalle a partir de los productosobtenidos durante el análisis
DESCRIPCIÓN DE LA ARQUITECTURA DEL DISEÑO
Para la definición de la arquitectura deberemos basarnos en la selección de dos tipos depatrones:
• Selección de un patrón de arquitectura.
• Selección de un patrón para aplicaciones web.
Patrón de arquitectura.
Patrón Modelo-Vista-Controlador (Model-View-Controller) MVC
Este patrón se usa en aplicaciones interactivas que requieren una interfaz de usuarioflexible.
Bajo este patrón el sistema se divide en tres partes:
Ø Modelo: Encapsula los datos y la funcionalidad de la aplicación.Ø Vista: Que despliega la información contenida en el modelo, al usuario (pueden
existir varias vistas).Ø Controlador: Cada vista tiene asociado un controlador, recibe entradas que
traduce en invocaciones de métodos del Modelo o de Vista. El usuario interactúacon el sistema solamente vía controladores
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________54
Específicamente para nuestro sistema podremos implementar este patrón como lomuestra el siguiente diagrama.
Dentro de las razones por las que se elige este patrón son las siguientes :
• Se tiene flexibilidad a la hora de cambiar las vistas y los controladores.• La aplicación puede soportar distintos tipos de interfaz de usuario.• Los componentes se pueden cambiar sin causar grandes estragos al sistema.• Separación de tareas dentro del sistema.• Logísticamente, separa claramente el desarrollo de interfaz del workflow y lógica
de negocio permitiendo desarrollar ambas en paralelo o con personalespecializado.
• También es evidente que potencia la reutilización, soporte de múltiples interfacesde usuario (Html, sHtml, Wml, Desktop applications, etc.) y de múltiples idiomas,localismos, etc.
• El cambio de interfaz no deberá de tener consecuencias para el núcleo del códigode la aplicación.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________55
Patrón para aplicación web.
Patrón Thin WEB client
Para llevar a cabo la selección de este patrón se consideraron los siguientes aspectos:
• Sólo se deben garantizar las mínimas características en los clientes.• Toda la lógica del negocio se ejecuta del lado del servidor.• Toda la interacción del usuario se realiza a través del browser.• El servidor siempre regresa una página formateada en HTML para ser interpretada
por el cliente.• El protocolo de conexión y comunicación que se utiliza es HTTP que es el más
utilizado.• El enlace se lleva a cabo “sin conexión”.• Manejo de páginas JSP con scripts que se ejecutan en el servidor.• Estas páginas tienen acceso a todos los recursos del servidor (lógica del negocio,
BD, etc.).• En general este conjunto de de características nos llevan también a un gran
flexibilidad en el tipo de los clientes que podrán participar.
DIAGRAMA DE INSTALACIÓN
A continuación definiremos los nodos que estarán involucrados en nuestro sistema.
Servidor
Cliente 1
Cliente 2
Este nodo consta de :-Servidor de páginasTomcat-JSP's-Contenedor de servlets-Contenedor de beans-BD
WWW BrowserProtocolo HTTP
WWW BrowserProtocolo HTTP<<<<Protocolo HTTP>>>>
<<<<Protocolo HTTP>>>>
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________56
DIAGRAMAS DE PAQUETES
En este diagrama quedarán especificados los subsistemas (paquetes), de los que estaráintegrado nuestro sistema.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________57
DIAGRAMAS DE COMPONENTES
Ahora mostraremos los componentes de los que constará el sistema, donde se podránobservar elementos no considerados en los componentes que están más ligados alobjetivo del sistema en el diagrama anterior.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________58
SISTEMA DE PRÉSTAMOSPERSONALES
DISEÑODETALLADO
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________59
DISEÑO DETALLADO
Este documento servirá como el punto de partida para nuestro flujo de trabajo deimplementación.Para lograr esto deberemos llegar a un mayor nivel de detalle a partir de los productosobtenidos durante el análisis y la definición de requerimientos.
DIAGRAMA DE CLASES DEL DISEÑO
INTERFAZPara la interfaz se presentan las siguientes clases
IHLogin
open()refresh()
IHPrincipal
open()refresh()
IHRegistro
open()refresh()
IHDevolucion
open()refresh()
IHSeleccion_prestamo
open()refresh()
IHAmpliacion
open()refresh()
IHAlta_Articulo
open()refresh()
IHBaja_Articulo
open()refresh()
IHSeleccion_Articulo
open()refresh()
IHActualizaicon_Articulo
open()refresh()
IHAlta_Amigo
open()refresh()
IHBaja_Amigo
open()refresh()
IHSeleccion_Amigo
open()refresh()
IHActualizacion_Amigo
open()refresh()
IHLista_Art_Prestados
open()refresh()
IHLista_Amig_Morosos
open()refresh()
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________60
DOMINIO DEL PROBLEMA
LOS SERVLETS
SDevolucion
doGet(request, response)doPost(request, response)
Login
doGet(request, response)doPost(request, response)
SAAmigo
doGet(request, response)doPost(request, response)
SAArticulo
doGet(request, response)doPost(request, response)
SActAmigo
doGet(request, response)doPost(request, response)
SActArticulo
doGet(request, response)doPost(request, response)
SAmpliacion
doGet(request, response)doPost(doGet, doPost)
SBAmigo
doGet(request, response)doResponse(doGet, doResponse)
SBArticulo
doGet(request, response)doResponse(request, response)
SPrestamo
doGet(request, response)doPost(request, response)
SUpdateArticulo
doGet(request, response)doPost(request, response)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________61
Para las clases del dominio del problema, nuestro diagrama de clases queda dividido enlas siguientes dos partes :
Prestamoprestamo : MDPrestamoprestamos : Vector
Prestamo()getPrestamos() : Vectorset_prestamo(articulo : Integer, amigo : Integer, f echa_prestamo : String, f echa_dev : String) : Booleandev olucion(cv e_prestamo : Integer) : Booleanget_desc_articulo(cv e_prestamo : Integer) : Stringget_desc_tipo_articulo(cv e_prestamo : Integer) : Stringget_amigo(cv e_prestamo : Integer) : Stringget_f echadev (cv e_prestamo : Integer) : Stringcambia_f echa(cv e_prestamo : Integer, f echa : String) : Boolean
Amigoamigo : MDAmigoamigos : Vector
Amigo()set_amigo(nombre : String, direccion : String, telefono : String, correo : String) : Booleanget_amigos_elim() : Vectorget_amigos_act() : Vectordelete_amigo(cve_amigo : Integer) : Booleanget_amigo(cve_amigo : Integer) : Vectorupdate_amigo(cve_amigo : Integer, nombre : String, direccion : String, telefono : Str ing, correo : String) : Booleanget_amigos_morosos() : Vectorget_amigos_query() : VectorgetAmigos() : Vector
Articulo
artic ulo : MDArtic uloarticulos : Vec torcd : MDCDmusicacuaderno : MDCuadernolibro : MDLibro
Articulo()get_articulos( ) : Vectorget_articulos_elim() : Vec torpresta_ar ticulo(cve_articulo : Integer, con : Connection) : Booleandevuelve_articulo(cve_articulo : Integer, con : Connection) : Booleanset_cd(nombre : String, tipo_articulo : Integer , desc_estado : String, interprete : String, genero : Str ing, canciones : Integer, original : Integer, tipo : Integer) : Integerset_cuaderno(nombre : String, tipo_articulo : Integer, descrip_estado : String, profesor : String, num_materias : Integer, num_hojas : Integer) : Integerset_libro(nombre : String, tipo_articulo : Integer, desc rip_estado : String, autor : Str ing, editorial : String, edic ion : String, genero : String, isbn : String, paginas : Integer ) : Integerdelete_ar tic ulo(cve_articulo : Integer) : Booleanget_tipo_articulo(cve_ar ticulo : Integer) : Integerget_articulo(cve_artic ulo : Integer, tipo_articulo : Integer) : Vec torupdate_cd(cve_articulo : Integer, nombre : String, es tado : String, interprete : Str ing, genero : String, canc iones : Integer , original : Integer, tipo : Integer) : Booleanupdate_cuaderno(cve_articulo : Integer, nombre : String, es tado : String, profesor : String, materias : Integer, hojas : Integer) : Booleanupdate_libro(cve_ar tic ulo : Integer, nombre : String, estado : String, autor : String, editor ial : Str ing, edic ion : String, genero : String, is bn : Str ing, paginas : Integer) : Booleanget_art_prestados() : Vectorget_articulos_query() : Vec tor
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________62
MODELO DE DATOS
A continuación se tiene la primer parte de dos, del diagrama de clases de nuestro modelode datos.
MDAmigo
MDAmigo()get_amigos() : Vectoravector(rset : ResultSet) : Vectorget_amigos_elim() : Vectorget_amigos_act() : Vectorget_amigo(cv e_art iculo : Integer) : Vectorset_amigo(nombre : String, direccion : String, telef ono : String, correoe : String) : Booleandelete_amigo(cv e_amigo : Integer) : Booleanupdate_amigo(cv e_amigo : Integer, nombre : String, direccion : String, telef ono : String, correoe : String) : Booleanget_conexion() : Connectionget_amigos_morosos() : Vectorav ector_morosos(rset : ResultSet) : Vectoravector_f echa(rset : ResultSet) : Vectoracomoda_f echa(f echa : String, char : Character) : Stringget_amigos_query () : Vector
MDPropietariomiusuario : Stringmipassword : Stringelpassword : String
MDPropietario()get_password(con : Connection) : Booleanv alidar_usuario() : Booleanget_conexion() : Connection
MDPrestamo
MDPrestamo()get_conexion() : Connectionget_prestamos() : Vectorav ector(rset : ResultSet) : Vectorset_prestamo(cv e_articulo : Integer, cv e_amigo : Integer, f echa_prestamo : String, f echa_dev : String) : Booleanacomoda_f echa(f echa : String, char : Character) : Stringv alida_f echa(f echa : String) : Booleancambia_f echa(cv e_prestamo : Integer, f echa : String) : Booleanget_art iculo(cv e_prestamo : Integer) : Integerget_desc_articulo(cv e_prestamo : Integer) : Stringget_desc_tipo_articulo(cv e_prestamo : Integer) : Stringget_amigo(cv e_prestamo : Integer) : Stringget_f echadev (cv e_prestamo : Integer) : String
Conexion
get_conexion() : Connection
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
________________________________________________________________________________63
Segunda parte del diagrama de clases para el modelo de datos.
MDArticulo
MDArticulo()set_articulo(nombre : String, tipo_articulo : Integer, desc_estado : String, con : Connection) : Integerdelete_articulo(cv e_articulo : Integer) : Booleanpresta_articulo(cv e_articulo : Integer, con : Connection) : Booleandevuelv e_articulo(cv e_articulo : Integer, con : Connection) : Booleanget_articulos() : Vectorget_articulos_elim() : Vectoravector(rset : ResultSet) : Vectorget_tipo_articulo(cv e_articulo : Integer) : Integerget_conexion() : ConnectiongetArticulo(cv e_articulo : Integer, tipo_articulo : Integer) : Vectorupdate_cd(cv e_articulo : Integer, nombre : String, estado : String, interprete : String, genero : String, canciones : Integer, original : Integer, tipo : Integer) : Booleanupdate_cuaderno(cv e_articulo : Integer, nombre : String, estado : String, prof esor : String, materias : Integer, hojas : Integer) : Booleanupdate_libro(cv e_articulo : Integer, nombre : String, estado : String, autor : String, editorial : String, edicion : String, genero : String, isbn : String, paginas : Integer) : Booleanupdate_articulo(cv e_articulo : Integer, nombre : String, estado : String, con : Connection) : Integerget_art_prestados() : Vectorav ector_f echa(rset : ResultSet) : Vectorget_articulos_query () : Vectorav ector_disponible(rset : ResultSet) : Vectoracomoda_f echa(fecha : String, char : Character) : String
MDCDmusica
MDCDmusica()set_cd(nombre : String, tipo_articulo : Integer, descrip_estado : String, interprete : String, genero : String, num_canciones : Integer, original : Integer, tipo : Integer) : Booleanupdate_cd(cv e_articulo : Integer, interprete : String, genero : String, canciones : Integer, original : Integer, tipo : Integer, con : Connection) : Boolean
MDCuaderno
MDCuaderno()set_cuaderno(nombre : String, t ipo_articulo : Integer, descrip_estado : String, prof esor : String, num_materias : Integer, num_hojas : Integer) : Integerupdate_cuaderno(cv e_articulo : Integer, prof esor : String, num_materias : By te, num_hojas : Short, con : Connection) : Integer
MDLibro
MDLibro()set_libro(nombre : String, tipo_articulo : Integer, descrip_estado : String, autor : String, editorial : String, edicion : String, genero : String, ISBN : String, num_paginas : Integer) : Integerupdate_libro(cv e_articulo : Integer, autor : String, editorial : String, edicion : String, genero : String, ISBN : String, paginas : Integer, con : Connection) : Integerget_conexion() : Connection
SISTEMA DE PRÉSTAMOS PERSONALES_____________________________________________________ADMINISTRACIÓN DELPROYECTO
________________________________________________________________________________64
DISEÑO DE LA BASE DE DATOS
A continuación se muestran las tablas que integrarán nuestra base de datos.
CVE_ARTICULO = CVE_ARTICULO
CVE_ARTICULO = CVE_ARTICULO
CVE_ARTICULO = CVE_ARTICULO
CVE_AMIGO = CVE_AMIGO
CVE_ARTICULO = CVE_ARTICULO
ARTICULO
CVE_ARTICULONOMBRETIPO_ARTICULODESCRIP_ESTADODISPONIBLESTATUS
integervarchar(50)tinyintvarchar(60)binarybinary
<pk>
CDMUSICA
CVE_ARTICULOINTERPRETEGENERONUM_CANCIONESORIGINALTIPO
integervarchar(50)varchar(20)smallintbinarybinary
<pk,fk>
PROPIETARIO
USUARIOPASSWORDNOMBRE
varchar(10)varchar(10)varchar(50)
<pk><pk>
AMIGO
CVE_AMIGONOMBREDIRECCIONTELEFONOCORREOESTATUS
integervarchar(50)varchar(50)varchar(20)varchar(30)binary
<pk>
PRESTAMO
CVE_PRESTAMOCVE_ARTICULOCVE_AMIGOFECHA_PRESTAMOFECHA_DEVSTATUS
integerintegerintegerdatedatebinary
<pk><fk2><fk1>
CUADERNO
CVE_ARTICULONUM_MATERIASNUM_HOJAS
integertinyintsmal lint
<pk,fk>LIBRO
CVE_ARTICULOAUTOREDITORIALEDICIONGENEROISBNNUM_PAGINAS
integervarchar(50)varchar(50)varchar(10)varchar(20)varchar(13)integer
<pk,fk>
TIPO_ARTICULO
TIPO_ARTICULODESC_TIPO
tinyintvarchar(30)
<pk>
Esta BD será construida y manejada con Adaptive Server Anywhere (ASA) como nuestromanejador de la base de datos.Dentro de esta notación que se manejó la flecha è, representa a 1-*.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________65
DIAGRAMAS DE SECUENCIA
A continuación se mostrarán los diagramas de secuencia, ligados a sus diagramas decasos de uso correspondientes.Se presentarán los diagramas correspondientes a sus vertientes, es decir, lo casosexitosos (OK) y los erróneos (ERROR, que representan los casos inconclusos).
ACCESAR AL SISTEMA OK
login : IHLogin Login : Login dprop :MDPropietario
prestamo :Prestamo
dprestamo :MDPrestamo
pal : IHPrincipalusuario
acceso_paginaopen( )
usuario_password
doPost(request : , response : ) MDPropietario( )
validar_usuario( )
get_password(con : Connection)
Prestamo( )
getPrestamos( )
forward( )
MDPrestamo( )
get_prestamos( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________66
ACCESAR AL SISTEMA ERROR
error :IHLogin_error
login : IHLogin login : Login dprop :MDPropietario
usuario
acceso_paginaopen( )
usuario_passworddoPost(request : , response : )
MDPropietario( )
val idar_usuario( )
forward( )get_password(con : Connection)
Se manda un mensaje de error, y se queda en la pantalla de login.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________67
MANTENIMIENTO DE ARTICULOS
ALTA DE ARTÍCULOS OK (CUADERNO)
usuario pal : IHPrincipal alta :IHAlta_Art iculo_Cuaderno
art : SAArticulo articulo : Art iculo cuaderno :MDCuaderno
sel :IHSeleccion_tipo
alta_articulos
datos
guardardoPost(request : , response : )
set_cuaderno(nombre : String, tipo_articulo : Integer,descrip_estado : String, prof esor : String, num_materias :
Integer, num_hojas : Integer)
forward( )
CUADERNO forward( )
Articulo( )
MDCuaderno( )
set_cuaderno(nombre : St ring, tipo_articulo :Integer, descrip_estado : St ring, prof esor : String,
num_materias : Integer, num_hojas : Integer)
forward( )
ALTA DE ARTÍCULOS ERROR (CUADERNO)
usuario pal : IHPrincipal alta :IHAlta_Articulo_Cuaderno
sel : IHSeleccion_tipo
alta_articulos
datos
cancelar
forward( )
CUADERNOforward( )
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________68
ACTUALIZACIÓN DE ARTÍCULOS OK (CUADERNO)
getArticulo(cv e_art iculo : Integer, tipo_articulo : Integer)
usuario pal : IHPrincipal sel :IHSeleccion_Articu
art : Articulo dart : MDArticuloact_art :SActArticulo
supdate :SUpdateArticulo
act_art :IHActualizacion_Articulo_Cuade
actualizacion_articulosforward( )
selecc_articulo
actual izar
modi fica_campos
guardar
Articulo( )
get_articulo(cv e_art iculo : Integer, tipo_articulo : Integer)MDArticulo( )
doGet(request : , response : )
modificar( )
refresh( )
Articulo( )
update_cuaderno(cv e_art iculo : Integer, nombre : String, estado :String, prof esor : String, materias : Integer, hojas : Integer)
MDArticulo( )
update_cuaderno(cv e_articulo : Integer, nombre : String, estado: String, prof esor : String, materias : Integer, hojas : Integer)
doPost(request : , response : )forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________69
ACTUALIZACIÓN DE ARTÍCULOS ERROR (CUADERNO)
usuario pal : IHPrincipal sel :IHSeleccion_Art iculo
art iculo : Art iculo dart : MDArt iculosart : SAArt iculo act_art :IHActualizacion_Articulo_Cuader
actualizacion_articulosforward( )
selecc_articulo
actualizar
modifica_campos
cancelar
Articulo( )
get_articulo(cv e_articulo : Integer, t ipo_articulo : Integer)
forward( )
doPost(request : , response : )forward( )
MDArticulo( )
getArticulo(cv e_articulo : Integer, t ipo_articulo : Integer)
BAJA DE ARTÍCULOS OK (CUADERNO)usuario pal : IHPrincipal baja :
IHBaja_Art iculoart : Articulo dart : MDArticulosbarticulo :
SBArticulo
baja_articulosforward( )
seleccion_articulo
eliminar
Articulo( )
get_articulos_el im( ) MDArticulo( )
get_articulos_elim( )
doPost(request : , response : )Articulo( )
delete_articulo(cve_articulo : Integer)
MDArticulo( )
delete_articulo(cv e_articulo : Integer)
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________70
BAJA DE ARTÍCULOS ERROR (CUADERNO)
usuario pal : IHPrincipal baja :IHBaja_Articulo
art : Articulo dart : MDArticulo
baja_art iculosf orward( )
cancelar
Articulo( )
get_articulos_elim( ) MDArticulo( )
get_articulos_elim( )
f orward( )
ALTA DE ARTÍCULOS OK (CDMUSICA)
usuario pal : IHPrincipal alta_cd :IHAlta_Articulo_CD
alta_art :SAArticulo
articulo : Art iculo mdcd :MDCDmusica
sel_tipo :IHSeleccion_tipo
alta_articulos
datos
guardardoPost(request : , response : )
set_cd(nombre : String, tipo_articulo : Integer,descrip_estado : String, interprete : String,genero : String, num_canciones : Integer,
original : Integer, tipo : Integer)
forward( )
CD Musicalforward( )
Articulo( )
set_cd(nombre : String, tipo_articulo : Integer,desc_estado : String, interprete : String,
genero : String, canciones : Integer, original :Integer, tipo : Integer)
MDCDmusica( )
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________71
ALTA DE ARTÍCULOS ERROR (CDMUSICA)
usuario pal : IHPrincipal alta_cd :IHAlta_Articulo_CD
sel : IHSeleccion_tipo
alta_articulos
datos
cancelar
refresh( )
forward( )forward( )
ACTUALIZACIÓN DE ARTÍCULOS OK (CDMUSICA)
update_cd(cv e_articulo : Integer, nombre : String,estado : String, interprete : String, genero : String,canciones : Integer, original : Integer, tipo : Integer)
usuario pal : IHPrincipal sel : IHSeleccion_Articulo mdart : MDArticuloSUpdate :SUpdateArticulo
act_art :SActArticulo
art : Articuloact_art :IHActualizacion_Articulo_CD
actualizacion_art iculosforward( )
selecc_articulo
actual izar
Articulo( )
get_articulos_elim( )
doPost(request : , response : )forward( )
get_articulo(cve_articulo : Integer,tipo_articulo : Integer)
Articulo( )
MDArticulo( )
getArticulo(cv e_articulo : Integer, tipo_articulo : Integer)
MODIFICA CAMPOS
GUARDAR CAMBIOS doPost(request : , response : ) Articulo( )
update_cd(cv e_articulo : Integer, nombre : String, estado : String, interprete : String,genero : St ring, canciones : Integer, original : Integer, tipo : Integer)
MDArticulo( )
MDArticulo( )
get_articulos_elim( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________72
ACTUALIZACIÓN DE ARTÍCULOS ERROR (CDMUSICA)
usuario pal : IHPrincipal sel_Art :IHSeleccion_Articulo
art : Articulo dart : MDArticuloih_act_art :IHActualizacion_Articulo_CD
act_art :SActArticulo
ACTUALIZACIÓN DE ARTÍCULOSforward( ) Articulo( )
get_articulos_elim( )MDArticulo ( )
get_articulos_elim( )
SELECCIONA UN ARTICULO doPost (request : , response : )forward( )
Articulo( )
get_articulo(cv e_articulo : Integer, tipo_articulo : Integer)MDArticulo ( )
getArticulo(cv e_articulo : Integer, tipo_articulo : Integer)
ACTUALIZA CAMPOS
CANCELAR
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________73
BAJA DE ARTÍCULOS OK (CDMUSICA)
usuario pal : IHPrincipal baja :IHBaja_Art iculo
art : Articulo dart : MDArticulosb_art : SBArt iculo
baja_articulosforward( )
seleccion_articulo
eliminar
refresh( )
Articulo( )
get_articulos_el im( ) MDArticulo( )
get_articulos_elim( )
doPost(request : , response : )
Articulo( )
delete_articulo(cv e_articulo : Integer)MDArticulo( )
delete_articulo(cv e_articulo : Integer)
BAJA DE ARTÍCULOS ERROR (CDMUSICA)
usuario pal : IHPrincipal baja :IHBaja_Articulo
art : Articulo dart : MDArticulo
baja_articulosforward( )
seleccion_articulo
cancelar
refresh( )
Articulo( )
get_articulos_elim( ) MDArticulo( )
get_articulos_elim( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________74
ALTA DE ARTÍCULOS OK (LIBRO)
usuario pal : IHPrincipal alta :IHAlta_Articulo_Libro
articulo :SAArticulo
art : Articulo mdlibro : MDLibrosel_tipo :IHSeleccion_tipo
alta_articulos
datos
guardar
forward( )
LIBROforward( )
doPost(request : , response : )Articulo( )
set_libro(nombre : String, tipo_articulo : Integer, descrip_estado : String, autor: String, editorial : String, edic ion : String, genero : String, isbn : String,
paginas : Integer)MDLibro( )
set_libro(nombre : String, tipo_articulo : Integer,descrip_estado : String, autor : String, editorial : String,
edicion : String, genero : String, ISBN : String,num_paginas : Integer)
forward( )
ALTA DE ARTÍCULOS ERROR (LIBRO)
usuario pal : IHPrincipal alta :IHAlta_Articulo_Libro
sel : IHSeleccion_tipo
alta_articulos
datos
cancelar
refresh( )
forward( )
SELECCION DE LIBRO
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________75
ACTUALIZACIÓN DE ARTÍCULOS OK (LIBRO)
getArticulo(cv e_articulo : Integer, tipo_articulo : Integer)
usuario pal : IHPrincipal sel : IHSeleccion_Articulo dl ib : MDLibrosupdate_art :SUpdateArticulo
sactart :SActArticulo
art : Articuloact_art_libro :IHActualizacion_Articulo_Libro
actualizacion_articulosforward( )
selecc_articulo
actual izar
Articulo( )
get_articulos_eli m( )
modifi ca_campos
guardar
doPost(request : , response : ) forward( )
get_articulo(cve_articulo : Integer,tipo_articulo : Integer)
Articulo( )
MDLibro( )
doPost(request : , response : ) Articulo( )
update_libro(cv e_articulo : Integer, nombre : String, estado : String,autor : String, editorial : String, edicion : String, genero : String, isbn :
String, paginas : Integer)
update_libro(cv e_articulo : Integer, nombre : String, estado : String, autor : String, editorial :String, edicion : String, genero : String, isbn : String, paginas : Integer)
MDLibro( )
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________76
ACTUALIZACIÓN DE ARTÍCULOS ERROR (LIBRO)
usuario pal : IHPrincipal sel : IHSeleccion_Articulo sact_l ibro :SActArticulo
dart : MDArticuloart : Articuloact_art :IHActualizaicon_Articulo
actualizacion_articulosforward( )
selecc_articulo
actual izar
Articulo( )
get_articulos_elim( )
modifica_campos
cancelar
refresh( )
MDArticulo( )
get_articulos_elim( )
doPost(request : , response : ) forward( )
get_articulo(cve_articulo : Integer,
tipo_articulo : Integer)
Articulo( )
MDArticulo( )
getArticulo(cve_articulo : Integer,t ipo_articulo : Integer)
BAJA DE ARTÍCULOS OK (LIBRO)
usuario pal : IHPrincipal baja :IHBaja_Art iculo
art : Articulo dart : MDArticulosbaja : SBArt iculo l ib : Libro
baja_articulosforward( )
seleccion_articulo
eliminar
Articulo( )
get_articulos_elim( ) MDArticulo( )
get_articulos_elim( )
doPost(request : , response : )
Articulo( )
delete_articulo(cv e_articulo : Integer)MDArticulo( )
delete_articulo(cv e_articulo : Integer)
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________77
BAJA DE ARTÍCULOS ERROR (LIBRO)
usuario pal : IHPrincipal baja :IHBaja_Articulo
art : Articulo dart : MDArticulo
baja_articulosforward( )
seleccion_articulo
cancelar
forward( )
Articulo( )
get_articulos_elim( ) MDArticulo( )
get_articulos_elim( )
ACTUALIZACIÓN DE ARTICULOS ERROR (CUALQUIER TIPO)
usuario pal : IHPrincipal sel : IHSeleccion_Art iculo art : Articulo dart : MDArt iculo
actualizacion_articulosforward( )
cancelar
forward( )
Articulo( )
get_articulos_el im( )MDArticulo( )
get_articulos( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________78
REGISTRO DE PRÉSTAMO OK
usuario pal : IHPrincipal reg : IHRegistro prest : Prestamo dprest :MDPrestamo
art : Articulo amig : Amigosprestamo :SPrestamo
regis trar_prestamoforward( )
datos
guardar
ge t_articulos( )
getAmigos( )
doPost(request : , response : )
set_prestamo(articulo : Integer, amigo : Integer,f echa_prestamo : String, f echa_dev : String)
Prestamo( )
MDPrestamo( )
set_prestamo(cv e_articulo : Integer, cv e_amigo : Integer,f echa_prestamo : String, f echa_dev : String)
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________79
REGISTRO DE PRÉSTAMO ERROR
usuario pal : IHPrincipal reg : IHRegistro art : Articulo amig : Amigo dart : MDArt iculo damigo :MDAmigo
registrar_prestamoforward( )
datos
cancelar
forward( )
get_articulos( )
getAmigos( )
get_articulos( )
get_amigos( )
REGISTRO DE PRÉSTAMO (NUEVO AMIGO)
usuario pal : IHPrincipal reg : IHRegistro prest : Prestamo dprest :MDPrestamo
sprestamo :SPrestamo
alta_amigo :IHAlta_Amigo
REGISTRAR PRESTAMOforward( )
datos
guardar
MDPrestamo( )
set_prestamo(cv e_articulo : Integer, cv e_amigo : Integer,f echa_prestamo : String, f echa_dev : String)
Por cuestion de espacio no sepone la extracción de amigos yarticulos
NUEVO AMIGO
forward( )A partir de aquí se pasa al escenariode dar de alta un amigo
doPost(request : , response : )Prestamo( )
set_prestamo(articulo : Integer, amigo : Integer,f echa_prestamo : String, fecha_dev : String)
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________80
REGISTRO DE PRÉSTAMO (NUEVO ARTICULO)
usuario pal : IHPrincipal reg : IHRegistro prest : Prestamosprest : SPrestamosel_tipo :IHSeleccion_tipo
Por cuestion de espacio no sepone la extracción de amigos yarticulos
A partir de aquí se pasa alescenario de dar de alta unarticulo
registrar_prestamoopen( )
datos
guardar
NUEVO AMIGO forward( )
doPost(request : , response : )Prestamo( )
set_prestamo(articulo : Integer, amigo : Integer,fecha_prestamo : String, fecha_dev : String)
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________81
DEVOLUCIÓN OK
usuario pal : IHPrincipal dev : IHDev olucion prest : Prestamo dprest :MDPrestamo
sdev : SDev olucion
devolucionforward( )
seleccion
guardar_cambios
MDPrestamo( )
cambia_f echa(cv e_prestamo : Integer, f echa : String)
Prestamo( )
getPrestamos( )
doPost(request : , response : )
Prestamo( )
dev olucion(cv e_prestamo : Integer)
forward( )
DEVOLUCIÓN ERROR
usuario pal : IHPrincipal dev : IHDev olucion prest : Prestamo dprest :MDPrestamo
sprest :SPrestamo
devolucion forward( )
seleccion
cancelar
forward( )
Prestamo( )
getPrestamos( )MDPrestamo( )
get_prestamos( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________82
AMPLIAR TIEMPO PRESTAMO OK
usuario pal : IHPrincipal sel_prest :IHSeleccion_prestamo
prest : Prestamo dprest :MDPrestamo
samp :SAmpliacion
ampl :IHAmpliacion
ampliar_tiempoopen( )
getPrestamos( )
Prestamo( )
MDPrestamo( )
get_prestamos( )
seleccionar_prestamo
ampliar_tiempo
forward( )
doPost(request, response)
Prestamo( )
cambia_f echa(cve_prestamo : Integer, f echa : String)
MDPrestamo( )
cambia_f echa(cve_prestamo : Integer,f echa : String)
get_desc_articulo(cv e_prestamo : Integer)
get_desc_t ipo_articulo(cv e_prestamo : Integer)
Prestamo( )
get_amigo(cv e_prestamo : Integer)
get_f echadev (cve_prestamo : Integer)
forward( )
CAMBIAR FECHA
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________83
AMPLIAR TIEMPO PRESTAMO ERROR (DATOS YA EXTRAIDOS)
usuario pal : IHPrincipal sel_prest :IHSeleccion_prestamo
prest : Prestamo dprest :MDPrestamo
samp :SAmpliacion
ampl :IHAmpliacion
ampliar_tiempoopen( )
seleccionar_prestamo
ampliar_tiempo
getPrestamos( )
Prestamo( )
MDPrestamo( )
get_prestamos( )
forward( )
get_desc_articulo(cv e_prestamo : Integer)
get_desc_tipo_articulo(cv e_prestamo : Integer)
Prestamo( )
get_amigo(cve_prestamo : Integer)
get_fechadev (cv e_prestamo : Integer)
CAMBIAR FECHA
CANCELAR
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________84
AMPLIAR TIEMPO PRESTAMO ERROR (DATOS SIN EXTRAER)
pal : IHPrincipalusuario sel_prest :IHSeleccion_prestamo
prest : Prestamo dprest :MDPrestamo
ampliar_tiempoopen( )
seleccionar_prestamo
CANCELAR
getPrestamos( )
Prestamo( )
MDPrestamo( )
get_prestamos( )
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________85
MANTENIMIENTO DE AMIGOS
ALTA DE AMIGOS OK
usuario pal : IHPrincipal amigo :IHAlta_Amigo
amigo : Amigo damigo :MDAmigo
samigo : SAAmigo
alta_amigos forward( )
llenado_datosdoPost(request : , response : )
Amigo( )
set_amigo(nombre : String, direccion : String,telefono : String, correo : String)
MDAmigo( )
set_amigo(nombre : String, direccion : String,telef ono : String, correoe : String)
forward( )
ALTA DE AMIGOS ERROR
usuario pal : IHPrincipal
alta_amigos
amigo :IHAlta_Amigo
amigo :IHAlta_Amigo
open( )
llenado_datos
cancelar
refresh( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________86
ACTUALIZACIÓN DE AMIGOS OK
usuario pal : IHPrincipal sel_amigo :IHSeleccion_Amigo
amigo : Amigo damigo :MDAmigo
sactamigo :SActAmigo
act_amigo :IHActualizacion_Amigo
actualizacion_amigosforward( )
Amigo( )
getAmigos( ) MDAmigo( )
get_amigos( )
seleccion_amigo
actualizarforward( )
Amigo(cve_articulo : Integer)
get_amigo(cve_ami go : Integer) MDAmigo( )
get_amigo(cv e_articulo : Integer)
actualiza_datos
guardar doPost(request : , response : )
Amigo( )
update_amigo(cv e_amigo : Integer, nombre : String,direccion : String, telef ono : String, correo : String)
MDAmigo( )
update_amigo(cv e_amigo : Integer, nombre : String,direccion : String, telef ono : String, correoe : String)
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________87
ACTUALIZACIÓN DE AMIGOS ERROR (DATOS YA EXTRAIDOS)
usuario pal : IHPrincipal sel_amigo :IHSeleccion_Amigo
amigo : Amigo damigo :MDAmigo
sactamigo :SActAmigo
act_amigo :IHActualizacion_Amigo
actualizacion_amigosforward( )
seleccion_amigo
actualizar
Amigo( )
getAmigos( ) MDAmigo( )
get_amigos( )
forward( )Amigo(cve_articulo : Integer)
get_amigo(cve_amigo : Integer) MDAmigo( )
get_amigo(cv e_articulo : Integer)
actual iza_datos
CANCELAR
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________88
ACTUALIZACIÓN DE AMIGOS ERROR (DATOS SIN EXTRAER)
usuario pal : IHPrincipal sel_amigo :IHSeleccion_Amigo
amigo : Amigo damigo :MDAmigo
actualizacion_amigosforward( )
CANCELAR
Amigo( )
getAmigos( ) MDAmigo( )
get_amigos( )
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________89
BAJA DE AMIGOS OK
usuario pal : IHPrincipal baja :IHBaja_Amigo
amigo : Amigo damigo :MDAmigo
sbamig : SBAmigo
baja_amigos
forward( )
get_amigos_eli m( )MDAmigo( )
get_amigos_elim( )
seleccion_amigo
ELIMINAR
delete_amigo(cv e_amigo : Integer)
MDAmigo( )
forward( )
doPost(request, response)
Amigo( )
delete_amigo(cv e_amigo : Integer)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________90
BAJA DE AMIGOS ERROR
usuario pal : IHPrincipal baja :IHBaja_Amigo
amigo : Amigo damigo :MDAmigo
baja_amigos
forward( )
seleccion_amigo
CANCELAR
forward( )
get_amigos_elim( )MDAmigo( )
get_amigos_elim( )
LISTA DE ARTICULOS PRESTADOS
usuario pal : IHPrincipal prestados :IHLista_Art_Prestados
articulo : Articulo darticulo :MDArticulo
lista_art_prestados
open( )
get_art_prestados( )
Articulo( )
MDPrestamo( )
get_art_prestados( )
regresar
forward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________91
LISTA DE AMIGOS MOROSOS
usuario pal : IHPrincipal morosos :IHLista_Amig_Morosos
amigo : Amigo damigo :MDAmigo
lista_amigos_morosos
forword( )
regresar
forward( )
get_amigos_morosos( )
Amigo( )
MDPrestamo( )
get_amigos_morosos( )
SALIR
usuario pal : IHPrincipal login : IHLogin
SALIRforward( )
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________92
DIAGRAMAS DE ESTADOS
Estos diagramas fueron utilizados para la representación de la navegación entre laspantallas, y fue dividido en los tres siguientes diagramas :
Trabajo con los préstamos
Inicio
IHLogin
IHPrincipalIHRegistro
entrada_pagina
login_password_correctos
IHDevolucion
IHSeleccion_prestamo
IHAmpliacion
guardar / cancelarguardar / cancelar
guardar /cancelar IHLista_art_pr
estados
IHLista_amigos_morosos
guardar
cancelarregresar
regresar
registrar_prestamo devolucion
ampl iar_tiempo
lista_art_prestados
lista_amig_morosos
sali r
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________93
Trabajo con los artículos
IHLogin
Inicio
entrada_pagina
IHPrincipal
login_password_correctos
IHAlta_articulo
IHBaja_articulo
IHSeleccion_articulo
guardar / cancelar
salir
alta_articulos
baja_articulos
guardar / cancelar
actualizacion_articulos
IHActualizacion_articulo
guardar / cancelar
actualizar
cancelar
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________94
Trabajo con los amigos
Inicio
IHLogin
entrada_pagina
IHPrincipal
login_password_correctos
IHAlta_amigo IHBaja_amigo IHSeleccion_Amigo
IHActual izacion_amigo
sali r
alta_amigosguardar / cancelar
baja_amigos
eliminar / cancelar
actualizacion_amigos
actualizarguardar / cancelar
cancelar
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________95
DIAGRAMAS DE COMPONENTES
Ahora mostraremos los componentes de los que constará el sistema, que en la granmayoría, coinciden con la distribución de los paquetes. Esto debido a la sencillez de sucontenido.
Listas Actualizacion_Prestamos
Actualizacion_Articulos
Actualizacion_Amigos
Servlets
Tomcat Seguridad
BD Beans JSPS
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________96
ACTUALIZACIÓN DE LA PLANEACIÓN
Las tareas a realizar y las fechas actualizadas de entrega (pasadas y venideras) de cadaflujo de trabajo son:
Administración del proyecto.Productos: Entrega 17 de marzo
• Plan de desarrollo• Lista de riesgos• Plan de mediciones
Definición de requerimientos.Productos: Entrega 31 de marzo
• Definición del problema• Diagrama general de casos de uso• Prototipo• Detalle de casos de uso• Requerimientos no funcionales• Glosario de términos• Plan de prueba del sistema
Administración de configuraciónProductos: Entrega 19 de marzo
• Elementos de la configuración a resguardar• Creación del depósito del proyecto• Plan de configuración
AnálisisProductos: Entrega 7 de abril
• Diagramas de clases del análisis• Modelo de la arquitectura del análisis
Diseño (alto nivel)Productos: Entrega 30 de abril
• Descripción de la arquitectura del diseño• Diagramas de paquetes• Diagrama de instalación
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________97
Diseño (detallado)Productos: Entrega 12 de mayo
• Diagrama de clases del diseño• Diseño de la base de datos• Diagramas de secuencia• Diagramas de estados• Diagramas de componentes• Actualización de la planeación
ImplementaciónProductos: Entrega 26 de mayo
• Construcción de la interfaz• Código de clases• Plan de pruebas unitarias• Ejecución de pruebas unitarias
PruebasProductos: Entrega 4 de junio
• Plan de pruebas de integración• Plan de pruebas de componentes• Plan de pruebas del sistema
**A continuación con la utilización de Microsoft Project se podrá observar la planeaciónoriginal (línea base), y los datos reales del proyecto :
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________98
SISTEMA DE PRÉSTAMOSPERSONALES
IMPLEMENTACIÓN
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________99
IMPLEMENTACIÓN
CLASES
package clases_ros;import java.util.*;
public class Amigo { MDAmigo amigo; Vector amigos;/************************************************************************************/ public Vector getAmigos() { amigo = new MDAmigo(); amigos = new Vector(); amigos = amigo.getAmigos(); return amigos; }/************************************************************************************/ public boolean set_amigo(String nombre, String direccion, String telefono, Stringcorreoe) { amigo = new MDAmigo(); return amigo.set_amigo(nombre, direccion, telefono, correoe); }/**********************************************************************************/public Vector get_amigos_elim() { amigo = new MDAmigo(); return amigo.get_amigos_elim(); }/**********************************************************************************/public Vector get_amigos_act() { amigo = new MDAmigo(); return amigo.get_amigos_act(); }/**********************************************************************************/ public boolean delete_amigo(int cve_amigo) //ELIMINACION LOGICA DEL AMIGO { amigo = new MDAmigo(); return amigo.delete_amigo(cve_amigo); }/**********************************************************************************/public Vector get_amigo(int cve_amigo) {
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________100
amigo = new MDAmigo(); return amigo.get_amigo(cve_amigo); }/**********************************************************************************/ public boolean update_amigo(int cve_amigo, String nombre, String direccion, Stringtelefono, String correoe) //ACTUALIZACION DE UN AMIGO { amigo = new MDAmigo(); return amigo.update_amigo(cve_amigo, nombre, direccion, telefono, correoe); }/************************************************************************/ public Vector get_amigos_morosos() { amigo = new MDAmigo(); return amigo.get_amigos_morosos(); }/****************************************************************************/ public Vector get_amigos_query() //MOSTRADO DE TODOS LOS ARTICULOS QUESE PUEDEN ELIMINAR { //EXISTEN Y NO ESTÁN PRESTADOS amigo = new MDAmigo(); return amigo.get_amigos_query(); }/************************************************************************************//* public static void main(String[] args) { Vector vect; Amigo amig = new Amigo(); vect = amig.getAmigos(); System.out.println("VAMONOS"); }*/}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________101
package clases_ros;import java.util.*;import java.sql.*;
public class Articulo { private MDArticulo articulo; private Vector articulos; private MDCDmusica cd; private MDCuaderno cuaderno; private MDLibro libro;/***************************************************************************/ public Vector getArticulos() { articulo = new MDArticulo(); articulos = new Vector(); articulos = articulo.getArticulos(); return articulos; }/***************************************************************************/ public Vector get_articulos_elim() { articulo = new MDArticulo(); articulos = new Vector(); articulos = articulo.get_articulos_elim(); return articulos; }/***************************************************************************/ public boolean presta_articulo(int cve_articulo, Connection con) { articulo = new MDArticulo(); return articulo.presta_articulo(cve_articulo, con); }/***************************************************************************/ public boolean devuelve_articulo(int cve_articulo, Connection con) { articulo = new MDArticulo(); return articulo.devuelve_articulo(cve_articulo, con); }/******************************************************************************************/ public int set_cd(String nombre, int tipo_articulo, String descrip_estado, Stringinterprete, String genero, int canciones, int original, int tipo) { cd = new MDCDmusica(); return cd.set_cd(nombre, tipo_articulo, descrip_estado, interprete, genero,canciones, original, tipo); }/*************************************************************************************/
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________102
public int set_cuaderno(String nombre, int tipo_articulo, String descrip_estado, String profesor, int num_materias, int num_hojas) { cuaderno = new MDCuaderno(); return cuaderno.set_cuaderno(nombre, tipo_articulo, descrip_estado, profesor,num_materias, num_hojas); }/******************************************************************************************/ public int set_libro(String nombre, int tipo_articulo, String descrip_estado, String autor, String editorial, String edicion, String genero, String isbn, int paginas) { libro = new MDLibro(); return libro.set_libro(nombre, tipo_articulo, descrip_estado, autor, editorial, edicion, genero, isbn, paginas); }/**********************************************************************************/ public boolean delete_articulo(int cve_articulo) //ELIMINACION DEL ARTICULO { articulo = new MDArticulo(); return articulo.delete_articulo(cve_articulo); }/************************************************************************/ public int get_tipo_articulo(int cve_articulo) { articulo = new MDArticulo(); return articulo.get_tipo_articulo(cve_articulo); }/**********************************************************************************/ public Vector getArticulo(int cve_articulo, int tipo_articulo) { //EXTRACCION DE LOS DATOS DEL ARTICULO PARA SUACTUALIZACION articulo = new MDArticulo(); return articulo.getArticulo(cve_articulo, tipo_articulo); }/**********************************************************************************/ public boolean update_cd(int cve_articulo, String nombre, String estado, Stringinterprete, String genero, int canciones, int original, int tipo) { articulo = new MDArticulo(); return articulo.update_cd(cve_articulo, nombre, estado, interprete, genero, canciones,original, tipo); }/**********************************************************************************/ public boolean update_cuaderno(int cve_articulo, String nombre, String estado, String profesor, int materias, int hojas) { articulo = new MDArticulo(); return articulo.update_cuaderno(cve_articulo, nombre, estado, profesor, materias,hojas);
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________103
}/**********************************************************************************/ public boolean update_libro(int cve_articulo, String nombre, String estado, String autor, String editorial, String edicion, String genero, String isbn, int paginas) { articulo = new MDArticulo(); return articulo.update_libro(cve_articulo, nombre, estado, autor, editorial, edicion,genero, isbn, paginas); }/************************************************************************/ public Vector get_art_prestados() { articulo = new MDArticulo(); return articulo.get_art_prestados(); }/**********************************************************************************/ public Vector get_articulos_query() //MOSTRADO DE TODOS LOS ARTICULOS QUESE PUEDEN ELIMINAR { //EXISTEN Y NO ESTÁN PRESTADOS articulo = new MDArticulo(); return articulo.get_articulos_query(); }/***************************************************************************/
/* public static void main(String[] args) { Vector vect; Articulo artic = new Articulo(); boolean b = artic.presta_articulo(4); System.out.println(b); }*/}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________104
CLASE CONEXION
package clases_ros;
import java.util.*;import java.sql.*;
public class Conexion {
public Connection get_conexion() { Driver driver; Connection connection; String dbURL = "jdbc:odbc:SAP"; Properties p = new Properties(); p.put("user", "SAP"); p.put("password", "SAP"); connection = null; try { String driverName = "sun.jdbc.odbc.JdbcOdbcDriver"; driver = (Driver)Class.forName(driverName).newInstance(); connection = driver.connect(dbURL, p); } catch(ClassNotFoundException e) { System.out.println( e.getMessage() ); } catch(SQLException e) { System.out.println( e.getMessage() ); } catch(Exception ex ) { System.out.println("Error." + ex.getMessage() ); } return connection; }/* public static void main(String args[]) { Connection co; Conexion c = new Conexion(); co = c.get_conexion(); if (co == null) { System.out.println(""); System.out.println("no se conecto"); }
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________105
else { System.out.println(""); System.out.println(co.toString()); } }*/}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________106
CLASE AMIGO
package clases_ros;import java.util.*;import java.sql.*;import java.text.*;
public class MDAmigo{/**********************************************************************************/public Vector getAmigos() { String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) { return vect; }
try { est = con.createStatement(); selectSQL = "SELECT AMIGO.nombre, "+ "AMIGO.cve_amigo "+ " FROM AMIGO "+ " WHERE STATUS = 1;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector(resset); return vect; }
}/**********************************************************************************/ private Vector avector(ResultSet rset)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________107
{ Vector renglon = null; Vector tabla = null; String dato;
try { tabla = new Vector();//probar while (rset.next()) { renglon = new Vector(); for (int i=1; i<=rset.getMetaData().getColumnCount(); i++) { dato = rset.getString(i); renglon.add(dato); } tabla.add(renglon); } }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} return tabla; }/**********************************************************************************/public Vector get_amigos_elim() { String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) return vect;
try { est = con.createStatement(); selectSQL = "SELECT nombre, direccion, telefono, correoe, cve_amigo "+ " FROM AMIGO WHERE STATUS = 1 AND cve_amigo not in "+ "(SELECT cve_amigo from PRESTAMO WHERE status = 0 );";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (resset == null) return vect; else
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________108
{ vect = avector(resset); return vect; } }/**********************************************************************************/public Vector get_amigos_act() { String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) return vect;
try { est = con.createStatement(); selectSQL = "SELECT nombre, direccion, telefono, correoe, cve_amigo "+ " FROM AMIGO "+ " WHERE STATUS = 1;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (resset == null) return vect; else { vect = avector(resset); return vect; } }/**********************************************************************************/public Vector get_amigo(int cve_amigo) { String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) return vect;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________109
try { est = con.createStatement(); selectSQL = "SELECT nombre, direccion, telefono, correoe, cve_amigo "+ " FROM AMIGO "+ " WHERE cve_amigo = " + cve_amigo + ";";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (resset == null) return vect; else { vect = avector(resset); return vect; } }/**********************************************************************************/ public boolean set_amigo(String nombre, String direccion, String telefono, String correoe) { //INSERCION DE UN NUEVO ARTICULO int cve_amigo = -1; //REGRESA SU CVE DE ARTICULO String insertSQL; ResultSet reset; int registros = -1; Connection con;
con = get_conexion(); if (con == null) return false;
try { Statement est = con.createStatement(); insertSQL="INSERT INTO AMIGO (nombre, direccion, telefono, correoe, status, )VALUES('"+ nombre + "', '" + direccion + "', '" + telefono + "', '" + correoe + "', 1);"; registros = est.executeUpdate(insertSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros != 1) { return false; } return true; }/**********************************************************************************/ public boolean delete_amigo(int cve_amigo) //ELIMINACION LOGICA DEL AMIGO
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________110
{ Connection con; String delfSQL; int registros = -1;
con = get_conexion(); if (con == null) return false;
try { Statement est = con.createStatement(); delfSQL="UPDATE AMIGO SET STATUS = 0 WHERE cve_amigo = " + cve_amigo +";"; registros = est.executeUpdate(delfSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros != 1) return false; return true; }/**********************************************************************************/ public boolean update_amigo(int cve_amigo, String nombre, String direccion, Stringtelefono, String correoe) //ACTUALIZACION DE UN AMIGO { Connection con; String updateSQL; int registros = -1;
con = get_conexion(); if (con == null) return false;
try { Statement est = con.createStatement(); updateSQL = "UPDATE AMIGO SET nombre = '" + nombre + "', direccion = '" +direccion + "', telefono = '" + telefono + "', correoe = '" + correoe + "'" + " WHERE cve_amigo = " + cve_amigo + ";"; registros = est.executeUpdate(updateSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros != 1) return false;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________111
return true; }/**********************************************************************************/ private Connection get_conexion() { Connection connection; Conexion con = new Conexion(); connection = con.get_conexion(); return connection; }/************************************************************************/ public Vector get_amigos_morosos() { String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) return vect; DateFormat df = DateFormat.getDateInstance(); String hoy = new String(df.format(new java.util.Date())); hoy = acomoda_fecha(hoy, '/'); try { est = con.createStatement(); selectSQL = "SELECT AMIGO.nombre, AMIGO.telefono, AMIGO.correoe, " + "ARTICULO.nombre, PRESTAMO.fecha_dev "+ "FROM PRESTAMO, ARTICULO, AMIGO "+ "WHERE PRESTAMO.status = 0 AND PRESTAMO.cve_articulo =ARTICULO.cve_articulo "+ " AND PRESTAMO.cve_amigo = AMIGO.cve_amigo "+ " AND PRESTAMO.fecha_dev < \'" + hoy + "\' " + " ORDER BY AMIGO.nombre, ARTICULO.nombre ;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector_morosos(resset); return vect; } }
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________112
/************************************************************************/ private Vector avector_morosos(ResultSet rset) //TRASPASA EL RESULTSET A UNVECTOR { Vector renglon = null; Vector tabla = null; String dato; try { tabla = new Vector();//probar while (rset.next()) { renglon = new Vector(); for (int i=1; i<=rset.getMetaData().getColumnCount(); i++) { dato = rset.getString(i); if (i == 5) dato = acomoda_fecha(dato, '-'); renglon.add(dato); } tabla.add(renglon); } }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return tabla; }/************************************************************************/ private Vector avector_fecha(ResultSet rset) //TRASPASA EL RESULTSET A UNVECTOR { Vector renglon = null; Vector tabla = null; String dato;
try { tabla = new Vector();//probar while (rset.next()) { renglon = new Vector(); for (int i=1; i<=rset.getMetaData().getColumnCount(); i++) { dato = rset.getString(i); if (i == 3 || i == 4) { dato = acomoda_fecha(dato, '-'); }
renglon.add(dato);
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________113
} tabla.add(renglon); } }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return tabla; }/*****************************************************************************/ private String acomoda_fecha(String fecha, char car) { String dia = "", mes = "", ano = ""; int indice1 = 0, indice2 = 0;
indice2 = fecha.indexOf(car, indice1); dia = fecha.substring(indice1, indice2); indice1 = indice2 + 1;
indice2 = fecha.indexOf(car, indice1); mes = fecha.substring(indice1, indice2); indice1 = indice2 + 1;
ano = fecha.substring(indice1, fecha.length());
if (dia.length() == 1) dia = "0" + dia;
return ano + "/" + mes + "/" + dia; }/**********************************************************************************/ public Vector get_amigos_query() //MOSTRADO DE TODOS LOS ARTICULOS QUESE PUEDEN ELIMINAR { //EXISTEN Y NO ESTÁN PRESTADOS String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion(); if (con == null) return vect; try { est = con.createStatement(); selectSQL = "SELECT AMIGO.nombre, AMIGO.direccion, AMIGO.telefono, "+ " AMIGO.correoe FROM AMIGO "+ " WHERE AMIGO.status = 1 "+ " ORDER BY AMIGO.nombre;";
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________114
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector(resset); return vect; } }/**********************************************************************************//* public static void main (String args[]) { Vector vect; MDAmigo amigo = new MDAmigo(); vect = amigo.get_amigos_query(); System.out.println("salida"); }*/}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________115
CLASE ARTÍCULO
package clases_ros;import java.util.*;import java.sql.*;
public class MDArticulo {/**********************************************************************************/ public int set_articulo(String nombre, int tipo_articulo, String descrip_estado, Connectioncon) { //INSERCION DE UN NUEVO ARTICULO int cve_articulo = -1; //REGRESA SU CVE DE ARTICULO int contador = 0; String insertSQL, selectSQL; ResultSet resel, hay; int registros = -1;
Integer tipo = new Integer(tipo_articulo); String tipo_art = tipo.toString(); try { Statement est = con.createStatement(); selectSQL = "SELECT COUNT(*) FROM ARTICULO;"; hay = est.executeQuery(selectSQL); if (hay.next()) { contador = hay.getInt(1); } if (contador == 0) { cve_articulo = 1; } else { selectSQL = "select maximo = max(cve_articulo) from ARTICULO;"; resel = est.executeQuery(selectSQL); if (resel.next()) { cve_articulo = resel.getInt(1); } else { return -1; } cve_articulo = cve_articulo + 1 ; }
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________116
insertSQL="INSERT INTO ARTICULO (cve_articulo, nombre, tipo_articulo,descrip_estado, disponible, status, ) VALUES("+
cve_articulo + ", '"+ nombre + "', " + tipo_art + ", '" + descrip_estado + "', 1, 1);"; registros = est.executeUpdate(insertSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros == 1) { return cve_articulo; } return registros; }/**********************************************************************************/ public boolean delete_articulo(int cve_articulo) //ELIMINACION LOGICA DELARTICULO { Connection con; String delfSQL; int registros = -1;
con = get_conexion(); if (con == null) return false;
try { Statement est = con.createStatement(); delfSQL="UPDATE ARTICULO SET STATUS = 0, DISPONIBLE = 0 WHEREcve_articulo = " + cve_articulo + ";"; registros = est.executeUpdate(delfSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros != 1) return false; return true; }/**********************************************************************************/ public boolean presta_articulo(int cve_articulo, Connection con) { //PRESTAMO DE ARTICULO => YA NO DISPONIBLE //Connection con; //PARA PRESTAMO NI PARA ELIMINAR String updateSQL; int registros = 0; boolean respuesta = false; Statement est; //con = get_conexion(); if (con == null)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________117
return false;
try { est = con.createStatement(); updateSQL="UPDATE ARTICULO SET DISPONIBLE = 0 WHERE cve_articulo = " +cve_articulo + ";"; registros = est.executeUpdate(updateSQL);
}catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros == 1) respuesta = true; return respuesta; }/**********************************************************************************/ public boolean devuelve_articulo(int cve_articulo, Connection con) { //DEVOLUCIÓN DE UN ARTICULO => DISPONIBLE //Connection con; String updateSQL; int registros = 0; boolean respuesta = false; Statement est; //con = get_conexion(); if (con == null) return false;
try { est = con.createStatement(); updateSQL="UPDATE ARTICULO SET DISPONIBLE = 1 WHERE cve_articulo = " +cve_articulo + ";"; registros = est.executeUpdate(updateSQL);
}catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros == 1) respuesta = true; else respuesta = false; return respuesta; }/**********************************************************************************/ public Vector getArticulos() //LLENADO DE LISTBOX REGISTRO DE PRÉSTAMOS { String selectSQL;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________118
ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) { return vect; }
try { est = con.createStatement(); selectSQL = "SELECT ARTICULO.nombre + '-' + TIPO_ARTICULO.desc_tipo, "+ "ARTICULO.cve_articulo "+ " FROM ARTICULO, TIPO_ARTICULO "+ " WHERE ARTICULO.tipo_articulo = TIPO_ARTICULO.tipo_articulo AND "+ " ARTICULO.disponible = 1 AND ARTICULO.status = 1;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector(resset); return vect; }
}/**********************************************************************************/ public Vector get_articulos_elim() //MOSTRADO DE TODOS LOS ARTICULOS QUESE PUEDEN ELIMINAR { //EXISTEN Y NO ESTÁN PRESTADOS String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) { return vect; }
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________119
try { est = con.createStatement(); selectSQL = "SELECT ARTICULO.nombre, TIPO_ARTICULO.desc_tipo,ARTICULO.descrip_estado, "+ "ARTICULO.cve_articulo, ARTICULO.tipo_articulo "+ " FROM ARTICULO, TIPO_ARTICULO "+ " WHERE ARTICULO.tipo_articulo = TIPO_ARTICULO.tipo_articulo AND "+ " ARTICULO.disponible = 1 AND ARTICULO.status = 1 "+ " ORDER BY TIPO_ARTICULO.desc_tipo, ARTICULO.nombre;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector(resset); return vect; }
}/**********************************************************************************/ private Vector avector(ResultSet rset) //CONVIERTE EN VECTOR EL RESULTSET { //PARA MOSTRARLO EN EL JSP Vector renglon = null; Vector tabla = null; String dato;
try { tabla = new Vector();//probar while (rset.next()) { renglon = new Vector(); for (int i=1; i<=rset.getMetaData().getColumnCount(); i++) { dato = rset.getString(i); renglon.add(dato); } tabla.add(renglon); } }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return tabla;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________120
}/************************************************************************/ public int get_tipo_articulo(int cve_articulo) //EXTRACCION DEL TIPO DE ARTICULO { //PARA DETERMINAR QUE JSP MOSTRAR String selectSQL; ResultSet resset = null; Statement est; Connection con; String dato = ""; int tipo = -1; con = get_conexion();
if (con == null) return tipo;
try { est = con.createStatement(); selectSQL = "SELECT tipo_articulo " + " FROM ARTICULO WHERE cve_articulo = " + cve_articulo +";"; resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return tipo; try { if (resset.next()) dato = resset.getString(1); else return tipo; }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (dato.length() == 0) return tipo; Integer tipo_articulo = new Integer(dato); return tipo_articulo.intValue(); }/**********************************************************************************/ private Connection get_conexion() //CONEXION A LA BD { Connection connection; Conexion con = new Conexion(); connection = con.get_conexion(); return connection; }/**********************************************************************************/
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________121
public Vector getArticulo(int cve_articulo, int tipo_articulo) { //EXTRACCION DE LOS DATOS DEL ARTICULO PARA SUACTUALIZACION String selectSQL; ResultSet resset = null; Vector vect = null; Statement est;
Connection con; con = get_conexion();
if (con == null) return vect;
try { est = con.createStatement(); if (tipo_articulo == 1) { selectSQL = "SELECT ARTICULO.nombre, ARTICULO.descrip_estado,CDMUSICA.interprete, "+ " CDMUSICA.genero, CDMUSICA.num_canciones, CDMUSICA.original,CDMUSICA.tipo " + " FROM ARTICULO, CDMUSICA "+ " WHERE ARTICULO.cve_articulo = " + cve_articulo + " ANDARTICULO.cve_articulo = CDMUSICA.cve_articulo;"; } else { if (tipo_articulo == 2) { selectSQL = "SELECT ARTICULO.nombre, ARTICULO.descrip_estado,CUADERNO.profesor, "+ " CUADERNO.num_materias, CUADERNO.num_hojas " + " FROM ARTICULO, CUADERNO "+ " WHERE ARTICULO.cve_articulo = " + cve_articulo + " ANDARTICULO.cve_articulo = CUADERNO.cve_articulo;"; } else { selectSQL = "SELECT ARTICULO.nombre, ARTICULO.descrip_estado,LIBRO.autor, LIBRO.editorial, "+ " LIBRO.edicion, LIBRO.genero, LIBRO.isbn, LIBRO.num_paginas " + " FROM ARTICULO, LIBRO "+ " WHERE ARTICULO.cve_articulo = " + cve_articulo + " ANDARTICULO.cve_articulo = LIBRO.cve_articulo;"; } } resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________122
catch (Exception e) {} if (resset == null) return vect; else { vect = avector(resset); return vect; }
}/**********************************************************************************/ public boolean update_cd(int cve_articulo, String nombre, String estado, Stringinterprete, String genero, int canciones, int original, int tipo) { int respuesta_art = -1, respuesta_cd = -1; Connection con; String updateSQL; MDCDmusica cd = new MDCDmusica(); con = get_conexion(); if (con == null) //no se puedo conectar return false; try { con.setAutoCommit(false); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {}
respuesta_cd = cd.update_cd(cve_articulo, interprete, genero, canciones, original,tipo, con); respuesta_art = update_articulo(cve_articulo, nombre, estado, con); if (respuesta_art != 1 || respuesta_cd != 1) { try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return false; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return true;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________123
} }/**********************************************************************************/ public boolean update_cuaderno(int cve_articulo, String nombre, String estado, String profesor, int materias, int hojas) { int respuesta_art = -1, respuesta_cuaderno = -1; Connection con; String updateSQL; MDCuaderno cuaderno = new MDCuaderno(); con = get_conexion(); if (con == null) //no se puedo conectar return false; try { con.setAutoCommit(false); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {}
respuesta_cuaderno = cuaderno.update_cuaderno(cve_articulo, profesor, materias,hojas, con); //se actualiza el cuaderno Cuaderno respuesta_art = update_articulo(cve_articulo, nombre, estado, con); //se actualiza elarticulo Articulo if (respuesta_art != 1 || respuesta_cuaderno != 1) { try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return false; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return true; } }/**********************************************************************************/ public boolean update_libro(int cve_articulo, String nombre, String estado, String autor, String editorial, String edicion, String genero, String isbn, int paginas) { int respuesta_art = -1, respuesta_libro = -1; Connection con;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________124
String updateSQL; MDLibro libro = new MDLibro(); con = get_conexion(); if (con == null) //no se puedo conectar return false; try { con.setAutoCommit(false); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {}
respuesta_libro = libro.update_libro(cve_articulo, autor, editorial, edicion, genero, isbn, paginas, con); //se actualiza el libro Libro respuesta_art = update_articulo(cve_articulo, nombre, estado, con); //se actualiza elarticulo Articulo if (respuesta_art != 1 || respuesta_libro != 1) { try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return false; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return true; } }/**********************************************************************************/ private int update_articulo(int cve_articulo, String nombre, String estado, Connection con) { int registros = -1; String updateSQL;
try { Statement est = con.createStatement(); updateSQL="UPDATE ARTICULO SET nombre = '" + nombre + "', descrip_estado ='" + estado + "' WHERE cve_articulo = " + cve_articulo + ";"; registros = est.executeUpdate(updateSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________125
catch (Exception e){} return registros; }/************************************************************************/ public Vector get_art_prestados() { String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) return vect;
try { est = con.createStatement(); selectSQL = "SELECT ARTICULO.nombre, TIPO_ARTICULO.desc_tipo, "+ "PRESTAMO.fecha_prestamo, PRESTAMO.fecha_dev, AMIGO.nombre " + "FROM PRESTAMO, ARTICULO, TIPO_ARTICULO, AMIGO "+ "WHERE PRESTAMO.status = 0 AND PRESTAMO.cve_articulo =ARTICULO.cve_articulo "+ " AND ARTICULO.tipo_articulo = TIPO_ARTICULO.tipo_articulo " + " AND PRESTAMO.cve_amigo = AMIGO.cve_amigo "+ " ORDER BY TIPO_ARTICULO.desc_tipo, ARTICULO.nombre ;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector_fecha(resset); return vect; } }/************************************************************************/ private Vector avector_fecha(ResultSet rset) //TRASPASA EL RESULTSET A UNVECTOR { Vector renglon = null; Vector tabla = null; String dato;
try
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________126
{ tabla = new Vector();//probar while (rset.next()) { renglon = new Vector(); for (int i=1; i<=rset.getMetaData().getColumnCount(); i++) { dato = rset.getString(i); if (i == 3 || i == 4) { dato = acomoda_fecha(dato, '-'); }
renglon.add(dato); } tabla.add(renglon); } }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return tabla; }/**********************************************************************************/ public Vector get_articulos_query() //MOSTRADO DE TODOS LOS ARTICULOS QUESE PUEDEN ELIMINAR { //EXISTEN Y NO ESTÁN PRESTADOS String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) return vect;
try { est = con.createStatement(); selectSQL = "SELECT ARTICULO.nombre, TIPO_ARTICULO.desc_tipo,ARTICULO.descrip_estado, "+ " ARTICULO.disponible FROM ARTICULO, TIPO_ARTICULO "+ " WHERE ARTICULO.tipo_articulo = TIPO_ARTICULO.tipo_articulo AND "+ " ARTICULO.status = 1 "+ " ORDER BY ARTICULO.disponible, TIPO_ARTICULO.desc_tipo,ARTICULO.nombre;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________127
{System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector_disponible(resset); return vect; } }/************************************************************************/ private Vector avector_disponible(ResultSet rset) //TRASPASA EL RESULTSET A UNVECTOR { //TRABAJA SOBRE SI ESTÁS DISPONIBLE O NO Vector renglon = null; Vector tabla = null; String dato;
try { tabla = new Vector();//probar while (rset.next()) { renglon = new Vector(); for (int i=1; i<=rset.getMetaData().getColumnCount(); i++) { dato = rset.getString(i); if (i == 4) { Integer idato = new Integer(dato); int datoi = idato.intValue(); if (datoi == 1) dato = "DISPONIBLE"; else dato = "PRESTADO"; } renglon.add(dato); } tabla.add(renglon); } }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return tabla; }/*****************************************************************************/ private String acomoda_fecha(String fecha, char car) {
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________128
String dia = "", mes = "", ano = ""; int indice1 = 0, indice2 = 0;
indice2 = fecha.indexOf(car, indice1); dia = fecha.substring(indice1, indice2); indice1 = indice2 + 1;
indice2 = fecha.indexOf(car, indice1); mes = fecha.substring(indice1, indice2); indice1 = indice2 + 1;
ano = fecha.substring(indice1, fecha.length());
if (dia.length() == 1) dia = "0" + dia;
return ano + "/" + mes + "/" + dia; }
/**********************************************************************************//* public static void main (String args[]) { Vector bol = null; MDArticulo art = new MDArticulo(); bol = art.get_articulos_query(); System.out.println("ya actualizo el articulo "); }*/}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________129
CLASE MDCDMUSICA
package clases_ros;import java.util.*;import java.sql.*;
public class MDCDmusica{/******************************************************************************************/ public int set_cd(String nombre, int tipo_articulo, String descrip_estado, String interprete, String genero, int canciones, int original, int tipo) { int cve_articulo = -1; int registros = -1; Connection con; String insertSQL; MDArticulo art= new MDArticulo();
con = get_conexion(); if (con == null) //no se puedo conectar return -2; try {con.setAutoCommit(false); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {}
cve_articulo = art.set_articulo(nombre, tipo_articulo, descrip_estado, con); if (cve_articulo == -1) return -1; try { Statement est = con.createStatement(); insertSQL="INSERT INTO CDMUSICA VALUES("+ cve_articulo + ", '"+ interprete + "', '" + genero + "', " + canciones + ", " + original + ", " + tipo + ");"; registros = est.executeUpdate(insertSQL);
}catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros != 1) { try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________130
return -1; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return registros; } }
/******************************************************************************************/ public int update_cd(int cve_articulo, String interprete, String genero, int canciones, intoriginal, int tipo, Connection con) { int registros = -1; String updateSQL;
try { Statement est = con.createStatement(); updateSQL="UPDATE CDMUSICA SET interprete = '"+ interprete + "', genero = '" +genero + "', num_canciones = " + canciones + ", original = " + original + ", tipo = " + tipo + " WHERE cve_articulo = " + cve_articulo + ";"; registros = est.executeUpdate(updateSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return registros; }/******************************************************************************************/ private Connection get_conexion() { Connection connection; Conexion con = new Conexion(); connection = con.get_conexion(); return connection; }/******************************************************************************************//* public static void main (String args[]) { int l; MDCDmusica cd = new MDCDmusica(); l = cd.update_cd("CHICAGO MOVIE", "SOUNDTRACKS", 14, 1, 1);
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________131
System.out.println(l); }*/}
CLASE MDCUADERNO
package clases_ros;import java.util.*;import java.sql.*;
public class MDCuaderno {/*************************************************************************************/ public int set_cuaderno(String nombre, int tipo_articulo, String descrip_estado, String profesor, int num_materias, int num_hojas) { int cve_articulo = -1; int registros = -1; Connection con; String insertSQL; MDArticulo art= new MDArticulo();
con = get_conexion(); if (con == null) //no se puedo conectar return -2; try {con.setAutoCommit(false); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {}
cve_articulo = art.set_articulo(nombre, tipo_articulo, descrip_estado, con); if (cve_articulo == -1) return -1;
try { Statement est = con.createStatement(); insertSQL="INSERT INTO CUADERNO VALUES("+ cve_articulo + ", " + num_materias + ", " + num_hojas + ", '" + profesor + "');"; registros = est.executeUpdate(insertSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){}
if (registros != 1)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________132
{ try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return -1; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return registros; } }/*************************************************************************************/ public int update_cuaderno(int cve_articulo, String profesor, int materias, int hojas,Connection con) { int registros = -1; String updateSQL;
try { Statement est = con.createStatement(); updateSQL="UPDATE CUADERNO SET num_materias = " + materias + ", num_hojas= " + hojas + ", profesor = '" + profesor + "' WHERE cve_articulo = " + cve_articulo + ";"; registros = est.executeUpdate(updateSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} return registros; }/*************************************************************************************/ private Connection get_conexion() { Connection connection; Conexion con = new Conexion(); connection = con.get_conexion(); return connection; }/*************************************************************************************//* public static void main (String args[]) { int l;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________133
MDCuaderno cuaderno = new MDCuaderno(); l = cuaderno.set_cuaderno("ANALISIS DE ALGORITMOS", 2, "MAS O MENOS", 3,100); System.out.println(l); }*/}
CLASE MDLIBROpackage clases_ros;import java.util.*;import java.sql.*;
public class MDLibro{/******************************************************************************************/ public int set_libro(String nombre, int tipo_articulo, String descrip_estado, String autor, String editorial, String edicion, String genero, String isbn, int paginas) { int cve_articulo = -1; int registros = -1; Connection con; String insertSQL; MDArticulo art= new MDArticulo();
con = get_conexion(); if (con == null) //no se puedo conectar return -2; try {con.setAutoCommit(false); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {}
cve_articulo = art.set_articulo(nombre, tipo_articulo, descrip_estado, con); if (cve_articulo == -1) return -1; try { Statement est = con.createStatement(); insertSQL="INSERT INTO LIBRO VALUES("+ cve_articulo + ", '"+ autor + "', '" + editorial + "', '" + edicion + "', '"+ genero + "', '" + isbn + "', " + paginas + ");"; System.out.println(insertSQL); registros = est.executeUpdate(insertSQL);
}catch (SQLException ex)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________134
{System.out.println( ex.getMessage() );} catch (Exception e) {} if (registros != 1) { try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return -1; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return registros; } }/******************************************************************************************/ public int update_libro(int cve_articulo, String autor, String editorial, String edicion, String genero, String isbn, int paginas, Connection con) { int registros = -1; String updateSQL;
try { Statement est = con.createStatement(); updateSQL="UPDATE LIBRO SET autor = '" + autor + "', editorial = '" + editorial + "', edicion = '" + edicion + "', genero = '" + genero + "', isbn = '" + isbn + "', num_paginas = " + paginas + " WHERE cve_articulo = " + cve_articulo + ";"; registros = est.executeUpdate(updateSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return registros; }/******************************************************************************************/ private Connection get_conexion() { Connection connection; Conexion con = new Conexion(); connection = con.get_conexion(); return connection; }
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________135
/******************************************************************************************//* public static void main (String args[]) { int l; MDLibro libro = new MDLibro(); l = libro.set_libro("POWER BUILDER 6", 3, "NUEVO", "ROBERTO PEREZ","PRESSMAN", "2A EDICION", "PROGRAMACION", "1234567899632", 500); System.out.println(l); }*/}
CLASE PRESTAMO
package clases_ros;
import java.text.*;import java.util.*;import java.sql.*;
public class MDPrestamo {
public void MDPrestamo() { }/************************************************************************/ private Connection get_conexion() { Connection connection; Conexion con = new Conexion(); connection = con.get_conexion(); return connection; }/************************************************************************/ public Vector get_prestamos() { String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________136
if (con == null) { return vect; }
try { est = con.createStatement(); selectSQL = "SELECT ARTICULO.nombre, AMIGO.nombre,TIPO_ARTICULO.desc_tipo, "+ "PRESTAMO.fecha_dev, PRESTAMO.cve_prestamo, "+ "PRESTAMO.cve_articulo, PRESTAMO.cve_amigo, " + "ARTICULO.tipo_articulo, "+ "PRESTAMO.fecha_prestamo FROM PRESTAMO, ARTICULO,TIPO_ARTICULO, "+ "AMIGO WHERE PRESTAMO.cve_articulo = ARTICULO.cve_articulo AND "+ "PRESTAMO.cve_amigo = AMIGO.cve_amigo AND PRESTAMO.status = 0AND "+ " ARTICULO.tipo_articulo = TIPO_ARTICULO.tipo_articulo " + " ORDER BY PRESTAMO.fecha_dev, ARTICULO.nombre ;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector(resset); return vect; }
}/************************************************************************/ private Vector avector(ResultSet rset) //TRASPASA EL RESULTSET A UN VECTOR { Vector renglon = null; Vector tabla = null; String dato;
DateFormat df = DateFormat.getDateInstance(); java.util.Date fecha;
try { tabla = new Vector();//probar while (rset.next()) {
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________137
renglon = new Vector(); for (int i=1; i<=rset.getMetaData().getColumnCount(); i++) { dato = rset.getString(i); if (i == 4) { dato = acomoda_fecha(dato, '-'); }
renglon.add(dato); } tabla.add(renglon); } }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return tabla; }
/************************************************************************/ public boolean set_prestamo(int articulo, int amigo, String fecha_prestamo, Stringfecha_dev) { int registros = -1; MDArticulo art = new MDArticulo(); boolean ubol = false; Connection con; String insertSQL;
con = get_conexion(); if (con == null) //no se puedo conectar return false; /*VALIDACION DE LA FECHA DE PRESTAMOS*/ boolean bofecha = false; String fecha_prestamo2 = "", fecha_dev2 = ""; bofecha = valida_fecha(fecha_prestamo); //VALIDACION FECHA PRESTAMO if (!bofecha) return false; bofecha = valida_fecha(fecha_dev); //VALIDACION FECHA DEVOLUCION if (!bofecha) return false;
fecha_prestamo2 = acomoda_fecha(fecha_prestamo, '/'); //SE ACOMODA FECHA DE2003/05/27 A 27/05/2003 fecha_dev2 = acomoda_fecha(fecha_dev, '/'); //SE ACOMODA FECHA DE 2003/05/27A 27/05/2003 try {
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________138
con.setAutoCommit(false); Statement est = con.createStatement();
insertSQL="INSERT INTO PRESTAMO (cve_articulo, cve_amigo, fecha_prestamo, "+ "fecha_dev, status) VALUES(" + articulo + ", " + amigo + ", \'" +fecha_prestamo2 + "\', \'" + fecha_dev2 + "\', 0);"; registros = est.executeUpdate(insertSQL); }catch (SQLException ex) { System.out.println( ex.getMessage() ); } catch (Exception e) {System.out.println( e.getMessage() );}
ubol = art.presta_articulo(articulo, con); if (registros != 1 || ubol == false) { try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return false; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return true; } }/*****************************************************************************/ private String acomoda_fecha(String fecha, char car) //TRASPASA LA FECHA DEDD/MM/AAAA A AAAA/MM/DD { String dia = "", mes = "", ano = ""; int indice1 = 0, indice2 = 0;
indice2 = fecha.indexOf(car, indice1); dia = fecha.substring(indice1, indice2); indice1 = indice2 + 1;
indice2 = fecha.indexOf(car, indice1); mes = fecha.substring(indice1, indice2); indice1 = indice2 + 1;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________139
ano = fecha.substring(indice1, fecha.length());
if (dia.length() == 1) dia = "0" + dia;
return ano + "/" + mes + "/" + dia; }
/*****************************************************************************/ private boolean valida_fecha (String fecha) //VALIDA QUE LA FECHA TRAIGA SUSDOS / { int indice1 = 0, indice2 = 0; int contador = 0; if (fecha.length() < 8) return false; while (indice2 < fecha.length()) { indice2 = fecha.indexOf('/', indice1); if (indice2 != -1) { contador = contador + 1; indice1 = indice2 + 1; } else indice2 = fecha.length(); } if (contador == 2) { return true; } else return false; }
/*****************************************************************************/ public boolean devolucion(int cve_prestamo) { int articulo = -1; int registros = -1; MDArticulo art = new MDArticulo(); boolean ubol = false; Connection con; String updateSQL;
con = get_conexion(); if (con == null) //no se puedo conectar return false; /*VALIDACION DE LA FECHA DE PRESTAMOS*/
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________140
try { con.setAutoCommit(false); Statement est = con.createStatement();
updateSQL="UPDATE PRESTAMO SET status = 1 WHERE cve_prestamo = " +cve_prestamo + ";"; registros = est.executeUpdate(updateSQL); }catch (SQLException ex) { System.out.println( ex.getMessage() ); } catch (Exception e) {System.out.println( e.getMessage() );} articulo = get_articulo(cve_prestamo); ubol = art.devuelve_articulo(articulo, con); if (registros != 1 || ubol == false) { try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return false; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return true; } }/*****************************************************************************/ public boolean cambia_fecha(int cve_prestamo, String fecha) //AMPLIAR FECHA DEPRÉSTAMOS { int registros = -1; boolean ubol = false; Connection con; String updateSQL; String fecha2 = "";
con = get_conexion(); if (con == null) //no se puedo conectar return false;
/*VALIDACION DE LA FECHA DE PRESTAMOS*/
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________141
boolean bofecha = false; bofecha = valida_fecha(fecha); //VALIDACION FECHA PRESTAMO if (!bofecha) return false; fecha2 = acomoda_fecha(fecha, '/'); //SE ACOMODA FECHA DE 2003/05/27 A27/05/2003
try { con.setAutoCommit(false); Statement est = con.createStatement();
updateSQL="UPDATE PRESTAMO SET fecha_dev = \'" + fecha2 + "\' "+ " WHERE cve_prestamo = " + cve_prestamo + ";";
registros = est.executeUpdate(updateSQL); }catch (SQLException ex) { System.out.println( ex.getMessage() ); } catch (Exception e) {System.out.println( e.getMessage() );} if (registros != 1) { try { con.rollback(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return false; } else { try { con.commit(); }catch (SQLException ex) {System.out.println( ex.getMessage() );} return true; } }/************************************************************************/ public int get_articulo(int cve_prestamo) //ME DA LA CLAVE DE ARTICULO QUETIENE ESTE PRESTAMO { String selectSQL; ResultSet resset = null; Statement est; Connection con; String dato = "";
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________142
int articulo = -1; con = get_conexion();
if (con == null) return articulo;
try { est = con.createStatement(); selectSQL = "SELECT cve_articulo " + " FROM PRESTAMO WHERE cve_prestamo = " + cve_prestamo +";"; resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return articulo; try { if (resset.next()) dato = resset.getString(1); else return articulo; }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (dato.length() == 0) return articulo; Integer art = new Integer(dato); return art.intValue(); }/************************************************************************/ public String get_desc_articulo(int cve_prestamo) //TRAE LA DESC DEL ARTICULOEN ESTE PRESTAMO { String selectSQL; ResultSet resset = null; Statement est; Connection con; String articulo = ""; con = get_conexion();
if (con == null) return articulo;
try { est = con.createStatement(); selectSQL = "SELECT ARTICULO.nombre " +
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________143
"FROM PRESTAMO, ARTICULO "+ "WHERE PRESTAMO.cve_prestamo = " + cve_prestamo + " " + " AND PRESTAMO.cve_articulo = ARTICULO.cve_articulo;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return articulo;
try { if (resset.next()) articulo = resset.getString(1); else return articulo; }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (articulo.length() == 0) return ""; return articulo; }/************************************************************************/ public String get_desc_tipo_articulo(int cve_prestamo) { String selectSQL; ResultSet resset = null; Statement est; Connection con; String tipo = ""; con = get_conexion();
if (con == null) return tipo;
try { est = con.createStatement(); selectSQL = "SELECT TIPO_ARTICULO.desc_tipo " + "FROM PRESTAMO, ARTICULO, TIPO_ARTICULO "+ "WHERE PRESTAMO.cve_prestamo = " + cve_prestamo + " " + " AND PRESTAMO.cve_articulo = ARTICULO.cve_articulo " + " AND ARTICULO.tipo_articulo = TIPO_ARTICULO.tipo_articulo;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________144
{} if (resset == null) return tipo; try { if (resset.next()) tipo = resset.getString(1); else return tipo; }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (tipo.length() == 0) return ""; return tipo; }/************************************************************************/ public String get_amigo(int cve_prestamo) { String selectSQL; ResultSet resset = null; Statement est; Connection con; String amigo = ""; con = get_conexion();
if (con == null) return amigo;
try { est = con.createStatement(); selectSQL = "SELECT AMIGO.nombre " + "FROM PRESTAMO, AMIGO "+ "WHERE PRESTAMO.cve_prestamo = " + cve_prestamo + " " + " AND PRESTAMO.cve_amigo = AMIGO.cve_amigo;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return amigo; try { if (resset.next()) amigo = resset.getString(1); else return amigo;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________145
}catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (amigo.length() == 0) return ""; return amigo; }/************************************************************************/ public String get_fechadev(int cve_prestamo) { String selectSQL; ResultSet resset = null; Statement est; Connection con; String fecha = ""; con = get_conexion();
if (con == null) return fecha;
try { est = con.createStatement(); selectSQL = "SELECT PRESTAMO.fecha_dev " + "FROM PRESTAMO "+ "WHERE PRESTAMO.cve_prestamo = " + cve_prestamo + ";";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return fecha; try { if (resset.next()) fecha = resset.getString(1); else return fecha; }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e){} if (fecha.length() == 0) return ""; return acomoda_fecha(fecha, '-'); }/*****************************************************************************//* public static void main (String args[])
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________146
{ boolean bol = false; MDPrestamo prest = new MDPrestamo(); bol = prest.cambia_fecha(17, "10/06/2003");
DateFormat df = DateFormat.getDateInstance(); System.out.println(df.format(new java.util.Date())); }*/}
CLASE PROPIETARIO
package clases_ros;import java.util.*;import java.sql.*;
public class MDPropietario { private String miusuario; private String mipassword; private String elpassword;
public MDPropietario(String usuario, String password){ miusuario = usuario; mipassword = password;} private boolean get_password(Connection con) { String selectSQL, pass; PreparedStatement est; ResultSet rset; try { selectSQL = "SELECT usuario, password FROM propietario WHERE usuario = ?"; est = con.prepareCall(selectSQL); est.setString(1,miusuario); rset = est.executeQuery(); if (rset.next()) { elpassword = rset.getString(2); return true; } else return false; }catch (SQLException ex)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________147
{System.out.println( ex.getMessage() );} catch (Exception e) {} return false; } public boolean validar_usuario() { Connection con; boolean get; String pass = "", selectSQL;
con = get_conexion(); if (con == null) { return false; }
get = this.get_password(con); if (get == false) { return false; }
if (mipassword.equals(elpassword)) { return true; } else { return false; } }
private Connection get_conexion() { Connection connection; Conexion con = new Conexion(); connection = con.get_conexion(); return connection; }/* public static void main (String args[]) { boolean resultado; MDPropietario prop = new MDPropietario("ROSA", "AGUILA12345"); resultado = prop.validar_usuario(); System.out.println(resultado); }*/}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________148
CLASE MDTIPOART
package clases_ros;import java.text.*;import java.util.*;import java.sql.*;public class MDTipoart{/************************************************************************/ public MDTipoart() { }/************************************************************************/ private Connection get_conexion() { Connection connection; Conexion con = new Conexion(); connection = con.get_conexion(); return connection; }/************************************************************************/ public Vector get_tipos() { String selectSQL; ResultSet resset = null; Vector vect = null; Statement est; Connection con; con = get_conexion();
if (con == null) { return vect; }
try { est = con.createStatement(); selectSQL = "SELECT desc_tipo, tipo_articulo " + "FROM TIPO_ARTICULO ;";
resset = est.executeQuery(selectSQL); }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} if (resset == null) return vect; else { vect = avector(resset);
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________149
return vect; }
}/************************************************************************/ private Vector avector(ResultSet rset) //TRASPASA EL RESULTSET A UN VECTOR { Vector renglon = null; Vector tabla = null; String dato;
try { tabla = new Vector();//probar while (rset.next()) { renglon = new Vector(); for (int i=1; i<=rset.getMetaData().getColumnCount(); i++) { dato = rset.getString(i); renglon.add(dato); } tabla.add(renglon); } }catch (SQLException ex) {System.out.println( ex.getMessage() );} catch (Exception e) {} return tabla; }/*****************************************************************************//* public static void main (String args[]) { Vector vect = new Vector(); MDTipoart tipo = new MDTipoart(); vect = tipo.get_tipos(); }*/}
package clases_ros;
import java.util.*;
public class Prestamo { private MDPrestamo prestamo; private Vector prestamos;
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________150
public Prestamo() { }/************************************************************************************/ public Vector getPrestamos() { prestamo = new MDPrestamo(); prestamos = new Vector(); prestamos = prestamo.get_prestamos(); return prestamos; }/************************************************************************************/ public boolean set_prestamo(int articulo, int amigo, String fecha_prestamo, Stringfecha_dev) { prestamo = new MDPrestamo(); return prestamo.set_prestamo(articulo, amigo, fecha_prestamo, fecha_dev); }/************************************************************************************/ public boolean devolucion(int cve_prestamo) { prestamo = new MDPrestamo(); return prestamo.devolucion(cve_prestamo); }/************************************************************************************/ public String get_desc_articulo(int cve_prestamo) { prestamo = new MDPrestamo(); return prestamo.get_desc_articulo(cve_prestamo); }/************************************************************************************/ public String get_desc_tipo_articulo(int cve_prestamo) { prestamo = new MDPrestamo(); return prestamo.get_desc_tipo_articulo(cve_prestamo); }/************************************************************************/ public String get_amigo(int cve_prestamo) { prestamo = new MDPrestamo(); return prestamo.get_amigo(cve_prestamo); }/************************************************************************/ public String get_fechadev(int cve_prestamo) { prestamo = new MDPrestamo(); return prestamo.get_fechadev(cve_prestamo); }/*****************************************************************************/ public boolean cambia_fecha(int cve_prestamo, String fecha)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________151
{ prestamo = new MDPrestamo(); return prestamo.cambia_fecha(cve_prestamo, fecha); }/************************************************************************************//* public static void main(String[] args) { Vector vect; Prestamo prest = new Prestamo(); vect = prest.getPrestamos(); System.out.println("VAMONOS"); } */}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________152
CLASE TIPOART
package clases_ros;import java.util.*;
public class Tipoart { private MDTipoart dTipoart; private Vector tipos;
public Tipoart() { }/************************************************************************************/ public Vector get_tipos() { dTipoart = new MDTipoart(); tipos = new Vector(); tipos = dTipoart.get_tipos(); return tipos; }/************************************************************************************//* public static void main(String[] args) { Vector vect; Prestamo prest = new Prestamo(); vect = prest.getPrestamos(); System.out.println("VAMONOS"); } */}
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________153
PLAN DE PRUEBAS UNITARIAS Y SU EJECUCIÓN
Clase ConexionMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
Connection :get_conexion()
BD y datos correctos(“SAP”, “SAP”, “SAP”)
Conexión exitosa, objetoconnection válido.
Conexión exitosa, objetoconnection válido.
Referencia de datosincorrecta
Objeto connection nulo. Objeto conneciton nulo.
Usuario o passwordincorrectos
Objeto connection nulo. Objeto conneciton nulo.
Clase MDArticuloMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
Int : set_articulo(Stringnombre, inttipo_articulo, Stringdescrip_estado)
set_articulo(“ernestohernandez uribe”, 2,“maleta”)
Inserción correcta delnuevo registro en la tablaARTICULO.
Nuevo registro en latabla ARTICULO.
set_articulo(“ernestohernandez uribe”, 2,“maleta”), obteniendo lacve_articulo
Inserción correcta delnuevo ARTICULO, ycomo resultado lacve_articulo.
No se insertó nuevoregistro, cve_articuloincorrecta.
set_articulo(“ernestohernandez uribe”, 2,“maleta”), obteniendo lacve_articulo
Inserción correcta delnuevo ARTICULO, ycomo resultado lacve_articulo.
Nuevo artículo insertado,y como resultado su cveque se le asignó.
Set_articulo(“ANALISIS DEALGORITMOS”, 2, “DOSTRES”), con tablaARTICULO vacía.
Inserción correcta delnuevo ARTÍCULO ytener como resultado lacve_articulo.
Inserción correcta delnuevo ARTÍCULO y sinningún resultado.
Set_articulo(“ANALISIS DEALGORITMOS”, 2, “DOSTRES”), con tablaARTICULO vacía.
Inserción correcta delnuevo ARTÍCULO ytener como resultado lacve_articulo.
No se inserta el nuevoARTICULO.
Set_articulo(“ANALISIS DEALGORITMOS”, 2, “DOSTRES”), con tablaARTICULO vacía.
Inserción correcta delnuevo ARTÍCULO ytener como resultado lacve_articulo.
Artículo insertadocorrectamente y comoresultado sucve_articulo.
Connection :get_conexion
get_conexion() Conexión a la BD. Conexión a la BD.
int deletef_articulo(intcve_articulo)
deletef_articulo(2); 2existe.
El ARTICULO concve_articulo 2 eliminado.
ARTICULO, noeliminado.
deletef_articulo(2); 2existe.
El ARTICULO concve_articulo 2 eliminado.
ARTICULO concve_articulo eliminado.
deletef_articulo(2); 2 noexiste.
El ARTICULO noeliminado.
El ARTICULO noeliminado.
deletef_articulo(2); tablavacía.
El ARTICULO noeliminado, sin truenes.
El ARTICULO noeliminado, sin truenes.
int deletel_articulo(intcve_articulo)
deletel_articulo(2); 2existe.
El ARTICULO concve_articulo 2 eliminadológicamente. (status = 0)
El ARTICULO concve_articulo 2 eliminadológicamente. (status = 0)
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________154
deletel_articulo(2); 2 noexiste.
No se elimina ningúnARTICULO
No se elimina ningúnARTICULO
deletel_articulo(2); 2 tablavacía.
No se elimina ningúnARTICULO
No se elimina ningúnARTICULO
ResulSet:get_articulos_disp()
get_articulos_disp() ResulSet con todos losartículos disponibles(disponible == 1, status==1)
ResulSet con todos losartículos disponibles(disponible == 1, status==1)
ResulSet: get_articulo(int cve_articulo)
get_articulo(1) ResulSet con el articuloque tiene la cve_articulo1.
ResulSet con el articuloque tiene la cve_articulo1.
get_articulo(3);cve_articulo == 3 noexiste.
ResulSet vacío. ResulSet vacío.
Boolean:prestar(cve_articulo)
prestar(3); cve_articulo==3 existe
Articulo con cve_articulo==3, disponible = 0
Articulo con cve_articulo==3, disponible = 0
prestar(3); cve_articulo==3 no existe
Sin cambios. Sin cambios.
ClaseMDCuadernoMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
Connection :get_conexion()
get_conexion() Conexión a la BD. Conexión a la BD.
int set_cuaderno(Stringnombre, inttipo_articulo, Stringdescrip_estado, intnum_materias, intnum_hojas)
set_cuaderno("ANALISIS DEALGORITMOS", 2, "MAS OMENOS", 3, 100)
Inserción correcta denuevo ARTICULO y denuevo CUADERNO,con la mismacve_articulo.
Inserción correcta denuevo ARTICULO y denuevo CUADERNO,con la mismacve_articulo.
set_cuaderno("ANALISIS DEALGORITMOS", 2, "MAS OMENOS", 3, 100)Tratando de insertar a tablasCUADERNOS tabla que noexiste
Inserta nuevoARTICULO, no puedeinsertar nuevoCUADERNO y seelimina el ARTICULOinicial.
Inserta nuevoARTICULO, no puedeinsertar nuevoCUADERNO y NO seelimina el ARTICULOinicial.
set_cuaderno("ANALISIS DEALGORITMOS", 2, "MAS OMENOS", 3, 100)Tratando de insertar a tablasCUADERNOS tabla que noexiste
Inserta nuevoARTICULO, no puedeinsertar nuevoCUADERNO y seelimina el ARTICULOinicial.
Inserta nuevoARTICULO, no puedeinsertar nuevoCUADERNO y seelimina el ARTICULOinicial.
set_cuaderno("ANALISIS DEALGORITMOS", 2, "MAS OMENOS", 3, 100)con tabla ARTICULO yCUADERNO vacías.
Inserción correcta denuevo ARTICULO y denuevo CUADERNO,con la mismacve_articulo.
Inserción correcta denuevo ARTICULO y denuevo CUADERNO,con la mismacve_articulo.
intdeletef_cuaderno(intcve_articulo)
Deletf_cuaderno(2); 2 existe. Eliminación física delCUADERNO concve_articulo ==2.
Eliminación física delCUADERNO concve_articulo ==2.
Deletf_cuaderno(2); 2 NOexiste.
No se elimina nada. No se elimina nada.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________155
Deletf_cuaderno(2); tablavacía.
No se elimina nada. No se elimina nada.
int deletel_cuaderno(intcve_articulo)
Deletl_cuaderno(2); 2 existe. Se actualiza alCUADERNO concve_articulo ==2,ARTICULO.status = 0.
Se actualiza alCUADERNO concve_articulo ==2,ARTICULO.status = 0.
Deletl_cuaderno(2); 2 NOexiste.
No se elimina nada. No se elimina nada.
Deletl_cuaderno(2); tablavacía.
No se elimina nada. No se elimina nada.
ResultSetget_cuaderno(cve_articulo)
Get_cuaderno(2) ResultSet con elCUADERNO decve_articulo ==2
ResultSet con elCUADERNO decve_articulo ==2
Get_cuaderno(2), clave 2 noexiste
ResultSet vacío. ResultSet vacío.
Get_cuaderno(2), la tablaCUADERNO vacía.
ResultSet vacío. ResultSet vacío.
ClaseMDCDMusicaMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
Connection :get_conexion()
get_conexion() Conexión a la BD. Conexión a la BD.
int set_cd(Stringnombre, inttipo_articulo, Stringdescrip_estado, Stringinterprete, Stringgenero, intnum_canciones, bitoriginal, bit tipo)
set_cd("METHEORA", 1,"MAS O MENOS", “LINKINPARK”, “ROCKALTERNATIVO”, 15, 1, 1)
Inserción correcta denuevo ARTICULO y denuevo CDMUSICA, conla misma cve_articulo.
Inserción correcta denuevo ARTICULO y denuevo CDMUSICA, conla misma cve_articulo.
set_cd("METHEORA", 1,"MAS O MENOS", “LINKINPARK”, “ROCKALTERNATIVO”, 15, 1, 1)En la tabla CDMUSIC, queno existe.
No se inserta nada. No se inserta nada.
set_cd("METHEORA", 1,"MAS O MENOS", “LINKINPARK”, “ROCKALTERNATIVO”, 15, 1, 1)TABLAS ARTICULO YCDMUSICA vacías.
Inserción correcta denuevo ARTICULO y denuevo CDMUSICA, conla misma cve_articulo.
Inserción correcta denuevo ARTICULO y denuevo CDMUSICA, conla misma cve_articulo.
int deletef_cd(intcve_articulo)
deletf_cd(2); 2 existe. Eliminación física delCDMUSICA concve_articulo ==2.
Eliminación física delCDMUSICA concve_articulo ==2.
deletf_cd(2); 2 no existe. No se elimina nada. No se elimina nada.deletf_cd(2); tabla vacía. No se elimina nada. No se elimina nada.
Int: deletel_cd(intcve_articulo)
deletl_cd(2); 2 existe. Se actualiza alCDMUSICA concve_articulo ==2,ARTICULO.status = 0.
No se actualiza alCDMUSICA concve_articulo ==2.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________156
deletl_cd(2); 2 existe. Se actualiza alCDMUSICA concve_articulo ==2,ARTICULO.status = 0.
Se actualiza alCDMUSICA concve_articulo ==2,ARTICULO.status = 0.
deletl_cd(2); 2 NO existe. No se elimina nada. No se elimina nada.deletl_cd(2); tabla vacía. No se elimina nada. No se elimina nada.
ResultSet: get_CD(intcve_articulo)
get_CD(2); 2 existe. ResultSet con elCDMUSICA concve_articulo ==2.
ResultSet con elCDMUSICA concve_articulo ==2.
get_CD(2); 2 no existe. ResultSet vacío. ResultSet vacío.get_CD(2); CDMUSICAvacía.
ResultSet vacío. ResultSet vacío.
Clase MDLibroMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
Connection :get_conexion()
get_conexion() Conexión a la BD. Conexión a la BD.
int set_libro(Stringnombre, inttipo_articulo, Stringdescrip_estado, Stringautor, String editorial,String edicion, Stringgenero, String ISBN,int num_paginas)
set_libro("JSPPROGRAMMING", 3,"MAS O MENOS",“ERNETO HERNÁNDEZ”,“LOPEZ ED”, “2ª ED”,“TECNICO”,“5555555555555”, 450)
Inserción correcta denuevo LIBRO y de nuevoARTICULO, con lamisma cve_articulo.
Inserción correcta denuevo LIBRO y de nuevoARTICULO, con lamisma cve_articulo.
set_libro("JSPPROGRAMMING", 3,"MAS O MENOS",“ERNETO HERNÁNDEZ”,“LOPEZ ED”, “2ª ED”,“TECNICO”,“5555555555555”, 450); enla tabla LIBR que noexiste.
No se inserta nada. No se inserta nada.
set_libro("JSPPROGRAMMING", 3,"MAS O MENOS",“ERNETO HERNÁNDEZ”,“LOPEZ ED”, “2ª ED”,“TECNICO”,“5555555555555”, 450);tablas ARTICULO YLIBRO vacías.
Inserción correcta denuevo ARTICULO y denuevo LIBRO, con lamisma cve_articulo.
Inserción correcta denuevo ARTICULO y denuevo LIBRO, con lamisma cve_articulo.
int deletef_libro(intcve_articulo)
deletf_libro(3); 3 existe. Eliminación física delLIBRO con cve_articulo==3.
Eliminación física delLIBRO con cve_articulo==3.
deletf_libro(3); 3 no existe. No se elimina nada. No se elimina nada.deletf_libro(3); tabla vacía. No se elimina nada. No se elimina nada.
Int: deletel_libro(intcve_articulo)
deletl_libro(3); 3 existe. Se actualiza al LIBROcon cve_articulo ==3,ARTICULO.status = 0.
Se actualiza al LIBROcon cve_articulo ==3.
deletl_libro(3); 3 NO existe. No se elimina nada. No se elimina nada.deletl_libro(3); tabla vacía. No se elimina nada. No se elimina nada.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________157
ResultSet: get_libro(intcve_articulo)
get_libro(3); 3 existe. ResultSet con el LIBROcon cve_articulo ==3.
ResultSet con el LIBROcon cve_articulo ==3.
get_libro(3); 3 no existe. ResultSet vacío. ResultSet vacío.get_libro(3); LIBRO vacía. ResultSet vacío. ResultSet vacío.
Clase MDAmigoMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
Connection :get_conexion()
get_conexion() Conexión a la BD. Conexión a la BD.
int set_amigo(Stringnombre, Stringdireccion, Stringtelefono, Stringcorreoe)
set_amigo("ERNESTOHERNANDEZ URIBE",“PINO #8 COL LOSENCINOS”, "56-89-78-74",“ramirez@hahoo.com”)
Inserción correcta denuevo AMIGO.
Inserción correcta denuevo AMIGO.
set_amigo("ERNESTOHERNANDEZ URIBE",“PINO #8 COL LOSENCINOS”, "56-89-78-74",“ramirez@hahoo.com”); enla tabla AMIG que noexiste
No se inserta nada. No se inserta nada.
set_amigo("ERNESTOHERNANDEZ URIBE",“PINO #8 COL LOSENCINOS”, "56-89-78-74",“ramirez@hahoo.com”);tabla AMIGO vacía.
Inserción correcta denuevo AMIGO.
Inserción correcta denuevo AMIGO.
int deletef_amigo(intcve_amigo)
deletf_amigo(3); 3 existe. Eliminación física delAMIGO con cve_amigo==3.
Eliminación física delAMIGO con cve_amigo==3.
deletf_amigo(3); 3 noexiste.
No se elimina nada. No se elimina nada.
deletf_amigo(3); tablavacía.
No se elimina nada. No se elimina nada.
Int: deletel_amigo(intcve_amigo)
deletl_amigo(3); 3 existe. Se actualiza al AMIGOcon cve_amigo ==3.
Se actualiza al AMIGOcon cve_amigo ==3.
deletl_amigo(3); 3 NOexiste.
No se elimina nada. No se elimina nada.
deletl_amigo(3); tablavacía.
No se elimina nada. No se elimina nada.
ResultSet:get_amigo(intcve_amigo)
get_amigo(3); 3 existe. ResultSet con el AMIGOcon cve_amigo ==3.
ResultSet con el AMIGOcon cve_amigo ==3.
get_amigo(3); 3 no existe. ResultSet vacío. ResultSet vacío.get_amigo(3); AMIGOvacía.
ResultSet vacío. ResultSet vacío.
ResultSet:get_amigos()
get_amigos() ResultSet con losAMIGOS (status == 1)
ResultSet con losAMIGOS (status == 1)
get_amigos(), AMIGOvacía.
ResultSet vacío. ResultSet vacío.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________158
ClaseMDPropietarioMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
MDPropietario:MDPropietario(Stringusuario, Stringpassword)
MDPropietario(“ROSA”,“AGUILA12345”)
Nuevo objetoMDPropietario
Nuevo objetoMDPropietario
String : get_conexion() get_conexion() Conexión a la BD. Conexión a la BD.int set_amigo(Stringnombre, Stringdireccion, Stringtelefono, Stringcorreoe)
set_amigo("ERNESTOHERNANDEZ URIBE",“PINO #8 COL LOSENCINOS”, "56-89-78-74",“ramirez@hahoo.com”)
Inserción correcta denuevo AMIGO.
Inserción correcta denuevo AMIGO.
Boolean :get_password(Connection con)
Get_password(con)(LOS DATOS SONCORRECTOS)
TRUE TRUE
Get_password(con)MDPropietario(“ROS”,“AGUILA12345”)USUARIO NOEXISTENTE.
FALSE FALSE
Get_password(con)MDPropietario(“ROSA”,“AGUILA1234”) USUARIOEXISTENTE, PEROPASSWORDINCORRECTO.
TRUE TRUE
Bolean:validar_usuario()
Validar_usuario()(DATOS CORRECTOS)
TRUE TRUE
Validar_usuario()MDPropietario(“ROS”,“AGUILA12345”)USUARIO NOEXISTENTE.
FALSE FALSE
Validar_usuario()MDPropietario(“ROSA”,“AGUILA1234”) USUARIOEXISTENTE, PEROPASSWORDINCORRECTO.
FALSE FALSE
ServletLoginMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
doGet(HttpServletRequestrequest,HttpServletResponseresponse)
Llamada de JSP IHLogindoGet(HttpServletRequestrequest,HttpServletResponseresponse)Usuario y password
Validación de usuario ypassword.
Validación de usuario ypassword.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________159
correctos.
ClaseMDPrestamoMétodos
Casos de prueba Resultadosesperados
Resultadosobtenidos
String : get_conexion() get_conexion() Conexión a la BD. Conexión a la BD.int set_prestamo(intcve_amigo, intcve_articulo, Datefecha_prestamo, Datefecha_Dev)
set_amigo(2, 3, "26/05/2003”,“26/06/2003”)
Inserción correcta denuevo PRESTAMO.
No se llevó a cabo lainserción.
set_amigo(2, 3, "26/05/2003”,“26/06/2003”)
Inserción correcta denuevo PRESTAMO.
Inserción correcta denuevo PRESTAMO.
set_amigo(2, 3, "26/05/2003”,“26/06/2003”); el AMIGO 2, noexiste
No se inserta nuevoPRESTAMO.
No se inserta nuevoPRESTAMO.
set_amigo(2, 3, "26/05/2003”,“26/06/2003”); el ARTICULO 3,no existe
No se inserta nuevoPRESTAMO.
No se inserta nuevoPRESTAMO.
ResultSet :get_prestamos_actuales()
get_prestamos_actuales() ResultSet con todos lospréstamos actuales(status == 0, nodevueltos)
ResultSet con todoslos préstamosactuales (status == 0,no devueltos)
Get_prestamos_actuales(); nohay prestamos
ResultSet vacío. ResultSet vacío.
ResultSet:get_articulos_prestados()
get_articulos_prestados() ResultSet con artículosprestados y a quien.
ResultSet conartículos prestadoscon relación amigoserrónea.
get_articulos_prestados() ResultSet con artículosprestados y a quien.
ResultSet conartículos prestados ya quien.
get_articulos_prestados(); sintener prestado nada.
ResultSet vacío. ResultSet vacío.
ResultSet:get_amigos_morosos()
Get_amigos_morosos() ResultSet con amigos alos que se les hizopréstamos, y que deacuerdo a la fechaactual, la fecha dedevolución ya pasó.
ResultSet que nocontiene a losmorosos, problemascon fechas.
Get_amigos_morosos(), sinamigos morosos.
ResultSet vacío. ResultSet con datos.
Bolean: devolucion(intcve_prestamo)
devolucion(2); 2 existe. Actualización tablaPRESTAMO, status = 1,cuando cve_prestamo== 2
Actualización tablaPRESTAMO, status =1, cuandocve_prestamo == 2
devolucion(2); 2 no existe. No se actualiza. No se actualiza.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________160
PLAN DE PRUEBAS DE INTEGRACIÓN
Para llevar a cabo la integración del sistema se seguirá el patrón Bottom-Up , pero porrama.Es decir, una vez que ya tengo probadas mi clases de datos para determinadafuncionalidad, ahora le integro las clases de negocios necesarias(llamadas), y realizo laspruebas correspondientes.Después ya que tengo probadas mis interfaces de usuario (jsp’s) correspondientes adicha funcionalidad, las agrego a la funcionalidad que ya tenía en mis objetos de negociosy datos.Así sucesivamente se irá agregando la funcionalidad al sistema hasta haber cubiertotodas la pantallas.*Como nota importante cabe recalcar que para esta etapa, las pruebas unitarias de lasclases ya han sido ejecutadas.
Acceso al sistema
Casos de prueba Resultados esperadosValidarusuario
Usuario “ROSA”, Password “AGUI12345”
*MDPropietarioà Conexion
Conexión : new Conexión()Connection : get_conexion()
MDPropietario crea la instancia de la claseConexión.
MDPropietario obtiene la instancia Connectioncon la conexión a la BD ya realizada.
*Propietarioà MDPropietario
MDPropietario : New MDPropietario()Boolean : Validar_usuario(usuario, pass)
El objeto Propietario crea la instancia deMDPropietario.
CASO CORRECTOPropietario verifica que el usuario introducido esválido al invocar el método validar_usuario deMDPropietarioCASO INCORRECTOValidar_usuario en MDPropietario regresa falsocomo respuesta ante el usuario introducido.
Entrada alsistema
*IHLoginà Propietario
Propietario : new Propietario()Boolean:validar_usuario(usuario,password)
IHLogin instancia a Propietario.
CASO CORRECTOForward IHPrincipalCASO INCORRECTOForward IHLogin_error
*IHLoginà IHPrincipal
forward() IHPrincipal
Entrada al sistema.Es partir de esta pantalla de donde se puedenllegar a todas las opciones.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________161
Mantenimiento de Artículos
Alta de Artículos (Cuaderno)
Casos de prueba Resultados esperadosDar de altauncuaderno
Nuevo Cuaderno (nombre, tipo 2,descrip_estado, disponible, existe,profesor, num_materias, num_hojas)*MDCuadernoà Conexión
Conexion : new Conexion()Connection : get_conexion()
MDCuaderno crea la instancia de la claseConexión.
MDCuaderno obtiene la instancia Connectioncon la conexión a la BD ya realizada.
*MDCuadernoà MDArticulo
MDArticulo : new MDArticuloBoolean : set_articulo(datos articulo)
MDCuaderno crea la instancia de la claseMDArticulo
MDCuaderno llama al método que crea unregistro del articulo en la tabla Articulo
*Cuadernoà MDCuaderno
MDCuaderno : new MDCuaderno()Boolean : set_cuaderno(datos cuaderno)
Cuaderno crea la instancia de MDCuaderno
Cuaderno llama a la inserción el nuevo cuaderno
*IHAlta_articuloà Cuaderno
Cuaderno : new Cuaderno()Bolean : set_cuaderno(datos cuaderno)
IHAlta_articulo instancia a Cuaderno
IHArticulo llama a la inserción del nuevocuaderno.
Dar de altauncuadernoERROR
*IHAlta_articulo – IHPrincipal
forward IHPrincipal
El usuario da CANCELAR y se regresa a laventana principal
Actualización de Artículos (Cuaderno)
Casos de prueba Resultados esperadosActualizarunCuadernoexistente
Cuaderno (nombre2, tipo 2,descrip_estado, disponible, existe,profesor, num_materias2, num_hojas2)donde cve_articulo == cve_articuloelegido*MDArticuloà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDArticulo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*MDCuadernoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDCuaderno instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*Articuloà *MDArticulo Articulo instancia la clase MDArticulo
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________162
MDArticulo : new MDArticulo()Vector : get_articulos()
Invoca el método get_articulos que obtiene unvector con todos los artículos disponibles.
*Cuadernoà MDCuaderno
MDCuaderno : new MDCuaderno()Cuaderno : get_cuaderno(cve_articulo)
Cuaderno instancia la clase MDCuaderno
Se invoca la método que trae el Cuaderno con laclave de artículo
*IHSeleccion_Articuloà Articulo
Articulo : new Articulo()Vector: get_articulos()
IHSeleccion_Articulo instancia la clase Articulo
Invoca el método que obtiene el vector con losartículos disponibles.
*IHSeleccion_Articulo –IHActualizacion_Articulo
forward(cve_articulo)IHActualizacion_Articulo
El usuario elige MODIFICAR y se pasa el controla la pantalla IHActualizacion_Articulo
*IHActualizacion_articuloà Cuaderno
Cuaderno : new Cuaderno()Cuaderno : get_cuaderno(cve_articulo)
IHActualizacion_Articulo instancia Cuaderno
Invoca el método que extrae el cuaderno que seseleccionó en la pantalla anterior.
*MDCuadernoà MDAritulo
Boolean : update_articulo(datos articulo)
MDCuaderno invoca el método update_articuloque modifica los datos al registro en Articulo delCuaderno modificado.
*Cuadernoà MDCuaderno
Boolean : update_cuaderno(datosmodificados)
Cuaderno invoca el método update_cuaderno deMDCuaderno que se encarga de modificar uncuaderno.
*IHActualizacion_articuloà Cuaderno
Bolean : update_cuaderno(datos articulo)
La pantalla invoca el método update_cuadernode Cuaderno que se encargará de actualizar lainformación del Cuaderno.
*IHActualizacion_articulo –IHSeleccion_Articulo
forward() IHSeleccion_Articulo
Una vez que se modificaron los datos delCuaderno, el sistema regresa a la pantalla deselección de artículos.
ActualizarunCuadernoexistenteERROR
*IHActualizacion_articulo –IHSeleccion_Articulo
forward() IHSeleccion_Articulo
El usuario dio CANCELAR en la pantalla deIHActualización_articulo y el sistema regresa a lapágina IHSeleccion_articulo.
*IHSeleccion_articulo – IHPrincipal El usuario da CANCELAR en la pantallaIHSeleccion_articulo y el sistema regresa a lapantalla principal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________163
Baja de Artículos (Cuaderno)
Casos de prueba Resultados esperadosBaja de unCuadernoexistente
Selección de Cuaderno (cve_articulo, tipo2)
*MDArticuloà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDArticulo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*MDArticuloà MDCuaderno
Boolean : delete_cuaderno(cve_articulo)
La creación de la instancia de MDcuaderno yafue probada anteriormente.
MDArticulo invoca el método delete_cuadernopara eliminar primero el registro del cuadernocorrespondiente a la cve del articulo.
*Articuloà MDArticulo
Vector : get_articulos()Articulo invoca el método get_Articulos paraextraer en un vector todos los artículosdisponibles y que pueden ser eliminados.
*Articuloà MDArticulo
Boolean : delete_articulo(cve_articulo)
La creación de la instancia de MDArticulo ya fueprobada anteriormente.
Articulo invoca al método delete_articulo queeliminará el registro de la tabla Articulo.
*IHBaja_articuloà Articulo
Articulo : new Articulo()Boolean : delete_articulo(cve_articulo)
IHBaja_articulo instancia a la clase Articulo
La pantalla invoca al método delete_articulo,para que se elimine el articulo seleccionado;después de que el usuario seleccionóELIMINAR.
*IHBaja_articulo – IHPrincipal
forward() IHPrincipal
Después de que el artículo es eliminado, elsistema debe regresar a la pantalla principal.
Baja de unCuadernoexistenteERROR
*IHBaja_articulo – IHPrincipal
forward() IHPrincipal
Si el usuario eligió CANCELAR, el sistemaregresa a la pantalla IHPrincipal.
Estos tres casos de prueba se repiten para los Artículos de tipo CDMusical y Libro. Ladiferencia sólo radica en que en vez de referenciar al objeto Cuaderno, serán CDMusica oLibro; y en vez de MDCuaderno, serán MDCDMusica o MDLibro.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________164
Registro de Préstamo
Casos de prueba Resultados esperadosRegistrarun nuevopréstamo
Nuevo Prestamo (cve_articulo,cve_amigo, fecha_prestamo,fecha_devolución, prestado)*MDPrestamoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDPrestamo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*MDArticuloà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDArticulo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*MDAmigoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDAmigo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*Articuloà MDArticulo
Vector : get_articulos()
Se invoca el método get_articulos que extrae unvector con todos los artículos disponibles parasu préstamo.
*Amigoà MDAmigo
Vector : get_amigos()
Se invoca el método get_amigos que extrae unvector con todos los amigos disponibles parahacerles un préstamo.
*IHRegistroà Articulo
Vector : get_articulos()
Se invoca el método get_articulos que extrae unvector con todos los artículos disponibles parasu préstamo.
*IHRegistroà Amigo
Vector : get_amigos()
Se invoca el método get_amigos que extrae unvector con todos los amigos disponibles parahacerles un préstamo.
*Prestamoà MDPrestamo
Boolean : set_prestamo(datos prestamo)
Se invoca el método set_prestamo para insertarel nuevo préstamo en la tabla Prestamo.
*IHRegistroà IHPrincipal
forward() IHPrincipal
Una vez que el usuario registró el préstamo, elsistema regresa a la pantalla principal.
Registrarun nuevopréstamoERROR
*IHRegistroà IHPrincipal
forward() IHPrincipal
Una vez que el usuario pudo ya haber capturadolos datos del préstamo pero elige CANCELAR yel sistema regresa a la pantalla principal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________165
Devolución
Casos de prueba Resultados esperadosDevoluciónde unartículoprestado
Selección de Prestamo (cve_prestamo)
*MDPrestamoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDPrestamo instancia la clase Conexión
Obtiene el objeto Connection con la conexión a laBD ya realizada
*Prestamoà MDPrestamo
Vector : get_prestamos()
Invoca el método get_prestamos para extraer unvector con los préstamos actuales.
*IHDevolucionà Prestamo
Vector : get_prestamos()
Invoca el método get_prestamos para extraer unvector con los préstamos actuales.
*Prestamoà MDPrestamo
Boolean : devolucion(cve_prestamo)
Invoca el método para actualizar el préstamocomo devuelto.
*IHDevolucionà Prestamo
Boolean: devolucion(cve_prestamo)
Se invoca el método devolución para marcar elpréstamo como devuelto.
*IHDevolucionà IHPrincipal
forward() IHPrincipal
Una vez que el usuario da ACTUALIZAR, elsistema regresa a la pantalla principal.
Devoluciónde unartículoprestadoERROR
*IHDevolucionà IHPrincipal
forward() IHPrincipal
Si el usuario, en vez de ACTUALIZAR daCANCELAR, entonces el sistema regresa a lapantalla principal.
Ampliar tiempo préstamo
Casos de prueba Resultados esperadosCambiar lafecha dedevoluciónampliandotiempo depréstamo.
Selección de Prestamo, cve_prestamo ==cve_prestamo
*MDPrestamoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDPrestamo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*Prestamoà MDPrestamo
Vector : get_prestamos()
Invoca el método get_prestamos para extraer unvector con los préstamos actuales.
*IHSeleccion_prestamoà Prestamo
Vector : get_prestamos()
Se invoca al método que extrae todos lospréstamos actuales para mostrar en pantalla.
*Prestamoà MDPrestamo
Prestamo : get_prestamo(cve_prestamo)
Prestamo invoca al método get_prestamo paraextraer los datos del préstamo que correspondecon la clave y desplegarlos en pantalla.
*IHAmpliacionà Prestamo La pantalla invoca al método get_prestamo paraextraer los datos del préstamo que corresponde
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________166
Prestamo : get_prestamo(cve_prestamo) con la clave y desplegarlos en pantalla.*Prestamoà MDPrestamo
Boolean :ampliar_prestamo(cve_prestamo, datosprestamo)
Se invoca al método ampliar_prestamo paramodificar los datos del préstamocorrespondiente a la clave.
*IHAmpliacionà Prestamo
Bolean :ampliar_prestamo(cve_prestamo, datosprestamo)
El usuario elige ACTUALIZAR y se invoca almétodo ampliar_prestamo para modificar losdatos del préstamo correspondiente a la clave.
*IHAmpliarà IHSeleccion_prestamo
forward() IHSeleccion_prestamo
Una vez actualizado el préstamo, el sistemaregresa a la pantalla IHSeleccion_prestamo
Cambiar lafecha dedevoluciónampliandotiempo depréstamoERROR.
*IHAmpliarà IHSeleccion_prestamo
forward() IHSeleccion_prestamo
El usuario elige CANCELAR en la pantallaIHAmpliar y el sistema regresa a la pantallaIHSeleccion_prestamo
Cambiar lafecha dedevoluciónampliandosu tiempopréstamoERROR.
*IHSeleccion_prestamoà IHPrincipal
forward() IHPrincipal
Antes de elegir un préstamo, el usuario eligeCANCELAR y el sistema regresa a la pantallaprincipal.
Mantenimiento de Amigos
Alta de Amigos
Casos de prueba Resultados esperadosDar de altaun amigo
Nuevo Amigo (nombre, direccion,telefono, correoe, existe)*MDAmigoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDAmigo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*Amigoà MDAmigo
Boolean : set_amigo(datos_amigo)
Se invoca el método set_amigo para insertar unnuevo amigo que tiene datos_amigo.
*IHAlta_amigoà Amigo
Boolean : set_amigo(datos_amigo)
Se invoca el método set_amigo para insertar unnuevo amigo que tiene datos_amigo.
*IHAlta_amigoà IHPrincipal
forward() IHPrincipal
Una vez que el usuario dio GUARDAR y elsistema guardó el nuevo amigo, el sistemaregresa a la pantalla principal.
Dar de altaun amigoERROR
*IHAlta_amigoà IHPrincipal
forward() IHPrincipal
El usuario dio CANCELAR y el sistema regresaa la pantalla principal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________167
Actualización de Amigos
Casos de prueba Resultados esperadosActualizarun Amigoexistente
Amigo (nombre, direccion, telefono,correoe, existe) donde cve_amigo ==cve_amigo elegido*MDAmigoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDAmigo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*Amigoà MDAmigo
Vector : get_amigos()
Se invoca el método get_amigos para obtenerun vector con los amigos existentes en elsistema.
*IHSeleccion_amigoà Amigo
Vector : get_amigos()
Se invoca el método get_amigos para obtenerun vector con los amigos existentes en elsistema.
*Amigoà MDAmigo
Amigo : get_amigo(cve_amigo)
Se extrae el amigo que corresponda a la cve deamigo solicitada.
*IHActualizacion_amigoà Amigo
Amigo : get_amigo(cve_amigo)
Se extrae el amigo que corresponda a la cve deamigo solicitada.
*Amigoà MDAmigo
Boolean : update_amigo(cve_amigo,datos_amigo)
Se invoca al método update_amigo paraactualizar al amigo con la cve_amigo con losdatos_amigo.
*IHActualizacion_amigoà Amigo
Boolean : update_amigo(cve_amigo,datos_amigo)
Se invoca al método update_amigo paraactualizar al amigo con la cve_amigo con losdatos_amigo.
*IHActuliazacion_amigo àIHSeleccion_Amigo
forward() IHSeleccion_amigo
Una vez el usuario elige ACTUALIZAR, elsistema almacena los cambios y regresa a lapantalla de selección de amigos.
Actualizarun AmigoexistenteERROR
*IHActuliazacion_amigo àIHSeleccion_Amigo
forward() IHSeleccion_amigo
El usuario elige CANCELAR y el sistemaalmacena los cambios y regresa a la pantalla deselección de amigos.
Actualizarun AmigoexistenteERROR
*IHSeleccion_amigoà IHPrincipal
forward() IHPrincipal
El usuario elige CANCELAR y el sistema regresaa la pantalla principal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________168
Baja de Amigos
Casos de prueba Resultados esperadosEliminar unamigo
Amigo cve_amigo == cve_amigo elegido
*MDAmigoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDAmigo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*Amigoà MDAmigo
Vector : get_amigos()
Se invoca el método get_amigos para extraer unvector con todos los amigos existentes.
*IHBaja_amigoà Amigo
Vector : get_amigos()
Se invoca el método get_amigos para extraer unvector con todos los amigos existentes.
*Amigoà MDAmigo
Boolean : delete_amigo(cve_amigo)
Se llama al método delete_amigo para eliminarel amigo con cve_amigo.
*IHBaja_amigoà Amigo
Boolean : delete_amigo(cve_amigo)
Se llama al método delete_amigo para eliminarel amigo con cve_amigo.
*IHBaja_amigoà IHPrincipal
forward() IHPrincipal
Una vez que el usuario eligió ELIMINAR, elsistema da de baja al amigo seleccionado yregresa a la página principal.
Eliminar unamigoERROR
*IHBaja_amigoà IHPrincipal
forward() IHPrincipal
El usuario eligió CANCELAR y el sistemaregresa a la pantalla principal.
Lista de Artículos Prestados
Casos de prueba Resultados esperadosGenerarlista deartículosprestados
Lista de artículos prestados()
*MDPrestamoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDPrestamo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*Prestamoà MDPrestamo
Vector : get_articulos_prestados()
Se invoca el método get_articulos_prestadospara obtener un vector que contenga losartículos prestados.
*IHLista_art_prestadosà Prestamo
Vector : get_articulos_prestados()
Se invoca el método get_articulos_prestadospara obtener un vector que contenga losartículos prestados.
*IHLista_art_prestadosà IHPrincipal
Regresar() IHPrincipal
Cuando el usuario oprime REGRESAR, elsistema regresa a la ventana principal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________169
Lista de Amigos Morosos
Casos de prueba Resultados esperadosGenerar lalista deamigosmorosos
Lista de amigos morosos()
*MDPrestamoà Conexión
Conexión : new Conexión()Connection : get_conexion()
MDPrestamo instancia la clase Conexión
Obtiene el objeto Connection con la conexión ala BD ya realizada
*Prestamoà MDPrestamo
Vector : get_amigos_morosos()
Se invoca el método get_amigos_morosos paraobtener un vector que contenga los amigosmorosos.
*IHLista_amig_morososà Prestamo
Vector : get_amigos_morosos()
Se invoca el método get_amigos_morosos paraobtener un vector que contenga los amigosmorosos.
*IHLista_amig_morososà IHPrincipal
Regresar() IHPrincipal
Cuando el usuario oprime REGRESAR, elsistema regresa a la ventana principal.
Salir
Casos de prueba Resultados esperadosSalir delsistema
Salir()
*IHPrincipalà IHLogin
Salir()
El sistema regresa a la pantalla de login
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________170
PLAN DE PRUEBAS DE COMPONENTES
Acceso al sistema
Casos de prueba Resultados esperadosAccesar al sistema Usuario “ROSA”, Password
“AGUI12345”(Correcto)
El IHLogin, cede el control a Login que seencarga de verificar al usuario con el objetoPropietario que llama a MDPropietario que seconecta a la BD a través del objeto Conexionpara validar si el usuario existe.El usuario existe y es entrada exitosa al sistema,y se cede el control y se posiciona en la pantallainicial IHPrincipal.
Usuario “ROSA”, Password“AGU5”(No existe)
Los objetos Propietario y MDPropietariodeterminan que el usuario capturado no existe.Posicionamiento en la pantalla de IHLogin_error,informando que los datos capturados no fueroncorrectos.
Mantenimiento de Artículos
Alta de Artículos (Cuaderno)
Casos de prueba Resultados esperadosDar de alta un cuaderno Nuevo Cuaderno (nombre,
tipo 2, descrip_estado,disponible, existe, profesor,num_materias, num_hojas)
El IHPrincipal llama a la pantalla IHAlta_Articulodonde el usuario captura al nuevo artículo, y losobjetos Cuaderno y Artículo (negocios y datos)se encargan de almacenar al nuevo artículo. Elsistema se posiciona nuevamente en la pantallainicial IHPrincipal.
Dar de alta un cuadernoERROR
Nuevo Cuaderno (nombre,tipo 2, descrip_estado,disponible, existe, profesor,num_materias, num_hojas)+ CANCELAR
El IHPrincipal llama a la pantalla IHAlta_Articulodonde el usuario captura al nuevo artículo, perose elige la opción CANCELAR. El sistema seposiciona nuevamente en la pantalla inicialIHPrincipal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________171
Actualización de Artículos (Cuaderno)
Casos de prueba Resultados esperadosActualizar un Cuadernoexistente
Cuaderno (nombre2, tipo 2,descrip_estado, disponible,existe, profesor,num_materias2,num_hojas2) dondecve_articulo == cve_articuloelegido
El IHPrincipal llama a la pantallaIHSeleccion_Articulo que muestra los artículosexistentes con los objetos Articulo (negocios ydatos). El usuario selecciona su artículo.Entonces se pasa a la páginaIHActualizacion_Articulo que con los objetosCuaderno (negocios y datos) se muestran susdatos actuales. Modifica sus campos; los objetosCuaderno y Artículo se encargan de almacenarlos cambios. El sistema se posicionanuevamente en la pantalla IHSeleccion_Articulo.
Actualizar un Cuadernoexistente ERROR
Cuaderno (nombre2, tipo 2,descrip_estado, disponible,existe, profesor,num_materias2,num_hojas2) dondecve_articulo == cve_articuloelegido + CANCELAR
El IHPrincipal llama a la pantallaIHSeleccion_Articulo donde el usuarioselecciona su artículo, para después navegar alIHActualizacion_Articulo donde modifica suscampos; pero se CANCELA la operación. Elsistema se posiciona nuevamente en la pantallaIHSeleccion_Articulo.
Baja de Artículos (Cuaderno)
Casos de prueba Resultados esperadosBaja de un Cuadernoexistente
Selección de Cuaderno(cve_articulo, tipo 2)
El IHPrincipal llama a la pantalla IHBaja_Articuloque muestra los artículos que le devuelven losobjetos Articulo (negocios y datos) . El usuarioselecciona su artículo; los objetos Articulo yCuaderno se encargan de eliminar al artículopersonal seleccionado. Después se llega a lapantalla inicial IHPrincipal.
Baja de un Cuadernoexistente ERROR
Selección de Cuaderno(cve_articulo, tipo 2)
El IHPrincipal llama a la pantalla IHBaja_Articulodonde el usuario selecciona su artículo; peroselecciona la opción cancelar; y después senavega a la pantalla inicial IHPrincipal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________172
Alta de Artículos (CDMusica)
Casos de prueba Resultados esperadosDar de alta un CDmusical
Nuevo CDMusica (nombre,tipo 1, descrip_estado,disponible, existe, interprete,genero, num_canciones,original, audio)
El IHPrincipal llama a la pantalla IHAlta_Articulodonde el usuario captura al nuevo artículo, y losobjetos CDMusica y Artículo se encargan dealmacenar al nuevo artículo. El sistema seposiciona nuevamente en la pantalla inicialIHPrincipal.
Dar de alta un CDmusical ERROR
Nuevo CDMusica (nombre,tipo 1, descrip_estado,disponible, existe, interprete,genero, num_canciones,original, audio) +CANCELAR
El IHPrincipal llama a la pantalla IHAlta_Articulodonde el usuario captura al nuevo artículo, peroelige CANCELAR. El sistema se posicionanuevamente en la pantalla inicial IHPrincipal.
Actualización de Artículos (CDMusica)
Casos de prueba Resultados esperadosActualizar un CD musicalexistente
CDMusica (nombre, tipo 1,descrip_estado, disponible,existe, interprete, genero,num_canciones, original,audio) donde cve_articulo ==cve_articulo elegido
El IHPrincipal llama a la pantallaIHSeleccion_Articulo que muestra los artículosdisponibles que le regresan los objetos Articulo(negocios y datos). El usuario selecciona suartículo, para después navegar alIHActualizacion_Articulo que muestra los datoscorrespondientes que le devuelven los objetosCDMusica (negocios y datos), se modifican suscampos; los objetos CDMusica y Articulo seencargan de almacenar los cambios. El sistemase posiciona nuevamente en la pantallaIHSeleccion_Articulo.
Actualizar un CD musicalexistente ERROR
CDMusica (nombre, tipo 1,descrip_estado, disponible,existe, interprete, genero,num_canciones, original,audio) donde cve_articulo ==cve_articulo elegido +CANCELAR
El IHPrincipal llama a la pantallaIHSeleccion_Articulo donde el usuarioselecciona su artículo, para después navegar alIHActualizacion_Articulo donde modifica suscampos; pero se CANCELA la operación. Elsistema se posiciona nuevamente en la pantallaIHSeleccion_Articulo.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________173
Baja de Artículos (CDMusica)
Casos de prueba Resultados esperadosBaja de un CD musicalexistente
Selección de CD musical(cve_articulo, tipo 1)
El IHPrincipal llama a la pantalla IHBaja_Articuloque muestra todos los artículos disponibles quele regresan los objetos Articulo (negocios ydatos). El usuario selecciona su artículo; losobjetos Articulo y CDMusica se encargan deeliminar al artículo personal seleccionado.Después se regresa a la pantalla inicialIHPrincipal.
Baja de un CD musicalexistente ERROR
Selección de CD musical(cve_articulo, tipo 1)
El IHPrincipal llama a la pantalla IHBaja_Articulodonde el usuario selecciona su artículo; peroelige la opción CANCELAR. Después regresa ala pantalla inicial IHPrincipal.
Alta de Artículos (Libro)
Casos de prueba Resultados esperadosDar de alta un Libro Nuevo Libro (nombre, tipo 3,
descrip_estado, disponible,existe, autor, editorial,edición, genero, ISBN,num_paginas)
El IHPrincipal llama a la pantalla IHAlta_Articulodonde el usuario captura al nuevo artículo, y losobjetos Libro y Artículo se encargan dealmacenar al nuevo artículo. El sistema seposiciona nuevamente en la pantalla inicialIHPrincipal.
Dar de alta un LibroERROR
Nuevo CDMusica (nombre,tipo 3, descrip_estado,disponible, existe, interprete,genero, num_canciones,original, audio) +CANCELAR
El IHPrincipal llama a la pantalla IHAlta_Articulodonde el usuario captura al nuevo artículo, perose CANCELA la operación. El sistema seposiciona nuevamente en la pantalla inicialIHPrincipal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________174
Actualización de Artículos (Libro)
Casos de prueba Resultados esperadosActualizar un Libroexistente
Libro (nombre, tipo 3,descrip_estado, disponible,existe, autor, editorial,edición, genero, ISBN,num_paginas) dondecve_articulo == cve_articuloelegido
El IHPrincipal llama a la pantallaIHSeleccion_Articulo que muestra los artículosque le regresan los objetos Articulo (negocios ydatos). El usuario selecciona su artículo, paradespués ceder el control aIHActualizacion_Articulo donde modifica suscampos; los objetos Libro y Articulo se encargande almacenar los cambios. El sistema seposiciona nuevamente en la pantallaIHSeleccion_Articulo.
Actualizar un CD Libroexistente ERROR
Libro (nombre, tipo 3,descrip_estado, disponible,existe, autor, editorial,edición, genero, ISBN,num_paginas) dondecve_articulo == cve_articuloelegido + CANCELAR
El IHPrincipal llama a la pantallaIHSeleccion_Articulo donde el usuarioselecciona su artículo, para después navegar alIHActualizacion_Articulo donde modifica suscampos; pero se elige la opción CANCELAR. Elsistema se posiciona nuevamente en la pantallaIHSeleccion_Articulo.
Baja de Artículos (Libro)
Casos de prueba Resultados esperadosBaja de un Libroexistente
Selección de Libro(cve_articulo, tipo 3)
El IHPrincipal llama a la pantalla IHBaja_Articuloque muestra los artículos disponibles que ledevuelven los objetos Articulo (negocios ydatos). El usuario selecciona su artículo; losobjetos Articulo y Libro se encargan de eliminaral artículo personal seleccionado. Después seregresa a la pantalla inicial IHPrincipal.
Baja de un Libroexistente ERROR
Selección de Libro(cve_articulo, tipo 3)
El IHPrincipal llama a la pantalla IHBaja_Articulodonde el usuario selecciona su artículo; seselecciona CANCELAR. Después el sistemaregresa a la pantalla inicial IHPrincipal.
Actualización de Artículos (CUALQUIER TIPO)
Casos de prueba Resultados esperadosActualizar un artículoexistente ERROR
Articulo (nombre, tipo ,descrip_estado, disponible,existe) donde cve_articulo== cve_articulo elegido
El IHPrincipal llama a la pantallaIHSeleccion_Articulo que muestra todos losartículos disponibles que traen los objetosArticulo (negocios y datos). El usuarioselecciona su artículo, pero se CANCELA laoperación. El sistema se posiciona nuevamenteen la pantalla IHPrincipal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________175
Registro de Préstamo
Casos de prueba Resultados esperadosRegistrar un nuevopréstamo
Nuevo Prestamo(cve_articulo, cve_amigo,fecha_prestamo,fecha_devolución, prestado)
El IHPrincipal llama a la pantalla IHRegistro, quemuestra los artículos disponibles que le traen losobjetos Articulo (negocios y datos) y los amigosque devuelven los objetos Amigo (negocios ydatos). El usuario captura al nuevo préstamo; losobjetos Prestamo (negocios y datos) seencargan de almacenar al nuevo prestamo. Elsistema se posiciona nuevamente en la pantallainicial IHPrincipal.
Registrar un nuevopréstamo ERROR
Nuevo Prestamo(cve_articulo, cve_amigo,fecha_prestamo,fecha_devolución, prestado)+ CANCELAR
El IHPrincipal llama a la pantalla IHRegistro, quecontiene los artículos y amigos que los objetosArticulo y Amigo le devuelven. El usuario capturaal nuevo préstamo; pero se elige la opciónCANCELAR. El sistema se posicionanuevamente en la pantalla inicial IHPrincipal.
Registro de Préstamo (NUEVO AMIGO)
Casos de prueba Resultados esperadosRegistrar un nuevopréstamo
Nuevo Prestamo(cve_articulo, cve_amigo,fecha_prestamo,fecha_devolución, prestado)
El IHPrincipal llama a la pantalla IHRegistro, quecontiene los artículos y amigos que los objetosArticulo y Amigo le devuelven. Se elige la opciónNUEVO AMIGO (caso de prueba Alta de Amigo).El usuario captura al nuevo préstamo; losobjetos Prestamo se encargan de almacenar alnuevo préstamo. El sistema se posicionanuevamente en la pantalla inicial IHPrincipal.
Registro de Préstamo (NUEVO ARTÍCULO)
Casos de prueba Resultados esperadosRegistrar un nuevopréstamo
Nuevo Prestamo(cve_articulo, cve_amigo,fecha_prestamo,fecha_devolución, prestado)
El IHPrincipal llama a la pantalla IHRegistro, quecontiene los artículos y amigos que los objetosArticulo y Amigo le devuelven. Se elige la opciónNUEVO ARTÍCULO (caso de prueba Alta deArtículo). El usuario captura al nuevo préstamo;los objetos Prestamo se encargan de almacenaral nuevo préstamo. El sistema se posicionanuevamente en la pantalla inicial IHPrincipal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________176
Devolución
Casos de prueba Resultados esperadosDevolución de unartículo que fue prestado
Selección de Prestamo(cve_prestamo)
El IHPrincipal llama a la pantalla IHDevoluciondonde los objetos Prestamo (negocios y datos)muestran los préstamos actuales. El usuarioselecciona el préstamo; los objetos Prestamo yArticulo se encargan de actualizar lainformación. Después se regresa a la pantallainicial IHPrincipal.
Devolución de unartículo que fue prestadoERROR
Selección de Prestamo(cve_prestamo)
El IHPrincipal llama a la pantalla IHDevoluciondonde los objetos Prestamo muestran lospréstamos actuales. El usuario selecciona elpréstamo pero elige la opción CANCELAR ydespués el sistema regresa a la pantalla inicialIHPrincipal.
Ampliar tiempo préstamo
Casos de prueba Resultados esperadosCambiar la fecha dedevolución ampliando sutiempo de préstamo.
Selección de Prestamo,cve_prestamo ==cve_prestamo
El IHPrincipal llama a la pantallaSeleccion_prestamo donde los objetosPrestamo (negocios y datos) muestran lospréstamos actuales. El usuario selecciona elpréstamo; los objetos Prestamo, Articulo yAmigo (negocios y datos) se encargan deextraer los datos del préstamo. El usuarioproporciona la nueva fecha y elige GUARDAR,Prestamo (negocios y datos) almacena loscambios. Después se regresa a la pantalla inicialIHSeleccion_prestamo.
Cambiar la fecha dedevolución ampliando sutiempo de préstamoERROR.
Selección de Prestamo,cve_prestamo ==cve_prestamo
El IHPrincipal llama a la pantallaSeleccion_prestamo donde los objetosPrestamo muestran los préstamos actuales. Elusuario selecciona el préstamo; los objetosPrestamo, Articulo y Amigo (negocios y datos)se encargan de extraer los datos del préstamo.El usuario proporciona la nueva fecha, peroCANCELA; entonces el sistema regresa a lapantalla inicial IHSeleccion_prestamo.
Cambiar la fecha dedevolución ampliando sutiempo de préstamoERROR.
Selección de Prestamo,cve_prestamo ==cve_prestamo
El IHPrincipal llama a la pantallaSeleccion_prestamo donde los objetosPrestamo muestran los préstamos actuales. Elusuario selecciona CANCELAR. Y después elsistema regresa a la pantalla inicial IHPrincipal.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________177
Mantenimiento de Amigos
Alta de Amigos
Casos de prueba Resultados esperadosDar de alta un amigo Nuevo Amigo (nombre,
direccion, telefono, correoe,existe)
El IHPrincipal llama a la pantalla IHAlta_Amigodonde el usuario captura los datos del nuevoamigo, y los objetos Amigo (negocios y datos)se encargan de almacenarlo. El sistema seposiciona nuevamente en la pantalla inicialIHPrincipal.
Dar de alta un amigoERROR
Nuevo Amigo (nombre,direccion, telefono, correoe,existe)
El IHPrincipal llama a la pantalla IHAlta_Amigodonde el usuario captura los datos del nuevoamigo, pero elige CANCELAR. El sistema seposiciona nuevamente en la pantalla inicialIHPrincipal.
Actualización de Amigos
Casos de prueba Resultados esperadosActualizar un Amigoexistente
Amigo (nombre, direccion,telefono, correoe, existe)donde cve_amigo ==cve_amigo elegido
El IHPrincipal llama a la pantallaIHSeleccion_Amigo que muestra todos losamigos existentes que regresan los objetosAmigo (negocios y datos). El usuario seleccionaal amigo, para después pasar alIHActualizacion_amigo que extrae todos losdatos que regresan los objetos (negocios ydatos), donde modifica sus campos; los objetosAmigo se encargan de almacenar los cambios.El sistema se posiciona nuevamente en lapantalla IHSeleccion_Amigo.
Actualizar un Amigoexistente ERROR
Amigo (nombre, direccion,telefono, correoe, existe)donde cve_amigo ==cve_amigo elegido +CANCELAR
El IHPrincipal llama a la pantallaIHSeleccion_Amigo que con ayuda de losobjetos amigo extrae los amigos existentes. Elusuario selecciona al amigo, pero después eligeCANCELAR. El sistema se posicionanuevamente en la pantalla IHSeleccion_Amigo.
Actualizar un Amigoexistente ERROR
Amigo (nombre, direccion,telefono, correoe, existe)donde cve_amigo ==cve_amigo elegido +CANCELAR
El IHPrincipal llama a la pantallaIHSeleccion_Amigo que con ayuda de losobjetos amigo extrae los amigos existentes. Elusuario selecciona al amigo y pasa a la pantallaIHActualizacion_amigo que muestra los datosque traen los objetos AMIGO (negocios y datos),donde se pueden modificar sus datos, perodespués elige CANCELAR. El sistema seposiciona nuevamente en la pantallaIHSeleccion_Amigo.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________178
Baja de Amigos
Casos de prueba Resultados esperadosEliminar un amigo de loscandidatos a préstamos
Amigo cve_amigo ==cve_amigo elegido
El IHPrincipal llama a la pantalla IHBaja_Amigomuestra todos los amigos disponibles quedevuelven los objetos Amigo (negocios y datos).Selecciona uno de ellos, y los objetos Amigo(negocios y datos) se encargan de almacenar elcambio. El sistema se posiciona nuevamente enla pantalla inicial IHPrincipal.
Eliminar un amigo de loscandidatos a préstamosERROR
Amigo cve_amigo ==cve_amigo elegido
El IHPrincipal llama a la pantalla IHBaja_Amigoque con el objeto Amigo muestra todos losamigos disponibles. El selecciona CANCELAR.El sistema se posiciona nuevamente en lapantalla inicial IHPrincipal.
Lista de Artículos Prestados
Casos de prueba Resultados esperadosGenerar la lista deartículos prestados enpantalla
Lista de artículos prestados() El IHPrincipal llama a la pantallaIHLista_Art_Prestados que con ayuda de losobjetos Préstamo, Artículo y Amigo (negocios ydatos), se extraen y muestran en pantalla todoslos artículos prestados hasta el momento degenerar esta lista. Si el usuario eligeREGRESAR el sistema se posicionanuevamente en la pantalla inicial IHPrincipal.
Lista de Amigos Morosos
Casos de prueba Resultados esperadosGenerar la lista deamigos morosos enpantalla
Lista de amigos morosos() El IHPrincipal llama a la pantallaIHLista_Amig_Morosos que con ayuda de losobjetos Préstamo y Amigo (negocios y datos),se extraen y muestran en pantalla todos losamigos que no han entregado los artículosprestados, hasta el momento de generar estalista. Si el usuario elige REGRESAR el sistemase posiciona nuevamente en la pantalla inicialIHPrincipal.
Salir
Casos de prueba Resultados esperadosSalir del sistema Salir() El IHPrincipal regresa a la pantalla IHLogin
donde el usuario tendrá que proporcionarnuevamente su usuario y password parareingresar al sistema.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________179
CONCLUSIONES
Después de la conclusión en la elaboración del proyecto terminal se observa la relevante
importancia que tiene el Proceso Unificado en el desarrollo de proyectos de Ingeniería del
Software, este plantea toda una metodología en su desarrollo, que son el conjunto de
actividades necesarias para transformar los requisitos de un usuario en un producto de
software.
El sistema se basa conceptualmente en el diseño de los casos de uso, donde fueron
plasmados los requerimientos del usuario inicialmente; como estos se fueron modificando
en el transcurso del mismo, viendo su importancia que tiene el hacer uso de la iteraciones
para la mejor implementación del sistema; y que esto se hizo también de manera
incremental, hasta su terminación.
SISTEMA DE PRÉSTAMOS PERSONALES “MONTE PÍO EN CASA”________________________________________________________________________________
_____________________________________________________________________________180
REFERENCIAS BIBLIOGRAFICAS
Rumbaugh, James, Blaha, Michael, Premerlani, William, Eddy, Frederick, Lorensen,William. Modelado y Diseño Orientados a Objetos. Metodología OMT. 2ª Reimpresión.Prentice Hall. 1998.
Jacobson, I., Christerson, M., Jonsson, P., Övergaad, G. Object Oriented SoftwareEngineering: A Use Case Driven Approach. Addison-Wesley, 1992.
Booch G., J. Rumbaugh, I. Jacobson, The Unified Modeling Language User Guide,Addison-Wesley, 1999.
Booch, G. Object-Oriented Analysis and Design with Applications, 2nd edition.Benjamin Cummings, 1993.
Buschamann F. et al. A system of Patterns. Patterns-oriented software architecture.John Wiley & Son 1996.
Coad P. at. al., Object Models, Strategies, Patterns and Applications, Yourdon PressComputing Series, Prentice Hall, 1995.
Fowler M. y Scott K. UML gota a gota. Addison Wesley, Pearson. 1999.
Fowler M. Analysis Patterns. Reusable Object Models. Addison Wesley, 1997.
Jacobson I., Booch G., Rumbaugh J. The Unified Software Development Process,Addison Wesley , 1999.
Kruchten P., The Rational Unified Process. An Introduction. 2nd edition. AddisonWesley. 2000.
Larman C., Applying UML and Patterns, An Introduction to Object-Oriented Analysisand Design, Prentice Hall 1998.
Quatrani T., Visual Modeling with Rational Rose and UML, Addison-Wesley, 1998.
Robillard P., Kruchten P., d’Astous. Software Engineering Process with the UPEDU.Addison Wesley, 2003.
Rumbaugh J., I. Jacobson, Booch G., The Unified Modeling Language ReferenceManual, Addison-Wesley, 1999.
http://calisto.sip.ucm.es/people/pablo/teaching/tp0304/09%20Proceso%20Unificado%20Rational.pdf .