Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PRESENTADO POR
SENA
2023
Tabla de contenido
Por este motivo requerimos un sistema que nos permita crear una solicitud de
cotizacion online la cual una vez finalizada envie automáticamente un mensaje con
una URL a los proveedores para que estos realicen sus ofertas. Y de esta forma
poder entregarle a los clientes su cotizacion
Objetivo General
Crear una herramienta web donde al momento de que Dinámica Tecnológica tenga una
solicitud de cotizacion, llegue directamente a los proveedores y estos puedan realizar
sus ofertas de forma inmediata.
Objetivos Específicos
Requisitos Funcionales:
El sistema debe permitir a los usuarios subir y compartir archivos jpg Criterios
de Aceptación: Los usuarios deben poder seleccionar archivos de su
dispositivo para subirlos - Las publicaciones de los usuarios deben estar
disponibles en su perfil y en el feed principal de la aplicación.
Requisitos No Funcionales:
Portatil Core i5 Decima generación o superior- Disco 256 SSD o Superior Memoria
16GB Windows 10 Pro o superior
Microsoft Visual Studio 2019 Community Edition para el desarrollo del
Microsoft SQL Server Express Edition 2017 o superior para la base de datos.
Navegador preferencia Google Chorme
.NET Framework 4.8.
Lenguaje JAVA
Seguridad: Conexión por VPN y La base de datos debe estar cifrada y
protegida mediante contraseña para evitar accesos no autorizados.
Diseño arquitectónico
Arquitectura Cliente-Servidor
En esta arquitectura que vamos a usar existe un servidor y múltiples clientes que
se conectan al servidor para recuperar todos los recursos necesarios para
funcionar, en este sentido el cliente solo es una capa para representar los datos y
se detonan acciones para modificar el estado del servidor.
Red
Cliente
Servidor
Protocolo
Servicios
Bases de Datos
Diagramas Secuencias
Casos de uso
Manual de usuario:
Ingrese usuario y contraseña:
DETALLE DE LA PRUEBA
No. Acción Usuario Respuesta Esperada Resultado
Secue
ncia
1 Ingreso al módulo de usuarios Ok
2 Valida la información Ok
ingresada
3 Valida la información en base de Ok
datos
3 Mensaje error en caso de
credenciales ser incorrectas
4 Genera mensaje exitoso Ingresa a Ok
modulo principal
EVIDENCIAS
CASO DE PRUEBA
Id de Prueba CP02
Fecha de Ejecución 17/11/2023
Ejecutado Por Natalia Poss
ID caso de uso CU01
Descripción de la Prueba Garantizar la creación de la solicitud de
cotizacion
DETALLE DE LA PRUEBA
No. Acción Usuario Respuesta Esperada Resultado
Secue
ncia
1 Ingresar codigo de parte y Ok
descripción de parte a cotizar y
cantidad de cotizacion
2 Grabación de información Ok Validar ya
en tabla de datos y vista de que genera un
la información. Envio de error cuando el
mensajes con link a los proveedor no
proveedores. tiene guardado
correo
electronico
donde enviar e
link
4 Genera mensaje exitoso Ok
EVIDENCIAS
CASO DE PRUEBA
Id de Prueba CP03
Fecha de Ejecución 17/11/2023
Ejecutado Por Natalia Poss
ID caso de uso CU01
Descripción de la Prueba Creación Respuesta de cotizacion
Precondiciones Debe estar al sesion iniciada. Debe haber
recibido link de geneacion de cotizacion.
DETALLE DE LA PRUEBA
No. Acción Usuario Respuesta Esperada Resultado
Secue
ncia
1 Ingresar valor unitario y nombre de Ok
proveedor que responde la
cotizacion
2 Grabación de información ok
en tabla de datos y vista de
la información del proveedor
mas economico.
EVIDENCIAS
<%--
Document : index
Created on : 11/09/2023, 9:05 p. m.
Author : Hernan Valencia - Natalia Posso
--%>
<%@page import="java.sql.*"%>
<%@page import="com.mysql.jdbc.Driver"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%--
html formulario para pedir usuario y contraseña
--%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN"
crossorigin="anonymous">
<title>login</title>
</head>
<body>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" id="password"
aria-describedby="emailHelp" required="required" name="password" placeholder="Ingresa tu
contraseña">
</div>
<a href="url"></a>
<button type="submit" class="btn btn-primary" name="login">Login <i class="fa fa-sign-in" aria-
hidden="true"></i>
</button>
</form>
</div>
</div>
</div>
<%--
Conexiones a bases de datos y verificaion de logueo.
--%>
<%
Connection con = null;
Statement st = null;//sirve para procesar una sentencia SQL estatica y obtener los resultados producidos por ella
ResultSet rs = null;
if (request.getParameter("login") != null) {
String user = request.getParameter("usuario");
String password = request.getParameter("password");
HttpSession sesion = request.getSession();
try {
Class.forName("com.mysql.jdbc.Driver");//para usar el codigo mysql
//DriverManager: Administrador de controladores
con = DriverManager.getConnection("jdbc:mysql://localhost/bdusuarios?user=root&password=");
st = con.createStatement();
rs = st.executeQuery("SELECT * FROM admin WHERE User='"+user+"' AND Password='"+password+"';");
//request.getRequestDispatcher("index.jsp").forward(request, response);//redireccionar a la pagina index
//response.sendRedirect();
while(rs.next()){
sesion.setAttribute("logueado", "1");
sesion.setAttribute("usuario", rs.getString("user"));
sesion.setAttribute("id", rs.getString("id"));
response.sendRedirect("index.jsp");
}
out.print("<div class= \"alert alert-danger\" role=\"alert\">Usario Incorrecto</div>");
} catch (Exception e) {
out.print("<div class= \"alert alert-danger\" role=\"alert\">error base de datos</div>");
}
}
/*
if (request.getParameter("login") != null) {
String user = request.getParameter("usuario");
String password = request.getParameter("password");
HttpSession sesion = request.getSession();
if (user.equals("admin") && password.equals("123")) {
sesion.setAttribute("logueado", "1");
sesion.setAttribute("usuario", user);
response.sendRedirect("index.jsp");
} else {
out.print("te equivocaste en usuario o contraseña");
}
}*/
%>
</body>
</html>
<%--
Document : index
Created on : 11/09/2023, 9:05 p. m.
Author : Natalia Posso - Hernan Valencia
--%>
<%@page import="java.sql.*"%>
<%@page import="com.mysql.jdbc.Driver"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-
MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<title>Usuarios</title>
<style>
body{
background: #6fb021; /* fallback for old browsers */
background: -webkit-linear-gradient(to right, #6dd5ed, #6fb021); /* Chrome 10-25, Safari 5.1-6 */
background: linear-gradient(to right, #6dd5ed, #6fb021); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+,
Safari 7+ */
}
</style>
</head>
<body>
<%--
Verificacion que este correctamente logueado el usuario.
--%>
<%
HttpSession sesion = request.getSession();
if (sesion.getAttribute("logueado") == null || sesion.getAttribute("logueado").equals("0")){
response.sendRedirect("login.jsp");
}
String id = request.getParameter("id");
String usuario = request.getParameter("usuario");
String nombre = request.getParameter("nombre");
String password = request.getParameter("password");
%>
<%--
Formularios de ingreso de Informacion.
--%>
<div class="container">
<div class="card shadow">
<div class="card-body">
<form action="Guardar.jsp" method="POST">
<div class="row mb-3">
<div class="col">
<label>Codigo</label>
<input type="text" class="form-control mb-3" name="codigo">
</div>
<div class="col">
<label>Descripcion</label>
<input type="text" class="form-control mb-3" name="descripcion">
</div>
<div class="col">
<label>Cantidad</label>
<input type="text" class="form-control mb-3" name="cantidad">
</div>
<div class="col">
<button class="btn btn-outline-primary mb-3 mt-4" name="guardar" type="submit"><ion-icon name="save-
outline"></ion-icon></button>
</div>
</div>
</form> <!--Tabla-->
<td>
<a href="#" class="btn btn-outline-success" data-bs-toggle="modal" data-bs-target="#modal_<%=rowid
%>"><ion-icon name="create-outline"></ion-icon></a>
</div>
</div>
</div>
</div>
<%
}
} catch (Exception e) {
out.print("Error conexión MySQL" + e);
}
%>
</body>
</html>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Guardar</title>
</head>
<body>
<%
HttpSession sesion = request.getSession();
if (sesion.getAttribute("logueado") == null || sesion.getAttribute("logueado").equals("0")){
response.sendRedirect("login.jsp");
}
%>
<%
if (request.getParameter("guardar") != null){
String id = request.getParameter("id");
String codigo = request.getParameter("codigo");
String descripcion = request.getParameter("descripcion");
String cantidad = request.getParameter("cantidad");
String vlrunidad = request.getParameter("vlrunidad");
Float can = Float.parseFloat(cantidad);
try {
Connection con = null;
Statement st = null;
<%--
Document : index
Created on : 11/09/2023, 9:05 p. m.
Author : Natalia Posso - Hernan Valencia
--%>
<%@page import="java.sql.*"%>
<%@page import="java.sql.DriverManager"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Editar</title>
</head>
<body>
<%
try {
if (vlra>vlrc) {
st.executeUpdate("UPDATE cotizaciones SET vlrunidad='" + vlrc + "', total='" + tot + "', proveedor='" +
proveedor + "' WHERE id='" + id + "';");
}
request.getRequestDispatcher("index.jsp").forward(request, response);//redireccionar
//response.sendRedirect("index.jsp");
} catch (Exception e) {
out.print(e);
} finally {}
%>
</body>
</html>
<%--
Document : index
Created on : 11/09/2023, 9:05 p. m.
Author : Natalia Posso - Hernan Valencia
--%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Borrar</title>
</head>
<body>
<%
try {
Class.forName("com.mysql.jdbc.Driver");//para usar el codigo mysql
//DriverManager: administrador de controladores
con = DriverManager.getConnection("jdbc:mysql://localhost/bdusuarios?user=root&password=");
st = con.createStatement();
st.executeUpdate("DELETE FROM tblproductos where id='"+request.getParameter("id")+"';");
request.getRequestDispatcher("index.jsp").forward(request, response);//redireccionar
//response.sendRedirect("index.jsp");
} catch (Exception e) {
out.print(e);
}
%>
</body>
</html>
Nombre:
El sistema tendrá por nombre Cotiza. Este sistema es una aplicación que apoyara a reducir los tiempos de cotizacion de los
proveedores hacia la empresa Dinamica Tecnologica SAS.
Instalación
Clonar o descargar el repositorio en la máquina local
Uso
Créditos
- Autor Natalia Posso
- Autor Hernan Valencia
Diagrama de arquitectura
Especificaciones técnicas
Tecnologías utilizadas:
Requisitos de hardware:
Procesador: Intel Core i5 o equivalente 7 generacion o superior
Memoria RAM: 8 GB
Espacio en disco duro: al menos 10 GB
Requisitos de software:
Sistema operativo: Windows 10, Ubuntu 20.04 LTS u otra distribución de Linux
compatible con MySQL
Navegador web: Chrome 91, Firefox 89 u otro navegador web compatible con
HTML5, CSS3 y JavaScript
Wamserver64 instalado y configurado
Mantenimiento
El sistema tendrá una garantia del codigo durante 6 meses. La cual cubrira los cambios
necesario en caso que a nivel de codigo el sistema tenga algún error
Luego de los 6 meses el cliente en caso de requerir un cambio a nivel de codigo podrá
generar una solicitud la cual tendrá un cobro adicional dependiendo de lo complejo de
la solicitud
Costos
El sistema tendrá un costo unico de 14.000.000 millones de pesos Cop
Propiedad intelectual
Despues de realizado el pago la propiedad intelectual como material del sistema será
en su totalidad del cliente. Dinamica Tecnologica SAS