Autor
|
Tema: venta de boletos de autobuses utilizando (colas ,listas o arboles) y archivos (Leído 4,009 veces)
|
Anduresu
Desconectado
Mensajes: 3
|
hacer reserva de asientos de un autobús(máximo 10 asientos ) que pida código ,nombre , numero de asiento ,numero de autobús ,precio ,y precio total con impuesto ,guardando los datos en un archivo y utilizando listas o colas y que imprima todo estos datos como un recibo soy estudiante y me ayudaría mucho su ayuda muchas gracias por su tiempo ; si lo siento mucho asta ahii e avanzado mas que todo queria una idea o una sugerencia de como hacer la parte de colas o listas ya que no se exactamente como proceder #include<stdio.h> #include<windows.h> FILE *archivo; struct pasajero { int codigo ,asiento, edad; char nombre [50]; double precio ,precioTotal; }pas; //************************************************************** double validar(double valor, double li, double ls) { while(valor < li || valor > ls) { printf("\n Error...Ingrese un valor entre [%.2lf] y [%.2lf]: ", li , ls ); } return valor; } //*************************************************************** void consultar() { int cod; archivo = fopen("pasajero.txt","rt"); if(archivo == NULL) printf("\nEl archivo No existe."); else { printf("\n Ingrese el codigo del pasajero: "); printf("\n codigo Edad Nombre No-asiento"); { fscanf(archivo , "%d %d %s %d",&pas. codigo,&pas. edad,&pas. nombre,&pas. asiento); if(pas.codigo==cod) { printf("%d %d %s %d",pas. codigo,pas. edad,pas. nombre,pas. asiento); break; } printf("\n Pasajero no encontrado"); } } } //*************************************************************** void listar() { archivo = fopen("pasajero.txt", "rt" ); if(archivo == NULL) { printf("\nEl archivo No existe."); } else { printf("\nCodigo edad nombre promedio\n"); { fscanf(archivo , "%d %d %s %d", &pas. codigo, &pas. edad, &pas. nombre, &pas. asiento); printf("%5d %4d %5s %5d\n", pas. codigo, pas. edad, pas. nombre, pas. asiento); } } } //*************************************************************** void agregar() { char resp; archivo = fopen("pasajero.txt","rt"); if(archivo ==NULL) { printf("\nEl archivo No existe"); } else { archivo = fopen("pasajero.txt","at"); do { printf("\n\tDatos del pasajero"); printf("\n\t----- --- --------"); printf("\nIngrese el codigo del pasajero :"); pas.codigo=validar(pas.codigo,1,10); printf("\nIngrese la edad del pasajero:"); pas.edad=validar(pas.edad,1,100); printf("\nIngrese el nombre del pasajero: "); printf("\nIngrese el numero del asiento:"); scanf("%d",&pas. asiento); fprintf(archivo , "\n %d", pas. codigo); fprintf(archivo , "\n %d", pas. edad); fprintf(archivo , "\n %s", pas. nombre); fprintf(archivo , "\n %d", pas. asiento); do { printf("\n Desea agregar otro envio? \n: "); if(resp != 'S' && resp != 'N') printf("\n Error... Ingrese [S o N]"); }while(resp != 'S' && resp != 'N'); }while(resp=='S'); } } //*************************************************************** void crear() { archivo = fopen("pasajero.txt","rt"); if(archivo !=NULL) { printf("\n El archivo ya existe"); } else { archivo = fopen("pasajero.txt","wt"); printf("\n el archivo a sido creado con exito"); } } //*************************************************************** void menu() { int opc; do { printf("\n[3]... listar datos "); printf("\n[4]... consultar pasajero"); do { printf("\nIngrese su opcion [1-5]: "); if(opc<1 || opc>5) printf("\nError ingrese [1-5]: "); }while(opc<1 || opc>7); switch(opc) { case 1: crear(); break; case 2: agregar(); break; case 3: listar(); break; case 4: consultar(); break; default: printf("gracias por usar nuestro sistema"); } }while(opc != 5); } //********************************************************* main () { menu(); return 0 ; }
|
|
« Última modificación: 27 Julio 2020, 07:23 am por Anduresu »
|
En línea
|
|
|
|
K-YreX
|
Esto no es un lugar donde poner lo que necesitas y que te den el programa completo... Coloca tus avances (entre etiquetas de Código GeSHi) y el problema del que no puedas salir y es probable que alguien te ayude. En cambio si te limitas a pedir sin esforzarte, esta va a ser la mejor respuesta que vas a obtener...
EDIT: En C no existen las estructuras de datos como sí pasa con C++ por lo que tienes que implementarlas tú. En internet puedes encontrar muchas implementaciones de colas, listas, pilas, etc en C. Para empezar tienes que crear lo que sería un Nodo (un elemento de la estructura) que suele estar formado por los datos a almacenar y un puntero a otro elemento. struct Nodo { Pasajero *pasajero; // puntero a los datos de un pasajero struct Nodo *siguiente; // puntero al siguiente Nodo de la estructura };
Y ahora puedes crear la estructura en sí: struct Cola { struct Nodo *inicio; };
Para crear una lista la puedes hacer simple, es decir, con un único puntero hacia delante o doble (con uno hacia atrás y otro hacia delante). Todos estos detalles dependen de tu implementación y como te digo, en Internet hay muchos ejemplos de este tipo de estructuras.
|
|
« Última modificación: 27 Julio 2020, 22:34 pm por K-YreX »
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
Anduresu
Desconectado
Mensajes: 3
|
este seria mi avanze hasta ahora estoy fallando en el modificar ya que me guarda los datos pero no elimina los datos anteriores ligados al codigo y tambien que no se como igualar los numeros de las lista a la variable de numero de bus gracias por su ayuda #include<stdio.h> #include<windows.h> FILE * archivo; struct pasajero { int cod, numbus,edad,ruta,identidad[13]; char nombre[50],telefono[8]; }pas; struct Nodo { int dato; Nodo *siguiente; }; Nodo * lista =NULL; //-------------------------------------------------------- int validar(int valor, int li, int ls) { while(valor < li || valor > ls) { printf("\n Error...Ingrese un valor entre [%d] y [%d]: ", li , ls ); } return valor; } //.---------------------------------------------------- void consultar() { int codigo; archivo = fopen("pasajero.txt","rt"); if(archivo == NULL) printf("\nEL archivo no existe."); else { printf("\n Ingrese el codigo del pasajero: "); printf("\n codigo Nombre Identidad Edad telefono numero de bus \n"); { fscanf(archivo , "%d %s %d %d %s %d ",&pas. cod , &pas. nombre, &pas. identidad, &pas. edad, &pas. telefono,&pas. ruta ); if(pas.cod==codigo) { printf("%5d %5s %8d %5d %10s %4d \n\n",pas. cod,pas. nombre,pas. identidad,pas. edad,pas. telefono,pas. ruta); break; } printf("\n pasajero no encontrado\n\n"); } } } //------------------------------------------- void busactivo(Nodo * &lista, int num) { Nodo *j = lista; bool encontrado = false; while((j != NULL) && (j -> dato <= num )){ if ( j -> dato == num) encontrado = true; j = j -> siguiente; } if (encontrado == true) printf("\n El bus numero [%d] esta activo \n",&num ); else printf("\n El bus numero [%d] NO esta activo \n",&num ); } //------------------------------------------- void agregararchi() { int num; archivo = fopen("pasajero.txt", "rt" ); if(archivo!= NULL) { printf("\nEl archivo ya existe."); } else { archivo = fopen("pasajero.txt", "wt" ); printf("\nEl archivo se ha creado."); } char resp; archivo = fopen("pasajero.txt","rt"); if(archivo == NULL) { printf("\nEl archivo no existe"); } else { archivo = fopen("pasajero.txt", "at" ); do { printf("\n\tDatos de pasajero."); //for para agregar numero de asientos ------>pendiente printf("\nIngrese codigo del pasajero: "); pas.cod=validar(pas.cod,1,999); printf("\nIngrese Nombre del pasajero: "); scanf("%s", &pas. nombre); printf("\nIngrese Identidad del Pasajero: "); scanf("%d", &pas. identidad); printf("\nIngrese la edad del Pasajero: "); pas.edad=validar(pas.edad,1,99); printf("\nIngrese numero de telefono del Pasajero: "); scanf("%s", &pas. telefono); printf("\n\t -RUTAS DISPONIBLES-"); printf("\n\t--------------------"); printf("\n\t|Ruta[1]...TEG-->SPS|"); printf("\n\t|-------------------|"); printf("\n\t|Ruta[2]...TEG-->CHO|"); printf("\n\t--------------------"); printf("\nIngrese su ruta deseada: "); switch(pas.ruta) { case 1 : fprintf(archivo ,"\nSu numero de bus es [%d]",pas. ruta); break; case 2 : fprintf(archivo ,"\nSu numero de bus es [%d]",pas. ruta); break; } fprintf(archivo , "\nCodigo del Pasajero: "); fprintf(archivo , "\nNombre del Pasajero: "); fprintf(archivo , "%2s", pas. nombre); fprintf(archivo , "\nIdentidad del Pasajero: "); fprintf(archivo , "%2d", pas. identidad); fprintf(archivo , "\nEdad del Pasajero: "); fprintf(archivo , "\nTelefono del Pasajero: "); fprintf(archivo , "%2s", pas. telefono); switch(pas.ruta) { case 1: fprintf(archivo ,"RUTA #1...TEG-->SPS\n"); break; case 2: fprintf(archivo ,"RUTA #2...TEG-->CHO\n"); } do { printf("\n%cDesea agregar otro pasajero ?: ",168); if(resp != 'S' && resp != 'N') printf("\n Error... Ingrese [S o N]"); } while(resp != 'S' && resp != 'N'); }while(resp=='S'); } } //------------------------------------------- void mostrar(Nodo*lista) { Nodo *i=lista; if(lista==NULL){ printf ("\n\t** LISTA VACIA **\n"); }else{ while((i!=NULL)){ printf("bus[%d] --> ",i ->dato ); i=i->siguiente; } printf("No hay mas buses encontados "); } } //------------------------------------------- void agregar(Nodo *&lista, int &num) { Nodo * nuevo_nodo = new Nodo(); nuevo_nodo -> dato = num; Nodo * auxi1 = lista; Nodo * auxi2; while((auxi1 != NULL) && ( auxi1 -> dato)) { auxi2 = auxi1; auxi1 = auxi1 -> siguiente; } if(lista == auxi1) lista = nuevo_nodo; else auxi2 -> siguiente = nuevo_nodo; nuevo_nodo-> siguiente = auxi1; printf("\n El bus[%d] se agrego correctamente \n", num ); } //-------------------------------------------- void menu() { int id; char res; int num; int opc, marcador; do { printf("\n\tTerminal de buses:" ); printf("\n [1]... Agregar cliente al bus" ); printf("\n [2]... Mostrar todos los buses disponibles" ); printf("\n [3]... Agregar pasajeros al autobus" ); printf("\n [4]... Consultar pasajero" );//cessar printf("\n [5]... Modificar datos del pasajero " );//jose printf("\n [6]... Eliminar pasajero");//andres do { printf("\nIngrese su opcion [1-7]: "); if(opc<1 || opc>7) printf("\nError...Ingrese su opci%cn de [1-7]: ",162); }while(opc<1 || opc>7); switch(opc) { case 1: printf ("\n\t Ingreso de Buses a la Lista Disponible"); printf ("\n\t *** * ** * * ** ****\n"); do { printf("\nIngrese el numero Bus en Estado Disponible: "); num=validar(num,1,5); agregar(lista,num); do { printf("\n%cDesea Agregar otro Bus Disponible[S-N]: ",168); if (res != 'S' && res != 'N') printf("\n Error... opci%cn incorrecta\n",162); }while(res != 'S' && res !='N'); }while(res == 'S'); break; case 2: printf ("\n Consulta los buses disponibles en la LISTA "); mostrar(lista); break; case 3: printf("\nIngrese datos del pasajero"); agregararchi(); break; case 4: printf("\n\t----Consultar Datos----"); printf("\n\t***********************\n"); consultar(); break; case 5: printf("\n\t----- MODIFICAR DATOS -----"); printf("\n Ingrese el codigo de pasajero a buscar: "); if(archivo == NULL) { printf("\nEl archivo no existe"); } else if(id==pas.cod) { archivo = fopen("pasajero.txt", "at" ); printf("\n\tDatos de pasajero."); //for para agregar numero de asientos ------>pendiente printf("\nIngrese codigo del pasajero: "); pas.cod=validar(pas.cod,1,999); printf("\nIngrese Nombre del pasajero: "); scanf("%s", &pas. nombre); printf("\nIngrese Identidad del Pasajero: "); scanf("%d", &pas. identidad); printf("\nIngrese la edad del Pasajero: "); pas.edad=validar(pas.edad,1,99); printf("\nIngrese numero de telefono del Pasajero: "); scanf("%s", &pas. telefono); printf("\n\t -RUTAS DISPONIBLES-"); printf("\n\t--------------------"); printf("\n\t|Ruta[1]...TEG-->SPS|"); printf("\n\t|-------------------|"); printf("\n\t|Ruta[2]...TEG-->CHO|"); printf("\n\t--------------------"); printf("\nIngrese su ruta deseada: "); switch(pas.ruta) { case 1 : fprintf(archivo ,"\nSu numero de bus es [%d]",pas. ruta); break; case 2 : fprintf(archivo ,"\nSu numero de bus es [%d]",pas. ruta); break; } fprintf(archivo , "\nCodigo del Pasajero: "); fprintf(archivo , "\nNombre del Pasajero: "); fprintf(archivo , "%2s", pas. nombre); fprintf(archivo , "\nIdentidad del Pasajero: "); fprintf(archivo , "%2d", pas. identidad); fprintf(archivo , "\nEdad del Pasajero: "); fprintf(archivo , "\nTelefono del Pasajero: "); fprintf(archivo , "%2s", pas. telefono); switch(pas.ruta) { case 1: fprintf(archivo ,"RUTA #1...TEG-->SPS\n"); break; case 2: fprintf(archivo ,"RUTA #2...TEG-->CHO\n"); } } break; //case 6: // break; case 7: default: } }while(opc!=7); } main() { menu(); return 0; }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
listas y arboles
Java
|
Growdes
|
4
|
6,429
|
11 Septiembre 2009, 19:54 pm
por Skeletron
|
|
|
ayuda con codigo de c++ programa para hacer sorteo usando listas y colas
Programación C/C++
|
carles24
|
3
|
8,453
|
5 Noviembre 2011, 19:10 pm
por carles24
|
|
|
Ayuda con listas, pilas y colas
Programación C/C++
|
VintageChanel
|
1
|
2,177
|
28 Enero 2015, 08:43 am
por Orubatosu
|
|
|
Ayuda con un ejercicio de Listas y Colas
Programación C/C++
|
fallenboy69
|
1
|
2,050
|
17 Marzo 2022, 18:02 pm
por MAFUS
|
|
|
Venta de boletos de un Teatro en lenguaje Dev c++
Programación C/C++
|
porfavorayuda
|
1
|
4,004
|
2 Mayo 2022, 19:49 pm
por K-YreX
|
|