Está en la página 1de 15

Programación de Sistemas Adaptativos

Nombre Matricula
Cesar Leonardo González Torres 1724056
Rene Alexander Treviño Jaime 1659121

Salón: 9105
Hora: M1-M2-M3
Profesora: Dra. Sara Elena Garza Villareal
Fecha: 22/11/2019
Resumen del proyecto

Sistema difuso cinema, así se llama nuestro proyecto o nuestro programa. El


proyecto está dirigido a un cine y consiste básicamente en realizar registros de los
asistentes en un día en el cine, clasificándolos para así llevar un control de este, y
además de tomar control también realizar predicciones, para así conocer registros
posibles a una semana, y también se puede hacer una evaluación al mes con los
registros totales que se obtienen al final de cada día.

Al finalizar el programa, se obtuvieron buenos resultados, pero tuvimos muchos


problemas con el manejo de interfaces, por lo que tuvimos que cambiar de
lenguaje, inicialmente el proyecto se estaba desarrollando en java y se terminó de
desarrollar en C++ y además de ese problema, no logramos conectar nuestro
programa a una base de datos. Todo lo demás se logró hacer, cada apartado está
programado. Principalmente no logramos resolver estos problemas por falta de
tiempo.
Introducción

El principal problema que estamos resolviendo es el control de los asistentes de


un cine, y lo hacemos clasificando a los clientes tomando registros diariamente, y
evaluando al mes el total de todos ellos, además del el control, estamos
prediciendo la cantidad de clientes próximos a llegar en un día, para que el
personal de un cine tome medidas necesarias, como tener la cantidad adecuada
de un producto, además conocer cuántos empleados se requiere en un día, etc.
Resolver estos problemas no solo ahorraría costos, sino que también mejoraría el
servicio del cine. Y la manera en que ahorraría costos es evitando la merma del
producto y la manera en que mejoraría el servicio del cine, es teniendo la cantidad
de empleados necesaria para una mejor atención hacia los clientes.

Los apartados de nuestro programa son los siguientes:

1.- Registrar los clientes del día. Se captura el día a registrar y se obtiene las
siguientes clasificaciones:
 Adultos mayores de 60 años.
 Adultos(a partir de 15 años).
 Niños(a partir de 3 años).
 Estudiantes.
Primero se llena cada uno y al final se obtiene un registro total de todas las
clasificaciones, para utilizar esos registros en otros apartados.

2.- Ver los registros de los días que se tienen al momento, para así verificar si ya
existe un registro en algún día que se haya pasado, si el usuario busca un registro
inexistente, el programa mandara un mensaje de error.

3.- Conocer la predicción de algún día que se requiera, la predicción funciona


obteniendo el registro de la semana anterior de algún día de la semana, por
ejemplo, si el personal desea conocer cuántas personas habrá el día viernes 29 de
noviembre del 2019, tiene que haber un registro de la semana anterior que
corresponde al día viernes 22 de noviembre del 2019, para así poder tomar ese
registro como predicción, por obvias razones las predicciones no suelen ser
exactas, porque pueden intervenir varios factores, como lo es el clima, películas
en cartelera, etc.

4.- Conocer la evaluación del mes, esto se refiere a que el programa recopila
todos los registros totales de los días en un mes, y los suma de manera que se
conoce la cantidad exacta de registros, y así se puede saber en el año que mes
tuvo más asistentes, si el usuario pide conocer la evaluación de un mes inconcluso
el programa le mandara un error, ya que es necesario tener todos los registros del
mes, para así tener datos más exactos y verídicos.
Marco Teórico

Con nuestras propias palabras entendemos que un sistema difuso hace referencia
a la lógica difusa por lo que nos puede ayudar con problemas como control,
predicción, evaluación, etc. Por ejemplo en nuestro caso, nosotros hace uso de un
sistema difuso, con el simple hecho de llevar un control de registros, y clasificar
esos registros para poder llevar una predicción. Existen muchos ejemplos de
sistemas difusos, nosotros al ver las noticias, podemos observar que cuando dan
el pronóstico del clima de la semana, nos dan temperaturas que a veces no son
exactas, o que cambian drásticamente conforme pasa la semana, aquí el papel del
sistema difuso es la predicción el cual se obtiene con muchas variables las cuales
pueden ir cambiando por distintos factores, es el mismo caso en nuestro
programa, las predicciones pueden no ser exactas.
Desarrollo

El programa se describe de la siguiente manera:


1. En la primera interfaz, hicimos un Login para que de esta manera solo
personal autorizado pueda acceder al sistema. Se requiere una contraseña.

Por medio de un do while se hizo el Login como se puede ver en el código.j

2. En la segunda interfaz, la llamamos Inicio porque aquí están los 4


apartados de todo nuestro sistema difuso.

Por medio de un do while, se puede elegir una opción, de esta manera el


usuario debe elegir solamente las opciones que se tienen del sistema difuso
cinema.
3. En la tercera interfaz, empezamos con el primer apartado el cual llamamos
“Asistentes de un día en clasificación”, aquí primero se escribe la fecha que
se quiere llenar, para posteriormente ir llenando el registro de la
clasificación. De esta manera estamos incorporando el sistema difuso.
Nota: Si se escribe una fecha la cual ya se había llenado, se modificaría el
registro que ya se tenía, por eso hay una pregunta de seguridad.

Pregunta de
seguridad

Una vez pasando la pregunta de seguridad, pasamos al proceso de llenado


del día escogido, lo cual a continuación se muestra el código:
Por medio de un do while, se hace el llenado, si al final el usuario se
equivocó en llenar correctamente una clasificación, al final se le hace una
pregunta si esta correcto el llenado, entonces el tendrá la oportunidad de
corregir pero tendrá que volver a llenar todo desde el inicio. Una vez
pasando el llenado correcto de las clasificaciones, se le vuelve a preguntar
si desea realizar el llenado de otro día. Si así lo desea se repite todo el
proceso del llenado y el programa lo manda directamente a Inicio.

4. En la cuarta interfaz, la llamamos “Registros de asistencia del día”, en este


apartado el usuario puede verificar el registro total de algún día requerido,
es la única función que cumple, por lo tanto no es muy necesaria, aunque a
veces lo puede ser para asegurarse que no haya días que falten por
registrarse y así hacer una correcta evaluación en el mes. Si en llegado
caso el usuario coloca una fecha que no ha sido registrada anteriormente,
el programa le mandara un mensaje diciéndole que esa fecha aún no ha
sido registrada, si el usuario digita más de tres fechas seguidas sin
registrar, el programa le dará la opción de salir a Inicio.

Con este if, el usuario


puede regresar a Inicio,
después de colocar
tres fechas seguidas sin
registrar.
Si el usuario coloca una fecha la cual si tiene un registro alguno, entonces
se le mostrara el registro correspondiente a esa fecha y para ello hicimos
este algoritmo:

Aquí el if se está cumpliendo si el usuario pasó la pregunta de seguridad de


si estaba seguro en verificar tal fecha, y si no eligió regresar a Inicio cuando
coloco tres fechas sin registro. Y se imprime el registro que se tiene en esa
fecha, ya sea si está vacía o no.

5. En la quinta interfaz la llamamos “Predicción del día”, en este apartado


como el nombre lo dice, el usuario puede conocer la predicción del día que
desea, realizando un pronóstico de los registros que se obtendrá en futuros
días de esa manera se incorpora el sistema difuso. Y se utilizó el siguiente
algoritmo para llevarlo a cabo:
 Primero se le pide al usuario la fecha que desea predecir, si este
coloca una fecha imposible de predecir, se le mandara un error, por
ejemplo que quiera verificar un mes que no exista o un año fuera de
un rango considerado. Un ejemplo: 12/15/12, el mes 15 no existe. Se
utilizó este pequeño pseudocódigo:

 Después, si el usuario paso la pregunta de seguridad, de si está
seguro de predecir tal fecha y además es correcta la fecha que
desea predecir, se iniciara el algoritmo la cual es demasiado largo,
por lo que mostraremos una parte pequeña del mismo:
Primero en el algoritmo se verifica que la fecha cumpla las
condiciones reales, por ejemplo que se haya colocado bien el día del
mes colocado, por ejemplo, no se puede predecir un día 30 del mes
de febrero, porque este mes no llega a 30, sino que puede llegar a
28 o 29, dependiendo el año.
Este if corresponde al año
Este if corresponde al mes

Este if corresponde al día

Aquí se está mostrando el código correspondiente al problema dicho


antes.
Una vez cumpliendo las condiciones reales, y que todo sea correcto
ahora si el algoritmo corre dependiendo de la fecha solicitada. Por
ejemplo si se elige 01/01/19, se correría este pequeño algoritmo:

 El algoritmo funciona de la siguiente manera: se entra primero al año


correspondiente, después al mes correspondiente, y finalmente al
día correspondiente, una vez adentro de ahí, se hace el proceso de
predicción, lo que se hace es que el arreglo tridimensional toma siete
posiciones anteriores del día que corresponde a la variable
[dia_escogido_pred], de esta manera:

Si en llegado caso el usuario llega a colocar cualquiera de los


primeros días de la semana a predecir, el valor tomaría el mismo que
tiene en ese registro, por ejemplo que quiera predecir el día 05 de
enero del 2019, y que se encuentre en ese mismo día. Aquí se
muestra cómo funciona el algoritmo con ese caso:

El dia 05 no entra en ningún if, por lo que no se tomaría 7 registros


anteriores a él, por lo que se quedaría con el mismo valor original.

Nota: Todo el proceso anterior, funciona con tres for, y se va


recorriendo los años, meses y días. Y solo en el año, mes y día
correspondiente.
Variable i= años
Variable j=meses
Variable k=días
6. En la sexta interfaz la llamamos “Evaluación del mes”, en esta interfaz lo se
hace es como su nombre lo dice, se realiza una evaluación del mes, el
usuario deberá colocar un mes y un año, para así poder realizar el proceso,
primero se le pide al usuario que coloque la fecha, si este coloca un mes
inexistente o un año, se le mandara un mensaje de error, por ejemplo, si
coloca 14/02, el mes 14 no existe, para ello se implementó el siguiente
código:

Una vez que se haya pasado la pregunta de seguridad, la cual le indica si


desea modificar la fecha escrita, entonces se hacen los cálculos, se realiza
la suma total de registros de todo un mes, si en llegado caso llega a faltar
un día, el programa le mandara un error, diciéndole que falta un día por
llenar.
A continuación se muestra un ejemplo con los meses que tienen 31 días

K=31
J=12
I=20
Esas son las variables de los años, meses y días, se igualan a su tope en
llegado caso de que un registro es vacío, para que así se salga de los for y
ya no siga verificando y calculando.
Si todo llega a ser correcto, se hace los cálculos correspondientes, sino se
manda un mensaje de error, diciéndole al usuario que faltan días por
registrar.

Esas serian todas nuestras interfaces, con sus respectivos procesos, y creamos el
siguiente diseño:

Variables principales Tipo (Entrada/Salida) Descripción

dia_llenar[33][13][25] Entrada Es el registro de un dia y tiene los


tamaños [33][13][25].

Total_asistentes_dia Salida Esta variable solo hace la suma


total de un registro.

adultos_tercera_edad Entrada Esta variable hace


correspondencia a la cantidad de
adultos de la tercera edad.

adultos Entrada Esta variable hace


correspondencia a la cantidad de
adultos.

Ninos Entrada Esta variable hace


correspondencia a la cantidad de
niños.

Estudiantes Entrada Esta variable hace


correspondencia a la cantidad de
estudiantes.
Conclusiones

Llegamos a las conclusiones, sinceramente nos gustó mucho desarrollar este


proyecto, aunque hayamos tenido muchos problemas, principalmente con el
desarrollo de las interfaces y la conexión a una base de datos. Todo lo demás lo
logramos hacer, la verdad es que si batallamos con el desarrollo porque teníamos
que poner mucha lógica para que se dieran los resultados que se requerían,
ambos hicimos un buen trabajo, no tuvimos problemas de comunicación, todas las
tareas las dividimos entre ambos. Aprendimos a como clasificar y tomar control de
esa clasificación para poder predecir o realizar evaluaciones. Este proyecto está
basado principalmente para los cines y queremos seguirlo trabajando para
implementar lo que no logramos hacer.
Referencias

 www.Youtube.com (Videos Tutoriales donde podemos reforzar y


aprender nuevas técnicas en el proceso de programar, además de
poder mejorar nuestro proyecto
 www.Google.com (Búsqueda y consulta de algún significado, concepto o
consulta de información.
 ECKEL, Bruce, Piensa en Java, México.
 Pearson Education. 2007. Cuarta Edición.
 CEBALLOS, Francisco. JAVA 2 Curso de programación.
Alfaomega, 2006, Cuarta Edición.
 P. Rob y C. Coronel, Sistemas de bases de datos, Diseño,
Implementación y Administración. Ed Thomson, 2004. ISBN.

También podría gustarte