TESIS MONOGRAFICA SISTEMA PARAELALQUILER DE … 0064 2004.pdfLa arquitectura de software a utilizar...
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
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
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.CodigoEncontrado1) ("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.CodigoEncontradol) ("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
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
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