Chapter 4 Investigating and designing of software and hardware for the AZ1 EIT system
4.7. Calibration process for a multi-channel and multi-frequency AZ1 EIT system
Nombre de la propuesta.
Sistema Informático orientado a la web, para mejorar la gestión de bienes patrimoniales en el Sindicato de Choferes de la ciudad de Babahoyo
Objetivos de la propuesta:
Objetivo General.
Desarrollar una Aplicación web, para mejorar la gestión de bienes patrimoniales en el Sindicato de Choferes de la ciudad de Babahoyo. Objetivos Específicos.
- Determinar los requerimientos que necesita el Sindicato de Choferes de la ciudad de Babahoyo para optimizar la gestión de bienes patrimoniales.
- Implementar una base de datos relacional que permita almacenar los datos de los bienes en forma coherente.
- Diseñar un interfaz de usuario coherente y jerárquico, para que los usuarios se sientan cómodos con la aplicación.
Elementos que conforman la propuesta.
La presente propuesta pretende solucionar el problema que existe en el control de bienes en el sindicato de choferes de la ciudad de Babahoyo, con el diseño y desarrollo de una aplicación web que permita mejorar la gestión de bienes patrimoniales. Esta aplicación funcionará en un entorno web que permitirá administrar y consultar información de los diferentes
32
bienes de la institución. Esta aplicación dará apoyo a los siguientes procesos:
Administrar usuarios de la aplicación. Consulta de roles y permisos de usuarios. Administración de perfiles de usuarios. Administración de empleados.
Administración de los activos fijos.
Administración de las bajas a los activos fijos.
El sistema informático permitirá un fácil acceso a la información de los empleados y de los diferentes activos fijos, y de igual manera permitirá hacer un seguimiento a los empleados que poseen a cargo determinados activos fijos.
Permitirá ingreso de clientes, y trámites vehiculares a través de un ordenador con una conexión a Internet.
Desarrollo de la Propuesta.
La propuesta que se planteada al problema descrito en la parte inicial de este proyecto de investigación como solución, consiste en la implementación de una aplicación web que ha sido desarrollada bajo las directrices de la metodología de desarrollo de software denominado “Cascada o Lineal”.
Metodología de Desarrollo.
Para el desarrollo de la presente propuesta se ha tomado como directriz la metodología de cascada o lineal, ya que su dirección metodológica establece rigurosamente las etapas del ciclo de vida del software, de tal manera que el inicio de cada etapa debe esperar a la finalización de la etapa anterior; siendo las siguientes etapas:
33 Análisis de requisitos,
Diseño del Sistema, Diseño del Programa, Codificación,
Pruebas, Implantación y Mantenimiento.
Análisis de Requerimientos.
El análisis previo consta de una descripción de los principales procesos que se desarrollan en el Sindicato de Choferes de la ciudad de Babahoyo.
Perspectiva General:
Gráfico No 12. Diagrama General sobre el Control de Bienes.
Elaborado por: Autor del proyecto. Registro del Control de los Bienes:
Los empleados solicitan al administrador un determinado activo fijo. El administrador genera un registro del empleado a cargo
del activo fijo.
El administrador da de baja los activos fijos que cumplen su
ciclo de vida.
El administrador realiza un seguimiento de los
activos fijos.
El empleado se acerca al departamento de bodega, y solicita al administrador un determinado activo fijo.
Se recepta la petición del empleado registrando en el libro general el código del activo y el número de cedula de identidad del empleado.
El administrador entrega el activo al empleado, el cual será responsable del mismo.
34
Gráfico No 13. Diagrama Registro del Control de los Bienes.
Elaborado por: Autor del proyecto. Consulta de los Bienes:
Gráfico No 14. Diagrama Consulta de Bienes.
Elaborado por: Autor del proyecto.
Estructura de la Aplicación:
La aplicación web contara con los siguientes módulos:
Gráfico No 15. Diagrama Estructura de la Aplicación.
Elaborado por: Autor del proyecto. El administrador
determina el código del bien a
consultar.
Ejecuta una inspección visual
del código o del bien en bodega. Sino lo encuentra examina el libro general de registro. C ontrol de B iene s S indi ca to de C hofe re s de B aba hoy o Inicio Sesión. Cuenta Usuarios Empleados. Bienes. Bajas. Reportes.
35
Diagramas de Caso de Uso.
Este diagrama define como interactúa el usuario con cada uno de los módulos de la aplicación.
Vista general del Sistema.
Gráfico No 16. Diagrama de Caso de Uso.
Elaborado por: Autor del proyecto. Vista por Autores.
Autenticación Seguridas del Sistema Ubicaciones Movimientos Reportes Administrador Emplea dos Jefe de Biene s Activos Sistema Informático
36
Gráfico No 17. Diagrama de Caso de Uso - Administrador.
Elaborado por: Autor del proyecto.
Gráfico No 18. Diagrama de Caso de Uso - Empleado.
Elaborado por: Autor del proyecto.
Gráfico No 19. Diagrama de Caso de Uso – Jefe de Bienes.
37 Diseño de la Base de Datos.
Modelo Entidad Relación.
Gráfico No 19. Modelo Entidad Relación.
Elaborado por: Autor del proyecto.
Diccionario de Datos.
38
Tabla 2 Empleados:
Tabla 3 Entidad:
39
Tabla 5 Movimientos:
Tabla 6 Usuarios:
40 Script de la Base de Datos.
CREATE TABLE `Activos` ( `codactivo` varchar(5) NOT NULL, `activo_codmarca` varchar(2) NOT NULL, `activo_codmodelo` varchar(2) NOT NULL, `activo_codpatrimonio` varchar(2) NOT NULL, `activo_codubicacion` varchar(2) NOT NULL, `activo_codempleado` varchar(10) NOT NULL, `activo_codcausal` varchar(2) NOT NULL, `activo` varchar(100) NOT NULL,
`activo_dia` varchar(2) NOT NULL, `activo_mes` varchar(2) NOT NULL, `activo_anio` varchar(4) NOT NULL, `activo_serie` varchar(20) NOT NULL, `activo_cantidad` varchar(8) NOT NULL, `activo_valor` varchar(8) NOT NULL, `activo_foto` varchar(50) NOT NULL, `activo_estado` varchar(8) NOT NULL, PRIMARY KEY (`codactivo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Cargos` (
`codcargo` varchar(2) NOT NULL, `cargo` varchar(100) NOT NULL,
41 `cargo_area` varchar(50) NOT NULL, `cargo_estado` varchar(8) NOT NULL, PRIMARY KEY (`codcargo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Causales` (
`codcausal` varchar(2) NOT NULL, `causal` varchar(50) NOT NULL, `causal_estado` varchar(8) NOT NULL, PRIMARY KEY (`codcausal`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Empleados` (
`codempleado` varchar(10) NOT NULL, `empleado_trato` varchar(10) NOT NULL, `empleado` varchar(50) NOT NULL, `empleado_login` varchar(20) NOT NULL, `empleado_password` varchar(20) NOT NULL, `empleado_domicilio` varchar(50) NOT NULL, `empleado_email` varchar(50) NOT NULL, `empleado_telefono` varchar(22) NOT NULL, `empleado_estado` varchar(8) NOT NULL,
PRIMARY KEY (`codempleado`,`empleado_login`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Entidad` (
`entidad` varchar(200) NOT NULL, `titulo` varchar(150) NOT NULL, `direccion` varchar(100) NOT NULL, `lugar` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, `telefono` varchar(100) NOT NULL, `web` varchar(50) NOT NULL, PRIMARY KEY (`entidad`)
42 CREATE TABLE `Marcas` (
`codmarca` varchar(2) NOT NULL, `marca` varchar(50) NOT NULL, `marca_estado` varchar(8) NOT NULL, PRIMARY KEY (`codmarca`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Modelos` (
`codmodelo` varchar(2) NOT NULL, `modelo` varchar(50) NOT NULL, `modelo_estado` varchar(8) NOT NULL, PRIMARY KEY (`codmodelo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Movimientos` (
`codmovimiento` varchar(7) NOT NULL,
`movimiento_codempleado` varchar(10) NOT NULL, `movimiento_codactivo` varchar(5) NOT NULL, `movimiento_codubicacion` varchar(2) NOT NULL, `movimiento_codcausal` varchar(2) NOT NULL, `movimiento_detalle` varchar(20) NOT NULL, `movimiento_dia` varchar(2) NOT NULL, `movimiento_mes` varchar(2) NOT NULL, `movimiento_anio` varchar(4) NOT NULL, `movimiento_acta` varchar(7) NOT NULL, `movimiento_cantidad` varchar(8) NOT NULL, `movimiento_valor` varchar(8) NOT NULL, `movimiento_estado` varchar(8) NOT NULL, PRIMARY KEY (`codmovimiento`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Patrimonios` (
`codpatrimonio` varchar(2) NOT NULL, `patrimonio_codigo` varchar(3) NOT NULL, `patrimonio` varchar(50) NOT NULL,
43 `patrimonio_depreciacion` varchar(5) NOT NULL, `patrimonio_estado` varchar(8) NOT NULL, PRIMARY KEY (`codpatrimonio`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Periodos` (
`codperiodo` varchar(2) NOT NULL, `periodo` varchar(15) NOT NULL, `periodo_estado` varchar(8) NOT NULL, PRIMARY KEY (`codperiodo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `Ubicaciones` ( `codubicacion` varchar(2) NOT NULL, `ubicacion_codjefe` varchar(10) NOT NULL, `ubicacion` varchar(50) NOT NULL,
`ubicacion_estado` varchar(8) NOT NULL, PRIMARY KEY (`codubicacion`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Usuarios` (
`codusuario` varchar(2) NOT NULL, `usuario_codcargo` varchar(2) NOT NULL, `usuario_login` varchar(20) NOT NULL, `usuario_password` varchar(20) NOT NULL, `usuario_trato` varchar(8) NOT NULL, `usuario` varchar(50) NOT NULL,
`usuario_iniciales` varchar(5) NOT NULL, `usuario_estado` varchar(8) NOT NULL, PRIMARY KEY (`codusuario`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Vehiculos` (
44 `vehiculo_color` varchar(20) NOT NULL, `vehiculo_placa` varchar(20) NOT NULL, `vehiculo_motor` varchar(20) NOT NULL, `vehiculo_marca` varchar(30) NOT NULL, `vehiculo_anio` varchar(4) NOT NULL, `vehiculo_estado` varchar(8) NOT NULL, PRIMARY KEY (`codvehiculo`)
45 Desarrollo.
Programación de la página web para dar de baja los bienes. <script language="JavaScript">
var nav = window.Event ? true : false; function agregar() {
var indice = document.formulario.codactivo.selectedIndex; document.formulario.action ="administrador_bajas.php?agrega=si&activo="+formulario.codactivo.value+"&indice ="+indice document.formulario.submit(); } function validatexto(evt,texto,limite) {
var key = nav ? evt.which : evt.keyCode; if (texto.value.length < limite){
return ((key >= 225 && key <= 250 ) || key == 32 || key == 8 || key == 13 || key == 38 || (key >= 97 && key <= 122) || (key >= 65 && key <= 90) || key == 241 || key == 209); }else{
return ((key == 0)|| (key == 8)); }
}
function valida_valor(evt) {
var key = nav ? evt.which : evt.keyCode;
return (key == 46 || key == 8 || (key >= 48 && key <= 57)); }
function valida_numero(evt){
var key = nav ? evt.which : evt.keyCode; return (key == 8 || (key >= 48 && key <= 57)); } </script> <?php require("conexion.php"); require("modulo.php"); $codactivo=crearceros($codactivo,5);
46
echo "<body leftmargin=0 topmargin=2 rightmargin=0 bottommargin=0
marginwidth=0 marginheight=0 onLoad='this.document.formulario.activo.focus();'>"; echo "<form name=formulario method=post
action=administrador_bajas.php?presionado=si&agrega=$agrega&codactivo=$codactiv o&indice=$indice>";
echo "<center><table border=0 cellPadding=2 cellSpacing=2 background=frame.png><tr><td>";
echo "<table border=0 width=500 cellPadding=2 cellSpacing=0 background=barra.png>";
echo "<tr height=35><td width=5></td><td><span style='font-size:8.0pt;font-
family:Tahoma;color:#FFFFFF'><b>Bajas</b></span></td><td></td><td width=5><a href=contenido.html><img src=exit.png border=0></a></td></tr>";
echo "</table>";
echo "<table border=0 width='100%' height=1 cellPadding=0 cellSpacing=0 bgcolor=373737><tr><td></td></tr></table>";
echo "<table border=0 width='100%' height=1 cellPadding=0 cellSpacing=0 bgcolor=FFFFFF><tr><td></td></tr></table>";
echo "<table border=0 width='100%' cellPadding=2 cellSpacing=0 bgcolor=D4D0C8>";
$result = mysql_query("Select * From activos Where (activo_estado='Activo') Order by activo", $link);
$row = mysql_num_rows($result); if ($row > 0){
$i=0;
echo "<tr><td width=5></td><td width=100><span style='font-size:8.0pt;font- family:Tahoma;color:#000000'>Seleccionar Activo</span></td>";
echo "<td></td><td><Select name=codactivo size=7 multiple onchange='agregar($codusuario);'>";
while ($row != $i){
if (($indice == $i)and($agrega=="si")){ $color="3399FF"; $l_color="FFFFFF"; }else{ $color="FFFFFF"; $l_color="000000"; }
47
echo "<option style='font-size:8.0pt;font-family:Tahoma;color:$l_color;background- color:$color' Value=".mysql_result($result,$i,"codactivo"). ">" .mysql_result($result,$i,"activo"). "</option>"; $i++; } } echo "</Select></td></tr>"; //--- if ($agrega=="si"){
$result = mysql_query("Select * From activos Where (codactivo='$codactivo') ", $link);
$row = mysql_num_rows($result);
$text_activo=mysql_result($result,0,"activo"); $valor=mysql_result($result,0,"activo_valor");
echo "<tr><td width=5></td><td width=100><span style='font-size:8.0pt;font- family:Tahoma;color:#000000'>Nombre del activo</span></td><td></td><td><span style='font-size:8.0pt;font-family:Tahoma;color:#000000'><b> $text_activo
</b></span></td></tr>";
//---
$result = mysql_query("Select * From empleados,movimientos,ubicaciones Where (codempleado=movimiento_codempleado)and(codubicacion=movimiento_codubicacio n)and(movimiento_codactivo='$codactivo') Order by codmovimiento DESC ", $link); $row = mysql_num_rows($result); $empleado=mysql_result($result,0,"codempleado"); $ubicacion=mysql_result($result,0,"codubicacion"); $txt_empleado=mysql_result($result,0,"empleado"); $txt_ubicacion=mysql_result($result,0,"ubicacion"); //--- echo "<tr><td width=5></td><td width=100><span style='font-size:8.0pt;font- family:Tahoma;color:#000000'>Respondable</span></td><td></td><td><span style='font-size:8.0pt;font-family:Tahoma;color:#000000'><b> $txt_empleado </b></span></td></tr>";
echo "<tr><td width=5></td><td width=100><span style='font-size:8.0pt;font- family:Tahoma;color:#000000'>Ubicación</span></td><td></td><td><span style='font-size:8.0pt;font-family:Tahoma;color:#000000'><b> $txt_ubicacion </b></span></td></tr>";
48
//--- $result = mysql_query("Select * From causales Where
(codcausal!='01')and(codcausal!='02')and(codcausal!='03') Order by causal", $link); $row = mysql_num_rows($result);
echo "<tr><td width=5></td><td width=100><span style='font-size:8.0pt;font- family:Tahoma;color:#000000'>Causal</span></td>";
echo "<td></td><td><Select name=causal style='font-size:8.0pt;font- family:Tahoma;color:000000'>";
$i=0;
while ($row != $i){
echo "<option Value=".mysql_result($result,$i,"codcausal"). ">" .mysql_result($result,$i,"causal"). "</option>";
$i++; }
echo "</Select></td></tr>";
//--- $result_movimiento = mysql_query("Select * From movimientos Where (movimiento_codactivo='$codactivo') Order by codmovimiento", $link); $row_movimiento = mysql_num_rows($result_movimiento); $j=0; while ($row_movimiento != $j){ $detalle=mysql_result($result_movimiento,$j,"movimiento_detalle"); switch ($detalle){ case "Operativo": $stock=mysql_result($result_movimiento,$j,"movimiento_cantidad"); break; case "Traslado": $stock=$stock-mysql_result($result_movimiento,$j,"movimiento_cantidad"); break; case "Baja": $stock=$stock-mysql_result($result_movimiento,$j,"movimiento_cantidad"); break; } $j++; } $maximo=$stock;
49 //---
echo "<tr><td width=5></td><td><span style='font-size:8.0pt;font- family:Tahoma;color:#000000'>Cantidad</span></td>";
echo "<td width=1></td><td><Select name=cantidad style='font-size:8.0pt;font- family:Tahoma;color:000000'>";
for ($n=1;$n<=$maximo;$n++){ echo "<option Value=$n>$n</option>"; }
echo "</Select></td></tr>"; }
//--- echo "<tr><td width=5></td><td width=100><span style='font-size:8.0pt;font- family:Tahoma;color:#000000'>Fecha de Baja</span></td>";
echo "<td width=1></td><td><Select name=dia style='font-size:8.0pt;font- family:Tahoma;color:000000'>";
for ($i=1;$i<=31;$i++){
echo "<option Value=$i>$i</option>"; }
echo "</Select>";
//---
echo "<Select name=mes style='font-size:8.0pt;font-family:Tahoma;color:000000'>"; for ($i=1;$i<=12;$i++){
echo "<option Value=$i>".retornames($i)."</option>"; }
echo "</Select>";
//--- $anio=date(Y);
echo "<Select name=anio style='font-size:8.0pt;font-family:Tahoma;color:000000'>"; echo "<option Value=$anio>$anio</option>";
echo "</Select>"; echo "</td></tr>"; //--- if ((strlen($acta)>=1)and($presionado=="si")){ $acta=crearceros($acta,7); }
50
echo "<tr><td width=5></td><td width=100><span style='font-size:8.0pt;font- family:Tahoma;color:#000000'>No. de Acta</span></td><td width=1><span
style='font-size:8.0pt;font-family:Tahoma;color:#FF0000'>*</span></td><td><input name=acta type=text size=7 maxlength=7 onKeyPress='return
valida_numero(event)' style='font-size:8.0pt;font-family:Tahoma;color:#000000' onkeyup='ingresar(event)' value='$acta'></td></tr>";
echo "</table></center>";
echo "<table border=0 width='100%' height=1 cellPadding=0 cellSpacing=0 bgcolor=808080><tr><td></td></tr></table>";
echo "<table border=0 width='100%' height=1 cellPadding=0 cellSpacing=0 bgcolor=FFFFFF><tr><td></td></tr></table>";
echo "<table border=0 width='100%' bgcolor=D4D0C8><tr><td>"; echo "<center><table border=0 height=30 bgcolor=D4D0C8><tr>";
echo "<td><a href=administrador_bajas.php><img src=nuevo.png border alt=' Nuevo '></a></td>";
echo "<td><center><input type=image src=guardar.png name=Submit alt=' Guardar '></center></td>";
echo "<td><a href=administrador_bajasconsultar.php><img src=consultar.png border=0 alt=' Consultar '></a></td>";
echo "</tr></table></center>"; echo "</td></tr></table>"; if ($presionado=="si"){ $datosllenos="True"; $error=""; if (strlen($acta)==0){ $error="No. de Acta, "; $datosllenos="False"; } if ($agrega!="si"){
$error="$error seleccione un activo, "; $datosllenos="False";
}
if ($datosllenos=="False"){ echo "<meta http-equiv='refresh'
content='2;URL=administrador_bajas.php?acta=$acta&agrega=$agrega&codactivo=$c odactivo&cantidad=$cantidad&indice=$indice'>";
51
echo "<table border=0 width='100%' cellPadding=2 cellSpacing=0 bgcolor=D4D0C8>";
echo "<tr height=40><td width=40><center><img src=error.png border=0></center></td><td><span style='font-size:8.0pt;font-
family:Tahoma;color:#000000'>Los campos $error son obligatorio </span></td></tr>"; echo "</table>";
}else{
$result = mysql_query("Select * From movimientos Order by codmovimiento", $link); $row = mysql_num_rows($result);
$i=0;
if ($row >= 1){ while ($row != $i){
if ((mysql_result($result,$i,"codmovimiento")-1)==$i){ $codmovimiento=mysql_result($result,$i,"codmovimiento")+1; }else{ $codmovimiento=$i+1; $i=$row-1; } $i++; } }else{ $codmovimiento=1; } $codmovimiento=crearceros($codmovimiento,7);
$result = mysql_query("Update activos Set activo_estado='Inactivo' Where (codactivo='$codactivo') ",$link);
$result = mysql_query($result);
echo "<meta http-equiv='refresh' content='2;URL=administrador_bajasconsultar.php'>"; $result = mysql_query("Insert Into movimientos
(codmovimiento,movimiento_codempleado,movimiento_codubicacion,movimiento_co dactivo,movimiento_detalle,movimiento_dia,movimiento_mes,movimiento_anio,movi miento_acta,movimiento_cantidad,movimiento_valor,movimiento_codcausal,movimien to_estado) values ('$codmovimiento','$empleado','$ubicacion','$codactivo','Baja','$dia','$mes','$anio','$acta ','$cantidad','$valor','$causal','Activo')", $link); $result = mysql_query($result);
52 //---
echo "<table border=0 width='100%' cellPadding=2 cellSpacing=0 bgcolor=D4D0C8>";
echo "<tr height=40><td width=40><center><img src=ok.png border=0></center></td><td><span style='font-size:8.0pt;font-
family:Tahoma;color:#000000'>Los datos fueron guardados correctamente espere un momento</span></td></tr>";
echo "</table>"; }
}else{
echo "<table border=0 width='100%' cellPadding=2 cellSpacing=0 bgcolor=D4D0C8>";
echo "<tr height=40><td width=40><center><img src=warning.png border=0></center></td><td><span style='font-size:8.0pt;font-
family:Tahoma;color:#000000'>Los campos con el signo <span style='font- size:8.0pt;font-family:Tahoma;color:#FF0000'>*</span> son obligatorio</span></td></tr>"; echo "</table>"; } echo "</td></tr></table>"; echo "</td></tr></table></center>"; ?> </form> </body>
53 Pruebas.
Las pruebas constantes del sistema informático en su proceso de desarrollo constituyen un factor transcendental para mejora el software, la aplicación web ha sido sometido a dos tipos de pruebas: