Ejercicio I03 - Esto definitivamente no es Steam
Consigna
Se trabajará sobre una aplicación de Windows Forms para realizar operaciones de ABML en base a dos tablas relacionadas.
Antes de empezar, descargar la cáscara del proyecto y trabajar sobre la misma.
Parte I
Copiar el siguiente script de SQL y ejecutarlo en SQL Server Management Studio (SSMS):
CREATE DATABASE [EJERCICIOS_UTN];
GO
USE [EJERCICIOS_UTN];
GO
CREATE TABLE [EJERCICIOS_UTN].dbo.JUEGOS
(
CODIGO_JUEGO INT IDENTITY(1,1) PRIMARY KEY ,
CODIGO_USUARIO INT NOT NULL,
NOMBRE VARCHAR(255) NOT NULL ,
PRECIO FLOAT NOT NULL,
GENERO VARCHAR(255) NOT NULL,
);
GO
Insert into JUEGOS VALUES (1000,'HALO: MCC',1500,'FPS')
GO
CREATE TABLE [EJERCICIOS_UTN].dbo.USUARIOS
(
CODIGO_USUARIO INT IDENTITY(1000,1) PRIMARY KEY ,
EMAIL VARCHAR(255) NOT NULL ,
USERNAME VARCHAR(255) NOT NULL,
PASSWORD VARCHAR(255) NOT NULL,
);
GO
Insert into USUARIOS VALUES ('lauti@gmail','lgalarza','1234')
Insert into USUARIOS VALUES ('mauricio@gmail','mcerizza','4321')
Insert into USUARIOS VALUES ('esteban@gmail','eprieto','4532')
Al refrescar el SSMS, deberían ver la base de datos EJERCICIOS_UTN
creada con dos tablas: USUARIOS
y JUEGOS
.
Parte II
Crear una aplicación de tipo biblioteca de clases y agregar los elementos del siguiente diagrama:
Clase Juego
Contendrá todos los elementos de la tabla JUEGO
con sus propiedades en sólo lectura y sus constructores correspondientes.
Clase Usuario
Contendrá solo el username
y el codigoUsuario
como atributos y una única propiedad sólo lectura, además de su respectivo constructor.
La sobrecarga del método ToString
retornara el username
.
Clase JuegoDAO
Esta clase estática será la encargada de realizar todas las operaciones sobre la tabla JUEGOS
.
Se deberán instanciar sus atributos en el constructor de la clase.
Método
Eliminar
: Elimina un juego de la tabla en base al id recibido.Método
Modificar
: Modifica las columnasPRECIO
,NOMBRE
yGENERO
de la tabla en base al id recibido.Método
Guardar
: Guarda un nuevo registro, tener en cuenta queCODIGO_JUEGO
es una columna de identidad.Método
Leer
: Realiza una consulta a la base de datos que traiga los datos de los usuarios y sus juegos para instanciar objetos de tipoBiblioteca
.Método
LeerPorId
: Retorna un juego de la base de datos a partir del id recibido.
Clase UsuarioDAO
Esta clase también estática será la encargada de realizar las operaciones sobre la tabla USUARIOS
.
Como en JuegoDao
sus atributos van a ser inicializados en el constructor.
El método Leer
realizará una consulta para traer las columnas USERNAME
y CODIGO_USUARIO
de la tabla.
Parte III
Continuar con el proyecto de Windows Forms provisto en la cáscara y seguir el siguiente diagrama:
Formulario FrmBiblioteca
Se encuentra compuesto por cuatro botones y un control de tipo DataGridView
, en este control vamos a tener cargada nuestra colección de objetos Biblioteca
.
Método
RefrescarBiblioteca
: Realiza las llamadas al métodoLeer
cada vez que ocurra un cambio a las entidades. Tener en cuenta los métodosUpdate
yRefresh
.Botón
Salir
: Cierra el formulario.Botón
Alta
: Crea una nueva instancia deFrmAlta
para cargar nuestro nuevo juego a la tabla. RetornaDialogResult.OK
una vez terminada la operación.Botón
Modificar
: ReutilizaFrmAlta
para poder modificar toda la información del juego pero sin dejarle utilizar el combo de usuarios.
Para realizar las operaciones de baja y modificación vamos recuperar el elemento del DatagridView
y realizar la lógica necesaria para eliminarlo o modificarlo. Tener en cuenta que cuando vayamos a modificar el juego vamos a tener que mostrarle al usuario todos los datos del juego.
Recordar siempre refrescar el DataGridView
una vez terminada cualquier operación de tipo ABM.
Formulario FrmAlta
Este formulario se va a encargar de guardar o modificar el juego en la base de datos, para eso vamos a disponer del botón Guardar
que dependiendo si es una modificación o un alta deberá realizar la lógica correspondiente.
El método PintarForm
se va a encargar de mostrarle al usuario todos los datos del juego a modificar.
Resolución
Video | Código |
---|