You are on page 1of 4

SEGUNDO EXAMEN PARCIAL MEC 230

FECHA 19/05/2018
Desarrollar un sistema de registro de buses, para ello se le pide las siguientes especificaciones:
1. El programa de be arrojar un menú con las siguientes opciones (cada opción del menu 0-4
vale 20 puntos):
0. MOSTRAR DATOS BUS (muestra los datos del bus)
1. REGISTRAR DATOS BUS (registra los datos del bus
2. REGITRAR ASIENTO BUS (registra a un pasajero en un asiento)
3. DESPACHAR BUS (guarda en un archivo la info. Del bus y hora de partida).
4. MOSTRAR REGISTRO DESPACHO (muestra el contenido del archivo)
5. SALIR (sale del programa)
2. El programa debe guardar la información del BUS en una estructura que contenga los
siguientes datos:
 Placa
 Destino
 Nombre Chofer
 Horario
 Posición.
3. El dato posición es una variable de tipo ARRAY de estructuras de 4x2 y la estructura contiene
los siguientes datos
 CI
 Nombre del pasajero
4. El programa en la opción 2 debe tener la facilidad de registrar los datos de un pasajero en
una posición dada (Fila x columna), si una posición esta ocupada el programa debe
responder indicando que la posición esta ocupada y que se seleccionar otro puesto.
5. En la opción mostrar bus se debe mostrar el asiento y si estuviese ocupado se debe mostrar
el Carnet del pasajero que ocupa el asiento.
6. EN la opción despachar Bus, se debe guardar en un archivo de texto “RegistroBus.txt” la
hora de registro del bus y todos sus datos incluyendo los asientos y pasajeros que los
ocupan. Posterior a ello se debe borrar todos los datos del bus en las estructuras definidas
para crear nos nuevos datos de bus y pasajeros.

COMANDOS DE AYUDA:

struct asiento{
int CI;
char nombre[20];
}; typedef asiento tasiento;

struct bus{
char placa[10];
char horario[10];
char chofer[20];
char destino[20];
tasiento pos[4][2];
}; typedef bus tbus;

tbus busa;
FILE * RegBus;
void menu();
void mostrarBus();
void RegistroBus();
void RegistroAsiento();
void Limpiar();
void despacharBus();
void mostrarDespacho();

time_t o; //define una variable del tipo TIME (Para ver la hora)
o = time(NULL);
printf("%s\n",asctime(localtime(&o)); //imprime la hora local y fecha en pantalla

void Limpiar(). break. break. struct bus{ char placa[10]. typedef asiento tasiento. getch(). tasiento pos[4][2]. case 4: mostrarDespacho(). break. void RegistroAsiento(). void menu(). switch(op) { case 0: mostrarBus(). void mostrarBus(). char destino[20]. tbus busa.h> #include<string. getch(). void mostrarDespacho(). }. break. case 2: RegistroAsiento(). char horario[10]. char chofer[20]. case 3: despacharBus(). getch(). void despacharBus().SOLUCION #include<stdio. cin>> op. getch(). struct asiento{ int CI. }. } }while(op!=5). do { menu(). char nombre[20].h> #include <iostream> using namespace std. FILE * RegBus. typedef bus tbus. . getch(). break.h> #include<stdlib. void RegistroBus(). case 1: RegistroBus().h> #include <time.h> #include<conio. Int main() { int op.

printf("FILA:").&i). printf("PLACA:\t\t%s\n".horario). printf(" 0. REGITRAR ASIENTO BU \n"). } printf("\n").busa.i.&busa. printf(" 3. } void menu () { system("cls"). } void mostrarBus() { int i.busa.CI).horario). system("pause"). printf("PLACA:\t").CI!=0) printf("El asiento esta ocupado").busa. if (busa. for (i=0.j.chofer). REGISTRAR DATOS BUS \n").&busa.&j). DESPACHAR BUS \n"). } } void RegistroBus() { system("cls"). printf("DESTINO:\t"). scanf("%s".&busa. scanf("%s". SALIR \n\n"). return 0. scanf("%s".CI!=0). } while(busa. printf("HORARIO:\t"). printf("COLUMNA:"). MOSTRAR REGISTRO DESPACHO\n").j++) { printf("[%d][%d]->%d\t".i<=3.pos[i][j].&busa. printf("#############################################\n").i++) { for (j=0.pos[i][j]. printf(" 2. .placa).pos[i][j]. printf("#############################################\n\n"). printf(" 4.j. system("cls").j<=1. scanf("%d". printf("DESTINO:\t\t%s\n". printf("NOMBRE CHOFER:\t"). MOSTRAR DATOS BUS \n"). mostrarBus(). scanf("%s". printf(" 5. printf("\n\t\tINGRESE OPCION\n\n"). printf(" 1.destino).busa. printf("CHOFER:\t\t%s\n". \n").chofer). printf(" INGRESAR OPCION.j. do { printf("INGRESE FILA Y COLUMNA\n").destino). printf("HORARIO:\t\t%s\n". scanf("%d".busa. } void RegistroAsiento() { int i.placa).

i++) { for (j=0.j. printf("CI:")."\n").placa).j++) { busa. while((caracter = fgetc(RegBus)) != EOF) { printf("%c".busa.i++) { for (j=0.destino)."---------------------------------------------\n"). for (i=0."PLACA:\t\t%s\n"."HORARIO:\t\t%s\n".nombre)."")."[%d][%d]->%d-%s\t\t\t".j<=1. } fprintf(RegBus. printf("SE GUARDO LA INFORMACION CON EXITO. RegBus = fopen ("RegistroBus."\n\n#############################################\n"). fprintf(RegBus. RegBus = fopen ("RegistroBus. fprintf(RegBus.busa.j<=1.j.. scanf("%s".pos[i][j]. mostrarBus(). printf("NOMBRE:").i<=3."r"). } } } void despacharBus() { int i.pos[i][j].j++) { fprintf(RegBus. } fclose(RegBus). o = time(NULL)."CHOFER:\t\t%s\n".asctime(localtime(&o))).caracter).i.CI.busa. system("cls"). fprintf(RegBus.i<=3. scanf("%d".").pos[i][j]. } void Limpiar() { int i.txt"."DESTINO:\t\t%s\n"."---------------------------------------------\n\n"). } void mostrarDespacho () { char caracter.&busa. Limpiar().nombre.. fprintf(RegBus. fprintf(RegBus. time_t o.pos[i][j].busa.j. fprintf(RegBus.&busa.chofer).CI)."a+").CI=0. fprintf(RegBus.horario). for (i=0. } . fprintf(RegBus.busa.pos[i][j].nombre).txt".busa.pos[i][j]."%s\n". strcpy(busa. } fclose (RegBus).