You are on page 1of 11

JugueteraToysTown(TT)

Objetivos

Generales

Queelestudianteanalice,resuelvaproblemasypropongasolucionespormediode
programacin.
Queelestudianterealiceunaaplicacindesoftwareutilizandobasesdedatosy
programacin.
PonerenprcticalosconocimientosadquiridosenelcursodeProgramacinde
Computadoras2.

Especficos

Utilizarunabasededatosparaguardaryconsultarinformacin.
UtilizarellenguajedeprogramacinVisualBasicparacrearunaaplicacinde
software.
CrearsentenciasbsicasenlenguajeSQLparaagregar,modificaryconsultar
informacinenlabasededatos.
AprendercomandosdeSQLServercomoselect,insert,update,groupby,orderbyy
funcionescomosum(),count(),getdate().
Crearreportesquemuestreninformacinimportanteparatomadedecisiones.

Descripcindelproblema:
La juguetera Toys Town (TT) solicita una aplicacin de escritorio, con interfaz grfica con
base a formularios, para ser asaplicadaenlosdistintospuntosdepagaque seencuentran
dentro de las diferentes sucursales de la empresa, la informacin respecto a los juguetes
ser almacenado en una base de datos en SQL Server, que tendr el nombre de
juguetera. El desarrollo de la aplicacin se dividir en dos fases, cada una con su
respectivafechadeentrega,vaseltimapginadeldocumento.

Lastablastienenlasiguienteestructura:

marca: En esta tabla se guardar simplemente el nombre de las marcas de juguete que
comerciaTT,lasmarcasseagregarndirectamentedesdeSQLManagement.
Nombredel
Campo

Tipo

Default

id_marca

int

identity(1,1)

nombre_marca

varchar(100)

Ninguno

PK

UK FK

PK=PrimaryKey,UK=UniqueKey,FK=ForeignKey

Ejemplo:
id_marca

nombre_marca

Hasbro

Lego

PlaySkool

juguete: Esta tabla tendr registrado a todos los juguetes que manejar la sucursal, el
campoid_marcahacereferenciaalcampoqueesllaveprimariaenlatablamarca.
Nombredel
Campo

Tipo

Default

id_juguete

int

identity(1,1)

no_serie

varchar(15)

nombre_juguete

PK

UK

FK

Ninguno

varchar(100)

Ninguno

id_marca

int

Ninguno

Referenciaatablamarca,sullave
primariaid_marca

precio

decimal(10,2
)

descuento

decimal(10,2
)

no_existencias

int

color_principal

varchar(100)

Ninguno

Ejemplo:
id_juguete

no_serie

nombre_juguete

id_marca

precio

descuento

no_existencias

color_principal

454334534356569

FiguraAdvenger:

95.99

0.10

100

verde

HulkAdventures
2

178957415258957

Transformers
TitanOptimus
Prime

225.50

0.0

25

rojo

259637848592544

LegoStarWars:
LukeSkyWalker
Armable

380.00

0.15

negro

cliente:Aqu registramos a los clientes,en la aplicacin serecomienda(sedarn puntos extrasen


casodenosacar100sisediseaestaparte)que alhacerunaventa,sinoexisteelclientequelanze
un formulario aparte para registrar, el nmerode telefono por defectoes 0000000en casoque el
clientenotengaunnmerotelefnicoquedar.
Nombredel
Campo

Tipo

Default

id_cliente

int

identity(1,1)

dpi

varchar(15)

nombres

PK

UK

FK

Ninguno

varchar(75)

Ninguno

apellidos

varchar(75)

Ninguno

telefono

varchar(12)

00000000

venta: Se registra una venta de un cliente, considere que es como la informacin bsica en una
factura y que la tabla detalle_venta (que est descrita abajo) es el listado de productos que se
registran en la factura, el campo subtotal es la suma de todos los productos vendidos que
pertenezcan almismoid_venta,tambinexistela referenciaa latablacliente(id_cliente) para saber
aquienselevendilosjuguetes.
El campo total se calcula de la sumade todoslos registros endetalle_venta quetenganelmismo
valorendetalle_ventacomollavefornea.

Nombredel
Campo

Tipo

Default

id_venta

int

identity(1,1)

id_cliente

int

total
fecha

PK

UK

FK

Ninguno

Referenciaatablacliente,su
llaveprimariaid_cliente

decimal(10,2
)

datetime

getdate(),
ponela
fechadeldia
pordefecto

id_venta

id_cliente

subtotal

fecha(laformaenquese
muestrelafechaquedaa
discrecindelestudiante)

537.39

15/09/16

1709.67

16/09/16

detalle_venta:Como semencionenlatablaventa,aquregistramostodoslosproductos vendidos,


referenciadoaunid_ventaporlallavefornea
Nombredel
Campo

Tipo

Default

id_detalle_venta

int

identity(1,1)

id_juguete

int

id_venta

PK

UK

FK

Ninguno

Referenciaatablajuguete,su
llaveprimariaid_juguete

int

Ninguno

Referenciaatablaventa,sullave
primariaid_venta

unidades

int

precio_venta

decimal(10,2
)

descuento_venta

decimal(10,2
)

id_detalle_venta

id_juguete

id_venta

unidades

precio_venta

descuento_venta

95.99

0.10

225.50

0.0

225.50

0.0

380.00

0.15

95.99

0.10

Si podemos observar los registros 1 y2(id_detalle_venta)pertenecenalaventa1y3,4,5a


venta 2 de la tabla venta, normalmente el total de una venta se calcula de la siguiente
forma:

venta x = (precio_venta 1 * unidades 1) +(precio_venta2*unidades2)+(precio_venta


n*unidadesn)

donde n representa a un registro de la venta de un producto y x algn registro de la tabla


venta que se relaciona con n registros de venta de la tabla detalle_venta,pero debemos
incluireldescuento:

venta x = (precio venta 1 * unidades 1(precio_venta1*unidades1*descuento_venta1))


+ (precio venta 2 * unidades 2 (precio_venta 2 * unidades 2 * descuento_venta 2)) +
(precioventan*unidadesn(precio_ventan*unidadesn*descuento_ventan)

Porejemplo,laventaconid_venta=1quedaradelasiguienteforma:
venta1=(95.99*1(95.99*1*0.1))+(225.50*2(225.50*0.0))=537.39
yparalaventa2
venta 2 = (225.50 * 5 (225.50 * 5 * 0.0)) + (380.00 * 1 (380.00 * 0.15)) + (95.99 * 3
(95.99*3*0.10))=1709.67

ModeloEntidadRelacin:
Las relaciones son las flechas con punta de llave y el otro lado un signo de infinito, una
relacin representa una llave fornea, el signo de infinito es donde est la tabla con el
campo con la llave fornea/extranjera y el lado de la llave es donde estlallaveprimariaa
laquesereferencia.

Funcionalidadesdelaaplicacin:

Fase1:

La aplicacin mostrar un listado de todos los juguetes que se encuentran en la


tienda,filtradospormarca,nombreycolor.
El usuariodelaaplicacin(empleadode TT)lausarparaventasdelosclientesalo
largo del da, un cliente puede pedir deunoa muchosjuguetesen unasolacompra,
estascomprasserevisarnsiserealizaron,desdeSQLManagement.
Capacidad de aplicar un porcentaje de descuento a cada uno de los juguetes,
habiendounmendondeserposiblehacerlo.
Opcin para listar todos los juguetes que se encuentren registrados en la base de
datos,confiltropormarcayrangodeprecios.
Fase2:
Se comprobar las existencias del producto en una venta, y la restringir si ya no
hay existencias, adems de un mdulo para registrar que se agreguen ms
existenciasaunproductoqueentrenmsexistenciasenlabodegadelasucursal.
Sepodrconsultardesdelaaplicacin:
Listado del detalle de las ventas realizadas, filtradas por un id_venta
especfico.
Listado del detalle de las ventas realizadas, filtradas poreldpidelclientey/o
filtradasporunciertorangodefecha.

SetendrnqueobtenerlassiguientesconsultasdesdeSQLManagement:
Mostrar las marcas que existen en la base de datos y el nmero respectivo
dejuguetesconesamarca(usodeconsultagroupby).
Mostrar los colores que existen en la base de datos y el nmero respectivo
de juguetes con esa marca (uso de consulta group by), ordenado por el que
tienemayornmero

Nota: Todas lasconsultasqueincluyanunatablacon unallavefornea,enlugardemostrar


la llave fornea, debe de mostrar el dato relevante de la tabla a la que referenciaesallave
fornea.
Ejemplodelaprimeraconsultaenlafase1:

Incorrecto
id_juguete

no_serie

nombre_juguete

id_marca

precio

descuento

no_existencias

color_principal

4543345343
56569

FiguraAdvenger:
HulkAdventures

95.99

0.10

100

verde

1789574152
58957

TransformersTitan
OptimusPrime

225.50

0.0

25

rojo

2596378485
92544

LegoStarWars:Luke
SkyWalkerArmable

380.00

0.15

negro

Correcto
id_juguete

no_serie

nombre_jugu
ete

nombre_marca

precio

descuento

no_existencias

color_principal

454334534
356569

Figura
Advenger:
Hulk
Adventures

PlaySkool

95.99

0.10

100

verde

178957415
258957

Transformers
Titan
Optimus
Prime

Hasbro

225.50

0.0

25

rojo

259637848
592544

LegoStar
Wars:Luke
SkyWalker
Armable

Lego

380.00

0.15

negro

Seaplicaelusodelcomandojoin.

Consideracionesrespectoalabasededatosylaaplicacin:
El nmero de registros en cada tabla queda a criterio del estudiante, pero tomar en
cuenta tener los suficientes para que la aplicacin pueda ser calificada de la mejor
forma(Ejemplo:1registrodelatablaventanoespermitido).
La funcionalidades de tipo mostrar informacin puede hacerseconunobjetodevb
a libre eleccin, solo tomar en cuenta que la informacin mostrada debe de ser
legible.
Puede
usar este catalogo para
llenar su base de datos:
https://toysville.com.gt/checkout/

A continuacin se muestra un breve ejemplo del diseo finaldelprograma,siendounaguia


paraelprogramador,noesobligatoriousarloexactamenteigual.

Entregables:
Script de la base de datos con todas sus tablas. Este debe de ir en un archivo con
extensin .sql o .pdf, tambin se debe de incluir todas las consultas SQL que
hicieronparalainsercinyconsultadedatos.
CdigoutilizadoparalaaplicacindeVisualBasic(Lacarpetadelproyecto)
Tododebedeirdentrodeunarchivo.zipo.rar
Entregar al correo de laboratorio: progra0922016@gmail.com, en caso de que el
archivo no sea aceptado por el correo, subir el archivo en un servidor aparte
(dropbox, google drive, mega) y enviar por correo el link o cambier la extensin
.zip/.rarconotro,ejemplo:.zip092(Nota:Nosiemprefuncionaelsegundomtodo)
Asunto del correo [092]ProyectoFase<No.Fase>_<carnet>, mismo nombre para el
archivo .rar o .zip. Ejemplo: Asunto [092]ProyectoFase1_201123020 y Entregable
Asunto[092]ProyectoFase1_201123020.rar

Recomendaciones:
Este es un buen sitio para estudiar SQL Basico: http://www.w3schools.com/sql/,
tomar en cuenta que la programacin implica estudio propio del estudiante, es
necesarioinvestigardetalladamente.
Concntreseenlafuncionalidaddelsistema,nohaypuntosporagregarestiloscomo
colorearlosbotones,fondos,etc.

Restricciones:
ElproyectoesINDIVIDUAL.
El lenguaje para programacin de la aplicacin de escritorio es Visual Basic, de
preferencialaversin2012o2013
El DBMS para la base de datos ser SQL Server, de preferencia la versin 2012,
tambinpuedeusarsePostgres
Si se detectan copias parciales o totales la nota ser 0 puntos y se har el debido
reportealasautoridadescorrespondientesyellosdecidirnlasancin.

Fechadeentregafase1:
Lunes 19 de octubre de 2016, segn el horario de calificacin que publicaremos
posteriormente.
Fechadeentregafase2,seinformarmsadelante.

You might also like