Vous êtes sur la page 1sur 96

Licenciatura en Informtica

Ingeniera de Software
M. Claudia Viviana lvarez Vega

SISTEMA DE
ADMINISTRACIN DE
ENTRADAS

ndice
Introduccin........................................................................................................ 3
Organizacin del Proyecto................................................................................... 4
Anlisis de Riesgos............................................................................................ 10
Requerimientos de Hardware y Software..........................................................13
Estimacin de Costos........................................................................................ 14
Divisin de Trabajo............................................................................................ 15
Tabla de dependencias de actividades..............................................................17
Mecanismos de Supervisin.............................................................................. 19
Necesidades del cliente.................................................................................... 21
Requerimientos del Sistema AGROBAJA............................................................22
Validaciones Sistema Agrobaja.........................................................................24
Restricciones Sistema Agrobaja:.......................................................................27
Prototipo (Mapa del sitio).................................................................................. 28
Definicin del lenguaje de programacin..........................................................33
Login de usuarios.............................................................................................. 34
Alta de usuario.................................................................................................. 38
Modificacin de usuarios................................................................................... 41
Eliminar usuarios.............................................................................................. 44
Ventas y generacin de boletos........................................................................47
Cancelacin Simple........................................................................................... 50
Cancelacin Masiva........................................................................................... 54
Quemado de boletos......................................................................................... 58
Cortes de caja................................................................................................... 62
Reportes de Personas........................................................................................ 68
Reporte Cortes de caja...................................................................................... 74
Diagrama de clases........................................................................................... 78
Diagrama Entidad Relacin............................................................................ 79
Estructura Base de Datos.................................................................................. 80
Interfaz.............................................................................................................. 81
Vista de principales........................................................................................... 81
Cdigo............................................................................................................... 87

Pgina | 1

Pgina | 2

Documento
de
Planeacin

Pgina | 3

Introduccin

Agrobaja es la nica exposicin Agropecuaria y de Pesca del pas que ofrece


anualmente los productos y servicios de principal tendencia en el sector agrcola,
ganadero, pesquero y agroindustrial, donde se renen expositores provenientes
de diversos estados de la repblica que durante quince aos ha sido cede de los
principales productores en dichos sectores. Todo esto realizado por el Patronato
de AgroBaja, A.C.
Gracias a las materias de Reingeniera de sistemas y Desarrollo de aplicaciones
web dirigidas por los profesores Claudia lvarez y Michael Montejano
respectivamente, se dio inicio a un proyecto de vinculacin con el Patronato de
AgroBaja que consista en la realizacin de un Sistema de Control de Entradas
que permitiera en resumen tres puntos importantes para los organizadores del
evento:
1. La venta de boletos el da del evento, dejando de lado la preventa y las
impresiones anticipadas de carteras de boletos evitando el desperdicio y
una posible filtracin de personas que no pagaron.
2. El control de entrada a la exposicin gracias a un cdigo de barras
impreso en el boleto de admisin que posteriormente sera escaneado
en la puerta de acceso. Esto mostrara en una pantalla el estatus del
boleto, ya sea permitiendo su entrada o negndola en caso de haber ya
accedido con dicho boleto anteriormente.
3. Generacin de reportes en tiempo real bajo distintos rubros y pudindolo
hacer en la pantalla del sistema o con la posibilidad de imprimirlo
mediante un archivo PDF.
Todo lo anterior mencionado buscando desarrollarlo en el lenguaje de
programacin PHP, apoyados con el MySQL como manejador de base de datos,
adems HTML, CSS y JavaScript como complementos para el desarrollo y
presentacin del proyecto en una plataforma web.
A continuacin se anexa la estimacin del costo del proyecto de forma detallada
para su anlisis.

Pgina | 4

Organizacin del Proyecto

Definicin de las vacantes para el Sistema de control de entradas para Agrobaja.


Lder del proyecto.
Requerimientos:

Escolaridad: Licenciatura en Informtica o a fin.


Sexo: Indistinto.
Horario flexible.
Idiomas: Ingls medio o avanzado (Preferentemente escrito).
Dominio Avanzado de MS Project.

Experiencia:

Ejecucin de Tareas Operativas.


Coordinacin de Equipos de Trabajo.
Aplicacin de Mtricas.
Metodologas aplicadas al Desarrollo de Software.
Optimizacin de Procesos de Negocio.
Estimacin de Tiempos y Recursos.
Automatizacin de Tareas.
Alineacin de Estndares.
Planeacin, Ejecucin y Cierre de Proyectos.
Garantizar el desarrollo de Soluciones Tecnolgicas.
Aseguramiento de Costos.
Entrega de Proyectos.
Atencin a Usuarios Finales.

Cualidades:

Buena comunicacin oral y escrita.


Liderazgo.
Competencias.
Visin Estratgica.
Actitud de Servicio.
Trabajo en Equipo.
Enfoque a Resultados.
Alto Sentido de Urgencia.
Solucin de Problemas.

Pgina | 5

Ingeniero de Requerimientos.
Requisitos:

Escolaridad: Licenciatura en Informtica o a fin.


Sexo indistinto.
Idiomas: Ingls (Hablado, escrito y ledo).
Horario flexible.
Conocimientos bsicos de PHP y HTML.
Conocimientos de diagramado UML orientado a objetos.
Facilidad de palabra.
Facilidad de movilidad. (De preferencia carro propio)

Experiencia:

Procesos de Ingeniera de Software


Modelado de sistemas.
Trato con gente.
Trayectoria laboral en el are de incumbencia.
Conocimientos de base de datos relacionales.

Cualidades:

Identificar y entender problemas y oportunidades.


Articular necesidades que estn asociadas con el problema clave a
solucionar.
Colaborar efectivamente con el equipo a travs de sesiones de trabajo
colaborativo, talleres y otras tcnicas.
Buenas habilidades comunicativas, verbales y escritas.
Conocimiento en negocios y dominios de tecnologa; habilidad de absorber
y entender rpidamente cualquier informacin.

Pgina | 6

Desarrollador.
Requisitos:

Escolaridad: Licenciatura en informtica o a fin.


Idioma Ingls (lectura y escritura).
Sexo indistinto.
Horario flexible.
Slidos conocimientos de diagramacin lgica, algoritmos y estructuras de
datos.
Dominio de lenguajes de maquetado y programacin intermedio a experto:
o HTML.
o CSS.
o JavaScript.
o PHP.
o SQL.
Slidos conocimientos de programacin orientada a objetos.

Experiencia:

Experiencia de trabajo con al menos un lenguaje de programacin


Orientado a Objetos con aplicacin Web.
Slidos Conocimientos de HTML, CSS, JavaScript y PHP
Conocimientos de bases de datos y sintaxis SQL
Conocimientos de implementacin y configuracin de aplicaciones Web en
servidores de red.
Conocimientos de testing funcional y de stress de aplicaciones web
Experiencia de trabajo con Sistemas de control de versiones.
Conocimientos de desarrollo Orientado a Objetos Junior.

Cualidades:

Capacidad para establecer prioridades.


Autonoma.
Planificacin y control.
Escucha y comunicacin.
Orientacin a resultados.
Pensamiento de integracin.
Capacidad para detectar riesgos.
Visin de negocio.
Gua y conduccin de personas.
Coordinacin con el cliente.

Pgina | 7

Diseador.
Requisitos:

Escolaridad: Licenciatura en informtica o a fin.


Idioma Ingls (lectura y escritura).
Sexo indistinto.
Horario flexible.
Maquetacin CSS: Saber maquetar las pginas web para los diferentes
navegadores (Chrome/Firefox/IE).
Manejo de alguna aplicacin de diseo (Dreamweaver).
Conocimiento de alguna herramienta de edicin grfica (Gimp, Photoshop,
Corel-Draw, etc.)
Slidos conocimientos de diagramacin lgica, algoritmos y estructuras de
datos.
Conocimientos de diagramado UML orientado a objetos.

Experiencia:

Saber utilizar un cliente FTP.


Conocer proceso de compra de dominios y servicios de hosting.
Gestin y edicin de gestores de contenidos (Joomla, Drupal, PhpNuke, o
gestores de noticias como Wordpress, Movable Type, Type3, E107, etc.)

Cualidades:

Capacidad para establecer prioridades.


Autonoma.
Planificacin y control.
Escucha y comunicacin.
Orientacin a resultados.
Pensamiento de integracin.
Capacidad para detectar riesgos.
Visin de negocio.
Gua y conduccin de personas.
Coordinacin con el cliente.

Pgina | 8

Ingeniero de Pruebas.
Requisitos:

Escolaridad: Licenciatura en Informtica o a fin.


Sexo: indistinto.
Idiomas: Ingls (Hablado, escrito y ledo).
Horario flexible
Dominio de lenguajes de maquetado y programacin bsico a intermedio:
o HTML.
o CSS.
o JavaScript.
o PHP.
o SQL.

Experiencia:

Mantenimiento de equipo de cmputo.


Desarrollo de Procesos y Diseo de Experimentos.
Integracin y Automatizacin de Pruebas

Cualidades:

Buena comunicacin oral y escrita.


Atencin a Usuarios Finales.
Visin Estratgica.
Trabajo en Equipo.
Solucin de Problemas.

Pgina | 9

Convocatoria.

La convocatoria de los candidatos se realizar publicando anuncios entre los


pasillos y lugares de inters de la Facultad de Ciencias Administrativas, pues es
donde se encuentran los alumnos de informtica y se puede realizar la
convocatoria de voz en voz.
Adems se realizar una convocatoria por medio del peridico para la seleccin
del personal de una manera ms uniforma y de algunas otras carreras a fines que
pudieran integrar y colaborar. Estos anuncios aparecern en la seccin de
Clasificados una vez al mes por puesto, hasta que las vacantes sean ocupadas.
De cualquiera de las dos formas se les solicitara el envo de su currculo a un
correo por definir. Posteriormente se les responder a las personas en las que
estemos interesados para comenzar con el proceso de Entrevista y Reclutamiento.

Entrevista y Reclutamiento.

Para la entrevista, se recibirn a las personas seleccionadas por la convocatoria,


donde estarn las personas ms calificadas segn la persona encargada del
reclutamiento para el proyecto en puerta.
Se les har una entrevista mixta donde se tendrn una serie de preguntas de
inters pero que de acuerdo a la pltica se ir extendiendo con ms preguntas a
consideracin de la persona conforme a los temas que se presenten en la
entrevista.
Se reclutarn a las personas que sean identificadas como aptas para el objetivo
del proyecto, que tengan las capacidades requeridas y que lo hayan demostrado
en la entrevista, adems que se adapten con las otras personas reclutadas y que
se puedan adaptar a los planes de contingencia y futuros compaeros de trabajo.

Pgina | 10

Anlisis de Riesgos
El anlisis de riesgos define las amenazas latentes a las que se puede enfrentar un proyecto. A continuacin se definen
los que aplican a este proyecto en particular:

Riesgos

Probabilidad

Efecto/impacto

Enfermedad del Lder de Proyecto

30%

Leve

Enfermedad del Analista

30%

Leve

Enfermedad del Diseador

30%

Enfermedad del Desarrollador

Estrategia

Costo (Semana

Contar con un sublder o alguien con la


calendarizacin o conocimientos sobre todo el
proyecto.
Reorganizar al equipo de manera que todas
las tareas que realizaba sean elaboradas.

$5,000

Leve

Reorganizar al equipo de manera que todas


las tareas que realizaba sean elaboradas.

$3,000

30%

Leve

Reorganizar al equipo de manera que todas


las tareas que realizaba sean elaboradas.

$4,000

Enfermedad del Ingeniero de Pruebas

30%

Leve

Reorganizar al equipo de manera que todas


las tareas que realizaba sean elaboradas.

$3,300

Muerte del Personal

10%

Leve

Reorganizar al equipo de manera que todas


las tareas que realizaba sean cumplidas.

$30,000

Embarazo del Personal

10%

Moderado

Reorganizar al equipo de manera que todas


las tareas que realizaba sean cumplidas.

$60,000

Ausencia de Personal por Causas de


Fuerza Mayor

10%

Moderado

Reorganizar al equipo de manera que todas


las tareas que realizaba sean elaboradas.

$5,000

Renuncia de Personal

20%

Serio

Generar un buen ambiente de trabajo y


ofrecer un sueldo adecuado.

$5,000

Pgina | 11

$4,500

Huelga

10%

Serio

Inexperiencia de Empleados

20%

Leve

Falta de Capacitacin

20%

Leve

Falta de Comunicacin

25%

Leve

Equivocacin a Instrucciones

30%

Leve

Incumplimiento de Pagos (Hosts,


Servers)
Quiebre de la Compaa

20%

Moderado

10%

Moderado

Prdida de Datos

25%

Moderado

Desastre Natural

25%

Moderado

Incendio

10%

Leve

Falla de Equipos

35%

Serio

Falta alguna herramienta o software

10%

Serio

Las herramientas o software son


obsoletas o ya no tienen
soporte/asistencia.

15%

Moderado

Pgina | 12

Generar un buen ambiente de trabajo y


ofrecer sueldos adecuados.
Al contratar personal ser rigurosos con las
pruebas conocimientos y las entrevistas.

$20,000

Asegurar que los empleados cuenten con los


conocimientos actualizados.
Realizar juntas semanales para tratar dudas y
puntos del proyecto.
Ser claro al momento de dar instrucciones al
empleado.
Pagar por adelantado los servicios o tener
algn fondo de emergencia.
Administrar adecuadamente el capital de
trabajo.
Respaldar datos cada cierto tiempo.

$10,000

Adecuar las instalaciones de manera que los


equipos y la informacin no sean tan
afectados.
Adecuar las instalaciones de manera que los
equipos y la informacin no sean tan
afectados.
Contar con respaldos para los equipos de
cmputo.
Realizar un buen anlisis de todos los
requerimientos para la empresa y asegurarse
de tener una lista con todas las herramientas
que se necesiten.
Realizar revisiones peridicas con las
actualizaciones que pueda haber en las
herramientas necesarias para el desarrollo del
proyecto teniendo en cuenta las noticias y
anuncios para un futuro prximo.

$25,000

$2,000

$2,000
$2,500
$5,000
10,000
$6,000

$25,000

$3,000
$10,000

$7,500

El cliente no comprende el impacto de


las modificaciones solicitadas

30%

Moderado

Realizar un buen anlisis con todos los


requerimientos solicitados por el cliente
adems de ir ms all de su visin a la par de
la firma de un contrato de conformidad al
momento de mostrarle el prototipo final donde
quede conforme con todos los elementos.

$15,000

Incompatibilidad de sistema de
computo

15%

Leve

Reestructurar los criterios de compatibilidad


con equipos.
Total neto semanal
Total de costos semanal sin embarazo y
muerte
Costos totales al Mes

$2,000

Pgina | 13

$262,800
$172,800
$781,200

Requerimientos de Hardware y Software

Para dar inicio al desarrollo del proyecto es necesario cumplir con los siguientes
requerimientos de hardware y software.

Este proyecto se llevar a cabo en el editor Codeanywhere que es una


plataforma en la nube con un costo de 20 dlares por mes.
Son necesarias 6 computadoras porttiles marca Dell con los siguientes
requerimientos.
o Procesador Intel Core i5.
o 500GB Hard Drive Black.
o 8GB Memory.
Con un precio de 600 dlares cada una.

Para el mdulo de entrada son necesarios dos scanner s ym b o l H - 1 6 7 0


con un precio de 223 dlares cada uno.
Para las pruebas de impresin de boletos es necesario contar con dos
impresoras de boletos marca Zebra GK420T con un precio de 851 dlares
cada una.

Pgina | 14

Estimacin de Costos

Proyecto: Sistema de Entradas - Agrobaja.

Costos Directos

Descripcin
A) Sueldos:
Lder
Ing. De Requerimientos
Diseador
Desarrollador x2
Ing. De Pruebas
Total Sueldos

Precio / Mes

Precio (6 Meses)

$20,000.00
$18,000.00
$12,000.00
$15,000.00
$13,400.00
$93,400.00

$560,400.00

B) Req. Hw/Sw:
SW. Codeanywhere
Portatil Dell x6
Scanner Symbl x2
Impresora Zebra x2

$360.00

$2,160.00
$64,800.00
$8,028.00
$30,636.00

Costos Indirectos
Papelera
Luz
Agua
Telfono/Internet
Gasolina

$2500.00
$400.00
$400.00
Total

Costos Ocultos

$781,200.00

Divisin de Trabajo

Pgina | 15

$1,036.00
$15,000.00
$2,400.00
$2,400.00
$1,800.00
$688,660.00
$4,687,200.00

Actividades que desempea el lder.


Encargado del rol: Adrin Ricardo Ahumada Duarte.

Realizar la Planificacin del proyecto.


Establecer la Organizacin del proyecto.
Definir los perfiles de los roles que llevarn a cabo la realizacin del
proyecto.
Reclutamiento y seleccin del personal.
Elaborar el Anlisis de Riesgos del proyecto.
Crear la divisin del trabajo enlistando todas las actividades que realizarn
cada uno de los roles y estableciendo quin desempear cada rol.
Crear la calendarizacin del proyecto mediante diagrama GANTT.
Establecer qu mecanismos de supervisin emplear para la revisin de
avances del proyecto y evaluacin de desempeo del personal.
(Herramientas CASE)
Programar y acudir a las citas con el cliente para la introduccin del equipo
con el cliente, presentacin de avances del proyecto y del producto final al
cliente.
Elaborar la estimacin costo proyecto a travs de algn modelo o mtodo
de estimacin de costos.
Motivar al equipo de trabajo ofrecindoles reuniones fuera del trabajo
promoviendo la convivencia, armona, comunicacin y la unin entre los
integrantes.
Realizar el Plan de Desarrollo del Personal.
Realizar el Plan de Calidad.

Actividades que desempea el Ing. Requerimientos (Analista).


Encargado del rol: Daniel Carlos Snchez Chan.

Establecer los requerimientos de hardware y software para el inicio y


desarrollo del proyecto.
Acudir a las citas con el cliente para levantar los requerimientos que ste
necesita que tenga el sistema.
Crear los requerimientos del sistema para cada uno de los requerimientos
del cliente.
Establecer los requerimientos no funcionales que llevar el sistema.
Establecer cada uno de los mdulos que conformarn el sistema, as como
los sub-mdulos de ser necesario.

Actividades que desempea el diseador.


Encargado del rol: Elena Jaqueline Flores Ramos.
Pgina | 16

Disear los diagramas de los procesos para cada uno de los mdulos y
sub-mdulos.
Disear la base de datos para el sistema. (Tablas, tipo de datos, relaciones,
etc.)
Crear la base de datos dentro del manejador para su manipulacin
posterior.
Disear las vistas para cada mdulo y sub-mdulo.
Crear la propuesta visual del sistema en conjunto.
Adecuar los criterios de diseo a las caractersticas del entorno donde se
vaya a implementar el sistema.
Crear el diseo front-end del sistema.
Apoyar en la realizacin del plan de Calidad.
Elaborar el diseo del Plan de Mantenimiento.

Actividades que desempea el desarrollador (Programador).


Encargado del rol: Isacc Lozano Montaez y Eduardo Abad Tinoco.

Crear el cdigo para cada mdulo y sub-mdulo del sistema siguiendo los
requerimientos funcionales del sistema.
Crear el cdigo que permita las validaciones y restricciones establecidas
por el diseador.
Modificar el cdigo de ser necesario ante algn cambio de requerimientos
por parte del cliente.
Realizar el Plan de mantenimiento.

Actividades que desempea el Ing. de Pruebas.


Encargado del rol: Ignacio Alberto Ortega Vidal.

Poner a prueba el cdigo creado por el programador, detectando fallos en el


sistema.
Implementar el sistema en el ambiente donde se va a desenvolver
(Instalacin en equipo).
Realizar pruebas al sistema en busca de fallos por incompatibilidad del
equipo en el uso sistema.
Realizar pruebas de estrs al sistema para ver la reaccin del mismo en
tiempo real, buscando colapsos o prdidas de informacin.
Apoyar en el diseo y realizacin del Plan de mantenimiento.
Tabla de dependencias de actividades

Pgina | 17

# Tarea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

Tareas / Actividades
Primera cita introductoria del lder del proyecto con el cliente.
Elaborar la Introduccin del Docto. Planeacin.
Establecer la organizacin del proyecto.
Definir los roles y perfiles de los integrantes del proyecto.
Procesos de reclutamiento y seleccin del personal.
Elaborar el Anlisis de Riesgos.
Elaborar la Divisin de trabajo.
Crear la Calendarizacin del proyecto.
Cita introductoria del equipo de ingeniera con el cliente.
Establecer los mecanismos de supervisin.
Elaborar Estimacin costo proyecto.
Realizar el Plan de Calidad.
Realizar el Plan de Desarrollo del Personal.
Realizar el Plan de Mantenimiento.
Cita con el cliente para levantamiento de requerimientos.
Establecer Req. HW/SW.
Establecer los mdulos y sub-mdulos del sistema.
Establecer los Req. Del Sistema para c/Req. Cliente.
Establecer los Req. No Funcionales del Sistema.
Disear la Base de Datos del Sistema.
Crear la Base de Datos dentro del manejador.
Disear la vista de cada mdulo y sub-mdulo del Sistema.
Crear la propuesta visual del Sistema en conjunto.
Cita con cliente para avance de la vista del sistema en busca de
cambios.
Disear Diagramas (Caso de Uso, Secuencia y Procesos) de Login
y ABC de Usuarios.
Disear Funciones y Procedimientos de Login y ABC de Usuarios.
Disear Diagramas (Caso de Uso, Secuencia y Procesos) de
Venta de Boletos.
Disear Funciones y Procedimientos de Venta de Boletos.
Disear Diagramas (Caso de Uso, Secuencia y Procesos) de
Cancelacin Simple y Masiva de Boletos.
Disear Funciones y Procedimientos de Cancelacin Simple y
Masiva de Boletos.
Disear Diagramas (Caso de Uso, Secuencia y Procesos) de
Quemado de Boletos.
Disear Funciones y Procedimientos de Quemado de Boletos.
Disear Diagramas (Caso de Uso, Secuencia y Procesos) de
Cortes de Caja.
Disear Funciones y Procedimientos de Cortes de Caja.
Disear Diagramas (Caso de Uso, Secuencia y Procesos) de
Reportes de persona.
Disear Funciones y Procedimientos de Reportes de personas.
Disear Diagramas (Caso de Uso, Secuencia y Procesos) de
Reportes de Cortes de Caja.

Pgina | 18

Dep./ Req.

2
2
4
4
6
6
8
8
8
11
12
8
8
8
16
16
18
19
20
21
22
23
24
24
26
26
28
28
30
30
32
32
34
34
34

38
39
40
41
42
43
44
45
46
47
48
49

Disear Funciones y Procedimientos de Reportes de Cortes de


Caja.
Adecuar los criterios de diseo a las caractersticas del entorno de
implementacin.
Programar el cdigo para cada mdulo y sub-mdulo del sistema.
Creacin del Front-End del Sistema.
Cita con cliente para mostrar el sistema completo previo a pruebas.
Poner a prueba el sistema, para detectar fallos en el cdigo.
Implementacin del Sistema en el Equipo de cmputo.
Realizar pruebas al Sistema en busca de incompatibilidad con el
equipo.
Realizar pruebas de estrs al Sistema, buscando colapsos o
prdidas de informacin.
Cita con cliente para la entrega del producto final.
Reporte de Avances de proyecto. c/semana.
Junta de trabajo (presentacin de avances) c/2 semanas.

Pgina | 19

34
38
39
40
41
41
43
43
45
46

Mecanismos de Supervisin

La manera en la que se evaluar el desempeo del personal de trabajo y los


avances del proyecto sern de la siguiente forma:

Se pedir a cada integrante del equipo de trabajo un reporte de avance


individual semanal en un documento de Word, detallando el avance que
obtuvo desde que culmin su ltimo reporte hasta la entrega del siguiente.
Posterior al reporte individual se elaborarn juntas de trabajo cada 2
semanas donde cada uno de los integrantes presentar de forma breve y
precisa los avances que haya tenido dentro de este tiempo, apoyados con
herramientas como PowerPoint, Prezi y otras afn, esto motivando la
integracin de todos los miembros del equipo con las actividades de todos.
Se establecer un formato con metas posibles a los plazos de 1 semana y 2
semanas (en caso de que sea necesario) con aspectos crticos de las
actividades que debe de cubrir cada uno de los integrantes, evaluando su
desempeo.

Se utilizar la Herramienta CASE: SAP PowerDesigner y MS Project, con el fin de


llevar la generacin de informes, adems del seguimiento de los cambios al
modelado del sistema y proyecto.

Pgina | 20

Documento
de
Requerimient
os
Pgina | 21

Necesidades del cliente

En trminos generales, la necesidad primordial del cliente es desarrollar e


implementar un sistema que sustituya al proceso actual. Las necesidades del
cliente de una manera desglosada son las siguientes:

Impresin del boleto al momento de la venta.


Requiere la generacin de un cdigo de barras en el boleto.
Llevar el control de las personas que entran.
Poder realizar una venta masiva y si es necesaria la cancelacin de esta
venta de una manera sencilla y rpida.
Enviar boletos en archivos PDF a empresas, para evitar el boleto
agrupado.
Evitar el mal manejo de los boletos.
Evitar la entrada de boletos falsos.
Cortes de caja al llegar a cierta cantidad de dinero.
Generar cortesas para productores que lleguen al momento.
Boletos agrupados impresos durante la exposicin.
Contabilizar a aquellas personas que acceden al lugar de manera gratuita
(nios los das sbados y adultos mayores con credencial INAPAM y
personas con capacidades diferentes).
Un nuevo proceso con la entrada, con el cdigo de barras generado; que
una persona lea con el lector de barras y se muestra el estado del boleto.
Generacin de reportes estadsticos los cuales de una manera rpida y
sencilla nos muestran la siguiente informacin:
Reporte por personas, desglosando los detalles en su presentacin.
Reportes de los cortes de caja, reportes del dinero generado por
boletos pudindolo obtener por el taquillero y en general.

Pgina | 22

Requerimientos del Sistema AGROBAJA


1. Login de usuarios.
1.1 Ingresar usuario y contrasea
1.2 Validar en base de datos
1.3 Permitir o denegar acceso con una vista de acuerdo al tipo de usuario.
2. Alta de usuarios.
2.1 Ingresar nombre de la persona, contrasea, tipo de usuarios y nombre
de usuario.
2.2 Guardas datos
2.3 Actualizar lista de usuarios
3. Modificacin de usuarios.
3.1 Mostrar la consulta del usuario por ID de usuario a modificar.
3.2 Modificar los datos (nombre, tipo de usuario, usuario y contrasea).
3.3 Actualizar datos.
3.4 Actualizar lista de usuarios
4. Eliminar usuarios.
4.1 Mostrar la consulta del usuario por ID de usuario a eliminar.
4.2 Eliminar usuario.
4.3 Actualizar lista de usuarios
5. Ventas y generacin de boletos.
5.1 Solicitar boletos dependiendo su tipo de taquilla (adultos, nios, tercera
edad, capacidades diferentes).
5.2 Solicitar el importe (mostrar devolucin de cambio si el importe es
mayor al monto de venta o mostrar pago insuficiente si el importe es
menor al monto de la venta).
5.3 Generar fecha compra y folio del boleto.
5.4 Generar registro en la base de datos de los detalles del boleto.
5.5 Generar PDF del boleto, con la consulta de los datos del boleto
(nmero de boletos por el tipo de taquilla), fecha de compra y folio.
6. Cancelacin Simple
6.1 Solicitar el folio del boleto a cancelar y contrasea de usuario
autorizado para la cancelacin
6.2 Cambiar el status del boleto a cancelado (3).
6.3 Mostrar la alerta de cambio o cancelacin exitosa (de no ser un usuario
autorizado mostrar el usuario no es apto para la accin).

7. Cancelacin Masiva
Pgina | 23

7.1 Solicitar la referencia de los boletos a cancelar y contrasea del


usuario autorizado para la cancelacin.
7.2 Cambiar el estatus de cada uno de los boletos con la referencia a
cancelado (3).
7.3 Mostrar la alerta de cambio o cancelacin exitosa (de no ser un usuario
autorizado mostrar el usuario no es apto para la accin).
8. Quemado de boletos.
8.1 Solicitar el escaneo del cdigo de barras.
8.2 Al escanear el cdigo de barras se realizara la consulta por ID del
boleto.
8.3 Mostrar la consulta de los boletos con los siguientes elementos; el
estatus del boleto (abierto, cancelado o cerrado) y el detalle de boletos
(nmero de boletos por cada tipo de taquilla).
8.4 De ser el boleto estatus 1 (abierto) se cambiaran el estatus 2 (cerrado).
9. Cortes de Caja
9.1 Realizar la consulta del monto de caja actual del usuario en sesin.
9.2 Mostrar la consulta en el apartado Monto actual en caja.
9.3 Solicitar contrasea del supervisor o administrador, as como el monto
en pesos (M.N.), monto en dlares (Convertidos a M.N.), monto en
vouchers, y una breve descripcin del corte de caja.
9.4 Realizar corte y grabar los datos del corte.
10. Reportes.
10.1 Seleccionar en el men, el tipo de reporte (personas, corte de caja).
10.2 Realizar la consulta SQL.
10.3 Mostrar resultados de la consulta.
11. Reporte de Personas.
11.1 Realizar consulta SQL.
11.2 Mostrar resultados de consulta.
12. Reporte de Cortes de Caja.
12.1 Solicitar general o taquillero en especfico.
12.2 Solicitar fecha para el reporte (por da o global)
12.3 Realizar consulta SQL.
12.4 Mostrar resultados de la consulta.

Pgina | 24

Validaciones Sistema Agrobaja

Inicio de Sesin:
1.- El usuario debe de estar registrado en la base de datos.
2.- La contrasea debe de ser igual a la correspondiente al usuario ingresado.
3.- Se debe mostrar la ventana con las restricciones de acuerdo a los tipos de
usuario. Las restricciones por tipo de usuario se encuentran detallados en la
seccin de Restricciones del Sistema Agrobaja.

Usuarios
1.- Solo los administradores son los encargados de dar de alta usuarios.
2.- El usuario debe de proporcionar su nombre, un nombre de usuario para
registrarse en el sistema irrepetible, una contrasea que pueda recordar
fcilmente y de acuerdo a la tarea que elaborar, el administrador le dar un rol
o tipo de usuario entre los cuatro existentes: Administrador, Supervisor,
Taquillero y Portero. Las restricciones de cada rol estn definidas en la seccin
de restricciones.
3.- El usuario debe contener un identificador (ID) nico e irrepetible, que se
asignar automticamente al registrarse en la base de datos.

Venta:
1.- Debe ingresarse al menos un boleto de cada tipo o tarifa: Adultos, Nios,
Capacidades Diferentes, Adultos Mayores. De lo contrario regresar un mensaje
de alerta.
2.- El total a pagar debe coincidir con el resultado la suma de las
multiplicaciones de los nmeros de boletos de cada tarifa por el precio de cada
tarifa.
3.- El pago debe ser igual o mayor al total a pagar. En caso de ser mayor, el
sistema debe lanzar una alerta mostrando cual es el total a devolver al cliente.
4.-El sistema debe proporcionar un folio de venta consecutivo, con un nmero
posterior a la ltima venta realizada; ninguna venta debe tener el mismo folio.
5.- El sistema debe imprimir un tiquete mostrando la informacin de la venta:
Folio, fecha, cantidad de boletos y su desglose por tarifa, monto total por tarifa
y la suma de estas, as como un cdigo de barras nico.
Pgina | 25

Venta masiva:
1.- Para activar la venta masiva se debe de activar o palomear una casilla, que
nos indique que la venta no ser simple, sino masiva.
2.- Solo los administradores del sistema podrn realizar una venta masiva, por
lo que est destinada a la preventa, aunque no se exenta de realizarse durante
los das del evento.
3.- Debe de ingresarse al menos un boleto de cada tipo o tarifa, de lo contrario
regresar un mensaje de alerta, adems se tiene que proporcionar una
referencia de preferencia relacionada a quienes estn destinados los boletos.
4.- El pago debe ser igual o mayor al total a pagar. En caso de ser mayor, el
sistema debe lanzar una alerta mostrando cual es el total a devolver al cliente.
5.- El sistema generara un archivo PDF que contendr los boletos o tiquetes
del nmero ingresado de boletos requeridos para su posterior envi por
cualquier medio.
6.-El sistema debe proporcionar un folio de venta consecutivo a cada boleto,
con un nmero posterior al ltimo boleto generado. Ningn boleto debe tener el
mismo folio.
7.- Esta seccin dentro del sistema no se encuentra disponible para una fase
de prueba, o la fase actual dado el tiempo y uso que se le dar al sistema en
un tiempo cercano.

Cancelaciones
1.- Solo los administradores y supervisores son los encargados de realizar las
cancelaciones.
2.- Se debe de ingresar el folio de la venta o boleto a cancelar. Este debe
coincidir con una venta ya realizada registrada en la base de datos.
3.- Se debe ingresar la contrasea de un usuario tipo Administrador o
Supervisor, de lo contrario el sistema debe lanzar una alerta de que la
contrasea es incorrecta o no es vlida para la operacin.
4.- En la base de datos el estatus del boleto o venta debe cambiar a
Cancelado

Pgina | 26

Cancelaciones Masivas.
1.- Solo los administradores son los encargados de realizar cancelaciones
masivas.
2.- Se debe ingresar la referencia de los boletos que se van a cancelar de la
lista de referencias que aparecer.
3.- Se debe ingresar una contrasea de un usuario tipo Administrador para
poder completar la operacin, de lo contrario el sistema lanzar una alerta.
4.- En la base de datos el estatus de los boletos o venta debe cambiar a
Cancelado.
5.- La cancelacin masiva se encuentra disponible a pesar de que la venta
masiva an no lo est puesto que cuando se pensaron ambas secciones, se
hizo primero la cancelacin y posteriormente la venta masiva pero por
cuestiones de tiempo y organizacin se dej de lado la venta masiva, pero el
sistema an conserva la seccin de cancelacin masiva para un futuro uso.

Quemado de boletos (Puerta)


1.- Si al escanear el cdigo de barras del boleto, el folio correspondiente tiene
un estatus Abierto, el sistema cambiar automticamente el estatus a
Cerrado o Quemado y regresar la informacin del boleto en la pantalla,
indicando que pueden acceder al evento.
2.- Si al escanear el cdigo de barras del boleto, el folio correspondiente tiene
un estatus Cerrado o Quemado el sistema regresara la informacin del
boleto en pantalla indicando que el boleto ya fue utilizado y que no pueden
tener acceso al evento.
3.- Si al escanear el cdigo de barras del boleto, el folio correspondiente tiene
un estatus Cancelado el sistema regresara la informacin del boleto en
pantalla indicando que el boleto fue cancelado y que no pueden tener acceso
al evento.

Reportes
1.- Solo el administrador puede generar un reporte.
2.- Los reportes se generaran en un archivo PDF de acuerdo a los
requerimientos ingresados. Se generara una consulta a la base de datos

Pgina | 27

utilizando los criterios requeridos y se devolver el archivo PDF para su


impresin con una visualizacin previa.

Pgina | 28

Restricciones Sistema Agrobaja:


Administrador:
Quemado de boletos. (Puerta)
Supervisor:

Ventas
Ventas Masivas
Usuarios
Cancelacin Masiva.
Reportes
Quemado de boletos (Puerta)

Taquillero:

Ventas Masivas
Usuarios
Cancelacin
Cancelacin Masivas
Reportes
Quemado de boletos (Puerta)
Corte de Caja

Portero:

Ventas
Ventas Masivas
Usuarios
Cancelacin.
Cancelacin Masiva
Reportes
Corte de Caja

Pgina | 29

Prototipo (Mapa del sitio)

Prototipo ndex

Prototipo principal

Pgina | 30

Prototipo ventas

Prototipo cancelacin simple

Pgina | 31

Prototipo cancelacin masiva

Corte de cajas

Pgina | 32

Prototipo reportes

Prototipo reportes usuario

Pgina | 33

Pgina | 34

Documento
de
Diseo

Pgina | 35

Definicin del lenguaje de programacin

El proyecto de Ingeniera de Software se desarrollar en la aplicacin llamada


Codeanywhere, que est orientada al desarrollo web. Se eligi esta aplicacin ya
que facilita la evolucin dentro del desarrollo del sistema gracias a su cualidad,
donde varios usuarios pueden estar programando a la vez, observando el
desarrollo del software. Otra de las razones es que el sistema est pensando para
su implementacin y uso en cualquier dispositivo operando en un ambiente web,
aprovechando las soluciones y herramientas vanguardistas.
Los lenguajes a utilizar para la creacin del software son los siguientes:

HMTL: Para el desarrollo de la interfaz del sistema y la creacin de los

elementos.
PHP: Para establecer comunicacin y llevar a cabo acciones en la base de

datos.
JavaScript: Para la validacin de los datos al momento de ingresarlos,
instrucciones programadas, etc. Adems dentro del lenguaje se utilizara la

librera JQuery.
SQL: Para crear las sentencias de la base de datos que nos permitan las
altas, bajas y cambios de la informacin. Nota: Codeanywhere ofrece una
herramienta para gestionar la base de datos de manera grfica llamada

PHPmyAdmin.
CSS: Para darle estilo y vistas a los diferentes mdulos del software.

Pgina | 36

Login de usuarios
Caso de uso

Caso de uso Login_de_usuarios()


Descripcin Login de usuarios
Datos de captura:
+ usuario
+ contrasea
Funciones requeridas
Funcin validar_Usuario()
Funcin validar_Contrasea()

Pgina | 37

Funciones
Funcin validar_Usuario(usuario){
Resultado = Select * From usuarios where usuario = usuario;
If(numero_columnas(Resultado)==0){
Imprimir=Usuario incorrecto;
}
}

Funcin validar_contrasea(contrasea){
Resultado = Select * From usuarios where contrasea = contrasea;
If(numero_columnas(Resultado)==0){
Imprimir=Contrasea incorrecta;
}
}

Funcin login(usuario, contrasea){


Resultado = Select * From usuarios where usuario = usuario;
If(numero_columnas(Resultado)==0){
If(columna(campo_contrasea)==contrasea){
Sesin Login = Permitido;
}
}
}

Pgina | 38

Diagrama de secuencia

Pgina | 39

Diagrama de procesos

Pgina | 40

Alta de usuario
Caso de uso

Caso de uso Alta_de_usuarios()


Descripcin Alta de Usuarios
Datos de captura:
+ id_Usuario
+ nombre
+ usuario
+ contrasea
+ tipo_Usuario
Funciones requeridas
Funcin guardar_Usuario()
Funciones
Funcin guardar_Usuario(id_Usuario, nombre, contrasea, tipo_Usuario, usuario){
Resultado = Insert Into usuarios (idUsuario, nombre, contrasea, tipoUsuario,
usuario) Values(id_Usuario, nombre, contrasea, tipo_Usuario, usuario);
}

Pgina | 41

Diagrama de secuencia

Pgina | 42

Diagrama de procesos

Pgina | 43

Modificacin de usuarios
Caso de uso

Caso de uso Modificacin_de_usuarios()


Descripcin Modificacin de Usuarios
Datos de captura:
+ id_Usuario
+ nombre
+ usuario
+ contrasea
+ tipo_Usuario
Funciones requeridas
Funcin actualizar_Usuario()
Funciones
Funcin actualizar_Usuario(id_Usuario,
usuario){

nombre,

contrasea,

tipo_Usuario,

Resultado = Update usuarios Set idUsuario = id_Usuario, nombre = nombre,


contrasea = contrasea, tipoUsuario = tipo_Usuario, usuario = usuario
Where idUsuario = id_Usuario;
}

Pgina | 44

Diagrama de secuencia

Pgina | 45

Diagrama de procesos

Pgina | 46

Eliminar usuarios
Caso de uso

Caso de uso Eliminar_usuarios()


Descripcin Eliminar Usuarios
Datos de captura:
+ id_Usuario
Funciones requeridas
Funcin baja_Usuario()
Funciones
Funcin baja_Usuario(id_Usuario){
Resultado = Delete from usuarios Where idUsuario = id_Usuario;
}

Pgina | 47

Diagrama de secuencia

Pgina | 48

Diagrama de procesos

Pgina | 49

Ventas y generacin de boletos


Caso de uso

Caso de uso Ventas_y_generacion_de_boletos()


Descripcin Ventas y generacin de boletos
Datos de captura:
+ id_Boleto
+ tipo_Boleto
+ fecha_Compra
+ id_Usuario
+ total
+ referencia_Boleto
+ cortesia
Funciones requeridas
Funcin registrar_ventas()

Funciones
Funcin registrar_Venta(id_Boleto, estatus_Boleto, tipo_Boleto, id_Usuario, total,
referencia_Boleto, cortesia){
Resultado = Insert Into usuarios (idBoleto, 1, tipoBoleto, id_Usuario, total,
referenciaBoleto, cortesia) Values(id_Boleto, estatus_Boleto, tipo_Boleto,
id_Usuario, total, referencia_Boleto, cortesia);
}

Pgina | 50

Diagrama de secuencia

Pgina | 51

Diagrama de procesos

Pgina | 52

Cancelacin Simple
Caso de uso

Caso de uso Cancelacin_simple()


Desc. Cancelacin simple.
Datos de captura:
+ Folio_boleto
+ Contrasea
Funcin validar_contrasea()
Funcin validar_folio()
Funcin cancelar_boleto()

Funciones

Funcin validar_contrasea(contrasea){
Resultado = Select * from usuarios where contrasea = contrasea;
if (numero_columnas(Resultado) = 0) {
imprimir=contrasea incorrecta
Pgina | 53

}
}

Funcin validar_folio(folio_boleto){
Resultado = Select * from boletos where idBoleto = folio_boleto;
If(numero_columnas(Resultado) = 0){
Imprimir=folio incorrecto
}
}

Funcin cancelar_boleto(folio_boleto){
Resultado = UPDATE boletos SET status = 2 WHERE idBoleto = folio_boleto
If(numero_columnas(resultado) > 0){
Imprimir Boleto cancelado
}
}

Pgina | 54

Diagrama de secuencia

Pgina | 55

Diagrama de procesos

Pgina | 56

Cancelacin Masiva
Caso de uso

Caso de uso Cancelacin_Masiva()


Desc. Cancelacin masiva.
Datos de captura:
+ Referencia_Boleto
+ Contrasea
Funcin validar_contrasea()
Funcin validar_referencia()
Funcin cancelacin_masiva()

Pgina | 57

Funciones

Funcin validar_contrasea(contrasea){
Resultado = Select * from usuarios where contrasea = contrasea;
if (numero_columnas(Resultado) = 0) {
imprimir=contrasea incorrecta
}
}

Funcin validar_referencia(refencia_boleto){
Resultado = Select * from boletos where referencia = referencia_boleto;
If(numero_columnas(Resultado) = 0){
Imprimir=referencia incorrecta
}
}

Funcin cancelacin_masiva(referencia_boleto){
Resultado = UPDATE boletos SET status = 2 WHERE referencia =
referencia_boleto
If(numero_columnas(resultado) > 0){
Imprimir Boletos cancelados
}
}

Pgina | 58

Diagrama de secuencia

Pgina | 59

Diagrama de procesos

Pgina | 60

Quemado de boletos
Caso de uso

Caso de uso Quemado_de_boletos()


Descripcin Quemado de boletos.
Datos de captura:
+ id_Boleto (escner)
Funcin Entrada()
Funcin quemar_Boleto()
Funcin consultar_Detalles()

Pgina | 61

Funciones

Funcin Entrada(id_Boleto){
Resultado = a.idBoleto, a.estatusBoleto, a.fechaCompra, a.fechaAdmision,
a.cortesia, b.idTarifa, b.cantidad From boletos AS a Inner Join detallesBoletos AS b
on a.idBoleto = b.idBoleto Where a.idBoleto =id_Boleto;
}

Funcin quemar_Boleto(id_boleto){
Resultado = Update boletos Set estatusBoleto = 2, fechaAdmision = NOW() Where
idBoleto = id_Boleto;
}

Funcin consultarDetalles(id_Boleto){
Resultado = Select * From boletos Where idBoleto = id_Boleto;
}

Pgina | 62

Diagrama de secuencia

Pgina | 63

Diagrama de procesos

Pgina | 64

Cortes de caja
Caso de uso

Caso de uso Cortes_de_caja()


Descripcin Cortes de Caja.
Datos de captura:
+ id_Corte
+ id_Taquillero
+ id_Supervisor
+ monto
+ fecha
+ hora
+ contrasea_Supervisor
+ contrasea_Taquillero
+ monto_Caja_Actual
+ dlares
+ vouchers
+ descripcin
Funcin validar_Usuarios()
Funcion corte_Caja()
Funcin consultar_Monto_Boletos()
Funcin consultar_Monto_Cortes_Cajas()
Funcin actualizar_Monto_Caja_Actual()
Funcin consultar_Monto_Caja_Actual()
Funcin mostrar_Monto_Caja_Actual()

Pgina | 65

Funciones
Funcin validar_Usuarios(contrasea_Supervisor){
Resultado = Select * From usuarios Where contrasea = contrasea_Supervisor;
If(numero_columnas(resultado) > 0){
If(columna(tipoUsuario) = Administrador Supervisor){
Id_Supervisor = columna(idUsuario);
}
}
Resultado2 = Select * From usuarios Where usuario = Sesion_actual(usuario);
If(numero_columnas(resultado) > 0){
If(columna(tipoUsuario) = Administrador Supervisor Taquillero){
Id_Taquillero = columna(idUsuario);
}
}
}

Funcin corte_Caja(id_Corte, id_Supervisor, id_Taquillero, monto_Caja_Actual,


dlares,
vouchers,
fecha,
hora,
descripcin,
contrasea_Taquillero,
contrasea_Supervisor){
Resultado = Insert Into corteCajas(idCorte, idSupervisor, idTaquillero,
montoCajaActual,
dlares,
vouchers,
fecha,
hora,
descripcin,
contraseaTaquillero, contraseaSupervisor) Values (id_Corte, id_Supervisor,
id_Taquillero, monto_Caja_Actual, dlares, vouchers, fecha, hora, descripcin,
contrasea_Taquillero, contrasea_Supervisor){
}

Pgina | 66

Funcin consultar_Monto_Boletos(){
Resultado = Select Sum(total) total_Monto as From boletos Where idTaquillero =
Sesion_actual(id_Usuario) AND tipoBoleto = 1 AND cortesa = 0 AND
(estatusBoleto = 1 or estatusBoleto = 2);
Imprimir total_Monto;
}

Funcin consultar_Monto_Cortes_Caja(){
Resultado = Select Sum(monto_Pesos + monto_Dolares + monto_Vouchers) as
total From corteCajas Where idTaquillero = Sesion_actual(id_Usuario);
Imprimir total;
}

Funcin actualizar_Monto_Caja_Actual(monto_Caja_Actual){
Resultado
=
Select
Sesion_Actual(idUsuario);

Form

montoCaja

Where

idTaquillero

If(numero_columnas(Resultado) > 0){


Resultado2 = Update montoCaja Set montoCajaActual = monto_Caja_Actual
Where idTaquillero = Sesion_Actual(idUsuario);
}
Else{
Resultado = Insert Into montoCaja(idUsuario,
(Sesion_Actual(idUsuario), monto_caja_actual);
}
}

Pgina | 67

montoCajaActual)

Values

Funcin consultar_Monto_Caja_Actual(){
Resultado
=
Select
montoCajaActual
Sesion_Actual(idUsuario);

From

montoCaja

Where

From

montoCaja

Where

If(columna(montoCajaActual)>=1500){
Imprimir Solicitar corte de caja;
}
Else{
Imprimir Seguir vendiendo;
}
}

Funcin mostrar_Monto_Caja_Actual(){
Resultado
=
Select
montoCajaActual
Sesion_Actual(idUsuario);
Imprimir columna(montoCajaActual);
}

Pgina | 68

Diagrama de secuencia

Pgina | 69

Diagrama de procesos

Pgina | 70

Reportes de Personas
Caso de uso

Caso de uso Reporte de personas()


Descripcin Reporte de personas.
Funcin vendidos()
Funcin dentro()
Funcin por_Entrada()
Funcion cancelados()

Pgina | 71

Funciones
Vendidos ();
reporteTotalBoletos(){
"SELECT SUM(cantidad) as total FROM detalleBoletos"; }
totalAdultos(){
"SELECT SUM(cantidad) as total FROM detalleBoletos WHERE idTarifa=1"; }
totalNino(){
"SELECT SUM(cantidad) as total FROM detalleBoletos WHERE idTarifa=2"; }
total3Edad(){
"SELECT SUM(cantidad) as total FROM detalleBoletos WHERE idTarifa=3"; }
totalCapacidadesDif(){
"SELECT SUM(cantidad) as total FROM detalleBoletos WHERE idTarifa=4"; }

Dentro();
personasAdentro(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE estatusBoleto=2"; }

totalAdultosAdentro(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=1 AND
boletos.estatusBoleto=2"; }

totalNinoAdentro(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=2 AND
boletos.estatusBoleto=2"; }

Pgina | 72

total3EdadAdentro(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=3 AND
boletos.estatusBoleto=2"; }

totalCapacidadesDifAdentro(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=4 AND
boletos.estatusBoleto=2"; }

Por_Entrar();
personasFuera(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE estatusBoleto=1"; }

totalAdultosFuera(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=1 AND
boletos.estatusBoleto=1"; }

totalNinoFuera(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=2 AND
boletos.estatusBoleto=1"; }

total3EdadFuera(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=3 AND
boletos.estatusBoleto=1"; }

Pgina | 73

totalCapacidadesDifFuera(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=4 AND
boletos.estatusBoleto=1"; }

Cancelados()
personasCancelados(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE estatusBoleto=3"; }

totalAdultosCancelados(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=1 AND
boletos.estatusBoleto=3"; }

totalNinoCancelados(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=2 AND
boletos.estatusBoleto=3"; }

total3EdadCancelados(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=3 AND
boletos.estatusBoleto=3"; }

totalCapacidadesDifCancelados(){
"SELECT SUM(cantidad) as total FROM detalleBoletos JOIN boletos ON
detalleBoletos.idBoleto = boletos.idBoleto WHERE detalleBoletos.idTarifa=4 AND
boletos.estatusBoleto=3"; }

Pgina | 74

Diagrama de secuencia

Pgina | 75

Diagrama de procesos

Pgina | 76

Reporte Cortes de caja


Caso de uso

Caso de uso Reporte_de_Cortes_de_Caja()


Descripcin Reportes de cortes de caja.
Funcin Consultar_Taquilleros()
Funcin General()
Funcin xTaquillero()

Pgina | 77

Funciones

ConsultarTaquillero();
ConsultarUsuariosReportes(){
"SELECT usuario FROM usuarios WHERE tipoUsuario IN (1,2,3)"; }
ConsultarIds(){
"SELECT idUsuario FROM usuarios WHERE tipoUsuario IN (1,2,3)"; }

General();
consultarTaquillerosGeneral(){
"SELECT * FROM corteCajas JOIN usuarios ON corteCajas.idTaquillero =
usuarios.idUsuario"; }

xTaquillero();
consultarTaquilleros(){
"SELECT * FROM corteCajas WHERE idTaquillero = idTaquillero"; }

Pgina | 78

Diagrama de secuencia

Pgina | 79

Diagrama de procesos

Pgina | 80

Diagrama de clases

Pgina | 81

Diagrama Entidad Relacin

Pgina | 82

Estructura Base de Datos

Pgina | 83

Interfaz
LOGIN

Vista de principales
PRINCIPAL ADMINISTRADOR

PRINCIPAL TAQUILLERO

Pgina | 84

PRINCIPAL SUPERVISOR

PRINCIPAL PORTERO

VISTA USUARIOS

Pgina | 85

ALTA DE USUARIOS

MODIFICACIN DE USUARIOS

BAJA DE USUARIOS

Pgina | 86

VISTA VENTAS

VISTA CANCELACIN DE BOLETO SENCILLA

VISTA CANCELACIN DE BOLETO MASIVA

Pgina | 87

VISTA CORTE DE CAJA

VISTA DE REPORTES

VISTA DE REPORTES POR PERSONAS

Pgina | 88

VISTA DE REPORTES POR CORTE DE CAJAS

VISTA DE REPORTES POR CORTE DE CAJAS GENERAL

VISTA DE REPORTES POR CORTE DE CAJAS POR TAQUILLERO

Pgina | 89

Cdigo
<?php
include 'config.php'; // Incluimos el archivo de configuracin
require 'lib/usuarios.php'; // Requerimos la clase de usuarios
$usuarios = new usuarios($datosConexionBD); //Instanciamos la clase
usuarios

?>
<!-- Empezando con HTML5 -->
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Sistema de Administracin de Entradas</title> <!-Encabezado de la pna-->
<link rel="stylesheet" href="css/almacen/index.css" /> <!-Archivo de Hoja de Estilo que se usar ara decorar la pna-->
<script type="text/javascript" src="../../js/jquery2.1.4.min.js"></script> <!--Carga los archivos de javascript-->
<!--incluimos librerias para las alertas "bonitas"-->
<link rel="stylesheet" type="text/css"
href="alertas/style/freeow/freeow.css" />
<script type="text/javascript"
src="alertas/jquery.freeow.js"></script>
<!--se terminan de incluir las alertas "bonitas"-->
<!--<script type="text/javascript" src="../../js/menu.js"></script>
<!--Carga los archivos de javascript-->
<script type="text/javascript">
$(document).ready(function(){
$("#loginUsuario").submit(function(e){ //Al dar clic en el
botn del formulario "loginUsuario" se realizar las siguientes instrucciones:
Pgina | 90

$.ajax({ //Mtodo de JavaScript para enviar


datos.
type: "POST",

//Se enva los datos a

travs del mtodo POST


url:
"vistas/usuarios/actionLoginUsuario.php", //Pgina a la que redireccionar os
datos para que stos sean procesados.
data:'usuario='+$("#usuario").val() +
//Se enva el email.
("#contrasenia").val()

'&contrasenia='+$
//Se enva la contrasea
}).done(function(result) {

if (result == "Contrasenia
incorrecta"){ //Si el return es "contrasenia correcta",
$("#freeoww").freeow("Aviso:
",result, { //se carga la alerta en el div freeow
classes: ["gray", "alert"],}); //se elijen
las clases para darle atributos a la alerta.
//alert (result);

//Se

imprime el resultado en un popup


//window.location =
"http://http://port80.ov5trr87st6gvihzrtrdvsskksatt9jeo5zbsmioqlrf6r.box.codeanywhere.com/principa
l.php";
}else{
if (result == "El usuario no
existe"){
$
("#freeoww").freeow("Aviso: ",result, {
classes: ["gray", "alert"],});
//alert (result);
}else{
//alert (result);
if (result==1){
Pgina | 91

window.location
= "principalAdmin.php";
}else{
if (result==2){
window.location = "principalSupervisor.php";
}else{
if
(result==3){
window.location = "principalTaquilla.php";
}else{
window.location = "vistas/entrada/formEntrada.php";
}
}
}
}
}
});
return false; //Regresa valor falso.
});
});
</script>
</head>
<body>
<div id="agrupar">

Pgina | 92

<form id='loginUsuario' > <!--Etiqueta de HTML para hacer formularios-->


<h2>Iniciar Sesi&oacute;n</h2> <!--Cabecera del login-->
<label><center>Usuario</center></label> <!--Label es una etiqueta
que sirve para crear inputs en Html5-->
<input type="text" name="usuario" id="usuario" required > <!--caja de
texto del tipo email, donde se valida que se haya introducido un email con
estructura estandar-->
<label><center>Contrase&ntilde;a</center></label> <!--Label es una
etiqueta que sirve para crear inputs en Html5-->
<input type="password" name="contrasenia" id="contrasenia"
required><br /> <!--caja de texto del tipo contrase con valores ocultos, se valida
que se inserten datos-->
<input type="submit" name="enviar" id="accionBoton" value="Login">
<!--Input del tipo submit-->
</form> <!--Fin de la etiqueta de HTML para hacer formularios-->
<div id="freeoww" class="freeow freeow-top-right"></div> <!--Div para las alertas
bonitas-->
<footer> <!--Etiqueta de HTML para pie de pgina-->
<!--<p>&copy; 2015 UABC FCA Clase 241. Derechos reservados.
Agrobaja 2016</p>-->
</footer> <!--Fin de la etiqueta de HTML para pie de pgina-->
<header >
<h1>
BIAJAD
</h1>
</header>
<img src="css/almacen/logo.png">
</div>
</body> <!--Fin del cuerpo del HTML-->
</html>

Pgina | 93

<?php
session_start();//la funcion session_start inicia una sesion en php

class taquilla{ //la funcion class declara el nombre de la clase

var $usuario;

//var es la funcion que se usa para declara un atributo

var $contrasenia;

//var es la funcion que se usa para declara un atributo

var $estatusBoleto;
atributo
var $folio;

//var es la funcion que se usa para declara un


//var es la funcion que se usa para declara un atributo

var $referencia;

//var es la funcion que se usa para declara un atributo

private $datosConexionBD; //private es la funcion que se usa para declara


un atributo privado

//declaracion metodo constructor


function __construct($datosConexionBD){
$this->datosConexionBD=$datosConexionBD; //this es una funcion que
hace referencia a la clase u objeto en que me encuentro
}
public function cancelacion(){ //public es una funcion de php que hace un
metodo publico

//echo "bien";
$mysqli = new mysqli($this->datosConexionBD[0], $this>datosConexionBD[1], $this->datosConexionBD[2], $this>datosConexionBD[3]);//Datos provenientes del archivo config.php que contienen
todos los datos de la BD

//check connection
if(mysqli_connect_errno()){//funcion reservada que regresa el numero de
error de mysql
Pgina | 94

return(printf("Error de conexion: %s\n",


mysqli_connect_error()));//Imprime un String con el problema de conexion con la
BD
exit();//Sale del proceso que esta corriendo //Genera la salida de la
sentencia msqli_connect_error
}
$query ="SELECT * FROM usuarios WHERE contrasenia = '".$this>contrasenia."'";//Sentencia SQL Para extraer datos en tabla
$resultado = $mysqli->query($query);

if (!$resultado) {//if es una condicional


return (printf ("Errormessage: %s\n", $mysqli->error));//Genera un string
con el problema generado con el query
}else{
$row = $resultado->fetch_assoc();//fetch_assoc nos trae el resultado del
SELECT en columnas
if (count($row) > 0){

if ($row['contrasenia'] == $this->contrasenia){//if es una condicional


echo 'Password correcta';//echo nos imprime un mensaje o variable
en pantalla
$this->estatusBoleto = "3";
$query= "UPDATE boletos SET estatusBoleto ='".$this>estatusBoleto."' WHERE idBoleto='".$this->folio."'";
$resultado = $mysqli->query($query);
if (!$resultado) {//if es una condicional
return (printf ("Errormessage: %s\n", $mysqli->error));//Genera un
string con el problema generado con el query
}
}
}

Pgina | 95

Vous aimerez peut-être aussi