Post on 19-Jan-2016
transcript
UNIVERSIDAD NACIONAL DE INGENIERÍA
Facultad de Ingeniería Industrial y de Sistemas
Proyecto
CURSO: LENGUAJE DE PROGRAMACION ESTRUCTURADO
DOCENTE: GILBERTO A. SALINAS
INTEGRANTES:
- DIAZ HERNANDEZ, JOSEEDUARDO 20110031B- ROQUE RUIZ, JOHANA LIZETH 20111189I
02 de julio de 2013
INDICE
1. INTRODUCCIÓN
2. OBJETIVOS
3. MARCO TEÓRICO
3.1 CONCEPTOS PREVIOS
3.1.1 FUNCIONAMIENTO DE UN ORDENADOR
3.1.2 ALGORITMO
3.1.3. LENGUAJE DE PROGRAMACIÓN
3.2. PROGRAMACIÓN ESTRUCTURADA
3.3. EL LENGUAJE C Y C++
3.4. BASE DE DATOS
3.4.1. MODELOS DE BASE DE DATOS
3.5. VENTAJAS DEL USO DE BASE DE DATOS
3.5.1. ADMINISTRADOR DE UNA BASE DE DATOS
3.5.2. USUARIOS DE UNA BASE DE DATOS
4. PROYECTO DE FIN DE CURSO
4.1 DESCRIPCIÓN
4.2 MODELO RELACIONAL DEL SISTEMA
4.3 PANTALLAS PRINCIPALES
4.4 CÓDIGO FUENTE
5. INFORMACIÓN BÁSICA DEL EQUIPO Y EL COMPILADOR
7. CONCLUSIONES
8. BIBLIOGRAFÍA
Proyecto de Fin de Curso Página 2
INTRODUCCION
En muchas ocasiones, nos topamos con algunas tareas que requieren ser
ejecutadas frecuentemente pero con diferentes datos que procesar.
Particularmente en una universidad, donde el alumno necesita por ejemplo
reservar, cancelar y consultar turnos para un curso en especial y a través de
estos datos realizar cuadros estadísticos que nos permita saber las horas
llevadas por cada alumno, por cada curso así como también las horas, días y
meses puntas, los cuales ayudarán a la universidad a mejorar sus procesos y
brindar un mejor servicio al alumno.
En este proyecto se desarrollará justamente un sistema informático para el
manejo de turnos haciendo uso del lenguaje de programación C, que es
objeto de estudio de nuestro curso.
Proyecto de Fin de Curso Página 3
OBJETIVOS
Implementar en el lenguaje C un sistema informático para el manejo de
turnos, que realice las siguientes operaciones:
- Reservar un turno para un alumno.
- Cancelar una reserva de un turno de un alumno: dado el
carnet de alumno y la hora de turno, el sistema anula el
mencionado turno.
- Consultar turno a una hora determinada: dado el carnet
del alumno y el turno, el sistema informa el aula, número
de la Pc y el turno que el alumno tiene.
- Persistencia.
Estadísticas
- Informar sobre las horas punta, días punta y mes punta().
- Horas de uso por cada alumno.
- Horas de uso por curso.
- Influye en el aprovechamiento el mayor uso del
laboratorio.
Proyecto de Fin de Curso Página 4
MARCO TEORICO
3.1 Conceptos previos
3.1.1 Funcionamiento de un ordenador
Durante los siglos XVI, XVII y XVIII hubo varios diseños (e implementaciones)
de mecanismos que permitían realizar operaciones aritméticas; tales
mecanismos constituyeron un primer paso hacia máquinas multipropósito,
como los dispositivos de Babbage que aún eran puramente mecánicos, no
electrónicos. A fines del siglo XIX se desarrollaron máquinas parcialmente
inspiradas por las ideas de Babbage pero que añadían elementos para
introducir información (las famosas tarjetas perforadas) y durante el siglo XX
se impuso la utilización de elementos electromecánicos (relés) y, finalmente,
electrónicos (válvulas, transistores y chips) en la construcción de tales
máquinas. Durante la Segunda Guerra Mundial ambos bandos dedicaron
importantes esfuerzos al desarrollo de máquinas electrónicas que
permitieran llevar a cabo cálculos más veloces y decodificar mensajes
cifrados; en 1944 John von Neumann, que participaba en el Proyecto
Manhattan, percibiendo la importancia que tendrían las computadoras en el
desarrollo de armas nucleares escribió un artículo en el que describía una
arquitectura, inspirada por las ideas de Babbage, que perdura aún hoy.
Proyecto de Fin de Curso Página 5
Arquitectura Von Neumann
La arquitectura Von Neumann divide el ordenador en cuatro partes
principales:
1. Unidad Aritmética (UA).
2. Unidad de Control (UC).
3. Memoria (M).
4. Dispositivos de entrada/salida (E/S).
Grafico 1. Componentes de un ordenador
La Unidad Aritmética es la encargada de realizar las operaciones
aritméticas básicas y, quizá, funciones más compleja como raíces,
logaritmos y funciones trigonométricas.
La Unidad de Control controla la ejecución de las operaciones de forma
apropiada y dirige el funcionamiento del resto de unidades de tal
forma que el trabajo conjunto de todas conduzca a la consecución de
las tareas específicas programadas en el sistema. La Unidad de Control
realiza las siguientes operaciones:
Proyecto de Fin de Curso Página 6
1. Recupera de memoria la siguiente instrucción a ejecutar.
2. Decodifica la instrucción y determina las acciones que debe llevar a
cabo.
3. Envía órdenes a la memoria para recuperar o almacenar datos, a la
UA para llevar a cabo operaciones y a los dispositivos de E/S para
recibir o enviar datos al usuario. La Memoria almacena tanto datos
numéricos como instrucciones (también codificadas de forma
numérica); la memoria está dividida en celdas, cada una con una
dirección única que permite el acceso a su contenido (datos o
instrucciones).
Por último, los dispositivos de entrada/salida facilitan la interacción de
los usuarios con la máquina.
3.1.2 Algoritmo
La palabra algoritmo proviene del nombre del matemático llamado
Abu Abdullah Muhammad bin Musa al-Khwarizmi que vivió entre los
siglos VIII y IX. Podemos encontrar muchas definiciones completas o
formales de algoritmo en los textos de algorítmica y programación,
todas ellas muy similares:
Secuencia finita de instrucciones, reglas o pasos que describen de
forma precisa las operaciones que un ordenador debe realizar para
llevar a cabo una tarea en un tiempo finito. [Donald E. Knuth, 1968]
Descripción de un esquema de comportamiento expresado
mediante un reportorio finito de acciones y de informaciones
Proyecto de Fin de Curso Página 7
elementales, identificadas, bien comprendidas y realizables a priori.
Este repertorio se denomina léxico [Pierre Scholl, 1988]
Un algoritmo es un conjunto finito de pasos definidos,
estructurados en el tiempo y formulados con base a un conjunto
finito de reglas no ambiguas, que proveen un procedimiento para
dar la solución o indicar la falta de esta a un problema en un tiempo
determinado. [Rodolfo Quispe-Otazu, 2004]
Características:
Las características fundamentales que debe cumplir
todo algoritmo son:
Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar
la acción a realizar sin criterios de interpretación.
Ser finito: Un número específico y numerable de pasos debe
componer al algoritmo, el cual deberá finalizar al completarlos.
Tener cero o más entradas: Datos son proporcionados a un
algoritmo como insumo (o estos son generados de alguna forma)
para llevar a cabo las operaciones que comprende.
Tener una o más salidas: Debe siempre devolver un resultado; de
nada sirve un algoritmo que hace algo y nunca sabemos que fue. El
devolver un resultado no debe ser considerado como únicamente
“verlos” en forma impresa o en pantalla, como ocurre con las
computadoras. Existen muchos otros mecanismos susceptibles de
programación que no cuentan con una salida de resultados de esta
forma. Por salida de resultados debe entenderse todo medio o
Proyecto de Fin de Curso Página 8
canal por el cual es posible apreciar los efectos de las acciones
del algoritmo.
Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser
preciso, no usando nada más ni nada menos que aquello que se
requiera para y en su ejecución.
3.1.3. Lenguaje de programación
Las personas para comunicarse entre sí necesitan un lenguaje que
puede ser oral o escrito. En general para comunicar algo siempre se
necesita un lenguaje, ya que estos son la manera de especificar las
acciones que se desea sean realizadas por la computadora
(ordenador).
En otras palabras, son la interface ente el programador y la
computadora. A través de ellos podemos desarrollar programas o
aplicaciones, que se componen por un conjunto de instrucciones que
luego se ejecutaran en la computadora haciendo uso de sus recursos
(memoria, PCU, discos, etc.). Los lenguajes de programación están
destinados a distintos ámbitos, dependiendo de sus características que
simplifican algunas tareas.
Pueden estar destinados a aplicaciones científicas, de negocios,
inteligencia artificial, programación de sistemas e incluso lenguajes de
programación con propósitos especiales. Los lenguajes de
programación tiene una estructura compleja que se compone de varias
partes: sintaxis, semántica, elementos del lenguaje, nivel de
abstracción, paradigma estructuras de control, para ordenar la
Proyecto de Fin de Curso Página 9
ejecución delos programas, tipos de datos (números, letras, etc.), y
funciones y procedimientos que contiene un conjunto de instrucciones,
entre otras.
3.1.3.1. Historia de los lenguajes de programación
El hombre a través de su historia siempre ha buscado inventar diversas
herramientas que le permitan simplificar sus quehaceres y tener una
mejor calidad de vida.
La computadora es uno de estos inventos; aunque se puede decir
puede decir que las tecnologías para su fabricación y explotación han
tenido un desarrollo impresionante a partir de la segunda mitad del
siglo XX, la computadora por si sola no es capaz de efectuar ninguna
tarea, es tan solo un conjunto de cables y circuitos dentro de una caja
que necesitan recibir instrucciones de los humanos para realizar alguna
tarea. Entonces el problema aquí es lograr que un conjunto de cables y
circuitos metidos en una caja realicen alguna tarea y nos den las
soluciones que esperamos de estas; el problema aquí es, cómo hacer
para que un conjunto de cables y circuitos metidos en una caja nos
pueda entender ¿cómo nos comunicamos con la computadora?
El hombre ha desarrollado una forma de transmitir nuestros deseos a
la computadora, los Lenguajes de Programación.
Por otro lado, como se sabe, un conjunto de circuitos no entendería
ningún lenguaje que nosotros conozcamos, por más sencillo que éste
parezca. Los circuitos en todo caso, sólo reconocen presencia o
ausencia de energía, es decir que debemos hablarle a la máquina en su
Proyecto de Fin de Curso Página 10
propio lenguaje (presencia y ausencia de energía, 0 y 1), o nuestro
lenguaje deberá de ser traducido a un lenguaje binario cuyo alfabeto
es el 0 y el 1, mediante las herramientas desarrolladas para llevar a
cabo esta tarea, las cuales reciben el nombre de traductores, y como
veremos más adelante, los hay de muchos tipos, dependiendo de
características más específicas del lenguaje a traducir y de la manera
de llevar a cabo su traducción.
Como ya habréis entendido, para crear un lenguaje de programación,
deberemos crear la herramienta que lo traduce, y es justamente de
ellas, de las que hablaremos a continuación, para describir como han
ido evolucionando en los últimos 50 años.
• 1946: Konrad Zuse, un ingeniero Alemán mientras trabajaba en los
Alpes de Bavaria, desarrolló el lenguaje Plankalkul, el cual, fue
aplicado entre otras cosas para jugar al ajedrez.
• 1949: Aparece Short Code, que viene a ser el primer lenguaje que
fue usado en un dispositivo de cómputo electrónico, aunque se debe
decir que se trata de un lenguaje traducido a mano.
• 1951: Grace Hopper, trabajando para Remington Rand, comenzó el
trabajo de diseño del primer compilador conocido ampliamente, el A-
0, el cual, al ser liberado por la compañía en 1957, lo hizo con el
nombre de MATH-MATIC.
Proyecto de Fin de Curso Página 11
• 1952: Alick E. Glennie, durante su tiempo libre en la Universidad de
Manchester, concibe un sistema de programación llamado
AUTOCODE, que viene a ser un compilador muy rudimentario.
• 1957: aparece FORTRAN (FORmula TRANslating) sistema traductor
de fórmulas matemáticas. Fue desarrollado por un equipo, al frente
del cual se encontraba John Backus quien después vendría a
contribuir en el desarrollo del compilador para el lenguaje ALGOL y de
la notación usada para la especificación sintáctica de los lenguajes,
conocida como BNF (Backus Naur Form).
A partir de los años sesenta, empiezan a surgir diferentes lenguajes
de programación, atendiendo a diversos enfoques, características y
propósitos, que más adelante describiremos. Por lo pronto, puede
decirse, que actualmente existen alrededor de 2000 lenguajes de
programación y continuamente, están apareciendo otros más nuevos,
que prometen hacer mejor uso de los recursos computacionales y
facilitar el trabajo de los programadores.
Proyecto de Fin de Curso Página 12
Gráfico 2. Evolución de los Lenguajes Imperativos y Orientados a Objetos
Proyecto de Fin de Curso Página 13
3.1.3.2. Clasificación de los lenguajes de programación
Los lenguajes de programación se clasifican de acuerdo a varios
criterios:
Según su “nivel”. Hace referencia a lo próxima al hombre que
esté la forma de expresar las sentencias
Lenguaje Máquina
Están escritos en lenguajes directamente legibles por la máquina
(computadora), ya que sus instrucciones son cadenas binarias (0 y 1).
Da la posibilidad de cargar (transferir un programa a la memoria) sin
necesidad de traducción posterior lo que supone una velocidad de
ejecución superior, solo que con poca fiabilidad y dificultad de verificar
y poner a punto los programas. Fue el primer lenguaje utilizado en la
programación de computadoras, pero dejó de utilizarse por su
dificultad y complicación, siendo sustituido por otros lenguajes más
fáciles de aprender y utilizar, que además reducen la posibilidad de
cometer errores.
Lenguajes de bajo nivel
Un lenguaje de programación de bajo nivel es el que proporciona poca
o ninguna abstracción del microprocesador de un ordenador.
Consecuentemente es fácilmente trasladado a lenguaje de máquina.
En general se utiliza este tipo de lenguaje para programar
controladores (drivers). La programación en un lenguaje de bajo nivel
como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas
ventajas:
Proyecto de Fin de Curso Página 14
Mayor adaptación al equipo.
Posibilidad de obtener la máxima velocidad con mínimo uso de
memoria.
Pero también tiene importantes inconvenientes:
Imposibilidad de escribir código independiente de la máquina.
Mayor dificultad en la programación y en la comprensión de los
programas.
Características
Se trabaja a nivel de Microinstrucciones, es decir, su
programación es al más fino detalle.
Está orientado a la máquina.
Lenguajes de alto nivel (cercanos al hombre)
Los lenguajes de alto nivel logran la independencia del tipo de máquina
y se aproximan al lenguaje natural. Se puede decir que el principal
problema que presentan los lenguajes de alto nivel es la gran cantidad
de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes
evolucionados, surgen con posterioridad a los anteriores, con los
siguientes objetivos, entre otros:
Proyecto de Fin de Curso Página 15
Lograr independencia de la máquina, pudiendo utilizar un mismo
programa en diferentes equipos con la única condición de disponer de
un programa traductor o compilador, que lo suministra el fabricante,
para obtener el programa ejecutable en lenguaje binario de la máquina
que se trate. Además, no se necesita conocer el hardware específico de
dicha máquina.
Aproximarse al lenguaje natural, para que el programa se pueda
escribir y leer de una forma más sencilla, eliminando muchas de las
posibilidades de cometer errores que se daban en el lenguaje máquina,
ya que se utilizan palabras (en inglés) en lugar de cadenas de símbolos
sin ningún significado aparente.
Incluir rutinas de uso frecuente como son las de entrada/salida,
funciones matemáticas, manejo de tablas, etc, que figuran en una
especie de librería del lenguaje, de tal manera que se pueden utilizar
siempre que se quieran sin necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes
de alto nivel es la gran cantidad de ellos que existen actualmente en
uso (FORTRAN, LISP, ALGOL, COBOL, APL, SNOBOL, PROLOG,
MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID,
BASIC), además de las diferentes versiones o dialectos que se han
desarrollado de algunos de ellos.
Proyecto de Fin de Curso Página 16
Gráfico 3. Evolución de los Lenguajes de Programación
Según la relación traducción-ejecución.
Compiladores.
Intérpretes.
Según su campo de aplicación:
Aplicaciones Científicas. Predominan los algoritmos de cálculo
numérico y matrices.
Aplicaciones de Procesamiento de Datos. Sobresalen las tareas
relativas a la creación, mantenimiento, consulta y listado de datos.
Estos datos se organizan en registros, ficheros y bases de datos.
Aplicaciones de Tratamiento de Textos. Llevan a cabo la
manipulación de textos en lenguaje natural.
Proyecto de Fin de Curso Página 17
Aplicaciones en Inteligencia Artificial. Están constituidas por
programas que emulan un comportamiento inteligente. Ej. Juegos
inteligentes (ajedrez, tres en raya,...), robótica, sistemas
Aplicaciones de Programación de Sistemas. Como por ejemplo
aquéllos que se utilizan para desarrollar los módulos de un Sistema
Operativo, traductores de lenguajes,...
Según el estilo de programación:
Imperativos
Son aquellos lenguajes, que basan su funcionamiento en un conjunto
de instrucciones secuenciales, las cuales, al ejecutarse van alterando
las regiones de la memoria donde residen todos los valores de las
variables involucradas en el problema que se plantea resolver. Es decir,
se camia progresivamente el estado del sistema, hasta alcanzar la
solución del problema.
Declarativos
En este paradigma, más que el ¿cómo? Desarrollar paso a paso un
proceso, nos interesa el ¿Qué? deseamos obtener a través del
programa. Quizás el lenguaje declarativo que nos sea mas familiar es el
SQL, el cual es utilizado para interactuar con la información de bases
de datos, concentrándose solo en los resultados que van a ser
obtenidos, dejándole al traductor la tarea de cómo llegar a ellos y
mostrárnoslo.
Proyecto de Fin de Curso Página 18
3.2. Programación estructurada
3.2.1. Orígenes
La programación estructurada es una técnica para escribir programas.
Hoy en día los requerimientos y las aplicaciones informáticas son
mucho más complejos que las necesidades de programación que se
tenían en los años 1960, por lo que las técnicas de programación
estructurada ya no son suficientes. Ello ha llevado al desarrollo de
nuevas metodologías, tales como la programación orientada a
objetos y el desarrollo de entornos de programación que facilitan la
programación de grandes aplicaciones y sistemas.
La primera programadora de computadora reconocida fue Ada
Lovelace (1815-1852), hija de Anabella Milbanke Byron y el poeta Lord
Byron. A principios del siglo XIX conoció a Charles Babbage, un inventor
inglés y profesor matemático de la universidad de Cambridge, que
diseñó –pero nunca construyó– la máquina analítica para ejecutar
programas de tabulación, por lo que se lo considera como el “padre”
de la computación.
Fue Ada Lovelace quien predijo muchas de las teorías actuales al
traducir y ampliar una descripción de la máquina analítica de Babbage,
uno de los antecedentes más directos de lo que conocemos como
computadora. Como la máquina no llegó nunca a construirse, los
programas de Ada lógicamente tampoco llegaron a ejecutarse, pero sí
suponen un punto de partida de la programación. El trabajo que Ada
realizó le hizo ganarse el título de primera programadora de
Proyecto de Fin de Curso Página 19
computadoras del mundo. El nombre del Lenguaje de programación
Ada, utilizado principalmente en aeronáutica, fue escogido en su
homenaje.
Según la programación estructurada se deben utilizar únicamente tres
estructuras: secuencial, selección e iteración; considerando innecesario
el uso de la instrucción de transferencia incondicional (básicamente, el
GOTO).
3.2.2. Estructuras secuenciales
La estructura secuencial es aquella en la que una instrucción (acción)
sigue a otra secuencia. Las tareas a realizar en cada instrucción se
suceden de tal modo que la salida de una es la entrada de la siguiente
y así sucesivamente hasta el final del proceso.
3.2.3. Estructuras selectivas
Estructura selectiva simple
La estructura repetitiva simple ejecuta una determinada acción o
acciones cuando se cumple una determinada condición, es decir,
tenemos la opción de realizar una actividad o varias si la condición es
verdadera o si es falsa no se realiza ninguna actividad.
Estructura selectiva doble
La estructura selectiva doble permite elegir entro dos opciones o
alternativas, en función del cumplimiento de una determinada
condición, de tal forma que, si se cumple, se ejecutan las acciones del
Proyecto de Fin de Curso Página 20
primer bloque; si no se cumple, se ejecutan las acciones del segundo
bloque.
Estructura selectiva múltiple
Se utiliza porque con frecuencia en a practica se presentan mas de
dos elecciones posibles de una cierta condición. La estructura
selectiva múltiple evaluará una expresión que podrá tomar ‘n’ valores
distintos; según se elija uno de estos valores en la condición, se
realizará una de las ‘n’ acciones, o lo que es igual, el flujo del
algoritmo seguirá un determinado camino entre los ‘n’ posibles.
3.2.4. Estructuras repetitivas
Las computadoras están diseñadas para aquellas aplicaciones en las
cuales una operación o conjunto de ellas deben repetirse muchas
veces. Un tipo muy importante de estructura es el algoritmo
necesario para repetir una o varias acciones por un número
determinado de veces, a está estructura se la llama Estructura
Repetitiva.
Las estructuras repetitivas se utilizan cuando se desea que una
instrucción o bloque de instrucciones se repita un número
determinado de veces o hasta que una condición de terminación se
cumpla. Las estructuras que repiten una secuencia de instrucciones
un número determinado de veces se denominan bucles, y se llama
iteración al hecho de repetir la ejecución de una secuencia de
acciones. Iterar es repetir una vez el bucle.
Proyecto de Fin de Curso Página 21
3.3. El lenguaje C y C++
La historia de C, y su versión ampliada, C++, la explicaremos más
detenidamente, justo porque son los lenguajes de programación que
nosotros utilizamos para el sistema de ventas, además de su enorme
importancia hoy en día en todos los ámbitos de la computación. C
evolucionó a partir de dos lenguajes previos, BCPL y B. BCPL fue
desarrollado en 1967 por Martin Richards, como un lenguaje para
escribir software y compiladores de sistemas operativos. En el
lenguaje B, muchas características de BCPL fueron modeladas y se
utilizó para crear versiones iniciales de lo que se llegó a denominar
UNIX. Ambos lenguajes, BCPL y B eran lenguajes “sin tipo”. Cada
elemento de datos ocupaba una palabra en memoria y quedaba a
cargo del programador el tratar un elemento de datos como si se
tratara de un número entero o de un número real. El lenguaje C fue
derivado de B por Dennis Ritchie de los Laboratorios Bell,
implantándose por primera vez en 1972. C al inicio se popularizó
como lenguaje de desarrollo del sistema operativo UNIX. Hoy día,
virtualmente todos los sistemas están escritos en C y/o C++. C,
independiente del hardware, se ha hecho disponible para la mayor
parte de las computadoras a lo largo de las últimas décadas. Es
posible incluso escribir programas en C que sean portátiles hacia la
mayor parte de las computadoras. Hacia finales de los 70, C había
evolucionado a lo que hoy se conoce como C “tradicional”. La
expansión rápida de C sobre varios tipos de computadoras trajo
consigo muchas variantes. Estas eran similares, pero no siempre
Proyecto de Fin de Curso Página 22
compatibles. Esto provocaba un problema para los programadores,
que necesitaban escribir códigos que pudieran funcionar con distintas
máquinas. Así se vieron ante la necesidad de una versión estándar de
C, que se aprobó en 1989. El documento se conoce como ANSI / ISO
9899: 1990. Más tarde, apareció C++, una mejoría sobre muchas de
las características de C, y que proporciona capacidades de
programación orientada a objetos que promete mucho para
incrementar la productividad, calidad y reutilización del software. Los
diseñadores de C y los responsables de sus primeras puestas en
práctica nunca anticiparon que este lenguaje resultaría en un
fenómeno como éste. Cuando un lenguaje de programación se torna
tan arraigado como C, nuevas necesidades demandan que el lenguaje
evolucione, en lugar de que sólo sea remplazado por un nuevo
lenguaje, como ya había ocurrido con muchos otros lenguajes, tal y
como comentamos antes. C++ fue desarrollado por Bjarne Stroustrup
en los Laboratorios Bell y originalmente fue llamado C “con clases”. El
nombre C++ incluye el operador de incremento (++) de C, para indicar
que C++ es una versión mejorada de C. C++ es un conjunto de C, por
lo que, para compilar los programas existentes de C, los
programadores pueden utilizar un compilador C++ y posteriormente
modificar estos programas a C++. A mediados de los años noventa, la
mayor parte de los entornos de programación C se convirtieron a C++.
Proyecto de Fin de Curso Página 23
3.4. Base de datos
Una base de datos (cuya abreviatura es BD) es una entidad en la cual se
pueden almacenar datos de manera estructurada, con la menor
redundancia posible. Diferentes programas y diferentes usuarios
deben poder utilizar estos datos. Por lo tanto, el concepto de base de
datos generalmente está relacionado con el de red ya que se debe
poder compartir esta información. De allí el término base. "Sistema de
información" es el término general utilizado para la estructura global
que incluye todos los mecanismos para compartir datos que se han
instalado.
Los sistemas de base de datos se diseñan para manejar grandes
cantidades de información, la manipulación de los datos involucra
tanto la definición de las estructuras para el almacenamiento de la
información como la provisión de mecanismos para la manipulación de
la información, además un sistema de base de datos debe de tener
implementados mecanismos de seguridad que garanticen la seguridad
de la información, a pesar de las caídas de sistema o intentos de acceso
no autorizado.
Un objetivo principal de un sistema de base de datos es proporcionar a
los usuarios finales una visión abstracta de los datos, esto se logra
escondiendo ciertos detalles de como se almacena y mantienen los
datos.
Proyecto de Fin de Curso Página 24
Gráfico 4. Base de Datos
3.4.1. Modelos de Base de Datos
Bajo la estructura de la base de datos se encuentra el modelo de datos:
una colección de herramientas conceptuales para describir los datos,
las relaciones, la semántica y las restricciones de consistencia. Para
ilustrar el concepto de un modelo de datos, describimos dos modelos
de datos en este apartado: el modelo entidad-relación y el modelo
relacional. Los diferentes modelos de datos que se han propuesto se
clasifican en tres grupos diferentes: modelos lógicos basados en
objetos, modelos lógicos basados en registros y modelos físicos.
3.4.1.1. Modelo entidad-relación
El modelo de datos entidad-relación (E-R) está basado en una
percepción del mundo real que consta de una colección de objetos
básicos, llamados entidades, y de relaciones entre estos objetos. Una
entidad es una «cosa» u «objeto» en el mundo real que es distinguible
Proyecto de Fin de Curso Página 25
de otros objetos. Por ejemplo, cada persona es una entidad, y las
cuentas bancarias pueden ser consideradas entidades. Las entidades se
describen en una base de datos mediante un conjunto de atributos.
Por ejemplo, los atributos número-cuenta y saldo describen una
cuenta particular de un banco y pueden ser atributos del conjunto de
entidades cuenta. Análogamente, los atributos nombre-cliente, calle-
cliente y ciudad-cliente pueden describir una entidad cliente. Un
atributo extra, id-cliente, se usa para identificar unívocamente a los
clientes (dado que puede ser posible que haya dos clientes con el
mismo nombre, dirección y ciudad. Se debe asignar un identificador
único de cliente a cada cliente. En los Estados Unidos, muchas
empresas utilizan el número de la seguridad social de una persona (un
número único que el Gobierno de los Estados Unidos asigna a cada
persona en los Estados Unidos) como identificador de cliente.
Una relación es una asociación entre varias entidades. Por ejemplo,
una relación impositor asocia un cliente con cada cuenta que tiene. El
conjunto de todas las entidades del mismo tipo, y el conjunto de todas
las relaciones del mismo tipo, se denominan respectivamente conjunto
de entidades y conjunto de relaciones. La estructura lógica general de
una base de datos se puede expresar gráficamente mediante un
diagrama ER, que consta de los siguientes componentes:
• Rectángulos, que representan conjuntos de entidades.
• Elipses, que representan atributos.
Proyecto de Fin de Curso Página 26
• Rombos, que representan relaciones entre conjuntos de
entidades.
• Líneas, que unen los atributos con los conjuntos de entidades y
los conjuntos de entidades con las relaciones.
Cada componente se etiqueta con la entidad o relación que
representa. Además de entidades y relaciones, el modelo E-R
representa ciertas restricciones que los contenidos de la base de datos
deben cumplir. Una restricción importante es la correspondencia de
cardinalidades, que expresa el número de entidades con las que otra
entidad se puede asociar a través de un conjunto de relaciones. Por
ejemplo, si cada cuenta puede pertenecer sólo a un cliente, el modelo
puede expresar esta restricción.
3.4.1.2. Modelo Relacional
En el modelo relacional se utiliza un grupo de tablas para representar
los datos y las relaciones entre ellos. Cada tabla está compuesta por
varias columnas, y cada columna tiene un nombre único. El modelo
relacional es un ejemplo de un modelo basado en registros. Los
modelos basados en registros se denominan así porque la base de
datos se estructura en registros de formato fijo de varios tipos. Cada
tabla contiene registros de un tipo particular. Cada tipo de registro
define un número fijo de campos, o atributos.
Las columnas de la tabla corresponden a los atributos del tipo de
registro.
Proyecto de Fin de Curso Página 27
No es difícil ver cómo se pueden almacenar las tablas en archivos. Por
ejemplo, un carácter especial (como una coma) se puede usar para
delimitar los diferentes atributos de un registro, y otro carácter
especial (como un carácter de nueva línea) se puede usar para
delimitar registros. El modelo relacional oculta tales detalles de
implementación de bajo nivel a los desarrolladores de bases de datos y
usuarios.
El modelo de datos relacional es el modelo de datos más ampliamente
usado, y una amplia mayoría de sistemas de bases de datos actuales se
basan en el modelo relacional.
El modelo relacional se encuentra a un nivel de abstracción inferior al
modelo de datos E-R. Los diseños de bases de datos a menudo se
realizan en el modelo E-R, y después se traducen al modelo relacional.
3.1.4.3. Otros modelos de Base de Datos
El modelo de datos orientado a objetos es otro modelo de datos que
está recibiendo una atención creciente. El modelo orientado a objetos
se puede observar como una extensión del modelo E-R con las
nociones de encapsulación, métodos (funciones) e identidad de objeto.
El modelo de datos relacional orientado a objetos combina las
características del modelo de datos orientado a objetos y el modelo de
datos relacional.
Proyecto de Fin de Curso Página 28
Los modelos de datos semi-estructurados permiten la especificación de
datos donde los elementos de datos individuales del mismo tipo
pueden tener diferentes conjuntos de atributos. Esto es diferente de
los modelos de datos mencionados anteriormente, en los que cada
elemento de datos de un tipo particular debe tener el mismo conjunto
de atributos. El lenguaje de marcas extensible (XML, eXtensible
Markup Language) se usa ampliamente para representar datos
semiestructurados.
Históricamente, otros dos modelos de datos, el modelo de datos de
red y el modelo de datos jerárquico, precedieron al modelo de datos
relacional. Estos modelos estuvieron ligados fuertemente a la
implementación subyacente y complicaban la tarea del modelado de
datos. Como resultado se usan muy poco actualmente, excepto en el
código de bases de datos antiguo que aún está en servicio en algunos
lugares.
3.5. Ventajas del uso de Base de Datos
La utilización de bases de datos como plataforma para el desarrollo de
sistemas de Aplicación en las Organizaciones se ha incrementado
notablemente en los últimos años, se debe a las ventajas que ofrece su
utilización, algunas de ellas son:
Globalización de la información: permite a los diferentes
usuarios considerar la información como un recurso corporativo que
carece de dueños específicos.
Proyecto de Fin de Curso Página 29
Eliminación de la información inconsistente: si existen dos o más
archivos con la misma información, los cambios que se hagan a estos
deberán hacerse a todas las copias del archivo.
Permite compartir información.
Permite mantener la integridad en la información: esta es una de
sus cualidades altamente deseables y tiene por objetivo que solo se
almacena la información correcta.
Independencia de datos: es quizá el que más ha ayudado a la
proliferación del desarrollo de Sistemas de Bases de Datos. La
independencia de datos implica un divorcio entre programas y datos.
3.5.1. Administrador de una Base de Datos
El administrador de la base de datos (DBA) es la persona que está
encargada del control general del sistema de base de datos. Entre sus
muchas funciones están:
• Decidir el contenido de la información en la base de datos: debe
identificar las entidades y la información importante. Tiene que realizar
el esquema conceptual, a este proceso se le denomina diseño lógico. A
partir de un estudio de las necesidades de la empresa, obtiene items,
atributos y relaciones entre items. El esquema conceptual se escribe
utilizando el DDL.
• Decidir la estructura de almacenamiento y la estrategia de acceso:
decide cómo se almacenan los datos y define su representación
interna. A esta fase se le denomina diseño físico de la base de datos.
También tiene que decidir la correspondencia conceptual/interna.
Proyecto de Fin de Curso Página 30
• Conexión con los usuarios: debe diseñar los esquemas externos y las
correspondencias externa/conceptual que sean necesarias, tanto para
usuarios terminales como para programadores de aplicaciones.
• Definir aspectos de seguridad e integridad: control de acceso e
integridad de la información.
• Definir procedimientos de copias de respaldo (backups) y
recuperación: se suelen tener copias de seguridad de la base de datos
de manera que si se produce alguna pérdida importante de
información se pueda recuperar el sistema a partir de la última copia.
• Control de transacciones (unidades de programa cuya ejecución debe
ser atómica).
• Optimización del rendimiento de la base de datos: es responsable de
que la base de datos funcione de la mejor forma posible, realizando
para ello los ajustes que vayan siendo necesarios.
Para realizar todas estas funciones, el DBA dispone de una serie de
herramientas software y estructuras de información acerca de la base
(ej.: diccionario de datos, procedimientos estadísticos de medida de
rendimiento,...).
3.5.2. Usuarios de una Base de Datos
Son usuarios no sofisticados que interactúan con el sistema mediante
la invocación de alguno de los programas de aplicación permanentes
que se ha escrito previamente. Por ejemplo, un cajero bancario que
Proyecto de Fin de Curso Página 31
necesita transferir S/. 50 de la cuenta A a la cuenta B invoca un
programa llamado transferir. Este programa pide al cajero el importe
de dinero a transferir, la cuenta de la que el dinero va a ser transferido
y la cuenta a la que el dinero va a ser transferido.
Como otro ejemplo, considérese un usuario que desee encontrar su
saldo de cuenta en World Wide Web. Tal usuario podría acceder a un
formulario en el que introduce su número de cuenta. Un programa de
aplicación en el servidor Web recupera entonces el saldo de la cuenta,
usando el número de cuenta proporcionado, y pasa la información al
usuario.
La interfaz de usuario normal para los usuarios normales es una
interfaz de formularios, donde el usuario puede rellenar los campos
apropiados del formulario. Los usuarios normales pueden también
simplemente leer informes generados de la base de datos.
Proyecto de Fin de Curso Página 32
PROYECTO DE FIN DE CURSO
4.1. DESCRIPCIÓN
El laboratorio académico de la FIIS cuenta con seis aulas y un número
variables de PCs en cada una. Se desea desarrollar un sistema informático
para el manejo de turnos. El laboratorio funcionan de 08:00 a 22:00 horas;
las PCs de cada aula esta numeradas de 0 en adelante, cada curso tiene
asignada un aula y solo los estudiantes inscritos pueden practicar en ellas, en
el momento de reservar un turno, el sistema debe de verificar con el carnet
del estudiante sea parte de un curso valido. El estudiante debe pedir turno el
mismo día que se desea trabajar. Las operaciones a tener en cuenta son:
- Reservar un turno para un alumno.
- Cancelar una reserva de un turno de un alumno: dado el
carnet de alumno y la hora de turno, el sistema anula el
mencionado turno.
- Consultar turno a una hora determinada: dado el carnet
del alumno y el turno, el sistema informa el aula, número
de la Pc y el turno que el alumno tiene.
- Persistencia.
Estadísticas
- Informar sobre las horas punta, días punta y mes punta().
- Horas de uso por cada alumno.
- Horas de uso por curso.
- Influye en el aprovechamiento el mayor uso del
laboratorio.
Proyecto de Fin de Curso Página 33
Para el desarrollo del sistema se planteara el diseño n° 2 el cual modela la
información importante del problema:
Diseño 2:
struct TURNO{
int hora; //hora de turno
int aula; //Aula en el cual tiene asignado el turno
int nPcs; //Número de PC que tiene asigana
TURNO*sgte; // Apuntador al nodo(turno) siguiente
};
struct CURSO{
int codCurso; // Código del curso
int nAula; // Sala asignada al curso
CURSO*sgte; // Apuntador al nodo(curso) siguiente
};
struct NODO{
int codAlu; //Carnet del estudiante
CURSO*scurso; //Listas de curso del alumno
TURNO*sturno; //Lista de turnos reservados por el alumno
NODO*sgte; //Siguiente nodo(alumno) en la lista
};
Proyecto de Fin de Curso Página 34
4.2. MODELO RELACIONAL DEL SISTEMA
Proyecto de Fin de Curso Página 35
PANTALLAS PRINCIPAL
MENU DE OPCIONES
RESERVA TURNO
Proyecto de Fin de Curso Página 36
CANCELAR TURNO
CONSULTAR TURNO
Proyecto de Fin de Curso Página 37
CODIGO FUENTE
/*
*nomprog:PROYECTO
*descripcion:Proyecto para la 4ta y 5ta PC
*autores: DIAZ HERNANDEZ, JoseEduardo, ROQUE RUIZ, Johana Lizeth
*fecha:13/06/13
*/
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iomanip>
#include <math.h>
#define max 6
#define line1 "\t\t----"
#define line2 "=========================================="
using namespace std;
struct ALUMNO{
int cod;
int curso[max];
int sec[max];
}
Proyecto de Fin de Curso Página 38
struct TURNAR{
int cod;
int hora;
int aula;
int nPcs;
};
struct TURNO{
int hora;
int aula;
int nPcs;
TURNO*sgte;
};
struct CURSO{
int codCurso;
int nAula;
CURSO*sgte;
};
struct NODO{
int codAlu;
CURSO*scurso;
TURNO*sturno;
Proyecto de Fin de Curso Página 39
NODO*sgte;
};
int usuario();
int reservaTurno(NODO*nodi);
int cancelaTurno(NODO*nodi);
int consultaTurno(NODO*nodi);
int menu();
void crearListaTurno(TURNO**turni);
void crearListaCurso(CURSO**cursi);
void crearListaNODO(NODO**nodi);
void insertaNodoIni(NODO**nodi,CURSO**cursi,TURNO**turni);
void mostrarNodoIni(NODO*nodi);
int main()
{
int op;
int r;
//usuario();
do{
NODO*nod;
Proyecto de Fin de Curso Página 40
TURNO*turn;
CURSO*curs;
crearListaTurno(&turn);
crearListaCurso(&curs);
crearListaNODO(&nod);
insertaNodoIni(&nod,&curs,&turn);
//mostrarNodoIni(nod);
op=menu();
switch(op){
case 1: {r=reservaTurno(nod); break;}
case 2: {r=cancelaTurno(nod); break;}
case 3: {r=consultaTurno(nod); break;}
case 4: {exit(0); break;}
}
}while (r==1);
return(0);
}
void crearListaTurno(TURNO**turni){
*turni=NULL;
}
void crearListaCurso(CURSO**cursi){
*cursi=NULL;
}
void crearListaNODO(NODO**nodi){
Proyecto de Fin de Curso Página 41
*nodi=NULL;
}
void insertaNodoIni(NODO**nodi,CURSO**cursi,TURNO**turni){
system("cls");
//Busca el codigo del alumno en el archivo alumnos.txt
FILE *F;
FILE *G;
ALUMNO a;
TURNAR b;
F=fopen("alumnos.txt","a+");
//chequea si ha habido exito en la apertura
if(F==NULL){
printf("No se puede crear file . . .\n");
system("pause");
exit(0);
}
//leer el archivo alumno
fread(&a,sizeof(ALUMNO),1,F);
while(!feof(F)){
NODO*p;
CURSO*q=NULL;
TURNO*r=NULL;
//TURNO*r;
int codal,codcur,nau,hor,ausep,npc,enc=1,i;
Proyecto de Fin de Curso Página 42
p=(NODO*)malloc(sizeof(NODO));
p->codAlu=a.cod;
//----------------------------------------------------------
//q=(CURSO*)malloc(sizeof(CURSO));
for(i=0;i<max;i++){
if(a.curso[i]!=0){
CURSO*m=NULL;
m=(CURSO*)malloc(sizeof(CURSO));
m->codCurso=a.curso[i];
m->nAula=a.sec[i];
m->sgte=q;
q=m;
}
}
G=fopen("turno.txt","a+");
//chequea si ha habido exito en la apertura
if(G==NULL){
printf("No se puede crear file . . .\n");
system("pause");
exit(0);
}
fread(&b,sizeof(TURNAR),1,G);
while(!feof(G)){
if(a.cod==b.cod){
Proyecto de Fin de Curso Página 43
TURNO*n=NULL;
n=(TURNO*)malloc(sizeof(TURNO));
n->aula=b.aula;
n->hora=b.hora;
n->nPcs=b.nPcs;
n->sgte=r;
r=n;
}
fread(&b,sizeof(TURNAR),1,G);
}
//----------------------------------------------------------
/*
r=(TURNO*)malloc(sizeof(TURNO));
cout<<"Ingrese hora de separacion: ";
cin>>hor;
r->hora=hor;
cout<<"Ingrese aula de sep: ";
cin>>ausep;
r->aula=ausep;
cout<<"Ingrese numero de Pc: ";
cin>>npc;
r->nPcs=npc;
*/
Proyecto de Fin de Curso Página 44
if(*nodi==NULL){ //SI LA LISTA ESTA VACIA...
p->sgte=*nodi;
*nodi=p;
//q->sgte=*cursi;
*cursi=q;
p->scurso=*cursi;
//r->sgte=*turni;
*turni=r;
p->sturno=*turni;
}
else{
p->sgte=*nodi;
*nodi=p;
//q->sgte=*cursi;
*cursi=q;
p->scurso=*cursi;
//r->sgte=*turni;
*turni=r;
p->sturno=*turni;
}
fread(&a,sizeof(ALUMNO),1,F);
}
fclose(F);
}
Proyecto de Fin de Curso Página 45
void mostrarNodoIni(NODO*nodi){
system("cls");
NODO*p=nodi;
while(p){
CURSO*q=p->scurso;
TURNO*r=p->sturno;
cout<<p->codAlu<<"->";
while(q){
cout<<q->codCurso<<", ";
cout<<q->nAula<<"->";
q=q->sgte;
}
cout<<"\n";
cout<<" ->";
while(r){
cout<<r->hora<<", ";
cout<<r->aula<<", ";
cout<<r->nPcs<<"->";
r=r->sgte;
}
p=p->sgte;
Proyecto de Fin de Curso Página 46
cout<<"\n";
}
cout<<"\n";
system("pause");
}
int reservaTurno(NODO*nodi){
system("cls");
system("color 8b");
FILE *F;
TURNAR a;
int z;
//abre un archivo de texto llamado alumnos
F=fopen("turno.txt","a");
//cheque si ha habido exito en la apertura
if(F==NULL){
printf("No se puede crear file . . .\n");
system("pause");
exit(0);
}
NODO*p=nodi;
int cod;
int enc1=0,enc2=0;
int codCurso;
Proyecto de Fin de Curso Página 47
int naula;
int hora;
int npc;
cout<<"Ingrese el codigo del ALUMNO: ";
cin>> cod;
while(p){
if(cod==p->codAlu){
CURSO*r=p->scurso;
cout<<"CURSOS: "<<r->codCurso;
r=r->sgte;
while(r){
cout<<", "<<r->codCurso;
r=r->sgte;
}
cout<<"\nIngrese Codigo del Curso: ";
cin>>codCurso;
CURSO*q=p->scurso;
while(q){
if(codCurso==q->codCurso){
cout<<"Ingrese HORA: ";
do{
cin>>hora;
Proyecto de Fin de Curso Página 48
}while(hora<8 || hora>21);
cout<<"Ingrese NUMERO DE PC: ";
do{
cin>>npc;
}while(npc<0);
enc2=1;
a.cod=cod;
a.aula=q->nAula;
a.hora=hora;
a.nPcs=npc;
fwrite(&a,sizeof(TURNAR),1,F);
fclose(F);
}
q=q->sgte;
}
if(enc2==0){
system("cls");
cout<<"El alumno NO LLEVA EL CURSO\n\n";
}
enc1=1;
}
p=p->sgte;
}
if(enc1==0){
Proyecto de Fin de Curso Página 49
system("cls");
cout<<"ALUMNO NO ENCONTRADO\n\n";
}
cout<< "DESEA REALIZAR OTRA OPERACION???...(SI = 1 / NO = 0): ";
do{
cin>>z;
}while(z!=1 && z!=0);
return(z);
}
int cancelaTurno(NODO*nodi){
FILE *F;
FILE *G;
TURNAR a;
TURNAR aux;
int z;
system("cls");
system("color 8b");
NODO*p=nodi;
//abre un archivo de texto llamado alumnos
G=fopen("turno.txt","a");
Proyecto de Fin de Curso Página 50
//cheque si ha habido exito en la apertura
if(G==NULL){
printf("No se puede crear file . . .\n");
system("pause");
exit(0);
}
//abre un archivo de texto llamado alumnos
F=fopen("temporal.txt","a");
//cheque si ha habido exito en la apertura
if(F==NULL){
printf("No se puede crear file . . .\n");
system("pause");
exit(0);
}
int cod,enc1=0,aula,hora,w,v;
cout<<"Ingrese Codigo del Alumno: ";
cin>>cod;
while(p){
if(cod==p->codAlu){
system("cls");
TURNO*q=p->sturno;
Proyecto de Fin de Curso Página 51
TURNO*q2=p->sturno;
cout<<"ELIMINAR TURNO\n";
cout<<"--------------\n\n";
cout<<"=================================================\n";
cout<<" CODIGO: "<<cod<<"\n";
cout<<"=================================================\n";
cout<<" AULA HORA N.PC\n";
cout<<"=================================================\n";
while(q){
cout<<" "<<q->aula<<" "<<q->hora<<" "<<q->nPcs<<"\n";
q=q->sgte;
}
cout<<"=================================================\n";
cout<< "Ingrese AULA: "; cin>> aula;
cout<< "Ingrese HORA: "; cin>> hora;
while(q2){
if(q2->aula!=aula && q2->hora!=hora){
aux.cod=cod;
aux.aula=q2->aula;
aux.hora=q2->hora;
aux.nPcs=q2->nPcs;
fwrite(&aux,sizeof(TURNAR),1,F);
Proyecto de Fin de Curso Página 52
}
q2=q2->sgte;
}
enc1=1;
}
else{
TURNO*q3=p->sturno;
while(q3){
aux.cod=p->codAlu;
aux.aula=q3->aula;
aux.hora=q3->hora;
aux.nPcs=q3->nPcs;
fwrite(&aux,sizeof(TURNAR),1,F);
q3=q3->sgte;
}
}
p=p->sgte;
}
if(enc1==1){
fclose(G);
fclose(F);
w=remove("turno.txt");
v=rename("temporal.txt","turno.txt");
cout<<w<<" "<<v<<"\n";
Proyecto de Fin de Curso Página 53
cout<<" TURNO ELIMINADO\n";
cout<< "DESEA REALIZAR OTRA OPERACION???...(SI = 1 / NO = 0): ";
do{
cin>>z;
}while(z!=1 && z!=0);
return(z);
}
cout<<"ALUMNO NO ENCONTRADO...!!!\n\n";
fclose(G);
fclose(F);
cout<< "DESEA REALIZAR OTRA OPERACION???...(SI = 1 / NO = 0): ";
do{
cin>>z;
}while(z!=1 && z!=0);
return(z);
}
int consultaTurno(NODO*nodi){
system("cls");
system("color 0b");
NODO*p=nodi;
int cod,enc1=0,z;
Proyecto de Fin de Curso Página 54
cout<<"Ingrese Codigo del Alumno: ";
cin>>cod;
while(p){
if(cod==p->codAlu){
system("cls");
TURNO*q=p->sturno;
cout<<"CONSULTA TURNO\n";
cout<<"--------------\n\n";
cout<<"=================================================\n";
cout<<" CODIGO: "<<cod<<"\n";
cout<<"=================================================\n";
cout<<" AULA HORA N.PC\n";
cout<<"=================================================\n";
while(q){
cout<<" "<<q->aula<<" "<<q->hora<<" "<<q->nPcs<<"\n";
q=q->sgte;
}
cout<<"=================================================\n\n";
enc1=1;
}
p=p->sgte;
}
if(enc1==1){
Proyecto de Fin de Curso Página 55
cout<< "DESEA REALIZAR OTRA OPERACION???...(SI = 1 / NO = 0): ";
do{
cin>>z;
}while(z!=1 && z!=0);
return(z);
}
cout<<"ALUMNO NO ENCONTRADO...!!!\n\n";
cout<< "DESEA REALIZAR OTRA OPERACION???...(SI = 1 / NO = 0): ";
do{
cin>>z;
}while(z!=1 && z!=0);
return(z);
}
int menu(){
system("cls");
char menuOpc[]="M E N U D E O P C I O N E S";
char lin[]="--------------------------------------------------------------------------------";
int opc;
printf("\n\n%s\n\t\t%37s\n%s\n\n",lin,menuOpc,lin);
printf(" \t\t\t1. RESERVAR TURNO\n");
printf(" \t\t\t2. CANCELAR TURNO\n");
printf(" \t\t\t3. CONSULTAR TURNO\n");
printf(" \t\t\t4. SALIR\n");
Proyecto de Fin de Curso Página 56
printf("\n\n");
printf(" \t\t\t\t\t\tDigite su opcion : ");
scanf("%d",&opc);
while(!(0<=opc&&opc<=4)){
printf(" \t\t\t\tRango<0,4>\tDigite su opcion : ");
scanf("%d",&opc);
}
return(opc);
}
int usuario(){
int usu,pass;
cout<<"\n\n";
cout<<"\t\t\tLOGIN\n";
cout<<"\t\t\t-----\n\n";
cout<<"=======================================================\n";
cout<<"\tCODIGO: ";cin>> usu;
cout<<"\tCLAVE: ";cin>>pass;
system("pause");
}
Proyecto de Fin de Curso Página 57
Información básica del equipo
Sistema operativo: Windows 7 Home Basic
Fabricante: Samsung Eletronics
Procesador: Intel(R) Core(TM)i5-2410M CPU
Memoria instalada (RAM): 4.00 GB
Tipo de sistema: Sistema operativo de 64bits
Nombre del equipo: JOHANA-PC
Compilador: Codeblocks 12.11
Proyecto de Fin de Curso Página 58
CONCLUSIONES
Al concluir el proyecto sobre un sistema informático para el manejo de
turnos hemos apreciado la gran utilidad de la programación estructurada en
problemas reales y la relevancia que tiene en la optimización de procesos de
cualquier tipo.
Para esto, debemos tener un dominio de la programación estructurada lo
que a su vez implica tener alto sentido de pensamiento lógico y abstracto,
ya que este nos permite manejar adecuadamente los temas de algoritmos,
hay que declarar en forma correcta, secuenciar, relacionar y modelar
sistemas mediante el uso de un sistema gestor de base de datos.
Así mismo, el mantener un orden adecuado a la hora de programar nos
ayuda enormemente a evitar confusiones y en caso se diera el error
encontrarlo más fácilmente y así evitar una pérdida de tiempo innecesaria.
Finalmente, podemos afirmar categóricamente que gracias a la programación
podemos dar soluciones a problemas que se presentan en la realidad y con
esto ayudar a la sociedad.
Proyecto de Fin de Curso Página 59
BIBLIOGRAFIA
- JOYANES AGUILAR, Luis, ZAHONERO MARTÍNEZ, Ignacio - segunda
edición 2005 PROGRAMACION EN C: Metodología, algoritmos y
estructura de datos. Mc Graw Hill, Madrid, 719p.
- García-Bermejo Giner, José Rafael (2 de 2008) (en español).
Programación estructurada en C (1 edición). Pearson Prentice Hall.
- Valls Ferrán, José María; Camacho Fernández, David (9 de 2004) (en
español). Programación estructurada y algoritmos en Pascal (1
edición). Pearson Alhambra.
McGraw-Hill, Madrid, 895p.
Proyecto de Fin de Curso Página 60