informe proyecto final lpe

78
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

Upload: milagrosguzve

Post on 19-Jan-2016

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informe Proyecto Final Lpe

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

Page 2: Informe Proyecto Final Lpe

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

Page 3: Informe Proyecto Final Lpe

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

Page 4: Informe Proyecto Final Lpe

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

Page 5: Informe Proyecto Final Lpe

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

Page 6: Informe Proyecto Final Lpe

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

Page 7: Informe Proyecto Final Lpe

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

Page 8: Informe Proyecto Final Lpe

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

Page 9: Informe Proyecto Final Lpe

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

Page 10: Informe Proyecto Final Lpe

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

Page 11: Informe Proyecto Final Lpe

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

Page 12: Informe Proyecto Final Lpe

• 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

Page 13: Informe Proyecto Final Lpe

Gráfico 2. Evolución de los Lenguajes Imperativos y Orientados a Objetos

Proyecto de Fin de Curso Página 13

Page 14: Informe Proyecto Final Lpe

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

Page 15: Informe Proyecto Final Lpe

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

Page 16: Informe Proyecto Final Lpe

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

Page 17: Informe Proyecto Final Lpe

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

Page 18: Informe Proyecto Final Lpe

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

Page 19: Informe Proyecto Final Lpe

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

Page 20: Informe Proyecto Final Lpe

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

Page 21: Informe Proyecto Final Lpe

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

Page 22: Informe Proyecto Final Lpe

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

Page 23: Informe Proyecto Final Lpe

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

Page 24: Informe Proyecto Final Lpe

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

Page 25: Informe Proyecto Final Lpe

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

Page 26: Informe Proyecto Final Lpe

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

Page 27: Informe Proyecto Final Lpe

• 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

Page 28: Informe Proyecto Final Lpe

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

Page 29: Informe Proyecto Final Lpe

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

Page 30: Informe Proyecto Final Lpe

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

Page 31: Informe Proyecto Final Lpe

• 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

Page 32: Informe Proyecto Final Lpe

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

Page 33: Informe Proyecto Final Lpe

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

Page 34: Informe Proyecto Final Lpe

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

Page 35: Informe Proyecto Final Lpe

4.2. MODELO RELACIONAL DEL SISTEMA

Proyecto de Fin de Curso Página 35

Page 36: Informe Proyecto Final Lpe

PANTALLAS PRINCIPAL

MENU DE OPCIONES

RESERVA TURNO

Proyecto de Fin de Curso Página 36

Page 37: Informe Proyecto Final Lpe

CANCELAR TURNO

CONSULTAR TURNO

Proyecto de Fin de Curso Página 37

Page 38: Informe Proyecto Final Lpe

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

Page 39: Informe Proyecto Final Lpe

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

Page 40: Informe Proyecto Final Lpe

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

Page 41: Informe Proyecto Final Lpe

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

Page 42: Informe Proyecto Final Lpe

*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

Page 43: Informe Proyecto Final Lpe

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

Page 44: Informe Proyecto Final Lpe

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

Page 45: Informe Proyecto Final Lpe

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

Page 46: Informe Proyecto Final Lpe

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

Page 47: Informe Proyecto Final Lpe

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

Page 48: Informe Proyecto Final Lpe

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

Page 49: Informe Proyecto Final Lpe

}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

Page 50: Informe Proyecto Final Lpe

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

Page 51: Informe Proyecto Final Lpe

//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

Page 52: Informe Proyecto Final Lpe

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

Page 53: Informe Proyecto Final Lpe

}

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

Page 54: Informe Proyecto Final Lpe

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

Page 55: Informe Proyecto Final Lpe

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

Page 56: Informe Proyecto Final Lpe

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

Page 57: Informe Proyecto Final Lpe

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

Page 58: Informe Proyecto Final Lpe

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

Page 59: Informe Proyecto Final Lpe

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

Page 60: Informe Proyecto Final Lpe

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