Modelado - diseño de software UML

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 26

1

DOCUMENTACIÓN

Presentado por:

Ian Alejandro Hernandez Collazos

Miguel Angel Mejia Andrade

Michael Steven Canchala Rodriguez

Brayan Mosquera

Docente:

Laura Maria Orozco Garcia

Materia:

Modelado de bases de datos

Universidad del cauca

Programa de Ingeniería Electrónica y Telecomunicaciones

Popayán, Cauca

Diciembre - 2024
2

Introducción:

En este proyecto se busca resolver y crear un sistema integral para la gestión de vehículos en
un parqueadero, que nos permita automatizar y optimizar las operaciones diarias, abordamos
funciones claves el ingreso de vehículos con su registro, la asignación de espacio de
estacionamiento , el control de tiempos de entrada y salida, el cálculo de tarifas, la gestión de
pagos, buzón de sugerencias y reporte, después de implementar el sistema el parqueadero
podrá realizar un seguimiento más preciso de sus operaciones.

Descripción y justificación:

Los parqueaderos de vehículos actualmente son muy importantes en la civilización debido a


que es el lugar donde las personas dejan su medio de transporte pensando que es un lugar
seguro para después volver y utilizarlo, debido a esta importancia, su frecuencia de uso es
bastante elevada, por lo siguiente en muchas ocasiones cuando se usan parqueaderos públicos
se llega a apreciar algo de desorden y tiempo de espera, estos problemas pueden llegar a
incrementar si hay festividades, y por esos se quiere implementar un sistema gestor de
parqueaderos

La implementación de este sistema tiene como fin optimizar la eficiencia operativa, reducir la
dependencia en procesos manuales, minimizar errores y mejorar la experiencia tanto de los
clientes como de los empleados, cada función del sistema responde a unas necesidades
específicas manejando un flujo de operaciones en la seguridad de la información brindada y
la toma de decisiones administrativas, A continuación se explica de manera más detallada la
funcionalidad del sistema:

1) Registro de vehículos: Cuando un vehículo ingresa al parqueadero es necesario


tomar datos fundamentales de este mismo, como lo son la placa del vehículo y
nombre del propietario, estos datos facilitan el ingreso del cliente si desea utilizar los
servicios de la instalación de manera frecuente

2) Asignación de espacios: La correcta asignación de espacio permite aligerar los


tiempos de espera para los usuarios dependiendo el tipo de vehículo y tamaño de este
mismo, el tiempo promedio de ocupación si el usuario frecuentemente visita el
3

parqueadero para así optimizar, esto permite llevar un orden del espacio y evitar
problema de disponibilidad de cada vehículo.

3) Control de tiempo: El control de tiempo ayuda a la generación de tarifas por el


tiempo de uso del espacio, además de la generación de reportes, esta información nos
permite gestionar la rotación de vehículos y hacer un patrón de uso.

4) Cálculo de tarifas: Debido a que las tarifas varían según el tiempo de vehículo y el
tiempo de permanencia, el sistema será capaz de realizar mejor los cálculos de las
tarifas, estos cálculos evitarán los errores humanos. La base de datos almacenará las
tarifas configuradas que podrán ser actualizadas por sus administrados dependiendo
los requerimientos del parqueadero.

5) Pago y facturación: el sistema debe facilitar el proceso de pago generando facturas


electrónicas o también en papel, asegurando que cada transacción quede guardada en
la base de datos, además de facilitar el pago del servicio mediante diferentes formas
de pago, lo que resultará en un servicio más flexible y amigable

6) Gestión de usuarios: La base de datos debe soportar distintos tipos de usuario tales
como lo son los administrados y empleados, cada uno con permisos específicos. Los
administradores pueden tener acceso a reportes, modificar tarifas y supervisar las
operaciones, mientras que los empleados se encargan de registrar entradas y salidas, la
importancia de asignación de estos roles y permisos garantiza la seguridad y la
integración de la información almacenada

7) Reportes y estadísticas: Generar reportes y estadísticas sobre la ocupación del


parqueadero es crucial para modernizar y mejorar la operaciones que se realiza
diariamente en el establecimiento, estos reportes ayudarán a los administradores a una
visión más clara del rendimiento del parqueadero y sus áreas a mejorar.

Este sistema no solo facilita la operativa diaria, sino que contribuye a una gestión más
eficiente, segura y adaptable del parqueadero, maximizando así el valor del negocio.
4

Alcance y limitaciones:

Alcance:

● Gestión Integral de Vehículos y Clientes: La base de datos permitirá almacenar y


gestionar información completa de los vehículos, incluyendo su tipo, placa y
propietario. También gestionará registros de clientes recurrentes, facilitando un acceso
rápido y eficiente al parqueadero.
● Asignación y Control de Espacios de Parqueo: Los espacios del parqueadero
estarán organizados en la base de datos, con un identificador único y un estado de
disponibilidad que se actualiza en tiempo real. Esto asegura una ocupación óptima y
evita conflictos en la asignación de espacios.
● Registro de Tiempos de Permanencia: La base de datos registrará las horas de
entrada y salida de cada vehículo, permitiendo un cálculo preciso del tiempo de uso.
Esto también facilita el análisis de patrones de ocupación y tiempos de permanencia
en el parqueadero.
● Cálculo Automatizado de Tarifas: Con las reglas de negocio para tarifas
almacenadas, la base de datos será capaz de realizar el cálculo automático del costo de
uso, dependiendo del tipo de vehículo y del tiempo de permanencia.
● Manejo de Transacciones de Pago: La base de datos almacenará detalles de las
transacciones de pago, incluyendo el monto, el método de pago, y el estado de la
transacción. Esto asegura un control detallado de los ingresos generados y facilita la
auditoría financiera del parqueadero.
● Control de Accesos y Roles de Usuarios: La base de datos permitirá gestionar
diferentes tipos de usuarios (administradores y empleados) con permisos
diferenciados, asegurando que cada rol tenga acceso solo a las funcionalidades
necesarias para sus tareas.
● Generación de Reportes y Estadísticas: Con la información acumulada sobre
entradas, salidas, ocupación y tarifas, la base de datos permitirá crear reportes
detallados y estadísticas que ayuden a los administradores en la toma de decisiones y
en la optimización de los recursos del parqueadero.
5

Limitaciones:

● Escalabilidad: La base de datos está diseñada para un parqueadero de tamaño


específico y puede tener limitaciones en la escalabilidad si el número de espacios,
vehículos o tipos de vehículos aumenta significativamente. Es posible que en el futuro
se requiere una reestructuración o migración a un sistema de mayor capacidad.
● Dependencia de Entrada de Datos Correcta: La efectividad del sistema depende de
que los empleados ingresen datos precisos al registrar la entrada y salida de vehículos.
Si hay errores en el registro manual, pueden generar problemas en el cálculo de tarifas
y en los reportes.
● Gestión de Fallas Técnicas y Recuperación de Datos: Si la base de datos no cuenta
con un plan de respaldo y recuperación adecuado, los fallos en el sistema o la pérdida
de conexión podrían afectar las operaciones. Esto es crítico en ambientes donde el
tiempo de inactividad puede generar acumulación de vehículos y problemas en el
flujo del parqueadero.
● Limitaciones de Personalización: Si el parqueadero desea implementar tarifas muy
variables o personalizadas, el sistema puede requerir modificaciones en su estructura
de tarifas, lo cual podría no ser fácilmente adaptable sin cambios en el diseño de la
base de datos.
● Restricciones de Seguridad de la Información: Aunque se incluirá un control de
accesos, puede haber limitaciones en cuanto a niveles avanzados de seguridad, como
el cifrado de datos en ciertos campos o la protección contra ciberataques, lo que
requeriría una infraestructura adicional de seguridad.
● Dependencia de Hardware y Conectividad: La base de datos depende del buen
funcionamiento del hardware y de una conectividad constante para actualizar los
datos en tiempo real. Cualquier interrupción en estos recursos podría afectar el
funcionamiento normal del sistema.
● Actualización de Tarifas y Configuración: La base de datos puede manejar cambios
en las tarifas y políticas de uso, pero estos cambios podrían requerir intervenciones
técnicas o procedimientos administrativos si no están previstos en el diseño inicial,
limitando la flexibilidad para ajustes en tiempo real.
6

Resultados esperados:

1) Reducción del tiempo de registro de vehículos: se espera que el tiempo de registro


de vehículos disminuye facilitando el acceso para clientes más frecuentes y proceso
de automatización que designe dichos espacios, mejorando la experiencia del cliente y
agilizando el flujo del parqueadero

2) Aumento en la precisión de espacios asignados: con una base de datos en tiempo


real se busca organizar los vehículos a una mayor velocidad.

3) Cálculo exacto de tarifas y reducir errores de facturación: Al automatizar las


tarifas en tiempo real basado en el tiempo de permanencia y el tipo de vehículo, el
sistema permitirá realizar cobros exactos sin error alguno, esto mejorará la
satisfacción del cliente y permitirá una gestión financiera más precisa y transparente.

4) Control de ingresos: al almacenar todos los valores financieros en la base de datos el


parqueadero podrá realizar reportes financieros más detallados y auditorías de forma
sencilla, esto garantiza reducir las pérdidas por errores de cobros.

5) Optimización de la gestión administrativa: al tener un mejor control sobre reportes


y el estado financiero del parqueadero el sistema ayudará a los administrativos a
determinar el manejo correcto de las tarifas, además ayudará a tomar mejores
decisiones estratégicas

6) Mejorar en la seguridad y el control del acceso: cada usuario tendrá su respectivo


rol esto garantizará que los datos suministrados en la base de datos tengan su debida
confidencialidad.

7) Facilidad para una futura expansión: el sistema ayudará a tener un seguimiento


más cercano sobre el empleo de los espacios disponibles al parqueadero pero también
está diseñado para adaptar nuevos espacios o expansiones como estrategias de venta y
modificar la tarifa sin cambios drásticos en la estructura de la base de datos.
7

Cronograma y diagrama de Gantt :

Diagramas:

Diagrama de Clases
8

Diagrama de objetos
9

Diagrama de secuencia
10

Diagrama de colaboración

Diagrama De Casos De Uso


11

Diagrama De Actividades
12

Diagrama De Estado
13

Diagrama De Componentes
14

Código de la base de datos

CREATE DATABASE PARQUEADERO;

USE PARQUEADERO;

CREATE TABLE Espacio (

id INT NOT NULL PRIMARY KEY,

tamaño VARCHAR(50),

espacio_auto VARCHAR(50),

espacio_moto VARCHAR(50)

);

CREATE TABLE Usuario (

id INT PRIMARY KEY,

nombre VARCHAR(100),

correo VARCHAR(100),

contraseña VARCHAR(100)

);

CREATE TABLE Cliente (

id INT PRIMARY KEY,

telefono VARCHAR(20),
15

direccion VARCHAR(100),

FOREIGN KEY (id) REFERENCES Usuario(id)

);

CREATE TABLE Empleado (

id INT PRIMARY KEY,

turno VARCHAR(50),

FOREIGN KEY (id) REFERENCES Usuario(id)

);

CREATE TABLE Vehiculo (

placa VARCHAR(20) PRIMARY KEY,

propietario VARCHAR(100),

modelo VARCHAR(50),

color VARCHAR(20),

tipo_vehiculo ENUM('Carro', 'Moto') NOT NULL,

cliente_id INT,

FOREIGN KEY (cliente_id) REFERENCES Cliente(id)

);

CREATE TABLE Carro (

placa VARCHAR(20) PRIMARY KEY,

tipo_combustible VARCHAR(50),
16

num_puertas INT,

FOREIGN KEY (placa) REFERENCES Vehiculo(placa)

);

CREATE TABLE Moto (

placa VARCHAR(20) PRIMARY KEY,

cilindraje VARCHAR(50),

FOREIGN KEY (placa) REFERENCES Vehiculo(placa)

);

CREATE TABLE Tarifa (

id INT AUTO_INCREMENT PRIMARY KEY,

tipo_vehiculo ENUM('Carro', 'Moto') NOT NULL,

tarifa_por_hora INT

);

CREATE TABLE Registro (

id INT AUTO_INCREMENT PRIMARY KEY,

hora_entrada TIME,

hora_salida TIME,

tiempo_ocupacion TIME,

espacio_id INT,

vehiculo_placa VARCHAR(20),
17

tarifa_id INT,

empleado_id INT,

FOREIGN KEY (espacio_id) REFERENCES Espacio(id),

FOREIGN KEY (vehiculo_placa) REFERENCES Vehiculo(placa),

FOREIGN KEY (tarifa_id) REFERENCES Tarifa(id),

FOREIGN KEY (empleado_id) REFERENCES Empleado(id)

);

CREATE TABLE Reporte (

id INT AUTO_INCREMENT PRIMARY KEY,

contenido TEXT,

fecha DATE,

registro_id INT,

FOREIGN KEY (registro_id) REFERENCES Registro(id)

);

CREATE TABLE Administrador (

id INT PRIMARY KEY,

empleados_a_cargo INT,

reporte_id INT,

FOREIGN KEY (id) REFERENCES Usuario(id),

FOREIGN KEY (reporte_id) REFERENCES Reporte(id)

);
18

CREATE TABLE Pago (

id INT AUTO_INCREMENT PRIMARY KEY,

monto DECIMAL(10, 2) NOT NULL,

metodo_pago VARCHAR(50) NOT NULL,

fecha_pago DATE NOT NULL,

tarifa_id INT NOT NULL,

FOREIGN KEY (tarifa_id) REFERENCES Tarifa(id)

);
19

Código de la base de datos con datos ingresados

INSERT INTO Usuario (id, nombre, correo, contraseña)

VALUES

(1, 'Juan Pérez', '[email protected]', '12345'),

(2, 'Ana Gómez', '[email protected]', 'abcde'),

(3, 'Carlos López', '[email protected]', 'xyz123'),

(4, 'María Torres', '[email protected]', 'password1'),

(5, 'Luis Díaz', '[email protected]', 'qwerty'),

(6, 'Carmen Suárez', '[email protected]', 'securepass');

INSERT INTO Cliente (id, telefono, direccion)

VALUES

(1, '1234567890', 'Calle 123, Ciudad A'),

(2, '9876543210', 'Avenida 45, Ciudad B'),

(4, '4567891230', 'Boulevard 67, Ciudad C'),

(6, '7891234560', 'Plaza 89, Ciudad D');

INSERT INTO Empleado (id, turno)

VALUES

(3, 'Mañana'),
20

(5, 'Tarde');

INSERT INTO Espacio (id, tamaño, espacio_auto, espacio_moto)

VALUES

(1, 'Grande', 'Disponible', 'Ocupado'),

(2, 'Mediano', 'Disponible', 'Disponible'),

(3, 'Pequeño', 'Ocupado', 'Disponible'),

(4, 'Grande', 'Disponible', 'Disponible'),

(5, 'Mediano', 'Ocupado', 'Disponible');

INSERT INTO Vehiculo (placa, propietario, modelo, color, tipo_vehiculo, cliente_id)

VALUES

('ABC123', 'Juan Pérez', 'Toyota Corolla', 'Rojo', 'Carro', 1),

('XYZ789', 'Ana Gómez', 'Honda Civic', 'Azul', 'Carro', 2),

('MOT456', 'Ana Gómez', 'Yamaha YZF', 'Negro', 'Moto', 2),

('CAR678', 'María Torres', 'Ford Fiesta', 'Blanco', 'Carro', 4),

('MOT123', 'Carmen Suárez', 'Kawasaki Ninja', 'Verde', 'Moto', 6);

INSERT INTO Carro (placa, tipo_combustible, num_puertas)

VALUES
21

('ABC123', 'Gasolina', 4),

('XYZ789', 'Diesel', 4),

('CAR678', 'Gasolina', 4);

INSERT INTO Moto (placa, cilindraje)

VALUES

('MOT456', '600cc'),

('MOT123', '300cc');

INSERT INTO Tarifa (tipo_vehiculo, tarifa_por_hora)

VALUES

('Carro', 50),

('Moto', 30),

('Carro', 40),

('Moto', 25);

INSERT INTO Registro (hora_entrada, hora_salida, tiempo_ocupacion, espacio_id,


vehiculo_placa, tarifa_id, empleado_id)

VALUES

('08:00:00', '10:00:00', '02:00:00', 1, 'ABC123', 1, 3),


22

('09:30:00', '11:00:00', '01:30:00', 2, 'MOT456', 2, 3),

('12:00:00', '14:00:00', '02:00:00', 3, 'CAR678', 3, 5),

('15:00:00', '16:30:00', '01:30:00', 4, 'MOT123', 4, 5),

('10:00:00', '12:30:00', '02:30:00', 5, 'XYZ789', 1, 3);

INSERT INTO Reporte (contenido, fecha, registro_id)

VALUES

('Reporte de ingreso y salida correcto', '2024-12-01', 1),

('Problemas con el pago', '2024-12-02', 2),

('Registro duplicado detectado', '2024-12-03', 3),

('Vehículo estacionado sin salida registrada', '2024-12-04', 4);

INSERT INTO Administrador (id, empleados_a_cargo, reporte_id)

VALUES

(1, 5, 1),

(6, 8, 2);

INSERT INTO Pago (monto, metodo_pago, fecha_pago, tarifa_id)

VALUES

(100.00, 'Tarjeta', '2024-12-01', 1),


23

(45.00, 'Efectivo', '2024-12-02', 2),

(80.00, 'Transferencia', '2024-12-03', 3),

(37.50, 'Tarjeta', '2024-12-04', 4),

(125.00, 'Efectivo', '2024-12-05', 1);

Consultas

● Consulta para obtener los detalles de todos los vehículos estacionados por más de
2 horas:

SELECT

v.placa,

v.propietario,

v.modelo,

v.tipo_vehiculo,

r.tiempo_ocupacion,

e.tamaño AS tamaño_espacio

FROM

Registro r

JOIN

Vehiculo v ON r.vehiculo_placa = v.placa

JOIN

Espacio e ON r.espacio_id = e.id

WHERE
24

r.tiempo_ocupacion > '02:00:00';

● Consulta para listar los clientes con más de un vehículo registrado

SELECT

c.id AS cliente_id,

u.nombre AS nombre_cliente,

COUNT(v.placa) AS cantidad_vehiculos

FROM

Cliente c

JOIN

Usuario u ON c.id = u.id

JOIN

Vehiculo v ON c.id = v.cliente_id

GROUP BY

c.id, u.nombre

HAVING

COUNT(v.placa) > 1;
25

● Consulta para calcular el total de ingresos generados por tipo de vehículo

SELECT

t.tipo_vehiculo,

SUM(p.monto) AS total_ingresos

FROM

Pago p

JOIN

Tarifa t ON p.tarifa_id = t.id

GROUP BY

t.tipo_vehiculo;

● Consulta para obtener reportes generados por cada administrador

SELECT

a.id AS administrador_id,

u.nombre AS nombre_administrador,

r.contenido AS reporte,

r.fecha AS fecha_reporte

FROM

Administrador a

JOIN
26

Usuario u ON a.id = u.id

JOIN

Reporte r ON a.reporte_id = r.id;

Lecciones aprendidas

En este trabajo se tomaron las lecciones aprendidas en clase sobre los diagramas de UML y
de datos, agregando de por si el diagrama de Gantt. Estos diagramas ayudan a la organización
y planeación de proyectos siendo una guía para empezar a programar en este caso una base de
datos que llegaría para solucionar un problema recurrente.

Acerca de SQL se logró concretar el proyecto de la base de datos para solucionar el problema
escogido, se colocaron datos como prueba para verificar la funcionalidad de esta e incluso se
realizaron “búsquedas” en la base para corroborar información.

Conclusiones

También podría gustarte