Sie sind auf Seite 1von 45

Servicio nacional de aprendizaje

SENA

Desarrollo de software

Bogotá 2017

Juan Nicolás Ordoñez Velásquez

Leixer Gabuer Molina Villalba

N ficha: 1150447

Colegio Alberto Lleras Camargo I.E.D

SENA- Técnico en programación de software

1001 Jm

Jornada mañana

Bogotá D.C

2017
Tabla de contenido:
1. Resumen………………………………………………………………………… .3

2. Estructura del proyecto ………………………………………………………..5

2.1 introducción………………………………………………….............. 5

2.2Planteamiento del proyecto……………………………………………………….5

2.3Justificación del proyecto………………………………………………………..5

2.4Objetivos generales……………………………………………………………….5

2.5Objetivos específicos…………………………………………………....................5

2.6Alcance del proyecto………………………………………………… ………… 6

2.6.1Beneficios del proyecto………………………………………………………...6

2.6.2Impacto del proyecto…………………………………………………………..6

2.6.3Restricciones o riesgos asociados al proyecto………………………………….6

2.6.4Productos o resultados al proyecto……………………………………………….7

3. Requerimientos funcionales………………………………………………………9

4. Requerimientos no funcionales………………………………………………….10

5. Estructura casos de uso………………………………………………………..11

5.1.Casos de uso………………………………………………………………….11

5.2. Diagrama de clases………………………………………………………….16

5.3 Diagrama Relacional…………………………………………………………17

5.4 Diagrama Entidad-Relación…………………………………………………18

6. Diccionario de datos……………………………………………………………..19

6.1 Diccionario de datos para cada formulario…………………………………....20

6.2 Diseño de Interfaz Gráfica del SI (Formularios Visual)................................................23

7. Código base de datos………………………………………………………………………29

7.1 Código documentado por cada capa proyecto…………………………............................34

7.2 Mapa de navegación………………………………………………………………………46


8. Conclusiones…………………………………………………………………………………47

9. Anexos……………………………………………………………………………………….49
Resumen:

La tienda de Luna es un negocio de comestibles que quiere crecer, y por ello se piensa
resolver problemas de negocios que ha llevado financieramente durante las semanas de
trabajo. En este proyecto se desarrollará el sistema de información para permitir el uso
de compras, ventas, productos, clientes, proveedores y pago de facturas, con el fin de
encontrar problemas del propietario de la empresa y cumplir el sueño de crecer.

El sistema proporcionará la asistencia requerida en el negocio "Luna", esto elaborará


todos los procesos mencionados anteriormente con una precisión y con los valores que
pueda necesitar para ser claro sobre el dinero que entra o el dinero que sale del negocio.

Finalmente, el sistema de información puede tener gráficos en forma estadística, donde


un balance de compras y ventas se mostrará para obtener un resultado más fiable y todo
gracias a la potencia tecnológica que ofrece el propio sistema.

Abstract:
The Luna store is a grocery business which wants to grow, to solve business problems
that has led financially weekness. In this project the information system will be
developed to allow the use of purchases, sales, products, customers, suppliers and bill
payment, in order to find problems of the owner of the company and fulfill the dream of
grow.

The system will provide the assistance required in the business “Luna”, this will
elaborate all processes mentioned above with an accuracy and with the values it may
need to be clear about the money and enters or the money that leaves the business.

Finally, the information system may have graphs in statistical form, where a balance of
purchases and sales will be shown to obtain a more reliable result and all thanks to the
technological power offered by the system itself.

Firma Docente de inglés:

_______________________________________
Sistema de Información:

Para el control de ventas, clientes, productos y compras intermediadas por proveedores


en la tienda luna
2. Estructura del proyecto

2.1Introducción:

En el proyecto realizado por Juan Nicolas Ordoñez Velásquez y Leixer Gabuer Molina
Villalba vamos a mejorar el negocio (Tienda Luna), mediante el sistema de
información para que tenga control de: compras, ventas, productos, clientes,
proveedores y registros. Para ello se realizara los respectivos ajustes por cada
formulario que este en nuestro sistema, como por ejemplo, los clientes se modifican
cada día así como también se eliminan o se buscan para asuntos prioritarios, en este
caso con el formulario se busca la organización de estos datos que se pueden revolver
solo con la cantidad de personas que entran y salen de la tienda. En el sistema se verá
reflejado un método innovador sobre el manejo organizado de un negocio por medio de
roles que existen dentro de la tienda, en este caso los clientes, los productos o los
empleados.

2.2 Planteamiento del problema:

En la entrevista hecha el pasado viernes 5 de febrero, la señora Luna nos comentó las
inquietudes sobre su pequeña tienda, entre ellas ella solo subsiste con lo que gana al día
que son 40.000 $ aproximadamente, pero el problema en realidad es que ella no tiene un
inventariado organizado de sus productos y no tiene la intención de expandirse por
cuestiones de subsistencia en su hogar y la economía del país.

También ella hace sus cuentas en un cuaderno, donde tiene anotadas personas las cuales
le fía y en otras hojas tenía solo cuentas matemáticas, en conclusión si por
circunstancias de la vida se llega a dañar o perder ese cuaderno, se perdería los datos y
las cuentas que debe cobrar.

2.3 Justificación del proyecto asociado:

Nosotros vamos a tratar con los problemas del negocio de la señora Luna Gonzales,
para mejorar los problemas referentes a su inventario como también su cuaderno de
cuentas y registro de pago, para que ya no se tenga que fiar o que las deudas no sean a
gran escala con otras entidades exteriores.

2.4 Objetivo general:

Desarrollaremos un sistema de información que permitirá a los productos, ventas,


compras, proveedores, clientes, registros de pago y otros de la tienda luna, estar al día
con las opciones que se brindan en el manejo de información El sistema también
permitirá que se mantenga al día con los pedidos del negocio, para no ser víctima de
grandes deudas, estafas, y también para estar atentos a las irregularidades que se
presenten en el negocio.

Por último se mantendrá al día con pedidos para no ser víctima de grandes deudas,
estafa, etc.

2.5 Objetivos específicos:


 Realizar la recolección del levantamiento de información para conocer los problemas
que puede estar afectando el negocio
 Analizar la información recolectada en el levantamiento de información(encuesta)
para tener claro aspectos claves y concluir soluciones a los problemas del negocio
 De la información obtenida se piensa y plantea los requerimientos funcionales no
funcionales para tener conciso que aspectos se pueden cumplir y cuales no

2.6 Alcance del proyecto:

El sistema de información va a administrar y controlar todos los aspectos


requeridos en el proyecto: compras, ventas, productos, proveedores, clientes y
registro de pago, para tener la información en tiempo real.

Lo que no se va a poder realizar es pedir la nómina de los empleados, pago de


servicios del negocio,arriendo del negocio.

2.6.1 Beneficios del proyecto:

● Permitirá el control de ingresos de la tienda y los gastos del día a día , también
el registro de productos y las compras que se realizan, la caja la maneja la dueña
de la empresa y ya tendría un problema solucionado que es el uso del cuaderno
donde tiene sus cuentas y anotes sobre la tienda. Tendrá registro también de los
que le deben al fiar, ya no tendrán que haber confusión o que se le olvide algún
gasto o venta , que es lo que más se ocupa es en el sistema de información.

2.6.2 Impacto del proyecto:

❖ Económico: Mejora los ingresos, el control de las ventas y gastos diarios,


de la tienda. Brindando un registro de su información para cuando venga
la Dian o cuando se desee hacer una revisión del estado del negocio.
❖ Tecnológico: Para tener el inventario de los productos y para que no
tenga pérdidas al vencer algún producto, ya tiene que estar registrado en
el sistema de información.
❖ Social: Una presentación mejor al negocio y a sus clientes brindándoles
una venta más segura, para que tengan un buen producto.
❖ Ambiental: Aparte del ahorro de papel como son: hojas,
tinta de esfero, etc…Disminuye la contaminación y desperdicio, mejora
los bosques,

2.6.3 Restricciones o riesgos asociados al proyecto:

El conocimiento del cliente referente a un equipo de cómputo(tecnología), también el


problema del dinero que afecta a la dueña o cliente al comprar un equipo de estos que es
muy costoso. Que el programa para la dueña de esta tienda no sea óptimo o tenga
falencias y errores, que no entienda algunos caracteres del programa.

También que la dueña deje encargado a alguien de la familia cuando no este ella y
tampoco la hija, requiera ayuda de la dueña o hija pero no este, por algún motivo

2.6.4 Productos o resultados del proyecto:

Entrevista: Luna
Fecha: 04 de febrero 2016
Lugar: Tienda Luna

Proyecto Tienda Luna:

-Método de levantamiento de información: Encuesta

1. Nombre de la tienda:

Rta: Tienda luna

2. Dirección donde se establece:

Rta:Cra 132 #142 d 20- conjunto plazuelas del Teruel

3. Cuánto dinero se puede ganar en un día?

Rta: $40.000 al día- Porque el salario de las personas es muy bajo y ella solo vende en
el conjunto cerrado disminuyendo mi margen de ganancia

4. Cuanto es la ganancia de un mes y de un año?

Rta: 1.200.000 al mes


14.400.000 al año

5. Cada cuanto se piden pedidos a las empresas surtidoras?

Rta: Todos los días-Por las necesidades de los propietarios del conjunto, gracias a que
queda muy cerca de los clientes

6. Cuál es el horario de apertura en el día?

Rta: 6:00 am a 10:00 pm

7. Ha tenido algún problema financiero sobre su tienda?

Rta: No-Porque a pesar de ser un negocio pequeño, no puede tener algún problema
económico, es una tienda pequeña y un conjunto pequeño

8. Tiene usted algún patrocinio?

Rta: Ninguno, porque no tiene expansión, es pequeño el negocio y solo se quiere


mantener en anonimato

9. En su tienda le gustaría tener un inventariado de todos sus productos?

Rta: Si-porque de algún modo se tiene se sacar una ganancia alta para mantener mi
hogar por eso me quiero aferrar un poco a la tecnología

10. Como se fundó la tienda y que propósitos ha ejecutado para que la tienda siga en pie

Rta: Se fundó con un pequeño capital y se ha seguido a pie por ser constante, y
disciplinado con el negocio

11. Estaría dispuesta a aprender de una base de datos que haga las ventas de usted, que
se mantenga al día con sus cuentas y sobre todo que tenga beneficios tecnológicos para
que su negocio tenga un toque moderno?

Rta: Si-porque como lo había dicho antes, quiero tener un inventario ordenado, y
también con la función de vender lo económico y para que la dueña tenga su beneficio y
el cliente tenga un buen producto

12. Ha pensado expandirse?

Rta: No, porque no soy muy abierta de ideas y solo quiero mantener el negocio con el
poquito que gano

13. Como imagina su futuro mediante su negocio?

Rta: No es un negocio para ser rico, solo para trabajar en el día a día

14. Las ganancias totales de su negocio en que las piensa invertir?

Rta: Las ganancias son solo para el negocio porque solo pide lo necesario como: aseo,
alimentos,etc(Solo lo importante)
15. La economía del país puede afectar en el crecimiento del negocio?

Rta: Sí, porque con la crisis de la economía los clientes sólo compran lo esencial y sobre
todo los cambios climáticos que se ha presentado durante el tiempo

Gracias por su atención

3. Requerimientos funcionales:

● -El sistema de información permite administrar (modifica, buscar, insertar,


eliminar) los clientes del negocio Luna
● -El sistema permitirá administrar los artículos del negocio Luna
● -El sistema permite administrar los proveedores del negocio Luna
● -El sistema permitirán validar los datos de ingreso de los usuarios del programa
● –El sistema permite registrar ventas del negocio
● El sistema permite registrar compras del negocio
Numero: RF01

Nombre: Administrar clientes de la tienda

Usuario: Luna Gonzales

Prioridad : Alta

Descripción requerimientos: Maneja los clientes por medio de una


administración ordenada
Numero: RF02

Nombre: Administra los productos del negocio

Usuario: Luna Gonzales

Prioridad: Alta

Descripción requerimientos Los productos deben estar en un buen


estado y una conservación de calidad

Numero: RF03

Nombre: Controla los proveedores del negocio

Usuario: Luna Gonzales

Prioridad: Alta

Descripción requerimientos Administra con un control eficaz los


pedidos que se piden diariamente

Numero: RF04

Nombre: Usuarios de la tienda

Usuario: Luna Gonzales

Prioridad: Alta

Descripción requerimientos: Permite un registro de los usuarios a


las cuales deben o pagan algún
producto o entran al sistema para
buscar lo que se debe

Numero: RF05

Nombre: Registra factura para ventas

Usuario: Luna Gonzales


Prioridad : Alta

Descripción requerimientos: Registro de ventas mediante los


productos que compra el negocio.

Numero: RF06

Nombre: Registra Factura para Compras

Usuario: Luna Gonzales

Prioridad: Alta

Descripción requerimientos Registro de compras, mediante las


ganancias que genera el negocio. Es
decir la realización de venta y tenerla
en archivo.

4. Requerimientos no funcionales:
● El sistema operativo que tendrá el equipo donde funcionará el sistema de
información
● El usuario que manejara el sistema de información

Numero RNF01
Nombre: Función del sistema
Usuario: Luna Gonzales
Prioridad: Alta
Descripción requerimiento El sistema no funcionara si el equipo de
cómputo no sirviera

Numero: RNF02
Nombre: Usuario del sistema
Usuario: Luna Gonzales
Prioridad: Alta
Descripción requerimiento: El sistema no tendrá acceso si el usuario
no lo usa, es decir que está inhabilitado si
el que va a usar el sistema no está en
operación
5 Estructura casos de uso

5.0 Diagrama relacional- Proyecto sistema de información

5.1 Casos de uso

Identificación de casos de uso


Id Caso CU 001
Nombre Gestiona los productos y controla el
inventariado de la tienda

Histórico caso de uso

Autores Juan Nicolás Ordoñez V-LeixerGabuer


Molina
Fecha de creación 17-feb-2016
Última actualización 17-feb-2016
Actualizado por Juan Nicolás Ordoñez V
Definición de caso de uso

Descripción
En este caso el administrador tiene control sobre el inventariado de los productos que se
manejan ,para así tener algo como una lista para estar al tanto de lo que se vende y que no

Actores : Juan Nicolás Ordoñez V –LeixerGabuer Molina


Administrador

Flujo normal

Paso Actor Administradora-dueña


1 Administradora-Dueña del negocio Permite dar una descripción
de lo que se va a guardar en
la tienda con un código y con
este se va a poder decir
cuanta cantidad hay de este
producto
2 Empleado Para esto se debe dar el
nombre, referencia del
producto y este se
almacenara en un archivo la
cual permita guardar y
consultar el producto en un
oportuno tiempo

3 Administradora-Dueña del negocio Al momento de consultar el


producto con el nombre o
código, este dará la
información principal más
las cantidades disponibles y
este determinara si hay que
pedir o no hay que pedir más
productos
Identificación de casos de uso
Id Caso CU 002
Nombre Administra los productos del negocio

Histórico caso de uso

Autores Juan Nicolás Ordoñez V-LeixerGabuer


Molina
Fecha de creación 17-feb-2016
Última actualización 17-feb-2016
Actualizado por Juan Nicolás Ordoñez V
Definición de caso de uso

Descripción
En este caso se permite administras los productos de cierta manera para su fácil distribución

Actores : Juan Nicolás Ordoñez V –LeixerGabuer Molina


Administrador

Flujo normal

Paso Actor Administradora-dueña


1 Administradora-Dueña del negocio Se da un informe de
recolección de datos(Lista de
observación)donde se dé
cuanto de cada producto hay
en el establecimiento
2 Empleado El empleado puede consultar
si hay el producto que el
quiere simplemente con
preguntarlo

3 Administradora-Dueña del negocio Por último se tiene que


separar los productos para su
fácil búsqueda
Identificación de casos de uso
Id Caso CU 003
Nombre Gestiona y controla los proveedores del
negocio

Histórico caso de uso

Autores Juan Nicolás Ordoñez V-LeixerGabuer


Molina
Fecha de creación 17-feb-2016
Última actualización 17-feb-2016
Actualizado por Juan Nicolás Ordoñez V
Definición de caso de uso

Descripción
En este caso se permite controlar todos los productos o surtidores que ingresan al negocio

Actores : Juan Nicolás Ordoñez V –LeixerGabuer Molina


Contador

Flujo normal

Paso Actor Administradora-dueña de la


empresa
1 Administradora-Dueña del negocio Cuenta los productos con el
sistema de inventariado y
este da a conocer si hay
necesidad o no de un nuevo
pedido
2 Facturas(compras y ventas) Da a conocer los proveedores
por medio de cuentas
realizadas anteriormente, en
este se da una sucesión final
de lo que se debe surtir

3 Administradora-Dueña del negocio Inspecciona el pedido


realizado y este se pasa a
inventariado administrado
por el que esté a cargo es
decir el administrador
5.2Diagrama de clases:
5.3 Diagrama Relacional:
5.4 Diagrama Entidad-Relación
6. Diccionario de datos.
Nombre Uso Comando
Entero Se usa para los datos *Int
que van de forma *Bigint
numérica y ayuda a la *numeric
expresión de números
telefónicos,
identificaciones o fechas
Cadena Se usa para las *Varchar
expresiones de texto
para el anunciado de
nombres, apellidos,
cargos, etc
Llave primaria Determina el dato más *Primarykey
importante dentro de *Long
una tabla en la base de
datos
Acceso de datos Determina que datos *String
pueden ser ingresados y *Public
cuales no *abstract
Mensajes dentro del Ayuda a tener una *Message.Box
programa referencia al momento *ToString
de ingresar datos a un *Show
formulario
Cuadro de texto Es un escrito dentro del *Textbox.Text
espacio que se da para
escribir lo que el
formulario pide
Relación de tablas Es la unión de datos por *Alter
medio de las tablas de la *References
base de datos, y todo *Constraint
esto lo hace por medio
de la llave primaria
Eliminar datos de una Elimina los datos ya *Delete
tabla insertados en una tabla
Insertar datos en una Se ingresan los datos al *Procedure
tabla formulario *exec
Buscar datos de una Se busca los datos *Proc
tabla previamente ya
insertados
Actualizar datos de una Se actualiza el datos *update
tabla que ya se ha insertado
Consultar datos Ya que los datos fueron *
insertados, se recopilan
en una lista la cual se
puede ver
Fechas Sirve para la digitación *Datetime
de fechas dentro del
formulario
Conexión a motor de Es una cadena de *SQLconection
Base de Datos código para llevar datos *DataSet
a SQL por medio de su
conexión al servidor del
computador
Consulta en conexión a Se llevan datos de SQL *SQLDataAdapter
través de los formularios y son traídos a través de *dataGridView
un vector para dichos
datos
Comandos dentro del Son datos que se *SQLcomand
formulario a través de escriben para llevar
SQL exclusivamente a SQL
Incluir datos a una clase Se asigna una variable *long
que representa un dato *bool
para la representación *DataSet
en el formulario
Confirmación de datos Al escribir ciertas *RespuestaSQL
por medio de las clases variables, estas deben
responder a SQL para
su ingreso
Sentencias o Bucles Son comandos para la *if
ejecución de un código *else
por medio de su uso *Catch
Tablas dentro del Crea un lugar para el *DataTable
código de presentación almacenamiento de
consultas

6.1 Diccionario de datos para cada formulario

Nombre tabla: Clientes


Fecha: 09/08/2017
Descripción: Tabla que contiene los clientes del negocio

Campo Tipo de Tamaño Restricción Descripción


dato

identificacionCliente Numeric 18,0 Primarykey Número de la identificación


del cliente
Nombre Varchar 30 no Nombre del cliente

Apellido Varchar 30 no Apellido del cliente

Fijo numeric 18,0 no Número telefónico del


cliente
Celular numeric 18,0 no Numero celular del cliente
Nombre tabla: Empleados
Fecha: 09/08/2017
Descripción: Tabla que contiene los empleados del negocio

Campo Tipo de Tamaño Restricción Descripción


dato

identificacionEmpleado Numeric 18,0 Primarykey Número de la


identificación del
Empleado
Nombre Varchar 30 no Nombre del Empleado

Apellido Varchar 30 no Apellido del empleado

Dirección Varchar 50 no Dirección donde reside el


empleado
Cargo numeric 18,0 no Cargo que afronta el
empleado
Fijo numeric 18,0 no Númerotelefónico del
empleado
Celular numeric 18,0 no Numero celular del
empleado

Nombre tabla: Proveedor


Fecha: 09/08/2017
Descripción: Tabla que contiene los proveedores que ingresan a vender al negocio

Campo Tipo de Tamaño Restricción Descripción


dato

Cod_proveedor Numeric 18,0 Primarykey Número del código del


proveedor
Empresa Varchar 30 no Nombre de la empresa
donde se trae el producto
valor numeric 18,0 no Número del valor del
producto
Nombre_producto numeric 18,0 no Nombre del proveedor

Nombre tabla: Productos


Fecha: 09/08/2017
Descripción: Tabla que contiene los productos que se venden del negocio

Campo Tipo de Tamaño Restricción Descripción


dato

Código Numeric 18,0 Primarykey Codigo que corresponde al


producto
Nombre Varchar 30 no Nombre del producto
CantidadDisponible Varchar 30 no Cantidad disponible o las
unidades que existen del
producto
Valorunitario numeric 18,0 no Valor de un producto
individual
Porcentajeiva numeric 18,0 no Valor actual del
iva(impuesto valor
agregado)

Nombre tabla: Ventas


Fecha: 09/08/2017
Descripción: Tabla que contiene las ventas para la cual el cliente es el involucrado

Campo Tipo de Tamaño Restricción Descripción


dato

Num_factura_venta Numeric 18,0 Primarykey Número de la factura para


la venta del producto
Nombre Varchar 30 no Nombre del producto

Cod_proveedor Varchar 30 no Código del proveedor para


realizar la venta
Identificacióncliente numeric 18,0 no Identificación del cliente

Valor numeric 18,0 no Numero celular del cliente

Cantidad_para_venta numeric 18,0 no Cantidad que se va a


vender al cliente
6.2 Diseño de interfaz gráfica del SI (Formularios visual)
7. Código base de datos

CREATEDATABASEPROYECTOFACTURA
USEPROYECTOFACTURA

CREATETABLEClientes(
identificacionClientenumeric(18,0)NOTNULL,
Nombre_clientevarchar (30)NULL,
Apellidovarchar (30)NULL,
Fijonumeric(18,0)null,
celularnumeric(18,0)null,
PRIMARYKEY(identificacionCliente)
)

CREATETABLEEmpleados(
identificacionEmpleadonumeric(18,0)NOTNULL,
Nombre_empleadovarchar (30)NULL,
Apellido_empleadovarchar (30)NULL,
Direccionvarchar (50)NULL,
Cargovarchar (50)NULL,
Fijo_empleadonumeric (18,0)NULL,
Celular_empleadonumeric (18,0)null,
Usuariovarchar (50)null,
Contraseñavarchar(50)null,
PRIMARYKEY(IdentificacionEmpleado)
)

CREATETABLEProductos(
codigonumeric(18,0)notnull,
nombre_productovarchar(50)null,
cantidaddisponibleintnull,
valorunitariobigintnull,
porcentajeivaintnull,
PRIMARYKEY (codigo)
)

createtableProveedor(
Cod_proveedornumeric (18,0)NOTNULL,
Empresavarchar(50)null,
valornumeric (18,0)null,
Nombre_productovarchar(50)null,
codigonumeric(18,0)notnull,
PRIMARYKEY (Cod_proveedor)
)

CreatetableVentas(
Num_factura_ventanumeric(18,0)NOTNULL,
Nombre_productovarchar (50)NULL,
identificacionClientenumeric(18,0)NotNULL,
valornumeric(18,0)NULL,
codigonumeric(18,0)notnull,
Cantidad_para_ventanumeric(18,0)NULL,
PRIMARYKEY (Num_factura_venta)
)

CreatetableDetalleVenta(
id_detalleventaintidentitynotnull,
Num_factura_ventanumeric (18,0)notnull,
identificacionClientenumeric (18,0)notnull,
valornumeric (18,0)null,
Nombre_productovarchar (50)null,
Primarykey (id_detalleventa)
)

CreatetableCompras(
Num_Factura_compranumeric (18,0)notNULL,
Nombre_productovarchar(50)NULL,
Cantidad_para_compranumeric(18,0)NULL,
Subtotalnumeric (18,0)NULL,
codigonumeric(18,0)notNULL,
identificacionEmpleadonumeric (18,0)NULL,
PRIMARYKEY(Num_factura_compra)
)

CreatetableDetalleCompra(
id_detallecompraintidentitynotnull,
Num_Factura_compranumeric (18,0)notnull,
identificacionEmpleadonumeric (18,0)notnull,
codigonumeric(18,0)notnull,
primarykey (id_detallecompra)
)

----*********RELACIONES DE LA BASE DE DATOS*******------

ALTERTABLEDetalleVenta
ADDCONSTRAINTFK_Ventas_DetalleVenta
FOREIGNKEY (Num_factura_venta)
REFERENCESVentas(Num_factura_venta)

altertableDetalleVenta
addconstraintFK_Clientes_DetalleVenta
foreignkey (identificacionCliente)
referencesClientes(identificacionCliente)

ALTERTABLEProveedor
ADDCONSTRAINTFK_Productos_Proveedor
FOREIGNKEY (Codigo)
REFERENCESProductos(Codigo)

altertableDetalleCompra
addconstraintFK_compras_DetalleCompra
foreignkey (Num_Factura_compra)
referencesCompras(Num_Factura_compra)

altertableDetalleCompra
addconstraintFK_Empleados_DetalleCompra
foreignkey (identificacionEmpleado)
referencesEmpleados(identificacionEmpleado)

ALTERTABLECompras
ADDCONSTRAINTFK_Productos_Compras
FOREIGNKEY (codigo)
REFERENCESProductos(codigo)

ALTERTABLEVentas
ADDCONSTRAINTFK_Productos_Ventas
FOREIGNKEY (codigo)
REFERENCESProductos(codigo)

----------------------------------------------------------------------
-------------
----------------------------------------------------------------------
-----------------
--------------PROCEDIMIENTOS Y TRIGGERS NECESARIOS PARA EL
FUNCIONAMIENTO OPTIMO DE
---------------EL PROYECTO LUNA---------------------------------------
------------------
----------------------------------------------------------------------
--------------

------------Login--------------------
createprocedureIngresar
(
@Usuariovarchar(50),
@contraseñavarchar(50)
)
as
selectCargofromEmpleados
whereUsuario=@UsuarioandContraseña=@contraseña
go

insertintoEmpleadosvalues
(1,'Jose','Suarez','dsdsdsd','Empleado',12345,12345,'Jose','12345')
insertintoEmpleadosvalues
(2,'Jose','garcia','dsdsdsdi','Administrador',123456,123457,'1101','11
01')

select*fromEmpleados
-----------------------------------------------------------Cliente----
---------------------------
createprocedureInsertar_Datos
(
@identificacion_Cliente_numeric(18,0),
@Nombre_varchar (30),
@Apellido_varchar (30),
@Fijo_numeric(18,0),
@celular_numeric(18,0))
asinsertintoClientes
(identificacionCliente,Nombre_cliente,Apellido,Fijo,celular)
values
(@identificacion_Cliente_,@Nombre_,@Apellido_,@Fijo_,@celular_);

select*fromClientes

----------------------/ Eliminar Identificacion Cliente/--------------


----------
createprocEliminar_Cliente
@identificacion_Cliente_numeric
as
deleteClientes
whereidentificacionCliente=@identificacion_Cliente_
go

select*fromClientes

---------------------/Actualizar Clientes /--------------------------


-------------------
createprocActualizar_Cliente
@identificacion_Cliente_numeric(18,0),
@Nombre_varchar (30),
@Apellido_varchar (30),
@Fijo_numeric(18,0),
@celular_numeric(18,0)
as
begin
updateClientesset
Nombre_cliente=@Nombre_,Apellido=@Apellido_,Fijo=@Fijo_,celular=@celul
ar_whereidentificacionCliente=@identificacion_Cliente_
end

select*fromClientes

----------------- Empleado--------------------------------------------
------
createprocedureInsertar_DatosEm
(
@identificacion_Empleado_numeric(18,0),
@Nombre_varchar (30),
@Apellido_varchar (30),
@Direccion_varchar(30),
@Cargo_varchar(30),
@Fijo_numeric(18,0),
@celular_numeric(18,0))
asinsertintoEmpleados
(identificacionEmpleado,Nombre_empleado,Apellido_empleado,Direccion,Ca
rgo,Fijo_empleado,celular_empleado)
values
(@identificacion_Empleado_,@Nombre_,@Apellido_,@Direccion_,@Cargo_,@Fi
jo_,@celular_);

select*fromEmpleados
------------------------------------------ Productos------------------
-------------------------
createprocInsertar_Producto
(
@codigo_bigint,
@nombre_varchar(50),
@cantidaddisponible_numeric(18),
@valorunitario_bigint,
@porcentajeiva_numeric(18))
asinsertintoProductos
(codigo,nombre_producto,cantidaddisponible,valorunitario,porcentajeiva
)
values
(@codigo_,@nombre_,@cantidaddisponible_,@valorunitario_,@porcentajeiva
_);

select*fromProductos

---------------------------PROVEEDORES--------------------------------
-----------
createprocedureInsertar_DatosPro
(
@Cod_proveedornumeric (18,0),
@Empresavarchar(50),
@valornumeric (18,0),
@Nombre_productovarchar(50))
as
insertintoProveedor
(Cod_proveedor,Empresa,valor,Nombre_producto)
values (@Cod_proveedor,@Empresa,@valor,@Nombre_producto);

select*fromProveedor

------------------------------------------------------------------
----------------------------------------------------------------------
--
--------FINALIZA LOS PROCEDIMIENTOS, AHORA EL TRIGGER SELECCIONADO
PARA
---------------EL PROYECTO--------------------------------------------

createTRIGGERactualizar_CANTIDAD
ONProductos
FORINSERT
AS
DECLARE@Cod_productonumeric(18,0),@CantidadINT
SELECT@Cod_producto=codigo,@Cantidad=cantidaddisponibleFROMinserted
UPDATEProductosSETcantidaddisponible=cantidaddisponible-@Cantidad
WHEREcodigo=@Cod_producto
GO

---------------------------------------------------------------------
-------------------------------------------------------------------
------------------Finaliza--------------------------------------------
-
----------------------------------------------------------------------
---
---------------------------------------------------------------------
7.1Código documentado por cada capa proyecto

Para Datos:

//Libreria de clases//
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Data; //maneja los datos de SQL//
usingSystem.Data.SqlClient;

namespace Datos
{
publicclassConexion// clase publica con el nombre de conexion//
{
privatestring mensaje; //Variable tipo privada de mombre mensaje//
privateSqlConnectionconn;//Variable tipo tpo SQL llamada SQLconettion con el
nombre conn//

publicstring Mensaje
{
get { return mensaje; }// Entra y devuelve la variable mensaje//
set { mensaje = value; }//Modifica y valua la variable mensaje//

publicConexion()// la variable conexion se hace publica para su uso//


{

//Cadena de Conexion Para SQL Server:


Stringcadenaconexion = @"Data Source=DESKTOP-
SI8BIMI\SQLEXPRESS;InitialCatalog=PROYECTOFACTURA;Integrated Security=True";

conn = newSqlConnection(cadenaconexion);//Se toma la variable conn y con ella se


lleva a la variable SQLconection y lo pone sobre la variable cadenaconexion//

}
//metodo consultar en SQL//
publicDataSetConsultarSQL(StringSentenciaSQL)//metodo publico DataSet con el
nombre de consultarSQL//
//donde se pone la sentenciaSQL donde va a estar crood y el tipo es string//
{
try//Comando para disponer los errores que hay en el codigo//
{//revision del sistema//
conn.Open();//abro la conexionconn//
SqlDataAdapterobjRes//variable tipo objeto basada en la programacionrientada a
objetos (POO)//
= newSqlDataAdapter(SentenciaSQL, conn);//SQLdataadapter,puente
para ingresar datos//
DataSet datos = newDataSet();//DataSetdeposito de datos , tabla temporal para
guardar los datos//
objRes.Fill(datos, "DatosConsultados");// vel objeto ObjRes se llena y es igual a
los datos con la consulta//
mensaje = "La consulta de datos es Exitosa";//mensaje de consulta exitosa//
return datos;// retoman datos y se guardan//
}
catch (ExceptionMiExc)//envia un mensaje en caso en que el error no se corrija la
sentencia de arriba//
//Expection con el nombre de MiExc donde muestralos errores//
{
DataSetsindatos = newDataSet();//abrimos un DataSet con el nombre de sindicatos
y le indicamos que es un nuevo DataSet//
mensaje = "ERROR: " + MiExc.Message; //se abre la variable de mensaje y le
decimos que es igual a "error" y con ella que se muestre//
//en la variable MiExc con el metodo de mensaje//

returnsindatos;// nos devuelve la variable sindicatos(retornar)//


}
finally//limpiar recursos utilizados//
{
conn.Close();// cerramos en comando conn//
}
}

publicboolEjecutarSQL(StringSentenciaSQL)// (Bool-comando que maneja dos


metodos:True o False)//
// Con el nombre de EjecutasSQL y tomo la SEntenciaSQL para abrir la conexion//
{

try
{
conn.Open();
SqlCommandmiComando = newSqlCommand();//Envia sentencias de tipo SQL para ser
ejecutadas en visual//
miComando.Connection = conn;//ponemos miComando y le establecemos la coneccion
sobre el comando conn//
miComando.CommandText = SentenciaSQL;//miComando lo vuelvo en forma de texto(que
recibe sentencias por medio de sentencias de SQL) y este es el que se guarda en
la SntenciaSQL//
miComando.ExecuteNonQuery();//ejecuta el comando//

mensaje = "Proceso Ejecutado Con Exito";//muestro el mensaje del proceso


ejecutado//
returntrue;//retorno el bool en forma true//
}
catch (Exception e)
{

mensaje = "Se Presento El Siguiente Error " + e.Message;


returnfalse;//retorno bool en false//
}
finally
{
conn.Close();//cierro el comando conn//
}
}

publicboolInsertarSPoCliente(longidentificacion_Cliente, string Nombre, string


Apellido, string Fijo, string celular)
{
try
{
SqlCommandcmd = newSqlCommand("Insertar_Datos", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@identificacion_Cliente_", SqlDbType.Int, 18).Value =
identificacion_Cliente;
cmd.Parameters.Add("@Nombre_", SqlDbType.VarChar, 30).Value = Nombre;
cmd.Parameters.Add("@Apellido_", SqlDbType.VarChar, 30).Value = Apellido;
cmd.Parameters.Add("@Fijo_", SqlDbType.Int, 18).Value = Fijo;
cmd.Parameters.Add("@celular_", SqlDbType.Int, 18).Value = celular;

conn.Open();
cmd.ExecuteNonQuery();

returntrue;

}
catch (Exception e)
{

mensaje = "Se presenta el siguiente error" + e.Message;


returnfalse;
}
finally
{
conn.Close();
}
}

publicboolInsertarSPEmpleado(longidentificacion_Empleado, string Nombre, string


Apellido, stringDireccion, string Cargo, string Fijo, string celular)
{
try
{
SqlCommandcmd = newSqlCommand("Insertar_DatosEm", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@identificacion_Empleado_", SqlDbType.Int, 18).Value =
identificacion_Empleado;
cmd.Parameters.Add("@Nombre_", SqlDbType.VarChar, 30).Value = Nombre;
cmd.Parameters.Add("@Apellido_", SqlDbType.VarChar, 30).Value = Apellido;
cmd.Parameters.Add("@Direccion_", SqlDbType.VarChar, 30).Value = Direccion;
cmd.Parameters.Add("@Cargo_", SqlDbType.VarChar, 30).Value = Cargo;
cmd.Parameters.Add("@Fijo_", SqlDbType.Int, 18).Value = Fijo;
cmd.Parameters.Add("@celular_", SqlDbType.Int, 18).Value = celular;

conn.Open();
cmd.ExecuteNonQuery();

returntrue;

}
catch (Exception e)
{

mensaje = "Se presenta el siguiente error" + e.Message;


returnfalse;
}
finally
{
conn.Close();
}
}
publicboolInsertarSPProducto(longcodigo_del_producto, string nombre,
stringcantidad_disponible, stringvalor_unitario, stringporcentajeiva)
{
try
{
SqlCommandcmd = newSqlCommand("Insertar_Producto", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@codigo_", SqlDbType.Int, 18).Value = codigo_del_producto;
cmd.Parameters.Add("@nombre_", SqlDbType.VarChar, 30).Value = nombre;
cmd.Parameters.Add("@cantidaddisponible_", SqlDbType.Int, 18).Value =
cantidad_disponible;
cmd.Parameters.Add("@valorunitario_", SqlDbType.Int, 18).Value = valor_unitario;
cmd.Parameters.Add("@porcentajeiva_", SqlDbType.Int, 18).Value = porcentajeiva;

conn.Open();
cmd.ExecuteNonQuery();

returntrue;

}
catch (Exception e)
{

mensaje = "Se presenta el siguiente error" + e.Message;


returnfalse;
}
finally
{
conn.Close();
}
}
publicboolActualizarSPoClientes(longidentificacion_Cliente, string Nombre, string
Apellido, string Fijo, string celular)
{
try
{
SqlCommandcmd = newSqlCommand("Actualizar_Cliente", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@identificacion_Cliente_", SqlDbType.Int, 18).Value =
identificacion_Cliente;
cmd.Parameters.Add("@Nombre_", SqlDbType.VarChar, 30).Value = Nombre;
cmd.Parameters.Add("@Apellido_", SqlDbType.VarChar, 30).Value = Apellido;
cmd.Parameters.Add("@Fijo_", SqlDbType.Int, 18).Value = Fijo;
cmd.Parameters.Add("@celular_", SqlDbType.Int, 18).Value = celular;

conn.Open();
cmd.ExecuteNonQuery();

returntrue;

}
catch (Exception e)
{

mensaje = "Se presenta el siguiente error" + e.Message;


returnfalse;
}
finally
{
conn.Close();
}
}
publicboolEliminarSPCliente(longidentificacion_Cliente)
{
try
{
SqlCommandcmd = newSqlCommand("Eliminar_Cliente", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@identificacion_Cliente_", SqlDbType.Int, 18).Value =
identificacion_Cliente;
conn.Open();
cmd.ExecuteNonQuery();

returntrue;

}
catch (Exception e)
{

mensaje = "Se presenta el siguiente error" + e.Message;


returnfalse;
}
finally
{
conn.Close();
}
}
publicstringIniciarSesion(string Usuarios, string contraseña)
{
try
{
string roll = "";
SqlDataReaderdr;
SqlCommandcmd = newSqlCommand("Ingresar", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Usuario", SqlDbType.VarChar, 50).Value = Usuarios;
cmd.Parameters.Add("@contraseña", SqlDbType.VarChar, 50).Value = contraseña;

conn.Open();
dr = cmd.ExecuteReader();
if (dr.Read() == true)
{
roll = dr["Cargo"].ToString();
}
return roll;
}

catch (Exception e)
{

mensaje = "Se presenta el siguiente error" + e.Message;


return mensaje;
}
finally
{
conn.Close();
}
}
}
}

Para lógica:

//libreria de clases//
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
using Datos;//Se hace el uso de la carpeta Datos(conexion)//
usingSystem.Data;

namespaceLogica/* */
{
publicclassClientes:Conexion/*clase publica que hace una referencia a conexion de
la capa de datos*//*mediante F12*/

{
/*DECLARO VARIABLES PRIVADA QUE EL USUARIO NO VA A VER*/
privatelongidentificacion_Cliente;
privatestring Nombre;
privatestring Apellido;
privatestring Fijo;
privatestring celular;

publiclongidentificacion_cliente/*long =TIPO DE DATO GRANDE MAS QUE EL INT*//*


permitir llevar y traer los datos al formulario */
{
get { returnidentificacion_Cliente; }
set { identificacion_Cliente = value; }
}

publicstring nombre
{
get { return Nombre; }
set { Nombre = value; }
}

publicstring apellido
{
get { return Apellido; }
set { Apellido = value; }
}

publicstring fijo
{
get { return Fijo; }
set { Fijo = value; }
}

publicstring Celular
{
get { return celular; }
set { celular = value; }
}

publicboolInsertarSPoCliente()
{
boolrespuestaSQL = InsertarSPoCliente(this.identificacion_Cliente, this.Nombre,
this.Apellido, this.Fijo, this.celular);/*llenar*/
/*metodo donde se llama la capa datos como un puente de( capa datos y capa
logica) y ejecuta */
returnrespuestaSQL;/*tipo de dato booleano dependiendo del resultado de la capa
de datos cuando es true*/
}

publicDataSetConsultarClientes(stringidentificacion_Clientexconsultar)
/*metodopublico que traiga datos de consultarxdatos*/
{
stringcadenaSQLConsultar = "SELECT *FROM Clientes WHERE identificacionCliente = "
+ identificacion_Clientexconsultar + " "; /*tipo
cadena*//*concatenar=Unir*//*para que el dato quede unido con la consulta*/

DataSetConsultaResultante = ConsultarSQL(cadenaSQLConsultar); /* */
returnConsultaResultante;
}

publicDataSetConsultarTodosClientes()//se crea el DataSet para guardar los


datos//
{
stringcadenaSQLConsultar = "SELECT *FROM Clientes";

DataSetConsultaResultante = ConsultarSQL(cadenaSQLConsultar);//se pide la cadena


consultarestante y es igual a la consulta SQL donde esta la cadenaSQLconsultar//
returnConsultaResultante;//retorna la consultarestante//

publicboolActualizarSPoClientes()//los datos de bool como entran se tienen que


regresar//
{
boolrespuestaSQL = ActualizarSPoClientes(this.identificacion_Cliente,
this.Nombre, this.Apellido, this.Fijo, this.celular);
// lacadenaSQLactualizar toma las variable con el metodo "This" y alli se
remplazan por los de los datos//
returnrespuestaSQL;
//string=varchar//
}

publicboolEliminarSPCliente(stringidentificacion_Cliente)
{
boolrespuestaSQL = EliminarSPCliente(this.identificacion_Cliente);
//la respuestaSQL permite devolver mi dato gracias al bool//
returnrespuestaSQL;

}
}

Para presentación:

//libreria de clases//
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;// se conecta con el formulario que se diseña//
usingLogica; // se hace uso de elcodigo que esta en el metodologica//

namespacePresentacion//nombre del cuerpo de codigo//


{
publicpartialclassClientesFRM : Form//clase publica parcial que se conecta con el
formulario//
{
publicClientesFRM()// nombre del formulario//
{
InitializeComponent();//iniciar el componente//
}

privatevoidInsertarCliente_Click(objectsender, EventArgs e)//boton evento de tipo


click//
{

if (camposvacios() == true)
{
ClientesObjClientes = newClientes();//se crea un objeto de la clase Clientes con
el nombre ObjClientes//

try//try-catch:contiene los errores de la sentencia,captura los rreores del


codigo//
{
ObjClientes.identificacion_cliente = long.Parse(textBox1.Text);
//parse:convertidor// //convierte un string en un long//
ObjClientes.nombre = textBox2.Text;
ObjClientes.apellido = textBox3.Text;
ObjClientes.fijo = textBox4.Text;
ObjClientes.Celular = textBox5.Text;

boolrespuestaSQL = ObjClientes.InsertarSPoCliente();// la respuestaSQL de tipo


bool es igual al objetoclientes y con ella traigo el insertarClientes de la clase
logica//

if (respuestaSQL == true)
{
MessageBox.Show("los datos del nuevo cliente fueron insertados correctamente");
textBox1.Text = " ";
textBox2.Text = " ";
textBox3.Text = " ";
textBox4.Text = " ";
textBox5.Text = " ";
}
else
{
MessageBox.Show(ObjClientes.Mensaje);//se llama el mensaje de elmetodoconexion
donde doce que es un error//
}
}
catch (Exception Ex)
{
MessageBox.Show("Error! : " + Ex.Message + " " + ObjClientes.Mensaje);//Muestra y
valida el error para el bucle else//

}
}
}

privatevoid button2_Click(objectsender, EventArgs e)


{
ClientesObjClientes = newClientes();
try
{
DataSetDatosClientes = ObjClientes.ConsultarClientes(textBox1.Text);
DataTableDatosconsultados = DatosClientes.Tables["DatosConsultados"];

intnumregistros = Datosconsultados.Rows.Count;
if (numregistros == 0)
{
MessageBox.Show("No existe en la Base de Datos Clientes con esta
identificacion");
}
else
{

textBox2.Text =
Datosconsultados.Rows[0]["Nombre_cliente"].ToString();
textBox3.Text =
Datosconsultados.Rows[0]["Apellido"].ToString();
textBox4.Text = Datosconsultados.Rows[0]["Fijo"].ToString();
textBox5.Text =
Datosconsultados.Rows[0]["celular"].ToString();

}
}
catch (Exception Ex)
{
MessageBox.Show("Error!:" + Ex.Message + " " + ObjClientes.Mensaje);
}
}

privatevoid button3_Click(objectsender, EventArgs e)


{
ClientesObjClientes = newClientes();

try
{
ObjClientes.identificacion_cliente = long.Parse(textBox1.Text);
ObjClientes.nombre = textBox2.Text;
ObjClientes.apellido = textBox3.Text;
ObjClientes.fijo = textBox4.Text;
ObjClientes.Celular = textBox5.Text;

boolrespuestaSQL = ObjClientes.ActualizarSPoClientes();

if (respuestaSQL == true)
{
MessageBox.Show("los datos de este cliente fueron actualizados correctamente");
textBox1.Text = ""; textBox2.Text = ""; textBox3.Text = "";
textBox4.Text = ""; textBox5.Text = "";
}

else
{
MessageBox.Show(ObjClientes.Mensaje);

}
}
catch (Exception Ex)
{
MessageBox.Show("Error!: " + Ex.Message + " " +
ObjClientes.Mensaje);
}
}

privatevoid button4_Click(objectsender, EventArgs e)


{
ClientesObjClientes = newClientes();

try
{
boolrespuestaSQL = ObjClientes.EliminarSPCliente(textBox1.Text);

if (respuestaSQL == true)
{

MessageBox.Show("Los datos de este cliente fueron eliminados correctamente");


textBox1.Text = ""; textBox2.Text = ""; textBox3.Text = "";
textBox4.Text = ""; textBox5.Text = "";
}

else
{
MessageBox.Show(ObjClientes.Mensaje);
}
}
catch (Exception Ex)
{
MessageBox.Show("Error !: " + Ex.Message + " " +
ObjClientes.Mensaje);

}
}

privatevoid button5_Click(objectsender, EventArgs e)


{
ClientesObjClientes = newClientes();
try
{
DataSetDatosClientes = ObjClientes.ConsultarTodosClientes();
DataTableDatosConsultados = DatosClientes.Tables["DatosConsultados"];

intnumregistros = DatosConsultados.Rows.Count;

if (numregistros == 0)
{
MessageBox.Show("No hay ningun Alumno en la base de datos");

}
else
{
dataGridView1.DataSource = DatosConsultados;
}
}
catch (Exception Ex)
{
MessageBox.Show("Error!: " + Ex.Message + " " + ObjClientes.Mensaje);

}
}
privatevoid button6_Click(objectsender, EventArgs e)
{
this.Close();
}

privatevoid textBox1_KeyPress(objectsender, KeyPressEventArgs e)


{
Verificar en = newVerificar();
en.soloNumeros(e);
}

privatevoid textBox2_KeyPress(objectsender, KeyPressEventArgs e)


{
Verificaref = newVerificar();
ef.soloLetras(e);
}

privatevoid textBox3_KeyPress(objectsender, KeyPressEventArgs e)


{
Verificaref = newVerificar();
ef.soloLetras(e);
}

privatevoid textBox4_KeyPress(objectsender, KeyPressEventArgs e)


{
Verificar en = newVerificar();
en.soloNumeros(e);
}

privatevoid textBox5_KeyPress(objectsender, KeyPressEventArgs e)


{
Verificar en = newVerificar();
en.soloNumeros(e);
}

publicboolcamposvacios()
{

if (textBox1.Text.Trim() == "")
{
MessageBox.Show("No pueden quedar campos vacios");
returnfalse;
}

if (textBox2.Text.Trim() == "")
{
MessageBox.Show("No pueden quedar campos vacios");
returnfalse;
}

if (textBox3.Text.Trim() == "")
{
MessageBox.Show("No pueden quedar campos vacios");
returnfalse;
}
if (textBox4.Text.Trim() == "")
{
MessageBox.Show("No pueden quedar campos vacios");
returnfalse;
}
if (textBox5.Text.Trim() == "")
{
MessageBox.Show("No pueden quedar campos vacios");
returnfalse;
}

else
{
returntrue;
}
}
}

7.8 Mapa de navegación


8. Conclusiones:

- Analizamos y comprendimos la importancia del script generada en SQL server


con todo sus procesos de código, mediante el cual hacemos la conexión de las
interfaces en visual complementándose entre estos programas, para que la
señora Luna Gonzales este satisfecha con los objetivos realizados.
- La importancia de alcanzar y conocer, aprender conocimientos de lógica
mediante el lenguaje de programación C# y SQL SERVER en el que pudimos
entender por qué es fundamental los procesos del código, explicación de
comandos utilizados en este lenguaje.
- Tenemos que entender que el objetivo mínimo era presentar un trabajo o
proyecto de calidad, en el cual tenía que estar a la satisfacción del negocio
respectivo que fue a la dueña Luna Gonzales. En donde aplicamos todo los
aprendizajes vistos en Grado 10 y 11 para presentar el trabajo de calidad.
- Con estas evidencias de aprendizaje pudimos ver que todo el sistema que está
programado, puede servir para la solución de los problemas evidenciados en el
levantamiento de información y también para el desarrollo integral del negocio
Luna

9. Anexos

ELEMENTOS PÁGINAS
Datos escritos sobre las problemáticas, el proyecto y la solución del
problema alcanzado [1 a 23]
INTRODUCCION

Representación de los formularios en visual


(parte aplicativa del proyecto [24 a 29]
Apéndice 2 o

Apéndice 3 Contexto [25 a 46]

Código base de datos


Código de visual con su estructura y funcionamiento explicado
Mapa de navegación acerca de las rutas del manejo del aplicativo
Apéndice 4 [47 a 48]

C conclusiones
A

Das könnte Ihnen auch gefallen