15
Diseñar y codificar un programa que permita controlar la venta de boletos de avión según la categoría y el destino de viaje. Deberá pedir la categoría, el número de boletos y el destino como datos de entrada, calculará el costo de los mismos y desplegará la factura y en ella, el monto a cubrir. Las categorías y destinos disponibles serán los siguientes: Categorías: VIP Primera clase Segunda clase Turismo Destinos: New York París Roma Londres Madrid Bruselas Berlín Sidney El usuario necesita ingresar: El destino, eligiendo un numero del 1 al 8, según sea su asignación dentro de una tabla. La categoría, de su vuelo. Puede ser VIP (V), Primera Clase (P), Segunda Clase (S), Turismo(T). Ingresar la cantidad de asientos o boletos que desea adquirir. Ingresar el nombre del comprador del o de los boletos de avión. Espera que el programa devuelva: El nombre del comprador. El destino elegido. La categoría del boleto de avión El numero de asientos o boletos adquiridos. El precio unitario del boleto. El total a pagar. Datos de entrada: variables: int destino,nBoletos; (tipo de dato entero) char categoria, nombre[40],nomDestino[8]; (tipo de dato string o carácter (1)) Datos de salida: float total; (tipo de dato real o float) char clase[14]; (tipo de dato string o carácter (1))

FPR_U3_A3_PEGL

Embed Size (px)

Citation preview

Page 1: FPR_U3_A3_PEGL

Diseñar y codificar un programa que permita controlar la venta de boletos de avión según la categoría y el destino de viaje. Deberá pedir la categoría, el número de boletos y el destino como datos de entrada, calculará el costo de los mismos y desplegará la factura y en ella, el monto a cubrir. Las categorías y destinos disponibles serán los siguientes:

Categorías:

VIPPrimera claseSegunda claseTurismo

Destinos:

New YorkParísRomaLondresMadridBruselasBerlínSidney

El usuario necesita ingresar:El destino, eligiendo un numero del 1 al 8, según sea su asignación dentro de una tabla.La categoría, de su vuelo. Puede ser VIP (V), Primera Clase (P), Segunda Clase (S), Turismo(T).Ingresar la cantidad de asientos o boletos que desea adquirir.Ingresar el nombre del comprador del o de los boletos de avión.Espera que el programa devuelva:El nombre del comprador.El destino elegido.La categoría del boleto de aviónEl numero de asientos o boletos adquiridos.El precio unitario del boleto.El total a pagar.

Datos de entrada:variables: int destino,nBoletos; (tipo de dato entero)char categoria, nombre[40],nomDestino[8]; (tipo de dato string o carácter (1))Datos de salida:float total; (tipo de dato real o float)char clase[14]; (tipo de dato string o carácter (1))

Metodología a seguir y descripción, para la programación del planteamiento del problema.

Documentar el programa con comentarios, el nombre, la descripción, el programador, la fecha de creación y ultima fecha de modificación del programa. Además de los comentarios entre líneas de las instrucciones mas significativas de cada bloque de instrucciones.

Definir las directivas de preprocesador que son:

Page 2: FPR_U3_A3_PEGL

#include<stdio.h>/* Funciones de entrada y salida */#include<stdlib.h>/* Funciones del sistema */#include<string.h>

Definir 7 variables simples; Necesitaremos 3 secuencias y 4 condiciones si.

El usuario visualizara en pantalla un mensaje de bienvenida realizando una pausa en la ejecución del sistema, para continuar con el

proceso de ejecución solo se necesita presionar una tecla para continuar y visualizar una tabla de los destinos y categorías de vuelos; donde se muestra en la intersección del destino con categoría el precio correspondiente al destino elegido y categoría.

El programa solicita al usuario que proporcione el destino ingresando el numero asignado en la tabla a la variable destino, de destinos y categorías. Los números corresponden de la siguiente manera:

1. New York2. París3. Roma4. Londres5. Madrid6. Bruselas7. Berlín8. Sidney

Una vez ingresado el destino, el usuario debe observar la tabla para elegir la categoría y el precio. De esta manera al ingresar la inicial de la categoría que se almacena en la variable categoría, también se asigna el precio del vuelo en el proceso de los datos de entrada.

1. VIP (V)2. Primera clase (P)3. Segunda clase (S)4. Turismo (T)

También se le pide al usuario que ingrese la cantidad de boletos que desea comprar, ingresando el numero y asignándose a nBoletos.

Por ultimo dato de entrada, es el nombre a quien se le factura la venta del (de los) boleto(s), asignándose este a una variable llamada nombre.

Ahora le toca al programa procesar los datos de entrada de la siguiente manera:

En vez de utilizar una condición if, manejaremos las condiciones con un switch en caso de que se cumpla destino se procesa la secuencia de instrucciones correspondientes al numero de destino, si se cumple se asigna a nomDestino el nombre del destino, para posteriormente imprimirlo en la factura; paso siguiente se inicia otro switch en caso de que se cumpla categoría V, P, S o T; se realiza la operación aritmética de nBoletos por el precio de la categoría que cumple la condición; también se le asigna a una variable clase la cadena de caracteres

Page 3: FPR_U3_A3_PEGL

correspondiente a la categoría, para imprimirlos en la factura; datos de salida. Por ultimo en el proceso de los datos, se aplican unos breaks para romper los switch y no continuar evaluando las siguientes instrucciones.

Ya una vez

procesados los datos de entrada, se procede a mostrar los datos de salida, imprimiendo en pantalla el nombre a quien se factura la cantidad de n boletos, el precio unitario del boleto y el total a pagar por el (los) boleto(s).

Pseudocódigo InicioDatos de entrada:variables: int destino,nBoletos; (tipo de dato entero)char categoria, nombre[40],nomDestino[8]; (tipo de dato string o carácter (1))Datos de salida:float total; (tipo de dato real o float)char clase[14]; (tipo de dato string o carácter (1))

escribir "**************Venta de boletos de AvionESAD*************”;escribir | “Num | Destinos | Categorias ”; |escribir | | | “VIP (V) | Primera clase (P) | Segunda Clase (S) | Turismo (T) ”; |escribir | “1 | New York | 1500 | 1300 | 900 | 600”; |escribir | “2 | París | 2300 | 1800 | 1200 | 950”; |escribir | “3 | Roma | 2600 | 1900 | 1300 | 970”; |escribir | “4 | Londres | 2100 | 1700 | 1100 | 850”; |escribir | “5 | Madrid | 2250 | 1850 | 1300 | 1000”; |escribir | “6 | Bruselas | 2270 | 1780 | 1180 | 930”; |escribir | “7 | Berlín | 2400 | 1990 | 1350 | 1050”; |escribir | “8 | Sidney | 2900 | 2450 | 1850 | 1350”; |escribir"Proporcione el destino eligiendo \nel numero que le corresponde en la tabla: ";leer destino;escribir "Proporcione la categoria de destino, V, P, S o T: ";leer categoria;escribir "Proporcione el numero de boletos que desea comprar: ";leer nBoletos;escribir "Proporcione a nombre de quien se factura: ";leer nombre;escribir "Factura a nombre: ",nombre;seleccionar(destino){ case 1: nomDestino="New York";seleccionar(categoria){caso 'V':total=nBoletos*1500;clase="VIP”;break;caso 'P':total=nBoletos*1300;clase="Primera Clase”;break;caso 'S':total=nBoletos*900;clase="Segunda Clase”;break;caso 'T':total=nBoletos*600;clase="Turismo”;break;}break;

caso 2: nomDestino="París";switch(categoria)

Page 4: FPR_U3_A3_PEGL

{caso 'V':total=nBoletos*2300;clase="VIP”;break;caso 'P':total=nBoletos*1800;clase="Primera Clase”;break;caso 'S':total=nBoletos*1200;clase="Segunda Clase”;break;caso 'T':total=nBoletos*950;clase="Turismo”;break;}break;caso 3: nomDestino="Roma";switch(categoria){caso 'V':total=nBoletos*2600;clase="VIP”;break;caso 'P':total=nBoletos*1900;clase="Primera Clase”;break;caso 'S':total=nBoletos*1300;clase="Segunda Clase”;break;caso 'T':total=nBoletos*970;clase="Turismo”;break;}break;caso 4: nomDestino="Londres";switch(categoria){caso 'V':total=nBoletos*2100;clase="VIP”;break;caso 'P':total=nBoletos*1700;clase="Primera Clase”;break;caso 'S':total=nBoletos*1100;clase="Segunda Clase”;break;caso 'T':total=nBoletos*850;clase="Turismo”;break;}break;caso 5: nomDestino="Madrid";seleccionar(categoria){caso 'V':total=nBoletos*2250;clase="VIP”;break;caso 'P':total=nBoletos*1850;clase="Primera Clase”;break;caso 'S':total=nBoletos*1300;clase="Segunda Clase”;break;caso 'T':total=nBoletos*1000;clase="Turismo”;break;}break;caso 6: nomDestino="Bruselas";seleccionar(categoria){caso 'V':total=nBoletos*2270;clase="VIP”;break;caso 'P':total=nBoletos*1780;clase="Primera Clase”;break;caso 'S':total=nBoletos*1180;clase="Segunda

Clase”;break;caso 'T':total=nBoletos*930;clase="Turismo”;break;}break;caso 7: nomDestino="Berlín";seleccionar (categoria){caso 'V':total=nBoletos*2400;clase="VIP”;break;caso 'P':total=nBoletos*1900;clase="Primera Clase”;break;caso 'S':total=nBoletos*1350;clase="Segunda Clase”;break;

Page 5: FPR_U3_A3_PEGL

caso 'T':total=nBoletos*1050;clase="Turismo”;break;}break;caso 8: nomDestino="Sidney";seleccionar (categoria){caso 'V':total=nBoletos*2900;clase="VIP”;break;caso 'P':total=nBoletos*2450;clase="Primera Clase”;break;caso 'S':total=nBoletos*1850;clase="Segunda Clase”;break;caso 'T':total=nBoletos*1350;clase="Turismo”;break;}break;}escribir "Destino a:”, nomDestino;escribir “Categoría : “, clase;escribir “Asientos o boletos: ”,nBoletos;escribir “Precio unitario: “,total/nBoletos;escribir “Total : “, total;Fin

Código en C

/* Fundamentos de Programación

Maestra: María Teresa Hernández Elenes

Programa: Venta de boletos de avión

Programador: Jorge Humberto Córdova Meneses

Descripción: programa que permita controlar la venta de boletos de avión

según la categoría y el destino de viaje

Fecha de creación: Octubre, 2012

Última modificación: Octubre, 2012

*/

/* Directivas del procesador (bibliotecas) */

#include<stdio.h>/* Funciones de entrada y salida */

#include<stdlib.h>/* Funciones del sistema */

#include<string.h>

/* Función Principal */

main( ) {

/*Declaración de variables y constantes */

int destino,nBoletos;

Page 6: FPR_U3_A3_PEGL

float total;

char categoria,clase[14], nombre[40],nomDestino[8];

/*Mensaje de bienvenida*/

fflush(stdin); /* Para limpiar el buffer de teclado */

printf("********************Venta de boletos de AvionESAD*************************\n");

system("pause");/*hará una pausa antes de terminar la ejecución*/

system("cls");/*Limpiara pantalla*/

printf(" ---------------------------------------------------------------------------\n");

printf("| Categorias |\n");

printf("|***************************************************************************|\n");

printf("|Num| Destinos | VIP (V)| Primera Clase (P) | Segunda Clase (S)| Turismo(T)|\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("| 1 |New York | 1500 | 1300 | 900 | 600 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("| 2 |París | 2300 | 1800 | 1200 | 950 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("| 3 |Roma | 2600 | 1900 | 1300 | 970 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("| 4 |Londres | 2100 | 1700 | 1100 | 850 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("| 5 |Madrid | 2250 | 1850 | 1300 | 1000 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("| 6 |Bruselas | 2270 | 1780 | 1180 | 930 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("| 7 |Berlín | 2400 | 1990 | 1350 | 1050 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n");

printf("| 8 |Sidney | 2900 | 2450 | 1850 | 1350 |\n");

printf(" --------------------------------------------------------------------------- \n");

/*Datos de entrada*/

Page 7: FPR_U3_A3_PEGL

printf("Proporcione el destino eligiendo \nel numero que le corresponde en la tabla: ");

scanf("%d",&destino);

printf("Proporcione la categoria de destino, V, P, S o T: ");

scanf("%s",&categoria);

printf("Proporcione el numero de boletos que desea comprar: ");

scanf("%d",&nBoletos);

printf("Proporcione a nombre de quien se factura: ");

scanf("%s",&nombre);

system("cls");/*Limpiara pantalla*/

fflush(stdin); /* Para limpiar el buffer de teclado */

printf("Factura a nombre: %s \n\n",nombre);

switch(destino)

{

case 1:

strcpy(nomDestino,"New York");

switch(categoria)

{

case 'V':total=nBoletos*1500;strcpy(clase,"VIP");break;

case 'P':total=nBoletos*1300;strcpy(clase,"Primera Clase");break;

case 'S':total=nBoletos*900;strcpy(clase,"Segunda Clase");break;

case 'T':total=nBoletos*600;strcpy(clase,"Turismo");break;

}

break;

case 2:

strcpy(nomDestino,"París");

switch(categoria)

{

case 'V':total=nBoletos*2300;strcpy(clase,"VIP");break;

case 'P':total=nBoletos*1800;strcpy(clase,"Primera Clase");break;

case 'S':total=nBoletos*1200;strcpy(clase,"Segunda Clase");break;

Page 8: FPR_U3_A3_PEGL

case 'T':total=nBoletos*950;strcpy(clase,"Turismo");break;

}

break;

case 3:

strcpy(nomDestino,"Roma");;

switch(categoria)

{

case 'V':total=nBoletos*2600;strcpy(clase,"VIP");break;

case 'P':total=nBoletos*1900;strcpy(clase,"Primera Clase");break;

case 'S':total=nBoletos*1300;strcpy(clase,"Segunda Clase");break;

case 'T':total=nBoletos*970;strcpy(clase,"Turismo");break;

}

break;

case 4:

strcpy(nomDestino,"Londres");

switch(categoria)

{

case 'V':total=nBoletos*2100;strcpy(clase,"VIP");break;

case 'P':total=nBoletos*1700;strcpy(clase,"Primera Clase");break;

case 'S':total=nBoletos*1100;strcpy(clase,"Segunda Clase");break;

case 'T':total=nBoletos*850;strcpy(clase,"Turismo");break;

}

break;

case 5:

strcpy(nomDestino,"Madrid");

switch(categoria)

{

case 'V':total=nBoletos*2250;strcpy(clase,"VIP");break;

case 'P':total=nBoletos*1850;strcpy(clase,"Primera Clase");break;

Page 9: FPR_U3_A3_PEGL

case 'S':total=nBoletos*1300;strcpy(clase,"Segunda Clase");break;

case 'T':total=nBoletos*1000;strcpy(clase,"Turismo");break;

}

break;

case 6:

strcpy(nomDestino,"Bruselas");

switch(categoria)

{

case 'V':total=nBoletos*2270;strcpy(clase,"VIP");break;

case 'P':total=nBoletos*1780;strcpy(clase,"Primera Clase");break;

case 'S':total=nBoletos*1180;strcpy(clase,"Segunda Clase");break;

case 'T':total=nBoletos*930;strcpy(clase,"Turismo");break;

}

break;

case 7:

strcpy(nomDestino,"Berlín");

switch(categoria)

{

case 'V':total=nBoletos*2400;strcpy(clase,"VIP");break;

case 'P':total=nBoletos*1900;strcpy(clase,"Primera Clase");break;

case 'S':total=nBoletos*1350;strcpy(clase,"Segunda Clase");break;

case 'T':total=nBoletos*1050;strcpy(clase,"Turismo");break;

}

break;

case 8:

strcpy(nomDestino,"Sidney");

switch(categoria)

{

case 'V':total=nBoletos*2900;strcpy(clase,"VIP");break;

Page 10: FPR_U3_A3_PEGL

case 'P':total=nBoletos*2450;strcpy(clase,"Primera Clase");break;

case 'S':total=nBoletos*1850;strcpy(clase,"Segunda Clase");break;

case 'T':total=nBoletos*1350;strcpy(clase,"Turismo");break;

}

break;

default: printf("no hay vuelo");

}

printf("Destino a:Categoria: \n");

printf("%s%s \n\n",nomDestino,clase);

printf("Asientos: P.U. Total: \n");

printf(" %d %.2f %.2f\n\n",nBoletos,total/nBoletos,total);

printf("\n\nAgenciaESAD le agradece su preferencia\n\n");

system("pause");/*hará una pausa antes de terminar la ejecución*/

}

Instrucción | Dato de entrada | Operaciones | Estado de la memoria(variables y constantes) | Datos de salida |Inicio | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |- | - | - | - | - | - | - || |Imprimir “Proporcione el destino, eligiendo el numero que le corresponde en la tabla” | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |- | - | - | - | - | - | - || Proporcione el destino, eligiendo el numero que le corresponde en la tabla: |Leer destino | 1 | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | - | - | - | - | - | - || |Imprimir "Proporcione la categoria de destino, V, P, S o T: " | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | - | - | - | - | - | - || Proporcione la categoria de destino, V, P, S o T: |Leer categoria | v | | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | - | - | - | - | - || |Imprimir "Proporcione el numero de boletos que desea comprar: " | - | - | destino | categoria | nBoletos | nombre |

Page 11: FPR_U3_A3_PEGL

nomDestino | total | clase |1 | v | - | - | - | - | - || Proporcione el numero de boletos que desea comprar: |Leer nBoletos | 2 | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | - | - | - | - || |Imprimir "Proporcione a nombre de quien se factura: " | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | - | - | - | - || Proporcione a nombre de quien se factura: |Leer nombre | Gabriel | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | - | - | - || |Seleccionar (destino) | - | nomDestino=”New York”; | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | New York | - | - || |Seleccionar (categoría) | - | total=nBoletos*1500=3000;clase="VIP"; | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | New York | 3000 | VIP || |Imprimir"Factura a nombre: " | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | New York | 3000 | VIP || Factura a nombre: Gabriel |Imprimir “Destino a:” | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | New York | 3000 | VIP || Destino a: New York |Imprimir “Categoria: ” | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | New York | 3000 | VIP || Categoria: VIP |Imprimir “Numero de boletos:” | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | New York | 3000 | VIP || Numero de boletos: 2 |Imprimir “Precio Unitario” | - | 3000/2=1500 | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | New York | 3000 | VIP || Precio Unitario: 1500 |Imprimir “Total a pagar:” | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase |1 | v | 2 | Gabriel | New York | 3000 | VIP || Total a pagar: 3000