TESIS MONOGRAFICA SISTEMA PARAELALQUILER DE … 0064 2004.pdfLa arquitectura de software a utilizar...

185
TESIS MONOGRAFICA SISTEMA PARA EL ALQUILER DE PELÍCULAS (SAPl ELABORADO POR: JOSE LUIS ORTIZ PEÑA. RONALD ALBERTO OBANDO STREBER. CONNY VANESSA HENRIQUEZ MONTENEGRO. TUTORA: ING. EVELIN CÍlÁVEZ.

Transcript of TESIS MONOGRAFICA SISTEMA PARAELALQUILER DE … 0064 2004.pdfLa arquitectura de software a utilizar...

TESIS MONOGRAFICA

SISTEMA PARA EL ALQUILER DEPELÍCULAS (SAPl

ELABORADO POR:

JOSE LUIS ORTIZ PEÑA.

RONALD ALBERTO OBANDO STREBER.

CONNY VANESSA HENRIQUEZ MONTENEGRO.

TUTORA: ING. EVELIN CÍlÁVEZ.

DEDICATORIA.." - - -.. -.- .

"El éxito en la vida sólo se encuentra al final de la jornada".

Hemos llegado a la meta con la certeza que nuestro es:fw~rzo sera coronado

con el éxito, creyendo que es un peldaño mas escalado.

Este éxito se lo dedicamos ante todo a Dios por su infinita misericordia al

darnos el soplo de la vida, el don de la inteligencia y la paciencia necesaria para

salir adelante.

Queremos agradecer a nuestros padres que nos -han otorgado el apoyo,

comprensión y estimulo que necesitamos en este periodo de nuestras vidas.

A nuestros hermanos y familiares que nos han acompañado en esta labor.

Este proyecto fue logrado con mucho esfuerzo y dedicación de parte de todo

el grupo de trabajo que estuvo involucrado en su elaboración

Adelante estan nuevos retos, el mas importante de ellos es el ser participes

del cambio social de nuestra nacion; con nuestra entrega abnegada, comprometida

y sincera de servir como hombres y mujeres de bien.

AGRADECIMIENTO

"El agradecimiento es un don especial de la raza humana".

El agradecer es un don del ser humano que demuestra. que el valor que

le da a toda acción que le es brindada por sus semejantes.

Es nuestro deseo en esta ocasión hacer público nuestro agradecimiento

por el apoyo, atención, orientación, fuerzas, cariño, dedicación a todas

aquellas personas que de una u otra forma nos brindaron todo esto y más

Sería larga la lista para agradecerles a cada uno pero bastaría

nuestros sinceros deseos de agradecerles a través de algunas de estas

personas sobre todo a nuestro Padre Eterno dador de vida y de luz, a

nuestros padres por su abnegación y a familiares por hacernos sentir seguros

de pertenecer a una familia que nos ama.

A la Ing. Evelin Chávez por su tiempo y disponibilidad para

orientarnos en esta labor ya la Ing. Belkys Iglesias por darnos su apoyo no

sólo como docente sino como amiga.

INDICE

Introducción 1

Objetivo General y Específicos 2

Justificación 3

Antecedentes 4

Marco Metodológico 5

1. Fase de Definición

1.1. Análisis del Sistema 8

• Planificación Estratégica de la Inform~ción. 9

• Análisis del Área de Negocio. 12

• Diseño del Sistema del Negocio. 15

1.2. Planificación del Proyecto 16

• Cálculo de la Viabilidad. 16

• Gestión del Proyecto. 21

o Personal. 21

o Equipo de Trabajo. 22

o Problema. 22

o Proceso. 23

o Selección del Modelo de Proceso. 24

o Ámbito. 25

• Métricas del Proye~to. 25

• Estimaciones. 29

• Gestión de Riesgos. 36

• Planificación Temporal. 39

• Gestión de la Configuración. 39

II. Fase de Desarrollo.

2.1 Diseño. 41

o Diseño Conceptual. 41

o Diseño Lógico. 48

o Diseño Físico y Despliegue. 53

Codificación. 55

Conclusiones. 149

Recomendaciones. 150

Bibliografia. 151

Anexos. 152

Guía de Usuario. 155

SAl- Universidad de Cieneias Comereiales

INTRODUCCIÓN.

En la actualidad el mundo empresarial se encuentra en un estado

cambiante con respecto a la tecnología empleada para el desarrollo de sus

actividades. Este desarrollo ha traído una visión de futuro a las empresas que no

cuentan con procesos y sistemas automatizados que los arude a optimizar sus

operaciones diarias.

En el país actualmente existen un número bajo de empresas dedicadas a

brindar el servicio de desarrollo de software, lo que incurre en un déficit del

servicio en cuanto al creciente auge de la demanda de este servicio.

El proyecto tiene como fin proponer y ejecutar una solución inteligente y

viable a la situación por la cual atraviesa el Video Club Rubenia.

Con este proyecto se logrará que la empresa administre de manera eficiente",el tiempo de respuesta a las solicitudes efectuadas por los clientes, el control de los

datos referente a las películas ofertadas por el video y la emisión de reportes

acertados de la información requerida.

Además este sistema que elaboraremos, nos ayudará a afianzar nuestros

conocimientos en la administración de datos por medio de una red local, ha

desarrollar todos nuestros conocimientos adquiridos con anterioridad así

demostrar cuanto hemos aprendido y cuan importante es ponerlo en práctica.

Por estas y muchas razones, damos comienzo al estudio detenido y

minucioso de los datos que la empresa necesita sean incluidos dentro del Sistema

de control de alquiler de videos DVD.

1

SAP Universidad de Ciencias Comerciales

OBJETIVOS DEL PROYECTO.

Objetivo General:

Desarrollar un Sistema de control de alquiler de videos DVD que facilite las

actividades comerciales del Video Club Rubenia..

Objetivos Específicos:

• Analizar y diseñar el sistema que automatizará los procesos de Control de

Alquiler de Videos DVD.

• Generar los reportes por períodos de películas, de clientes, monto de

alquileres, películas alquiladas para un mejor manejo.

• Administrar los datos referentes a películas, clientes, devoluciones e

ingresos.

2

SAP Universidad de Ciencias Comerciales

JUSTIFICACIÓN.

Es importante mencionar que en el Video Club Rubenia, no existe

ningún sistema de control de alquiler de videos DVD automatizados por lo que se

nos hizo fácil presentar esta propuesta, explicando la importancia que tiene la

informática en el manejo diario de la información como también el uso de sistemas

automatizados que permitirá que la información se mantenga confiable y

accesible cuando el usuario la solicite.

La principal necesidad de la empresa es mejorar la atencion sus clientes,

controlar el inventario de películas y de clientes, poder realizar alquileres de

forma mas rapida y poder llevar el registro de ingresos de forma exacta y eficaz.

3

SAP Universidad de Ciencias Comerciales

ANTECEDENTES.

My DVD Video Club Rubenia, es una empresa estable con personería

jurídica y nace de la necesidad de llevar una alternativa diferente de

entretenimiento a la comunidad.

.',

Es una compañía limitada y su razón social es My DVD Video Club Rubenia

& CIA.LTD, su razón Comercial es My DVD Video Club Rubenia S.A. fue fundada

en enero 26 del 2004 por Jng. Mario Augusto Rocha Zeledón, cuenta con 2

empleados, distribuidos por turnos, en el área de atención al cliente.

La empresa ha venido creciendo paulatinamente y es así que ha visto la

necesidad de automatizar principalmente la forma en que se realizan los

alquileres de películas, el ingreso y búsqueda de clientes y películas. En estos

últimos meses la afluencia de los clientes al Video ha sido mayor, por consiguiente

la demanda de películas en DVD ha crecido considerablemente.

Una de las ventajas de mejorar el servicio es la de dar al cliente una excelente

atención sin perdida de tiempo.

4

SAl- Universidad de Cieneias Comereiales

MARCO METODOLÓGICO

Es importante señalar que se necesitan varias herramientas para la

elaboración del sistema SAP, es por eso que se determinó detenidamente las

herramientas que utilizaremos en dicha elaboración:

Administración de Bases de Datos

Tomando en cuanta el ambiente de la empresa, la inversión requerida y la

tecnología a emplear, se decidió trabajar el gestor de base de datos SQL SERVER

2000 para la elaboración y creación de las diferentes tablas que controlarán los

datos correspondientes para el funcionamiento de dicho sistema y que garantice

un mejor servicio, además que proporcionará mayor seguridad a las instrucciones.

Este gestor posee características tales como son los Disparadores automáticos de

funciones, procedimientos almacenados, creación de índices para búsqueda rápida

de información, etc. y se encuentra en la lista de las mejores soluciones para este

tipo de servicio.

Herramientas de Programación

Microsoft Visual Studio.Net: Es la nueva versión de la familia de

herramientas de desarrollo de software de Microsoft, naturalmente Orientadas

hacia su nuevo entorno de programación: .NET Framework.

Visual Studio .NET (VS.NET a partir de ahora), al tratarse de un entorno de

desarrollo integrado (Integrated Development Environment o IDE), asocia todas

las herramientas del SDK: compiladores, editores, ayuda, etc., facilitando en gran

medida la creación de programas.

5

SAP Universidad de Cieneias Comereiaies

Generación de Reportes

Se requería que los reportes del sistema fueran comprensibles, amigables y

que brindaran exactamente la información que el usuario solicita.

Para ello se acudió a Cristal Report.Net 9.0 incluido en Visual Studio.Net

por lo que ofrece soporte para DCOM, tecnología que es aplicada para las

características del ambiente de desarrollo del sistema, además posee una

orientación hacia aplicaciones Cliente I Servidor.

La arquitectura de software a utilizar es el esquema Cliente-Servidor "el

cual es un modelo de computación en el que el procesamiento requerido para

ejecutar una aplicación o conjunto de aplicaciones relacionadas, se divide entre dos

o más procesos que cooperan entre sí". Usualmente la mayoría del trabajo pesado

se hace

en el proceso llamado servidor y el (1os) proceso (s) sólo se ocupa de la

interacción con el usuario (aunque esto puede variar).

Los principales componentes del esquema cliente-servidor son entonces los

Clientes, los Servidores y la Infraestructura de Comunicaciones.

Los Clientes interactúan con el usuario, usualmente en forma gráfica.

Frecuentemente se comunican con procesos auxiliares que se encargan de

establecer conexión con el servidor, enviar el pedido, recibir la respuesta, manejar

las fallas y realizar actividades de sincronización y de seguridad.

6

,.!!!~S!!!AP~~~~~~~~~~~~~u!!!DIV!!!'!!!e!!!rB~id!!!a!!!d!!!d!!!e!!!Ci!!!'en~e!!!i88~Co~m!!!e!!!r!!!Cl!!!'a1!!!es~!!!!.",!!p

Los Servidores proporcionan un servicio al cliente y devuelven los

resultados. En algunos casos existen procesos auxiliares que se encargan de

recibir las solicitudes del cliente, verificar la protección, activar un proceso

servidor para satisfacer el pedido, recibir su respuesta y enviarla al cliente.

Además deben manejar los interbloqueos, la recuperación ante fallas, y otros

aspectos afines.

Para que los clientes y los servidores puedan comunicarse se requiere una

Infraestructura de Comunicaciones (red de área local-LAN), la cual proporciona

los mecanismos básicos de direccionamiento y transporte.

Las aplicaciones cliente-servidor clásicas o de 2 capas como su nombre lo

indica agrupan la lógica de presentación (interfaz) y la lógica de aplicación en la

máquina cliente y accede a fuentes de datos compartidos a través de una conexión

de red que se encuentran en el servidor de datos.

Estas aplicaciones de dos capas trabajan bien aplicaciones a escala de

departamentos con un modesto número de usuarios, una base de datos sencilla y

una red segura y rápida.

La ventaja que presenta este tipo de aplicaciones es que los datos están

centralizados. Esta centralización beneficia a la empresa pues es más fácil

compartir los datos, se simplifica la generación de reportes y se proporcionan

consistencia en el acceso a los datos.

7

Universidad de CieneiaB ComercialesSAP,~--JIIJI !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1.- Fase de Definición:

1.1 Análisis del Sistema (Requisitos).Objetivo: Obtener los requerimientos del negocio.

El proyecto tendrá como fin el desarrollo de un sistema para el control de

alquileres de películas en DVD, siendo este una solución de las necesidades de la

empresa.

El sistema será de uso exclusivo del encargado del video su función primordial

será la de prestarse como una herramienta automatizada de administración y

control de películas, búsquedas de clientes, devoluciones y emisión de reportes.

El sistema constará con un ambiente de trabajo gráfico, lo cual facilitará la

comunicación del usuario con el sistema y le lleva a hacer uso de el sin la

necesidad de profundos conocimientos de computación. Obviamente si esta

obligado a conocer del funcionamiento de los procedimientos requeridos para poder

obtener un buen desempeño en la manipulación del sistema.

Dicha empresa posee 2 computadoras las cuales son:

1 PC COMPAQ DESKPRO SERIE 5000.

1 PC E-MACIllNES

PC COMPAQ DESKPRO.

¡. ACERCA DEL HARDWARE

Procesador AMD 1.1 GHz.o Memoria RAM 256 MB de tipo DIMM.ó' Adaptador de Pantalla: Tarjeta de video SIS 630/730 (Integrado).'. Monitor COMPAQ MV540." Tamaño del monitor en pulgadas 15." Tarjeta de red 10/100 Mbps.

8

Univerllidad de Cieneiu Comercial...SAP-it<4•''IIJli' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,.""",.

e Direcci6n MAC 00-CO-DF-12-97-53." CD-ROM Lition CD-ROM LTN526S 48x." 2 Puertos USB SIS 7001 PCI a USB (Integrado).., HDD 20 GB marca Maxtor." Adaptador de sonido SIS7018 (Integrado).il Modem HSP56 MR V.92." Mouse PS/2 Compaq." Teclado PS/2 Compaq 101 Teclas." Floppy drive 1.44 MB." Fabricante del bios Phinex.., Fuente de poder ATX 115V

e-MACHINES

~, ACERCA DEL HARDWARE

., Procesador AMD ATHLON 2400+ 2.0 GHz~ Memoria RAM 512 MB de tipo DDR.., Adaptador de Pantalla: S3 PROSAVAGE8

Monitor COMPAQ MV540." Tamaño del monitor en pulgadas 1(>... Tarjeta de red lO/lOO Mbps.

CD·ROM Lition CD-ROM LTN526S 48x.6 Puertos USB VIA (Integrado).HDD 60 GB marca Maxtor.Adaptador de sonido AVANCE AC'97 (Integrado).Modem SmartLin.k SL1800Mouse PS/2 E-MACHINES.

.. Teclado PS/2 E-MACHINES 105 Teclas.i, Floppy drive 1.44 MB.

Fabricante del bios Pbinex.Fuente de poder ATX 115V

'" Planificación Estratégica de la Información (PEI)

La planificaci6n de la estrategia de la información nos permite:

!. Definir los objetivos y metas del negocio según sea estratégicas.

2. Aislar los factores de éxitos críticos que permitan al negocio alcanzar esos

objetivos y metas.

9

,.!,!!!!S!,!!!!AP!,!!!!!,!!!!!,!!!!!,!!!!!,!!!!!,!!!!!,!!!!!,!!!!!,!!!!!,!!!!!,!!!!!,!!!!",U",DJV",'",e",r8",id",a",d",d",e",Ci",'eD!,!!!!eJ",'88!'!!!!Co!'!!!!m",eI'eJ!'!!!!'al!,!!!!e8!!!!!!!!!!

3. Analizar el impacto de la tecnología y automatización de las metas y

objetivos.

4. Analizar la información existente para determinar su papel en la

consecución de las metas y objetivos.

Modelado de la Empresa.

Este modelado crea una visión en tres dimensiones de un negocio.

1" Se ocupa de la estructura de organización (organigrama) y de las funciones

que se realizan dentro de las áreas de negocio definidas en el organigrama.

~)." Descompone la función de negocio para aislar procesos que hacen que ocurra

dicha función.

;:" Relaciona objetos, metas y FCE con la organización y sus funciones.

Además crea un modelo de datos a nivel de negocio que define los objetivos de

datos clave y sus relaciones entre ellos y con otras áreas del negocio.

Fig. 1.1 Creación del organigrama de la empresa con sus funciones.

10

Universidad de CieneiBS Comereiales• SAP.....!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~!!!!!!!

Identificamos las funciones del negocio y definimos los procesos necesarios

para implementar las funciones de negocio para cada departamento.

ADMINISTRACIÓN

a. Realizar promociones.,,. Brinda mantenimiento al local.r·. Surte la empresa del producto (películas).d. Llevar el control de películas disponibles.

ATENCION AL CLIENTE

;, Dar mantenimiento a las películas.), . Promover los Estrenos de películas.

Realizar membresÍas.! i Ingresar datos del cliente.,. Ingresar datos de Películas.\. Ingresar datos de Proveedor.

i:l' Aceptar devoluciones.I1 Modificar datos de Clientes, Proveedores o Películas.1. Dar de baja a Clientes..'. Recopilar sugerencias de clientes.i. Llevar el control de entrada y salidas de las películas.i, Atender solicitudes de alquiler.

CAJA

[j. Cobrar pago de alquileres.f, Cobrar pago de MembresÍa.(' Ajustar pago de alquiler de películas en promoción.¡ l. Presentar informes de cierre de caja diario, mensual y trimestral.

Proceso de Refinamiento:.;, Recoger datos del cliente en el área de Atención al cliente., Recoger información de todos los alquileres realizados.,~, Desarrollar Perfil del Proveedor..;. Desarrollar Perfil del Cliente.•,' Ingresar datos de Películas.•~. Realizar modificaciones en cliente, proveedor o Películas.•¡, Aceptar devoluciones,~, Diseñar reportes de control de alquileres.

11

Universidad de Ciencias Comerciales

? Análisis del Área del Negocio (AAN).

Es una actividad de modelado de empresa que se concentra en los objetos de datos

(denominados también entidades) necesarios para alcanzar las funciones del

negocio. Un objeto de datos contiene un conjunto de atributos que define algún

aspecto, cualidad, característica o descriptor de la información que describe.

Objeto: Cliente

Atributos: Código

Nombre

Apellidos

Teléfono

Dirección

Celular

Foto

Cédula

Email

Referencias

Objeto: Película

Atributos: Cod_Pelicula

Nombre_Pelicula

Genero

Proveedor

Tipo_Pelicula

Estado (Disponible, Alquilado, Dañado, Perdido)

Foto

12

Objeto: Alquiler

Atributos:Cod_AJquiler

Película

Cliente

Fecha de Aquiler

NombrePelicula

Precio

Tiempo de AJquiler

Fecha de devolución

Objeto: Proveedor

Atributos:Cod_Proveedor

Nombre

Dirección

Teléfono

Fax

Email

PersonaContacto

Celular

Objeto: Empresa

Atributos: Nombre

Dirección

Celularl

Celular2

Universidad de Cieneias Comerciales

13

SAP Universidad de Ciencias Comerciales

~ Fig. 1.2 Análisis del Área del Negocio (AAN).

Genera

Solicita Alquil r

Ingresa IIIdatos Solicita

membre

III síaContac

IIIPagaAlq iler

IIPagamem sí

Devuelve

14

• !!!!!!!!S..AP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!............U..DIV..•..e..r8l..•..da..d..d..e..Ci..·en!!!!!!!!e..i88!!!!!!!!CO..Dl.....el'e!!!!!!!!ial..es!!!!!!!!..

~ Diseño del Sistema del Negocio (DSN).En la elaboración de nuestro sistema nos guiamos por el eSqUemA de

arquitectura el cual se encarga de transformar la información, empleando un

diseño del tipo entrada - proceso - salida.

Fig. 1.3 Plantilla de Arquitectura

Fig.I.4 Gráfica de Diseño del Sistema de Negocio.

15

SAP Universidad de Cieneias Comereiales

1.2 Planificación del proyecto

Objetivo: Elaborar el Plan del Proyecto del Software.

En este acápite se determina el ámbito del Software. Se debe evaluar la

función y el rendimiento que se asigna al Software durante la ingeniería del

sistema para establecer un ámbito de proyecto que:r¡.o sea ambiguo, ni

incomprensible para directivos y técnicos.

Los puntos que hay que estimarse antes de comenzar el proyecto son:

¿Cuánto durará?, ¿Cuánto esfuerzo requerirá? Y ¿Cuánta gente estará implicada?

Estas estimaciones se hacen dentro de un marco de tiempo limitado al comienzo

de un proyecto de Software el cual debe actualizarse regularmente a medida que

progrese el proyecto.

Cálculo de la Viabilidad

La viabilidad y el análisis de riesgo están relacionados de muchas maneras.

Si el riesgo del proyecto es alto, la viabilidad de producir software de calidad se

reduce.

El estudio de la viabilidad de un proyecto consiste en averiguar si es posible

que el sistema de información sea desarrollado e implementado exitosamente en el

Video Club Rubenia.

La evaluación de la factibilidad de un proyecto es la información que

requiere el administrador del Video Club, para decidir si se realiza el proyecto,

posponerlo o cancelarlo.

16

Universidad de Ciencias ComercialesSAP,¡t.í&~!~~r !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

La viabilidad del proyecto se reviso desde tres perspectivas:

1. Técnica2. Operativa3. Económica

• VIABILIDAD TÉCNICA

La tecnología que se empleará es práctica y disponible ya que los equipos

con los que cuenta la empresa son muy buenos.

Dado que es un sistema que emplea tecnología Cliente - Servidor en dos

capas, se requiere diferenciar los tipos de equipo para su implementación.

Máquina Cliente

En la parte del Cliente no se necesita un equipo con muchas exigencias,

dado que la instalación es ligera y se trata de no cargar mucho como el procesador

de tareas exhaustivas.

La máquina Cliente establece una rápida conexión con el Servidor, realiza

las solicitudes necesarias, recibe una respuesta y se desconecta de él, a la espera

de enviar una nueva orden.

Por todo lo anterior, las especificaciones para la máquina cliente son las

siguientes:

• Procesador AMD 1.1 GHz. de velocidad.• Memoria RAM 256 MB.• Disco Duro 20 GB.• Sistema Operativo Windows XP Profesional.• Tarjeta de red lO/lOO Mbps.

17

,5!,!!!!!S..AP!,!!!!!!,!!!!!!,!!!!!!,!!!!!!,!!!!!!,!!!!!!,!!!!!!,!!!!!!,!!!!!!,!!!!!!,!!!!!!,!!!!!..U!,!!!!!DlV..• ..ers!,!!!!!id..&..d..d..e..Ci..·en!,!!!!!c..i88!,!!!!!Co!,!!!!!m..er..c..iaI!,!!!!!e8!!!!!!!

Elementos de red.

• Hub de 8 puertos• 20 mts de cable.• 4 Conectores RJ45.

Máquina Servidor

Dado que está será la máquina que tendrá la mayor responsabilidad del

sistema, deberá tener un buen nivel de recursos.

Los Clientes se conectarán a él y le darán la orden de ejecutar distintos

procesos, los cuales deben ser respondidos con prontitud. De esta manera será la

unidad de almacenamiento de los datos.

Por lo tanto los requerimientos serán lo siguientes:

• Procesador 2.0 GHz• Memoria 512 MB• Disco Duro 60 GB• Windows 2000 Pro• MS SQL Server 2000• Tarjeta de red lO/lOO Mbps.

<, VIABILIDAD OPERATIVA.

Acorde a las entrevistas y pláticas con el administrador y operadores que

utilizarán el sistema consideran necesario un sistema práctico para el control de

Alquileres de videos y Clientes afiliados al Video Club.

El SAP fue elaborado con el fin de facilitar las labores de administración y

control de Alquileres de Películas en DVD de la empresa en la cual diseñamos el

proyecto.

18

SAP Universidad de Ciencias Comereialee

Su ambiente de trabajo es completamente gráfico, lo cual facilita la comunicación

del usuario con el sistema y le lleva a hacer uso de él sin necesidad de profundos

conocimientos de computación. Obviamente, si está obligado a conocer el

funcionamiento del alquiler para obtener un buen desempeño.

Los empleados quedaron muy contentos con la nueva forma de trabajar una

vez implementado el sistema. Para desarrollar el sistema.~e tomó en cuenta la

opinión y recomendaciones de los futuros usuarios del sistema.

VIABILIDAD ECONÓMICA.

A través de estas tablas queremos reflejar de forma detallada los gastos

indirectos implicados en la elaboración de este software por parte de los tres

integrantes del grupo, que a su vez será para nosotros el valor total de

remuneración ya que no estamos cobrando el software en sí por tratarse de un

trabajo de tesina (Tabla 1.).

Así como los costos que el administrador tendrá que asumir para que se

lleve a cabo la instalación completa de nuestro sistema (Tabla 2.).

Aclaramos. que el valor real y total del software será calculado más

adelante cuando utilicemos la herramienta COCOMO n para determinar la

Estimación del proyecto.

También queremos puntualizar que nosotros no realizamos ningún cálculo

de VAN, de TIR o de periodo de recuperación ya que estamos construyendo un

software que no sustituirá personal, no generará ganancias a la empresa menos

a nosotros.

19

Univemidad de Ciencias ComercialCll,. SAP

-"'"', !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...

Tabla 1.

p y

DpSCl'ipción Valo!'

Transporte 170.00

Alimentación 245.00

Internet 20.00

1m resiones· encolochados 320.00

TOTAL 755.00

Nota: La UNIDAD MONETARIA A UTILIZAR SERÁ: DÓLAR (U$)

Tabla 2.

1

4

1

20mts

1

1

1

COMPAQ DESKPRO

Conectores RJ-45

HUB de 8 puertos

Cable Belden UTPcat5

Impresora

Instalación de red

Licencia de SQLServer 2000

850.00 850.00 850.00 o650.00 650 650.00 O

0.40 1.60 O 1.60

90.00 90.00 O 90.00

0.22 4.40 O 4.40

100.00 100.00 100.00 O

100.00 100.00 O 100.00

250.00 250.00 O 25000

TOTAL 44li.OO

Nota: La UNIDAD MONETARIA A UTILIZAR SERÁ: DÓLAR (U$)

20

, ...!!!!S..AP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U..DIV..•..e..I'8..I..•d..a..d..d..e..Ci..•en!!!!c..ias!!!!Co!!!!m..e..r..C1..•al..C8!!!!...~~

.. Gestión de Proyecto de la Ingeniería de Software.

La gestión eficaz de un proyecto de software se concentra en el personal, el

problema y el proceso. Un gestor que no fomenta una comunicación con el cliente,

al inicio de la evolución del proyecto, se arriesga a construir una elegante solución

para un problema equivocado así como arrojar métodos técnicos y herramientas

eficaces al vacío.

El personal debe organizarse en equipos eficaces, motivados para crear un

software de alta calidad y coordinados para alcanzar una comunicación efectiva.

Los requisitos del producto deben comunicarse desde el cliente al desarrollador. El

elemento fundamental en todos los proyectos de Software es el personal.

PERSONAL

Los participantes

" Profesionales: Proporcionan las capacidades técnicasnecesarias para la Ingeniería de un producto o aplicación.

l' Estos pueden ser Ingenieros en Sistemas, Analistas de Sistemade Información o bien técnicos de programación, ya que este esun producto para la elaboración de una tesis monográfica, losprofesionales serán los estudiantes que desarrollamos dichosistema.

,', Clientes: Especifican los requisitos para la ingeniería delsoftware. Los clientes finales en este caso son:,;. El administrador y EL operador (2)

Al entrevistarnos con cada uno de ellos, estos expusieron los problemas que

surgen al no existir un controlador rápido de los datos que fluyen dentro de la

empresa, es por eso que se dice que el cliente es en general el personal del

Video Club Rubenia.

21

SAP

o Usuarios finales:

Univel'llidad de Ciencias Comerciales

Interaccionan con el software, están integrados por los participantes, en

este caso los usuarios finales serán los mismos

anteriormente.

El equipo de software

que mencionamos

Nuestro equipo de software se regirá por la organización genéricaDescentralizado Democrático (DD).

El cual posee las siguientes características:

Se nombran coordinadores de tareas a corto plazo y sesustituyen por otros para diferentes tareas.

Las decisiones sobre problemas y enfoques, se hacen porconsenso del grupo.La comunicación entre los miembros del equipo, eshorizontal.

PROBLEMA

En la actualidad el Video Club Rubenia está teniendo un gran éxito en el

mercado pero le están surgiendo algunos problemas relacionados con el proceso de

control de alquiler de películas lo cual le influye en el grado de satisfacción del

cliente, ya que este tiene que esperar que se lleven a cabo una serie de actividades

manuales; por lo que le ha llevado a plantearse cambiar la aplicación de gestión

del negocio, de modo que incluya funciones tales como:

Digitar información de datos de clientes, proveedores o películas deforma rápida.

" Digitar los datos de alquileres realizados.•c Realizar búsquedas de películas, clientes y devoluciones.

22

Universidad de Ciencias ComercialesSAl-~&~.:~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

PROCESO

Las fases genéricas que caracterizan el proceso de software - definición,

desarrollo y mantenimiento - son aplicables a todo software.

El gestor del proyecto debe decidir que modelo de proceso es el más adecuado

para:

, Los clientes que han solicitado el producto y la gente que realizará eltrabajo.'.'.- Las características del producto en sí." El entorno del proyecto en el que trabaja e.l equipo de software.

Maduración del Problema y el Proceso.

Asumimos que la organización ha adoptado el siguiente conjunto de actividades:

-Comunicación con el cliente.-Planificación:

" Análisis del riesgoIngeniería

" Construcción y entregaEvaluación del Cliente.

Las cuales permitieron determinar las siguientes tareas a realizar por elsistema:

Tareas Estructurales del SoftwareFunciones del Producto

Introducción de Datos ClientesIntroducción de Datos ProveedorIntroducción de Datos Películas

Búsqueda de Clientes por código, nombre o apellidosBúsqueda de Película por su nombre o por su código.

Control de DevolucionesElaboración de Reportes

Control de CajaRealiza alauileres

23

SAP Universidad de Ciencias Comerciales

o Descomposición del Proceso.

Considerando que hay limites de tiempo muy severos y el problema se puede

compartimentar mucho, nuestra mejor elección fue elegir el Modelo DRA.

El proyecto es relativamente simple, por tanto requiere de las siguientes

tareas:

j • Desarrollar una lista de aspectos que se han de clarificar.;~. Reunirse con el cliente para resolver los aspectos que se han de clarificar.:1, Desarrollar conjuntamente una exposición del ámbito del proyecto.j. Revisar el alcance del proyecto con todos los implicados, y¡\. Modificar el alcance del proyecto cuando se requiera.

Selección del Modelo de Proceso.

De acuerdo a las características mencionadas anteriormente hemos

seleccionados el Modelo de Desarrollo Rápido de Aplicaciones (DRA).

Este es un modelo con una adaptación a «Alta Velocidad» del modelo

secuencial en el que se logra el desarrollo rápido utilizando una construcción

basada en componentes.

Permite al equipo de desarrollo crear un sistema completamente funcional

de períodos cortos de tiempo.

Dicho modelo comprende las siguientes fases:

" Modelado de Gestión.Modelado de Datos.Modelado de Proceso.

v' Generación de Aplicaciones.,r Pruebas y entrega.Anexo Fig. 1.5

24

SAP UniveI'8idad de Cieneias Comereialell

ÁMBITO DEL SOFTWARE.

La función de este sistema es proporcionar a la empresa una manera eficaz

de controlar el alquiler de películas y de ahorrar tiempo de búsqueda de los

datos del cliente y los datos de las películas. Presentar informes de una manera

fácil cuando sea necesario.

Al ocupar el sistema este presentará al operador diferentes formularios que

contendrán los diferentes objetos datos identificad.0s con anterioridad (p.e.:

Clientes, Alquileres, etc.); sin embargo antes de entrar a un determinado

formulario tendrá que ingresar el código ya sea del cliente o el de la película

que desea así como al entrar al sistema este requerirá que se ingrese con la

respectiva contraseña de identificación de Usuario.

En cuanto al equipo a utilizar estarán dos computadoras conectadas a

través de un hub en donde una máquina regirá como servidor y su usuario será

el administrador del local, la segunda será para el área de atención al cliente y

caja.

Las prioridades que tendrá el sistema serán para la gerencia administrativa

que será la única que tendrá acceso a la informaciQn tanto de caja como de

atención al cliente y como segunda prioridad la tendrán los empleados (en este

caso los usuarios operativos del sistema), para trabajar más seguro en cuanto a

información que están autorizados a manejar.

" Métricas orientadas a la función.

La métrica Puntos de Función (PFs), desarrollada por A. J. Albrecht

[Albrecht79], fue la primera métrica orientada a la función y sugiere un

acercamiento a la medida de productividad. Los puntos de función se obtienen

25

SAl- Universidad de Ciencias Comerciales

utilizando una relación empírica basada en medidas cuantitativas del dominio de

información de software y valorizaciones subjetivas de la complejidad del software.

Esta técnica aporta una medida estándar del tamaño de los sistemas de

información, y sirve de base para la estimación del esfuerzo requerido para el

desarrollo de los proyectos. 4i medida de los sistemas de información mediante los

puntos de función proporciona una estimación del tamaño -, del software

independiente de la tecnología utilizada en su desarrollo y dependiente

únicamente de la funcionalidad que el sistema proporciona al usuario. Esto quiere

decir que la estimación se refiere a los resultados que se obtienen de un sistema de

información y no cómo se producen internamente estos resultados.

Componentes de la Evaluación.

Para calcular los PF se deben realizar dos conteos: Conteo de tipos de funciones

transaccionales y Conteo de tipos de funciones de datos.

Las Funciones Transaccionales representan la funcionalidad provista al usuario

de los procesos de datos de una aplicación. El conteo de tipos de funciones

transaccionales determina la cantidad de Entradas Externas, Salidas Externas y

Consultas Externas.

26

¡lIY~.,;) S1\.P Universidad de Ciencias Comerciales~~1'==-,:::=-'·c·=~,"::F'-=::':':':<o=';¡'::,",::J;:ij:::'=·=--V='····==·""'---_····-:-s",,-,~-,·_·.::.~~~-.~~:~::=.l;;:;"=l=-~·'.1

Cálculo del punto de función

La medida de punto de función trata de medir la funcionalidad o utilidad delsoftware.

Parámetro ¡- Factor de Ponderación Subtotal

Simple Il____ ComplejoNúmero de entradas1- 3 I 6 60de usuario

Número de salidas 1- 4 I 7 145de usuario

Número de 1_ 3 I'. 6 28Peticiones de usuario , ,Número de archivos 1liliiii 7 1I '~~~1'i';¡ 15 110·/;'lt~i~~.>,...Ni':-': .

Número de

I 5 Ir:;1

10interfaces externas J O

'1'0'1'.\1, '1'

27

SAP Universidad de Ciencias Comerciales

Asignación de valores para calcular F que indica un valor de ajuste de complejidadque considera las características técnicas y operacionales del sistema.

F.-\.( -TOH-

Y.\LOH

12. Conversión ¡instalación en diseño.

4. Rendimiento Critico.

2. Comunicación de datos.

,> 1

9. Complejidad de valores de dominio de información

. 1_0' Complejidad del procesamiento inte._rn_o_. J_______ l_l:_Códi~~~~~~~~~a~e~ ~e~~~a~~._ _ _ __ ___ __J

___ J

1. Copia de seguridad y de recuperación fiables.

6. Ejecución en entorno existente.

3. Funciones de procesamiento distribuido.

TOTAL F

________ . 13. Instalaciones múltiples.:n ~er~n~s~!_~a~~~n~~__~

14. Aplicación diseñada para cambios y utilización fácil del usuario.

; 6. Entrada de datos interactiva (en línea) J----- ------------------------- --- -- ------

~ .: Transacciones de entrada en múltiples pantallas. J8 Archivos maestros actualizados de forma interactiva I

I'----------~~__ _.__J

'1

El punto de función se calcula con la sigUiente ecuación:PF =T'" (0.65 + 0.01 ." F).PF = 343 * (0.65 + 0.01 * 51).PF =343 * (0.65 + 0.51).PF = 343 * 1.16PF =397.88 :::: 398

28

......S....AP"·!!!!!!!!!!!!!!!!'-!!!!!!!!I!!!!!!!!!!!!!!!!!!!!!U"w..•v..m..·..i..dad..· ..d.."..Ci",·..en..ei!!!!ll!II8..Co!!!!m!!!!er..c..ial..fl8!!!!!!!!

Integración de las métricas dentro del proceso de la Ingenieria delSoftware.

¿Por qué es tan importante medir el proceso de Ingeniería del Software?

• Permite determinar si estamos mejorando• Proporciona beneficio a nivel estratégico• Proporciona beneficio a nivel de proyecto• Proporciona beneficio a nivel técnico.

ESTIMACIONES.

Para realizar estimaciones de costos y esfuerzos hay tres opciones:

1. Buscar las estimaciones en proyectos similares ya terminados.

1,. Utilizar técnicas de descomposición del problema.

B. Desarrollar un modelo empírico de cálculo de costos y esfuerzos.

Cada una de estas opciones tiene sus ventajas y desventajas, en nuestro

proyecto hemos decidido implementar el modelo de estimación más completo

llamado COCOMO 11, que es una jerarquía de modelos de estimación que tratan

las áreas siguientes:

" Modelo de composición de aplicación. Utilizado durantes lasprimeras etapas de la ingeniería del software.

o Modelo de fase de diseño previo. Utilizado una vez que se hanestabilizado 10$ requisitos y que se ha establecido la arquitectura básica delsoftware.

) Modelo de fase posterior a la arquitectura. Utilizado durantela construcción del software.

29

SJlP

COnstructive COst MOdel (El Modelo del Costo constructivo):

Posee tres opciones de tamaño distintas: puntos de función, puntos de

objetos y Ííneas de código fuente.

A continuación mostramos en las siguientes pantallas los cálculos

efectuados en el programa que nos permitirán estimar el costo, esfuerzo y el~¡;

tiempo de nuestro software.

Para comenzar tenemos que calcular el valor de las pantallas indicando

primeramente la cantidad de vistas o pantallas que contendrá todo el sistema a

través del rango que se nos presenta: >3, 3 - 7 ó mayor que 8; luego indicamos la

cantidad de formularios existente en el sistema y la cantidad de tablas que habrán

tanto en el cliente como en el servidor.

30

Universidad de Ciencias Comerciales

Seguidamente damos al botón Siguiente para proseguIr con el resto de loscálculos.

:~·(~~\[(~ptafákuIbPantaital _~ firdWo ~didón ~ Ingreso de datos ~aIcuIar Datos Ventana AY!,!da

.º1~Ji~T-~~§r:~Jilir~~ ----- -~~~~~~~~~_~_~~__.~__ ~ ~_.... __Proceso del Cálculo de Pantalla

Usted Seleccionó tI~!~!lif}~

Por favor digite los siguientes datos adicionales·

No. de Formulari os· r~if'~J

Tablas en el Servidor.

Tablas en el Cliente í,~lli1~~l

Observación: Si usted dedde retornar al Menú Prindpal~ selimpiaran todas las variables utilizadas en el Cálculo.

Aquí se muestl·a como calculamos el valor de los informes, indicando al

pl·incipio la cantidad de estos bajo un rango (O - 3, 2 - 3 Ymayor que 4); después de

elegir este parámetro escribimos el númel·o de formulro·ios que utilizaremos para

crear dichos informes que en nuestro caso son 9 así mismo escl'ibimos el número

de tablas que utilizaremos para cl·earlos ya sean en el sel·vidor o del cliente.

31

SAl- Universidad de Ciencias Comerciales

iJ:Cotomó'~tC~pta t~'tuI6Info~j' ~ ._. _~~ Archivo ~dicl6n ~r !ngr~ ~: ~_~~_ ~~cul~~~ _ V~ntana AY!:!.~ _ _ __ _ _ _ _

,~-~~-~~l ~iliW~==~Proceso del Cálculo de Informes

1

Usted Seleccionó:~

Por favor digite los siguientes datos adicionales:

No de Formularios. r¡'1{'ij;~tl

Tablas en el Servidor.bg"¡:J

Tablas en el Cliente ¡' ;"~'¡_I

Observación: Si usted decide retornar al Fonnulario Anteriorl. se .limpiaran todas las variables utilizadas en esta pantalla.

Siguiendo con nuestros procesos de cálculo nos encontramos ahol·a con el de

Peso, el cual nos indica el volumen que nosotros consideramos representa nuestro

sistema tomando en cuenta el todo, es decir, la complejidad que tiene en su

creación y contenido.

Por lo que elegimos de entre los parámetros que nos pone un nivel medio en la

creación de las pantallas e infol"meS, y un nivel simple en los componentes 3 GL.

32

Universidad de Ciencias Comerciales

I~';(ik~'-t(ápi~ t¡k:ukfp~l "_O _

l __~__~~~_~~~-_~~-~ ~~__~~ -_ ------ .'

Usted Seleccionó en Pantalla.

Usted Seleccionó en Informe:

Usted Seleccionó en Componente. r;;ó~j

limpio, I__ ~lUiD'!!!!.~ __ .

Siguiente""

Observación: Si usted decide retornar al Formulario Anterior.. se limpiaran todas las variablesutilizadas en esta pantalla.

Esta pantalla muestra un recuento de todos los datos ingresados con

anteriol·idad, con la variante que ahora tenemos que indical" el número de

formularios que l"eutilizamos o vamos a reutilizal" en nuestro sistema y la opción

de calcular el NOP) el cual resulta de la sumatoria de todos los puntos objetos

multiplicados por el porcentaje de reutilización que se espera lograr en este

proyecto. Dándonos como resultado 7 Puntos Objetos y un NOP de 6.23 Ahora

seleccionamos la opción Siguiente.

33

Universidad de Ciencias Comerciales

~ (otomo -[Presentadon Puntos Objetos y Captura de Porcentaje Reutilización] _(f8:.:ct;i~- ~diciÓn 'J.er !ngre;;;-de dat~-~~lcu~rDato-;- ve~ta~~--AY~d~- ------ -------------- ----

,~I~~J~ _lJ~1~L::l~_",;;J~1~,L ----- ---"----- --- -- ------ ..-"~-- ---~--- --~---~ --- -Recuentos de Puntos de Objetos:

Pantallas:

Número de Vistas:

Número de Tablas en Servidor:

Número de Tablas en Clientes:

I --20--­

r--f¡- --

Informes:

Número de Secciones'

Número de Tablas en SelVidor:

Número de Tablas en Clientes:

r 9

Formularios de Reutilización:

Indique el No_de Formularios a reutilizar:!--4- .I

NOP

ISiguiente» "1¡

_J

Summmf6PtfntosObjetos

~_~Lj

Reto,nm

5

oObjeto de Informes:

Componentes 3 GL-

Complejidad Peso

Objeto de Pantalla

Observación: Si usted decide retornar al Formulario Anteriorl. selimpiaran todas las variables utilizadas en esta pantalla. -

Para finalizar se nos muestra esta última pantalla que contiene el proceso de

cálculo de Ratio de Productividad, en donde elegimos la escala que tienen las

personas que trabajarán en el diseño y elaboración del sistema así como su

madurez y la productividad que tendrán estos. Dándonos a su vez el valor que le

corresponde a cada uno ganar por mes.

También podremos calcular el valor del costo real del software al introducir un

costo aproximado del valor que consideramos tiene el sistema.

34

Universidad de Ciencias Comerciales

!_~ (ocorno - [Capta Ratio de Productividadj--------'----- ------_._-- .-_ .. -..- ...__ ...._-- --','7 Archivo Edición Ver Ingreso de datos ~aIcular Datos ventana Ay!!.da

6J~~ ~J ~i~ -8 r;Jl!J ~~ 'l~r=r' .-.-:.-=---- ~---ProcesodeíC~deRatlo(fe-Pro-dúctiVidid----------- .-.---

Usted Seleccionó el Ratio de. j'i

Costo del SoftwareValor Meses--Personas es.

Introduzca Costo del Software: ¡'-';!5S- !"""CBieulli,--¡Sisiti-j¡ SofIwllle ¡t..;----...-~_.__._.--.-.-....;

MentíP1incipllln

Observación: Si usted decide retornar al Formulario Anterior. se limpiaran todas las variablesutilizadas en esta pantalla.

Consideramos que el resultado dado por esta herramienta es viable y a su vez

accesible comparado con lo que podría costar un software en el mercado actual y

aun más cuando es hecho a la medida.

Por lo tanto la cantidad proyectada por COCOMO más el valor agregado de los

costos por invelotir, nos da como resultado el costo estimado del plooyecto el cual es

de $ 1,621.91

35

Universidad de Ciencias Comerciales

GESTIÓN DE RIESGOS.

Análisis de Riesgos

El análisis de riesgo es algo vital para una buena gestión del proyecto de

software y, sin embargo, a pesar de todo, se emprenden muchos proyectos sin que

se hayan considerado los riesgos concretos.

El análisis de riesgo consiste realmente en una serie de pasos de control de losriesgos tales como:

Identificación de riesgosSolución de riesgosSupervisión de riesgos, etc.

Para identificar los posibles riesgos que podríamos tener en la planeación del

proyecto elaboramos una Lista de comprobación de elementos de riesgos:

Tamaño del producto: El sistema será de tamaño mediano pues suduración es de 60 a 90 días. Tiene el riesgo de que conforme crezcala empresa aparezcan nuevos problemas l'elacionados a laintroducción de datos o su proyección en el mercado y este sistemano contempla esos problemas pOl'que sólo resuelve el problema queactualmente están pasando.

Impacto en el negocio: Es un riesgo que cone nuestro sistema alestar hecho a la medida, es decir que sólo satisface las necesidadesdefinidas actualmente; por lo que es posible que más adelante laempl'esa pueda crecer y nuestro sistema requiera de nuevasactualizaciones en cuanto al ingreso de datos o el tipo deherramienta con que muestra su interfase de usuario. Además sesabe que cada día salen nuevos software y nuevas tecnologías depunta que en mayor o menor medida degradan a las actuales.

Características del Cliente: La variedad de exigencias y habilidadespara manejar cualquier programa depende del grado de preparaciónde cada cliente, sin embargo en nuestros tiempos la gran mayoríaes por lo menos o ha tomado cursos de operador pero no obviamos alas personas que saben poco del uso de una computadora, por esonuestro sistema lo diseñamos de una manera sencilla y fácil de usar

36

Universidad de Ciencias Comerciales

para que este al utilizarlo no tenga grandes incertidumbres encuanto al funcionamiento o el desempeño.

Definición del Proceso: Una de nuestras prioridades es diseñar unsistema en el cual el usuario tenga la destreza de entender todo loque este contiene, por lo que realizaremos un seguimiento delsoftware al máximo de nuestra capacidad, para que en el futuro node problemas que tengan que ver con la ingeniería del mismo.

Entorno de desarrollo: Como herramienta principal para laelaboración de la base de datos utilizaremos el programa deMicrosoft SQL Server 2000, el cual permitirá que la base de datossea mucho más segura que lo que puede ser si utilizáramosACCESS. En cuanto al diseño y codificación del sistemautilizaremos Racional Rose y Visual Studio.Net que es laherramienta de creación rápida de aplicaciones Web ASP a escalaempresarial y aplicaciones de escritorio de alto l"endimiento, incluyeherramientas de desarrollo basadas en componentes, así comodiversas tecnologías suplementarias para simplificar el diseño,desarrollo e implementación en equipo de las soluciones. Para laelaboración de los reportes utilizaremos Crystal Reports para VisualStudio .NET, para la creación de la Ayuda emplearemos PDF WriteStudio.

Tecnología a construir: Dado que nuestro sistema será utilizado enuna red local, es necesal"io la creación y configuración en primerainstancia de dicha red para que esta se pueda desarrollar en unaaplicación Cliente - Servidor.

Tamaño y experiencia de la plantilla: Somos concientes de laimportancia que tiene la experiencia en cada uno de los integrantesdel equipo que realizará el sistema, sin embargo, no contamos conun personal altamente experimentado, ya que somos estudiantesegresados de la carrera de ingeniería de sistema y por tanto nuestraúnica experiencia se basa en pequeños sistemas realizados en los 4años que estudiamos nuestra carrera. Nuestra plantilla estalimitada a tres personas las cuales son:

José Luís Ortiz Peña.

Conny Vanessa Henríquez Montenegro.

Ronald Alberto Obando Streber.

37

SAP Universidad de Ciencias Comerciales

11 Evaluación del Riesgo

Para que sea útil la evaluación, se debe de definir un nivel de referencia de

riesgo. Para la mayoría de los proyectos, los componentes de riesgo

(rendimiento, coste, soporte y planificación temporal) también representan

niveles de referencia de riesgos. Si una combinación de riesgos crea problemas

de manera que uno o más de estos niveles de referencia se excedan, se parará

el trabajo.

Para determinar las consecuencias generales de un riesgo nosauxiliaremos de lo siguiente:

Determinar la probabilidad media de que ocurra un valor paracada componente de riesgo.Determinar el impacto de cada componente.Completar la tabla de riesgo y analizar los resultados:

Valores de impacto:

CatastróficoCritico

15%

20%

80%

70%

40%

70%

20%

i\. MarginalL Despreciable

3

1

2

2

1

2

1

Nota: Como no trabajaremos con las líneas de código no se podrásaber el impacto del riesgo.

38

SliP

PLANIFICACIÓN TEMPORAL.

Universidad de Cieneias Comereiales

Cuando se crea una planificación temporal de un proyecto de software, el

planificador empieza un conjunto de tareas. El esfuerzo, duración y fecha de

inicio son las entradas de cada tarea.

Como consecuencia de esta entrada, se genera un gráfico de tiempos también

denominado Gráfico Gantt. Se puede desarrollar un gráfico de tif;lplPO para

todo el proyecto. (Ver Anexo Fig.l.6)

GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE.

Los elementos que componen toda la información producida como parte delproceso de ingeniería del software se denominan colectivamente Configuracióndel Software. Estos se constituyen en los elementos de configuración del software(ECS).Aunque se pueden definir las líneas bases en cualquier nivel de detalle, la denosotros será la siguiente:

IDJleniería del sistema

"-

'"Especificación del sistema,Ámbito y Viabilidad

Análisis de Requisitos

"

. Especificación de los requisitos delSoftware, Control de las E/S de datos,Captura de datos.

Diseño del Software

Especificación de Diseño ~

Codificación

Base de datos, Código y prueba

Entrega

Sistema en funcionamiento

39

Universidad de Ciencias Come~ciales," SAP.~..._ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!I!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!l

Al construir el software sabíamos que existirían cambios inevitables. La gestión

de la configuración es el arte de identificar, organizar y controlar las

modificaciones que sufre el software.

Cuando los elementos de una especificación de diseño se documentan,

revisan, corrigen y son aprobadas la especificación se convierte en una línea de

base.

En caso de que un miembro del equipo de ingeniería del software quiera

hacer modificaciones en un elemento de configuración de software de línea de

base, se copia de la base de datos a un área privada del ingeniero.

40

SAP Universidad de Cienoias Comeroiales

11.- Fase de Desarrollo:

2.1 Diseño.

Objetivo: Traducir los documentos a Modelos UML.> Diseño Conceptual: Caso de Uso, Diagrama de Transición.

Los siguientes diagramas de casos de uso especifican una interacción entre un,1

usuario y el sistema en el que este puede lograr un objetivo. En cambio los

diagramas de transición o secuencia nos proporciona~una vista detallada de un

caso de uso en particular, como los reflejados en este proyecto.

Caso de uso del Administrador.

Establecer Precios

/ Administrador~/ (from Use Case VII...) ~

~ ~Realizar Pedidos al Pro\eedor Establecer Promociones

41

SAl- Universidad de Ciencias Comerciales

Caso de uso del Cliente.

Solicita Membresía

í Paga Monto de Memb"';a

~la~~Ula~ I /

~-~>C3J)Solicita Alquiler

«Extends»

Realiza Reclamo

Cliente(OO¿WI

Paga Monto de AlquilerElige Película

42

SAl- Universidad de Ciencias Comerciales

Caso de uso del Operador.

Ingresar Películas

Ingresar Prol.eedor

oRealizar Alquiler

Recopila sugerencias del cliente

®

Cobra pago de alquiler yMembresía

Modificar Películas

Ingresar Clientes .

~~

Modificar Clientes

(......•..........=...)..Verificar el Estado de cuenta del.. Cliente

Modificar Prol.eedorSolicitar Número de Cliente

Realizar Membresías

Aceptar De\OJuciones

~..•...•.........• ' .

~Promol.er los estrenos de

Películas

Presenta infomes de cierre de cajadiarios.

Dar de baja a Clientes

voo.<E~:-e_p_e_l_íc_ul_a ----=~

_o.::::~"'."~

""~

~

O

Ajusta pago de alquiler

43

SAl- Universidad de Ciencias Comerciales

Diagrama de referencia de la clase Película.

Estado

< Include»

~LTipo de Pellcula

/""nclUde»

Género de pelícUla~<llncffudde<::;>~--

Película

«Includ >

«Include»

Precio de AlquilerMostrar Imagen de Película

44

Universidad de Ciencias ComercialesSAP~&e ....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Diagrama de Casos de Uso General

('",m VldeoC!ub)

~EIj~Realizar Alquiler

(fll>m VldeoClub)

(11Om VldeoCtub)

Recopila sugerencIas del cliente

EIi¡;¡e Pelltula

(frotn VldooClUb)

Cobra pago de alquiler yMembresia

/" ((10m VldeoCtub)/'

Ingresar Clientes

l1(1'IOm VldeoClub)

«(",mVldeoCJUb)

Realiza Reclamo

Verificar Cliente

eb. s~.SolicitaAlqUller~Á Pa¡;¡a Monta de Membresra

(I'",mVldeoC!ub) ~ / «(mmVldeoClub)

QE /----7l"tiC

Dewel..e la pellcula Paga Monto de AlquilerClíentt('",m Video ClUb)

G

«~ó

(110m VldeoCtub)11/

!I

I

Modificar Peliculas

/I

Veí1ficar el Estado de cuenta delCliente

~IOm VldooCJub)

(frotn VideoClub)

Modificar Clientes

(110m VldeoClub)

\

\

Modificar Pro..eedor

O(I",m VldeoCltlb)

.~I

Realizar Membresías

./"

Solicitar Número de Cliente

(IromVldeoClub)(fromVidecCfub)

Aceptar DeloOluciones

,/

,/

(I",m VldeoClub)

Promo'ler los estrenos dePellculas

(l'mmV1deoClub)

Dar de baja a Clientes

((",mVlde.Club)

Realizar Pedidos al Pro..eedor

./

"/ /lnllresar Pro'leedor/ -"~.~.,

,/ /

Entrega Pelicula~ ./',//

~ ./'

Esta~:::::::a;lones O " //@<~~=- lng_(:_:_aVl_r'd_:_:~_r~_b~_as_~__ \1;~;~'

Presenta Intomes de cierre de caja Tdianos. 7"~(htJmVldeoClUb) /'

// 'Operador

/.' .' \.../' \// \

_v~~., / \N~~""'" / /// \

(ImmVldeo/ / \

~ / / ! 6

Verificar Estado de Pelfcula

Establecer PrecIos Brinda Mantemmiento al local

Generar Informes de Ingresos por ~mm VldeoCIUb) ,,,;tí ((mm VldooClub)

,.,~::.., "'--" 1,~7'

/Admln¡m:~

45

SAl- Universidad de Ciencias Comerciales

; Operador

Diagrama de transición de Alquiler de un Miembro del Video ClubRubenia.

~I 0°7'& I ~I o~~YJa

I I II Sollolta Membresla() I I I

Q Muestra__la O 1 1 :

Q< n I II Verflica~stado I I

OI------>¡J I

oJo I I¡J-< I O II I SollcltaO II O -, ------, --=tJ: 0- EI~-f- ~~ :~. I ~~o: >r\ :

~ ~_--o ~I:---o ! 1 ir I I I: : : En caso de no estiJ~s~~ela pelloula e,egil otra

I I I I II I I I I~ Sollolta PIilgO O ~ 1 I1]- ----y I I~¡-< Emlre PagoQ U: :~---- /1 Emite() I ILI ----1 '1_[1

0-- Entrega PeJicula ~: :

ó ~IOQ Fecha de entregai: :I 1 I II '1 I

46

SAl- Universidad de Ciencias Comerciales

Diagrama de Transición de Alquiler de un nuevo miembro del Video Club.

~ ~: Operador

~ ;A1guiler ~ ClientesI.;p;~O O

I IO O

I I I 1

II I I I

II I I I

SOlici'" MBmbresia O I I I IO"'"~I I I I

~OK

>9I I II 1 ,I I II Agrega ()I i I

O I

~1

SOlicita() II I I 1I I II

Elige()

~I I II

Verifica ES[dOO¡ I I

O---~] I II , ,

I

ODisponibilidad O

"TII I I

II I I

I II I I

I IEn caso de no TI:r dis~onibleelegir otra : I

I I I0--- I_AitstaO ---1 ------iI I1 I

I SOlidta pagoO

---~]I I I

~-- I I II I I

ll~mite Pago O I I I II ~ 1 I I

O IETlteO I o¡J

1

I I I 1

I Entrega MBmbreslaO I I I I

~--"ti I I I, I I I

OEntrega Pelicula I I I I>¡J

I ¡ 1

QIndica Fecha de entrega I I I I>9 I I I, I I I

I I I II I I

47

SAP Universidad de Ciencias Comerciales

Diseño Lógico:

Esquema lógico de la base de datos.

- -. -~

'~i~f': " ~.,.

r1 Cocb~J COlIgoNooDe

pNooDe ""'" DiecdooApeIdos""'"¡-.; CeüI J.-- TeIefono

¡-;,-: Telefooo Fax

¡....., CeUir¡.....

EMail-

¡""'Diecdoo PersooaContactob-' I ceUirfmair-'--h,.; Refereocial

Refere0cia2FFOCo

FK_PekUas_Proveeckres

FK_~_CIeltes

Genero

- -,.. . ..... , •• 'C.....

~.~~_.. _--

AQiIer FK_AIq.iIer_Pelo.ksPektjas

FK_Pelo.ksJieneroWCod_AIq.iIer

-- -~--- -- - I ..WCod_PeWIf-"o

ColJIeiajaf-'-

1- 1-NooDe_PeWI

CodC5e!te Cod_Genero1- l'echaAkPer ¡.....

¡..... r~.J)e5aja1- FechaDevob:ion CodJ'rovee<b'i"= PredoAkpjer ¡.....

Cod_Estado'f-- 1-

FOCo1-

FK_PekUas]~ t~Wcocb_r~

FK_PekUas_Estam~

1- r~

EstadiJ Precio p,kp1er

~o.;__ hDia~1- -""'" CIDo_Retraso. EstadoI

48

SAl'

~ Diagrama de Colaboración.

Estos diagramas nos muestran cómo operan los objetos de un grupo entre sí

en un caso de uso. A cada mensaje se le asigna un número para documentar el

orden en el que tiene lugar.

Cliente Nuevo del Video Club.

:~9: AjustaO12: EmiteQ

~

2: OK7: Disponibilidad O10: Solicita Pago()

13: Entrega Membreslao14: Entrega PeliclJa

15: Incica Fecha de enInlga~

~1: Solicita Membnlsia

11: Emite Pago O Q'----'~-~--------¡-----<E----~~--------~A

4: SolicitaO

~:AgregaO

\\ .

\ \6: Verifica Estado()

\~'\

\

: CI ente

\

\\

8:E~de no est r disponible elegir otla

\

49

SllP Universida.ldeCien~i88Comerciales

Cliente Socio del Video Club.

10: En caso de no estar disponible la pellcula elegir olla-----;¡.. .3: Verilea Estado?

~OKO7: BuseaO

Q . 8: Veñfiea estado OA--------~-----;¡..---------"--------1-?,~=

lador

13: Erniteo

J

1: Solicita MembreslaO9: Disponibilidad O11: Solicita Pago O14: Entrega Pelicula

15: hfiea Fecha de entrega

~,2: Muestla Membresla O

12: Emite PagoO

-í6: Elige O

-----¡-----~~~-_-----.:Q5: SolicitaO A

: Cliente

50

SAP

~ Diagrama de Clase.

0..* 1 0..*

m.~,t~...m.>ar. ~t.o111}••~""P.•oVj)(l .~I~DUO......odifícuO

1 *... o

ProveedoreS.~~I..:~te¡.,r..• 1RAls1l~~do :.I:l~~.lJ,IiBomJ:ie : 8tdag411l1TelefÓDO : Stdng4miD1recdoll : StdDg.iIlicelular : Stdllg.1IiIBmaD :8triag.mIFu:striIlg~lIliPersollaCoIl~o : 8tdllg

.Retomar J)atosO~eglfuevo(l~lmlllU()~odUlCídO

51

SlIP

~ Diagrama de Actividades

Verifica infl:lrinación·del.. cliente

Vertficarestadode pelicuJa

I F-:O=¡s"""p""'o.n---:Cib"le---"6~

Alquilar

Cobrar montode alquiler

.)~------

Este diagrama nos muestra la lógica que tiene lligar como respuesta a las

acciones generadas internamente. Por lo tanto mostramos el caso específico de

alquiler de película y los pasos que se deben realizar para llevar a cabo esta.,

operaClOn.

52

SllP

~ Diseño Físico y Despliegue:

Diagrama de Distribución

Los diagramas de distribución muestran como están configurados el

Hardware y el Software del sistema. El Video Club Rubenia necesita un sistema

Cliente I Servidor con una base de datos central de registros a la que pueda tener

acceso el personal (Administrador y operadores). Estos necesitan texwr acceso a los

datos sobre el cliente, los proveedores y películas.

DUD

Servidor

(;liente

53

SllP Universidad de Cienciqs C9mercdales

~ Dia~ama de Componentes

Estos muestran cómo distintos subsistemas de software conforman la estructlra general delsistema, que se crea en lila base de Datos centralizada que contine registros de pelícoo,registro ,d,e clientes yregistros de proveedor. Resulta esencial que estos datos se centralicenen lila base de datos, ya que simpre se debe de disponer de irnromación de última hora oentiempo real.

54

» CodificaciónInstanciasImports System.Data.SqIClient

Module Instancias

Public Cliente As New DatosClientes()Public Registro As New Clientes()Public ReloadCliente As New frmClientes()Public Peliculas As New DatosPelicula()Public Proveedor As New DatosProveedor()Public RegistroProveedor As New Proveedores()Public RegistroPelicula As New Pelicula()Public BuscaCodigo As New AlquilerCodigoEncontrado()Public Alquileres As New DatosAlquiler()Public Alquilar As New Alquiler()Public SubTotal As Double = OPublic CambiaEstado As IntegerPublic Devolucion As New DatosDevolucion()Public ViewDevolucion As New ViewPeliculaDevolver()Public DataGridBuscaCliente As New DatosBusquedaCliente()Public DataGridBuscaPelicula As New DatosBusquedaPelicula()Public DataGridAlquiler As New viewPeliculaAlquilar()Public Tipo As New DatosCategoria()Public DEmpresa As New DatosVideo()Public DEmpleado As New DatosEmpleado()Public RegistroEmpleado As New Empleado()Ppblic DTemp As New DatosTempAlquiler()Public val As Integer = OPublic val2 As Integer OPublic val3 As Integer OPUblic val4 As Integer OPubric valS As Integer OPublic val? As Integer O

End Module

Código de las Clases

Clase ConexionImports System.Data.SqIClient

Public Class ConexionPublic oConexion As New SqIConnection()

Public Sub Conectar()

Try

oConexion.ConnectionString = "Server=(local);" &"Database=VideoClub;Integrated Security=SSPI;"

'oConexion.ConnectionString = "data source=ALQAEDA;initialcatalog=VideoClub;integrated security=SSPI;persist security info=False;workstationid=RONALD;packet size=4ü96;"

'oConexion.Open()Catch oExcep As SqlException

• si se produce algún error,

ss

Universidad de Ciencias ComercialesSllP

.,....'y,.~ ...... ¡' • -~,. ,', -.

o'" .;

.':J'.. . .!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

, lo capturamos mediante el objeto, de excepciones particular para, el proveedor de SQL ServerMessageBox.Show("Error al Gonectar con datos" &ControlChars.CrLf &oExcep.Message & ControlChars.CrLf &oExcep. Server)

End Try

End SubEnd Class

Clase Datos Cliente

Imports System.Data.SqlClient

Public Class DatosClientes

'Declarar los objetos a instanciar'Public oDataRow As DataRowPublic oDataSet As New DataSet()Public oDataAdapter As New SqlDataAdapter()Public iPosicFilaActual As IntegerPublic enlace As New Conexione)

Public Sub Datos()

enlace. Conectar ()

, crear comandos para inserción, consulta con sus parámetros, y asignarlos al adaptadorDim oCrndInsertar As New SqlCornmand("INSERT INTO CLIENTES " &

"(Codigo,Nombre,Apellidos,Cedula,Telefono,Celular,Direccion,Email,Referencial,Referencia2,Foto)" &

"VALUES(@Codigo,@Nombre,@Apellidos,@Cedula,@Telefono,@Celular,@Direccion,@Email,@Referencial,@Referencia2,@Foto)", enlace.oConexion)

oDataAdapter.InsertCornmand = oCrndInsertar

oDataAdapter.InsertCornmand.Parameters.Add(New SqlParameter("@Codigo",SqlDbType. Int»

oDataAdapter.lnsertCornmand.Parameters.Add(New SqlParameter("@Nombre",SqlDbType.NChar»

oDataAdapter.lnsertCornmand.Parameters.Add(New SqlParameter("@Apellidos",SqlDbType.NChar) )

oDataAdapter.InsertCornmand.Parameters.Add(New SqlParameter("@Cedula",SqlDbType.Char) )

oDataAdapter.lnsertCornmand.Parameters.Add(New SqlParameter("@Telefono",SqlDbType.Char) )

oDataAdapter.lnsertCornmand.Parameters.Add(New SqlParameter("@Celular",SqlDbType.Char) )

oDataAdapter.InsertCornmand.Parameters.Add(New SqlParameter("@Direccion",SqlDbType.NChar»

oDataAdapter.lnsertCornmand.Parameters.Add(New SqlParameter("@Email",SqlDbType . Char) )

oDataAdapter.lnsertCornmand.Parameters.Add(New SqlParameter("@Referencial",SqlDbType.NChar»

56

SAl-

oDataAdapter.lnsertCommand.Parameters.Add(New SqlParameter("@Referencia2",SqlDbType.NChar»

oDataAdapter.lnsertCommand.Parameters.Add(New SqlParameter("@Foto",SqlDbType.Image»

Dim oCmdConsulta As New SqlCommand("SELECT * FROM Clientes",enlace.oConexion)

oDataAdapter.SelectCommand = oCmdConsulta

I crear conjunto de datosoDataSet = New DataSet()oDataSet.Clear()enlace.oConexion.Open()I utilizar el adaptador para llenar el dataset con una tablaoDataAdapter.Fill(oDataSet, "Clientes")enlace.oConexion.Close() • cerrar conexión

End SubEnd Class

Clase Clientes

Imports System.Data.SqlClientPublic Class Clientes

• variables de propiedadPrivate miCodigo As IntegerPrivate miNombre As StringPrivate miApellidos As StringPrivate miCedula As StringPrivate miTelefono As StringPrivate miDireccion As StringPrivate miCelular As StringPrivate miEmail As StringPrivate miReferencial As StringPrivate miReferencia2 As String

• procedimientos de propiedadPublic Property Identificador() As Integer

Get .Return miCodigo

End GetSet(ByVal Value As Integer)

miCodigo = ValueEnd Set

End PropertyPublic Property Nombre() As String

GetReturn miNombre

End GetSet(ByVal Value As String)

miNombre = ValueEnd Set

End PropertyPublic Property Apellidas() As String

GetReturn miApellidas

End Get

57

SlIP

Set(ByVal Value'As String)miApellidos ~ Value

End SetEnd Property

Public Property Cedula() As StringGet

Return miCedulaEnd GetSet(ByVal Value As String)

miCedula = ValueEnd Set

End PropertyPublic Property Telefono() As String

GetReturn miTelefono

End GetSet(ByVal Value As String)

miTelefono = ValueEnd Set

End PropertyPublic Property Direccion() As String

GetReturn miDireccion

End GetSet(ByVal Value As String)

miDireccion = ValueEnd Set

End PropertyPublic Property Celular() As String

GetReturn miCelular

End GetSet(ByVal Value As String)

miCelular ValueEnd Set

End PropertyPublic Property Email() As String

GetReturn miEmail

End GetSet(ByVal Value As String)

miEmail ~ ValueEnd Set

End PropertyPublic Property Referencial() As String

GetReturn miReferencial

End GetSet(ByVal Value As String)

miReferencial ~ ValueEnd Set

End PropertyPublic Property Referencia2() As String

GetReturn miReferencia2

End GetSet(ByVal Value As String)

miReferencia2 = ValueEnd Set

End Property

58

Public Sub regNuevo ()

I asignar valores a los parámetros para el comando de inserción'utiliza los parámetros del objeto cliente

Cliente.oDataAdapter.InsertCommand.Parameters("@Codigo").ValueIdentificador

Cliente.oDataAdapter.InsertCommand.Parameters("@Nombre").Value = NombreCliente.oDataAdapter.InsertCommarid.Parameters("@Apellidos").Value =

ApellidosCliente.oDataAdapter.InsertCommand.Parameters("@Cedula").Value = CedulaCliente.oDataAdapter.InsertCommand.Parameters("@Telefono").Value = TelefonoCliente.oDataAdapter.InsertCommand.parameters("@Celular").Valué'= CelularCliente.oDataAdapter.InsertCommand.parameters("@Direccion") .Value =

DireccionCliente.oDataAdapter.InsertCommand.Parameters("@Email") .Value = EmailCliente.oDataAdapter.InsertCommand.Parameters("@Il.eferencial").Value

ReferencialCliente.oDataAdapter.InsertCommand.Parameters("@Referencia2").Value

Referencia2

End Sub

Public Sub regEliminar()

Cliente.enlace.oConexion.Open()Dim oComando As New SqlCommand()oComando.Connection = Cliente.enlace.oConexionoComando.CommandType CommandType.StoredProcedureoComando.CommandText = "BorraCliente"

, añadir parámetro al comandooComando.Parameters.Add(New SqlParameter("@Codigo",SqlDbType.Int) )oComando.Parameters("@Codigo").Value = Identificador

Dim iResultado As IntegeriResultado = oComando.ExecuteNonQuery() , ejecutar comandoCliente.enlace.oConexion.Close() , cerrar conexiónMessageBox.Show("Registros Borrados:" & iResultado)

End Sub

End Class

Clase Datos Pelicula

Imports System.Data.SqlCiient

Public Class DatosPelicula'Declarar los objetos a instanciar

, objetos peliculaPublic oDataRowPelicula As DataRowPublic oDataSetPelicula As New DataSet()Public oDataAdapterPélicula As New SqlDataAdapter()

59

SAP

Public oDataViewPelicula AsNew DataView()Public iPosicFilaActualPelicula As Integer• objetos generoPublicoDataRowGenero As DataRowPublic oDataAdapterGenero As New SqlDataAdapter(), objetos Tipo de PeliculaPublic oDataRowTipo As DataRow

Public oDataAdapterTipo As New SqlDataAdapter(), objetos Estado de PeliculaPublic oDataRowEstado As DataRowPublic oDataAdapterEstado As New SqlDataAdapter()• objetos Proveedor de PeliculaPublic oDataRowProveedor As DataRowPublic oDataAdapterProveedor As New SqlDataAdapter(), funciona para todos los objetosPublic EnlacePelicula As New Conexion()

Public Sub DatosPelicula()

EnlacePelicula.Conectar()

, crear comandos para inserción, consulta con sus parámetros• y asignarlos al adaptadorDim oCmdInsertar As New SqlCommand("INSERT INTO PELICULAS" &

"(Cod Pelicula,Nombre Pelicula,Cod Genero,Tipo pelicula,Cod Proveedor,Cod Estado,Foto)" &- - - - - -

VALUES(@Cod Pelicula,@Nombre Pelicula,@Cod Genero,@Tipo pelicula,@Cod Proveedor,@CodEstado,@Foto)", EnlacePelicula.oConexion)- - -

- oDataAdapterPelicula.InsertCommand = oCmdInse~tar

oDataAdapterPelicula.InsertCommand.Parameters.Add(NewSqlParameter("@Cod Pelicula", SqlDbType.Int»

oDataAdapterPelicula.InsertCommand.Parameters.Add(NewSqlParameter("@Nombre Pelicula", SqlDbType.NChar»

oDataAdapterpelicula. InsertCommand. Parameters.Add(NewSqlParameter("@Cod Genero", SqlDbType.Int»

oDataAdapterPelicula. InsertCommand.Parameters.Add (NewSqlParameter("@Tipo pelicula", SqlDbType.Int»

oDataAdapte~pelicula.InsertCommand.parameters.Add(NewSqlParameter("@Cod Proveedor", SqlDbType.Int»

oDataAdapterPelicula. InsertCommand. Parameters.Add(NewSqlParameter("@Cod Estado", SqlDbType.Int»

oDataAdapterPelicula.InsertCommand.parameters.Add(New SqlParameter("@Foto",SqlDbType.Image»

Dim oCmdConsulta As New SqlCommand("SELECT * FROM Peliculas",EnlacePelicula.oConexion)

oDataAdapterPelicula.SelectCommand = oCmdConsulta

Dim oCmdConsultal As New SqlCommand("SELECT * FROM Genero",EnlacePelicula.oConexion)

oDataAdapterGenero.SelectCommand = oCmdConsultal

Dim oCmdConsulta2 As New SqlCommand("SELECT * FROM TipodePelicula",EnlacePelicula.oConexion)

oDataAdapterTipo.SelectCommand = oCmdConsulta2

Dim oCmdConsulta3 As New SqlCornmand("SELECT * FROM Estado",EnlacePelicula.oConexion)

60

SAP

oPat~dapterEstado.SelectCommand= oGmdConsulta3

Dim oGmdConsulta4 As New SqlCornmand("SELECT * FROM Proveedores",EnlacePelicula.oConexion)

oDat~dapterProveedor.selectCommand= oGmdConsulta4

, crear conjunto de datos para peliculaoDataSetPelicula = New DataSet()

oDataSetPelicula.Clear()EnlacePelicula.oConexion.Open(), utilizar el adaptador para llenar el dataset con una tablaoDat~dapterPelicula.Fill(oDataSetPelicula,"Peliculas")oDataAdapterGenero.Fill(oDataSetpelicula, "Genero")oDat~dapterTipo.Fill(oDataSetPelicula,"TipodePelicula")oDat~dapterEstado.Fill(oDataSetPelicula,"Estado")oDat~dapterProveedor.Fill(oDataSetPelicula,"Proveedores")

EnlacePelicula.oConexion.Close() , cerrar conexión

'relacionar las tablas Genero y Peliculas en el dataset por un campo encomun

oDataSetPelicula.Relations.Add("Genero_peliculas",oDataSetPelicula.Tables("Genero").Columns("Cod_Genero"),oDataSetPelicula.Tables("Peliculas").Columns("Cod_Generou»~

'relacionar las tablas Tipo de pelicula y Peliculas en el dataset por uncampo en comun

oDataSetPelicula.Relations.Add("Tipode Peliculas",oDataSetPelicula. Tables ("TipodepelicuÚi") •Columns ("Codigo TipoPelicula"),oDataSetPelicula.Tables("Peliculas").Columns("Tipo_pelicula"»

'relacionar las tablas Tipo de Estado y Peliculas en el dataset por un campoen comun

oDataSetPelicula.Relations.Add("Estado Peliculas",oDataSetPelicula.Tables("Estado").Coluñins("Cod Estado"),oDataSetpelicula.Tables("peliculas").Columns("Cod_Estado"»

'relacionar las tablas Tipo de Proveedores y Peliculas en el dataset por uncampo en comun

oDataSetPelicula.Relations.Add("Proveedores Peliculas",oDataSetPelicula.Tables("Proveedores").Coluñins("Codigo proveedor"),oDataSetpelicula.Tables("Peliculas").Columns("Cod_proveedor"»

'llenar los campos del formulariooDataRowPelicula =

oDataSetPelicula.Tables("Peliculas").Rows(iPosicFil~ctualPelicula)

oDataRowGenero = oDataRowPelicula.GetParentRow("Genero Peliculas")oDataRowTipo = oDataRowPelicula.GetParentRow("Tipode Peliculas")oDataRowEstado = oDataRowPelicula.GetParentRow("Estado Peliculas")oDataRowProveedor oDataRowpelicula.GetparentRow("Proveedores_Peliculas")

End SubEnd Class

Clase Pelicula

Imports System.Data.SqlClient

61

Public Class Pelicula, variables de propiedadPrivate miCodigo As IntegerPrivate miNombre As StringPrivate miProveedor As IntegerPrivate miTipo As IntegerPrivate miGenero As IntegerPrivate miEstado As Integer

, procedimientos de propiedad

Public Property Identificador() As IntegerGet

Return miCodigoEnd GetSet(ByVal Value As Integer)

miCodigo = ValueEnd Set

End PropertyPublic Property Nombre() As String

GetReturn miNombre

End GetSet(ByVal Value As String)

miNombre = ValueEnd Set

End PropertyPublic Property Proveedor() As Integer

GetReturn miProveedor

End GetSet(ByVal Value As Integer)

miProveedor = ValueEnd Set

End PropertyPublic Property Tipo() As Integer

GetReturn miTipo

End GetSet(ByVal Value As Integer)

miTipo = ValueEnd Set

End PropertyPublic Property Genero() As Integer

GetReturn miGenero

End GetSet(ByVal Value As Integer)

miGenero = ValueEnd Set

End PropertyPublic Property Estado() As Integer

GetReturn miEstado

End GetSet(ByVal Value As Integer)

miEstado = ValueEnd Set

End Property

Public Sub regNuevo()

62

•.

....... ".>.e, '~~.~"",.F .' ~

, .' , !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

, asignar valores a los parámetros para el comando de inserción'utiliza los parámetros del objeto Peliculas

Peliculas.oDataAdapterPelicula.lnsertCommand.Parameters(n@Cod_peliculan).ValueIdentificador

Peliculas.oDataAdapterPelicula.InsertCommand.Parameters(n@Nombre_peliculan).Value =Nombre

Peliculas.oDataAdapterPelicula.InsertCommand.Parameters(n@Cod_Genero") .Value= Genero

Peliculas.oDataAdapterPelicula.InsertCommand.Parameters( n@Tipo_pelicula").ValueTipo

Peliculas.oDataAdapterPelicula.InsertCommand.Parameters("@Cod_Proveedór").Value =Proveedor

Peliculas.oDataAdapterPelicula.InsertCommand.Parameters(n@Cod_Estadon).ValueEstado

End Sub

Public Sub regEliminar()

Peliculas.EnlacePelicula.oConexion.Open()Dim oComandoPelicula As New SqlCommand()oComandoPelicula.Connection = Peliculas.EnlacePelicula.oConexionoComandoPelicula.CommandType CommandType.StoredProcedureoComandoPelicula.CommandText = nBorraPeliculan

, añadir parámetro al comandooComandoPelicula.Parameters.Add(New sqlParameter(n@Cod_Pelicula",SqlDbType.Int) )oComandopelicula.Parameters("@Cod_Peliculan).Value = Identificador

Dim iResultado As IntegeriResultado = oComandoPelicula.ExecuteNonQuery() , ejecutar comandoPeliculas.EnlacePelicula.oConexion.Close() , cerrar conexiónMessageBox.Show("Registros Borrados: n & iResultado)

End Sub

End Class

Clase Datos Empleados

Imports System.Data.SqlClient

Public Class DatosEmpleado'Declarar los objetos a instanciarPublic oDataSetEmpleado As New DataSet()Public oDataAdapterEmpleado As New SqlDataAdapter()Public iPosicFilaEmpleado As IntegerPublic oDataRowEmpleado As DataRowPublic EnlaceEmpleado As New Conexione)

Public Sub DatosEmpleados()

EnlaceEmpleado.Conectar()

Dim oCmdInsertar As New SqlCommand(nINSERT INTO EMPLEADOS" &

63

• !!!!!!!S!!:AP!!-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U!!-!!ttIV!!-o-!!e!!f8!!I!!od!!a!!d!!cd!!e!!--Ci!!'!!oeD:!!!!!e!!l88!!!!!Co!!!!!m!!!!---!!e!!!l'fl!!i!!aI!!e8!!!!!!!!!!!

"(Codigo,Nombre,Apellidos,Direccion,Telefono,Password,Foto)" &" VALUES(@Codigo,@Nombre,@Apellidos,@Direccion,@Telefono,@Password,@Foto)",

EnlaceEmpleadOooConexion)

oDataAdapterEmpleado.lnsertCommand = oCrndlnsertaroDataAdapterEmpleado.lnsertCommand.Parameters.Add(New

SqlParameter("@Codigo", SqlDbType.lnt»oDataAdapterEmpleado. InsertCommand. Parameters.Add (New

SqlParameter("@Nombre", SqlDbType.NVarChar, 50»oDataAdapterEmpleado. InsertCommand. Parameters.Add(New

SqlParameter("@Apellidos", SqlDbType.NVarChar, 50»

oDataAdapterEmpleado.lnsertCommand.Parameters.Add(NewSqlParameter("@Direccion", SqlDbType.NVarChar, 50»

oDataAdapterEmpleado. InsertCommand. Parameters.Add(NewSqlParameter("@Telefono", SqlDbType.Char, 10»

oDataAdapterEmpleado. InsertCommand. Parameters.Add(NewSqlParameter("@Password", SqlDbType.Char, 15» -

oDataAdapterEmpleado.lnsertCommand.Parameters.Add(New SqlParameter("@Foto",SqlDbType. lmage) )

Dim oCrndConsulta As New SqlCommand("SELECT * FROM Empleados",EnlaceEmpleado.oConexion)

oDataAdapterEmpleado.SelectCommand = oCrndConsulta

, crear cornrnandbuilder, crear conjunto de datosoDataSetEmpleado = New DataSet()

EnlaceEmpleado.oConexion.Open()r utilizar el adaptador para llenar el dataset con una tablaoDataAdapterEmpleado.Fill(oDataSetEmpleado, "Empleados")EnlaceEmpleado.oConexion.Close() , cerrar conexión

Er::td SubEnd Class

Clase Empleado

Imports Systern.Data.SqlClient

Public Class Empleado

• variables de propiedadPrivate miCodigo As IntegerPrivate miNombre As StringPrivate miApellidos As StringPrivate miTelefono As StringPrivate miDireccion As StringPrivate miPass As String

, procedimientos de propiedadPublic Property Identificador() As Integer

GetReturn miCodigo

End GetSet(ByVal Value As Integer)

miCodigo = Value

64

SAl- Unh'ersidadde 6ieneias oomereiales

End SetEnd PropertyPublic Property Nombre() As String

GetReturn miNombre

End GetSet(ByVal Value As String)

miNombre = ValueEnd Set

End PropertyPublic Property Apellidos() As String

GetReturn miApellidos

End Get

Set(ByVal Value As String)miApellidos = Value

End SetEnd Property

Public Property Direccion() As StringGet

Return miDireccionEnd GetSet(ByVal Value As String)

miDireccion = ValueEnd Set

End Property

Public Property Telefono() As StringGet

Return miTelefonoEnd GetSet(ByVal Value As String)

miTelefono = ValueEnd Set

End Property

Public Property Password() As StringGet

Return miPassEnd GetSet(ByVal Value As String)

miPass = ValueEnd Set

End Property

Public Sub regNuevo()

• asignar valores a los parámetros para el comando de inserción'utiliza los parámetros del objeto clienteDEmpleado.oDataAdapterEmpleado.InsertCommand.Parameters("@Codigo").Value

IdentificadorDEmpleado.oDataAdapterEmpleado.lnsertCommand.Parameters("@Nombre").Value

NombreDEmpleado.oDataAdapterEmpleado.lnsertCommand.Parameters("@Apellidos").Value

Apellidos. DEmpleado.oDataAdapterEmpleado.lnsertCommand.Parameters("@Direccion").Value

DireccionDEmpleado.oDataAdapterEmpleado.lnsertCommand.Parameters("@Telefono").Value

Telefono

6S

•-'.'.:"" .. :,

". ~ . .~

.. . !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~.. .'.'

DEmpleado.oDataAdapterEmpleado~InsertCommand.Parameters("@Password").Value

PaSsword

End Sub

Public Sub regEliminar()

DEmpleado.EnlaceEmPleado.oConexion.Open()Dim oComando As New SqlCommand()oComando.Connection = DEmpleado.EnlaceEmpleado.oConexionoComando.CommandType CommandType.StoredProcedureoComando.CommandText = "BorraEmpleado"

• añadir parámetro al comandooComando.Parameters.Add(New SqlParameter("@Cod_Empleado",

SqlDbType.Int»oComando.Parameters("@Cod_Empleado").Value Identificador

Dim iResultado As IntegeriResultado = oComando.ExecuteNonQuery() , ejecutar comandoDEmpleado.EnlaceEmpleado.oConexion.Close() • cerrar conexiónMessageBox.Show("Registros Borrados:" & iResultado)

End Sub

End Class

Clase Datos Proveedor

Imports System.Data.SqlClient

Public Class DatosProveedor'Declarar los objetos a instanciar

, objetos peliculaPublic oDataRowProveedor As DataRowPublic oDataSetProveedor As New DataSet()Public oDataAdapterProveedor As New SqlDataAdapter()Public oDataViewProveedor As New DataView()Public iPosicFilaActualProveedor As IntegerPublic EnlaceProveedor As New Conexione)

Public Sub DatosProveedor()

EnlaceProveedor.Conectar()EnlaceProveedor.oConexion.Open()

'crear comandos para inserción, consulta con sus parámetros'y asignarlos al adaptadorDim oCmdlnsertar As New SqlCommand("INSERT INTO PROVEEDORES " &

" (Codigo_proveedor,Nombre,Telefono,Celular, Direccion,Email,Fax,PersonaContacto)" &"

VALUES(@Codigo_proveedor,@Nombre,@Telefono,@Celular,@Direccion,@Email,@Fax,@PersonaContacto)", EnlaceProveedor.oConexion)

oDataAdapterProveedor.InsertCommand = oCmdlnsertar

66

SAP Universidacrde-Ciencias C«tmerciales

oDataAdapterProveedor. InsertCommand. Parameters.Add (NewSqIParameter("@Codigo_proveedor", SqIDbType.lnt»

oDataAdapterProveedor. InsertCommand. Parameters.Add(NewSqIParameter("@Nombre", SqIDbType.NChar»

oDataAdapterProveedor.lnsertCommand.Parameters.Add(NewSqIParameter("@TeIefono", SqIDbType.Char»

oDataAdapterProveedor. InsertCommand. Parameters.Add (NewSqIParameter("@CeIuIar", SqIDbType.Char»

oDataAdapterProveedor. InsertCommand. Parameters.Add (NewSqIParameter("@Direccion", SqIDbType.NChar»

oDataAdapterProveedor. InsertCommand. Parameters.Add (NewSqIParameter("@Email", SqIDbType.Char»

oDataAdapterProveedor.lnsertCommand.Parameters.Add(New SqIParameter("@Fax",SqIDbType.Char) )

oDataAdapterProveedor. InsertCommand. Parameters.Add(NewSqIParameter("@PersonaContacto", SqIDbType.NChar»

Dim oCrndConsulta As New SqICommand("SELECT * FROM Proveedores",EnIaceProveedor.oConexion)

oDataAdapterProveedor.SelectCommand = oCrndConsulta

, crear conjunto de datos para ProveedoroDataSetProveedor = New DataSet()oDataSetProveedor.Clear()

, utilizar el adaptador para llenar el dataset con una tablaoDataAdapterProveedor.Fill(oDataSetProveedor, "Proveedores")EnIaceProveedor.oConexion.Close() , cerrar conexión'oDataAdapter = NothingoDataRowProveedor =

oDataSetProveedor.Tables("Proveedores").Rows(iPosicFilaActualProveedor)

End Sub

End CIass

Calse Proveedores

Imports System.Data.SqICIientPublic Class Proveedores

, variables de propiedadPrivate miCodigo As IntegerPrivate miNombre As StringPrivate miTeIefono As StringPrivate miDireccion As StringPrivate miCelular As StringPrivate miEmail As StringPrivate miFax As StringPrivate miPersonaContacto As String

, procedimientos de propiedadPublic Property Identificador() As Integer

GetReturn miCodigo

End GetSet(ByVal Value As Integer)

miCodigo = Value

67

End SetEnd PropertyPublic Property Nombre(} As String

GetReturn miNombre

End GetSet(ByVal Value As String}

miNombre ='ValueEnd Set

End Property

Public Property Telefono(} As StringGet

Return miTelefonoEnd GetSet(ByVal Value As String}

miTelefono = ValueEnd Set

End PropertyPublic Property Direccion(} As String

Get

Return miDireccionEnd GetSet(ByVal Value As String}

miDireccion = ValueEnd Set

End PropertyPublic Property Celular(} As String

GetReturn miCelular

End GetSet(ByVal Value As String}

miCelular ValueEnd Set

End PropertyPublic Property Email() As String

GetReturn miEmail

End GetSet(ByVal Value As String)

miEmail = ValueEnd Set

End PropertyPublic Property Fax() As String

GetReturn miFax

End GetSet(ByVal Value As String}

miFax = ValueEnd Set

End PropertyPublic Property PersonaContacto(} As String

GetReturn miPersonaContacto

End GetSet(ByVal Value As String)

miPersonaContacto = ValueEnd Set

End Property

68

SAP Universidad de Ciencias Comereiales

Public Sub regNuevo ( )

Dim iResultado As Integer'enlace.Conectar(), asignar valores a los parámetros para el comando de inserción'utiliza los parámetros del objeto cliente

Proveedor.oDataAdapterProveedor.InsertCornmand.Parameters( "@Codigo_proveedor").Value= Identificador

Proveedor.oDataAdapterProveedor. InsertCornmand. Parameters ("@Nombre").Value =

NombreProveedor.oDataAdapterProveedor.InsertCornmand.Parameters("@Telefono").Value

= TelefonoProveedor. oDataAdapterProveedor.InsertCornmand.Parameters("@Ce¡~lar").Value=

CelularProveedor.oDataAdapterProveedor.InsertCornmand.Parameters( "@Direccion").Value

= DireccionProveedor.oDataAdapterProveedor.InsertCornmand.Pa~ameters("@Email").Value

EmailProveedor.oDataAdapterProveedor.InsertCornmand.Parameters("@Fax") .Value = Fax

Proveedor.oDataAdapterProveedor.InsertCornmand.Parameters( "@PersonaContacto").ValuePersonaContacto

, abrir conexiónProveedor.EnlaceProveedor.oConexion.Open()

, ejecutar comando de inserción del adaptadoriResultado = Proveedor.oDataAdapterProveedor.InsertCornmand.ExecuteNonQuery()

, cerrar conexiónProveedor.EnlaceProveedor.oConexion.Close()Proveedor.DatosProveedor()MessageBox.Show("Registros Afiadidos: " & iResultado)

End Sub

Public Sub regEliminar()

Dim aCamando As New SqlCornmand()oComando.Connection = Proveedor.EnlaceProveedor.oConexionoComando.CornmandType CornmandType.StoredProcedureoComando.CornmandText = "BorraProveedor"

, añadir parámetro al comandooComando.Parameters.Add(New SqlParameter("@Codigo proveedor",SqlDbType.Int» -oComando.Parameters("@Codigo_proveedor").Value = Identificador

Dim iResultado As IntegerProveedor. EnlaceProveedor. oConexion.Open ()iResultado = oComando.ExecuteNonQuery() • ejecutar comandoProveedor.EnlaceProveedor.oConexion.Close() , cerrar conexiónMessageBox.Show("Registros Borrados:" & iResultado)

End SubEnd Class

69

Universidad de Ciendas Comerciales

Clase Datos de Alquiler

Imports System.Data.SqlClient

Public Class DatosAlquiler'Declarar los objetos a instanciarPublic oDataRowAlquiler As DataRowPublic oDataSetAlquiler As New DataSet(}Public oDataAdapterAlquiler As New SqlDataAdapter(}Public oDataViewAlquiler As New DataView(}Public iPosicFilaActualAlquiler As IntegerPublic EnlaceAlquiler As New Conexione}

Public Sub DatosAlquileres(}

EnlaceAlquiler. Conectar ()

Dim oCrndConsulta As New SqlCoromand("SELECT * FROM TempAlquiler",EnlaceAlquiler.oConexion}

oDataAdapterAlquiler.SelectCornmand = oCrndConsulta

, crear cornmandbuilderDim oComm8uild As SqlCornmandBuilder New

SqlCoromandBuilder(oDataAdapterAlquiler), crear conjunto de datosoDataSetAlquiler = New DataSet()

EnlaceAlquiler.oConexion.Open(), utilizar el adaptador para llenar el dataset con una tablaoDataAdapterAlquiler.Fill(oDataSetAlquiler, "TempAlquiler")EnlaceAlquiler.oConexion.Close() , cerrar conexión

End Sub

End Class

Clase Alquiler

Imports System.Data.SqlClientPublic Class Alquiler

, variables de propiedadPrivate miCodigoPelicula As IntegerPrivate miCodigoCliente As IntegerPrivate miPrecio As IntegerPrivate miFechaAlquiler As DatePrivate miFechaDevolucion As Date

Public Property Pelicula() As IntegerGet

Return miCodigoPeliculaEnd GetSet(ByVal Value As Integer)

Pelicula = ValueEnd Set

End Property

70

Public Property FechaAlquiler() As DateGet

Return miFechaAlquilerEnd GetSet(ByVal Value As Date)

miFechaAlquiler = ValUeEnd Set

End Property

Public Property FechaDevolucion() As DateGet

Return miFechaDevolucionEnd GetSet(ByVal Value As Date)

miFechaDevolucion = ValueEnd Set

End Property

Public Property Precio() As IntegerGet

Return miPrecioEnd GetSet(ByVal Value As Integer)

miPrecio = ValueEnd Set

End Property

Public Property CodigoCliente() As IntegerGet

Return miCodigoClienteEnd GetSet(ByVal Value As Integer)

CodigoCliente = ValueEnd Set

EIld Property

Public Sub regNuevo()

Dim iResultado As Integer

, asignar valores a los parámetros para el comando de inserción'utiliza los parámetros del objeto Alquiler

Alquileres.oDataAdapterAlquiler.lnsertCommand.Parameters("@CodPelicula").ValueCliente

Alquileres.oDataAdapterAlquiler.lnsertCommand.Parameters("@CodCliente").ValuePelicula

Alquileres.oDataAdapterAlquiler.lnsertCommand.Parameters("@FechaAlquiler").ValueFechaAlquiler

Alquileres.oDataAdapterAlquiler.InsertCornmand.Parameters("@FechaDevolucion").ValueFechaDevolucion

Alquileres.oDataAdapterAlquiler.lnsertCornmand.Parameters("@PrecioAlquiler").ValuePrecio

, Abrir conexiónAlquileres.EnlaceAlquiler.oConexion.Open()

71

UniversifiaddeCiencias ~Dlerciales

, ejecutar comando de inserción del adaptadoriResultado = Alqtiileres.oDataAdapterAlquiler.lnsertCommand.ExecuteNonQuery(), Cerrar conexiónAlquileres.EnlaceAlquiler.oConexion.Close()

MessageBox.Show("Alquileres Realizados: n & iResultado)

End Sub

Public Sub regEliminar()

Alquileres.EnlaceAlquiler.Conectar()Alquileres.EnlaceAlquiler.oConexion.Open()Dim oComandoAlquiler As New SqlCommand()oComandoAlquiler.Connection = Alquileres.EnlaceAlquiler.oConex~on

oComandoAlquiler.CommandType CommandType.StoredProcedure .oComandoAlquiler.CommandText = "BorraAlquiler"

Dim iResultado As IntegeriResultado = oComandoAlquiler.ExecuteNonQuery() , ejecutar comandoAlquileres.EnlaceAlquiler.oConexion.Close() , cerrar conexión

End Sub

Public Sub regClone()Alquileres.EnlaceAlquiler.Conectar()

Alquileres.EnlaceAlquiler.oConexion.Open()Dim oComandoAlquiler As New SqlCommand()

oComandoAlquiler.Connection = Alquileres.EnlaceAlquiler.oConexionoComandoAlquiler.CommandType CommandType.StoredProcedureoComandoAlquiler.CommandText = "CopyAlquiler"

Dim iResultado As IntegeriResultado = oComandoAlquiler.ExecuteNonQuery() , ejecutar comandoAlquileres.EnlaceAlquiler.oConexion.Close() . cerrar conexión

End Sub

Public Sub regClone2()Dim conn As New Conexione)Alquileres.EnlaceAlquiler.Conectar()Alquileres.EnlaceAlquiler.oConexion.Open()Dim oComandoHistoricoAlquiler As New SqlCommand()oComandoHistoricoAlquiler.Connection = Alquileres.EnlaceAlquiler.oConexionoComandoHistoricoAlquiler.CommandType CommandType.StoredProcedureoComandoHistoricoAlquiler.CommandText = "CopyHistoricoAlquiler"

Dim iResultado As IntegeriResultado = oComandoHistoricoAlquiler.ExecuteNonQuery() , ejecutar comandoAlquileres.EnlaceAlquiler.oConexion.Close() , cerrar conexión

End Sub

End Class

72

SllP Universidad de Ciencias Comerciales

Clase Alquiler Codigo EncontradoPublic Class AlquilerCodigoEncontrado

Private oDataViewCliente As New DataView()Public oDataViewPelicula As New DataView()Public CodigoEncontrado As IntegerPublic CodigoEncontradoPelicula As Integer

Public Sub MostrarClientePorCodigo(ByVal Codigo As Integer)Cliente.Datos(), crear un dataview y buscar una fila en la vista, estableciendo un filtro, una vez desconectados, recorrer la tabla del datasetoDataViewCliente.Table = Cliente.oDataSet.Tables("Clientes n )oDataViewCliente.RowFilter = "Codigo = '" & Codigo & "'"CodigoEncontrado = Codigo

End Sub

Public Sub MostrarPeliculaPorCodigo(ByVal CodigoPelicula As Integer)Peliculas.DatosPelicula(), crear un dataview y buscar una fila en la vistaI estableciendo un filtro, una vez desconectados, recorrer la tabla del datasetoDataViewPelicula.Table = Peliculas.oDataSetPelicula.Tables(npeliculas")oDataViewPelicula.RowFilter = "Cod_Pelicula = ,n & CodigoPelicula & "'"CodigoEncontradoPelicula = CodigoPelicula

End Sub

End Class

Clase View Pelicula Alquilar

Imports System.Data.SqIClient

Public Class ViewPeliculaAlquilar

Public oDataSetPeliculaAlquilarVista As New DataSet()Public oDataAdapterPeliculaAlquilarVista As New SqIDataAdapter()Public enlace As New Conexion()Public iPosicFilaActualEncontrado As Integer

Public Sub DatosBusqueda()

enlace.Conectar()

Dim oCmdConsulta2 As New SqlCommand("SELECT TempAlquiler.CodClienteClientes. Nombre, Clientes ,Apellidos, Peliculas.Nombre_Pelicula, ,TempAlquiler.FechaAlquiler, " & _

"TempAlquiler.FechaDevolucion, TempAlquiler.PrecioAlquiler n &"FROM TempAlquiler INNER JOIN Clientes ON TempAlquiler.CodCliente

Clientes.Codigo INNER JOIN " & ."Peliculas ON TempAlquiler.CodPelicula = Peliculas.Cod_Pelicula",

enlace.oConexion)oDataAdapterPeliculaAlquilarVista.SelectCommand = oCmdConsulta2

, crear conjunto de datosoDataSetPeliculaAlquilarVista = New DataSet()oDataSetPeliculaAlquilarVista.Clear()

73

lJnivetsldad d~6encias Comereiales

enlace.oConexion.Open()• utilizar el adaptador para llenar el dataset con una tablaoDataAdapterPeliculaAlquilarVista.Fill(oDataSetPeliculaAlquilarVista,

"TempAlquiler" )enlace.oConexion.Close() • cerrar conexión

End SubEnd Class

Datos Temporal Alquiler

Imports System.Data.SqlClient

Public Class DatosTempAlquiler'Declarar los objetos a instanciarPublic oDataSetTemp As New DataSet()Public oDataAdapterTemp As New SqlDataAdapter()Public iPosicFilaTemp As IntegerPublic oDataRowTemp As DataRowPublic EnlaceTemp As New Conexion()

Public Sub DatosTemp()

EnlaceTemp.Conectar()Dim oCmdConsulta As New SqlCommand("SELECT * FROM TempAlquiler",

EnlaceTemp.oConexion)oDataAdapterTemp.SelectCommand oCmdConsulta

• crear commandbuilder, crear conjunto de datos

oDataSetTemp = New DataSet()

EnlaceTemp.oConexion.Open(), utilizar el adaptador para llenar el dataset con una tablaoDataAdapterTemp.Fill(oDataSetTemp, "TempAlquiler")

EnlaceTemp.oConexion.Close() • cerrar conexiónoDataRowTemp = oDataSetTemp.Tables("TempAlquiler").Rows(iPosicFilaTemp)

End SubEnd Class

Datos Busca Cliente

Imports System.Data.SqlClient

Public Class DatosBusquedaCliente

Public oDataSetBusquedaCliehte As New DataSet()Public oDataAdapterBusquedaCliente As New SqlDataAdapter()Public enlace As New Conexion()Public iPosicFilaActualEncontrado As Integer

Public Sub DatosBusqueda()

enlace.Conectar()

74

Dim oQmdConsulta As New SqlCommand("SELECTCodigo,Nomp~e,~pelliqos,Ced~la,Telefono,DireccionFROM Clientes", enlace.oConexion)

oDataAdapterBusquedaCliente.SelectCommand = oQmdConsulta

• crear conjunto de datosoDataSetBusquedaCliente = New DataSet()oDataSetBusquedaCliente.Clear()enlace.oConéxion.Open(), utilizar el adaptador para llenar el dataset con una tablaoDataAdapterBusquedaCliente.Fill(oDataSetBusquedaCliente, "Clientes")enlace.oConexion.Close() • cerrar conexión

End Sub

End Class

Datos Busca Pelicula

Imports System.Data.SqlClient

Public Class DatosBusquedaPelicula

Public oDataSetBusquedaPelicula As New DataSet()Public oDataAdapterBusquedaPelicula As New SqlDataAdapter()Public enlace As New Conexion()Public iPosicFilaActualEncontrado As Integer

Public Sub DatosBusqueda()

enlace.Conectar()

Dim oQmdConsulta As New SqlCornmand("SELECT Peliculas.Cod Pelicula,Peliculas.Nombre Pelicula, Genero. Genero, Estado. Estado, Tipodepelicula.Tipo,Proveedores.Nombre " &

"FROM Peliculas INNER JOIN Genero ON Peliculas.Cod GeneroGenero.Cod Genero INNER JOIN " &

" TipodePelicula ON Peliculas.Tipo pelicula =TipodePelicula.Codigo TipoPelicula INNER JOIN " &

"Estado ON Peliculas.Cod Estado = Estado.Cad Estado INNER JOIN " &"Proveedores ON Peliculas.Cod Proveedor = praveedores.Codigo proveedor",

enlace.oConexion) - -

oDataAdapterBusquedaPelicula.SelectCommand oQmdConsulta

, crear conjunto de datosoDataSetBusquedaPelicula = New DataSet()oDataSetBusquedaPelicula.Clear()enlace.oConexion.Open(), utilizar el adaptador para llenar el dataset con una tablaoDataAdapterBusquedaPelicula.Fill(oDataSetBusquedaPelicula, "Peliculas")enlace.oConexion.Close() • cerrar conexión

End Sub

End Class

75

Clase Dato~Categoria

Imports Systern.Data.SqlClient

Public Class DatosCategoria'Declarar los objetos a instanciarPublic oDataSetTipo As New DataSet()Public oDataAdapterTipo As New SqlDataAdapter()Public iPosicFilaTipo As IntegerPublic oDataRowTipo As DataRowPublic EnlaceTipo As New Conexione)

Public Sub DatosTipo()

EnlaceTipo.Conectar()

Dim oCrndConsulta As New SqlComrnand("SELECT * FROM TipodePelicula",EnlaceTipo.oConexion)

oDataAdapterTipo.SelectCornrnand = oCrndConsulta

, crear cornmandbuilder, crear conjunto de datosoDataSetTipo = New DataSet()

EnlaceTipo.oConexion.Open()• utilizar el adaptador para llenar el dataset con una tablaoDataAdapterTipo.Fill(oDataSetTipo, "TipodePelicula")

EnlaceTipo.oConexion.Close() , cerrar conexiónEnd Sub

End Class

Clase Users

Option Strict On

Imports Systern.Security.PrincipalImports Systern.ThreadingImports Systern.IOImports Systern.Data.SqlClient

Public Class Users'Declarar los objetos a instanciarPublic oDataSetPass As New DataSet()Public oDataAdapterPass As New SqlDataAdapter()Public iPosicFilaPass As IntegerPublic oDataRowPass() As DataRowPublic Enlacepass As New Conexione)

Private Sub DatosLogin()EnlacePass. Conectar ()

Dim oCrndConsulta As New SqlComrnand("SELECT * FROM Empleados",EnlacePass.oConexion)

76

SllP UnivcrSida:daé Ciencias Comerciales

oDataAdapterPass.SelectCornmand

oDataSetPass = New DataSet()

ocmdConsulta

EnlacePass.oConexion.Open(), utilizar el adaptador para llenar el dataset con una tablaoDataAdapterPass.Fill(oDataSetPass, "Empleados")

EnlacePass.oConexion.Close() , cerrar conexiónEnd Sub

Function IsLogin(ByVal strName As String, ByVal strPassword As String) AsBoolean

& "''')

DatosLogin ()Try

oDataRowPass oDataSetPass.Tables(O).Select("NombrestrName & tI, and password

,tI &,tI & strPassword

If oDataRowPass.Length > O ThenReturn True

ElseReturn False

End IfCatch e As FileNotFoundException

EndEnd Try

End Function

Function GetLogin(ByVal strName As String, ByVal ~trPassword As String) AsGenericPrincipal

DatosLogin()Try

oDataRowPass oDataSetPass.Tables(O).Select("Nombre = '" &strName & ", and password = '" & strPassword & "''')

Catch e As FileNotFoundExceptionEnd

End Try

Dim Genldentity As New Genericldentity(strName)

Dim Roles () As String = {CStr (oDataRowPass (O) . Item("Nombre"», "")Dim GenPrincipal As New GenericPrincipal(Genldentity, Roles)

Return GenPrincipalEnd Function

End Class

Clase Devolucion

Imports System.Data.SqlClient

Public Class DatosDevolucion

77

SAP

'Declarar los objetos a instanciarPublic oDataSetDevolucion As New DataSet()Public oDataAdapterDevolucion As New SqlDataAdapter()Public iPosicFilaActualAlquiler As IntegerPublic oDataRowDevolucion As DataRowPublic EnlaceDevolucion As New Conexione)

Public Sub DatosDevolucion()

EnlaceDevolucion.Conectar()

Dim oCmdConsulta As New SqlCornrnand("SELECT * FROM Alquiler",EnlaceDevolucion.oConexion)

oDataAdapterDevolucion.SelectCornrnand = oCmdConsulta

, crear cornrnandbuilderDim oCommBuild As SqlCornrnandBuilder New

SqlCornrnandBuilder(oDataAdapterDevolucion)

, crear conjunto de datosoDataSetDevolucion = New DataSet()

EnlaceDevolucion.oConexion.Open(), utilizar el adaptador para llenar el dataset con una tablaoDataAdapterDevolucion.Fill(oDataSetDevolucion, "Alquiler")EnlaceDevolucion.oConexion.Close() , cerrar conexiónoDataRowDevolucion =

oDataSetDevolucion.Tables("Alquiler").Rows(iPosicFilaActualAlquiler)End Sub "

End Class

Calse View Pelicula Devolver

Imports System.Data.SqlClient

Public Class ViewPeliculaDevolver

Public oDataSetPeliculaDevolver As New DataSet()Public oDataAdapterPeliculaDevolver As New SqlDataAdapter()Public EnlaceDevolver As New Conexione)

Public oDataRowDevolver As DataRowPublic iPosicFilaActualEncontrado As Integer

Public Sub DatosBusqueda()

EnlaceDevolver.Conectar()

Dim oCmdConsulta As New SqlCornrnand("SELECT CodCliente, Nombre, Apellidos,Nombre Pelicula, FechaAlquiler, FechaDevolucion, PrecioAlquiler " &

- "FROM Alquiler INNER JOIN Clientes ON Alquiler.CodCliente = Clientes.CodigoINNER JOIN " &

"peliculas ON Alquiler.CodPelicula = peliculas.Cod_Pelicula",EnlaceDevolver.oConexion)

oDataAdapterPeliculaDevolver.SelectCornrnand = oCmdConsulta

'Dim oCmdConsulta As New SqlCornrnand("SELECT Alquiler.CodCliente,Clientes.Nombre, Clientes.Apellidos, Peliculas.Nombre_Pelicula,Alquiler. FechaAlquiler, Alquiler. FechaDevolucion, Alquiler.PrecioAlquiler " &

, crear conjunto de datos

78

oDataSetPeliculaDevolver = New DataSet()oDataSetPeliculaDevolver.Clear()EnlaceDevolver.oConexion.Open(), utilizar el adaptador para llenar el dataset con una tablaoDataAdapterPeliculaDevolver.Fill(oDataSetPeliculaDevolver, "Alquiler")EnlaceDevolver.oConexion.Close() , cerrar conexión

End SubEnd Class

Codigo de Los Formularios

Formulario Clientes

Imports System.DataImports System.Data.SqlClientImports System.IO

Public Class frmClientesInherits System.Windows.Forms.FormPublic KeyAscii As ShortDim oDataRow As DataRowDim oDataRowClick As DataRow

Private Sub Clientes_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

Ver Cajas ()RegIstro. Identificador = Me.txtCodigo.TextInhabilitarCajas()InhabilitarBotones()

End Sub

Private Sub Ver_Cajas()

If val = O ThenLlenar_Cajas ()

ElseLlenar_CajasReLoad()

End IfEnd Sub

Private Sub Llenar_Cajas()

Cliente.Datos()oDataRow =

Cliente.oDataSet.Tables("Clientes") . Rows (Cliente.iPosicFilaActual)'cargar los controles del formulario con, los valores de los campos del registroMe.txtCodigo.Text = oDataRow("Codigo")Me.txtNombre.Text = oDataRow("Nombren )

Me.txtApellidos.Text = oDataRow("Apellidos")Me.txtCedula.Text = oDataRow("Cedula")Me.txtDireccion.Text = oDataRow("Dirección")Me.txtTelefono.Text = oDataRow("Telefono")

79

SlIP

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual) ("Email"») Then

Me.txtEmail.TextElse

Me.txtEmail.TextEnd If

oDataRow ("Email")

Nothing

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual) ("Celular"») Then

Me.txtCelular.TextElse

Me~txtCelular.Text

End If

oDataRow("Celular")

Nothing

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual) ("Referencial"») Then

Me.txtReferencial.Text oDataRow("Referencial")Else

Me.txtReferencial.Text NothingEnd If

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual) ("Referencia2"») Then

Me.txtReferencia2.Text oDataRow("Referencia2")Else

Me.txtReferencia2.Text NothingEnd If

If Not(ISDBNq;Ll(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual) ("Foto")» Then

Dim arrPicture () As Byte = CType (oDataRow ("Foto"), Byte () )Dim FotoCarga As New MemoryStream(arrPicture)

With foto

.Image = Image.FromStream(FotoCarga)

.SizeMode = PictureBoxSizeMode.StretchImageEnd With

FotoCarga.Close()

ElseWith Me.foto

.Image = Nothing

.SizeMode = PictureBoxSizeMode.StretchImageEnd With

End If

If(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual) ("Foto")» Then

Dim path As String = " •• \Imagen\logo.bmp"

With foto• Image Image.FromFile(path)

80

SlIP UniversidaddeCi~eiaswlllereiales

.SizeModeEnd With

End IfEnd Sub

PictureBoxSizeMode.StretchImage

Private Sub BuscarCodigo()BusCaCodigo.MostrarClientePorCodigo(val)

End Sub

Public Sub Llenar_CajasReLoad()

BuscarCodigo ( )If val> Cliente.oDataSet.Tables("Clientes").Rows.Count Then

MsgBox("El Codigo del Cliente que Ingreso no Existe")ElseIf val = BuscaCodigo.CodigoEncontrado Then

oDataRowClick =Cliente.oDataSet.Tables("Clientes").Rows(Buscacodigo.CodigoEncontrado - 1)

'cargar los controles del formulario con' ., los valores de los campos del registroMe.txtCodigo.Text = oDataRowClick("Codigo")Me.txtNombre.Text = oDataRowClick("Nombre")Me.txtApellidos.Text = oDataRowClick("Apellidos")Me.txtCedula.Text = oDataRowClick("Cedula")Me.txtDireccion.Text = oDataRowClick("Direccion")Me.txtTelefono.Text = oDataRowClick("Telefono")

If Not(IsDBNull (Cliente.oDataSet.Tables ("Clientes") •Rows (BuscaCodigo.CodigoEncontrado _1) ("Email"») Then

Me.txtEmail.Text oDataRowClick("Email")Else

Me.txtEmail.Text NothingEnd If

_ If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(BuscaCodigo.CodigoEncontrado _1) ("Celular"») Then

Me. txtCelular. Text oDataRowClick("Celular")Else

Me.txtCelular.Text NothingEnd If

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(BuscaCodigo.CodigoEncontrado _1) ("Referencial") » Then

Me.txtReferencia1.Text oDataRowClick("Referencia1")Else

Me.txtReferencia1.Text NothingEnd If

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(BuscaCodigo.CodigoEncontrado_1) ("Referencia2"») Then

Me.txtReferencia2.Text oDataRowClick("Referencia2")Else

Me.txtReferencia2.Text NothingEnd If

If Not(ISDBNu11 (Cliente.oDataSet.Tables ("Clientes") •Rows (BuscaCodigo.CodigoEncontrado _1) ("Foto"») Then

81

Univeftlidá.rde'Ciencias o.merciales

Dim arrPicture() As Byte = CType(oDataRowClick("Foto"), Byte(»Dim FotoCarga As New MemoryStream(arrPicture)

Witb foto.Image = Image.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.StretcbImage

End With

FotoCarga.Close()

ElseWith Me.foto

.Image = Nothing

.SizeMode = PictureBoxSizeMode.StretcblmageEnd With

End If

If(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(BuscaCodigo.CodigoEncontrado ­1) ("Foto") » Then

Dim path As String = " •• \Imagen\logo.bmp"

With foto.Image = Image.FromFile(path).SizeMode = PictureBoxSizeMode.Stretchlmage

End WithEnd Ifval = O

End IfEnd Sub

Public Sub Llenar_CajasAgain()

Dim j As IntegerCliente.iPosicFilaActual Cliente. oDataSet. Tables ("Clientes") .Rows.Count

oDataRowClick =Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual - 1)

'cargar los controles del formulario con, los valores de los campos del registroMe.txtCodigo.Text = oDataRowClick("Codigo")Me.txtNombre.Text = oDataRowClick("Nombre")Me.txtApellidos.Text = oDataRowClick("Apellidos")

Me.txtCedula.Text = oDataRowClick("Cedu1a")Me.txtDireccion.Text = oDataRowClick("Direccion")Me.txtTelefono.Text = oDataRowClick("Telefono")

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual ­1) ("Email"») Then

Me.txtEmail.Text oDataRowClick("Email")Else

Me.txtEmail.Text NothingEnd If

If Not(IsDBNull (Cliente.oDataSet.Tables ("Clientes") . Rows (Cliente.iPosicFilaActual ­1) ("Celular"») Then

Me.txtCelular.Text oDataRowClick("Celular")Else

Me.txtCelular.Text Nothing

82

S/lP

End If

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual ­1) ("Referencial"») Then

Me.txtReferencia1.Text oDataRowClick("Referencia1")Else

Me.txtReferencia1.Text NothingEnd If

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(Cliente.iPosicFilaActual ­1) ("Referencia2"») Then

Me.txtReferencia2.Text ·oDataRowClick("Referencia2")Else

Me.txtReferencia2.Text NothingEnd If

If Not(IsDBNull (Cliente. oDataSet. Tables ("Clientes") •Rows (Cliente.iPosicFilaActual ­1) ("Foto"») Then

Dim arrPicture() As Byte = CType(oDataRowClick("Foto"), Byte(»Dim FotoCarga As New MemoryStream(arrPicture)

With foto.Image = Image.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.Stretchlmage

End With

FotoCarga.Close()

ElseWith Me.foto

.Image = Nothing

.SizeMode = PictureBoxSizeMode.StretchImageEnd With

End If

If(IsDBNull (Cliente.oDataSet.Tables ("Clientes") . Rows (Cliente.iPosicFilaActual ­1) ("Foto"») Then

Dim path As String = " •• \Imagen\logo.bmp"

With foto.Image = Image.FromFile(path).SizeMode = PictureBoxSizeMode.StretchImage

End WithEnd If

End Sub

Private Sub SelectImagen()

With AbrirImagen.InitialDirectory = "C:\".Filter = "Bitmapsl*.bmpIJPEGsl*.jpg".FilterIndex = 1

End With

If AbrirImagen.ShowDialog() DialogResult.OK Then

83

SAP

With foto

.Image = Image.FrornFile(Abrirlmagen.FileName)

.SizeMode = PictureBoxSizeMode.StretchlmageEnd With

End 1f

End Sub

Private Sub tbClientes ButtonClick(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.ToolBarButtonClickEventArgs) Handles tbClientes.ButtonClick

1f e.Button Is Me.tbPrimero Then, llamamos al método que abre elI formulario para abrir un archivoregPrimero ()

End 1f

1f e.Button 1s Me.tbAnterior ThenI llamamos al método que abre el, formulario para abrir un archivoregAnterior ( )

End 1f

1f e.Button 1s Me.tbSiguiente Then, llamamos al método que abre el, formulario para abrir un archivoregSiguiente ()

End 1f

1f e.Button 1s Me.tbUltimo ThenI llamamos al método que abre el, formulario para abrir un archivoregUltimo ( )

End 1f

1f e.Button 1s Me.tbAgregar Then, llamamos al método que abre el, formulario para abrir un archivoregNuevo()InhabilitarBotonesl()HabilitarBotones()HabiltarCaj as ()

End 1f

1f e.Button 1s Me.tbModificar ThenI llamamos al método que abre el, formulario para abrir un archivoregModificar ( )Llenar Cajas ()InhabilitarBotonesl()HabilitarBotones()HabiltarCajas()

End 1f

1f e.Button 1s Me.tbGuardar Then, llamamos al método que abre el, formulario para abrir un archivoregGuardar ()InhabilitarBotones()HabilitarBotonesl()

84

SAP Universidad·de€iencias COméreiales

InhabilitarCajas()End 1f

1f e.Button 15 Me.tbEliminar ThenDim r As 1nteger, llamamos al método que abre el, formulario para abrir un archivor = MsgBox("¿Desea Borrar el Registro?", vbYesNo, "Atencion")If r <> vbYes Then Exit SubregEliminar ( )Llenar_CajasAgain()

End 1f

1f e.Button 1s Me.tbBuscar Then, llamarnos al método que abre el, formulario para abrir un archivoDim frm As New frmBuscarCliente()frm.Show()Me. Close ()

End 1f

1f e.Button 1s Me.tbCancelar Then, llamamos al método que abre el, formulario para abrir un archivoMe.Llenar Cajas()1nhabilitarCajas()InhabilitarBotones()HabilitarBotones1()

End 1f

1f e.Button 1s Me.tbSalir Then, llamamos al método que abre el, formulario para abrir un archivo

Me .Close ()End 1f

End Sub

Private Sub regSiguiente()

, si estamos en el último registro,, no hacer movimiento1f Cliente.iPosicFilaActual =

(Cliente.oDataSet.Tables("Clientes") .Rows.Count - 1) ThenMessageBox.Show("Último Registro")

Else, incrementar el marcador de registro, y actualizar los controles con los, datos del registro actualCliente.iPosicFilaActual += 1Llenar_Cajas()Registro. Identificador Me.txtCodigo.Text

End If

End Sub

Private Sub regAnterior()

si estamos en el primer registro,no hacer movimiento

85

UniversidRd de'Geneias Comerciales

""

If Cliente.iPosicFilaActual = o ThenMessageBox.Show("PrLffier Registro")

EIse, disminuir el marcador de registro• y actualizar los controles con los, datos del registro actualCIiente.iPosicFilaActual -= 1Llenar Cajas ()Registro. Identificador Me.txtCodigo.Text

End IfEnd Sub

Private Sub regPrLffiero()

, establecer el marcador de registro en el primeroCliente.iPosicFilaActual = OLlenar Cajas()MessageBox.Show("primer Registro")Registro.Identificador = Me.txtCodigo.Text

End Sub

Private Sub regUltimo(), establecer el marcador de registro en el primero, obteniendo el número de filas que contiene la tabla menos unoCliente.iPosicFilaActual = (Cliente.oDataSet.Tables("Clientes").Rows.Count -

1)Llenar Cajas ()MessageBox. Show( "ÚltLffio Registro")Registro.Identificador = Me.txtCodigo.Text

End Sub

Private Sub LLffipiar_Cajas()

txtCodigo.Text = ....txtNombre.Text = " ..txtApellidos.Text = ....txtCedula.Text = ""txtDireccion.Text = ....txtEmai1.Text = .. "txtTelefono.Text = ....

txtCelular.Text = " ..txtReferencial.TexttxtReferencia2.Text

End Sub

Private Sub regNuevo()

Limpiar_Cajas ()Contador ()

End Sub

Private Function PrepareStr(ByVal strValue As String) As String, This function accepts a string and creates a string that can, be used in a SQL statement by adding single quotes around, it and handling empty values.If strValue.Trim() = "" Then

Return "NULL"Else

86

SAl» UniVersidad de Ciencias Cómerciales

Return "'" & strValue.Trim() & ","End If

End Function

Private Sub regGuardar()

'activar el método que muestra la creación del Cliente

If txtCodigo.Text = Cliente.oDataSet.Tables("Clientes").Rows.Count + 1 Then

'llena los campos de la clase Cliente

Registro.Identificador = Me.txtCodigo.TextRegistro.Nombre = Me.txtNombre.TextRegistro.Apellidos = Me.txtApellidos.TextRegistro.Cedula = Me.txtCedula.TextRegistro.Direccion = Me.txtDireccion.TextRegistro.Email = Me.txtEmail.TextRegistro.Telefono = Me.txtTelefono.TextRegistro.Celular = Me.txtCelular.TextRegistro. Referencial Me.txtReferencial.TextRegistro.Referencia2 = Me.txtReferencia2.Text

Registro.regNuevo()

Dim msl As New MemoryStream()foto. Image.Save (msl, foto. Image.RawFormat)Dim arrlmage() As Byte = msl.GetBuffermsl. Close ( )

Cliente.oDataAdapter.lnsertCommand.Parameters("@Foto") .Value arrlmage

Dim iResultado As IntegerCliente.enlace.oConexion.Open()iResultado = Cliente.oDataAdapter.lnsertCommand.ExecuteNonQuery()Cliente.enlace.oConexion.Close()MessageBox.Show("Registros Añadidos: " & iResultado)Cliente.Datos()Llenar_Cajas ()

ElseDim EnlaceUpdate As New Conexion()Dim iResultado As IntegerDim CffiSQL As SqlCommandDim strSQL As String

EnlaceUpdate.Conectar()

TryEnlaceUpdate.Conectar(), Build update statement to update product table with data, on formostrSQL = "UPDATE Clientes SET " &

"Nombre = " & PrepareStr(txtNombre.Text) &",Apellidos = " & PrepareStr(txtApellidos.Text) &",Cedula = " & PrepareStr(txtCedula.Text) &",Telefono = " & PrepareStr(txtTelefono.Text} &",Celular = " & PrepareStr(txtCelular.Text) &",Direccion = .. & PrepareStr(txtDireccion.Text} &... Email = " & PrepareStr(txtEmail.Text) &",Referencial = " & PrepareStr(txtReferencial.Text) &

87

SAP Universidad de Ciencias Comerciales

",Referencia2 = " & PrepareStr(txtReferencia2.Text) &" WHERE Codigo = " & Clnt(txtCodigo.Text)

EnlaceUpdate.oConexion.Open()cmSQL = New SqlCornmand(strSQL, EnlaceUpdate.oConexion)cmSQL.ExecuteNonQuery()

, Clase and Clean up objectsEnlaceUpdate.oConexion.Close()cmSQL.Dispose ()

Catch e As SqlExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As ExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "General Error")

End Try

Cliente.Datos()Llenar_Cajas ()

End If

End Sub

Public Sub regEliminar{)

Registro.regEliminar()Cliente. Datos ( )'Llenar_Cajas()

End Sub

Private Sub regModificar()HabilitarBotones()InhabilitarBotonesl()HabiltarCaj as ( )

End Sub

Private Sub InhabilitarBotones()

Me.tbGuardar.Enabled = FalseMe.tbCancelar.Enabled = False

End Sub

Private Sub InhabilitarBotonesl()

Me.tbAgregar.Enabled = False

Me.tbModificar.Enabled = FalseMe.tbBuscar.Enabled = FalseMe.tbEliminar.Enabled = FalseMe.tbAnterior.Enabled = FalseMe.tbPrimero.Enabled = FalseMe.tbSiguiente.Enabled = FalseMe.tbUltimo.Enabled = False

End Sub

Private Sub HabilitarBotones()

88

SAP Unn.ersidad de Ciencias Comerciales

Me.tbGuardar.Enabled = TrueMe.tbCancelar.Enabled = True

End Sub

Private Sub HabilitarBotones1()

Me.tbAgregar.Enabled = TrueMe.tbModlficar.Enabled = TrueMe.tbBuscar.Enabled = TrueMe.tbEliminar.Enabled = TrueMe.tbAnterior.Enabled = TrueMe.tbPrimero.Enabled = TrueMe.tbSiguiente.Enabled = TrueMe.tbUltimo.Enabled = True

End Sub

Private Sub InhabilitarCajas()

Me.txtCodigo.Enabled = FalseMe.txtNombre.Enabled = FalseMe.txtApellidos.Enabled = FalseMe.txtCedula.Enabled = FalseMe.txtDireccion.Enabled = FalseMe.txtEmail.Enabled = FalseMe.txtTelefono.Enabled = FalseMe.txtCelular.Enabled = FalseMe.txtReferencia1.Enabled FalseMe.txtReferencia2.Enabled = FalseMe.foto.Enabled = False

End Sub

Private Sub HabiltarCajas()

_Me.txtCodigo.Enabled = TrueMe.txtNombre.Enabled = TrueMe.txtApellidos.Enabled = TrueMe.txtCedula.Enabled = TrueMe.txtDireccion.Enabled = TrueMe.txtEmail.Enabled = TrueMe.txtTelefono.Enabled = TrueMe.txtCelular.Enabled = TrueMe.txtReferencia1.Enabled TrueMe.txtReferencia2.Enabled = TrueMe.foto.Enabled = True

End Sub

Private Sub Contador()Dim Num As Integer

dgVer.DataSource = Cliente.oDataSetdgVer.DataMernber = "Clientes"If Not IsNothing(Cliente.oDataSet.Tables("Clientes").Rows.Collnt) Then

Dim miCelda As New DataGridCell()Dim strCelda As StringmiCelda.RowNumber = (Cliente. oDataSet. Tables ("Clientes") .Rows.Count - 1)miCelda.ColumnNumber ONum = dgVer (miCelda) + 1

End If

txtCodigo.Text Num

89

SAP

End Sub

Private Sub foto DoubleClick(ByVal sender As Object, ByVal e AsSystem.EventArgs) Hañdles foto.DoubleClick

SelectImagen ( )End Sub

Private Sub txtNombre KeyPress(ByVal sender As Object, ByVal e Assystem.Windows.Forms.KeypresSEventArgs) Handles txtNombre.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsSeparator(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtApellidos_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtApellidos.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsSeparator(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Prívate Sub txtTelefono KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtTelefono.KeyPress

~f e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtCelular_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtCelular.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled = False

Elsee.Handled

End IfEnd Sub

End Class

True

ForDlulario PelículasImports System.DataImports System.Data.SqlClient

90

SAP Universidad de Ciencias Comereiales

Byte (»

Imports System.IQ

Public Class frmPeliculasInherits System.Windows.Forms.FormDim oDataRowClick As DataRow

Public Sub Llenar_Cajas()

Peliculas.DatosPelicula()Dim i As Integer

, cargar los controles del formulario con, los valores de los campos del registroMe.txtCodigo.Text = Peliculas.oDataRowPelicula("Cod_Pelicula") ..Me.txtNombre.Text = Peliculas.oDataRowPelicula("Nombre_Pelicula"¡Me.ComboGenero.Text = Peliculas.oDataRowGenero("Genero")Me.ComboTipo.Text = Peliculas.oDataRowTipo("Tipo")Me.txtPecio.Text = Peliculas.oDataRowTipo("Precio Alquiler")Me.txtDias.Text = Peliculas.oDataRowTipo("Dia_Alquiler")Me.txtCobro.Text = Peliculas.oDataRowTipo("Cobro Retraso")Me.ComboProveedor.Text = Peliculas.oDataRowProveedor("Nombre")

If Peliculas.oDataRowEstado("Cod Estado") = 1 ThenMe.rbDisponible.Checked = Tr~e

ElseIf Peliculas.oDataRowEstado("Cod Estado") 2 ThenMe.rbAlquilada.Checked = True -

ElseIf Peliculas.oDataRowEstado("Cod Estado") 3 ThenMe.rbDanada.Checked = True -

ElseIf Peliculas.oDataRowEstado("Cod Estado") 4 ThenMe.rbAlquilada.Checked = True -

End If

If Not(ISDBNull(Peliculas.oDataSetPelicula.Tables("Peliculas") . Rows (Peliculas.iPosicFilaActualPelicula) ("Foto"») Then

Dim arrPicture() As Byte = CType(Peliculas.oDataRowPelicula("Foto"),

Dim FotoCarga As New MemoryStream(arrPicture)

With Imagen.Image = Image.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.StretchImage

End With

FotoCarga.Close()

ElseWith Me. Imagen

.Image = Nothing

.SizeMode = PictureBoxSizeMode.StretchImageEnd With

End If

If(IsDBNull(Peliculas.oDataSetPelicula.Tables("Peliculas") •Rows (Peliculas.iPosicFilaActualPelicula) ("Foto"») Then

Dim path As String = "C:\SistemaDVD\VideoClub\Imagen\logo.bmp"

With Imagen.Image = Image.FromFile(path).SizeMode = PictureBoxSizeMode.StretchImage

91

SAP Universidad de CienciaS Comerciales

End WithEnd If

Me.ComboProveedor.Items.Clear()Me.ComboGenero.ltems.Clear()Me.ComboTipo.ltemS.Clear()For Each Peliculas.oDataRowPelicula In

Peliculas.oDataSetPelicula.Tables("Proveedores").RowsMe.ComboProveedor. Items.Add(Peliculas.oDataRowPelicula ("Nombre"»

Next

For Each Peliculas.oDataRowPelicula InPeliculas.oDataSetPelicula.Tables("Genero").Rows

Me.ComboGenero. Items.Add(Peliculas.oDataRowPelicula ("Genero"»Next ... ,

For Each Peliculas.oDataRowPelicula InPeliculas.oDataSetPelicula.Tables("TipodePelicula") .Rows

Me.ComboTipo. Items.Add(Peliculas.oDataRowPelicula ("Tipo" »Next

End Sub

Public Sub Llenar_CajasReload()

BuscarCodigo ( )If val2 > Peliculas.oDataSetPelicula.Tables("Peliculas").Rows.Count Then

MsgBox ("El Codigo de la Pelicula que Ingreso no Existe'~)

Elself val2 = BuscaCodigo.CodigoEncontradoPelicula Then

Dim oDataRowPelicula As DataRowDim oDataRowGenero As DataRowDim oDataRowTipo As DataRowDim oDataRowEstado As DataRowDim oDataRowProveedor As DataRow

Peliculas.DatosPelicula()oDataRowPelicula =

Peliculas.oDataSetPelicula.Tables("Peliculas") . Rows (BuscaCodigo.CodigoEncontradoPelicula - l)

oDataRowGenero =

Peliculas.oDataRowPelicula.GetParentRow("Genero Peliculas")oDataRowTipo = -

Peliculas.oDataRowPelicula.GetParentRow("Tipode Peliculas")oDataRowEstado = -

Peliculas.oDataRowPelicula.GetParentRow("Estado Peliculas")oDataRowProveedor = -

Peliculas.oDataRowPelicula.GetParentRow("Proveedores_Peliculas")

, cargar los controles del formulario con, los valores de los campos del registroMe.txtCodigo.Text oDataRowPelicula("Cod_Pelicula")

Me. txtNombre. Text oDataRowPelicula("Nombre Pelicula")Me.ComboGenero.Text = oÓataRowGenero("Genero")Me.ComboTipo.Text = oDataRowTipo("Tipo")Me.txtPecio.Text = oDataRowTipo("Precio Alquiler")Me.txtDias.Text = oDataRowTipo("Dia Alquiler")Me.txtCobro.Text = oDataRowTipo("Cobro Retraso")Me.ComboProveedor.Text = oDataRowProveedor("Nombre")

92

SllP tJmvél"8idad;de'6enei~~mereiales

If Not(IsDBNull (Peliculas. oDataSetPelicula. Tables ("Peliculas n) • Rows (BuscaCodigo.CodigoEncontradoPelicula"":' 1) ("Foto"») Then

Diro arrP~cture() As Byte = CType(oDataRowPelicu1a("Foton ), Byte(»Diro FotoCarga As New MemoryStream(arrPicture)

With Imagen.Image = Image.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.Stretchlmage

End With

FotoCarga.Close()

ElseWith Me. Imagen

.Iinage = Nothing

.SizeMode PictureBoxSizeMode.StretchImageEnd Wíth

End If

If(ISDBNull (Peliculas.oDataSetPelicula.Tables ("Peliculas") . Rows (BuscaCodigo.CodigoEncontradoPelicula - l} ("Foto"}» Then

Oiro path As String = "C:\SistemaDVD\VideoClub\Imagen\logo.bmp"

With Imagen.Image = Image.FromFile(path}.SizeMode = PictureBoxSizeMode.StretchImage

End WithEnd Ifva12 = O

For Each oDataRowPelicula InPeliculas. oDataSetPelicula. Tables ("Proveedores") . Rows

Me.ComboProveedor.Items.Add(oDataRowpelicula("Nombre")}Next

For Each oDataRowPelicula InPeliculas.oDataSetPelicula.Tables("Genero"}.Rows

Me.ComboGenero.Items.Add(oDataRowPelicula("Genero")}Next

For Each oDataRowPelicula InPeliculas.oDataSetPelicula.TablesC"TipodePelicula"} .Rows

Me.ComboTipo.Items.Add(oDataRowpeliculaC"Tipo")}Next

If oDataRowEstado("Cod Estado"} = 1 ThenMe.rbDisponible.Checked = True

ElseIf oDataRowEstado("Cod Estado"} 2 ThenMe.rbAlquilada.Checked-= True

ElseIf oDataRowEstadoC"Cod Estado"} 3 ThenMe.rbDanada.Checked = True

ElseIf oDataRowEstado("Cod_Estado") 4 Then

Me.rbAlquilada.Checked = TrueEnd If

End IfEnd Sub

Prívate Sub Ver_Cajas(}If va12 = O Then

93

Universidad: de Giencias (4)merciales

Llenar_ cajas ()Else

Llenar_CajasReload()End If

End Sub

Private Sub BuscarCodigo()BuscaCodigo.MostrarPeliculaPorCodigo(val2)

End Sub

Private Sub frmPeliculas_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

Ver Cajas ()InhabilitarCajas()InhabilitarBotones()RegistroPelicula.Identificador Me.txtCodigo.Text

End Sub

Private Sub tbClientes ButtonClick(ByVal sender As System.Object, ByVal e AsSystem.Windows. Forms. ToolBarButtonclickEventArgs) Handles tbClientes.ButtonClick

1f e.Button 1s Me.tbPrimero Then, llamarnos al método que abre el, formulario para abrir un archivoregPrimero ( )

End 1f

1f e.Button 1s Me.tbAnterior Then• llamarnos al método que abre elI formulario para abrir un archivoregAnterior ()

End 1f

1f e.Button 1s Me.tbSiguiente Then• llamamos al método que abre el, formulario para abrir un archivoregSiguiente ( )

End 1f

1f e.Button 1s Me.tbUltimo Then• llamamos al método que abre el• formulario para abrir un archivoregUltimo ()

End 1f

1f e.Button 1s Me.tbAgregar Then, llamarnos al método que abre el, formulario para abrir un archivoregNuevo()1nhabilitarBotonesl()HabilitarBotones()HabiltarCaj as ( )

End If

1f e.Button Is Me.tbModificar Then

, llamarnos al método que abre el, formulario para abrir un archivoregModificar ()InhabilitarBotonesl()HabilitarBotones()HabiltarCajas ()

94

SAP Universidad de Ciencias Comerciales

End lf

lf e.Button ls Me.tbGuardar Then, llamamos al método que abre el, formulario para abrir un archivoregVerificar ()lnhabilitarBotones()HabilitarBotonesl()lnhabilitarCajas()

End lf

lf e.Button ls Me.tbEliminar ThenDim r As Integer, llamamos al método que abre el, formulario para abrir un archivor = MsgBoX(n¿Desea Borrar el Registro?n, MsgBoxStyle.YesNo, '¡Atencionn )lf r <> vbYes Then Exit SubregEliminar ( )Llenar_Cajas ()

End lf

lf e.Button ls Me.tbBuscar Then, llamamos al método que abre el, formulario para abrir un archivoDim frm As New frmBuscarPelicula()frm.Show()He .Close ()

End lf

If e.Button Is Me.tbCancelar Then, llamamos al método que abre el, formulario para abrir un archivoMe.Llenar Cajas()lnhabilitarCajas()InhabilitarBotones()HabilitarBotonesl()

End lf

lf e.Button ls Me.tbSalir Then, llamamos al método que abre el, formulario para abrir un archivoMe .Close ()

End lf

End Sub

Private Sub regSiguiente()

, si estamos en el último registro,, no hacer movimientolf Peliculas.iPosiCFilaActualPelicula

(Peliculas.oDataSetPelicula.Tables("Peliculas").Rows.Count - 1) ThenMessageBox. Show ("Último Registro")

Else, incrementar el marcador de registro

, y actualizar los controles con los, datos del registro actualPeliculas.iPosicFilaActualPelicula += 1Llenar Cajas()Registropelicula.ldentificador = Me.txtCodigo.Text

95

Universidad de Ciencias Comerciales•.........•.: ,." .,'.' . .~

". .. . " ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~!!!!!!!!!!!-

End If

End Sub

Private Sub regAnterior()

, si estamos en el primer registro,, no hacer movimientoIf Peliculas.iPosicFilaActualPelicula O Then

MessageBox.Show("Primer Registro")Else

, disminuir el marcador de registro, y actualizar los controles con los, datos del registro actualPeliculas.iPosicFilaActualPelicula -= 1Llenar Cajas()Registropelicula.Identificador = Me.txtCodigo.Text

End IfEnd Sub

Private Sub regPrimero()

, establecer el marcador de registro en el primeroPeliculas.iPosicFilaActualPelicula OLlenar Cajas ()MessageBox.Show("Primer Registro")RegistroPelicula.Identificador = Me.txtCodigo.Text

End Sub

Private Sub regUltimo(), establecer el marcador de registro en el primero, obteniendo el número de filas que contiene la tabla menos unoPeliculas.iPosicFilaActualPelicula =

(Peliculas.oDataSetPelicula.Tables("Peliculas") .Rows.Count - 1)Llenar Cajas()MessageBox.Show("Último Registro")RegistroPelicula.Identificador = Me.txtCodigo.Text

End Sub

Private Sub Limpiar_Cajas()

Me.txtCodigo.Text = NothingMe.txtNombre.Text = NothingMe.ComboGenero.Text = NothingMe.ComboTipo.Text = NothingMe.txtCobro.Text = NothingMe.txtDias.Text = NothingMe.txtPecio.Text = NothingMe.ComboProveedor.Text = Nothing

End Sub

Private Sub Limpiar_Combo()

Me.ComboGenero.Text = NothingMe.ComboTipo.Text = Nothing

Me.ComboProveedor.Text = Nothing

End Sub

96

Private Sub regNuevo()

Limpiar..-;.Cajas ()Contador()

End Sub

Private Sub regVerificar()VerificarCajas()

End Sub

Private Sub regGuardar()

Dim iResultado As Integer'llena los campos de la clase PeliculaIf txtCodigo.Text

Peliculas.oDataSetPelicula.Tables("Peliculas") .Rows.Count + 1 Then

RegistroPelicula.ldentificador = Me.txtCodigo.TextRegistroPelicula.Nombre = Me.txtNombre.Text

If Me.rbDisponible.Checked = True ThenRegistroPelicula.Estado = 1

Elself Me.rbAlquilada.Checked = True ThenRegistroPelicula.Estado = 2

Elself Me.rbDanada.Checked = True ThenRegistroPelicula.Estado 3

Elself Me.rbPerdida.Checked True ThenRegistroPelicula.Estado 4

End If

Dim num As IntegerDim numl As IntegerDim num2 As Integer

num = Me.ComboGenero.Selectedlndexnuml Me.ComboProveedor.Selectedlndexnum2 = Me.ComboTipo.Selectedlndex

RegistroPelicula.Tipo = num2 + 1RegistroPelicula.Genero = num + 1RegistroPelicula~Proveedor = numl + 1

RegistroPelicula.regNuevo()

Dim msl As New MemoryStream()Imagen. Image. Save (msl. Imagen. Image.RawFormat)Dim arrImage() As Byte = msl.GetBuffermsl. Close ( )

arrImagePeliculas.oDataAdapterPelicula.InsertCornmand.Parameters("@Foto").Value

, abrir coneXlonPeliculas.EnlacePelicula.oConexion.Open()

, ejecutar comando de inserción del adaptador

iResultado =Peliculas.oDataAdapterPelicula.InsertCommand.ExecuteNonQuery()

97

SAP

• cerrar conexiónPeliculas.EnlacePelicula.oConexion.Close()Peliculas.DatosPelicula()MessageBox.Show("Registros Añadidos: " & iResultado)Llenar_ Caj as ( )

Else • Guardar Cambios actulalizados

Dim EnlaceUpdate As New Conexione)Dim cmSQL As SqlCommandDim strSQL As StringDim num As IntegerDim numl As IntegerDim num2 As IntegerDim SelectEstado As Integer

Try

EnlaceUpdate.Conectar()

If Me.rbDisponible.Checked = True ThenSelectEstado = 1

Elself Me.rbAlquilada.Checked = True ThenSelectEstado = 2

Elself Me.rbDanada.Checked = True ThenSelectEstado = 3

Elself Me.rbPerdida.Checked = True ThenSelectEstado = 4

End If

num = (Me.ComboGenero.Selectedlndex) + 1numl (Me. ComboProveedor •Selectedlndex) .+ 1num2 = (Me.ComboTipo.Selectedlndex) + 1

EnlaceUpdate.Conectar()

strSQL = "UPDATE Peliculas SET " &"Nombre_Pelicula = " & PrepareStr(txtNombre.Text) &",Cod Genero = " & num &",Tipo...:..pelicula = " & num2 &",Cod Proveedor = .. & numl &",Cod-Estado = " & SelectEstado &" WHERE Cod_Pelicula = " & txtCodigo.Text

EnlaceUpdate.oConexion.Open()cm8QL = New SqlCommand(strSQL, EnlaceUpdate.oConexion)cmSQL.ExecuteNonQuery()

EnlaceUpdate.oConexion.Close()cm8QL.Dispose()

Catch e As SqlException, MsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As Exception, MsgBox(e.Message, MsgBoxStyle.Critical, "General Error")

End TryPeliculas.DatosPelicula()Llenar_ Caj as ( )

End IfEnd Sub

98

SAP Universidadd., Ci.m.cias Comel'ciáles

Private Function PrepareStr{ByVal strValue As String) As String, This function accepts a string and creates a string that can, be used in a SQL statement by adding single quotes around• it and handling empty values.If strValue.Trim{) = "" Then

Return "NULL"Else

Return "'" & strValue.Trim{) & "'"End If

End Function

Private Sub VerificarCajas{)

If (Me.rbDisponible.Checked Or Me.rbAlquilada.Checked Or Me.rbDanada.CheckedOr

Me.rbPerdida.Checked) = False ThenMsgBox{"Debe Escojer una Obcion de Estado para la Pelicula")

End If

If Me.txtNombre.Text = Nothing ThenMsgBox{"Debe Introducir el Nombre de la Pelicula")

End If

If Me.ComboGenero.Text = Nothing ThenMsgBox{"Debe Introducir el Genero de la Pelicula")

End If

If Me.ComboProveedor.Text Nothing ThenMsgBox{"Debe Introducir el Proveedor de la Pelicula")

End If

If Me.ComboTipo.Text = Nothing ThenMsgBox{"Debe Introducir el Tipo de Pelicula")

End If

If Me.txtNombre.Text <> Nothing And Me.ComboGenero.Text <> Nothing AndMe.ComboProveedor.Text <> Nothing And Me.ComboTipo.Text <> Nothing And(Me.rbDisponible.Checked Or Me.rbAlquilada.Checked Or Me.rbDanada.Checked Or

Me.rbPerdida.Checked) = True ThenregGuardar ()

End If

End Sub

Public Sub regEliminar()

RegistroPelicula.regEliminar()

End Sub

Private Sub regModificar()HabilitarBotones{)InhabilitarBotonesl()HabiltarCajas ()Limpiar Combo ( )

End Sub -

Private Sub InhabilitarBotones{)

Me.tbGuardar.Enabled = False

99

SAP Universidad dc··GieneiasComereiales

Me.tbCancelar.Enabled

End Sub

False

Private Sub InhabilitarBotonesl()

Me.tbAgregar.Enabled = FalseMe.tbModificar.Enabled = FalseMe.tbBuscar.Enabled = FalseMe.tbEliminar.Enabled = FalseMe.tbAnterior.Enabled = FalseMe.tbPrimero.Enabled = FalseMe.tbSiguiente.Enabled = FalseMe.tbUltimo.Enabled = False

End Sub

Private Sub HabilitarBotones()

Me.tbGuardar.Enabled = TrueMe.tbCancelar.Enabled = True

End Sub

Private Sub HabilitarBotonesl()

Me.tbAgregar.Enabled = TrueMe.tbModificar.Enabled = TrueMe.tbBuscar.Enabled = TrueMe.tbEliminar.Enabled = TrueMe.tbAnterior.Enabled = TrueMe.tbPrimero.Enabled = TrueMe.tbSiguiente.Enabled = TrueMe.tbUltimo.Enabled = True

End Sub

Private Sub InhabilitarCajas()

'Me.txtCodigo.Enabled = FalseMe.txtNombre.Enabled = FalseMe.ComboGenero.Enabled = FalseMe.ComboTipo.Enabled = FalseMe.rbAlquilada.Enabled = FalseMe.rbDanada.Enabled = FalseMe.rbDisponible.Enabled = FalseMe.rbPerdida.Enabled = FalseMe.ComboProveedor.Enabled = False

End Sub

Private Sub HabiltarCajas()

'Me.txtCodigo.Enabled = TrueMe.txtNombre.Enabled = TrueMe.ComboGenero.Enabled = TrueMe.ComboTipo.Enabled = TrueMe.rbAlquilada.Enabled = True

Me.rbDanada.Enabled = TrueMe.rbDisponible.Enabled = True

100

UniverSidad de Q ...cias Comeitciales

Me.rbPerdiqa.Enabled = TrueMe.ComboProveedor.Enabled'= True

End Sub

Private Sub Contador(}Dim Num As Integer'Num = Peliculas.oDataSetPelicula.Tables("Peliculas") .Rows.Count + 1'txtCodigo.Text = Num

dgVer.DataSource = Peliculas.oDataSetPeliculadgVer.DataMember = "Peliculas"If Not IsNothing(Peliculas.oDataSetPelicula.Tables("PeliculastI} .Rows.Count}

ThenDim miCelda As New DataGridCell()Dim strCelda As StringmiCelda.RowNumber =

(Peliculas . oDataSetPelicula. Tables (" Peliculas") •Rows. COllnt .. 1}rniCelda.ColumnNumber oNurn = dgVer(rniCelda} + 1

End If

txtCodigo.Text Nurn

End Sub

Private Sub Imagen DoubleClick(ByVal sender As Object, ByVal e AsSystern.EventArgs} Handles Imagen.DoubleClick

SelectImagen ( )End Sub

Private Sub Selectlmagen()

With AbrirImagen.InitialDirectory = "C:\".Filter = "Bitmapsl*.bmpIJPEGsl*.jpg".FilterIndex = 2

End With

If AbrirImagen.ShowDialog(} = DialogResult.OK ThenWith Imagen

.Image = Image.FromFile(AbrirImagen.FileName}

.SizeMode = PictureBoxSizeMode.StretchImageEnd with

End If

End Sub

End Class

Formulario Proveedores

Imports System.DataImports System.Data.SqlClientPublic Class frmProveedorInherits System.Windows.Forms.Form

101

SAP Universidad de' Ciencias Comerciales

Private Sub fr.mProveedor Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) HandIes MyBase.Load

Llenar Cajas ()InhabilitarCajas()InhabilitarBotones()RegistroProveedor.ldentificador Me.txtCodigo.Text

End Sub

Public Sub Llenar_Cajas()

Proveedor. DatosProveedor()

Me.txtCodigo.Text = Proveedor.oDataRowProveedor("Codigo_proveedor")Me.txtNombre.Text = Proveedor.oDataRowProveedor("Nombre")Me.txtDireccion.Text = Proveedor.oDataRowProveedor("Direccion")Me. txtDireccion. Text = Proveedor. oDataRowProveedor ("Direccion")··Me.txtCelular.Text = Proveedor.oDataRowProveedor("Celularn )Me.txtTelefono.Text = Proveedor.oDataRowProveedor("Telefono")Me.txtPersonaContacto.Text = Proveedor.oDataRowProveedor("PersonaContacto")

If Not(IsDBNull (Proveedor.oDataSetProveedor.Tables ("Proveedores") . Rows (Proveedor.iPosicFilaActualProveedor) ("Email"») Then

Me.txtEmail.Text Proveedor.oDataRowProveedor(nEmail")Else

Me.txtEmail.Text NothingEnd 1f

1f Not(IsDBNull(Proveedor.oDataSetProveedor.Tables("Proveedores") . Rows (Proveedor.iPosicFilaActualProveedor) ("Celularn») Then

Me.txtCeluIar.Text Proveedor.oDataRowProveedor("Celularn )EIse

Me.txtCelular.Text NothingEnd If

If Not(IsDBNull(Proveedor.oDataSetProveedor.Tables(nproveedores").Rows(Proveedor.iPosicFílaActualProveedor) ("Fax"») Then

Me.txtFax.Text Proveedor.oDataRowProveedor(nFax")Else

Me. txtFax. Text NothingEnd 1f

End Sub

Private Sub tbProveedor_ButtonClíck(ByVal sender As System.Object, ByVal e AsSystem.Windows.For.ms.ToolBarButtonClickEventArgs) Handles tbClientes.ButtonClick

If e.Button 1s Me.tbPrimero Then• llamamos al método que abre el, formulario para abrir un archivoregPrimero ()

End 1f

1f e.Button 1s Me.tbAnterior Then, llamamos al método que abre el, formulario para abrir un archivoregAnteríor ( )

End If

102

SAP Universidad de Cieneias €Om~iales

1f e.Button 1s Me.tbSiguiente Then, llamamos al método que abre el, formulario para abrir un archivoregSiguiente()

End 1f

1f e.Button 1s Me.tbUltimo Then, llamamos al método que abre el, formulario para abrir un archivoregUltimo ( )

End 1f

1f e.Button 1s Me.tbAgregar Then, llamamos al método que abre el, formulario para abrir un archivoregNuevo()1nhabilitarBotonesl()HabilitarBotones()HabiltarCajas ()

End 1f

1f e.Button 1s Me.tbGuardar Then, llamamos al método que abre el, formulario para abrir un archivoregGuardar ( )InhabilitarBotones()HabilitarBotonesl()InhabilitarCajas()

End 1f

1f e.Button 1s Me.tbEliminar Then, llamamos al método que abre el, formulario para abrir un archivoDim r As 1ntegerr = MsgBox("¿Desea Borrar el Registro?", vbYesNo, "Atencionn )

1f r <> vbYes Then Exit SubregEliminar ()Llenar_Cajas ()

End 1f

1f e.Button 1s Me.tbCancelar Then, llamamos al método que abre el, formulario para abrir un archivoMe.Llenar Cajas()InhabilitarCajas()InhabilitarBotones()HabilitarBotonesl()

End If

1f e.Button 1s Me.tbSalir Then, llamamos al método que abre el• formulario para abrir un archivo

Me .Close ()End If

1f e.Button 1s Me.tbModificar Then, llamamos al método que abre el, formulario para abrir un archivoInhabilitarBotonesl()HabilitarBotones()HabiltarCajas ()regGuardar ( )

103

o Then

• !!!!!!!!S!!!AP!!!'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U!!!!!!DIV'.!!!o,!!!.,!!!TSI!!!'o!!!d!!!&!!!d!!!d!!!e!!!Ci!!!"·!!!eD!!!!!!!ei!!!.as!!!'!!!Co!!!'!!!m!!!!!!ere!!!'.·!!!ial!!·!!!é8!!!!!!!!

Llenar_Cajas ()End If

End Sub

Private Sub regSiguiente()

, si estamos en el último registro,, no hacer movimientoIf Proveedor.iPosicFilaActualProveedor

(Proveedor.oDataSetProveedor.Tables("Proveedores").Rows.Count - 1) ThenMessageBox. Show ("Último Registro")

Else• incrementar el marcador de registro, y actualizar los controles con los• datos del registro actualProveedor.iPosicFilaActua1Proveedor += 1Llenar Cajas ()RegistroProveedor.ldentificador = Me.txtCodigo.Text

End If

End Sub

Private Sub regAnterior()

• si estamos en el primer registro,, no hacer movimientoIf Proveedor.iPosicFilaActualProveedor

MessageBox.Show("Primer Registro")Else

• disminuir el marcador de registro• y actualizar los controles con los, datos del registro actualProveedor.iPosicFilaActualProveedor -= 1Llenar Cajas()RegistroProveedor.ldentificador = Me.txtCodigo.Text

End IfEnd Sub

Private Sub regPrimero()

• establecer el marcador de registro en el primeroProveedor.iPosicFilaActualProveedor = OLlenar_ Caj as ( )MessageBox. Show ("Primer Registro")RegistroProveedor.ldentificador = Me.txtCodigo.Text

End Sub

Private Sub regUltimo(), establecer el marcador de registro en el primero• obteniendo el número de filas que contiene la tabla menos unoProveedor.iPosicFilaActualProveedor =

(Proveedor.oDataSetProveedor.Tables("Proveedores").Rows.Count - 1)Llenar Caj as ( )MessageBox. Show ("Último Registro")RegistroProveedor.ldentificador = Me.txtCodigo.Text

End Sub

Private Sub Limpiar_Cajas()

104

Me.txtCodigo.Text ~ NothingMe.txtNombre.Text = NothingMe.txtDireccion.Text = NothingMe.txtEmail.Text = NothingMe.txtDireccion.Text = NothingMe.txtCelular.Text = NothingMe.txtTelefono.Text = NothingMe.txtFax.Text = NothingMe.txtPersonaContacto.Text = Nothing

End Sub

Private Sub regNuevo()

Limpiar Cajas ()Contador()

End Sub

Private Function PrepareStr(ByVal strValue As String) As String, This function accepts a string and creates a string that can, be used in a SQL statement by adding single quotes around, it and handling empty values.If strValue.Trim() = "" Then

Return "NULL"Else

Return "'" & strValue. Trim () & "'"End If

End Function

Private Sub regGuardar()

'llena los campos de la clase ClienteIf txtCodigo.Text =

ProveedQr.oDataSetProveedor.Tables("Proveedores").Rows.Count + 1 Then

RegistroProveedor.Identificador = Me.txtCodigo.TextRegistroProveedor.Nombre = Me.txtNombre.TextRegistroProveedor.Direccion = Me.txtDireccion.TextRegistroProveedor.Email = Me.txtEmail.TextRegistroProveedor.Telefono = Me.txtTelefono.TextRegistroProveedor.Celular = Me.txtCelular.TextRegistroProveedor.Fax = Me.txtFax.TextRegistroProveedor.PersonaContacto = Me.txtPersonaContacto.Text

'activar el método que muestra la creación del ClienteRegistroProveedor.regNuevo()Llenar_Cajas()

Else

Dim EnlaceUpdate As New Conexion()Dim iResultado As IntegerDim cmSQL As SqlCommandDim strSQL As String

EnlaceUpdate.Conectar()

TryEnlaceUpdate.Conectar(), Build update statement to update product table with data, on formo

105

SAl-

strSQL "UPDATE Proveedores SET " &"Nombre = " & PrepareStr(txtNombre.Text) &",Direccion = " & PrepareStr(txtDireccion.Text) &",Telefono = " & PrepareStr(txtTelefono.Text) &",Fax = " & PrepareStr(txtFax.Text} &_... Email = " & PrepareStr(txtEmail.Text} &",PersonaContacto = " & PrepareStr(txtpersonaContacto.Text}

",Celular = " & PrepareStr(txtCelular.Text} &" WHERE Codigo_proveedor = " & txtCodigo.Text

EnlaceUpdate.oConexion.Open()cm3QL = New SqlCommand(strSQL, EnlaceUpdate.oConexion}cm3QL.ExecuteNonQuery(}

, Close and Clean up objectsEnlaceUpdate.oConexion.Close(}cmSQL. Dispose ( )

Catch e As SqlExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error"}

Catch e As ExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "General Error"}

End Try

End If

End Sub

Public Sub regEliminar(}

RegistroProveedor.regEliminar()-

End Sub

Private Sub InhabilitarBotones()

Me.tbGuardar.Enabled = FalseMe.tbCancelar.Enabled = False

End Sub

Private Sub InhabilitarBotonesl()

Me.tbAgregar.Enabled = FalseMe.tbModificar.Enabled = FalseMe.tbEliminar.Enabled = FalseMe.tbAnterior.Enabled = FalseMe.tbPrimero.Enabled = FalseMe.tbSiguiente.Enabled = FalseMe.tbUltimo.Enabled = False

End Sub

Private Sub HabilitarBotones()

Me.tbGuardar.Enabled = TrueMe.tbCancelar.Enabled = True

106

SAP Universidad d~ ClenclQ Comerciales

End Sub

Private Sub HabilitarBotones1()

Me.tbAgregar.Enabled = TrueMe.tbModificar.Enabled = TrueMe.tbEliminar.Enabled = TrueMe.tbAnterior.Enabled = TrueMe.tbPrimero.Enabled = TrueMe.tbSiguiente.Enabled = TrueMe.tbUltimo.Enabled = True

End Sub

Prívate Sub InhabilitarCajas()

Me.txtCodigo.Enabled = FalseMe.txtNombre.Enabled = FalseMe.txtDireccion.Enabled = FalseMe.txtDireccion.Enabled = FalseMe.txtEmail.Enabled = FalseMe.txtTelefono.Enabled = FalseMe.txtCelular.Enabled = FalseMe.txtPersonaContacto.Enabled FalseMe.txtFax.Enabled = False

End Sub

Prívate Sub HabiltarCajas()

Me.txtCodigo.Enabled = TrueMe.txtNombre.Enabled = TrueMe.txtDireccion.Enabled = TrueMe.txtDireccion.Enabled = TrueMe.txtEmail.Enabled = TrueMe.txtTelefono.Enabled = TrueMe.txtCelular.Enabled = TrueMe.txtPersonaContacto.Enabled TrueMe.txtFax.Enabled = True

End Sub

Prívate Sub Contador()Dím Num As Integer'Num = Proveedor. oDataSetProveedor. Tables ("Proveedores") .Rows.Count + 1'txtCodígo.Text = Num

dgVer.DataSource Proveedor.oDataSetProveedordgVer.DataMember "Proveedores"If Not

IsNothing (Proveedor. oDataSetProveedor.Tables ("Proveedores").Rows.Count) ThenDim miCelda As New DataGridCell()Dím strCelda As StríngmiCelda.RowNumber =

(Proveedor.oDataSetProveedor.Tables("Proveedores").Rows.Count - 1)miCelda.ColumnNumber ONum = dgVer(miCelda) + 1

End If

End Sub

107

SAl- Uuiversid.dde Gi",eilis Comerclales

Private Sub txtNombre KeyPress(ByVal sender As Object. ByVal e Assystem.Windows.Forms.KeypressEventArgs) Handles txtNombre.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsSeparator(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtFax KeyPress(ByVal sender As Object. ByVal e Assystem.Windows.Forms.KeyPresSEventArgs) Handles txtFax.KeyPress

If e.KeyChar.lsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtTelefono KeyPress(ByVal sender As Object. ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtTelefono.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtCelular_KeyPress(ByVal sender As Object. ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtCelular.KeyPress

If e.KeyChar.lsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False .

Elsee.Handled True

End IfEnd Sub

End Class

Formulario Empleado

Imports System.DataImports System.Data.SqlClientImports System.IO

Public CIass frmEmpleadoInherits System.Windows.Forms.Form

108

SllP

Private Sub frmEmpleado_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

Llenar Caj as ( )Registro. IdentificadorInhabilitarCajas()InhabilitarBotones()

End Sub

Private Sub Llenar_Cajas()

Me.txtCodigo.Text

DEmpleado.DatosEmpleados()DEmpleado.oDataRowEmpleado .

DEmpleado.oDataSetEmpleado.Tables("Empleados").Rows(DEmpleado.iPosicFilaEInP:I.eado )'cargar los controles del formulario con ., los valores de los campos del registroMe.txtCodigo.Text = DEmpleado.oDataRowEmpleado("Codigo")Me.txtNombre.Text = DEmpleado.oDataRowEmpleado("Nombre")Me.txtPass.Text DEmpleado.oDataRowEmpleado("Password")

If Not(IsDBNull(DEmpleado.oDataSetEmpleado.Tables("Empleados"). Rows (DEmpleado.iPosicFilaEmpleado) ("Apellidos"») Then

Me.txtApellidos.Text DEmpleado.oDataRowEmpleado("Apellidos")Else

Me.txtApellidos.Text NothingEnd If

If Not(IsDBNull(DEmpleado.oDataSetEmpleado.Tables("Empleados"). Rows (DEmpleado.iPosicFilaEmpleado) ("Direccion"») Then

Me. txtDireccion. Text DEmpleado.oDataRowEmpleado("Direccion")Else

Me.txtDireccion.Text NothingEnd If

If Not(IsDBNull(DEmpleado.oDataSetEmpleado.Tables("Empleados"). Rows (DEmpleado.iPosicFilaEmpleado) ("Telefono"») Then

Me.txtTelefono.Text DEmpleado.oDataRowEmpleado("Telefono")Else

Me.txtTelefono.Text NothingEnd If

If Not(IsDBNull(DEmpleado.oDataSetEmpleado.Tables("Empleados") . Rows (DEmpleado.iPosicFilaEmpleado) ("Foto"») Then

Dim arrPicture () As Byte = CType (DEmpleado.oDataRowEmpleado ("Foto") ,Byte () )

Dim FotoCarga As New MemoryStream(arrPicture)

With foto.Image = lmage.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.StretchImage

End With

FotoCarga.Close()

ElseWith Me.foto

.Image = Nothing

169

SAP Universidad de6iencias Comerciales

~SizeMode = PictureBoxSizeMode.StretchlmageEnd With

End If

If{IsDBNull(DEmpleado.oDataSetEmpleado.Tables("Empleados"}.Rows{DEmpleado.iPosicFilaEmpleado} ("Foto"}}) Then

Dim path As String = "C:\SistemaDVD\VideoClub\Imagen\logo.bmp"

With foto.Image = Image.FromFile{path}.SizeMode = PictureBoxSizeMode.Stretchlmage

End WithEnd If

End Sub

Private Sub SelectImagen{)

With Abrirlmagen.InitialDirectory = "C:\".Filter = "Bitmapsl*.bmpIJPEGsl*.jpg".Filterlndex = 1

End With

If AbrirImagen.ShowDialog(} DialogResult.OK Then

With foto.Image = Image.FromFile{AbrirImagen.FileName}.SizeMode PictureBoxSizeMode.StretchImage

End WithEnd If

End Sub

Pri~ate Sub tbClientes_ButtonClick(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.ToolBarButtonClickEventArgs} Handles tbClientes.ButtonClick

If e.Button Is Me.tbPrimero Then• llamamos al método que abre el• formulario para abrir un archivoregPrimero {}

End If

If e.Button Is Me.tbAnterior Then, llamamos al método que abre el, formulario para abrir un archivoregAnterior ( )

End If

If e.Button Is Me.tbSiguiente Then• llamamos al método que abre el, formulario para abrir un archivoregSiguiente {}

End If

If e.Button Is Me.tbUltimo Then, llamamos al método que abre el, formulario para abrir un archivoregUltimo {}

End If

110

Universidad. de Ciencias Coillerclades

1f e.Button 1s Me.tbAgregar Then• llamamos al método que abre el• formulario para abrir un archivoregNuevo()1nhabilitarBotones1()

HabilitarBotones()HabiltarCajas ()

End 1f

1f e.Button 1s Me.tbModificar Then• llamamos al método que abre el• formulario para abrir un archivoregModificar ()1nhabilitarBotones1()HabilitarBotones()HabiltarCajas ()

End 1f

1f e.Button 1s Me.tbGuardar Then• llamamos al método que abre el, formulario para abrir un archivoregGuardar ( )InhabilitarBotones()HabilitarBotones1()InhabilitarCajas()

End 1f

1f e.Button 1s Me.tbEliminar ThenDim r As 1nteger• llamamos al método que abre el• formulario para abrir un archivor = MsgBox("¿Desea Borrar el Registro?", vbYesNo, "Atencion")1f r <> vbYes Then Exit SubregEliminar ( )

End.If

1f e.Button 1s Me.tbCancelar Then• llamamos al método que abre el• formulario para abrir un archivoMe.Llenar Cajas()InhabilitarCajas()InhabilitarBotones()HabilitarBotones1()

End 1f

1f e.Button 1s Me.tbSalir Then, llamamos al método que abre el, formulario para abrir un archivoMe .Close ()

End 1f

End Sub

Private Sub regSiguiente()

, si estamos en el último registro,, no hacer movimientoIf DEmpleado.iPosicFilaEmpleado =

(DEnlpleado.oDataSetEmpleado.Tables("Empleados").Rows.Count - 1) ThenMessageBox. Show ("Último Registro")

111

Else, incrementar el marcador de registro, y actualizar los controles con los, datos del registro actualDEmpleado.iPosicFilaEmpleado += 1Llenar_Cajas ()

Registro. IdentificadorEnd If

End Sub

Private Sub regAnterior()

Me.txtCodigo.Text

U"

, si estamos en el primer registro,, no hacer movimientoIf DEmpleado.iPosicFilaEmpleado = O Then

MessageBox.Show("Primer Registro")Else

, disminuir el marcador de registro, y actualizar los controles con los, datos del registro actualDEmpleado.iPosicFilaEmpleado -= 1Llenar Caj as ( )Registro.Identificador = Me.txtCodigo.Text

End IfEnd Sub

Private Sub regPrimero()

, establecer el marcador de registro en el primeroDEmpleado.iPosicFilaEmpleado = OLlenar Cajas ()MessageBox. Show ("Primer Registro")Registro.Identificador = Me.txtCodigo.Text

End _Sub

Private Sub regUltimo()• establecer el marcador de registro en el primero• obteniendo el número de filas que contiene la tabla menos unoDEmpleado.iPosicFilaEmpleado =

(DEmpleado.oDataSetEmpleado.Tables("Empleados").Rows.Count - 1)Llenar Cajas ()MessageBox. Show ("Último Registro")Registro.Identificador = Me.txtCodigo.Text

End Sub

Private Sub Limpiar_Cajas()

txtCodigo.Text = "U

txtNombre.Text = U"txtApellidos.Text = "U

txtDireccion.Text = "U

txtTelefono.Text = "U

txtPass.Text = uu

txtPassConf.Text

End Sub

Prívate Sub regNuevo()

Limpiar_Cajas()

112

• !!!!!!!!S!!!A"P!l!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U!!!!!!DIV!!!'!!!e!!!I'8!!!'!!!id!!!a!!!d!!!d!!!e!!!'!!!Ci!!!'en!!!""!!!'C!!!-i!!!Ü8!!!'!!!CO!!!'!!!Ib!!!'e!!!l'!!!c!!!ial!!!'!!!e8!!!!!!!

Contador()

End Sub

Private Function PrepareStr(ByVal strValue As String) As String, This function accepts a string and creates a string that can, be used in a SQL statement by adding sipgle guotes around

, it and handling empty values.If strValue.Trbn() nn Then

Return "NULL"Else

Return n," & strValue. Trim () & .. , ..

End IfEnd Function

Private Sub regGuardar()

'activar el método que muestra la creación del Cliente

If txtCodigo.Text =DEmpleado.oDataSetEmpleado.Tables("Empleados").Rows.Count + 1 Then

'llena los campos de la clase Cliente

If Me.txtPass.Text = Me.txtPassConf.Text Then

RegistroEmpleado.ldentificador = Me.txtCodigo.TextRegistroEmpleado.Nombre = Me.txtNombre.TextRegistroEmpleado.Apellidos = Me.txtApellidos.TextRegistroEmpleado.Direccion = Me.txtDireccion.TextRegistroEmpleado.Telefono Me.txtTelefonb.TextRegistroEmpleado.Password = Me.txtPass.Text

RegistroEmpleado.regNuevo()

Dim msl As New MemoryStream()foto. Image. Save (msl, foto. Image.RawFormat)Dim arrlmage() As Byte = msl.GetBuffermsl. Close ()

DEmpleado.oDataAdapterEmpleado.lnsertCommand.Parameters("@Foto").Value

Dim iResultado As IntegerDEmpleado.EnlaceEmpleado.oConexion.Open()iResultado =

DEmpleado.oDataAdapterEmpleado.lnsertCommand.ExecuteNonQuery()DEmpleado.EnlaceEmpleado.oConexion.Close()MessageBox.Show("Registros Añadidos: .. & iResultado)DEmpleado.DatosEmpleados(), Llenar_Cajas ()

EIseMsgBox("Llene Confirmar Contraseña")Me.txtPass.Text = nn

Me.txtPassConf.Text = "n'DEmpleado.iPosicFilaEmpleado O

End IfEIse

Dim EnlaceUpdate As New Conexion()Dim iResultado As Integer

arrlmage

113

Universidad de Ciencias Comerciales

Dim cmSQL As SqlConunandDim strSQL As String

EnlaceUpdate.Conectar()

If Me.txtPass.Text = Me.txtPassConf.Text ThenTry

EnlaceUpdate.Conectar()

, Build update statement to update product table with data, on formostrSQL = "UPDATE Empleados SET " &

"Nombre = " & PrepareStr(txtNombre.Text) &",Apellidos = " & PrepareStr(txtApellidos.~e*t) &",Direccion= " & PrepareStr(txtDireccion.Text) &",Telefono = " & PrepareStr(txtTelefono.Text) &",Password = " & PrepareStr(txtPass.Text) &" WHERE Cod_Empleado = " & txtCodigo.Text

EnlaceUpdate.oConexion.Open()cmSQL = New SqlCommand(strSQL, EnlaceUpdate.oConexion)cmSQL.ExecuteNonQuery()

, Close and Clean up objectsEnlaceUpdate.oConexion.Close()cmSQL. Dispose ( )

Catch e As SqlExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As ExceptionMsgBox(e.Message, MsgBoxStyle.CriticaJ:, "General Error")

End TryDEmpleado.DatosEmpleados()'Llenar_ Caj as ( )

End IfEnd If

End Sub

Public Sub regEliminar()

RegistroEmpleado.regEliminar()DEmpleado.DatosEmpleados()Llenar_ Caj as ()

End Sub

Private Sub regModificar()HabilitarBotones()InhabilitarBotonesl()HabiltarCajas ()

End Sub

Private Sub InhabilitarBotones()

Me.tbGuardar.Enabled = FalseMe.tbCancelar.Enabled = False

End Sub

Private Sub InhabilitarBotonesl()

114

SllP Universidad de Ciencias Comerciales

Private Sub Contador()Dim Num As Integer'Num = DEmpleado.oDataSetEmpleado.Tables(nEmpleados n ) .Rows.Count + 1dgVer.DataSource = DEmpleado.oDataSetEmpleadodgVer.DataMember = "Empleados"If Not IsNothing(DEmpleado.oDataSetEmpleado.Tables("Empleados").Rows.Count)

Then

Me.tbAgregar.Enabled = FalseMe.tbModificar.Enabled = FalseMe.tbEliroinar.Enabled = FalseMe.tbAnterior.Enabled = FalseMe.tbPrimero.Enabled = FalseMe.tbSiguiente.Enabled = FalseMe.tbUltimo.Enabled = False

End Sub

Private Sub HabilitarBotones()

Me.tbGuardar.Enabled = TrueMe.tbCancelar.Enabled = True

End SubPrivate Sub HabilitarBotonesl()

Me.tbAgregar.Enabled = TrueMe.tbModificar.Enabled = TrueMe.tbEliminar.Enabled = TrueMe.tbAnterior.Enabled = TrueMe.tbPrimero.Enabled = TrueMe.tbSiguiente.Enabled = TrueMe.tbUltimo.Enabled = True

End Sub

Private Sub InhabilitarCajas()

Me.txtCodigo.Enabled = FalseMe.txtNombre.Enabled = FalseMe.txtApellidos.Enabled = FalseMe.txtDireccion.Enabled = FalseMe.txtTelefono.Enabled = FalseMe.txtPass.Enabled = FalseMe.txtPassConf.Enabled = FalseMe.foto.Enabled = False

End Sub

Private Sub HabiltarCajas()

Me.txtCodigo.Enabled = TrueMe.txtNombre.Enabled = TrueMe.txtApellidos.Enabled = TrueMe.txtDireccion.Enabled = TrueMe.txtTelefono.Enabled = TrueMe.foto.Enabled = TrueMe.txtPass.Enabled = TrueMe.txtPassConf.Enabled = True

End Sub

Dim miCelda As New DataGridCell()

115

SAP Universidad de Ciencias Com~ciales

Dim strCe1da As StringDim c1iente As New frmC1ientes()miCe1da.RowNumber =

DEmp1eado.oDataSetEmp1eado.Tab1es("Emp1eados").ROws.Count - 1miCe1da.Co1umnNumber oNum = dgVer(miCe1da) + 1

End If

txtCodigo.Text Num

End Sub

Private Sub foto Doub1eC1ick(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles foto.Doub1eC1ick

Se1ectImagen ()End Sub

Private Sub txtNombre KeyPress(ByVal sender As Object,'ByVal e AsSystem.Windows.Forms.KeypressEventArgs) Handles txtNombre.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Hand1ed = False

ElseIf e.KeyChar.IsContro1(e.KeyChar) Thene.Hand1ed = False

ElseIf e.KeyChar.IsSeparator(e.KeyChar) Thene.Hand1ed False

Elsee.Hand1ed True

End IfEnd Sub

Private Sub txtApe11idos_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPresSEventArgs) Handles txtApe11idos.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Hand1ed = False

_ElseIf e.KeyChar.IsContro1(e.KeyChar) Thene.Hand1ed = False

ElseIf e.KeyChar.IsSeparator(e.KeyChar) Thene.Hand1ed False

Elsee.Hand1ed True

End IfEnd Sub

Private Sub txtTe1efono_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtTe1efono.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Hand1ed = False

ElseIf e.KeyChar.IsContro1(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

End Class

ForDlulario Datos de Video Club

Imports System.Data.SqlClient

116

SAP Universidad de Ciencias Comerciales

Public Class frmDatosVideoInherits System.Windows.Forms.Form

Private Sub frmDatosVideo Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

Llenar Cajasload()InhabilitarCajas()InhabilitarBotones()

End Sub

Private Sub Llenar_Cajasload()

DEmpresa.DatosEmpresa()DEmpresa.oDataRowVideo =

DEmpresa.oDataSetVideo.Tables(nEmpresan).Rows(DEmpresa.iPosicFilaVideo)'cargar los controles del formulario con, los valores de los campos del registroMe.txtNombre.Text = DEmpresa.oDataRowVideo(nNombren )Me.txtDireccion.Text = DEmpresa.oDataRowVideo(nDireccionn )Me.txtTelefono.Text DEmpresa.oDataRowVideo(nTelefonon )Me.txtCelularl.Text = DEmpresa.oDataRowVideo(nCelularln )Me.txtCelular2.Text = DEmpresa.oDataRowVideo("Celular2")Me.txtEmail.Text = DEmpresa.oDataRowVideo("Email")

End Sub

Private Sub tbClientes ButtonClick(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.ToolBarButtonClickEventArgs) Handles tbClientes.ButtonClick

If e.Button Is Me.tbModificar Then, llamamos al método que abre el, formulario para abrir un archivoregModificar ( )InhabilitarBotonesl()HabilitarBotones()HabiltarCajas ()

End If

If e.Button Is Me.tbGuardar Then, llamamos al método que abre el, formulario para abrir un archivoregGuardar ( )InhabilitarBotones()HabilitarBotonesl()InhabilitarCajas()

End If

If e.Button Is Me.tbCancelar Then, llamamos al método que abre el, formulario para abrir un archivoLlenar Cajasload()InhabilitarCajas()InhabilitarBotones()HabilitarBotonesl()

End If

If e.Button Is Me.tbSalir Then, llamamos al método que abre el, formulario para abrir un archivo

117

Me.Close ()End If

End Sub

Private Sub InhabilitarBotones()

Me.tbGuardar.Enabled = FalseMe.tbCancelar.Enabled = False

End Sub

Private Sub InhabilitarBotonesl()

Me.tbModificar.Enabled = False

End Sub

Private Sub HabilitarBotones()

Me.tbGuardar.Enabled = TrueMe.tbCancelar.Enabled = True

End Sub

Private Sub HabilitarBotonesl()

Me.tbModificar.Enabled = True

End Sub

Private Sub InhabilitarCajas()

Me.txtNombre.Enabled = FalseMe.txtDireccion.Enabled = FalseMe.txtTelefono.Enabled FalseMe.txtCelularl.Enabled = FalseMe.txtCelular2.Enabled = FalseMe.txtEmail.Enabled = False

End Sub

Private Sub HabiltarCajas()

Me.txtNombre.Enabled = TrueMe.txtDireccion.Enabled = TrueMe.txtTelefono.Enabled TrueMe.txtCelularl.Enabled = TrueMe.txtCelular2.Enabled = TrueMe.txtEmail.Enabled = True

End Sub

Private Sub regModificar()HabilitarBotones()InhabilitarBotonesl()HabiltarCajas ()

End Sub

Unive1'8idad de Cieneias Comerciales

Private Function PrepareStr(ByVal strValue As String) As String

118

SAP

, This function accepts a string and creates a string that can, be used in a SQL statement by adding single quotes around, it and handling.empty values.If strValue.Trim(} = "" Then

Return "NULL"Else

Return "'" & strValue.Trim(} & "'"End If

End Function

Private Sub regGuardar()

Dim EnlaceUpdate As New Conexion(}

Dim iResultado As IntegerDim cmSQL As SqlCommandDim strSQL As String

EnlaceUpdate.Conectar()

TryEnlaceUpdate.Conectar(}• Build update statement to update product table with data, on formostrSQL = "UPDATE Empresa SET" &

" Nombre = " & PrepareStr(txtNombre.Text} &",Direccion = " & PrepareStr(txtDireccion.Text} &",Telefono "& PrepareStr(txtTelefono.Text} &",Celularl = " & PrepareStr(txtCelularl.Text} &",Celular2 = " & PrepareStr(txtCelular2.Text) &", Email = " & PrepareStr (txtEmai1. Text)

EnlaceUpdate.oConexion.Open()cmSQL = New SqlCommand(strSQL, EnlaceUpdate.oConexion)cmSQL.ExecuteNonQuery()

• Close and Clean up objectsEnlaceUpdate.oConexion.Close()cmSQL. Dispose ( )

Catch e As SqlExceptionMsgBox(e.Message~ MsgBoxStyle.Critical, "SQL Error")

Catch e As ExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "General Error"}

End Try

Llenar_Cajasload(}

End Sub

Private Sub txtNombre_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtNombre.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Handled = False

Elself e.KeyChar.IsControl(e.KeyChar} Thene.Handled = False

Elself e.KeyChar.IsSeparator(e.KeyChar} Thene.Handled False

Elsee.Handled True

End If

119

End Sub

SAP Universidad de Cienclas Comerciales

Private Sub txtDireccion KeyPress(ByVal sender As Object, ByVal e Assystem.Windows.Forrns.KeypressEventArgs) Handles txtDireccion.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsSeparator(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtTelefono_KeyPress(ByVal sender As Object, ByVal e AbSystem.Windows.Forrns.KeyPressEventArgs) Handles txtTelefono.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtCelularl_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtCelularl.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtCelular2_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtCelular2.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

End Class

Formulario Categorias

Imports System.Data.SqlClient

Public Class frmCategoriasInherits System.Windows.Forrns.Form

120

SAP

Private Sub Llenar_Cajasload()

Tipo.DatosTipo{)Tipo.oDataRowTipo

Tipo.oDataSetTipo.Tables{"TipodePelicula").Rows(Tipo.iPosicFilaTipo)'cargar los controles del formulario con, los valores de los campos del registroMe.txtTipo.Text = Tipb.oDataRowTipo{"Tipo")Me.txtDiaAlquilei.Text = Tipo.oDataRowTipo{"Dia_Alquiler")Me.txtCobroRetraso.Text = Tipo.oDataRowTipo{"Cobro Retraso")Me.txtPrecioAlquiler.Text = Tipo.oDataRowTipo{"Precio_Alquiler")

End Sub

Private Sub frntCategorias_Load(ByVal sender As System.Object, ByVal e;'AsSystem.EventArgs) Handles MyBase.Load

Llenar_Cajasload()

InhabilitarCajas()InhabilitarBotones{)

End Sub

Private Sub tbClientes_ButtonClick(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.ToolBarButtonClickEventArgs) Handles tbClientes.ButtonClick

If e.Button Is Me.tbPrimero Then, llamamos al método que abre el, formulario para abrir un archivoregPrimero ( )

End If

If e.Button Is Me.tbAnterior Then, llamamos al método que abre el, formulario para abrir un archivoregAnterior ( )

End If

If e.Button ls Me.tbSiguiente Then, llamamos al método que abre el, formulario para abrir un archivoregSiguiente{)

End If

If e.Button ls Me.tbUltimo Then, llamamos al método que abre el, formulario para abrir un archivoregUltimo ()

End If

If e.Button Is Me.tbModificar Then, llamamos al método que abre el, formulario para abrir un archivoregModificar ()InhabilitarBotonesl{)HabilitarBotones{)HabiltarCajas ()

End IfIf e.Button Is Me.tbGuardar Then

, llamamos al método que abre el, formulario para abrir un archivoregGuardar ( )InhabilitarBotones()

121

SAP Universidad·aéCiencias Comerciales

HabilitarBotonesl()InhabilitarCajas()

End IfIf e.Button Is Me.tbCancelar Then

, llamamos al método que abre el, formulario para abrir un archivoLlenar Cajasload()InhabilitarCajas()InhabilitarBotones()HabilitarBotones1()

End IfIf e.Button Is Me.tbSalir Then

, llamamos al método que abre el, formulario para abrir un archivoMe .Close ()

End If

End Sub

Private Sub regSiguiente()

1 si estamos en el último registro,1 no hacer movimientoIf Tipo.iPosicFilaTipo =

(Tipo.oDataSetTipo.Tables("TipodePelicula").Rows.Count - 1) ThenMessageBox.Show("Último Registro")

Else1 incrementar el marcador de registro1 y actualizar los controles con los, datos del registro actualTipo.iPosicFilaTipo += 1Llenar_Cajasload()

End If

End Sub

Private Sub regAnterior()

, si estamos en el primer registro,1 no hacer movimientoIf Tipo.iPosicFilaTipo = O Then

MessageBox. Show ("Primer Registro")Else

, disminuir el marcador de registro, y actualizar los controles con los• datos del registro actualTipo.iPosicFilaTipo -= 1Llenar_Cajasload()

End IfEnd Sub

Private Sub regPrimero()

, establecer el marcador de registro en el primeroTipo.iPosicFilaTipo = OLlenar_Cajasload()MessageBox.Show("Primer Registro")

End Sub

Private Sub regUltimo(), establecer el marcador de registro en el primero

122

SAP Universidad de Ciencias Cqmcrciales

- 1)

, obteniendo el número de filas que contiene la tabla menos unoTipo.iPosicFilaTipo = (Tipo.oDataSetTipo.Tables("TipodePelicula") .Rows.Count

Llenar Cajasload()MessageBox. Show ("Último Registro")

End Sub

Private Sub InhabilitarBotones()

Me.tbGuardar.Enabled = FalseMe.tbCancelar.Enabled = False

End Sub

Private Sub InhabilitarBotones1()

Me.tbModificar.Enabled = False

End Sub

Private Sub HabilitarBotones()

Me.tbGuardar.Enabled = TrueMe.tbCancelar.Enabled = True

End Sub

Private Sub HabilitarBotones1()

Me.tbModificar.Enabled = True

End Sub

Private Sub InhabilitarCajas()

Me.txtTipo.Enabled = FalseMe.txtDiaAlquiler.Enabled = FalseMe.txtCobroRetraso.Enabled = FalseMe.txtPrecioAlquiler.Enabled = False

End Sub

Private Sub HabiltarCajas()

Me.txtTipo.Enabled = TrueMe.txtDiaAlquiler.Enabled = TrueMe.txtCobroRetraso.Enabled = TrueMe.txtPrecioAlquiler.Enabled = True

End Sub

Prívate Sub regModíficar()HabilitarBotones()InhabilitarBotones1()HabiltarCajas ()

End Sub

Prívate Function PrepareStr(ByVal strValue As String) As String, This function accepts a string and creates a string that can, be used in a SQL statement by adding single quotes around• it and handling empty values.1 f strValue. Trim ( ) = "" Then

123

Universidad de Cimeias CoID.~rciales

Return "NULL"Else

Return "'" & strValue.Trim() & "t"End If

End Function

Private Sub regGuardar()

Dim EnlaceUpdate As New Conexione)Dim iResultado As IntegerDim cmSQL As SqlCommandDim strSQL As String

EnlaceUpdate.Conectar()

TryEnlaceUpdate.Conectar(), Build update statement to update product table with data, on formo ,:strSQL = "UPDATE TipodePelicula SET " &

"Precio Alquiler = " & CInt(txtPrecioAlquiler.Text) &",Dia Alquiler = " & CInt(Me.txtDiaAlquiler.Text) &",Cobro Retraso = " & CInt(Me.txtCobroRetraso.Text) &" \>lHERE-Tipo = " & PrepareStr (Me. txtTipo. Text)

EnlaceUpdate.oConexion.Open()cmSQL = New SqlCommand(strSQL, EnlaceUpdate.oConexion)cmSQL.ExecuteNonQuery()

, Close and Clean up objectsEnlaceUpdate.oConexion.Close()cmSQL.Dispose()

Catch e As SqlExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As ExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "General Error")

End Try

Llenar_Cajasload()

End Sub

Private Sub txtDiaAlquiler KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtDiaAlquiler.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtCobroRetraso KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtCobroRetraso.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeYChar.IsControl(e.KeyChar) Thene.Handled = False

124

SAP Universidad de Ciencias Comerciales

EIsee.Handled

End IfEnd SUb

True

Prívate Sub txtPrecioAlquiler KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtPrecioAlquiler.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

Elself e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

End Class

Formulario Buscar Cliente

Publíc Class frmBuscarClientePrincípalInheríts System.Windows.Forms.FormPrívate oDataView As New DataView()

Prívate Sub BuscarCodigo()MostrarClientePorCodígo(Me.txtCodigo.Text)'impresión de los resultados en las cajas de texto

Me.dgBuscaClientes.CaptionText = "Datos del Cliente: " & Me.txtCodígo.TextMe.dgBuscaClientes.DataSource = oDataView

End Sub

Prívate Sub BuscarNombre()

MostrarClientePorNombre()'impresión de los resultados en las cajas de texto

'Me.dgBuscaClientes.CaptionText = "Datos del Cliente: ,. & Me.txtCodigo.TextMe.dgBuscaClientes.DataSource oDataView

End Sub

Private Sub BuscarApellidos()

MostrarClientePorApellidos()'impresión de los resultados en las cajas de texto

'Me.dgBuscaClientes.CaptionText = "Datos del Cliente: " & Me.txtCodigo.TextMe.dgBuscaClientes.DataSource oDataView

End Sub

Private Sub Limpiar_Cajas()

txtCodigo.Text = NothingtxtNombre.Text = NothíngtxtApellidos.Text = Nothíng

End Sub

125

Universidad de Ciencias Come~iales

,---------~-~--rutina buscar a los clientes----------7--------

Public Sub MostrarClientePorCodigo(ByVal Codigo As Integer)Cliente. Datos (), crear un dataview y buscar una fila en la vista, estableciendo un filtro, una vez desconectados, recorrer la tabla del datasetoDataView.Table = Cliente.oDataSet.Tables("Clientes")oDataView.RowFilter = "Codigo = '" & Codigo 6< "'"

End Sub

Public Sub MostrarClientePorNombre()Cliente.Datos()Dim NombreBuscar As New frmBuscarCliente()• crear un dataview y buscar una fila en la vista• estableciendo un filtro

• una vez desconectados, recorrer la tabla del datas~t

oDataView. Table = Cliente. oDataSet. Tables ("Clientes")·oDataView.RowFilter = "Nombre like '" & txtNombre.Text & "%'"'.DefaultView.RowFilter = "ProductName like ." & txtFilter.Text & "%'"

End Sub

Public Sub MostrarClientePorApellidos()Cliente.Datos()Dim ApellidoBuscar As New frmBuscarCliente(), crear un dataview y buscar una fila en la vista, estableciendo un filtro• una vez desconectados, recorrer la tabla del datasetoDataView.Table = Cliente.oDataSet.Tables("Cliente~")

oDataView.RowFilter = "Apellidos like '" 6< txtApellidos.Text & "%'"End Sub

Private Sub btnAceptar_Click_I(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnAceptar.Click

'invocación al método de buscar al empleado

"" ThenIf txtNombre.Text = "" And txtApellidos.Text "n And Not txtCodigo.Text

""

""

BuscarCodigo ( )Limpiar_ Caj as ( )

Elself txtCodigo.TextThen

BuscarNombre ( )Limpiar Caj as ( )

Elself txtCodigo.TextThen

"" And txtApellidos.Text "" And Not txtNombre.Text

"" And txtNombre.Text "" And Not txtApellidos.Text

BuscarApellidos()Limpiar Caj as ( )

Elself txtCodigo.Text = "" And txtNombre.Text = "" And txtApellidos.Text ="n Then

MsgBox("Debe Realizar la Busqueda por Codigo, Nombre o Apellidos lleneuna de las cajas de texto")

End IfEnd Sub

Private Sub btnCancelar Click l(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnCancelar.Click

Me.Close ()End Sub

126

Universidad de Ciencias Comerciales

Private Sub txtCodiqoKeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeypressEventArqs) Handles txtCodiqo.KeyPress

Ife.KeyChar.IsDiqit(e.KeyChar) Thene.Handled = False

Elself e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

EIsee.Handled True

End IfEnd Sub

Private Sub txtNombre KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeypressEventArqs) Handles txtNorobre.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Handled = False

EIself e.KeyChar.IsControl(e.KeyChar) Thene.Handled = False

EIself e.KeyChar.IsSeparator(e.KeyChar) Thene.Handled False

EIsee.Handled True

End IfEnd Sub

Private Sub txtApellidos_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArqs) Handles txtApellidos.KeyPress

If e.KeyChar.IsLetter(e.KeyChar) Thene.Handled = False

EIseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled = False

EIseIf e.KeyChar.IsSeparator(e.KeyChar) Thene.Handled False

EIsee.Handled True

End IfEnd Sub

End Class

Formulario Buscar Pelicula

Imports System.Data.SqlClient

Public Class frmBuscarPeliculaInherits System.Windows.Forms.FormPrivate oDataView As New DataView()

Private Sub BuscarCodiqo()MostrarPeliculaPorCodiqo(Me.txtCodiqo.Text)'impresión de los resultados en las cajas de texto

Me.dqBuscaPeliculas.CaptionText = "Datos de Encontrados de Pelicula "Me.dqBuscaPeliculas.DataSource = oDataView

End Sub

127

• !!!!!!!!!!S!!AP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U!!!!!!!!m!!·v!!e!!r8!!··!!id!!&!!d!!d!!e!!!!!!Ci!!"en!!·.!!.C!!i!!B8!!'!!C&!!'!!!m!!e!!r!!C!!ial!!!!!!es!!'!!!!

Private Sub BuscarNombre{)

MostrarPeliculaPorNombre()'impresión de los resultados en las cajas de texto

Me.dgBuscaPeliculas.CaptionText = nDatos de Encontrados de Pelicula "Me.dgBuscaPeliculas.DataSource = oDataView

End Sub

Private Sub Limpiar Cajas()txtCodigo.Text - NothingtxtNombre.Text = Nothing

End Sub

,--------------rutina buscar Peliculas-------------------

Public Sub MostrarPeliculaPorCodigo(ByVal Codigo As In~~ger)

DataGridBuscaPelicula.DatosBusqueda(), crear un dataview y buscar una fila en la vista

, estableciendo un filtro, una vez desconectados, recorrer la tabla del dataset

oDataView.Table =DataGridBuscaPelicula.oDataSetBusquedaPelicula.Tables("Peliculas")

oDataView.RowFilter nCod_Pelicula = on & Codigo & nonEnd Sub

Public Sub MostrarPeliculaPorNombre()DataGridBuscaPelicula.DatosBusqueda(), crear un dataview y buscar una fila en la vista, estableciendo un filtro, una vez desconectados, recorrer la tabla del datasetoDataView.Table =

DataGridBuscaPelicula.oDataSetBusquedaPelicula.Tables(npeliculas")oDataView.RowFilter "Nombre_Pelicula like ,n & txtNombre.Text & n%'"

End Sub

Private Sub btnAceptar Click l(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnAceptar.Click

'invocación al método de buscar al empleado

If txtNombre.Text = "" And Not txtCodigo.Text "" ThenBuscarCodigo ( )Limpiar Caj as ( )

Elself txtCodigo.Text "n And Not txtNombre.Text nn ThenBuscarNombre ( )Limpiar Cajas ()

Elself txtCodigo.Text = "n And txtNombre.Text = "" ThenMsgBox("Debe Realizar la Busqueda por Codigo, Nombre. Llene una de las

cajas de texto")End If

End Sub

Private Sub btnCancelar_Click_l(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnCancelar.Click

Me. Close ()End Sub

128

SllP

Then

Private Sub txtCodigo KeyPress(ByVal sender As Object, ByVal e Assystem.Windows.Forms.KeypresSEventArgs) Handles txtCodigo.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub dgBuscaPeliculas DoubleClick(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles dgBuscaPeliculas.DoubleClick

If Not IsNothing(dgBuscaPeliculas.CurrentRowIndex) ThenDim miCelda As New DataGridCell()Dim strCelda As StringDim pelicula As New frmPeliculas()miCelda.RowNumber = dgBuscaPeliculas.CurrentRowlndexmiCelda.ColumnNumber = OstrCelda = miCelda.ToStringval2 = dgBuscaPeliculas(miCelda)

pelicula. Show ( )Me .Close ()

End If

End Sub

Private Sub frmBuscarPelicula Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

End SubEnd Class

Forrnu-¡ario Ingresar Codigo de Alquiler

Public Class frmIngresarCodigoInherits System.Windows.Forms.FormDim iPosicFilaActual As Integer

Private Sub frmJngresarCodigo Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

Cliente. Datos ()End Sub

Private Sub BuscarCodigo()BuscaCodigo.MostrarClientePorCodigo (Me. txtCodigoCliente.Text)

End Sub

Private Sub btnAceptarl_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnAceptarl.Click

Jf Me.txtCodigoCliente.Text = Nothing ThenMsgBox("Introduzca el Codigo del Cliente")

ElseMe.iPosicFilaActual Me.txtCodigoCliente.TextBuscarCodigo ( )Jf iPosicFilaActual > Cliente.oDataSet.Tables("Clientes").Rows.Count

129

SAP Unl.ersidad de (l¡en~iJ18 Comerciales

MsgBox("El Codigo del Cliente que Ingreso no Existe")ElseIf iPosicFilaActual = BuscaCodigo.CodigoEncontrado Then

Dim Aquilar As New frmAIquiler ()Aquilar. Show ( )

End IfMe. Close ()

End IfEnd Sub

Private Sub btnCancelarl Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnCancelarl.Click

Me. Close ()End Sub

Private Sub txtCodigoCliente KeyPress(ByVal sender As Object, ByVai e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtCodigoCliente.KeYPresS

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End If

ForDlulario ingresar Codigo Devolucion

Public Class frmIngresarDevolucionInherits System.Windows.Forms.FormDim iPosicFilaActual As Integer

Private Sub frmIngresarDevolucion_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

Cliente. Datos ()End Sub

Private Sub BuscarCodigo()BuscaCodigo.MostrarClientePorCodigo(Me.txtCodigoCliente.Text)

End Sub

Private Sub btnAceptar Click l(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnAceptar.Click

If Me.txtCodigoCliente.Text = Nothing ThenMsgBox("Introduzca el Codigo del Cliente")

Elseval? = Me.txtCodigoCliente.Text'Me.iPosicFilaActual = Me.txtCodigoCliente.TextBuscarCodigo ( )If val? > Cliente.oDataSet.Tables("Clientes") .Rows.Count Then

MsgBox("El Codigo del Cliente que Ingreso no Existe")val? = O

ElseIf val? = BuscaCodigo.CodigoEncontrado ThenDim Devolver As New frmDevolucion()Devolver. Show ( )Me.Close ()

End IfEnd If

End Sub

130

SAP Universidad de'éienéiu Cct....ereiales

Prívate Sub btnCancelarClick l(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnCancelar.Click

Me.Close ()End Sub

Private Sub txtCodigoCliente KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forrns.KeyPressEventArgs) Handles txtCodigoCliente.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = ~alse

ElseIf e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

End Class

Formulario Alquiler

Imports System.Data.SqIClientImports System.IO

Public Class frmAlquilerInherits System.Windows.Forms.FormDim oDataRow As DataRowDim oDataRowPelicula As DataRowDim oDataRowTipo As DataRowDim iPosicFilaActual As IntegerDim iPosicFilaActualPelicula As IntegerDim iPosicFilaActualAlquiler As IntegerDim oDataView As New DataView()Dim suma As Integer = ODim oDataRowAlquiler As DataRow

Private Sub frmAlquiler Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MYBase.Load

If valS = 1 ThenvalS = OLlenar CajasCliente()Peliculas. DatosPelicula ()Limpiar Label ( )DesActivarbtnAlquilar()DesActivarbtnCambiaPrecio()LimpiarCodigo ( )BotonActivar ( )DateDesActivar ( )SubTotal ()IblTotal.Text = sumaMe.txtDateAlquiler.Value = NowMe.txtDateDevol.Value = NowVer Cajas ()

ElseIf valS = O ThenLlenar CajasCliente()Peliculas.DatosPelicula()Limpiar Label ( )DesActivarbtnAlquilar()DesActivarbtnCambiaPrecio()LimpiarCodigo ( )BotonDesActivar()

131

SAl- Universidad de Ciencias Comerciales

DateDesActivar()lblTotal.Text = sumaMe.txtDateAlquiler.Value = NowMe.txtDateDevol.Value = Nowver_cajas ()

End IfEnd Sub

Private Sub Ver Cajas()If va13 = O-Then

'MostrarCodigoEncontrado()Else

MostrarCodigoEncontrado2()Llenar_CajasClienteReload()

End IfEnd Sub

Public Sub Llenar_CajasCliente()

Cliente.Datos()oDataRow =

Cliente.oDataSet.Tables("Clientes").Rows(BuscaCodigo.CodigoEncontrado - 1)'cargar los controles del formulario con, los valores de los campos del registroMe.txtCodigoCliente.Text = oDataRow("Codigo")Me.txtNombre.Text = oDataRow("Nombre")Me.txtApellidos.Text = oDataRow("Apellidos")Me.txtCedula.Text = oDataRow("Cedula")Me.txtDireccion.Text = oDataRow("Direccion")Me.txtTelefono.Text = oDataRow("Telefono")

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes").Rows(BuscaCodigo.CodigoEncontrado ­1) ("Foto"») Then

Dim arrPicture () As Byte = CType (oDataRow("Foto"), Byte (»Dim FotoCarga As New MemoryStream(arrPicture)

With Foto.Image = Image.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.StretchImage

End With

FotoCarga.Close()

ElseWith Me. Foto

.Image = Nothing

.SizeMode = PictureBoxSizeMode.StretchImageEnd With

End If

If(IsDBNull(Cliente.oDataSet.Tables("Clientes").RowS(BuscaCodigo.CodigoEncontrado­1) ("Foto"») Then

Dim path As String = " .. \Imagen\logo.bmp"

With Foto.Image = Image.FromFile(path).SizeMode = PictureBoxSizeMode.StretchImage

End WithEnd If

132

SllP Universidad de Ciencias Comerciales

End Sub

Public Sub Llenar_CajasClienteReload()

Cliente. Datos ( )oDataRow = Cliente.oDataSet.Tables("Clientes").Rows(va14 - 1)'cargar los controles del formulario con, los valores de los campos del registroMe.txtCodigoCliente.Text = oDataRow("Codigo")Me.txtNombre.Text = oDataRow("Nombre")Me.txtApellidos.Text = oDataRow("Apellidos")Me.txtCedula.Text = oDataRow("Cedula")Me.txtDireccion.Text = oDataRow("Direccion"}Me.txtTelefono.Text = oDataRow("Telefono")

If Not (IsDBNull (Cliente. oDataSet. Tables ("Clientes") ,~Rows (val4 ­1) ("Foto") » Then

Dim arrPicture() As Byte = CType(oDataRow("Foto"), Byte(»Dim FotoCarga As New MemoryStream(arrPicture)

With Foto.Image = Image.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.Stretchlmage

End with

FotoCarga.Close()

ElseWith Me. Foto

.Image = Nothing

.SizeMode = PictureBoxSizeMode.StretchlmageEnd With

End If

ThenIf (ISDBNull(Cliente.oDataSet.Tables("Clientes").Rows(val4 - 1) ("Foto"»)

Dim path As String = "C:\SistemaDVD\VideoClub\Imagen\logo.bmp"

With Foto.Image = Image.FromFile(path).SizeMode = PictureBoxSizeMode.StretchImage

End WithEnd If

End Sub

'rutina para encontrar las peliculas por codigo de pelicula

Private Sub btnAceptar Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnAceptar.Click

If Me.txtBuscarCodigo.Text = Nothing ThentxtPrecioPelicula.Text = Me.txtCambiaPrecio.TextMe.txtCambiaPrecio.Text = NothingDesActivarbtnCambiaPrecio()ActivarbtnAlquilar()DesActivartxtCambiaPrecio(}

ElseMe.iPosicFilaActualPelicula Me.txtBuscarCodigo.Text

133

SAP UDiversidadde Cienci8lif Cornerejales

If iPosicFilaActualPelicula <=Peliculas.oDataSetPelicula.Tables("Peliculas").Rows.Count - 1 Then

BuscarCodigoPelicula()Me.txtBuscarCodigo.Text = Nothing

End IfIf iPosicFilaActualPelicula >=

Peliculas.oDataSetPelicula.Tables("Peliculas").Rows.Count + 1 ThenMSgBox("El Codogo de la Peliculaque Ingreso no Existe")Me.txtBuscarCodigo.Text = Nothing

Elself iPosicFilaActualPelicula = BuscaCodigo.CodigoEncontradoPeliculaThen

MostrarCodigoEncontrado()Me.txtBuscarCodigo.Text Nothing

End IfEnd If

End Sub

Private Sub BuscarCodigoPelicula()BuscaCodigo.MostrarPeliculaporCodigo(Me.txtBuscarCodigo.Text)

End Sub

Private Sub MostrarCodigoEncontrado2()

Peliculas.DatosPelicula()oDataRowPelicula = Peliculas.oDataSetPelicula.Tables("Peliculas").Rows(va13

- 1)

oDataRowTipo = oDataRowPelicula.GetParentRow("Tipode Peliculas")Me.txtCodigoPelicula.Text oDataRowPelicula("Cod Pelicula il )

Me.txtNombrePelicula.Text = oDataRowpelicula("Nombre_pelicula")

If oDataRowPelicula("Tipo pelicula") = 1 ThenMe.txtPrecioPelicula.Text = oDataRowTipo("Precio Alquiler")Me.txtTipoPelicula.Text = oDataRowTipo("Tipo") ­Me.txtDateDevol.Value = DateTime.Now.AddDays(2)

Elself oDataRowPelicula("Tipo pelicula") = 2 ThenMe.txtPrecioPelicula.Text-= oDataRowTipo("Precio Alquiler")Me.txtTipoPelicula.Text = oDataRowTipo("Tipo") ­Me.txtDateDevol.Value = DateTime.Now.AddDays(l)

End If

If oDataRowPelicula("Cod Estado") 1 ThenActivarbtnAlquil~r()­ActivarbtnCambiaPrecio()DateActivar ( )

Elself oDataRowPelicula("Cod Estado") = 2 ThenMsgBox("La Pelicula no esta Disponible")DesActivarbtnAlquilar()DesActivarbtnCambiaPrecio()DateDesActivar ( )

Elself oDataRowPelicula("Cod Estado") = 3 ThenMsgBox("La Pelicula no esta Disponible")DesActivarbtnAlquilar()DesActivarbtnCambiaPrecio()DateDesActivar()

Elself oDataRowPelicula("Cod Estado") = 4 ThenMsgBox("La Pelicula no esta Disponible")DesActivarbtnAlquilar()DesActivarbtnCambiaPrecio()DateDesActivar()

End If

134

SAP

1 Then

If Not (ISDBNull(Peliculas.oDataSetpelicula.Tables("peliculas").Rows(va131) ("Foto"») Then

Dim arrPicture() As Byte = CType(oDataRowPelicula("FotO"), Byte(»Dim FotoCarga As New MemoryStream(arrPicture)

With Imagen.Image = Image.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.Stretchlmage

End With

FotoCarga.Close()

ElseWith Me. Imagen

.Image = Nothing

.SizeMode = PictureBoxSizeMode.StretchlmagéEnd With

End If

If (IsDBNull (Peliculas.oDataSetPelicula.Tables ("Peliculas") •Rows (va13 ­1) ("Foto") » Then

Dim path As String = "C:\SistemaDVD\VideoClub\Imagen\logo.bmp"

With Imagen.Image = Image.FromFile(path).SizeMode = PictureBoxSizeMode.Stretchlmage

End WithEnd If

End Sub

Private Sub MostrarCodigoEncontrado()

Peliculas.DatosPelicula()oDataRowPelicula =

Peliculas.oDataSetPelicula.Tables("Peliculas") . Rows (BuscaCodigo.CodigoEncontradoPelicula - 1)

oDataRowTipo = oDataRowPelicula.GetParentRow("Tipode Peliculas")Me.txtCodigoPelicula.Text oDataRowPelicula("Cod Pelicula")Me.txtNombrePelicula.Text = oDataRowpelicula("Nombre_PelicUla")

If oDataRowPelicula("Tipoyelicula") = 1 ThenMe.txtPrecioPelicula.Text = oDataRowTipo("Precio Alquiler")Me.txtTipoPelicula.Text = oDataRowTipo("Tipo") ­Me.txtDateDevol.Text = DateTime.Now.AddDays(2)

ElseIf oDataRowPelicula("Tipo pelicula") = 2 ThenMe.txtPreciopelicula.Text-= oDataRowTipo("Precio Alquiler")Me.txtTipoPelicula.Text = oDataRowTipo("Tipo") ­Me.txtDateDevol.Text = DateTime.Now.AddDays(1)

End If

If oDataRowPelicula("Cod_Estado")ActivarbtnAlquilar()ActivarbtnCambiaPrecio()DateActivar ()

ElseIf oDataRowPelicula("Cod Estado") = 2 ThenMsgBox("La Pelicula no esta Disponible")DesActivarbtnAlquilar()DesActivarbtnCambiaPrecio()DateDesActivar ( )

ElseIf oDataRowPelicula("Cod Estado") = 3 ThenMsgBox("La Pelicula no esta Disponible")

135

SAP Univel'81dadde Cienei.-s Comerciales

DesActivarbtnAlquilar()DesActivarbtnCambiaPrecio()DateDesActivar()

ElseIf oDataRowPelicula("Cod Estado") = 4 ThenMsgBox("La Pelicula no esta Disponible")DesActivarbtnAlquilar()DesActivarbtnCambiaPrecio()DateDesActivar ()

End If

If Not(IsDBNull (Peliculas.oDataSetPelicula.Tables ("Peliculas").Rows(BuscaCodigo.CodigoEncontradoPelicula - 1) ("Foto"») Then

Dim arrPicture () As Byte = CType (oDataRowPelicula ("Foto"), Byte () )Dim FotoCarga As New MemoryStream(arrPicture)

with Imagen.Image = Image.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.StretchImage

End With

FotoCarga.Close()

ElseWith Me. Imagen

.Image = Nothing

.SizeMode = PictureBoxSizeMode.StretchImageEnd With

End If

If(IsDBNull (Peliculas.oDataSetPelicula.Tables ("Peliculas").Rows(BuscaCodigo.CodigoEncontradoPelicula - 1) ("Foto"») Then

Dim path As String = "C:\SistemaDVD\VideoClub\Imagen\logo.bmp"

With Imagen.Image = Image.FromFile(path).SizeMode = PictureBoxSizeMode.StretchImage

End WithEnd If

End Sub

Private Sub LimpiarCodigo()Me.txtBuscarCodigo.Text

End SubNothing

Private Sub ActivarbtnAlquilar()btnPasar.Enabled = True

End Sub

Private Sub ActivarbtnCambiaPrecio()Me.btnCambiaPrecio.Enabled = True

End Sub

Private Sub DesActivarbtnCambiaPrecio()Me.btnCambiaPrecio.Enabled = False

End Sub

Private Sub ActivartxtCambiaPrecio()Me.txtCambiaPrecio.Visible = True

End Sub

136

SAP Universidad de Ciencias Comerciales

Private Sub DesActivartxtCambiaPrecio()Me.txtCambiaPrecio.Visible = False

End Sub

Private Sub DesActivarbtnAlquilar()btnPasar.Enabled = False

End Sub

Private Sub BotonActivar()btnVerLista.Enabled = TruebtnCompletar.Enabled = TruebtnCancelar.Enabled = True

End Sub

Private Sub BotonDesActivar()btnVerLista.Enabled = FalsebtnCompletar.Enabled = FalsebtnCancelar.Enabled = False

End Sub

Private Sub DateDesActivar()Me.txtDateAlquiler.Enabled = FalseMe.txtDateDevol.Enabled = False

End Sub

Private Sub DateActivar()Me.txtDateDevol.Enabled

End SubTrue

Private Sub btnVerLista Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnVerLista.Click

Dim ver As New frmVerListado()ver.Show ()Me .Close ()

End Sub

Prívate Sub btnPasar Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnPasar.Click

Peliculas. DatosPelicula ()oDataRowPelicula =

Peliculas.oDataSetpelicula.Tables("Peliculas") . Rows (txtCodigoPelicula.Text - 1)oDataRowTipo = oDataRowPelicula.GetparentRow("Tipode_Peliculas")

DesActivarbtnAlquilar()BotonActivar ( )DesActivarbtnCambiaPrecio()valS = 1

Dim cmSQL As SqlCoromandDim strSQL As StringDim intRowsAffected As IntegerDim EnlaceAlquiler As New Conexione)

Try

EnlaceAlquiler.Conectar()I Sentencia para ingresar un alquiler a la tablastrSQL = "INSERT INTO TempAlquiler VALUES (" &

txtCodigoPelicula.Text & "," &txtCodigoCliente.Text & ",'" &txtDateAlquiler.Text & "','" &txtDateDevol.Text & "'," &

137

txtPrecioPelicula.Text & ")"

EnlaceAlquiler.oConexion.Open()cmSQL = NéwSqlCommand(strSQL, EnlaceAlquiler.oConexion)cmSQL. ExecuteNonQuery ()EnlaceAlquiler.oConexion.Close()cmSQL. Dispose ( )

Catch Exp As SqlExceptionMsgBox(Exp.Message, MsgBoxStyle.Critical, "SQL Error")

Catch Exp As ExceptionMsgBox(Exp.Message, MsgBoxStyle.Critical, "General Error")

End Try

CambiaEstado C)Limpiar Label C)SubTotai ()

End Sub

Prívate Sub SubTotalC)

Alquileres.DatosAlquileresC)iPosicFilaActualAlquiler = Osuma = ODo Until iPosiCFilaActualAlquiler

Alquileres.oDataSetAlquiler.TablesC"TempAlquiler") .Rows.CountoDataRowAlquiler =

Alquileres.oDataSetAlquiler.TablesC"TempAlquiler") .RowsCiPosicFilaActualAlquiler)suma += oDataRowAlquiler("PrecioAlquiler")CambiaPos ( )

Loop

lblTotal.TextEnd_Sub

suma

Private Sub CambiaPosC)

iPosicFilaActualAlquiler += 1

End Sub

Private Sub CalcularTotal()

Me.Close C)Dim Pagar As New fr.mTotal()Pagar. Show ( )

End Sub

Private Sub CambiaEstadoC)

Oim cmSQL As SqlCommandOim strSQL As StringOim Estado As Integer 2Dim EnlaceAlquiler As New ConexionC)

TryEnlaceAlquiler.Conectar(), Build update statement to update product table with data

138

SAP Universidad ele Ciencias Comerciales

, on formostrSQL = "UPDATE Peliculas SET" &

" Cod Estado = " & Estado & " " &" WHERE Cod_Pelicula = " & txtCodigoPelicula.Text

EnlaceAlquiler.oConexion.Open()cmSQL = New SqlCommand(strSQL, EnlaceAlquiler.oConexion)cmSQL.ExecuteNonQuery()

, Clase and Clean up objectsEnlaceAlquiler.oConexion.Close()cmSQL.Dispose()

Catch e As SqlExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As ExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "General Error")

End TryEnd Sub

Private Sub CambiaEstado2()

Dim cmSQL As SqlCommandDim strSQL As StringDim Estado As Integer = 1Dim oDataRowAlquiler As DataRow

TryAlquileres.DatosAlquileres()oDataRowAlquiler =

Alquileres.oDataSetAlquiler.Tables("TempAlquiler").Rows(Alquileres.iPosicFilaActualAlquiler)

For Each oDataRowAlquiler InAlquileres.oDataSetAlquiler.Tables("TempAlquiler") .Rows

strSQL = "UPDATE Peliculas SET" &" Cod Estado = " & Estado & "" &" WHERE Cod_Pelicula = " & oDataRowAlquiler("CodPelicula")

Alquileres.EnlaceAlquiler.oConexion.Open()cmSQL = New SqlCommand(strSQL, Alquileres. EnlaceAlquiler. oConexion)cmSQL.ExecuteNonQuery()Alquileres.EnlaceAlquiler.oConexion.Close()cmSQL.Dispose()

Next

Catch e As SqlExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As ExceptionMsgBox(e.Message, MsgBoxStyle.Critical, "General Error")

End TryAlquilar. regEliminar ()

End SubPrivate Sub btnCompletar_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnCompletar.ClickCalcularTotal ( )

End Sub

139

• !!!!!!S!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U!!!!m!!'v!!e!!r8!!·!!id!!a!!d!!!!de!!·!!Ci!!'en!!.!!C!!i!!88!!!!Co!!!!Dl!!!!erc!!!!i!!aI.!!e8!!!!!!

Private Sub btnCancelar Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnCancelar.Click

CambiaEstado2 ( )suma = OlblTotal.Text suma

End Sub

Private Sub ViewEstado()Dim FechaHoy As DateFechaHoy = Now

End Sub',i

Private Sub Limpiar_Label()

txtCodigoPelicula.Text = NothingtxtPrecioPelicula.Text = NothingMe.txtNombrePelicula.Text = NothingMe.txtTipoPelicula.Text = Nothing

End Sub

Private Sub btnCambiaPrecio Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnCambiaPrecio.Click

Dim r As Integer• llamarnos al método que abre el• formulario para abrir un archivor = MsgBox("¿Desea Cambiar el Precio a la Pelicula?", vbYesNo)If r <> vbYes Then Exit SubActivartxtCambiaPrecio()DesActivarbtnAlquilar()BotonDesActivar()

End Sub

Private Sub btnSalir Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnSalir.Click

'CambiaEstado2()'Alquilar. regEliminar ()suma = Ova14 = OMe. Close ()

End Sub

Private Sub txtBuscarCodigo KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtBuscarCodigo.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

Elself e.KeyChar.IsControl(e.KeyChar) Thene.Handled False

Elsee.Handled True

End IfEnd Sub

Private Sub txtCambiaPrecio_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtCambiaprecio.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Thene.Handled = False

Elself e.KeyChar.IsControl(e.KeyChar) Thene.Handled = False

Else

140

e.HandledEnd If

End Sub

True

Universidad de Ciencias Comerciales

Prívate Sub Button3 Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs} Handles Button3.Click

Dim a As New frmBuscarPeliculaAlquíler(}a.Show(}val4 = Oval4 = Me.txtCodigoClíente.TextMe .Close ()

End SubEnd Class

Formulario Devolucion

Imports System.Data.SqlClientImports System.IO

Public Class frmDevolucion

Inherits System.Windows.Forms.FormDim oDataRow As DataRowDim oDataRowPelicula As DataRowDim iPosicFilaActual As IntegerDim iPosicFilaActualPelícula As IntegerDim i As IntegerDim oDataView As New DataView(}Dim codigo As IntegerDim j As Integer

Private Sub frmDevolucíon Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs} Handles MyBase.Load

~codigo = va17VerDatosCodigo ()

End Sub

Public Sub Llenar_CajasCliente(}

Cliente.Datos(}oDataRow =

Cliente.oDataSet.Tables("Clientes"}.Rows(BuscaCodigo.CodigoEncontrado - l}'cargar los controles del formulario con• los valores de los campos del registroMe.txtCodigoCliente.Text = oDataRow("Codigo")Me.txtNombre.Text = oDataRow("Nombre")Me.txtApellidos.Text = oDataRow("Apellidos"}Me.txtCedula.Text = oDataRow("Cedula"}Me.txtDireccion.Text = oDataRow("Direccion")Me.txtTelefono.Text = oDataRow("Telefono")

If Not(IsDBNull(Cliente.oDataSet.Tables("Clientes"}.Rows(BuscaCodigo.CodigoEncontrado­l) ("Foto"}}) Then

Dim arrPicture(} As Byte = CType(oDataRow("Foto"}, Byte(}}Dim FotoCarga As New MemoryStream(arrPicture}

With Foto.Image = lmage.FromStream(FotoCarga).SizeMode = PictureBoxSizeMode.Stretchlmage

141

SAP

End With

FotoCarga.Close()

Universidad de Ciencias Comerciales

ElseWith Me. Foto

.Irnage = Nothing

.SizeMode = PictureBoxSizeMode.StretchlrnageEnd With

End If

If(IsDBNull(Cliente.oDataSet.Tables("Clientes") •Rows (BuscaCodigo.CodigoEncontrado ­1) ("Foto"») Then

Dirn path As String "C:\SisternaDVD\VideoClub\Irnagen\logo.brnp"

With Foto.Irnage = Irnage.FrornFile(path).SizeMode = PictureBoxSizeMode.Stretchlrnage

End WithEnd IfviewDevolver ()

End Sub

Private Sub VerDatosCodigo()

ViewDevolucion.DatosBusqueda()oDataView.Table = ViewDevolucion. oDataSetPeliculaDevolver. Tables ("Alquiler")oDataView.RowFilter = "CodCliente = '" & val? & "'"If oDataView.RowFilter = ("CodCliente = '" & val? & "''') Then

, j = codigoLlenar CajasCliente()viewDevolver ( )

ElseMsgBox("EI Cliente no tiene Peliculas Por Devolver")Me. Close ()

End If

End Sub

Private Sub viewDevolver()

, VerDatosDataGrid()dgDevolver.DataSource

End Sub

oDataView

Private Sub Devolver()Dirn r As Integer, llamamos al método que abre el, formulario para abrir un archivor = MsgBox("¿Desea Efectuar La devolución de la Pelicula?", vbYesNo)If r <> vbYes Then Exit Subi = Me.dgDevolver.CurrentRowlndexCani.biaEstado ( )regElirninar ()VerDatosCodigo()'viewDevolver ( )

End Sub

Private Sub regElirninar()

142

SAP

Dim oDataRowDevolucion As DataRowDevoluciOn. DatosDevOlucion()oDataRo~Devolucion"= '. .

Devolucion.oDataSetDevolucion.Tables("Alquiler").Rows(i)oDataRowDevolución.Delete() , borrar la fila, mediante el método GetChanges(), obtenemos una tabla, con las filas borradasDirn oTablaBorrados As DataTableoTablaBorrados =

Devolucion. oDataSetDevolucion. Tables ("Alquiler") •GetChanges (DataRowState.Deleted)

, actualizar en el almacén de datos las filas borradasDevolucion.oDataAdapterDevolucion.Update(oTablaBorrados)

, confirmar los cambios realizadosDevolucion.oDataSetDevolucion.Tables( I Alquiler") .AC:ceptChanges()

End Sub

Private Sub CambiaEstado()

Dim cmSQL As SqlCoromandDim strSQL As StringDim intRowsAffected As IntegerDim Estado As Integer = 1Dim EnlaceAlquiler As New Conexion ()...Dim oDataRowDevolucion As DataRowTry

Devolucion. DatosDevolucion ()oDataRowDevolucion =

Devolucion.oDataSetDevolucion.Tables("Alquiler").Rows(i), on formostrSQL = "UPDATE Peliculas SET" &

" Cod Estado = " & Estado-& "" &"WHERE Cod_Pelicula = 11 & oDataRowDevolucion("CodPelicula")

Alquileres.EnlaceAlquiler.oConexion.Open()cmSQL = New SqlCornmand(strSQL, Alquileres.EnlaceAlquiler.oConexion)cmSQL.ExecuteNonQuery()

, Clase and Clean up objectsAlquileres.EnlaceAlquiler.oConexion.Close()cmSQL.Dispose()

Catch e As SqlException'MsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As Exception'MsgBox(e.Message, MsgBoxStyle.Critical, "General Error")

End TryEnd Sub

Private Sub btnAceptar Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnAceptar.CIick

Me .Close ()End Sub

Private Sub btnDevolucion Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnDevolucion.Click

Devolver ()End Sub

End CIass

143

/UniversiCladdeCiencias Comereiales

Formulario Ver Lista de Peliculas a Alquilar

ímports System.Data.SqIClient

Public Class frmVerListadoInherits System.Windows.Forms.FormDim i As Integer

Private Sub regEliminar()Dim oDataRowAlquiler As DataRow

Alquileres.DatosAlquileres()oDataRowAlquiler =

Alquileres.oDataSetAlquiler.Tables(nTempAlquilern).Rows(i)oDataRowAlquiler.Delete() , borrar la fila, mediante el método GetChanges(), obtenemos una tabla, con las filas borradasDim oTablaBorrados As DataTableoTablaBorrados =

Alquileres.oDataSetAlquiler.Tables(nTempAlquilern).GetChanges(DataRowState.Deleted)

, actualizar en el almacén de datos las filas borradasAlquileres.oDataAdapterAlquiler.Update(oTablaBorrados)

, confirmar los cambios realizadosAlquileres.oDataSetAlquiler.Tables(nTempAlquilern) .AcceptChanges()

End Sub

Private Sub frmVerListado_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

CargarDatos ( )End Sub

Private Sub CargarDatos()

DataGridAlquiler.DatosBusqueda()'Me.dgAlquilerPeliculas.CaptionText "Datos de la Pelicula: " &

Me.txtBuscarCodigo.TextMe.dgAlquilerPeliculas.DataSource =

DataGridAlquiler.oDataSetPeliculaAlquilarVistaMe.dgAlquilerPeliculas.DataMember = nTempAlquilern

End Sub

Private Sub btnAceptar Click l(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnAceptar.Click

Me .Close ()Dim atras As New frmAlquiler()atras. Show ()

End Sub

Private Sub btnEliminar Click l(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnElimInar.Click

Dim r As Integer, llamamos al método que abre el, formulario para abrir un archivor = MsgBox("¿Desea Borrar el Registro?", vbYesNo, "Atencion")If r <> vbYes Then Exit Subi = Me.dgAlquilerPeliculas.CurrentRowIndexCambiaEstado ()regEliminar ( )

144

SAP Universidad de Ciencias Comerciales

CargarDatos ()End Sub

Private Sub CambiaEstado()

Dim cmSQL As SqlCornmandDim strSQL As StringDim Estado As Integer = 1Dim oDataRowAlquiler As DataRowTry

Alquileres.DatosAlquileres()oDataRowAlquiler =

Alquileres.oDataSetAlquiler.Tables("TempAlquiler").Rows(i)

, Build update statement to update product table with data, on formostrSQL = "UPDATE Peliculas SET" &

.. Cod Estado = .. & Estado & .... &

.. WHERE Cod_ Pelicula = .. & oDataRowAlqtiiler ("COdPEdicula")

Alquileres.EnlaceAlquiler.oConexion.Open()cmSQL = New SqlCornmand(strSQL, Alquileres.EnlaceAlquiler.oConexion)cmSQL.ExecuteNonQuery()

, Close and Clean up objectsAlquileres.EnlaceAlquiler.oConexion.Close()cmSQL.Dispose()

Catch e As SqlException'MsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As Exception'MsgBox(e.Message, MsgBoxStyle.Critical, "General Error")

End Try

End SubEnd Class

Formulario Total

Public Class frmTotalInherits System.Windows.Forms.FormDim suma As IntegerDim iPosicFilaActualAlquiler As Integer

Private Sub frmTotal_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

SubTotal ()lblTotal.Text

End Subsuma

Private Sub SubTotal()Dim oDataRowAlquiler As DataRowAlquileres.DatosAlquileres()

iPosicFilaActualAlquiler = Osuma = ODo Until iPosicFilaActualAlquiler

Alquileres.oDataSetAlquiler.Tables("TempAlquiler").Rows.Count

145

Universidad de Ciencias Comerciales

oDataRowAlquiler =

Alquileres.oDataSetAlquiler.Tables(nTempAlquilern).Rows(iPosicFilaActualAlquiler). suma += oDataRowAlquiler ("PrecioAlquilern )

CambiaPos ( )Loop

lblTotal.TextEnd Sub

suma

Private Sub CambiaPos()

iPosicFilaActualAlquiler += 1

End Sub

Private Sub txtPagado TextChanged(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles-txtPagado.TextChanged

If txtPagado.Text = Nothing ThentxtPagado.Text = "0.00"

End IfMe.txtCambio.Text = txtPagado.Text - lblTotal.Text

End Sub

Private Sub txtPagado_DoubleClick(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles txtPagado.DoubleClick

txtPagado.Text " ..End Sub

Private Sub btnCompletarl_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnCompletarl.Click

imprimir()Alquilar.regClone2()Alquilar.regClone()Alquilar. regEliminar ()Me .Close ()

End Sub

Private Sub imprimir()If factura.Checked = True Then

Dim fact As New ReporteFactura()fact. Show ()

End IfEnd Sub

Private Sub btnCancelarl Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs} Handles btnCancelarl.Click

Dim Volver As New frmAlquiler()Volver. Show ( )Me .Close ()

End SubPrivate Sub txtPagado KeyPress(ByVal sender As Object, ByVal e As

System.Windows.Forms.KeypreSsEventArgs} Handles txtPagado.KeyPressIf e.KeyChar.IsDigit(e.KeyChar} Then

e.Handled = FalseElseIf e.KeyChar.IsControl(e.KeyChar) Then

e.Handled = FalseElse

e.HandledEnd If

End SubEnd Class

True

146

SAP Universidad de Cieneias Comereiales

Formulario Login

imports System.ThreadingImports System.Security.Principal

Public Class, f;qnLoginInherits System.Windows.Forms.FormDim intLoginAttempts As Integer

Private Sub btnCancel_Click{ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnCancel.Click

Me.Close ()End Sub

Private Sub btnOK Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnOK.Click

• Instanciar Objetos de la clase usersDim objUser As New Users()Dim GenPrincipal As GenericPrincipalDim strName As String = txtUserName.TextDim strPassword As String = txtPassword.Text

• Verificar si Login ExisteIf objUser.IsLogin(strName, strPassword) Then

GenPrincipal = objUser.GetLogin(strName, strPassword)Thread.CurrentPrincipal = GenPrincipal

Dim Main As New VideoClub()Main.ShowDialog()

Else• Incrementar IntentosintLoginAttempts += 1

• Despues de 3 Intentos Cerrar LoginIf intLoginAttempts >= 3 Then

EndElse

MsgBox("Nombre de Usuario o Contrasefia no Validos.",MsgBoxStyle.Exclamation, Me.Text)

Me.txtPassword.Text NothingMe.txtUserName.Text Nothing

End IfEnd If

End SubEnd Class

147

Procedimientos Almacenados SQL

BorraAlquilerCREATE PROCEDURE BorraAlquilerASdelete TempAlquilerGO

BorraClienteCREATE PROCEDURE BorraCliente @Codigo IntegerASdelete Clienteswhere Codigo = @CodigoGO

BorraEmpleadoCREATE PROCEDURE BorraEmpleado @COlLEmpleado IntegerASdelete Empleadowhere Cod_Empleado =@COlLEmpleadoGO

BorraPeliculaCREATE PROCEDURE BorraProveedor @Codigo-proveedor IntegerASdelete Proveedoreswhere Codigo-proveedor = @Codigo-proveedorGO

CopyAlquilerCREATE PROCEDURE CopyAlquilerASIN8ERT INTO Alquiler(CodPelicula,CodCliente,FechaAlquiler,FechaDevolucion,PrecioAlquiler) 8ELECTCodPelicula,CodCliente,FechaAlquiler,FechaDevolucion,PrecioAlquiler FROM TempAlquilerGO

CopyHistoricoAlquilerCREATE PROCEDURE CopyHistoricoAlquilerASIN8ERT INTO HistoricoAlquiler(CodPelicula,CodCliente,FechaAlquiler,FechaDevolucion,PrecloAlquiler)8ELECT CodPelicula,CodCliente,FechaAlquiler,FechaDevolucion,PrecioAlquiler FROM TempAlquilerGO

DevolucionCREATE PROCEDURE Devolucion@Codigo IntegerASSelect * from Alquilerwhere CodCliente = @CodigoGO

148

SAP lJniver~idaddeCiencias Comerciales

CONCLUSIONES

• Se llego a la conclusión que el diseño de este sistema servirá como base

para una futura implementación en donde exista la necesidad de llevar

un control de alquiler de videos. .

a;. Para satisfacer la necesidad de la empresa en cuanto a la herramienta

de trabajo automatizada les presentamos un sistema que cuenta con los

requerimientos y características establecidas por el administrador:

viabilidad, facilidad de- manejo, eficiencia y un entorno gráfico agradable

al usuario.

., Con esta tesina se adquirieron nuevas habilidades que nos servirán en

nuestra rutina como futuros analistas y diseñadores de sü;temas.

t Reafirmamos que el diseño de este proyecto contempla la automatización

de datos para un mejor funcionamiento de las actividades de la empresa.

149

·!!!!!!!!s!!!~!!!!!!·!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~U!!!DI!!!·!!!!·V!!!!e!!!!rs!!!!i!!!!da!!!!d!!!!!!!!!!!!d!!!!e!!!!Ci!!!!·en!!!!!!!!m!!!!·as~Co!!!!!!m~er!!!!c!!ial!!!!!!!!es!!!!!!!!!

RECOMENDACIONES

Al ser los creadores y programadores del SAP, exponemos las siguientes

recomendaciones:

• Capacitar al t~do el personal que trabajará con el sistema; dado que el

sistema es de uso nuevo dentro de la empresa , es muy importante el

entrenamiento y capacitación del personal ya que estos no sabrán

manejar el sistema, aún cuando este está diseñado de la manera más

sencilla posible.

... Dar mantenimiento periodico al sistema y a la base de datos, dada la

importancia que tendrá el sistema dentro de la empresa

150

SAP Universidad de Ciencias Comerciales

BIBLIOGRAFÍAS.

» Módulo: Ingeniería de Software 11.

Ing. Fausto Quiñónez Varela

Universidad de Ciencias Comerciales

» Manual de Microsoft SQL Server 2000.

» Módulo: Ingeniería de Software l.

Ing. Fausto Quiñónez Varela

Universidad de Ciencias Comerciales

» Internet

www.elguruprogramador.com

www.elguille.com

www.forosdelweb.com

» Programación en VISUAL BASle .NET

LUIS MIGUEL BLANCO

» A Programmer's Introduction to Visual Basic.NET

201 West 103rd Street

Indianapolis, IN 46290 USA

151

SAP Universidad: dé6enci.-.s COllierciales

152

Universidad de Ciencias Comerciales

Fig.1. 5 Modelo ~RA.

Equipo NO.1 Equipo N°.2

Modelado deGestión

Modelado deGestión

Modeladode Gestión

....

.......Modelado de

Datos

Modelado deDatos

-....

Modelado deProcesos

Modeladode Datos

-Generación

de t--Aplicaciones Generación

deAplicacion

Pruebas yEntrega

Modeladode

Procesos

Pruebas yEntrega

Generaciónde

Aplicaciones

-

-Pruebas yEntrega

......-

Modelado deProcesos

153

SAP Universidad de Ciencias Comerciales

Fig. 1.6 Diagrama de Gantt.

Actividades/Semana 1 2 3 4 5 6 7 8 9 1O 11 12 13

Codificación

Análisis del Sistema

Entrega de Protocolo

Entrega de Tema

Planificación del Proyecto

•••••••••••••11 •••••••••••••21 •••••••••••••31 •••••••••••••41 •••• • ••••••5. •••••• • •••••(l. •••••••• ••7. •••••••••••••B. •••••••••••••9. •••••••••••••

Actividad 1: 10 - 18 Agosto (1 semana)Actividad 2: 20 - 27 Agosto (1 semana)Actividad 3: 28 Agost. - 3 Sept. (1 semana)

Actividad 4: 6 - 20 Sept. (3 semanas)Actividad 5: 25 Sept. - 8 Oct. (2 semanas)Actividad 6: 8 - 25 Oct. (4 semanas)

Actividad 7: 25-29 Oct. (1 semana)Actividad 8: 1 - 3 Nov. (1 semana)Actividad 9: 8 -12 Nov. (1 semana)

154

SlIP U:1li'ver8idad'd~€ienci88Comerciales

155

SAP Universidad de Ciencias Comerciales

Introducción al Guía de Usuario

El programa ha sido diseñado para ser manipulado con facilidad y este

documento únicamente pretende ayudarle a entender mejor el programa.

Muchos de los usuarios que ya están familiarizados con los PrQgramas de'..

Windows podrán utilizar la mayor parte de este programa sin seguir estas

instrucciones. No es necesario leer este documento,. sin embargo, todos los

usuarios encontrarán útil imprimir una copia de este documento para

resolver sus dudas al trabajar con las partes más complejas del programa.

Esta guía ofrece un panorama general de las capacidades de como completar

ciertas tareas en My DVD Video Club Rubenia

156

Universidad de Ciencias Comercialesfftg~ SAl-~..., !!!!!!!~~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~!!!!!!!!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Botones de Herralllientas de la Pantalla Principal

Las referencias de la barra de HERRAMIENTAS mostrada a

continuación se relacionan a la barra de herramientas que se encuentra en la

parte superior de la pantalla Principal del sistema:

123 41. Clientes.2. Películas.3. Buscar Clientes.4. Buscar Películas.5. Alquiler de Películas.6. Devolución de Películas.7. Informes de todo tipo.8. Datos del video.9. Ayuda.10. Salir del Sistema.

5

€t!@16 7 8

~íl ~.•..."'..'~~I ~

9 10

1. Ingresando a la Pantalla Cliente

Como primer paso debemos de presionar el botón que dice cliente el

cual se encuentra en al pantalla principal del sistema. Cuando presionamos

el bot6n presep.t~r~otra paIJ.talla la cual es la siguiente:~m_~,~_~ __ .~_~ ~~ __ ~_~ __ .~, ~%~1'~1

I :::::::r'-~!~; . ~'. ::r':¿;:¡"'(:~¡4tq~~ ~ .····1

,

-,•.. ¡'. JJI•..•_:.....J~~i\.~.,;;:::::""' "1..:J . :'F~!~t~n~¡¿~:' 'C 1

~~~~~~.. 'i~'cl ~+.,l, ' . ,'. : ..':..., ," ' ..,;'.. " , .. :' .'.. , ' : . ~ , : . :.: , :' " , ':,., ,.,::.': ..:.", .;:.' .}r .. '.. '..... ". '1<' .' '.: .'. 4:{~t.~F~~~~~rji::.; :.;' '.; .... :o·.·.J

157

Universidad de CienciasSAP...~QL"'. ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

1 4 5 6 7 8 9 10 11

1. Ir al primer registro.2. Ir al registro a~terior.

3. Ir al siguiente registro.4. Ir al último registro.5. Nuevo Cliente.6. Modificar datos del Cliente.7. Guardar Cambios.8. Buscar Cliente.9. Eliminar Cliente.10. Cancelar Operación.11. Salir.

En esta pantalla se mostraran todos los clientes con los que cuenta el

Videoclub, En caso de que se quiera agregar un nuevo cliente se debe se

presionar del botón Nuevo Cliente. A continuación se procederá a llenar los

-datos correspondientes que se piden el formulario cuando se llega al punto

donde va ubicada la foto, con el Mouse se da doble -elic dentro del área de la

foto el cu~l nos presentara una pantalla donde se procederá a la búsqueda de

la foto del cliente esto es cuando se hace la captura mediante cámara o

web_c~m y se guarda en el disco duro para después mandarla a llamar desde

el sistema, como se muestra en la figura siguiente:

Universidad de CienciasSAPJfIg~~iiiIJiil¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

I . ''w, I ,-

C~ ,.L.,.... ,(dtl~

;.

f. f:'$.'?-.',-'.-....

.'.•f',:t .~: :.~

~ ',:' ::::'..~.....;i'5!

~ C~"f_-'

ft .~~ -~'I~!_,:_·~_~_c·~_c_.~~·~_~~~~_.~~~_~_.~~3_~~~~~~~~~i At.~IlC~~~()f~"~,!,¡ ;21W~fJ,,,T; e~nfW

tccurcft~ -:nd Sottrc;..... ~~ .

. ~~V.~(d"~~

.... J~~fID'

..~ ..tWttC'O

-:'st~'\--:'

~';f.,)i..'f!,j

~ \-tdo:.

Ya llenado todos los campos de la tabla Cliente se procederá a Guardar

la información lo cual se hace presionando el botón G\lardar Cambios.

En caso de que ya no se desee agregar el cliente se estaba agregando

podemos detener esa operación con solo presionar el botón que dice Cancelar

Operación, pero esto se puede hacer en el caso que no se haya presionado el

botón guardara cambio.

Aunque si ya lo presionamos lo correcto seria eliminar el cliente promedio del

botón Eliminar Cliente.

También se puede realizar una búsqueda del cliente presionando el

botón buscar Cliente, la búsqueda se puede hacer por medio del código,

nombre y apellidos del cliente el cual nos mostrara en la parte inferior del

formulario el detalle del cliente como se presenta en la figura.

~6 ¡¡¡¡¡¡¡¡¡¡¡¡¡SAP¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡U¡¡¡¡¡¡¡¡IÜVí¡¡¡¡¡¡¡¡ers¡¡¡¡i¡¡¡d¡¡¡¡ad¡¡¡¡¡¡¡¡¡¡c1e¡¡¡C¡¡¡¡¡¡¡ie¡¡¡¡¡nCl¡¡¡ia¡¡¡S¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

2. Realizando Operaciones en la Tabla Películas

Para poder realizar una operación dentro de la pantalla película

debemos de ingresar a la pantalla haciendo un clic en el botón que dice

Película, el cual se presenta en la siguiente figura:

SAP

Codlgo

-Nombre

Proveedor

Tipo de pelicula

Genero

Precio de Alquiter

Dias de Alquiler

Cobro por Retraso

::1~---------3

B

Universidad de Ciencias

~ Disponibl.e

r Alquilada

( Dañada

r Perdida----------------------------------------

~'.·~i.~.il ~.,.:...... .A......-.r .9 r~~ '='

1 2 3 4 5 6 7 8 9 10 11.

1. Ir al primer registro.2. Ir al registro anterior.3. Ir al siguiente registro.4. Ir al último registro.5. Nuevo Cliente.6. Modificar datos del Cliente.7. Guardar Cambios.8. Buscar Cliente.9. Eliminar Cliente.10. Cancelar Operación.11. Salir.

En esta pantalla se mostraran todas las películas con las que cuenta el

Videoclub, En caso de que se quiera agregar una nueva película se debe

presionar del botón Nuevo Película. A continuación se procederá a llenar los

datos correspondientes que se piden el formulario cuando se llega al punto

donde va ubicada la foto, con el Mouse se da doble clic dentro del área de la

foto el cual nos presentara una pantalla donde se procederá a la búsqueda de

la foto de la película la cual se encuentra en dos formatos puede que son se

SAP Universidad de Ciencias

\o P.m.p y J.p.g. Después de saber la ubicación se procederá a mandarla a

llamar desde el sistema, como se muestra en la figura siguiente:

~'

:tJJ5Ji1í

I!""':'---------~------------- ¡W~«_:·I¡'rC'<~C.)1~::ú't .:.JW{'t~':M';

WLt~~~:~.,.": \1(> ~'ij'7 ",'}y ~. .-J ·.'!~U·" r

WC~mr.;.·

'5~~;;::"t:; .:r.:: :i~:t:'*:':-

,.,:J'......r.o.,'~ .~.~~ '!I

;ti,,,F~ =-~.:nr}~~

~;l·.I..rW,ij

r-~:J~ "CTt:~t=r J.t~-------------------------.-.;..¡.;..;.. ~".,~..

todü,t...

fht'ltlt

Ya llenado todos los campos de la tabla Película se procederá a

Guardar la información lo cual se hace presionando el botón Guardar

Cambios

En caso de que ya no se desee agregar el Película se estaba agregando

podemos detener esa operación con solo presionar el botón que dice Cancelar

Operación, pero esto se puede hacer en el caso que no se haya presionado el

botón guardara cambio.

Aunque si ya lo presionamos lo correcto seria eliminar el cliente por

medio del botón Eliminar Película.

También se puede realizar una búsqueda del Película presionando el

botón buscar Película, la búsqueda se puede hacer por medio del código y

SAP Universidad de Ciencias

nombre de la Película, el cual nos mostrara en la parte inferior del

formulario el detalle de la Película como se presenta en la figura.

3. Realizando BÚSqueda de Clientes

Para realizar una búsqueda del Cliente dentro de la pantalla principal

del sistema, esto se puede hacer presionando el botón buscar Cliente. La

búsqueda se puede hacer por medio del código, nombre y apellidos del cliente

el cual nos mostrara en la parte inferior del formulario el detalle del cliente

como se presenta en la figura

Codigo

Nombre

Apellidos

SAP

4. Realizando BÚSqueda de Películas

Universidad de Ciencias

Para realizar una búsqueda de Películas dentro de la pantalla principal

del sistema, esto se puede hacer presionando el botón buscar Película.. La

búsqueda se puede hacer por medio del código y nombre de la Película, el cual

nos mostrara en la parte inferior del formulario el detalle de la Película como

se presenta en la figura ..

[

Codigo

..NOmbre

2

El Rey Leor.1

¡'-------'.:..--.. ---1

5. Realizando un Alquiler

Como primer pasó lo que el usuario del sistema debe de hacer es

introducir el código del cliente que desea realizar el alquiler .. El código lo debe

de introducir en la caja que aparece a continuación y después presionar el

botón de "Aceptar" ..

---------------.....1

Universidad de CienciasSAPIffy«t.~iiiIiii'¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

Habiendo introducido el código del cliente, hasta en ese momento secontinuara o se realizara el alquiler de la película que desee el cliente.

Completar elAlquiler cuandose decide lapelícula aalquilar

'o·

PresionarCuadodeseaBúsqueda porNombre

Cedula

Telefono

Direccion

Precln

Tipo

v.... PeJiculasl.Fecba. de Alquiler I~J~Ll:t:tl(:n{t4 3fecha de De.volución 10311112004 3 _~ I ;.;2 CompletarI

. ea-s-¡ 2J 1I

Nombre

Nombre

'Codigo

D

Como podemos observar en la parte superior del formulario aparecerán

los datos detallados del cliente. Para hacer un alquiler primero se debe de

introducir el código de la película y darle aceptar para que la muestre junto

con su detalle. En caso que no se sepa el código de la película, podemos hacer

otro tipo de búsqueda lo único que con el nombre de la película eso se hace

presionando el botón "buscar Película", el cual al instante nos presentara la

siguiente pantalla, después escribimos el nombre de la película y de damos

aceptar para que realice la búsqueda en la base de datos.

165

Universidad de Ciencias ComercialesSAP¡fftJ~e'"'~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

the Me<lallionl

BusGai F>0"tic.uiasCodjgo ,-----:----'-

Nombre

MUiti;,¡W6i¡fflet

Cuando ya se realizo la búsqueda de la película y la queremos agregar

al formulario de alquiler lo podemos hacer con solo dar doble Clic en la parte

del index (Triangulo).

Cuando ya tienen seleccionada la película que el cliente quiere alquilar

y el estado de la película es disponible entonces en ese momento se procederá

al alquiler y para eso se debe de presionar el botón "ALQillLAR

PELICULA" en caso contrario el sistema mandara un mensaje de que la

película se encuentl-a alquilada, en este caso la película no se pobra alquilar y

aparecerá desactivado el botón del alquilar película, si desea hacer otro

alquiler en ese mismo momento procederá hacer una nueva búsqueda y se

repiten los pasos anteriores, cuando ya se tienen varias películas por alquilar

las cuales podemos ver todas las películas que el cliente escogió dentro de un

detalle de alquiler el cual aparecerá cuando presionamos "VER

PELICULAS" observe en la siguiente figura.

SAP Universidad de Ciencias Colllereiales·

Peliculas a Alquilar,

CodChente Nombte Apellidos Nombte_Pehcula fechaAlquilet Fe

~:; l:arla F'attlCla Rometo Rometo 28 DrAS 01,101/1900 01¡'

+ ---------------

Qllit~", d.la Lista

En esta pantalla se presenta el detalle del alquiler del cliente en esta

parte se presentan las películas que va a alquilar el cliente junto con los

detalles del cliente y los detalles de las películas. En caso de que el cliente no

cambie de opinión sobre alquilar alguna de las películas entonces desde esta

ventana se procederá a eliminar de la lista la película que el cliente no desea,

eso se hace seleccionado de la lista la fila donde se encuentra la película y

después se procede a eliminarla de la lista presionando el botón "Quitar de

la lista".

30=Cambio cuando elpago sea mayor que eltotal.

Luego que ya el cliente se encuentra satisfecho con las películas que va

a alquilar se procederá a terminar el alquiler de la película

Presionando el botón "Completar" el cual presentara el saldo que el cliente

debe pagar por las películas que va a alquilar el cual se presenta en la

siguiente pantalla.

1/,;7

Universidad de (dencias Comerciales

Después se manda a imprimir el recibo correspondiente al alquiler

marcando en la casilla que dice imprimir Ticket y luego presionando el

botón aceptar quedara finalizado el alquiler.

6. Devoluciones de Películas

Para realizar una devolución de alquiler lo hacemos desde la pantallaprincipal del sistema en una de las opciones que presenta que se llamaDevolución de películas

Entonces se presiona el botón Devolución de películas se presentara elsiguiente formulario o pantalla la cual se refleja a continuación:

En este formulario se debe de introducir el código del cliente querealizara la devolución de la pelícu1a, cuando ya se introdujo el código delcliente y se dio aceptar en ese momento se presentara otra pantalla con ennombre de Devolución de Películas.

SAP Universidad de Ciencias Com.erciales

En esta pantalla aparecerá reflejado todos los datos del cliente junto

con su fotografía y en la parte inferior aparecerá el detalle de todas las

películas que el cliente había alquilado y pretende hacer la devolución.

En la parte de películas pendientes se escogerá la película película que

el cliente va a devolver esto lo hacemos seleccionado de la tabla la película y

luego presionando el botón Realizar Devolución de Películas.

7. Informes

S.A.P con herramienta de registro satisfactoria ya que cuenta con

una gran variedad de tipo de informe los cuales se van a definir a

continuación:

Para la Generación de un Reporte o informe se debe de tener en cuanta el tipo

de informe que se desea, cuando se sabe el tipo de informe a realizar se hace

con solo presionar el Botón Ver Informe de la Barra de Herramienta que se

encuentra en la pantalla principal del sistema.

SAP Universidad de Ciencias Comerciales

Cuando presionamos Ver Informe el mostrara la siguiente pantalla

111

•En esta pantalla se tiene que seleccionar el unas de las opciones paraespecificar el tipo de reporte.

~ En este caso si seleccionamos la opción Clientes le mostrara un informedetallado de todos los clientes que son miembros del video club lo cualaparecerá de esta forma:

Inforrne de Jos Clientes

My DVD Video Club RubeniaUo.- lu "".-ona.,-I.. R"h"'"~n 1.., •• .-T¡bl'

1·..'h~~9,J4l-l.<: ....·I.:o',IJf;7c":<.7 'C,," ~*,O;'<;(lOS.J.

lll:' d,d... ¡dc"·:~!:h"',,,"

Conn.l:1t~ I.~"rh"

J ~C' l~ell';'

S,h-j¡,{-arlu

:\.1on."" ...·g.~l~;;:~n'", oU,""I"l(Onl..,.n..

()OI_I)(>I~9:

O.:!5-lkOf,:1~:'!_2~n<):

O::"-'J_l:;!fll"041-IXfl7:

;!?H;l:5Uh()';2~.:'07~

;!7'}l'7\:':;!4~;'i5<)2

1\.1""","a... il!.. ~... illa Sal!'.01..",,,<\"1.. ,,

h(I!ISX:-<.:ttlIH"9-l.1t'jOIl7<}1:'i-~:'>

:':-l..1J..lli)Oñnf>7:"~7

~ En caso contrario que se elija la opción películas el mostrara un

informe conteniendo un detalle de todas las películas con la que cuanta

el vides club, y se dividirán las películas por genero, además

presentara una sumatoria de todas las películas.

Verse en la siguiente imagen:

Universidad de Ciencias ComereialesSAP~&~.~..!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

RI:,ljul:l.''''lIPSWim()~

E"tycnn.~

ltell"I¡u~~

~C:Guln, ...'l1;1'oU<er\(lo1

~"r."br~

""OI¡,rOt.ADOl>lo¡.ACAMAEl, VI ...:N"IRh nI' ICI lt'-rll..;(;()MOI>IOSUN O\;lJO'n.; SIN 1\l,\NClIAS.

IhcM","'lIi<>Ol¡'mATASl-:l IMI'tO~IOlllil ttJnJI)

11

",,

,,..

Mv DVD Video Club RubeniaDI' .... fIo..--t. KQtonlola le- .".....

~~¡R~~4(,.(l~0084':_ll.n:r>l)ld...d\ lde'<:o(¡~bo

~

~A ............A.o:dórl"""ión

,~ ~,!ti g~~~:::

~ g~:~:~f 10... 1 .... CUlll."tlb

m ~\" l:trnonl> t-:l SY.NOlt Ot-.I fl.... ANtt t f)~ I.'I.S nos IOIUfES It"¡:ul...oI!<

~ :::~.: ~;t ::~~:t:::I!;:·Ollsm ::~~:::'.L_~:_ ...j ...~.:_".:_.,.:'':''.._~ _ ••.~. __._.__"._.. .__ ._.:~_"':'•.._.::'_.::""_";_. .. _..~

-('

.' ( Genero de(t . Películas

Dado el caso que se quiera saber o tener un informe de alquiler, esto se

puede realizar con solo presionar el botón alquiler "el cual presentara varios

tipos de informe por el cual puede hacer el reporte.

Verse la siguiente figura:

~ El Primer Botón como su nombre lo dice Informe Diario, esta opción

mandara un informe diario del alquiler.

Verse en la siguiente figura:

SAP Universidad de Ciencias Comerciales

fl}, 11;2U(~

I'cchDc\ lilullcr

~21/101200421/1W10M21/10/2004

211

~22'I0120n4

221

~24ftO/!(I(W.

Alquileres diariospor fechas

c:=::>Cfltlilo::ll NlIlllhr,,_¡'('Ikuln Nnil,hn' "¡u'Uillos I'l'chlll)('yohido l1 , ¡'red..

c=>13 CO:\IODlOS QillEmilin Cullad\> 21/101201.14 12:( es 30.00

14 EL IMPERIO DEL FUEGO CarlaP:lIrida Romeru 23110/2004 12:( es 2500

l' Ul Rey Lcon SihlflEmilin Collado 23.'0112004 I2:( es " ...cs .....UN QUIJOl E SIN MANCHAS SilvmEmilia Collado 24101/2;004 12:1 es =!500

es '3.S.00

17 '-mAIAS Sihin El\lilin <--ollado 2~iOl '2004 12:( e$ JOt)o.,:S )9001)

241

~25'lCl:211Q-t El UTRO LADO DE LA {. AMA Sildal"lllilill 27.01/2HU412:( es 2500

es 251M)7.51

~ El Segundo Botón como su nombre lo dice Infórme Mensual, estaopción mandara un informe Mensual de los alquileres que se llevaron acabo en ese mes.

Verse en la siguiente figura:

lii.1J'i@M@g'9,b'Eh4 t i'IMf~~~BH:0'¡fi11~;;';;-~,

Int'orrne Mensual de Alquiler

101 01 ....1 x _IDa" Q. ..

bolaome..-IdU.fi:if:"'f' *:f_

30 pln25 plO2S plO25 ptn30pw25 ptn

.!.!!!!...1m!

....cclo

22,ltV200423,10,'200423/01/Z00424·'01/200425/01 '200427/01/2004

Tutul del M4..'S

FcchllJ)cvolu'Cion

CulladoRun1t~ro Rom~n.)

ColladoColindoColladoColindo

NOlllhT(.'

n Emilinarlo Patddn

Sihrifl EmilinS¡hioEmilinsih18 EmilinSih!n Etnilin

Fecha de Alquiler

My DVD Video Club RubeniaIJ~ lo fa ..muela Rub~nlo 1~ nl"Tlba

~¡¡~¡~-;::~~::--=~:---..., 'I"oe-l; 28944}675:;::; Cea 2:6050084

Fecha de mes nydvd,;de~1,'ho

Fc'CIHI

11 0t20fJ4;a

21!I0120M21/10/200421110/2004 15

;~.~~~~;~~c::::::::>~ATASTE IIAS25/10/~ 18 EL UTROLADO DE LAC-\.M"'-

172

SAP Universidad de Ciencias Comerciales

~ El Segundo Botón como su nombre lo dice Informe Mensual, estaopción mandara un informe Mensual de los alquileres que se llevaron acabo en ese mes.Verse en la siguiente figura:

IFfllctorde <r:oorn:100'16-------

FecboAlquilcr Corligo

101

ColindoRomero Romen.ColladoColladoCoUadll'Collo.do

Alquileres Real!zadosen el Trimestre

Mv DVD Video Club RubeniaOc la farmada "ubeldo. l~ arribo

Ich2894414C~ll~06755 (.·cll~U500S

.':mnlh. 11\)0 dvdvideor~Jh

Nomb

13 COMO DIOS SilviEl Emll14 EL IMPERIO DEL Fl~ Carla f"atricia15 El Rey Leon • Sllvin EmíliaIr. (JNQliIJOTE~CllI\S SilvinUmilia17 PIRAT,\S Silviu. Enlilia18 EL OTRO~ODE LA CA\-tl\ Silvia Emiliu

021111200.

101200421/10!20C2IJ'lOi20(211 10/20{~2/10,'20(

24ilOi20(25/10/Z0(

8. Datos del video

Para visualizar o realizar algún cambio dentro de los datos del video se hacedesde la pantalla principal del sistema en una de las opciones que presentaque se llama Datos del video.El Cual presentara varias Opciones las Cuales apareen en la Figura

siguiente:

17~

);> Si escogemos la Primera Opción que es proveedores este nos mostraralos proveedores que tiene el video como aparece en la figura.

-0#·044.[1"4

Codigo

Nombre Raui Castillo G.

Diréceiotl

Tf~lefono

FaxI 25U66'I:i

~~r."1""'1'"'j .e.::..:'hJt .. n ~)

le".."... de Contacto Laura GIJ'iHLilnlllZ/ Hm!l Ca"tillu

Celular GOGl551

EMail 1rau!CO'Q:!hnlmail.¡;om .------

. . ~. . .-

.:.- .. :.!~·Sl

En este Pantalla se puede agregar, Modificar e Eliminar algún dato de

los proveedores o modificar dicha información.

Para agrega un nuevo proveedor solo presionamos el botón nuevo

proveedor y proseguimos llenando los datos que se requieren para después

guardarlos.

);> Si escogemos la Segunda Opción de la pantalla herramientas que es

Cambiar Categorías este nos mostrara las categorías que se le asigna a

cada película y su valor de alquiler. Como aparece en la figura.

174

Preoio de.Alquiler

COf)roporRe~aso

Dias d~ Alquiler

~.j~~'1w1;J;if~~Üi:~~,;

<RégÚlá~~¡1

I ~ II 25 I

.__._~ .__..._. ._.__. . .__J

'f'.------. •.•.•..• ...........••••••. ····1¡-¡-~¡~l

Las categorías que se presentan en este formulario se pueden modificar tantosu valor de precio alquiler, como los días de alquiler y el cobro por retrazo,esto se hace de acuerdo al dueño del video.

~ Si escogemos la Tercera Opción de la pantalla herramientas que esU suario y contraseña este nos mostrara los Usuarios del video con lacontraseña de cada usuario. Como aparece en la figura.

5AP .

Codigo

Nombre

/\pellidos

IAtlmin

1

Oireccion Password

TelefonoConfirmar Password

I~

Para agregar un nuevo usuario del sistema presionamos el botón quedice nuevo usuario y procedemos a llenar el formato que se presenta de estaforma el usuario que se agrego el sistema ya podrá gozar del privilegio dehacer uso del mismo.

También se puede hacer modificaciones a usuarios ya existente con solobuscar el usuario que deseamos modificar y presionar el botón modificar

175

Universidad de Ciencias Comerciales

)o> Si escogemos la Cuarta Opción de la pantalla herramientas que esCambiar Información este aparecerá toda la información referentevideo. Como aparece en la figura.

lit¡~~(~~~i~~~'¡2,~,P i;j

r~d~~~:'~·"'···'··~~'~~'''l~·¡~~i::t~;}~~I::~:--------l·,1 , " , '" '" .""."' •• "',' ,'. ,.1 Oireccion De la fannacía Ruhenía 1<: aH iba ...

I ~

1

, Tcee'leufi,:"•. °1 -12R94414 I... !fH.ltl15fi?

I Celular 2 Iml5íJo134 Il. _~~.a~l __ .. , lf~~d~.(~í.(,l.~.~~~:~::~~~~~~.~l.~t)n.l. . \

En esta parte solo se puede modificar todos los datos del-video que sepresentan en esta pantalla con solo presionar el botón modificar.

... Esperamos que esta guía de usuario haya sido de su completo agrado,edemas espero que le sirviera a resolver sus problemas en el manejo delsoftware.

176

SAl-

Glosario de Términos.

Universidad de Ciencias Comerciales

AAN: Análisis del Área de Negocio se ocupa de identificar en detalle la

información (en la forma de tipos de entidad [objetos datos] y los requisitos

de las funciones (en la forma de procesos) de área de negocio seleccionadas

[dominio] identificadas durante la PEI, averiguando sus interacciones). Se

ocupa solamente de especificar que se requiere en un área de negocio.

Ám.bito del Software: describe la función, el rendimiento, las restricciones,

las interfaces y la fiabilidad, se evalúan las funciones del ámbito y en algunos

casos se refinan para dar más detalles antes del comienzo de la estimación.

Obtención de la información necesaria para el software, para esto el analista

y el cliente se reúnen sobre las expectativas del proyecto y se ponen de

acuerdo en los puntos de interés para su desarrollo.

Atributos: es un dato contenido en todas las instancias de una clase. Cada

atributo tiene un valor para cada una de las instancias. Varias de las clases

pueden tener atributos comunes pero cada atributo debe ser único dentro de

una clase.

Casos de Uso: Descripciones narrativas de los procesos del dominio; es la

descripción de todos los casos y sus relaciones.

Clases: una clase de objeto es una abstracción que describe un grupo de

instancias con propiedades (atributos) comunes, comportamiento

(operaciones) común, relaciones comunes con otros objetos y una semántica

común. La diferencia entre una clase y una instancia esta en el grado de

abstracción.

177

SAP Universidad de Ciencias Comerciales

Clientes: Interactúa con el usuario, usualmente en forma gráfica.

Frecuentemente se comunica con procesos auxiliares que se encargan de

establecer conexión con el servidor.

COCOMO: (Constructive Cost Model) Modelo Constructivo de Datos.

Calcula el esfuerzo de desarrollo de software en función del tamaño del

programa y de un conjunto de conductores de costos que incluye la evaluación

subjetiva del producto, del hardware, del personal y de los atributos del

proyecto. El modelo de estimación más completo es el llamado COCOMO II.

DRA: Desarrollo Rápido de Aplicaciones. Es un modelo de proceso del

desarrollo del software lineal secuencial que enfatiza un ciclo de desarrollo

extremadamente corto de 60 a 90 días.

Diseño Conceptual: es el enfoque que se realiza desde la perspectiva del

usuario y/o del negocio. El objetivo principal consiste en la definición del

proyecto y de los conceptos de la solución.

Diseño Lógico: Es el proceso de tomar los requerimientos de usuario

obtenidos en el diseño conceptual. Los objetos y servicios, la interfase de

usuario y la base de datos lógica son el conjunto de elementos identificados y

diseñados en esta perspectiva.

Diseño Físico: Es el proceso en donde los requerimientos del diseño

conceptual y lógico son puestos en forma tangible. Este define como los

componentes de la solución, así como la interfaz de usuario y la base de datos

fisica trabajan juntos. Desempeño, implementación, ancho de banda,

escalabilidad, adaptabilidad y mantenebilidad son todos los resueltos e

implementados a través del diseño fisico.

178

SAP Universidad de Ciencias Comerciales

GANTT: Gráfico de tiempo para cada función, para cada individuo que

trabaja en el proyecto o para todo el proyecto.

Gestor de Base de Datos: Lugar donde se almacena la base de datos en

este caso la base de datos estará almacenada en el servidor y será

manipulada por el usuario.

Métricas del Proyecto. Medida cuantitativa del grado en el que un sistema,

un componente o un proceso posee un atributo dado (IEEE, 1900,p.1130). Las

métricas y los indicadores derivados de ellos los utilizan un gestor de

proyectos y un equipo de software para adaptar el flujo del trabajo del

proyecto y las actividades técnicas.

Modelo Cliente - Servidor: Es un modelo de computación en el que el

procesamiento requerido para ejecutar una aplicación o conjunto de

aplicaciones relacionadas se divide entre dos o más procesos que cooperan

entre sí.

Modelo de la Empresa: Este se define en la clásica jerárquica de unidad de

negocio (por ejemplo un organigrama) donde cada caja del organigrama

representa un área del negocio de la empresa.

Objetos o Instancias: Un objeto es una abstracción o una cosa con unos

límites definidos y que es relevante para el problema en cuestión. Mediante el

podemos referirnos tanto a clases de objetos como a las instancias de una

clase.

Operación o Método: es una función o transformación. Cada operación

lleva implícito un objeto destino, sobre el que se va realizar la operación o

179

SAl- Universidad de Ciencias Comerciales

método. El comportamiento de la operación depende de la clase del objeto

destino. Todos los objetos de una clase comparten las mismas operaciones o

métodos.

Punto de Función: Es una unidad de medida especial para medir la

funcionalidad del software.

PEI: Planificación Estratégica de la Información. Crea un modelo de datos a

nivel del negocio que define los objetos de datos clave y sus relaciones entre

ellos y con otras áreas del negocio. Los términos, objetivos y metas toman un

significado específico en la PEI.

Racional Rose: Software desarrollado por Racional Sftware Corp, es una

herramienta CASE para desarrollar aplicaciones distribuidas utilizando

lenguaje de modelación UML.

Sistema: Es un conjunto de componentes que interactúan entre sí para

lograr un objetivo común. Todo sistema depende en mayor o menor medida de

una entidad abstracta que se denomina Sistema de Información, este es el

medio por el cual fluyen de una persona o departamento hacia otros.

UML: Lenguaje de Modelamiento Unificado. Es un lenguaje gráfico para

visualizar, especificar y documentar cada una de las partes que comprende el

desarrollo del software.

Viabilidad: Es el estudio minucioso de la parte técnica, legal, operativa,

económica de un producto basado en computadoras. Si está plagado de

escasez de recurso y de fecha de entrega es necesario y prudente evaluar la

viabilidad del proyecto cuanto antes. La viabilidad y el análisis de riesgo

están relacionados de muchas maneras. Si el riesgo del proyecto es alto la

viabilidad de producir software se reduce.

180