Professional Documents
Culture Documents
“SUB GOBERNACIÓN-MONTERO”
Docente:
Ing. Edwin Calizaya
Integrantes:
Nery Lázaro Toconás Acevedo
Eligio Eloy Vaca Flores
Oscar Emir Velarde Figueredo
Roly Ponce
Kevin Montaño Zurita
Materia:
Ingeniería del Software II
Los softwares de gestión hoy en día son fundamentales para las empresas porque
existen un mejor control de la información de las actividades que realiza. En este proyecto
se busca mejorar el funcionamiento de esta empresa que no contaba con este software.
La información se constituye como uno de los activos más valiosos para toda institución,
que de ella depende la toma de decisiones que puede afectar o ayudar en un papel
fundamental para el alcance de sus objetivos y metas.
La Sub Gobernación “Obispo Santisteban” del Municipio de Montero cuenta con los
siguientes problemas:
Cuenta con un registro de carnet sanitario realizado en Access lo cual no brinda
un control adecuado ya que existe perdida de información por la falta de un gestor
de base de datos.
El software fue desarrollado únicamente para el sistema operativo “XP” que ya es
un S.O obsoleto y no existe compatibilidad con las nuevas versiones como ser
Windows 7,10.
No todo el personal tiene conocimiento sobre el funcionamiento del software por
su complejidad de interfaces.
No realiza impresiones exactas del documento, necesita seguir una serie de pasos
de ajustes manuales para el centrado del contenido.
4. SITUACIÓN PROBLEMÁTICA
5.1. PERSONAL
El presente trabajo está enfocado con el fin de aprobar la materia software II, además de
la aplicación del conocimiento adquirido en el transcurso de los semestres pasados con
el fin de estar preparado para el campo laboral.
5.2. TÉCNICA
El presente proyecto sirve para realizar un control sobre sus registros y almacenamiento
de los mismos, mediante el uso del software el cual guarda registros al momento de
gestionar la información.
5.3. TEÓRICA
8. ALCANCE
Registro de
Mausoleos Cuotas
Registro de Sectores
9. CRONOGRAMA
CRONOGRAMA DE ACTIVIDADES
25 de agosto Se asignó el Sistema en el cual se trabajaría de forma grupal
Se fue al lugar para determinar la entrevista correspondiente con
05 de septiembre el encargado de la Sub-Gobernación y se recaudó información
para la implementación del sistema.
Se analizó la información recaudada especialmente en el ámbito
06 de noviembre
de desarrollo de “la Sub Gobernación”
Elaboración del perfil del sistema de gestión con los requisitos
08 de septiembre
adquiridos.
15 de septiembre Presentación del perfil de proyecto y correcciones
Se realizó el diseño conceptual de la Base de Datos e interfaces
20 de septiembre
del sistema estructurado.
Presentación del diagrama de clases con el ing. Encargado de la
22 de septiembre
materia para verificar las fallas
Implementación de la Base de Datos a un Gestor de Base de
06 de octubre
Datos SQL Server
Elaboración de la metodología en 3 capas(Capa Negocio, Capa
11 de octubre
Datos y Capa Presentación)
Presentación avance del sistema para verificar fallas por parte del
20 de octubre
ing. Encargado de la materia.
trabajo grupal para la determinación del desarrollo con las
07 de noviembre
correcciones respectivas.
Muestra y Prueba del sistema hacia el encargado de la sub
15 de noviembre
gobernación para obtener mejoras específicas.
Se realizó pruebas al software y presentación al Ing. encargado de
17 de noviembre
la materia.
21 de noviembre Correcciones de las diferentes observaciones
Presentación final del Sistema de Gestión Sanitaria Sub
24 de noviembre
Gobernación..
CAPITULO II
ANALISIS
10. ANALISIS
En fecha. 15/09/2018
22/09/2017
06/10/2018
20/10/2018
27/10/2018
13/11/2018
En Fecha: 22/09/2018
11
Control de Cambio
Versión Causa el Cambio Responsable Fecha
V01 Requerimiento Nery Lázaro Toconás 05/09/2018
Inicial Acevedo
Oscar Emir Velarde
Figueredo
Kevin Montaño Zurita
Elaboración del Oscar Emir Velarde 08/09/2018
Perfil Figueredo 12/09/2018
Kevin Montaño Zurita
V02 Base de Datos Nery Lázaro Toconás 20/09/2018
Acevedo 22/09/2018
Desarrollo 3 capas Roly Ponce Vargas 11/10/2018
Eligio Eloy Vaca Flores 13/10/2018
15/10/2018
V03 Requerimiento Nery Lázaro Toconás 20/10/2018
Final Acevedo 26/10/2018
Oscar Emir Velarde 07/11/2018
Figueredo 15/11/2018
Kevin Montaño Zurita 21/11/2018
12
beneficiario que solicitan un
servicio
Asigna la validación de
Gestionar autorización mediante el registro de
HU6 Administración
Carnet carnet con los datos personales del
beneficiario.
13
autorización sanitaria de
funcionamiento.
10.2.3. Confiabilidad
Tiempo de disponibilidad del sistema
La aplicación puede estar disponible según indicaciones del administrador para los
empleados de la empresa.
14
Debido a que cualquier usuario con una cuenta y contraseña (Registrados en el
servidor) puede tener acceso al sistema, es necesario hacer notar que, para cumplir
con la manera de disponibilidad del sistema, se deberá analizar cierto parámetro
como: Rendimiento de servidor, calidad del enlace y calidad de conexión de red
local para el usuario final.
10.2.4. Performance
Acceso de los usuarios al sistema:
Los usuarios pueden acceder a los datos en tiempo real.
Tiempo de Respuesta
El tiempo de respuesta al acceso del usuario debe ir de 7 segundos, la primera vez
que ingresa al sistema, después menos de 5 segundos.
El tiempo de respuesta al acceso del usuario debe ir de 7 segundos, la primera vez
que ingresa al sistema, después menos de 5 segundos.
Estándares de diseño
Versión en Framework 4.0
Estándares de Arquitectura
15
Motor de Base de Datos
Cliente de Escritorio
La aplicación deberá ser accesible utilizando un ordenador Dual Core, Core i3 o
superior con sistema Operativo Windows 7,8,10 o superior (Exclusivamente de
Microsoft)
Servidor de Datos
El servidor será Windows Server 2016 (Standar Edition) de Microsoft.
Lenguaje de Programación
La aplicación debe desarrollarse en Visual Studio 2015, utilizando Windows Form
de Visual C# y derivados de SQL con T/SQL para el motor de base de Datos SQL
server 2014.
10.2.6. Interfaces
Interfaz de Usuario
No debe existir presencia de imágenes distorsionadas o difíciles de entender. La
presentación de mensaje de error o de infracción al usuario deberá ser lo más
específico posible y comunicarse con el administrador del sistema.
Interfaz de Hardware
Este dispositivo puede estar basado en cualquier arquitectura, pero deberá disponer
al menos de un procesador con capacidad suficiente para ejecutar el sistema
contable.
16
Interfaz de Comunicaciones
Existe una conexión entre los usuarios y el servidor donde está alojado la base de
Datos:
Interfaz de Software
Por otra parte, el servidor de la Base de Datos (SQL server 2014 Standar Edition)
se implementará bajo el sistema Operativo Windows Server 2016.
17
La realimentación: permite que la especificación de requerimientos se
comprenda mejor con el pasar del tiempo, permitiendo que los usuarios
aprendan a escribir mejor las historias.
18
11.2.1. Historia de usuario para Gestionar Categoría
19
11.2.2. Historia de usuario para Gestionar Empresa
20
11.2.3. Historia de usuario para Gestionar Beneficiario
21
11.2.4. Historia de usuario para Gestionar Recibo
22
11.2.5. Historia de usuario para Gestionar Exámenes
23
11.2.6. Historia de usuario para Gestionar Carnet
24
11.2.7. Historia de usuario para Gestionar Autorización
25
11.2.8. Historia de usuario para Gestionar Trabajador
26
11.2.9. Historia de usuario para Gestionar Usuario
27
CAPITULO III
DISEÑO
12. ELABORACION
12.1. Arquitectura de la Solución para el modelo de Capas
29
12.2. DESCRIPCIÓN DE LA ARQUITECTURA
30
12.3. ARQUITECTURA DE LA SOLUCIÓN BASADA EN LA TECNOLOGIA .NET
La programación por capas es un estilo de programación en la que le objetivo
primordial es la separación de la lógica de negocios de la lógica de diseño, un
ejemplo básico de esto es separar la capa de datos de la capa presentación al
usuario.
La ventaja principal de este estilo, es que en caso de algún cambio sólo se ataca al
nivel requerido sin tener que revisar entre código mezclado. Además, permite
distribuir el trabajo de creación de una aplicación por capas, de este modo, cada
grupo de trabajo está totalmente abstraído del resto de niveles.
En dicha arquitectura a cada capa se le confía una misión simple, lo que permite el
diseño de arquitecturas escalable (que pueden ampliarse con facilidad en caso de
que las necesidades aumenten).
31
previo para comprobar que no hay errores de formato). Esta capa se comunica
únicamente con la capa de negocio.
12.5. ADO.NET
Los proveedores de acceso a datos ADO.NET (conocidos como “Managed Data
Providers”), representan conjuntos específicos de clases que permiten conectarse
e interactuar con una base de datos, cada uno utilizando un protocolo particular.
32
12.6. Diseño Conceptual de la Base De Datos
class Modelo de dominio
Empresa
- Id_Empresa Examen_Lab
+ Razon_Social
- Id_Examen: int
+ Dirección
+ Homograma: varchar
+ Vacunas: varchar
1..* 1..*
Empresa_Beneficiario
1
+ Cargo
1..*
1
Beneficiario
Autorizacion
- CI: int 1 Carnet
- N_Certificado + Nombre: varchar
- Cod_Carnet
+ Fecha_ini + Ap_Paterno: varchar
1..* 1 + 1...* + Fecha_Inicio
+ Fecha_fin Ap_Materno: varchar 1 + Fecha_Vencimiento
+ fecha + fecha_nac: int
+ Ocupacion: varchar
+ Domicilio: varchar 1 1
1..*
1..* Examen_Medico
1
- Id_Examen_med
categoria Rubro
+ Piel_Mucuosa
- Id_categoria - Id_rubro + Sist_Cardiopulmonar
1..* + Nombre + Ant_Pat/QX
+ Nombre
+ Precio + G_Urinario/Ginocologico
+ Observacion
33
12.7. Diseño Lógico de la Base de Datos
34
CAPITULO IV
IMPLEMENTACION
13. IMPLEMENTACION
13.1. APLICACIÓN DE ESCRITORIO
13.1.1. Implementación de cliente: Clase Cliente
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using Capa_de_Datos;
namespace Capa_de_Negocio
{
public class CNCliente : Conexion
{
private string id;
private string nombre;
private string paterno;
private string materno;
private string telefono;
public CNCliente()
{
public string ID
{
get { return this.id; }
set { this.id = value; }
}
36
{
get { return this.materno; }
set { this.materno = value; }
}
37
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using Capa_de_Datos;
namespace Capa_de_Negocio
{
public class CNEmpleado : Conexion
{
private int id_empleado;
private string nombre;
private string paterno;
private string materno;
private string telefono;
public CNEmpleado()
{
id_empleado = 0;
nombre = paterno = materno = telefono = string.Empty;
}
public int Ci_empleado
{
get { return this.id_empleado; }
set { this.id_empleado = value; }
}
public string Nombre
{
get { return this.nombre; }
set { this.nombre = value; }
38
}
public string Paterno
{
get { return this.paterno; }
set { this.paterno = value; }
}
39
{
IniciarSP("eliminar_empleado");
AddParametro("@id_empleado", id_empleado.ToString());
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al eliminar el empleado:" + e.ToString());
}
}
public DataSet buscar()
{
string s;
s = "select *from empleado";
DataSet ds = new DataSet();
ejecutarSQL(s, "tc", ds);
return ds;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using Capa_de_Datos;
namespace Capa_de_Negocio
{
public class CNSector : Conexion
{
private string id_sector;
private string nombre;
private string stock;
private float precio;
public CNSector()
{
nombre = id_sector = string.Empty;//=== " "es igual a vacio
stock = string.Empty;
precio = 0;
40
}
public string Id_sector
{
get { return this.id_sector; }
set { this.id_sector = value; }
}
41
{
try
{
IniciarSP("eliminar_sector");
AddParametro("@id_sector", id_sector);
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al eliminar sector:" + e.ToString());
}
}
}
}
1.1.3. Implementación de Mausoleo: Clase Mausoleo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using Capa_de_Datos;
namespace Capa_de_Negocio
{
public class CNMausoleo : Conexion
{
private int id_mausoleo;
private string nombre;
private string estado;
private int id_sector;
public CNMausoleo()
{
42
id_mausoleo = 0;
nombre = estado = string.Empty;
id_sector = 0;
}
43
MessageBox.Show("Error al MODIFICAR el SEPULCRO:" + e.ToString());
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Capa_de_Datos;
using System.Windows.Forms;
using System.Data;
namespace Capa_de_Negocio
{
public class CNDifunto : Conexion
{
private int id_mausoleo;
private int id_difunto;
private string nombre_difunto;
private DateTime fecha_nacimiento;
44
private DateTime fecha_fallecimiento;
public CNDifunto()
{
id_difunto = 0;
id_mausoleo = 0;
nombre_difunto = string.Empty;
fecha_nacimiento = DateTime.Today.Date;
fecha_fallecimiento = DateTime.Today.Date;
}
45
{
IniciarSP("modificar_difunto");
AddParametro("id_dif", id_difunto.ToString());
AddParametro("nombre", nombre_difunto);
AddParametro("fecha_nac", fecha_nacimiento.ToShortDateString());
AddParametro("fecha_fal", fecha_fallecimiento.ToShortDateString());
AddParametro("id_mau", id_mausoleo.ToString());
ejecutarSP();
}
catch (Exception ex)
{ MessageBox.Show("Error al MODIFICAR el DIFUNTO......" +
ex.ToString()); }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using Capa_de_Datos;
46
namespace Capa_de_Negocio
{
public class CNVentas : Conexion
{
private int id_venta;
private DateTime fecha_venta;
private int ci_cliente;
private int ci_empleado;
private string tipo;
public CNVentas()
{
id_venta = 0;
fecha_venta = DateTime.Today.Date;
ci_cliente = 0;
ci_empleado = 0;
tipo = string.Empty;
}
public int Id_Venta
{
get { return this.id_venta; }
set { this.id_venta = value; }
}
public DateTime Fecha_venta
{
get { return this.fecha_venta; }
set { this.fecha_venta = value; }
}
47
}
catch (Exception e)
{
MessageBox.Show("Error al INSERTAR una venta:" + e.ToString());
}
}
48
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Capa_de_Datos;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
namespace Capa_de_Negocio
{
public class CNContado : Conexion
{
private string id_servicio;
private string descuento;
private string monto;
private string id_mausoleo;
public CNContado()
{
id_servicio = descuento = monto = id_mausoleo = string.Empty;
}
49
{
try
{
IniciarSP("insertar_contado");
AddParametro("@id_servicio", id_servicio);
AddParametro("@descuento", descuento);
AddParametro("@monto", monto);
AddParametro("@id_mau", id_mausoleo);
ejecutarSP();
}
catch (Exception e)
{ MessageBox.Show("Error al insertar contado:" + e.ToString()); }
}
50
{
MessageBox.Show("error al modificar"+e.ToString());
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Capa_de_Datos;
using System.Data;
namespace Capa_de_Negocio
{
public class CNCredito : Conexion
{
string id_ser;
string monto;
string interes;
string id_mau;
public CNCredito()
{
id_ser = monto = interes = id_mau = string.Empty;
}
51
public void Insertar()
{
try
{
IniciarSP("insertar_credito");
AddParametro("@id_ser", id_ser);
AddParametro("@monto", monto);
AddParametro("@interes", interes);
AddParametro("@id_mau", id_mau);
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al insertar" + e.ToString());
}
}
52
ejecutarSP();
}
catch (Exception ex)
{
MessageBox.Show("error al eliminar" + ex.ToString());
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using Capa_de_Datos;
namespace Capa_de_Negocio
{
public class CNPlan_Pago : Conexion
{
private int id_plan;
private DateTime fecha_P;
private string tipo;
private string plazo;
private float monto;
private int id_servicio;
private float cuota_inicial;
public CNPlan_Pago()
{
id_plan = 0;
fecha_P = DateTime.Today.Date;
monto = 0;
cuota_inicial = 0;
id_servicio = 0;
plazo = tipo = string.Empty;
}
53
{
get { return this.plazo; }
set { this.plazo = value; }
}
54
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al modificar PLAN DE PAGOS:" + e.ToString());
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using Capa_de_Datos;
namespace Capa_de_Negocio
{
public class CNCuota : Conexion
55
{
private int id_plan;
private int id_cuota;
private DateTime fecha;
private float monto;
public CNCuota()
{
id_plan = 0;
id_cuota = 0;
fecha = DateTime.Today.Date;
monto = 0;
}
56
AddParametro("@fecha", fecha.ToShortDateString());
AddParametro("@monto", monto.ToString());
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al MODIFICAR Cuota:" + e.ToString());
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Capa_de_Datos;
using System.Data;
using System.Windows.Forms;
namespace Capa_de_Negocio
{
public class CNPagos : Conexion
57
{
private string id_pago;
private DateTime fecha;
private string monto;
private string id_plan;
private string id_cuota;
public CNPagos()
{
id_pago = monto = id_plan = id_cuota = string.Empty;
fecha = DateTime.Today.Date;
}
58
}
}
}
59