Está en la página 1de 61

Encabezado: “LUBRICENTRO NELLY” 1

Sistema de Información de Ventas de Lubricantes que Ofrece la Empresa

“Lubricentro Nelly”

Torrez Vargas Iver

UAGRM-FINOR

Docente:

Ing. David Inocente Balderrama

Materia:

Taller de Grado

UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO-FINOR

Montero-Santa Cruz-Bolivia 2018


Encabezado: “LUBRICENTRO NELLY” 2

Contenid

o
CAPITULO I: PERFIL DE PROYECTO...............................................................................................................4
1.-Justificación.........................................................................................................................................4
Personal...................................................................................................................................................4
Técnica.....................................................................................................................................................4
Teórica.....................................................................................................................................................4
1.1.-Formulación del Problema...............................................................................................................4
1.1.1.-La empresa cuenta con los siguientes problemas:........................................................................4
1.2.-Hipótesis...........................................................................................................................................5
1.3.-Objetivos..........................................................................................................................................6
1.3.1.-Objetivo general........................................................................................................................6
1.3.2.-Objetivos específicos.................................................................................................................6
1.4.-Alcance.............................................................................................................................................7
1.4.-Metodología.....................................................................................................................................8
1.5.-Marco Teórico y Referencial.............................................................................................................8
1.7.-Esquema Tentativo de la Tesis o del Proyecto de Grado................................................................10
Bibliografía................................................................................................................................................11
CAPITULO II................................................................................................................................................11
2.1.-INTRODUCCION..............................................................................................................................11
2.2.-ANTECEDENTES..............................................................................................................................13
CAPITULO III...............................................................................................................................................13
3.1.-REQUERIMIENTOS..........................................................................................................................13
3.2.-REQUERIMIENTOS NO FUNCIONALES............................................................................................15
3.3.-TIEMPO DE APRENDIZAJE...........................................................................................................15
3.4.-IDENTIFICACIÓN DEL USUARIO PROPIO DE LA APLICACIÓN...........................................................16
3.5.-CONFIABILIDAD..............................................................................................................................16
Tiempo de disponibilidad del sistema...............................................................................................16
3.5.1.-Tiempo fuera de servicio.............................................................................................................16
3.6.-PERFOMANCE.................................................................................................................................16
3.6.1.-Acceso del usuario al sistema..................................................................................................16
Encabezado: “LUBRICENTRO NELLY” 3

3.6.2.-Tiempo de respuesta...................................................................................................................17
3.6.3.-Calidad de atención al usuario....................................................................................................17
3.7.-RESTRICCIONES DEL DISEÑO..........................................................................................................17
3.7.1.-Estándares de diseño...............................................................................................................17
3.7.2.-Estándares de arquitectura.....................................................................................................17
3.7.3.-Gestor de base de datos..........................................................................................................17
3.7.4.-Cliente de escritorio................................................................................................................17
3.7.5.-Servidor de datos.....................................................................................................................18
3.7.6.-Lenguaje de programación......................................................................................................18
3.8.-INTERFACES....................................................................................................................................18
3.8.1.-Interfaz de usuario..................................................................................................................18
3.8.2.-Interfaz del hardware..............................................................................................................18
3.8.3.-Interfaz de comunicaciones.....................................................................................................18
CAPITULO IV ANALISIS...............................................................................................................................19
4.1.-ESPECIFICACION DE REQUERIMIENTOS DE SOFTWARE..................................................................19
4.2.-HISTORIAS DE USUARIO.................................................................................................................19
4.3.-HISTORIA DE USUARIO PARA GESTIONAR CLIENTE........................................................................20
CAPITULO V DISEÑO..................................................................................................................................29
5.1.-ARQUITECTURA DE LA SOLUCIÓN PARA MODELO EN CAPAS.........................................................29
5.2.-DESCRIPCIÓN DE LA ARQUITECTURA DE LA SOLUCIÓN..................................................................30
5.3.-ARQUITECTURA DE LA SOLUCIÓN BASADA EN LA TECNOLOGÍA “.NET”.........................................31
5.4.-DESCRIPCIÓN DE CAPAS.................................................................................................................32
Capa de Presentación............................................................................................................................32
5.5.-DISEÑO DE LA BASE DE DATOS.......................................................................................................33
DIAGRAMA CONCEPTUAL DE LA BASE DE DATOS..................................................................................33
CAPITULO VI: IMPLEMENTACION..............................................................................................................36
IMPLEMENTACIÓN DE CLIENTE: CLASE CLIENTE, FORMULARIO CLIENTE....................36
6.2.-IMPLEMENTACIÓN DE SECRETARIA: CLASE SECRETARIA, FORMULARIO SECRETARIA...................42
IMPLEMENTACIÓN DE NOTA DE VENTA: CLASE VENTA, FORMULARIO VENTA.....................................48
6.4.-DIAGRAMA DE DESPLIEGUE...........................................................................................................61
CAPITULO VII: PRUEBAS.............................................................................................................................62
7.1.-PRUEBAS DE SOFTWARE.................................................................................................................62
Encabezado: “LUBRICENTRO NELLY” 4

CAPITULO I: PERFIL DE PROYECTO

1.-Justificación

Personal

El presente proyecto se enfocará en desarrollar un sistema de información para la empresa

“Lubricentro NELLY”, los motivos que nos llevaron a desarrollar este sistema fueron, solucionar

los problemas que tiene la empresa en el área de ventas y registros de las mismas, ganar más

experiencia en el desarrollo de sistemas empresariales y explorar nuevas tecnologías,

Técnica

Se debe tener un sistema de información que sirva como una herramienta para la empresa que

le ayude en toda la gestión de información, para ello se debe tener un seguimiento de todas las

actividades de la empresa.

Teórica

Para este trabajo nos basamos en experiencias adquiridas en anteriores semestres, tomando

como referencia lo aprendido en la materia base de datos, libros, tutoriales e investigación propia

acerca del tema, se buscará mejorar el funcionamiento de la empresa y encontrar los puntos

importantes que tiene una empresa de ventas, para así poder centrarse en lo importante en cada

desarrollo de sistema.

1.1.-Formulación del Problema

1.1.1.-La empresa cuenta con los siguientes problemas:

• Solo cuenta con un sistema de registro de ventas en libros y es realizado manualmente

además que los registros no son confiables.


Encabezado: “LUBRICENTRO NELLY” 5

• El registro de un cliente es realizado manualmente y se lo hace en cada venta de producto,

esto hace más tardío una venta.

• El control de registros de productos es muy poco confiables y tedioso, ya que al momento de

registro de un nuevo producto se tiene que verificar en los libros si hay anteriormente no se

registró.

• El registro de los empleados se realiza manualmente y tarda demasiado tiempo, además que

no se tiene conocimiento sobre las ventas hechas por cada uno de ellos.

• Es difícil y tedioso saber con exactitud el total de las ventas (reportes).

• No hay reportes de ganancias.

• No se tiene control de productos en el almacén, por tal motivo se debe hacer un conteo de

productos para el reabastecimiento.

1.2.-Hipótesis

Se realizara con más facilidad los registros de ventas de lubricantes que se realiza en cada

jornada laboral de la empresa.

Se desarrollará un sistema de información para el registro de ventas.

Los registros de clientes se realizarán en el sistema para más seguridad y rapidez, así se

evitara un registro en cada ocasión de venta, esto ara más rápida y sencilla la venta.

Se llevará el control de los registros de los productos a través del sistema para más seguridad

y rapidez y así no hacer el proceso tan repetitivo.

Los registros de usuarios se realizarán mediante el sistema que se implementara y se vinculara

al empleado con cada venta hecha, así se sabrá con exactitud todas las ventas hechas por cada

empleado.
Encabezado: “LUBRICENTRO NELLY” 6

Se realizarán reportes de las ventas en un rango de determinadas fechas, así se tendrá

conocimiento de las ventas hechas (solo reportes de ventas).

El sistema será capaz de poder realizar reportes de ganancias en un rango de fechas (no es lo

mismo que reportes de ventas).

El sistema será capaz de hacer reportes del producto con mayor demanda en las ventas, así la

empresa tendrá un mejor conocimiento y tomara mejores decisiones.

El sistema podrá hacer reportes de los productos en almacén, así la empresa podrá decidir

sobre su reabastecimiento.

1.3.-Objetivos

1.3.1.-Objetivo general

Desarrollar un sistema de información para la gestión de venta de lubricantes que

ofrece la empresa “Lubricentro Nelly”.

1.3.2.-Objetivos específicos

* Analizar toda la información obtenida.

* Especificar los requisitos para el desarrollo del sistema.

* Implementar una base de datos que cumpla con las necesidades de la empresa.

* Implementar la base de datos para que pueda ser utilizada.

* Diseñar el sistema de información utilizando la metodología de tres capas.

* Implementar el servidor de datos (SQL server).

* Definir las respectivas pruebas del sistema de información.


Encabezado: “LUBRICENTRO NELLY” 7

1.4.-Alcance

LUBRICENTRO
NELLY

GESTION REPORTES
VENTA

VENTAS REPORTES DE
VENTAS
USUARIOS PRODUCTOS EN
ALMACEN

CLIENTES
REPORTES DE
GANANCIAS

PRODUCTOS
Encabezado: “LUBRICENTRO NELLY” 8

1.4.-Metodología

Se ocupará la metodología XP, las herramientas para documentación serán las historias de

usuarios. Se utilizará la arquitectura tres capas, capa de datos, capa de negocio y capa de

presentación.

1.5.-Marco Teórico y Referencial

Es de gran importancia e interés conocer como la empresa “NELLY” ha llegado hasta donde

está hoy en día.

Esta empresa se dedica a la venta de lubricantes de motorizado. La empresa fue fundada el 22

de marzo del año 2009 por el propietario Daniel Quiroga Ortiz y su esposa Nelly Fiorella Paz

Gonzales. Su ubicación fue en la circunvalación lado oeste de la ciudad de Montero en la esquina

de la avenida Monseñor Rivero, donde hasta fecha actual aún se encuentra en la misma

dirección.

Cuando la empresa empezó solo contaba con 2 trabajadores y un gerente que era el mismo

propietario y fundador.

El propietario nos cuenta que al comienzo la empresa tuvo que pasar por varias dificultades

que en ocasiones pudo llegar hasta el cierre de la misma por la falta de clientes, pero aun con

esas dificultades la empresa las supero y hasta el día de hoy lleva 9 años funcionando y

brindando las ventas de lubricantes.

En todo el tiempo que lleva funcionando no ha tenido ningún antecedente de incumplimiento

según la ley establecida por lo cual la empresa se ha mantenido activa hasta la fecha.
Encabezado: “LUBRICENTRO NELLY” 9

Tabla 1
1.7.- Cronograma

CRONOGRAMA DE ACTIVIDADES
20 de Septiembre Se asigno el Sistema en el cual se trabajaría de forma grupal
27 de Septiembre Se fue al lugar en el cual se realizará el proyecto y se recaudó
información para realizar el mismo
14 de Octubre Se analizo la información recaudada en el lubricentro.
19 de Octubre Se realizo el diseño conceptual de la Base de Datos
22 de Octubre Se implemento la Base de Datos a un Gestor de Base de Datos
SQL Server
28 de Octubre Se realizo la población de datos en la base de datos en el
gestor SQL Server.
30 de Octubre Se realizo los procedimientos almacenados en la base de datos.
2 de Noviembre Se realizo la configuración del servidor de base de datos
(Windows server 2012).
5 de Noviembre Se realizo la conexión de SQL Server 2017-Visual Studio
2017
6 de Noviembre Se realizo la metodología de 3 capas (Capa Negocio, Capa
Datos y Capa Presentación)
8 de Noviembre Se realizo el desarrollo de la Capa de Datos.
11 de Noviembre Se realizo el desarrollo de la Capa Negocio.
12 de Noviembre Se realizo el desarrollo de la Capa de Presentación.
15 de Noviembre Se termino con la realización de los formularios de la Capa
Presentación.
29 de Noviembre Se realizo pruebas al sistema de información.

1.7.-Esquema Tentativo de la Tesis o del Proyecto de Grado

1.0. Justificacion.....................................................................................................................................2
1.1. Formulacion del problema........................................................................................................2
1.2. Hipotesis.......................................................................................................................................3
1.3. Objetivos.......................................................................................................................................4
1.4. Alcance..........................................................................................................................................5
1.5. Metodologia......................................................................................................................................6
1.6. Marco teorico y referencial...........................................................................................................6
1.7. Cronograma.....................................................................................................................................7
Encabezado: “LUBRICENTRO NELLY” 10

1.8. Esquema tentativo..........................................................................................................................8


2.1. Introduccion...................................................................................................................................10
2.2. Antecedentes.................................................................................................................................11
3.1. Requerimientos.............................................................................................................................12
3.2. Requerimientos no funcionales................................................................................................14
3.3. Tiempo de aprendizaje................................................................................................................14
3.5. Confiabilidad..................................................................................................................................14
4.1. Especificacion de requerimientos del sofware.....................................................................17
4.2. Historias de Usuarios..................................................................................................................18
5.1.Arquitectura de la solucion para modelos en capa...............................................................26
5.3. Arquitectura de la solucion basada en a tecnologia .NET..................................................28
5.5. Diseño de la Base de Datos........................................................................................................30
6.1. Aplicacion escritorio...................................................................................................................33
6.4. Diagrama de despliegue..............................................................................................................58
7.1. Pruebas del software...................................................................................................................59

Bibliografía

Burton, R. (1 de Febrero de 2018). Geniolandia. Obtenido de

https://www.geniolandia.com/13085382/en-que-consiste-un-esquema-tentativo-para-un-

articulo-de-investigacion

Castillo Velazquez, A. (9 de Noviembre de 2014). SlideShare. Obtenido de

https://es.slideshare.net/mobile/liondeal/esquema-del-plan-de-tesis-proyecto-de-la-

investigacion
Encabezado: “LUBRICENTRO NELLY” 11

Rodriguez, P. (15 de Junio de 2016). E-learning Wiki. Obtenido de

http://es.5genius.wikia.com/wiki/Esquema_tentativo_para_el_Proyecto

S/A. (martes de mayo de 2013). Normas APA. Obtenido de

https://www.buenastareas.com/materias/esquema-tentativo-proyecto-de-investigaci

%C3%B3n/0

SCRIBD. (6 de Mayo de 2017). SCRIBD. Obtenido de

https://es.scribd.com/doc/304040617/Esquema-Tentativo-de-Informe-de-Tesis

Tareas, B. (18 de Agosto de 2016). Buenas Tareas. Obtenido de

http://www.buenastareas.com/materias/esquema-tentativo-proyecto-de-investigación/0

CAPITULO II

2.1.-INTRODUCCION

Las grandes empresas de hoy en día para tener una mayor ventaja en el mercado y obtener un

mayor crecimiento han optado en utilizar las herramientas que le ofrece la tecnología, entre las

cuales tenemos a los sistemas de información.

Los sistemas de información son fundamentales para las empresas porque existe un mejor

control de la información de las actividades que realiza la empresa, uno de los puntos

fundamentales en cualquier organización empresarial es la información y se deben tener en

cuenta que la información posee un valor muy alto para el correcto funcionamiento de la

empresa, ya que nos llevara la gestión empresarial para tomar las decisiones correctas en cada

momento. Por ello, los sistemas de información en las empresas son importantes para realizar el
Encabezado: “LUBRICENTRO NELLY” 12

análisis de la situación empresarial y desarrollar las diferentes estrategias que nos permitan

mejorar el rendimiento y conseguir los objetivos de la organización.

En el presente trabajo se desarrolla un sistema de información para la empresa “Nelly” que

este caso es un lubricentro, con el cual se tendrá un mayor control de los servicios que realiza y

ventas de lubricantes y así mejorar su funcionamiento con este sistema.

Hoy en día la venta de lubricantes es importante para todas las personas y empresas ya que

gracias al avance de la tecnología se usan maquinarias y vehículos para la mayoría de las

actividades diarias y estas maquinarias y vehículos necesitan lubricantes para que estos tengan

un buen funcionamiento, la función de los lubricantes es de proteger los componentes internos

disminuyendo el desgaste y el calentamiento excesivo.

Por esta misma importancia es que se plantea este trabajo para mejorar el rendimiento de la

empresa, para conseguir esto, es necesario realizar una investigación sobre las actividades de la

empresa mediante entrevistas, cuestionarios y la observación para obtener información que nos

sirva para desarrollar un sistema que ayude en el control de servicios y venta de lubricantes.

Se busca que el sistema a implementar cumpla con los requerimientos necesarios y a la vez

sea fácil de usar de manera que todo el personal autorizado pueda usarlo.

2.2.-ANTECEDENTES

La empresa “Nelly” hoy en día ha llegado a alcanzar un lugar importante entre las empresas

que se encuentran en el mismo rubro en la ciudad de Montero.

La empresa fue fundada el 22 de marzo del año 2009 por el propietario Daniel Quiroga Ortiz

y su esposa Nelly Fiorella Paz Gonzales. Su ubicación fue en la circunvalación lado oeste de la

ciudad de Montero en la esquina de la avenida Monseñor Rivero, donde hasta fecha actual aún se

encuentra en la misma dirección.


Encabezado: “LUBRICENTRO NELLY” 13

Cuando la empresa empezó solo contaba con 2 trabajadores y un gerente que era el mismo

propietario y fundador.

El propietario nos cuenta que al comienzo la empresa tuvo que pasar por varias dificultades

que en ocasiones pudo llegar hasta el cierre de la misma por la falta de clientes, pero aun con

esas dificultades la empresa las supero y hasta el día de hoy lleva 9 años funcionando y

brindando sus servicios como lubricentro y las ventas de lubricantes.

En todo el tiempo que lleva funcionando no ha tenido ningún antecedente de incumplimiento

según la ley establecida por lo cual la empresa se ha mantenido activa hasta la fecha.

CAPITULO III

3.1.-REQUERIMIENTOS

Tabla 2
REQUERIMIENTOS FUNCIONALES (PRODUCT BACKLOG)

Identificación del documento


Código: SIBD-EXTRE-AJC-JVAR-0010
Título: Sistema de información para la gestión de venta de
lubricantes y servicio, para la empresa: “NELLY”
Fecha creación: 15/03/2018
Elaborado por: Iver Torrez Vargas
José Vladimir Aiza Rodríguez

Lista de distribución

DESARROLLO: Iver Torrez Vargas


José Vladimir Aiza Rodríguez
CLIENTE: Lubricentro “NELLY”
Encabezado: “LUBRICENTRO NELLY” 14

Etapas de desarrollo
Versión Responsable
Causa el cambio
Fecha
V01 Iver Torrez Vargas
Requerimiento
22/03/2018
inicial
José Vladimir Aiza Rodríguez
V02 Iver Torrez Vargas 04/04/2018
Base de Datos
José Vladimir Aiza Rodríguez
V03 Iver Torrez Vargas
Requerimientos
14/06/2018
finales
José Vladimir Aiza Rodríguez
Product blacklog Fuente (Elaboración Propia)

Nro.
Como probarlo Estimación
Nombre del Departamento
(Atributos de (History
requerimiento sección
calidad) point)

RF01 Permite
registrar, eliminar y
buscar los datos del
cliente que solicita
Gestionar los servicios de Administración 24
Cliente reparación de
equipos. El código
es autogenerado por
el sistema.
RF0 Permite registrar,
2 eliminar y buscar los
datos del producto que
Gestionar Ventas Administración 24
los clientes van a
adquirir. El código es
generado por el sistema.
RF0 Permite registrar,
3 modificar, eliminar y
Gestionar
buscar los productos Administración
Producto
con su precio y stock
disponible.
Encabezado: “LUBRICENTRO NELLY” 15

3.2.-REQUERIMIENTOS NO FUNCIONALES

3.3.-TIEMPO DE APRENDIZAJE

El tiempo de aprendizaje es muy importante por eso se debe de tomar un buen tiempo

considerable en el manejo de software como la capacitación previa para el uso de un sistema de

información, el tiempo más aconsejable para capacitar a los usuarios es de 50 horas laborales,

una hora mínima por día, hasta lograr un total manejo del sistema de parte de los usuarios.

3.4.-IDENTIFICACIÓN DEL USUARIO PROPIO DE LA APLICACIÓN

El usuario ingresa al sistema con su nombre de registro y su contraseña, que se registraran

previamente por el sistema y los permisos según el rol que se le otorgue con referencia l cargo

que utiliza en la empresa.

La contraseña de usuario para poder crearla la longitud debe de ser de mínimo 8 caracteres y

máximo 16 caracteres, los cuales deben contener entre letras, números, combinación de

mayúsculas y minúsculas y no signos de escrituras.

3.5.-CONFIABILIDAD

Tiempo de disponibilidad del sistema

La disponibilidad del sistema debe ser referente a las horas laborales de la empresa para que el

sistema este activo a la hora que se lo pueda necesitar, los horarios de la empresa en un día

laboral normal son desde las 8.00 am. de la mañana hasta las 18:30 pm. de la tarde

El objetivo de este tiempo de disponibilidad es para tener una mayor seguridad en el sistema y

no se pueda ingresar al sistema en un horario fuera de trabajo de la empresa.


Encabezado: “LUBRICENTRO NELLY” 16

3.5.1.-Tiempo fuera de servicio

El tiempo fuera de servicio cuando ocurre algún inconveniente en el servidor debe ser de un

mínimo de 10 minutos y un máximo de 60 minutos, todo esto se deberá a fallas de los servidores

y no del sistema.

3.6.-PERFOMANCE

3.6.1.-Acceso del usuario al sistema

Los usuarios pueden acceder al sistema en tiempo real.

3.6.2.-Tiempo de respuesta

El tiempo de respuesta del sistema de parte del usuario dependerá de si es un usuario nuevo

tardara aproximadamente entre 10 minutos, pero si es un usuario antiguo el tiempo de respuesta

será de solo 25 segundos.

El tiempo promedio para una transacción deberá de ser de la misma manera para usuarios

nuevos y usuarios antiguos en el sistema.

3.6.3.-Calidad de atención al usuario

El sistema deberá de poder atender a 5 usuarios al mismo tiempo, pero no se podrá realizar

una transacción al mismo tiempo.

3.7.-RESTRICCIONES DEL DISEÑO

3.7.1.-Estándares de diseño

Versión del Framework 4.5.

3.7.2.-Estándares de arquitectura

Para el desarrollo del sistema se utiliza el modelo de desarrollo de tres capas de programación.

Para la elaboración de la arquitectura del servidor se deberá de usar el modelo de

cliente/servidor.
Encabezado: “LUBRICENTRO NELLY” 17

3.7.3.-Gestor de base de datos

Se utiliza el gestor de base de datos SQL Server 2017 (Edición Estándar) de Microsoft.

3.7.4.-Cliente de escritorio

El sistema de información es accesible para un ordenador con un procesador Core i3 en

adelante y un sistema operativo (OP) Windows 2007 XP o superior de Microsoft.

3.7.5.-Servidor de datos

El servidor de datos es el Windows Server 2016 en su Edición Estándar.

3.7.6.-Lenguaje de programación

El sistema debe desarrollarse en Visual Studio.Net 2017, utilizando Windows Form de Visual

C# y datos enviados desde SQL Server 2017.

3.8.-INTERFACES

3.8.1.-Interfaz de usuario

El modelo de la interfaz para el usuario debe de ser lo mejor entendible con imágenes claras y

letras entendibles, los mensajes de las transacciones y de los errores o procesos de registros

deben de ser lo más específico y que se pueda conectar con el administrador.

3.8.2.-Interfaz del hardware

Los usuarios necesitan un dispositivo que les permita conectarse con el servidor de datos

mediante una interfaz de red (Dominio de red Local) el cual le permita acceder al sistema vía red

local.

Este dispositivo puede ser cualquiera, pero debe de estar basado en la arquitectura que

disponga al menos un procesador con capacidad suficiente para poder llevar el sistema contable.
Encabezado: “LUBRICENTRO NELLY” 18

3.8.3.-Interfaz de comunicaciones

Existe la conexión de red de parte del cliente y el servidor de datos donde se encuentra toda la

información almacenada de la base de datos

Para el buen funcionamiento el cliente tiene que poder conectarse con el servidor de datos

mediante una red de área local.

Como también debe poder comunicarse en una red de área LAN.

CAPITULO IV ANALISIS

4.1.-ESPECIFICACION DE REQUERIMIENTOS DE SOFTWARE

A diferencia de la metodología tradicional, XP utiliza las historias de usuario para la

especificación de requerimiento, permitiendo disminución. XP presenta 4 valores que seguirlos y

utilizarlos facilita la especificación de requerimientos:

 La comunicación: permite que el cliente y el programador lleguen a un acuerdo en la

especialización de requerimientos evitando los malos entendidos.

 La sencillez: es lo que diferencia a XP con las demás metodologías tradicionales las

cuales utilizan estándares para la especificación de requerimientos que hacen del sistema

muy complejo. La sencillez evita la documentación extensa centrándose en lo básico, en

lo que se utiliza en este momento y no en lo que se podría utilizar.

 La realimentación: permite que la especificación de requerimientos se comprenda mejor

con el pasar del tiempo, permitiendo que los usuarios aprendan a escribir mejor las

historias.
Encabezado: “LUBRICENTRO NELLY” 19

 Las historias de usuario: es una pequeña descripción del programa con el fin de estimar

tiempo y costo, el programador pregunta al cliente, aumentando el detalle de cada

historia.

4.2.-HISTORIAS DE USUARIO

Las historias de los usuarios se basan en obtener información para poder obtener un mejor

diseño del sistema y poder cumplir con todos los requerimientos que solicita el cliente y el

usuario final del sistema.

4.3.-HISTORIA DE USUARIO PARA GESTIONAR CLIENTE

Tabla 3
Historia de usuario para gestionar cliente

Nro. De historia Titulo


001 Gestionar Cliente
Descripción
Permite el registro de los datos de los clientes en él sistema.
Estimación(HP) Prioridad Dependiente de
10 Alta
Criterios de aceptación
* El código del cliente se genera de manera automática, y debe ser único para cada cliente.
* Un cliente puede solicitar varios productos y servicios.
* Sólo se podrá eliminar a un cliente si no tiene ningún registro de venta u orden de servicio.
* Para Realizar cualquier operación como registrar a un nuevo cliente, modificar datos,
eliminar, buscar un registro o mostrar los clientes registrados se debe realizar las consultas en
la interfaz.
Responsable José Vladimir Aiza Rodríguez
Adjunto
Encabezado: “LUBRICENTRO NELLY” 20

Historia de usuario Gestionar Cliente Fuente: (Elaboración propia)

4.4.- HISTORIA DE USUARIO PARA GESTIONAR SECRETARIA


Encabezado: “LUBRICENTRO NELLY” 21

Tabla 4
HISTORIA DE USUARIO PARA GESTIONAR SECRETARIA

Nro. De historia Titulo


002 Gestionar secretaria
Descripción
Permite el registro de los datos de las secretarias en el sistema.
Estimación(HP) Prioridad Dependiente de
10 Alta
Criterios de aceptación
* El código de la secretaria se genera de manera automática, y debe ser único para cada secretaria
que se registre.
* Una Secretaria puede registrar varios servicios y notas de ventas.
* Se podrá eliminar el registro de una secretaria sin ningún inconveniente.
* Para Realizar cualquier operación como registrar a una nueva secretaria, modificar datos,
eliminar, buscar un registro o mostrar las secretarias registradas se debe realizar las consultas con
la interfaz.
Responsable José Vladimir Aiza Rodríguez
Adjunto

Historia de usuario Gestionar Secretaria Fuente (Elaboración propia)


Encabezado: “LUBRICENTRO NELLY” 22

4.5.-HISTORIA DE USUARIO PARA GESTIONAR VENTAS

Tabla 5
HISTORIA DE USUARIO PARA GESTIONAR VENTAS

Nro. De historia Titulo


003 Gestionar Ventas
Descripción
Permite el registro de las ventas, así como el detalle de venta que ésta en el sistema.
Estimación(HP) Prioridad Dependiente de
10 Alta 001, 003 
Criterios de aceptación
* El código de la venta se genera de manera automática, y debe ser único para cada venta.
* El formulario de registro de la nota de venta debe registrar: el cliente, la secretaria que realiza la
nota de venta, los productos a vender, monto total de la venta.
* El sistema debe validar los datos ingresados de la nota venta, antes de guardarlos.
* Sólo se podrá modificar y eliminar una nota de venta si no tiene asociado ninguna transacción
en otra tabla.
* Para Realizar cualquier operación como registrar a una nueva nota de venta, modificar datos,
eliminar, buscar un registro o mostrar las notas de ventas registradas se debe realizar las consultas
con la interfaz.

Responsable José Vladimir Aiza Rodríguez


Adjunto
Encabezado: “LUBRICENTRO NELLY” 23

Historia de usuario Gestionar Ventas Fuente (Elaboracion Propia)

4.6.-HISTORIA DE USUARIO PARA GESTIONAR DETALLES DE VENTAS

Tabla 6
HISTORIA DE USUARIO PARA GESTIONAR DETALLES DE VENTAS

Nro. De historia Titulo


004 Gestionar detalles de ventas
Descripción
Permite el registro de los productos y cantidad de productos en la nota de venta.
Estimación(HP) Prioridad Dependiente de
10 Alta 004 
Criterios de aceptación
* El código del detalle de venta se genera de manera automática, y debe ser único para cada
detalle de venta.
* Un detalle de venta puede tener diferentes cantidades de productos y el precio neto del mismo.
* No se podrá eliminar un detalle de venta por que esta enlazado a la venta.
* Para realizar las diferentes consultas se deberá acceder desde las ventas y seleccionar el detalle
de venta para poder gestionar la cantidad del producto a vender y el precio.

Responsable Iver Torres Vargas


Adjunto
Encabezado: “LUBRICENTRO NELLY” 24

Historia de usuario Gestionar detalles de Ventas Fuente: Elaboración propia

4.7.-HISTORIA DE USUARIO PARA GESTIONAR PRODUCTO

Tabla 7
Historia de usuario para gestionar producto

Nro. De historia Titulo


005 Gestionar Producto
Descripción
Permite el registro de los datos de un producto en el sistema.
Estimación(HP) Prioridad Dependiente
10 Alta 005
Criterios de aceptación
* El código del producto para el sistema se genera de manera automática.
* El sistema deberá validar los datos que describen las características de los productos ingresados
al sistema.
* Sólo se podrá eliminar a un producto si no está registrado en ningún registro de venta
Encabezado: “LUBRICENTRO NELLY” 25

pendiente.
* Para Realizar cualquier operación como registrar a un nuevo producto, modificar datos,
eliminar, buscar un registro o mostrar los productos registrados se debe realizar las consultas con
los botones de la interfaz.
Responsable José Vladimir Aiza Rodríguez
Adjunto

Historia de usuario Gestionar Producto Fuente: Elaboración propia


Encabezado: “LUBRICENTRO NELLY” 26

CAPITULO V DISEÑO

5.1.-ARQUITECTURA DE LA SOLUCIÓN PARA MODELO EN CAPAS

Fuente: Elaboración propia


Encabezado: “LUBRICENTRO NELLY” 27

5.2.-DESCRIPCIÓN DE LA ARQUITECTURA DE LA SOLUCIÓN

A continuación, se realiza una descripción de los distintos componentes que forman parte de

la solución en general.

 Biblioteca clase Datos: Permite hacer la conexión al motor de base de datos de SQL

Server, dentro de esta biblioteca se encuentra la clase llamada Conexion.cs, en esta clase

están definidos los métodos principales para las operaciones al momento de manipular

registros en la base de datos, estos métodos son: conectar, desconectar, consultar, etc.

 Biblioteca clase Negocio: Se encuentra cada una de las clases que componen el cuerpo

del sistema, estas clases se caracterizan por tener la definición de atributos, propiedades y

métodos que permiten dar forma a los objetos del sistema para cada uno de los

requerimientos de negocios del sistema.

 Biblioteca clase Presentación: Dentro de la presentación se encuentran todos los

elementos de diseño para el sistema, como ser Formulario Principal, los formularios de

los clientes, empleados, secretaria, productos, registro de ventas, registro de servicios,

empleados, vehículos, etc.

 Que son la base de diseño para poder invocar a los distintos formularios que forman

parte del sistema.


Encabezado: “LUBRICENTRO NELLY” 28

5.3.-ARQUITECTURA DE LA SOLUCIÓN BASADA EN LA TECNOLOGÍA “.NET”

La programación por capas es un estilo de programación en la que le objetivo primordial es la

separación de la lógica de negocios de la lógica de diseño, un ejemplo básico de esto es separar

la capa de datos de la capa presentación al usuario.

Gráfico 2.- Arquitectura tres capas

Fuente: [msdn.microsoft.com]

La ventaja principal de este estilo, es que en caso de algún cambio sólo se ataca al nivel

requerido sin tener que revisar entre código mezclado. Además, permite distribuir el trabajo de

creación de una aplicación por capas, de este modo, cada grupo de trabajo está totalmente

abstraído del resto de niveles.

En el diseño de sistemas informáticos actual se suele usar la arquitectura Programación por

capas.

En dicha arquitectura a cada capa se le confía una misión simple, lo que permite el diseño de

arquitecturas escalable (que pueden ampliarse con facilidad en caso de que las necesidades

aumenten).
Encabezado: “LUBRICENTRO NELLY” 29

5.4.-DESCRIPCIÓN DE CAPAS

Capa de Presentación

Es la que ve el usuario, presenta el sistema al usuario, le comunica la información y captura la

información del usuario dando un mínimo de proceso (realiza un filtrado previo para comprobar

que no hay errores de formato). Esta capa se comunica únicamente con la capa de negocio.

Capa de Negocio

Es donde residen los programas que se ejecutan, recibiendo las peticiones del usuario y

enviando las respuestas tras el proceso. Se denomina capa de negocio (e incluso de lógica del

negocio) pues aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se

comunica con la para presentación para recibir las solicitudes y presentar los resultados, y con la

capa de datos, para solicitar al gestor de base de datos para almacenar o recuperar los datos en él.

Capa de Datos

Es donde residen los datos. Está formada por uno o más gestores de base de datos que realiza

todo el almacenamiento de datos y reciben solicitudes de almacenamiento o recuperación de

información desde la capa de negocio.


Encabezado: “LUBRICENTRO NELLY” 30

5.5.-DISEÑO DE LA BASE DE DATOS

DIAGRAMA CONCEPTUAL DE LA BASE DE DATOS

class Modelo de clases

Cliente
+ .Id_cliente: int
+ dirreccion: varcahr(40)
1 + materno: varchar(30)
+ Nombre : varchar (30)
+ paterno: varchar(30)
+ telefono: int

0..*
Secretaria
Nota_venta
+ .Id_secretaria: int
+ .Id_venta: int + materno: varchar(30)
+ Monto_total: money + Nombre : varchar(30)
+ fecha: date 1..* 1
+ paterno : varchar(30)
+ sueldo: money
+ telefono: int
1..*

Detalle_venta
+ cantidad: int
+ precio: money

1..*

Producto
+ .Id_producto: int
+ descripcion: varchar(40)
+ marca : varchar(20)
+ precio: money
+ stock: int
+ tipo: varchar(30)
Encabezado: “LUBRICENTRO NELLY” 31

5.6.-DISEÑO LÓGICO

DISEÑO LÓGICO RELACIONAL

CLIENTE

Id_client Nombr Paterno Materno Teléfon Dirección


e e o
PK

SECRETARIA

Id_secretari Nombr Paterno Materno Sueldo Teléfono


a e
PK

PRODUCTO

Id_producto descripción marca precio stock tipo


PK

NOTA VENTA

Id_venta Monto_Total fecha Id_secretaria Id_Cliente


PK FK FK

DETALLE VENTA

Id_venta Id_product cantidad precio


o
PK, FK PK, FK

5.7.-DISEÑO LÓGICO ESPECIFICO DE LA BASE DE DATOS

create table Secretaria (


id_secretaria int primary key identity (1,1) not null,
nombre varchar (30) not null,
paterno varchar (30),
Encabezado: “LUBRICENTRO NELLY” 32

materno varchar (30),


sueldo money not null,
telefono int)

create table Cliente (


id_cliente int primary key identity (1,1) not null,
nombre varchar (30) not null,
paterno varchar (30),
materno varchar (30),
dirrecion varchar (30),
telefono int
)
create table Nota_Venta (
id_venta int primary key identity (1,1) not null,
monto_total money not null,
fecha date not null,
id_secretaria int not null,
id_cliente int not null,
foreign key (id_secretaria) references secretaria(id_secretaria),
foreign key (id_cliente) references cliente (id_cliente)
)
create table Producto (
id_producto int primary key identity (1,1) not null,
descripcion varchar (50) not null,
precio money not null,
marca varchar (30) not null,
stock int not null,
tipo varchar (40) not null
)

create table Detalle_Venta(


id_venta int not null,
id_producto int not null,
cantidad int not null,
preciov money not null
primary key (id_venta, id_producto)
foreign key (id_venta) references Nota_Venta(id_venta),
foreign key (id_producto) references Producto(id_producto)
)
select*from Detalle_Venta

Diseño lógico específico de la base de datos Fuente: Elaboración propia

CAPITULO VI: IMPLEMENTACION

6.1.-APLICACIÓN ESCRITORIO (Código Fuente)

IMPLEMENTACIÓN DE CLIENTE: CLASE CLIENTE, FORMULARIO CLIENTE


Scripts de la clase cliente
public class Cliente : Conexion
Encabezado: “LUBRICENTRO NELLY” 33

{
int id_cliente;
string nombre;
string paterno;
string materno;
string dirrecion;
int telefono;

public int Id_cliente { get => id_cliente; set => id_cliente = value; }
public string Nombre { get => nombre; set => nombre = value; }
public string Paterno { get => paterno; set => paterno = value; }
public string Materno { get => materno; set => materno = value; }
public string Dirrecion { get => dirrecion; set => dirrecion = value; }
public int Telefono { get => telefono; set => telefono = value; }

public Cliente()
{
id_cliente = 0;
nombre = "";
paterno = "";
materno = "";
dirrecion = "";
telefono = 0;

}
public void insertar_cliente()
{
try
{
IniciarSP("insertarcliente");
AddParametro("@id_cliente", this.id_cliente.ToString());
AddParametro("@nombre", this.nombre);
AddParametro("@paterno", this.paterno);
AddParametro("@materno", this.materno);
AddParametro("@dirrecion", this.dirrecion);
AddParametro("@telefono", this.telefono.ToString());
EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("No insertado" , e.ToString());
}

}
public DataSet verificar_cliente( string nombre,string paterno, string
materno)
{
string cli;
cli="select *from cliente where nombre='"+nombre+"' and
paterno='"+paterno+"' and materno='"+materno +"';";
DataSet ds = new DataSet();
EjecutarSQL(cli, "Cliente", ds);
return ds;

}
Encabezado: “LUBRICENTRO NELLY” 34

public void modificar_cliente()


{
try
{

IniciarSP("modificar_cliente");
AddParametro("@id_cliente", this.id_cliente.ToString());
AddParametro("@nombre", this.nombre);
AddParametro("@paterno", this.paterno);
AddParametro("@materno", this.materno);
AddParametro("@direccion", this.dirrecion);
AddParametro("@telefono", this.telefono.ToString());
EjecutarSP();
}
catch(Exception ea)
{
MessageBox.Show("error al modificar datos del cliente" +
ea.ToString());
}
}
public void eliminar_cliente()
{

IniciarSP("eliminar_cliente");
AddParametro("@id_cliente", this.id_cliente.ToString());
EjecutarSP();

}
public void mostrar_cliente()
{
try
{
IniciarSP("mostrar_cliente");
EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("no se pude mostrar" + e.ToString());
}
}
public DataSet buscar_cliente()
{

string s;

s = "select *from cliente";


DataSet ds = new DataSet();
EjecutarSQL(s, "tc", ds);
return ds;

}
public DataSet BuscarNom(string nom)
{
string s;
s = "select *from Cliente where nombre like '%" + nom + "%'";
Encabezado: “LUBRICENTRO NELLY” 35

DataSet ds = new DataSet();


EjecutarSQL(s, "tc", ds);
return ds;
}
Implementación de la clase cliente Fuente: Elaboración propia

Formulario Cliente
public partial class CLIENTE : Form
{
public CLIENTE()
{
InitializeComponent();
// this.ttMensaje.SetToolTip(this.txtnombre)
this.ttMensaje.SetToolTip(this.TXTnombre, "Ingrese el nombre del
cliente");

}
private void limpiar()
{ // para poner en blaco todo los (edit)
this.TXTnombre.Text = string.Empty;
this.TXTpaterno.Text = string.Empty;
this.TXTmaterno.Text = string.Empty;
this.TXTdireccion.Text = string.Empty;
this.TXTtelefono.Text = string.Empty;
this.TXTid_cliente.Text = string.Empty;
// habilitar los botones

this.btnmodificar.Enabled = true;
this.btnguardar.Enabled = true;
this.button2.Enabled = true;
this.button4.Enabled = true;
this.btnNuevo.Enabled = true;
}
private void mostrarr()
{
Cliente cl = new Cliente();
DataSet ds = new DataSet();
ds = cl.buscar_cliente();
DGVcliente.DataSource = ds;
DGVcliente.DataMember = "tc";
this.DGVcliente.Columns[0].Visible = false;

private void button1_Click(object sender, EventArgs e) // boton guardar


{
try
{
if (this.TXTnombre.Text == string.Empty)
{
MessageBox.Show("Falta ingresar algunos datos");

}
else
Encabezado: “LUBRICENTRO NELLY” 36

{
Cliente cl = new Cliente();
DataSet ds = new DataSet();
ds = cl.verificar_cliente(TXTnombre.Text, TXTpaterno.Text,
TXTmaterno.Text);
if (ds.Tables["Cliente"].Rows.Count <=0)
{

cl.Nombre = TXTnombre.Text;
cl.Paterno = TXTpaterno.Text;
cl.Materno = TXTmaterno.Text;
cl.Dirrecion = TXTdireccion.Text;
cl.Telefono = int.Parse(TXTtelefono.Text);

cl.insertar_cliente();
MessageBox.Show("El registro se inserto correctamente");
this.limpiar();
}
else
{
MessageBox.Show("El registro ya existe, porfavor ingrese
un nuevo registro");
this.limpiar();
}

}
catch(Exception ea)
{
MessageBox.Show(ea.Message + ea.StackTrace);
}

private void button4_Click(object sender, EventArgs e)


{
Cliente cl = new Cliente();
DataSet ds = new DataSet();
ds = cl.buscar_cliente();
DGVcliente.DataSource = ds;
DGVcliente.DataMember = "tc";
//this.DGVcliente.Columns[0].Visible = false;

private void button2_Click(object sender, EventArgs e)


{

try
{
Cliente cl = new Cliente();
MessageBox.Show("Desea eliminar de forma permanente el
registro?");
Encabezado: “LUBRICENTRO NELLY” 37

cl.Id_cliente = int.Parse(TXTid_cliente.Text);
cl.eliminar_cliente();
DataSet ds = new DataSet();
ds = cl.buscar_cliente();
DGVcliente.DataSource = ds;
DGVcliente.DataMember = "tc";
MessageBox.Show("Eliminado con exito");
this.limpiar();

}
catch (Exception ea)
{ MessageBox.Show("No se puede eliminar, porque hizo venta o
sevicio", ea.ToString());
this.limpiar();
}

private void btnmodificar_Click(object sender, EventArgs e)


{
if (!this.TXTid_cliente.Text.Equals(""))
{
Cliente cl = new Cliente();
cl.Id_cliente = int.Parse(TXTid_cliente.Text);
cl.Nombre = TXTnombre.Text;
cl.Paterno = TXTpaterno.Text;
cl.Materno = TXTmaterno.Text;
cl.Dirrecion = TXTdireccion.Text;
cl.Telefono = int.Parse(TXTtelefono.Text);
cl.modificar_cliente();
/* DataSet ds = new DataSet();
ds = cl.buscar_cliente();
DGVcliente.DataSource = ds;
DGVcliente.DataMember = "tc";
*/
MessageBox.Show("Se actualizo de forma correcta el
registro");
this.limpiar();
}
else
{
MessageBox.Show("Debe seleccionar primero el registro a
modificar");
}

private void toolStripMenuItem1_Click(object sender, EventArgs e)


{
Encabezado: “LUBRICENTRO NELLY” 38

this.Close();
FormPrincipal frmp = new FormPrincipal();
frmp.Show();
}

public void DGVcliente_CellMouseDoubleClick(object sender,


DataGridViewCellMouseEventArgs e)
{
DataGridView dgvclient = (DataGridView)sender;
TXTid_cliente.Text = dgvclient[0, e.RowIndex].Value.ToString();
TXTnombre.Text = dgvclient[1, e.RowIndex].Value.ToString();
TXTpaterno.Text = dgvclient[2, e.RowIndex].Value.ToString();
TXTmaterno.Text = dgvclient[3, e.RowIndex].Value.ToString();
TXTdireccion.Text = dgvclient[4, e.RowIndex].Value.ToString();
TXTtelefono.Text = dgvclient[5, e.RowIndex].Value.ToString();

this.TXTid_cliente.Enabled = false; //para que no se pueda modificar


el id;
//desabilitar los botones

this.btnguardar.Enabled = false;
this.btnNuevo.Enabled = false;
this.button4.Enabled = false; //button4 (mostrar);

private void btnNuevo_Click(object sender, EventArgs e)


{
//this.DGVcliente.Columns[0].Visible = false;
this.button2.Enabled = false;
this.btnmodificar.Enabled = false;

this.button4.Enabled = false; //button4 es mostrar


this.TXTid_cliente.Enabled = false;

private void bTNCANCELAR_Click(object sender, EventArgs e)


{

this.limpiar();
}

private void CLIENTE_Load(object sender, EventArgs e)


{

this.mostrarr();
}

private void txtbuscar_TextChanged(object sender, EventArgs e) //


Encabezado: “LUBRICENTRO NELLY” 39

{
if (txtbuscar.Text == "")
{
this.mostrarr();
}
else
{
Buscarcliente();
}
}
void Buscarcliente()// metodo para buscar
{
Cliente cl = new Cliente();
DataSet ds = new DataSet();
ds = cl.BuscarNom((txtbuscar.Text));
DGVcliente.DataSource = ds;
DGVcliente.DataMember = "tc";
}
}
Implementación del formulario cliente Fuente: Elaboración propia

6.2.-IMPLEMENTACIÓN DE SECRETARIA: CLASE SECRETARIA, FORMULARIO

SECRETARIA

Clase secretaria
public class Secretaria : Conexion
{
int Id_secretaria;
string Nombre;
string Paterno;
string Materno;
float Sueldo;
int Telefono;

public int Id_secretaria1 { get => Id_secretaria; set => Id_secretaria =


value; }
public string Nombre1 { get => Nombre; set => Nombre = value; }
public string Paterno1 { get => Paterno; set => Paterno = value; }
public string Materno1 { get => Materno; set => Materno = value; }
public float Sueldo1 { get => Sueldo; set => Sueldo = value; }
public int Telefono1 { get => Telefono; set => Telefono = value; }

public Secretaria()
{
Id_secretaria1 = 0;
Nombre1 = " ";
Paterno1 = "";
Materno1 = "";
Sueldo1 = 0;
Telefono1 = 0;
Encabezado: “LUBRICENTRO NELLY” 40

}
public void insertar_secretaria()
{
try
{
IniciarSP("insertar_secre");
AddParametro("@id_secretaria", this.Id_secretaria1.ToString());
AddParametro("@nombre", this.Nombre1);
AddParametro("@paterno", this.Paterno1);
AddParametro("@materno", this.Materno1);
AddParametro("@sueldo", this.Sueldo1.ToString());
AddParametro("@telefono", this.Telefono1.ToString());
EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("No insertado" + e.ToString());
}

}
public DataSet verificar_secretaria(string nombre, string paterno, string
materno)
{
string se;
se = "select *from Secretaria where nombre='" + nombre + "' and
paterno='" + paterno + "' and materno='" + materno + "';";
DataSet ds = new DataSet();
EjecutarSQL(se, "Secretaria", ds);
return ds;

}
public void modificar()
{
try
{
IniciarSP("modificar_secre");
AddParametro("@id_secretaria", this.Id_secretaria1.ToString());
AddParametro("@nombre", this.Nombre1);
AddParametro("@paterno", this.Paterno1);
AddParametro("@materno", this.Materno1);
AddParametro("@sueldo", this.Sueldo1.ToString());
AddParametro("@telefono", this.Telefono1.ToString());
EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("No se puede modificar" + e.ToString());
}
}
public void eliminar_secre()
{
try
{
IniciarSP("eliminar_secretaria");
AddParametro("id_secretaria", this.Id_secretaria1.ToString());
EjecutarSP();
Encabezado: “LUBRICENTRO NELLY” 41

}
catch (Exception e)
{
MessageBox.Show("No eliminado" + e.ToString());

}
}
public void mostrar_secre()
{
try
{
IniciarSP("mostrar_secre");
EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("No se puede mostrar" + e.ToString());

}
}
public DataSet buscar_secre()
{
string s;

s = "select *from Secretaria";


DataSet ds = new DataSet();
EjecutarSQL(s, "tc", ds);
return ds;

}
public DataSet buscarsecretaria(string nom)
{
string s;
s = "select *from Secretaria where nombre like '%" + nom + "%'";
DataSet ds = new DataSet();
EjecutarSQL(s, "tc", ds);
return ds;
}
}
Implementación de la clase secretaria Fuente: Elaboración propia

Formulario secretaria
public partial class SECRETARIA : Form
{
public SECRETARIA()
{
InitializeComponent();
}
private void limpiar()
{ // para poner en blaco todo los (edit)
this.TXTid_secretaria.Text = string.Empty;
this.TXTnombre.Text = string.Empty;
this.TXTpaterno.Text = string.Empty;
this.TXTmaterno.Text = string.Empty;
this.TXTsueldo.Text = string.Empty;
Encabezado: “LUBRICENTRO NELLY” 42

this.TXTtelefono.Text = string.Empty;
this.TXTbusc.Text = string.Empty;
// habilitar los botones
this.btnBuscar.Enabled = true;
this.btnModificar.Enabled = true;
this.btnGuardar.Enabled = true;
this.btnEliminar.Enabled = true;
this.btnMostrar.Enabled = true;
this.btnnuevo.Enabled = true;
}
private void mostrarr()
{
Secretaria se = new Secretaria();
DataSet ds = new DataSet();
ds =se.buscar_secre();
DGVsecretaria.DataSource = ds;
DGVsecretaria.DataMember = "tc";
this.DGVsecretaria.Columns[0].Visible = false;

private void btnGuardar_Click(object sender, EventArgs e)


{
try
{
if (this.TXTnombre.Text == string.Empty)
{
MessageBox.Show("Falta ingresar algunos datos");

}
else
{

Secretaria se = new Secretaria();


DataSet ds = new DataSet();
ds = se.verificar_secretaria(TXTnombre.Text, TXTpaterno.Text,
TXTmaterno.Text);
if (ds.Tables["Secretaria"].Rows.Count <=0)
{
se.Nombre1 = TXTnombre.Text;
se.Paterno1 = TXTpaterno.Text;
se.Materno1 = TXTmaterno.Text;
se.Telefono1 = int.Parse(TXTtelefono.Text);
se.Sueldo1 = int.Parse(TXTsueldo.Text);
se.insertar_secretaria();
MessageBox.Show("Se inserto un nuevo registro");
this.limpiar();
}
else
{
MessageBox.Show("Ya se encuentra el registro, porfavor
inserte un nuevo registro");
this.limpiar();
}
}

}
Encabezado: “LUBRICENTRO NELLY” 43

catch (Exception ea)


{
MessageBox.Show("No insertado" );
this.limpiar();
}

private void btnMostrar_Click(object sender, EventArgs e)


{
Secretaria cl = new Secretaria();
DataSet ds = new DataSet();
ds = cl.buscar_secre();
DGVsecretaria.DataSource = ds;
DGVsecretaria.DataMember = "tc";

private void btnEliminar_Click(object sender, EventArgs e)


{
try
{
Secretaria se = new Secretaria();
MessageBox.Show("Desea eliminar de forma permanete el
registro?");
se.Id_secretaria1 = int.Parse(TXTid_secretaria.Text);
se.eliminar_secre();
DataSet ds = new DataSet();
ds = se.buscar_secre();
DGVsecretaria.DataSource = ds;
DGVsecretaria.DataMember = "tc";
MessageBox.Show("Se elimino de forma exitosa");
this.limpiar();
}
catch(Exception el)
{
MessageBox.Show("No se puede eliminar el registro" +
el.ToString());
this.limpiar();
}

private void btnModificar_Click(object sender, EventArgs e)


{
Secretaria se = new Secretaria();
se.Id_secretaria1 = int.Parse(TXTid_secretaria.Text);
se.Nombre1 = TXTnombre.Text;
se.Paterno1 = TXTpaterno.Text;
se.Materno1 = TXTmaterno.Text;
se.Sueldo1 = float.Parse(TXTsueldo.Text);

se.Telefono1 = int.Parse(TXTtelefono.Text);
se.modificar();
DataSet ds = new DataSet();
ds = se.buscar_secre();
DGVsecretaria.DataSource = ds;
Encabezado: “LUBRICENTRO NELLY” 44

DGVsecretaria.DataMember = "tc";
MessageBox.Show("Se actualizo el registro");
this.limpiar();

private void btnBuscar_Click(object sender, EventArgs e)


{
Secretaria se = new Secretaria();
DataSet ds = new DataSet();
ds = se.buscarsecretaria (TXTbusc.Text.Trim());
DGVsecretaria.DataSource = ds;

DGVsecretaria.DataMember = "tc";
}

private void sALIRToolStripMenuItem_Click(object sender, EventArgs e)


{
this.Close();
FormPrincipal frmp = new FormPrincipal();
frmp.Show();

private void btnnuevo_Click(object sender, EventArgs e)


{
//this.DGVcliente.Columns[0].Visible = false;
this.btnBuscar.Enabled = false;
this.btnModificar.Enabled = false;
this.btnEliminar.Enabled = false;

this.btnMostrar.Enabled = false; //button4 es mostrar


this.TXTid_secretaria.Enabled = false;

private void DGVsecretaria_CellMouseDoubleClick(object sender,


DataGridViewCellMouseEventArgs e)
{
DataGridView dgvsecretaria = (DataGridView)sender;
TXTid_secretaria.Text = dgvsecretaria[0, e.RowIndex].Value.ToString();
TXTnombre.Text = dgvsecretaria[1, e.RowIndex].Value.ToString();
TXTpaterno.Text = dgvsecretaria[2, e.RowIndex].Value.ToString();
TXTmaterno.Text = dgvsecretaria[3, e.RowIndex].Value.ToString();
TXTsueldo.Text = dgvsecretaria[4, e.RowIndex].Value.ToString();
TXTtelefono.Text = dgvsecretaria[5, e.RowIndex].Value.ToString();
this.TXTid_secretaria.Enabled = false; //para que no se pueda
modificar el id;
//desabilitar los botones
this.btnBuscar.Enabled = false;
this.btnGuardar.Enabled = false;
this.btnnuevo.Enabled = false;
this.btnMostrar.Enabled = false; //button4 (mostrar);
}

private void SECRETARIA_Load(object sender, EventArgs e)


Encabezado: “LUBRICENTRO NELLY” 45

{
this.mostrarr();
}

private void btnCancelar_Click(object sender, EventArgs e)


{
this.limpiar();
}
}
Implementación del formulario secretaria Fuente: Elaboración propia

IMPLEMENTACIÓN DE NOTA DE VENTA: CLASE VENTA, FORMULARIO VENTA


Clase Nota_Venta
public class Nota_venta : Conexion
{
int id_venta;
float monto_total;
DateTime fecha;
int id_secretaria;
int id_cliente;

public int Id_venta { get => id_venta; set => id_venta = value; }
public float Monto_total { get => monto_total; set => monto_total =
value; }

public int Id_secretaria { get => id_secretaria; set => id_secretaria =


value; }
public int Id_cliente { get => id_cliente; set => id_cliente = value; }
public DateTime Fecha { get => fecha; set => fecha = value; }

public Nota_venta()
{
id_venta = 0;
monto_total = 0;
Fecha = DateTime.Today;
id_secretaria = 0;
id_cliente = 0;
}
public void insertar_venta()
{
try
{
IniciarSP("insertar_venta");
AddParametro("@id_venta", this.id_venta.ToString());
AddParametro("@monto_total", this.monto_total.ToString());
AddParametro("@fecha", this.fecha.ToShortDateString());
AddParametro("id_cliente", this.id_cliente.ToString());
AddParametro("id_secretaria", this.id_secretaria.ToString());

EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("No insertado" + e.ToString());
Encabezado: “LUBRICENTRO NELLY” 46

public void modificar_venta()


{
try
{
IniciarSP("modificar_venta");
AddParametro("@id_venta", this.id_venta.ToString());
AddParametro("@monto_total", this.monto_total.ToString());
AddParametro("@fecha", this.fecha.ToShortDateString());

EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("No modificar" + e.ToString());
}

}
public void eliminar_venta()
{
try
{
IniciarSP("eliminar_venta");
AddParametro("@id_venta", this.id_venta.ToString());
EjecutarSP();

}
catch (Exception e)
{
MessageBox.Show("no se puedo eliminar" + e.ToString());

public DataSet mostrar_venta()


{
string s;

s = "mostrar_venta";
DataSet ds = new DataSet();
EjecutarSQL(s, "tc", ds);
return ds;
}

public DataSet buscar_venta()


{
string s;

s = "select *from Nota_Venta";


DataSet ds = new DataSet();
Encabezado: “LUBRICENTRO NELLY” 47

EjecutarSQL(s, "tc", ds);


return ds;
}
public DataSet Buscarfecha(string fec)
{
string s;
s = "buscar_venta";

DataSet ds = new DataSet();


EjecutarSQL(s, "tc", ds);
return ds;
}

}
Implementación de la clase Nota_Venta Fuente: Elaboración propia

Formulario Nota_Venta
public partial class VENTA : Form
{
Buscarcliente BuscarCliente_Nv;
BuscarSecre BuscarSecretaria_NV;
BuscarProducto BuscarProducto_NV;
public VENTA()
{
InitializeComponent();
}
private void limpiar()
{ // para poner en blaco todo los (txt)
this.txtId_venta.Text = string.Empty;
this.txtMonto.Text = string.Empty;
this.txtId_cliente.Text = string.Empty;
this.txtCliente.Text = string.Empty;
this.txtId_secret.Text = string.Empty;
this.txtNombSecr.Text = string.Empty;

// habilitar los botones


this.btnbuscar.Enabled = true;
this.btneditar.Enabled = true;
this.btnguardar.Enabled = true;
this.btnmostrar.Enabled = true;
this.btneliminar.Enabled = true;

}
private void mostrarr()
{
Nota_venta ve = new Nota_venta();
DataSet ds = new DataSet();
ds = ve.mostrar_venta();
DGVventa.DataSource = ds;
DGVventa.DataMember = "tc";
this.DGVventa.Columns[0].Visible = false;
this.DGVventa.Columns[1].Visible = false;
this.DGVventa.Columns[3].Visible = false;
this.txtId_venta.Enabled = false;
Encabezado: “LUBRICENTRO NELLY” 48

}
private void mostrardetalle()// para el detalle de venta
{
Detalle_ventacs de = new Detalle_ventacs();
DataSet ds = new DataSet();
ds = de.mostrar_detalle_venta();
DGVdetalle.DataSource = ds;
DGVdetalle.DataMember = "tc";
this.DGVdetalle.Columns[0].Visible = false;
this.DGVdetalle.Columns[1].Visible = false;

private void button3_Click(object sender, EventArgs e)//mostrar venta


{
Nota_venta ve = new Nota_venta();
DataSet ds = new DataSet();
ds = ve.mostrar_venta();
DGVventa.DataSource = ds;
DGVventa.DataMember = "tc";

private void btNBuscarCl_Click(object sender, EventArgs e)


{
BuscarCliente_Nv = new Buscarcliente();
BuscarCliente_Nv.DGVbuscar.CellMouseDoubleClick +=
DGVbuscar_CellMouseDoubleClick;
BuscarCliente_Nv.ShowDialog();
}

public void DGVbuscar_CellMouseDoubleClick(object sender,


DataGridViewCellMouseEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
txtId_cliente.Text = dgv[0, e.RowIndex].Value.ToString().Trim();
txtCliente.Text = dgv[1, e.RowIndex].Value.ToString().Trim() + " "+
dgv[3, e.RowIndex].Value.ToString().Trim();
BuscarCliente_Nv.Close();

private void btnSalir_Click(object sender, EventArgs e)


{
this.Close();
FormPrincipal frmp = new FormPrincipal();
frmp.Show();
}
Encabezado: “LUBRICENTRO NELLY” 49

public void DGVsecre_CellMouseDoubleClick(object sender,


DataGridViewCellMouseEventArgs e)
{

DataGridView dgv = (DataGridView)sender;


txtId_secret.Text = dgv[0, e.RowIndex].Value.ToString().Trim();
txtNombSecr.Text = dgv[1, e.RowIndex].Value.ToString().Trim() + " "+
dgv[3, e.RowIndex].Value.ToString().Trim();
BuscarSecretaria_NV.Close();

private void btnguardar_Click(object sender, EventArgs e)


{
try
{
Nota_venta ve = new Nota_venta();

ve.Id_cliente = int.Parse(txtId_cliente.Text);
ve.Id_secretaria = int.Parse(txtId_secret.Text);
ve.Fecha = DateTime.Parse(TXTfecha.Text);
ve.Monto_total = float.Parse(txtMonto.Text);
ve.insertar_venta();
MessageBox.Show("insertado con exito");

this.mostrarr();

}
catch(Exception ea)
{ MessageBox.Show("No se pudo insertar" + ea.ToString()); }
}

private void button8_Click(object sender, EventArgs e)//buscar secretaria


{
BuscarSecretaria_NV = new BuscarSecre();
BuscarSecretaria_NV.DGVsecre.CellMouseDoubleClick +=
DGVsecre_CellMouseDoubleClick;
BuscarSecretaria_NV.ShowDialog();

private void VENTA_Load(object sender, EventArgs e)


{
this.mostrarr();
this.mostrardetalle();
}

private void btncancelar_Click(object sender, EventArgs e)


{
this.limpiar();
}

private void DGVventa_CellMouseDoubleClick(object sender,


DataGridViewCellMouseEventArgs e)
Encabezado: “LUBRICENTRO NELLY” 50

{
DataGridView DGVventa = (DataGridView)sender;
txtId_venta.Text = DGVventa[0, e.RowIndex].Value.ToString();
txtId_cliente.Text = DGVventa[1, e.RowIndex].Value.ToString();
txtCliente.Text = DGVventa[2, e.RowIndex].Value.ToString();
txtId_secret.Text = DGVventa[3, e.RowIndex].Value.ToString();
txtNombSecr.Text = DGVventa[4, e.RowIndex].Value.ToString();
TXTfecha.Text = DGVventa[5, e.RowIndex].Value.ToString();
txtMonto.Text = DGVventa[6, e.RowIndex].Value.ToString();

private void producto_Click(object sender, EventArgs e)


{
BuscarProducto_NV = new BuscarProducto();
BuscarProducto_NV.dgvBuscar_producto.CellMouseDoubleClick +=
dgvBuscar_producto_CellMouseDoubleClick;
BuscarProducto_NV.ShowDialog();

public void dgvBuscar_producto_CellMouseDoubleClick(object sender,


DataGridViewCellMouseEventArgs e)
{

DataGridView dgv = (DataGridView)sender;


TXTid_productoo.Text = dgv[0, e.RowIndex].Value.ToString().Trim();
TXTproducto.Text = dgv[1, e.RowIndex].Value.ToString().Trim();
TXTprecio.Text = dgv[2, e.RowIndex].Value.ToString().Trim();
BuscarProducto_NV.Close();
}

private float realizar_suma()


{
float s = 0, d = 0,r=0;
s = int.Parse(TXTcant.Text);
d = float.Parse(TXTprecio.Text);
r = s * d;
return r;
}
private void btncalcular_Click(object sender, EventArgs e)
{
txtMonto.Text = realizar_suma().ToString();
}

private void button1_Click(object sender, EventArgs e)


{
try
{
Detalle_ventacs de = new Detalle_ventacs();
de.Id_producto = int.Parse(TXTid_productoo.Text);
de.Id_venta = int.Parse(txtId_venta.Text);
Encabezado: “LUBRICENTRO NELLY” 51

de.Cantidad = int.Parse(TXTcant.Text);
de.Precio = float.Parse(TXTprecio.Text);

de.insertar_detalleVenta();

MessageBox.Show("insertado con exito");


this.mostrardetalle();
this.limpiar();
}
catch (Exception ea)
{
MessageBox.Show("No insertado" + ea.ToString());

}
}

private void btnbuscar_Click(object sender, EventArgs e) //boton para


buscar por fecha
{
Nota_venta ve = new Nota_venta();
DataSet ds = new DataSet();
ds = ve.buscar_venta();
DGVventa.DataSource = ds;
DGVventa.DataMember = "tc";

public float nuevop()


{
float monto = 0, cantidad = 0, precio = 0, r = 0;

monto = int.Parse(txtMonto.Text);
cantidad = int.Parse(TXTcant.Text);
precio = float.Parse(TXTprecio.Text);

r = monto + precio * cantidad;


return r;
}
private void btnNuevopro_Click(object sender, EventArgs e)
{
txtMonto.Text = nuevop().ToString();

private void DGVdetalle_CellMouseDoubleClick(object sender,


DataGridViewCellMouseEventArgs e) //para el detalle de venta
{
DataGridView dgvdetalle = (DataGridView)sender;
txtId_venta.Text = dgvdetalle[1, e.RowIndex].Value.ToString();
TXTid_productoo.Text = dgvdetalle[0, e.RowIndex].Value.ToString();
TXTcant.Text = dgvdetalle[2, e.RowIndex].Value.ToString();
TXTprecio.Text = dgvdetalle[3, e.RowIndex].Value.ToString();
}
}

Implementación del formulario Nota_Venta Fuente: Elaboración propia


Encabezado: “LUBRICENTRO NELLY” 52

6.3.-IMPLEMENTACIÓN DE PRODUCTO: CLASE PRODUCTO, FORMULARIO PRODUCTO

Clase Producto
public class Producto : Conexion
{
int id_producto;
string descripcion;
float precio;
string marca;
int stock;
string tipo;

public int Id_producto { get => id_producto; set => id_producto =


value; }
public string Descripcion { get => descripcion; set => descripcion =
value; }
public float Precio { get => precio; set => precio = value; }
public string Marca { get => marca; set => marca = value; }
public int Stock { get => stock; set => stock = value; }
public string Tipo { get => tipo; set => tipo = value; }

public Producto()
{
id_producto = 0;
descripcion = "";
precio = 0;
marca = "";
stock = 0;
tipo = "";

public void insertar_producto()


{
try
{
IniciarSP("insertar_producto");
AddParametro("@id_producto", this.id_producto.ToString());
AddParametro("@decripcion", this.descripcion);
AddParametro("@precio", this.precio.ToString());
AddParametro("@marca", this.marca);
AddParametro("@stock", this.stock.ToString());
AddParametro("@tipo", this.tipo);
EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("no se puede insertar" + e.ToString());
}
}

public void modificar_producto()


{
try
{
Encabezado: “LUBRICENTRO NELLY” 53

IniciarSP("modificar_produ");
AddParametro("@id_producto", this.id_producto.ToString());
AddParametro("@descripcion", this.descripcion);
AddParametro("@precio", this.precio.ToString());
AddParametro("@marca", this.marca);
AddParametro("@stock", this.stock.ToString());
AddParametro("@tipo", this.tipo);
EjecutarSP();
}

catch (Exception e)
{
MessageBox.Show("no se puede insertar" + e.ToString());
}

}
public void eliminar_producto()
{
try
{
IniciarSP("eliminar_produ");
AddParametro("id_producto", this.id_producto.ToString());
EjecutarSP();

}
catch (Exception e)
{
MessageBox.Show("no se puedo eliminar" + e.ToString());

}
}

public void mostrar_producto()


{
try
{
IniciarSP("mostrar_produ");
EjecutarSP();
}
catch (Exception e)
{
MessageBox.Show("no se pude mostrar" + e.ToString());
}
}
public DataSet buscar_producto()
{
string s;

s = "select *from producto";


DataSet ds = new DataSet();
EjecutarSQL(s, "tc", ds);
return ds;
}
public DataSet buscar_prod(string desc)
{
string s;
Encabezado: “LUBRICENTRO NELLY” 54

s = "select *from Producto where descripcion like '%" + desc + "%'";


DataSet ds = new DataSet();
EjecutarSQL(s, "tc", ds);
return ds;

}
Implementación de la clase Producto Fuente: Elaboración propia

Formulario Producto
public partial class PRODUCTO : Form
{
public PRODUCTO()
{
InitializeComponent();
this.ttMensaje.SetToolTip(TXTdescripcion, "Ingrese la descripcion del
producto");
this.ttMensaje.SetToolTip(TXTmarca, "Ingrese la marca del producto");
this.ttMensaje.SetToolTip(TXTprecio, "Ingrese el precio del producto");
this.ttMensaje.SetToolTip(TXTtipo, "Ingrese el tipo del producto");

}
private void LIMPIAR()
{

// para poner en blaco todo los (edit)


this.TXTid_producto.Text = string.Empty;
this.TXTdescripcion.Text = string.Empty;
this.TXTprecio.Text = string.Empty;
this.TXTmarca.Text = string.Empty;
this.TXTstock.Text = string.Empty;

// habilitar los botones

this.btnMODIFICAR.Enabled = true;

this.btnGUARDAR.Enabled = true;
this.btnELIMINAR.Enabled = true;
this.btnMOSTRAR.Enabled = true;
this.btnNuevo.Enabled = true;
}
private void MOSTRAR()
{
Producto pr = new Producto();
DataSet ds = new DataSet();
ds = pr.buscar_producto();
DGV_producto.DataSource = ds;
DGV_producto.DataMember = "tc";
}

private void btnGUARDAR_Click(object sender, EventArgs e)


Encabezado: “LUBRICENTRO NELLY” 55

{
try
{
Producto pr = new Producto();

pr.Descripcion = TXTdescripcion.Text;

pr.Precio = int.Parse( TXTprecio.Text);


pr.Marca = TXTmarca.Text;
pr.Stock = int.Parse(TXTstock.Text);
pr.Tipo = TXTtipo.Text;
pr.insertar_producto();

MessageBox.Show("insertado con exito");


this.LIMPIAR();
}
catch (Exception ea)
{
MessageBox.Show("No insertado" + ea.ToString());
this.LIMPIAR();
}
}

private void btnMOSTRAR_Click(object sender, EventArgs e)


{
Producto pr = new Producto();
DataSet ds = new DataSet();
ds = pr.buscar_producto();
DGV_producto.DataSource = ds;
DGV_producto.DataMember = "tc";

private void btnELIMINAR_Click(object sender, EventArgs e)


{
try
{
Producto pr = new Producto();
MessageBox.Show("Desea eliminar de forma permanete el registro?");
pr.Id_producto= int.Parse(TXTid_producto.Text);
pr.eliminar_producto();
DataSet ds = new DataSet();
ds = pr.buscar_producto();
DGV_producto.DataSource = ds;
DGV_producto.DataMember = "tc";
MessageBox.Show("Se elimino de forma exitosa");
this.LIMPIAR();
}
catch (Exception el)
{
MessageBox.Show("No se puede eliminar el registro" + el.ToString());
this.LIMPIAR();
}
}

private void btnMODIFICAR_Click(object sender, EventArgs e)


{
Encabezado: “LUBRICENTRO NELLY” 56

Producto pr = new Producto();


pr.Id_producto = int.Parse(TXTid_producto.Text);
pr.Descripcion = TXTdescripcion.Text;
pr.Precio = float.Parse( TXTprecio.Text);
pr.Marca = TXTmarca.Text;
pr.Stock = int.Parse(TXTstock.Text);
pr.Tipo = TXTtipo.Text;
pr.modificar_producto();
MessageBox.Show("Se modifico de forma exitosa el registro");

DataSet ds = new DataSet();


ds = pr.buscar_producto();

DGV_producto.DataSource = ds;
DGV_producto.DataMember = "tc";
this.LIMPIAR();

private void sALIRToolStripMenuItem_Click(object sender, EventArgs e)


{
this.Close();
FormPrincipal frmp = new FormPrincipal();
frmp.Show();
}

private void DGV_producto_CellMouseDoubleClick(object sender,


DataGridViewCellMouseEventArgs e)
{
DataGridView dgvproducto = (DataGridView)sender;
TXTid_producto.Text = dgvproducto[0, e.RowIndex].Value.ToString();
TXTdescripcion.Text = dgvproducto[1, e.RowIndex].Value.ToString();
TXTprecio.Text = dgvproducto[2, e.RowIndex].Value.ToString();
TXTmarca.Text = dgvproducto[3, e.RowIndex].Value.ToString();
TXTstock.Text = dgvproducto[4, e.RowIndex].Value.ToString();
TXTtipo.Text = dgvproducto[5, e.RowIndex].Value.ToString();

this.btnGUARDAR.Enabled = false;
this.btnMOSTRAR.Enabled = false;
this.btnNuevo.Enabled = false;

private void PRODUCTO_Load(object sender, EventArgs e)


{
this.MOSTRAR();
}

private void btnNuevo_Click(object sender, EventArgs e)


{
Encabezado: “LUBRICENTRO NELLY” 57

this.btnMODIFICAR.Enabled = false;
this.btnELIMINAR.Enabled = false;

private void btnCancelar_Click(object sender, EventArgs e)


{
this.LIMPIAR();
}

private void textBox1_TextChanged(object sender, EventArgs e)


{

if (txtbuscar.Text == "")
{
this.MOSTRAR();
}
else
{
Buscarproducto();
}

void Buscarproducto()
{
Producto pr = new Producto();
DataSet ds = new DataSet();
ds = pr.buscar_prod((txtbuscar.Text));
DGV_producto.DataSource = ds;
DGV_producto.DataMember = "tc";
}
}
}
Implementación del formulario producto Fuente: Elaboración propia
Encabezado: “LUBRICENTRO NELLY” 58

6.4.-DIAGRAMA DE DESPLIEGUE

Servidor
de datos

Workstat

ion
Encabezado: “LUBRICENTRO NELLY” 59

CAPITULO VII: PRUEBAS

7.1.-PRUEBAS DE SOFTWARE

TEST CASE
Identificador: 01
Título: Probar el registro de los clientes correctamente
Descripción: Seleccionar el botón Guardar en el sistema, así también debe auto-generar el
identificador del cliente.

Pasos
1. Ejecutar la aplicación
2. Ingresar al menú de los clientes y seleccionar nuevo cliente
3. Escribir los datos del cliente
4. Modificar y Eliminar Los datos del cliente
5. Consultar los datos del cliente a través de las búsquedas por parámetro

Resultado Esperado
Deberá verificar si guarda, modifica, elimina y busca registros de un cliente
Automatizado No
cuando se ejecutan
Resultado Actual
Comentarios/Observaciones

 
Test Case Probar que guarde bien los clientes Fuente: Elaboración propia

TEST CASE
Identificador: 02
Título: Probar el registro de las ventas correctamente
Descripción: Seleccionar el botón Guardar en el sistema, así también debe auto-generar el
identificador de la venta.
Encabezado: “LUBRICENTRO NELLY” 60

Pasos
1. Ejecutar la aplicación
2. Ingresar al menú de las ventas y seleccionar nueva venta
3. Escribir los datos de la venta
4. Modificar y Eliminar Los datos de la venta actual
5. Consultar los datos de la venta a través de las búsquedas por parámetro

Resultado Esperado
Deberá verificar si guarda, modifica, elimina y busca registros de una venta
Automatizado No
cuando se ejecutan
Resultado Actual
Comentarios/Observaciones

 
Test Case Probar que guarde bien las ventas Fuente: Elaboración propia

TEST CASE
Identificador: 03
Título: Probar el registro de los productos correctamente
Descripción: Seleccionar el botón Guardar en el sistema, así también debe auto-generar el
identificador de los productos.

Pasos
1. Ejecutar la aplicación
2. Ingresar al menú de los productos y seleccionar nuevo producto
3. Escribir los datos de los productos
4. Modificar y Eliminar Los datos de los productos
5. Consultar los datos de los productos a través de las búsquedas por parámetro
Encabezado: “LUBRICENTRO NELLY” 61

Resultado Esperado
Deberá verificar si guarda, modifica, elimina y busca registros de un producto
Automatizado No
cuando se ejecutan
Resultado Actual
Comentarios/Observaciones