Вы находитесь на странице: 1из 39

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE INGENIERÍA INDUSTRIAL Y


DESISTEMAS

LPE
SISTEMA DE REGISTRO DE BUTACAS

DOCENTE:

xxxxxxx

ALUMNO:

 TORRES ROBLES, IVAN ALVARO 20120263C


 PADILLA HUAMANI, LUIS ANGEL 20120188A
 LUCANA HUANCAHUARI, JUAN CARLOS 20122079E
 DAVILA MERINO, JUAN ROLANDO 20122104J

1
Índice

1.-Introducción----------------------------------------------------------------3

2.-Marco teórico--------------------------------------------------------------4

3.-Marco conceptual---------------------------------------------------------5

4.-Objetivos--------------------------------------------------------------------12

4.1.- Objetivo principal

4.2.- Objetivos secundarios

5.-Metodología---------------------------------------------------------------13

6.-Aplicación------------------------------------------------------------------31

7.-Análisis----------------------------------------------------------------------35

7.1.-Descripción general

7.1.1.-Funcion del producto

7.1.2.-Características del producto

7.1.3.-Restricciones

7.1.4.-Funciones

7.1.4.1.-Creación de base de datos

7.1.4.2.-Registro de compra

7.1.4.3.-Login de usuario

7.1.4.4.-Consultas

7.1.4.5.-Rendimiento

8.-Conclusiones------------------------------------------------------------38

9.-Bibliografía---------------------------------------------------------------39

2
1.-Introducción

En la actualidad toda cadena de cines cuenta con una página web propia sin
excepción, donde se brinda información acerca de su servicio sea acerca de su
cartelera, promociones, sedes, salas disponibles, horarios, costos, etc. Sin
embargo no todos los cines toman en cuenta en su sistema de información
virtual acerca de las ventas que se vienen realizando en una determinada sala
en un determinado horario, información como el costo o información acerca
de asientos disponibles.

El presente proyecto es un programa desarrollado en el lenguaje c++, se


enfoca principalmente en mejorar la información que se brinda acerca de la
venta de entradas que se viene realizando de una determinada película, ya sea
una mejora gráfica que permita al usuario poder elegir en el lugar donde quiera
ubicarse dentro de la sala, como información acerca de las asientos disponibles,
para que no exista problemas de ubicación en el momento de ingreso a la sala.

En una primera parte tratará acerca de los objetivos del proyecto, los
específicos y los generales, también se mostrará una serie de gráficas acerca
de su funcionamiento; como ingresar al menú, como almacenar los datos; y
finalmente se mostrará el código desarrollado en el lenguaje c++, que por
comodidad se ejecuta en el programa borlandc++.

Esperamos que el presente proyecto sea de gran utilidad intelectual; así como
pueda ser aplicable en distintas empresas, cines o teatros.

3
2.- Marco Teórico

Según lo que hemos aprendido en el curso de Lenguaje de Programación


Estructurado, para realizar el proyecto antes mencionado nosotros nos
basamos en el concepto de programación modular que según el libro Lenguaje
de programación estructurada y sus aplicaciones en Borland C++
5.0.2significa dividir el programa en pequeños módulos de manera que sea
más comprensible y sea más fácil detectar errores. Para realizar el proyecto
necesitamos tener conocimientos y manejar a la perfección los conceptos
referentes a estructuras de control (if, if-else, anidados, for, while, do while, y
otros), también necesitamos conocer acerca de las estructuras llamadas
arrays(arreglos): su funcionamiento, para qué sirven, arrays
multidimensionales, las operaciones que se pueden realizar con arrays.

Los conceptos de cadenas también son útiles para este proyecto. El uso de
funciones es muy importante para el desarrollo de la programación modular,
los conceptos de declaración y definición de una función, los parámetros y
tipos de datos que se van a usar, el llamado a la función, la función principal
(main), el uso de funciones recursivas también son útiles a la hora de
desarrollar el proyecto. Los conceptos de registros, la definición y declaración
de estructuras, el anidamiento de registros, el acceso a los elementos de una
estructura son nociones que se tienen que tener claras pues son usadas en la
construcción del proyecto (la funcionalidad del proyecto será explicada
después por eso no estamos incluyendo para que se usa cada concepto).

Las características de los archivos(files), su apertura, su clasificación por el tipo


de contenido, la clasificación por el tipo de acceso, los conceptos de dirección
lógicas y de direcciones físicas, las funciones para el manejo de archivos, la
declaración de la variable lógica del archivo, las funciones para procesar
archivos, la validación de la apertura de un archivo, el cierre, la escritura, la
lectura, las funciones de acceso de archivos deben estar claras para poder
realizar el proyecto. También se debe se saber cómo conocer la posición del
apuntador del archivo, posicionar el apuntador al inicio de un archivo, detectar

4
el final del archivo, cambiar de nombre del archivo, la eliminación de archivos
y las funciones para realizar las operaciones antes mencionadas.

Por ultimo pasamos a lo que se conoce como Programación Dinámica,


necesitamos saber sobre punteros: su creación, las operaciones que se pueden
realizar con punteros, la inicialización de un puntero.

Los conceptos de Listas y de Pilas, que están relacionados con punteros,


también son de utilidad. Teniendo estos conocimientos previos ya podemos
pasar a la elaboración, utilizando el compilar Borlan C++, del proyecto. Si se
omitió algún concepto utilizado será mencionado en las partes posteriores del
presente trabajo.

3.- Marco Conceptual

Programa.- Es un conjunto detallado de instrucciones que instruyen al


procesador para realizar determinados procesos. Los datos pueden ser
cualquier información que necesite el programa: caracteres, números,
imágenes, etc.

Algoritmo.-Es un conjunto de reglas o procedimientos que permiten obtener


un resultado determinado a partir de ciertas reglas definidas por el
programador.

Variables.- Una variable es un identificador válido cuyo valor puede cambiar


temporalmente durante la ejecución de un programa. Las variables deben ser
declaradas antes de ser utilizadas.

Estructuras secuenciales.- Son aquellas que se escriben línea a línea y son


ejecutadas en el orden en que se encuentran, desde el inicio hasta el final del
programa. En C++ estas son solo sentencias simples que terminan en un punto
y coma (;):

Estructuras selectivas condicionales.-Permiten evaluar condiciones de


proposiciones, comparaciones de tipos de datos que pueden ser números,
cadenas, letras, etc. y devuelven resultados tipo booleanos V:1 o F:0 y,
dependiendo las instrucciones, a ejecutar cuando es V o cuando es F.

5
Presentan tres tipos de:
- Estructuras condiciones simples
- Estructuras condiciones compuestas y
- Estructuras condiciones con anidamiento

Arrays Unidimensionales (vectores).-Un arreglo (array) es un conjunto de


datos del mismo tipo, los cuales ocupan direcciones adyacentes en la memoria
cuando el programa se ejecuta, permitiendo acceder a ellos en forma aleatoria.
Es decir; que a cada elemento se puede acceder mediante un subíndice entero
único que lo identifica.
Librerías.-En C++, se conoce como librerías (o bibliotecas) a cierto tipo de
archivos que podemos importar o incluir en nuestro programa. Estos archivos
contienen las especificaciones de diferentes funcionalidades ya construidas y
utilizables que podremos agregar a nuestro programa, como por ejemplo leer
del teclado o mostrar algo por pantalla entre muchas otras más.
Mencionaré algunas librerías utilizadas:
fstream:
Flujos hacia/desde ficheros. Permite la manipulación de archivos desde el
programar, tanto leer como escribir en ellos.

iosfwd:
Contiene declaraciones adelantadas de todas las plantillas de flujos y sus
typedefs estándar. Por ejemplo ostream.
iostream:
Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e
importante (aunque no indispensable).
La biblioteca list:
Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas

math:
Contiene los prototipos de las funciones y otras definiciones para el uso y
manipulación de funciones matemáticas.
Memory:
Utilidades relativas a la gestión de memoria, incluyendo asignadores y
punteros inteligentes (auto_ptr).
"auto_ptr" es una clase que conforma la librería memory y permite un fácil
manejo de punteros y su destrucción automaticamente.

6
Biblioteca new:
Manejo de memoria dinámica
numeric:
Parte de la librería numérica de la STL relativa a operaciones numéricas.
Ostream:
Algoritmos estándar para los flujos de salida.
queue:
Parte de la STL relativa a contenedores tipo queue (colas de objetos).
Librería stdio:
Contiene los prototipos de las funciones, macros, y tipos para manipular datos
de entrada y salida.
Librería stdlib:
Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso
general.
Sting:
Parte de la STL relativa a contenedores tipo string; una generalización de las
cadenas alfanuméricas para albergar cadenas de objetos. Muy útil para el fácil
uso de las cadenas de caracteres, pues elimina muchas delas dificultades que
generan los char
Typeinfo:
Mecanismo de identificación de tipos en tiempo de ejecución
Vector:
Parte de la STL relativa a los contenedores tipo vector; una generalización de
las matrices unidimensionales C/C++
forward_list
Esta librería es útil para implementar con gran facilidad listas enlazadas
simples.
List:
Permite implementar listas doblemente enlazadas (listas enlazadas dobles)
fácilmente.
Iterator:
Proporciona un conjunto de clases para iterar elementos.
Regex:
Proporciona fácil acceso al uso de expresiones regulares para la comparación
de patrones.

7
Thread:
Útil para trabajar programación multi hilos y crear múltiples hilos en nuestra
aplicación.
Lista
Una lista lineal es un conjunto de elementos definidos que pueden variar en
número y donde cada elemento tiene un único predecesor y un único sucesor
o
siguiente, excepto el primero y el último de la lista.

Pila
Una pila (stack) es un tipo especial de lista lineal en la que la inserción y
borrado
de nuevos elementos se realiza solo por un extremo que se denomina cima o
tope (top).
feof()
Esta función sirve para comprobar si se ha alcanzado el final del archivo
rewind()
Se usa para colocar el apuntador del archivo al inicio del archivo abierto, sin
necesidad de usar la función fseek.
ftell()
Se usa para conocer la posición actual del apuntador de un archivo abierto. La
posición se expresa en bytes (dirección física), contados desde el principio del
archivo.
fseekf()
Esta función sirve para situar el cursor del archivo para leer o escribir en el
lugar deseado. El valor de retorno es cero si la función tuvo éxito, y un valor
distinto de cero si hubo algún error. También es importante mencionar que
cada vez que se realiza una operación de lectura o de escritura, el apuntador
se mueve al final de dicho dato, de tal forma que está posicionado en el
siguiente, por lo se debe asegurar que se encuentre en la posición deseada
antes de realizar cualquier operación.

fread()
La función fread permite abrir o “cargar” todos los campos de un registro, es
decir; lee un registro y lo copia en la memoria RAM para luego realizar
operaciones.
Esta función tiene los mismos argumentos que la función fwrite ().

8
fflush()
Un buffer es un área de almacenamiento temporal en memoria de todos los
datos leídos o escritos en el archivo. Estos buffers retienen datos en tránsito
desde y hacia el archivo y tienen la finalidad de hacer más eficiente la ejecución
del programa.
Los buffers también se vacían cuando se cierra el archivo.
fwrite()
Esta función trabaja con registros de longitud constante y forma pareja con
fread(). Es capaz de escribir hacia un archivo uno o varios registros de la misma
longitud, almacenados a partir de una dirección de memoria.
Esta función tiene cuatro argumentos: la variable que se desea grabar, su
tamaño en bytes, la cantidad de variables y el alias del archivo donde se desea
almacenar.
fclose ()
Cierra un archivo abierto.
floreal ()
Cierra todos los archivos abiertos.

Archivos de texto

Son archivos que pueden contener cualquier clase de datos, detal manera que
son “entendibles” por la sociedad. Los datos de los registros, en un archivo de
texto, se almacenan usando el código ASCII. Este tipo de archivos solo
tienemarcas lógicas de fin de línea (eol y eof), asimismo, no tieneCAMPOS,
índices lógicosde registros para identificar los registros físicos.
Archivos binarios
Este tipo de archivos procesan y almacenan los datos numéricos basados en
su representación binaria. Cuando utiliza un lenguaje de programación, se usa
instrucciones, a esto se le denomina programa fuente y cuando ejecuta este
programa genera un archivo binario. Archivo que se puede ejecutar sin
disponer del lenguaje de programación.
Archivos (FILE)
Es una estructura de datos para el procesamiento de registros, es decir, está
compuesto por un conjunto de registros con igual cantidad de campos.
Recuerde que los registros se inician con el índice lógico cero (0).
Registro

9
Está compuesto por un conjunto de estructuras denominadas campos.
Se procesa datos en términos de: registro lógico, registro físico, campo, claves
primarias, foráneas.
Entidad: Objeto del mundo real, con existencia independiente y distinguible
de otros, del que queremos almacenar información en la base de datos.
Atributo o campo: propiedades específicas de cada entidad para describirla.
Funciones recursivas
Puede definirse un programa en términos recursivos, como una serie de pasos
básicos, o paso base (también conocido como condición de parada), y un paso
recursivo, donde vuelve a llamarse a la función. En un ordenador, esta serie de
pasos recursivos debe ser finita, terminando con un paso base. Es decir, a cada
paso recursivo se reduce el número de pasos que hay que dar para terminar,
llegando un momento en el que no se verifica la condición de paso a la
recursividad. Ni el paso base ni el paso recursivo son necesariamente únicos.
Cuando una función se puede llamar a sí misma (por su nombre), se le
denomina recursividad y puede ser directa e indirecta.
Recursividad directa. Cuando una función se llama a sí misma.
Recursividad indirecta. Cuando tenemos un procedimiento P que llama a otro
Q y éste, a su vez, llama a P. También en estos casos debe haber una condición
de parada.Los dos tipos de recursividad se dan en dos formas, aquellas que
eventualmente terminan de ejecutar los procesos y generan un resultado y el
caso en que la recursividad nunca termina produciendo un bucle infinito y de
aquí una falla en tiempo de ejecución por falta de memoria.
Identificador local. Cuando está definido dentro del cuerpo de una función, a
este tipo de variables se les denomina locales, ya que sólo son útiles dentro
del cuerpo de la función.
Identificador global. Cuando están definidas fuera del bloque o fuera del
cuerpo de cualquier función.

Parámetros
Se denominan parámetros a los objetos declarados en el prototipo (que deben
corresponder con la definición).

Argumentos

10
Cuando se realiza una llamada a la función, los “valores” pasados se
denominan argumentos.

ElTipo_dato_devuelto.
Indica el tipo del valor que la función devolverá mediante el uso de return.

Funciones
Las funciones son un conjunto de instrucciones que realizan una tarea
específica. En general toman ciertos valores de entrada, llamados parámetros
y proporcionan un valor de salida o valor de retorno; aunque en C++, tanto
unos como el otro son opcionales, y pueden no existir.

Prototipos de funciones
Un prototipo es una declaración de una función. Consiste en una presentación
de la función, exactamente con la misma estructura que la definición, pero sin
cuerpo y terminada con un ";".
Operando: cada una de las constantes, variables o expresiones que
intervienen en una expresión.
Operador: cada uno de los símbolos que indican las operaciones a realizar
sobre los operandos, así como los operandos a los que afecta.
Expresión: según el diccionario, "Conjunto de términos que representan una
cantidad", para nosotros es cualquier conjunto de operadores y operandos,
que dan como resultado un valor.

11
4.-Objetivos

Principal:

 Buscar una manera solucionar las congestiones en la compra y


distribución de butacas.

Secundarias:

 Darle dinámica al proceso mediante la interacción activa entre el


comprador y el programa.
 Prevenir las incomodidades que se pueden generar por las butacas.
 Brindar mayor velocidad en las gestiones de los pedidos.

12
5.-Metodología

El funcionamiento se realiza comenzando con una plataforma de menú en


donde se podrá acceder a el ingreso de clientes y su posterior registro para la
sala como para la película que elija, ante esto se presentara una imagen donde
mostrara las butacas disponibles mediante colores.

Para esto se creó un acceso tanto para el cliente como para el administrador,
para poder modificar las funciones y reiniciar los asientos después de cada
función realizada.

Presentamos el código usado:

(se adjuntará parte del código usado)


#include<iostream.h>

#include<stdio.h>

#include<windows.h>

#include<stdlib.h>

#include<conio.h>

#include<string.h>

#include<iomanip.h>

void login();

voidmenu();

voidmostrar_butacas();

voidbutacas_llenas();

void registrar();

13
char A[4][4][3], B[4][12][3], C[4][4][3], D[4][12][3];

int a[17], b[49], c[17], d[49];

char cadena[3]="\333\333";

int i, j, z=1;

void login(){

int user, pass, i, tamano, intento;

char usuario[50], contrasena[50], caracter;

clrscr();

gotoxy(20,6);cout<<"ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";Sleep(150);

gotoxy(20,7);cout<<"º";gotoxy(57,7);cout<<"º";Sleep(150);

gotoxy(20,8);cout<<"º";gotoxy(57,8);cout<<"º";Sleep(150);

gotoxy(20,9);cout<<"º";gotoxy(57,9);cout<<"º";Sleep(150);

gotoxy(20,10);cout<<"ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹";Sleep(150);

gotoxy(20,11);cout<<"º";gotoxy(57,11);cout<<"º";Sleep(150);

gotoxy(20,12);cout<<"º";gotoxy(57,12);cout<<"º";Sleep(150);

gotoxy(20,13);cout<<"º";gotoxy(57,13);cout<<"º";Sleep(150);

gotoxy(20,14);cout<<"ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";Sleep(150);

gotoxy(23,8);cout<<"ID :";

gotoxy(23,12);cout<<"PASSWORD :";

intento=0;

14
do{

gotoxy(23,8);cout<<"ID :";gotoxy(35,8);gets(usuario);

gotoxy(23,12);cout<<"PASSWORD :";gotoxy(35,12);

i=0;

while((caracter=getch())!=13){

contrasena[i]=caracter;

if(caracter==8){//8 es el codigoascii de la tecla delete para borrar caracteres

if(i==0){

gotoxy(35,12);

else{

//contrasena[i]='\0';

cout<<"\b \b";//para borrar un espacio

i--;

else{

if(i==10){

gotoxy(35+i,12);//maximo 10 caracteres

}else{

contrasena[i]=caracter;

cout<<"*";

i++;

15
}

contrasena[i]='\0';

/*gets(contrasena); */

if((!(strcmp(usuario,"usuario"))&&!(strcmp(contrasena,"123456")))||(!(strcmp(usuario,"u
ser"))&&!(strcmp(contrasena,"654321")))){

break;

gotoxy(35,8);cout<<" ";

gotoxy(35,12);cout<<" ";

intento++;

gotoxy(24,16);cout<<"Le queda "<<3-intento<<" intentos.";

}while(1&&intento<3);

if(intento==3){

clrscr();

system("color 3f");

gotoxy(6,6);cout<<"Sr debido a error en sus datos, hasta luego";

getche();

}else{

clrscr();

system("color 3f");

menu();

16
}

void menu(){

int opc, valido, i;

char caracter;

system("color 3f");

gotoxy(22,2);cout<<"ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";Sleep(150);

gotoxy(22,3);cout<<"º";gotoxy(61,3);cout<<"º";Sleep(150);

gotoxy(22,4);cout<<"º";gotoxy(61,4);cout<<"º";Sleep(150);

gotoxy(22,5);cout<<"º";gotoxy(61,5);cout<<"º";Sleep(150);

gotoxy(22,6);cout<<"ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹";Sleep(150);

gotoxy(22,7);cout<<"º";gotoxy(61,7);cout<<"º";Sleep(150);

gotoxy(22,8);cout<<"º";gotoxy(61,8);cout<<"º";Sleep(150);

gotoxy(22,9);cout<<"º";gotoxy(61,9);cout<<"º";Sleep(150);

gotoxy(22,10);cout<<"º";gotoxy(61,10);cout<<"º";Sleep(150);

gotoxy(22,11);cout<<"º";gotoxy(61,11);cout<<"º";Sleep(150);

gotoxy(22,12);cout<<"º";gotoxy(61,12);cout<<"º";Sleep(150);

gotoxy(22,13);cout<<"º";gotoxy(61,13);cout<<"º";Sleep(150);

gotoxy(22,14);cout<<"ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";Sleep(150);

do{

17
gotoxy(22,2);cout<<"ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";

gotoxy(22,3);cout<<"º";gotoxy(61,3);cout<<"º";

gotoxy(22,4);cout<<"º";gotoxy(61,4);cout<<"º";

gotoxy(22,5);cout<<"º";gotoxy(61,5);cout<<"º";

gotoxy(22,6);cout<<"ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹";

gotoxy(22,7);cout<<"º";gotoxy(61,7);cout<<"º";

gotoxy(22,8);cout<<"º";gotoxy(61,8);cout<<"º";

gotoxy(22,9);cout<<"º";gotoxy(61,9);cout<<"º";

gotoxy(22,10);cout<<"º";gotoxy(61,10);cout<<"º";

gotoxy(22,11);cout<<"º";gotoxy(61,11);cout<<"º";

gotoxy(22,12);cout<<"º";gotoxy(61,12);cout<<"º";

gotoxy(22,13);cout<<"º";gotoxy(61,13);cout<<"º";

gotoxy(22,14);cout<<"ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";

gotoxy(35,4);cout<<"MENU DE OPCIONES";

gotoxy(31,7);cout<<"[0] BUTACAS DISPONIBLES";

gotoxy(31,8);cout<<"[1] REGISTRO";

gotoxy(31,9);cout<<"[2] ACTUALIZACION";

gotoxy(31,10);cout<<"[3] ORDENAMIENTO";

gotoxy(31,11);cout<<"[4] BUSQUEDA";

gotoxy(31,12);cout<<"[5] EXIT";

18
i=0;

valido=1;

gotoxy(26,7);textbackground(GREEN);textcolor(YELLOW);cprintf("=>");

while(valido){

caracter=getch();

if(caracter==13){

opc=i;

valido=0;

if(caracter==80){

i++;

gotoxy(26,7);cout<<" ";gotoxy(26,8);cout<<" ";gotoxy(26,9);cout<<"


";gotoxy(26,10);cout<<" ";gotoxy(26,11);cout<<" ";

gotoxy(26,12);cout<<" ";

if(i>=0&&i<6){

gotoxy(26,7+i);textcolor(YELLOW);cprintf("=>");

caracter=getch();

if(caracter==13){

opc=i;

valido=0;

19
}

}else{

i=5;

gotoxy(26,7);cout<<" ";gotoxy(26,8);cout<<"
";gotoxy(26,9);cout<<" ";gotoxy(26,10);cout<<" ";gotoxy(26,11);cout<<" ";

gotoxy(26,12);cout<<" ";

gotoxy(26,7+i);textcolor(YELLOW);cprintf("=>");

caracter=getch();

if(caracter==13){

opc=i;

valido=0;

if(caracter==72){

i--;

gotoxy(26,7);cout<<" ";gotoxy(26,8);cout<<" ";gotoxy(26,9);cout<<"


";gotoxy(26,10);cout<<" ";gotoxy(26,11);cout<<" ";

gotoxy(26,12);cout<<" ";

if(i>=0&&i<6){

gotoxy(26,7+i);textcolor(YELLOW);cprintf("=>");

caracter=getch();

if(caracter==13){

opc=i;

20
valido=0;

}else{

i=0;

gotoxy(26,7);cout<<" ";gotoxy(26,8);cout<<" ";gotoxy(26,9);cout<<"


";gotoxy(26,10);cout<<" ";gotoxy(26,11);cout<<" ";

gotoxy(26,12);cout<<" ";

gotoxy(26,7+i);textcolor(YELLOW);cprintf("=>");

caracter=getch();

if(caracter==13){

opc=i;

valido=0;

switch(opc){

case 0 : clrscr(); system("color


3f");gotoxy(31,7);mostrar_butacas();

caracter=getch();clrscr();system("color
3f");break;

case 1 : clrscr(); system("color 3f");gotoxy(31,7);registrar();

caracter=getch();clrscr();system("color
3f");break;

21
case 2: clrscr(); system("color 3f");gotoxy(31,7);//actualizacion();

caracter=getch();clrscr();system("color
3f");break;

case 3: clrscr(); system("color 3f");gotoxy(31,7);//ordenamiento();

caracter=getch();clrscr();system("color
3f");break;

case 4: clrscr(); system("color 3f");gotoxy(31,7);//busquedas();

caracter=getch();clrscr();system("color
3f");break;

case 5: clrscr(); system("color


3f");gotoxy(31,7);cout<<"ADIOS...";

caracter=0;clrscr();system("color
3f");break; // cualquier valor para que salga

}while(caracter==27);

void mostrar_butacas(){

clrscr();

system("color 3f");

for(i=0;i<4;i++){

for(j=0;j<4;j++){

gotoxy(3+3*j,4+2*i);

22
cout<<A[i][j];

for(i=0;i<4;i++){

for(j=0;j<12;j++){

gotoxy(21+3*j,4+2*i);

cout<<B[i][j];

for(i=0;i<4;i++){

for(j=0;j<4;j++){

gotoxy(63+3*j,4+2*i);

cout<<C[i][j];

for(i=0;i<4;i++){

for(j=0;j<12;j++){

gotoxy(21+3*j,14+2*i);

cout<<D[i][j];

23
}

getche();

void butacas_llenas(){

for(i=0;i<4;i++){

for(j=0;j<4;j++){

gotoxy(3+3*j,4+2*i);

strcpy(A[i][j],cadena);

for(i=0;i<4;i++){

for(j=0;j<12;j++){

gotoxy(21+3*j,4+2*i);

strcpy(B[i][j],cadena);

for(i=0;i<4;i++){

for(j=0;j<4;j++){

gotoxy(63+3*j,4+2*i);

strcpy(C[i][j],cadena);

24
for(i=0;i<4;i++){

for(j=0;j<12;j++){

gotoxy(21+3*j,14+2*i);

strcpy(D[i][j],cadena);

void registrar(){

char area;

int cant, n, h, k, m, vale, num_asi;

clrscr();

system("color 3f");

gotoxy(6,6);cout<<"Escoja un area => ";area=toupper(getch());

gotoxy(6,7);cout<<"AREA ES: "<<area;

switch(area){

case 'A':

do{

gotoxy(6,8);clreol();system("color 3f");cout<<"Cantidad de boletos : ";cin>>cant;

}while(cant<1||cant>16);

25
for(h=1;h<=cant;h++){

clrscr();

system("color 3f");

vale=0;

while(vale==0){

do{

gotoxy(6,9);clreol();system("color 3f");cout<<"Numero de asiento : ";cin>>num_asi;

}while(num_asi<1||num_asi>16);

a[z]=num_asi;

vale=1;

for(j=1;j<=16;j++){

if(a[j]==a[z]&&j!=z){

vale=0;gotoxy(15,6);cout<<"codigo ya existe";getch();gotoxy(15,6);cout<<"
";

/*

if(h==1){

do{

gotoxy(6,9);clreol();system("color 3f");cout<<"Numero de
asiento : ";cin>>a[h];

26
}while(a[h]<1||a[h]>16);

vale=1;

}else{

do{

gotoxy(6,9);clreol();system("color 3f");cout<<"Numero de
asiento : ";cin>>a[h];

}while(a[h]<1||a[h]>16);

vale=1;

for(j=1;j<=h-1;j++){

if(a[j]==a[h]){

vale=0;gotoxy(15,6);cout<<"codigo ya existe";getch();

*/

if(a[z]%4==0){

k=a[z]/4;

m=4;

}else{

k=(a[z]/4)+1;

m=a[z]%4;

27
strcpy(A[k-1][m-1],"\260\260");

z++;

break;

case 'B': do{

gotoxy(6,8);clreol();system("color 3f");cout<<"Cantidad de boletos : ";cin>>cant;

}while(cant<1||cant>48);

for(h=1;h<=cant;h++){

clrscr();

system("color 3f");

do{

gotoxy(6,9);clreol();system("color 3f");cout<<"Numero de asiento : ";cin>>n;

}while(cant<1||cant>48);

if(n%12==0){

k=n/12;

m=12;

}else{

k=(n/12)+1;

m=n%12;

strcpy(B[k-1][m-1],"\260\260");

28
break;

case 'C': do{

gotoxy(6,8);clreol();system("color 3f");cout<<"Cantidad de boletos : ";cin>>cant;

}while(cant<1||cant>16);

for(h=1;h<=cant;h++){

clrscr();

system("color 3f");

do{

gotoxy(6,9);clreol();system("color 3f");cout<<"Numero de asiento : ";cin>>n;

}while(cant<1||cant>16);

if(n%4==0){

k=n/4;

m=4;

}else{

k=(n/4)+1;

m=n%4;

strcpy(C[k-1][m-1],"\260\260");

break;

case 'D': do{

29
gotoxy(6,8);clreol();system("color 3f");cout<<"Cantidad de boletos : ";cin>>cant;

}while(cant<1||cant>48);

for(h=1;h<=cant;h++){

clrscr();

system("color 3f");

do{

gotoxy(6,9);clreol();system("color 3f");cout<<"Numero de asiento : ";cin>>n;

}while(cant<1||cant>48);

if(n%12==0){

k=n/12;

m=12;

}else{

k=(n/12)+1;

m=n%12;

strcpy(D[k-1][m-1],"\260\260");

break;

voidmain(){

butacas_llenas();

30
login();

getche();

6.-Aplicación

La siguiente muestra la interface de acceso para el cliente:

La siguiente muestra el menú donde se accede usuario para poder disponer


del las butacas disponibles o registro o incluso para hacer una búsqueda de
alguna función.

31
Las siguientes imágenes corresponden al sistema del administrador, donde
registrará al cliente asegurando el pago correspondiente. Además se tendrá
que tener en cuenta la validación del código del cliente, caso contrario el
programa mandará un mensaje.

32
Las siguientes imágenes corresponden al sistemas de revisión en las funciones,
esto es necesario para poder verificar que los datos correspondan a lo
requerido en la función (edad del cliente), además de poder obtener algunos
datos extras para poder tener una estadística de los clientes por película.

33
7.-Análisis

El programa contará con la siguiente funcionalidad

*login de usuario.

*3 intentos como máximo al ingresar la clave.

34
*Creación y mantenimiento de datos del cine.

*Registro de compra de boletos.

*Consulta de funciones.

*Ingreso y mantenimiento del usuario.

El programa será administrado por usuarios operadores, quienes ingresaran a


los respectivos clientes, y darán mantenimiento a todas las opciones de
ingreso del cine.

Los usuarios inscritos podrán reservar sus asientos en sala de cine, con el
beneficio de evitar las largas filas al momento de comprarlas en las taquillas
de los cines.

7.1. DESCRIPCION GENERAL

7.1.1. Funciones del producto

*login de usuario.

*3 intentos como máximo al ingresar la clave.

*Creación y mantenimiento de datos del cine.

*Registro de compra de boletos.

*Consulta de funciones.

*Ingreso y mantenimiento del usuario.

7.1.2. Característica de los usuarios

El sistema contempla la existencia de dos tipos de usuario:

*Usuario Operador: el cuál será el encargado del ingreso de datos y deberá


contar con conocimiento básico de informática.

35
*Usuario Administrador: este usuario deberá tener una instrucción superior
en Ingeniería de Sistemas, pues tendrá un control total sobre la base de
datos y el programa.

7.1.3. Restricciones

Seguridad

Dado del a información de los boletos es crítica, solamente el administrador


del sistema podrá realizar anulaciones de los mismos y solamente el podrá
realizar afectaciones a la base de datos.

7.1.4. Funciones

Para la especificación de funciones del sistema, se ha utilizado el sistema de


jerarquía funcional en las que se detallan las funciones con su descripción,
proceso, entrada y salida.

7.1.4.1. Creación de la estructura de base de datos.

ACTIVIDAD DESCRIPCIÓN ENTRADAS SALIDAS


Creación de la Se debe crear la Escritura de base Ninguna
base de datos. estructura de la de datos.
base de datos.

7.1.4.2.Registro de compra de boletos.

ACTIVIDAD DESCRIPCIÓN ENTRADAS SALIDAS


Ingreso de datos Se debe *Nombre Ninguna
del cine. desarrollar un *Código del
programa para cliente
ingresar los *Edad
datos de los *Genero
clientes. *Código de
película

7.1.4.3. Login de usuarios.

36
ACTIVIDAD DESCRIPCIÓN ENTRADAS SALIDAS
Login de Se debe *Nombre del Ninguna
usuarios desarrollar un usuario
programa el cual *Clave
permita ingresar
el usuario y
clave.

7.1.4.4. Consultas.

ACTIVIDAD DESCRIPCIÓN ENTRADAS SALIDAS


Consulta de Se debe de Datos de Datos del
butacas desarrollar un consulta del usuario(en este
programa que usuario: caso se presenta
permita la *Área de la mediante una
consulta de los función imagen)
datos de los
asientos del
cine.
Consulta de Se debe de Datos de Datos del
usuario desarrollar un consulta del usuario
programa que usuario:
permita la *Código del
consulta de los cliente
datos de *Nombre
usuario.

7.1.4.5. Requisito de rendimiento

El sistema de registro de boletos de cine nos permite un acceso simultáneo


de varios clientes a la hora de la compra o reservación de asientos.

37
En lo que respecta a la frecuencia de uso, se espera que el sistema sea
utilizado diariamente, pues el proceso puede ejecutarse de manera
continua, algunas veces al día, el sistema soporta sin problemas el número de
transacciones diarias.

8.-Conclusiones

A lo largo del presente trabajo se observó que con conocimientos básicos de


programación y usando programas simples como borland c++, u otros. Es
posible mejorar la organización de la información acerca de las entradas,
horarios, asientos disponibles, etc. Que se dan en el momento de ventas de
entradas de cine, tanto una mejora en el aspecto visual para cliente, como una
mejora de administrar los datos para el vendedor. Solucionando así problemas
que tienen los clientes al momento de comprar sus entradas.

Facilitando su compra sin problemas de ubicación, sin problemas de que los


asientos estén copados, entre otros. Haciendo que este programa pueda ser
aplicable en cualquier cine, teatro, o empresa que se dedique a la venta de
entradas para algún tipo de evento.

9.-Bibliografía

 Fecha de consulta: 24 de junio del 2015


o La IDE del lenguaje Borland C++ versión 5.0

38
o URL:
o http://prof.usb.ve/mirodriguez/borland-c.pdf

 Fecha de consulta: 21 de junio del 2015


o Curso de C, por Antonio Lebrón Bocanegra
o URL:
o http://www.nachocabanes.com/tutors/teoc-lebron.pdf

 Fecha de consulta: 20 de junio del 2015


o Manual Teorico-Practico, Alan D. Osorio Rojas
o URL:
https://unefazuliasistemas.files.wordpress.com/2011/04/manua
lcpublic.pdf

39

Вам также может понравиться