diff --git a/programa_reservacion_boletos.py b/programa_reservacion_boletos.py index 47b8820..5bb84b0 100644 --- a/programa_reservacion_boletos.py +++ b/programa_reservacion_boletos.py @@ -7,6 +7,7 @@ las opciones administrativas, la opción 2 abre las opciones normales para el usuario y la opción 3 cierra el programa. Restricciones: Solo se permite introducir la opcion 1, 2 o 3. """ +from datetime import datetime def sistema_de_reservacion_de_boletos() : print('Bienvenido al sistema de reservación de boletos') return sistema_de_reservacion_de_boletos2() @@ -59,7 +60,7 @@ def opciones_administrativas(): print(""" Opciones Administrativas 1. Gestión de empresas -2. Transporte por empresas +2. Gestion de transporte por empresas 3. Gestión de viaje 4. Consultar historial de reservaciones 5. Estadísticas de viaje @@ -174,24 +175,28 @@ def eliminar_empresa() : print('\nEn la cedula jurídica solo puede introducir números') return gestión_de_empresas() else : - contador = cuenta_caracteres(cedulaJuridica, 0) - if contador == 10 : - contador2 = 0 - cedula = open('empresas.txt', 'r') - for empresa in cedula.readlines() : - empresaAux = empresa.split(';') - if cedulaJuridica == empresaAux[1] : - contador2 += 1 - print(empresaAux[0], 'ha sido eliminado') - cedula.close() - else : - if contador2 == 0 : - cedula.close() + if cuenta_caracteres(cedulaJuridica, 0) == 10 : + if comprobar_viajes_existentes(cedulaJuridica) : + contador2 = 0 + cedula = open('empresas.txt', 'r') + for empresa in cedula.readlines() : + empresaAux = empresa.split(';') + if cedulaJuridica == empresaAux[1] : contador2 += 1 - escribir_texto(empresa) - else : + print(empresaAux[0], 'ha sido eliminado') + eliminar_vehiculos_de_empresa(cedulaJuridica) cedula.close() - anadir_texto(empresa) + else : + if contador2 == 0 : + cedula.close() + contador2 += 1 + escribir_texto(empresa) + else : + cedula.close() + anadir_texto(empresa) + else : + print('No se puede eliminar la empresa, posee uno o varios viajes programados') + return gestión_de_empresas() else : print('\nLa cedula juridica debe tener diez digitos') return gestión_de_empresas() @@ -201,6 +206,32 @@ def eliminar_empresa() : else : return gestión_de_empresas() +def comprobar_viajes_existentes(cedulaJuridica) : + viaje = open('viajes.txt', 'r') + for informacion in viaje.readlines() : + informacion = informacion.split(';') + viaje.close() + if informacion[13] == cedulaJuridica : + return False + else : + None + return True + +def eliminar_vehiculos_de_empresa(cedulaJuridica) : + contador = 0 + vehiculo = open('vehiculos.txt', 'r') + for informacion in vehiculo.readlines() : + informacionAux = informacion.split(';') + vehiculo.close() + if informacionAux[4] == cedulaJuridica : + print('Se ha eliminado el vehículo con placa', informacionAux[0]) + else : + if contador == 0 : + contador += 1 + escribir_texto_vehiculo(informacion) + else : + anadir_texto_vehiculo(informacion) + def escribir_texto(empresa) : archivo = open('empresas.txt', 'w') archivo.write(empresa) @@ -600,18 +631,28 @@ def modificar_transporteAux(informacion, informacionOriginal) : #Se ejecuta y muestra todos los transportes registrados def mostrar_transportes(): transportes = open('vehiculos.txt', 'r') + contador = 0 for vehiculo in transportes.readlines() : vehiculo = vehiculo.split(';') - print('Placa:', vehiculo[0]) - print('Marca:', vehiculo[1]) - print('Modelo:', vehiculo[2]) - print('Año:', vehiculo[3]) - print('Empresa:', vehiculo[4]) - print('Asientos VIP:', vehiculo[5]) - print('Asientos normales:', vehiculo[6]) - print('Asientos economicos:', vehiculo[7]) - print('Estado:', vehiculo[8]) - return transporte_por_empresas() + transportes.close() + if vehiculo[3] == 'inicio' : + None + else: + contador += 1 + print('Placa:', vehiculo[0]) + print('Marca:', vehiculo[1]) + print('Modelo:', vehiculo[2]) + print('Año:', vehiculo[3]) + print('Empresa:', mostrar_nombre_empresa(vehiculo[4])) + print('Asientos VIP:', vehiculo[5]) + print('Asientos normales:', vehiculo[6]) + print('Asientos economicos:', vehiculo[7]) + print('Estado:', vehiculo[8]) + if contador == 0 : + print('No hay vehículos registrados') + return transporte_por_empresas() + else : + return transporte_por_empresas() #Nombre: gestion de viaje #Entradas: Ingresa una de las opciones que se presentan en el menú @@ -633,7 +674,8 @@ def gestión_de_viaje() : elif opcion == '3' : return modificar_viajes() elif opcion == '4' : - return mostrar_viajes() + mostrar_viajes() + return gestión_de_viaje() elif opcion == '9' : return opciones_administrativas() else : @@ -688,32 +730,32 @@ def incluir_viajes() : vehiculo = str(input('Ingrese la placa del vehículo que desea usar: ')) if cuenta_caracteres(vehiculo, 0) == 6 : if comprobar_existencia_placa_eliminar(vehiculo) : - if comprobar_reservacion_de_vehiculo(vehiculo) : - from datetime import datetime - fecha1 = datetime(int(añoSalida), int(mesSalida), int(diaSalida), int(horaSalida), - int(minutoSalida)) - fecha2 = datetime(int(añoLlegada), int(mesLlegada), int(diaLlegada), - int(horaLlegada), int(minutoLlegada)) - if fecha2 > fecha1 : - numeroViaje = verificar_numero_de_viaje() - informacionViaje = (numeroViaje + ';' + ciudadSalida + ';' + ciudadLlegada + - ';' + añoSalida + ';' + mesSalida + ';' + diaSalida + ';' - + horaSalida + ';' + minutoSalida + ';' + añoLlegada + ';' - + mesLlegada + ';' + diaLlegada + ';' + horaLlegada + ';' - + minutoLlegada + ';' + empresa + ';' + vehiculo + ';' - + montoVIP + ';' + montoNormal + ';' + - montoEconomico + '\n') - registrarViaje = open('viajes.txt', 'a') - registrarViaje.write(informacionViaje) - registrarViaje.close() - print('Se ha añadido el viaje #',numeroViaje) - reservar_vehiculo(vehiculo) - return gestión_de_viaje() + if vehiculo_pertenece_a_empresa(vehiculo, empresa) : + if comprobar_reservacion_de_vehiculo(vehiculo) : + fecha1 = datetime(int(añoSalida), int(mesSalida), int(diaSalida), int(horaSalida), + int(minutoSalida)) + fecha2 = datetime(int(añoLlegada), int(mesLlegada), int(diaLlegada), + int(horaLlegada), int(minutoLlegada)) + if fecha2 > fecha1 : + numeroViaje = verificar_numero_de_viaje() + informacionViaje = (numeroViaje + ';' + ciudadSalida + ';' + ciudadLlegada + + ';' + str(int(añoSalida)) + ';' + str(int(mesSalida)) + ';' + str(int(diaSalida)) + ';' + + str(int(horaSalida)) + ';' + str(int(minutoSalida)) + ';' + str(int(añoLlegada)) + ';' + + str(int(mesLlegada)) + ';' + str(int(diaLlegada)) + ';' + str(int(horaLlegada)) + ';' + + str(int(minutoLlegada)) + ';' + empresa + ';' + vehiculo + ';' + + str(int(montoVIP)) + ';' + str(int(montoNormal)) + ';' + str(int(montoEconomico)) + '\n') + anadir_viaje(informacionViaje) + print('Se ha añadido el viaje #',numeroViaje) + reservar_inactivar_vehiculo(vehiculo) + return gestión_de_viaje() + else : + print('\nLa fecha de llegada no puede ser menor que la fecha de salida') + return gestión_de_viaje() else : - print('\nLa fecha de llegada no puede ser menor que la fecha de salida') + print('El vehículo no se puede usar, debido a que se encuentra reservado para otro viaje') return gestión_de_viaje() else : - print('El vehículo no se puede usar, debido a que se encuentra reservado para otro viaje') + print('El vehiculo no pertenece a', mostrar_nombre_empresa(empresa)) return gestión_de_viaje() else : print('La placa ingresada no posee coincidencias') @@ -818,9 +860,9 @@ def comprobar_reservacion_de_vehiculo(placa) : if vehiculo[8] == 'reservado\n' : return False else : - vehiculo + None else : - vehiculo + None return True def reservar_inactivar_vehiculo(placa) : @@ -896,8 +938,14 @@ def anadir_viaje(informacion) : viaje.write(informacion) viaje.close() -# -def modificar_viaje() : +#Nombre: modificar viaje +#Entradas: recibe el numero de viaje que se desea modificar +#Salidas: el viaje modificado +#Restricciones: El número de viajes introducido debe ser un entero, no se puede modificar el número de viaje ni la empresa que realiza el viaje, +#las fecha de salida debe de ser menor que la fecha de llegada y solo pueden ser numeros, no se permite ingresar un vehículo que se encuentre +#reservado para otro viaje, no se permite ingresar un vehículo que no sea de la empresa que realiza el viaje, el monto VIP, normal y económico +#deben de ser números. +def modificar_viajes() : numeroViaje = str(input('Ingrese el número de viaje que desea modificar: ')) if comprobador_entero(numeroViaje, 0) == 2 : contador = 0 @@ -908,14 +956,15 @@ def modificar_viaje() : viaje.close() if informacionAux[0] == numeroViaje : nuevaInformacion = modificando_viaje(informacionAux, informacion) + coincidencias += 1 if contador == 0 : - coincidencias += 1 + contador += 1 escribir_viaje(nuevaInformacion) else : anadir_viaje(nuevaInformacion) else : if contador == 0 : - coincidencias += 1 + contador += 1 escribir_viaje(informacion) else : anadir_viaje(informacion) @@ -940,37 +989,215 @@ def modificando_viaje(informacion, informacionOriginal) : 0. Cancelar""") opcion = str(input('\nIngrese la opción deseada: ')) if opcion == '1' : + ciudadSalida = str(input('Introduzca la nueva ciudad de salida: ')) + informacion[1] = ciudadSalida + print('Ciudad de salida asignada') return modificando_viaje(informacion, informacionOriginal) elif opcion == '2' : + ciudadLlegada = str(input('Introdzuca la nueva de llegada: ')) + informacion[2] = ciudadLlegada + print('Ciudad de llegada asignada') return modificando_viaje(informacion, informacionOriginal) elif opcion == '3' : + informacion = cambiar_fecha_salida(informacion) + print('Fecha de salida asignada') return modificando_viaje(informacion, informacionOriginal) - elif opcion == 4 : - return modificando_viaje(informacion, informacionOriginal) - elif opcion == 5 : - return modificando_viaje(informacion, informacionOriginal) - elif opcion == 6 : - return modificando_viaje(informacion, informacionOriginal) - elif opcion == 7 : - return modificando_viaje(informacion, informacionOriginal) - elif opcion == 8 : + elif opcion == '4' : + informacion = cambiar_fecha_llegada(informacion) + print('Fecha de llegada asignada') return modificando_viaje(informacion, informacionOriginal) - elif opcion == 9 : + elif opcion == '5' : + placa = str(input('Introduzca la nueva placa de salida: ')) + if cuenta_caracteres(placa, 0) == 6 : + if comprobar_existencia_placa_eliminar(placa) : + if vehiculo_pertenece_a_empresa(placa, informacion[13]) : + if comprobar_reservacion_de_vehiculo(vehiculo) : + informacion[14] = placa + print('Vehículo asignado') + return modificando_viaje(informacion, informacionOriginal) + else : + print('EL vehículo introducido ya se encuentra reservado') + return modificando_viaje(informacion, informacionOriginal) + else : + print('El vehículo introducido no pertenece a la empresa',mostrar_nombre_empresa(informacion[13])) + return modificando_viaje(informacion, informacionOriginal) + else : + print('La placa del vehículo no existe') + return modificando_viaje(informacion, informacionOriginal) + else : + print('La placa debe tener seis caracteres') + return modificando_viaje(informacion, informacionOriginal) + elif opcion == '6' : + montoVIP = str(input('Introduzca el nuevo monto VIP: ')) + if comprobador_entero(montoVIP, 0) == 2 : + informacion[15] = str(int(montoVIP)) + print('Monto VIP asignado') + return modificando_viaje(informacion, informacionOriginal) + else : + print('El monto VIP debe ser solo números') + return modificando_viaje(informacion, informacionOriginal) + elif opcion == '7' : + montoNormal = str(input('Introduzca el nuevo monto normal: ')) + if comprobador_entero(montoNormal, 0) == 2 : + informacion[16] = str(int(montoNormal)) + print('Monto normal asignado') + return modificando_viaje(informacion, informacionOriginal) + else : + print('El monto VIP debe ser solo números') + return modificando_viaje(informacion, informacionOriginal) + elif opcion == '8' : + montoEconomico = str(input('Introduzca el nuevo monto normal: ')) + if comprobador_entero(montoEconomico, 0) == 2 : + informacion[16] = str(int(montoEconomico)) + print('Monto económico asignado') + return modificando_viaje(informacion, informacionOriginal) + else : + print('El monto VIP debe ser solo números') + return modificando_viaje(informacion, informacionOriginal) + elif opcion == '9' : nuevaInformacion = (informacion[0] + ';' + informacion[1] + ';' + informacion[2] + ';' + informacion[3] + ';' + informacion[4] + ';' + informacion[5] + ';' + informacion[6] + ';' + informacion[7] + ';' + informacion[8] + ';' + informacion[9] + ';' + informacion[10] + ';' + informacion[11] + ';' + informacion[12] + ';' + informacion[13] + ';' + informacion[14] + ';' + informacion[15] + ';' + informacion[16] + ';' + informacion[17]) print('Cambios guardados') return nuevaInformacion - elif opcion == 0 : + elif opcion == '0' : print('Cambios descartados') return informacionOriginal else : print('\nIngrese una opcion valida') return modificando_viaje(informacion, informacionOriginal) - -# +def cambiar_fecha_salida(informacion) : + print(""" + Modificando Fecha de Salida +1. Año de salida +2. Mes de salida +3. Día de salida +4. Hora de salida +5. Minuto de salida""") + opcion = str(input('\nIngrese la opción deseada: ')) + if opcion == '1' : + añoSalida = str(input('Introduzca el nuevo año de salida: ')) + if comprobador_entero(añoSalida, 0) == 2 : + informacion[3] = str(int(añoSalida)) + return cambiar_fecha_salida(informacion) + else : + print('El año de salida debe ser un numero') + return cambiar_fecha_salida(informacion) + elif opcion == '2' : + mesSalida = str(input('Introduzca el nuevo mes de salida: ')) + if comprobador_entero(mesSalidaa, 0) == 2 : + informacion[4] = str(int(mesSalida)) + return cambiar_fecha_salida(informacion) + else : + print('El mes de salida debe ser un numero') + return cambiar_fecha_salida(informacion) + elif opcion == '3' : + diaSalida = str(input('Introduzca el nuevo dia de salida: ')) + if comprobador_entero(diaSalida, 0) == 2 : + informacion[5] = str(int(diaSalida)) + return cambiar_fecha_salida(informacion) + else : + print('El dia de salida debe ser un numero') + return cambiar_fecha_salida(informacion) + elif opcion == '4' : + horaSalida = str(input('Introduzca la nueva hora de salida: ')) + if comprobador_entero(horaSalida, 0) == 2 : + informacion[6] = str(int(horaSalida)) + return cambiar_fecha_salida(informacion) + else : + print('La hora de salida debe ser un numero') + return cambiar_fecha_salida(informacion) + elif opcion == '5' : + diaSalida = str(input('Introduzca el nuevo minuto de salida: ')) + if comprobador_entero(diaSalida, 0) == 2 : + informacion[7] = str(int(diaSalida)) + return cambiar_fecha_salida(informacion) + else : + print('El minuto de salida debe ser un numero') + return cambiar_fecha_salida(informacion) + elif opcion == '9' : + print('Fecha asignada') + return informacion + else : + print('\nIngrese una opcion valida') + return cambiar_fecha_salida(informacion) + +def cambiar_fecha_llegada(informacion) : + print(""" + Modificando Fecha de Llegada +1. Año de llegada +2. Mes de llegada +3. Día de llegada +4. Hora de llegada +5. Minuto de llegada""") + opcion = str(input('\nIngrese la opción deseada: ')) + if opcion == '1' : + añoLlegada = str(input('Introduzca el nuevo año de llegada: ')) + if comprobador_entero(añoLLegada, 0) == 2 : + informacion[3] = str(int(añoLlegada)) + return cambiar_fecha_llegada(informacion) + else : + print('El año de salida debe ser un numero') + return cambiar_fecha_llegada(informacion) + elif opcion == '2' : + mesLlegada = str(input('Introduzca el nuevo mes de llegada: ')) + if comprobador_entero(mesLLegada, 0) == 2 : + informacion[4] = str(int(mesLlegada)) + return cambiar_fecha_llegada(informacion) + else : + print('El mes de salida debe ser un numero') + return cambiar_fecha_llegada(informacion) + elif opcion == '3' : + diaLlegada = str(input('Introduzca el nuevo dia de llegada: ')) + if comprobador_entero(diaLLegada, 0) == 2 : + informacion[5] = str(int(diaLlegada)) + return cambiar_fecha_llegada(informacion) + else : + print('El dia de salida debe ser un numero') + return cambiar_fecha_llegada(informacion) + elif opcion == '4' : + horaLlegada = str(input('Introduzca la nueva hora de llegada: ')) + if comprobador_entero(horaLlegada, 0) == 2 : + informacion[6] = str(int(horaLlegada)) + return cambiar_fecha_llegada(informacion) + else : + print('La hora de salida debe ser un numero') + return cambiar_fecha_llegada(informacion) + elif opcion == '5' : + minutoLlegada = str(input('Introduzca el nuevo minuto de llegada: ')) + if comprobador_entero(minutoLlegada, 0) == 2 : + informacion[7] = str(int(minutoLlegada)) + return cambiar_fecha_llegada(informacion) + else : + print('El minuto de salida debe ser un numero') + return cambiar_fecha_llegada(informacion) + elif opcion == '9' : + print('Fecha asignada') + return informacion + else : + print('\nIngrese una opcion valida') + return cambiar_fecha_llegada(informacion) + + +def vehiculo_pertenece_a_empresa(placa, empresa) : + vehiculo = open('vehiculos.txt', 'r') + for informacion in vehiculo.readlines() : + informacion = informacion.split(';') + vehiculo.close() + if informacion[0] == placa : + if informacion [4] == empresa : + return True + else : + return False + else : + None + +#Nombre: Se muestra +#Entradas: solo debe ejecutarse el código. +#Salidas: muestra todos los detalles de un viaje creado +#Restricciones: Deben haber guaradado viajes. def mostrar_viajes() : contador = 0 viajes = open('viajes.txt', 'r') @@ -983,8 +1210,8 @@ def mostrar_viajes() : print('Número de viaje:', informacion[0]) print('Ciudad de salida:', informacion[1]) print('Ciudad de llegada:', informacion[2]) - print('Fecha de salida:', informacion[5],'/', informacion[4],'/', informacion[3],' ', informacion[6],':', informacion[7]) - print('Fecha de llegada:', informacion[10],'/', informacion[9],'/', informacion[8],' ', informacion[11],':', informacion[12]) + print('Fecha de salida:', informacion[5],'/', informacion[4],'/', informacion[3],' ','Hora:', informacion[6],':', informacion[7]) + print('Fecha de llegada:', informacion[10],'/', informacion[9],'/', informacion[8],' ','Hora:', informacion[11],':', informacion[12]) print('Empresa:', mostrar_nombre_empresa(informacion[13])) print('Placa del vehículo:', informacion[14]) print('Precio asiento VIP:', informacion[15]) @@ -993,9 +1220,8 @@ def mostrar_viajes() : contador += 1 if contador == 0 : print('No hay viajes registrados') - return gestión_de_viaje() else : - return gestión_de_viaje() + None def mostrar_nombre_empresa(cedula) : #Muestra el nombre de la empresa introduciendo el numero de cedula juridica empresa = open('empresas.txt', 'r') @@ -1006,3 +1232,275 @@ def mostrar_nombre_empresa(cedula) : #Muestra el nombre de la empresa introducie return informacion[0] else : None + +#Nombre: opciones normales de usuario +#Entradas: Elegir una de las opciones que se encuentran en el menú +#Salidas: Una de las opciones elegidas. +#Restricciones: Solo se permite ingresas numeros del 1 al 3 y 9. +def opciones_normales_de_usuario() : + print(""" + Opciones Generales +1. Consulta de viajes +2. Reservacion de viajes +3. Cancelacion de reservacion +9. Salir""") + opcion = str(input('\nIngrese la opción deseada: ')) + if opcion == '1' : + return consulta_viajes() + elif opcion == '2' : + return reservar_viaje() + elif opcion == '3' : + return cancelar_viaje() + elif opcion == '9' : + return sistema_de_reservacion_de_boletos2() + else: + print('\nIngrese una opcion valida') + return opciones_normales_de_usuario() + +#Nombre: consulta viajes +#Entradas: Elegir una de las opciones que se encuentran en el menú +#Salidas: Una de las opciones elegidas. +#Restricciones: Solo se permite ingresas numeros del 1 al 5 y 9. +def consulta_viajes() : + print(""" + Consultar Viajes +1. Consultar por empresa +2. Consultar por lugar de salida +3. Consultar por lugar de llegada +4. Consultar por fecha de salida +5. Consultar por fecha de llegada +9. Salir""") + opcion = str(input('\nIngrese la opción deseada: ')) + if opcion == '1' : + return consultar_por_empresa() + elif opcion == '2' : + return consultar_por_lugar_salida() + elif opcion == '3' : + return consultar_por_lugar_llegada() + elif opcion == '4' : + return consultar_por_fecha_salida() + elif opcion == '5' : + return consultar_por_fecha_llegada() + elif opcion == '9' : + return opciones_normales_de_usuario() + else : + print('\nIngrese una opcion valida') + return consulta_viajes() + +#Nombre: consultar por empresa. +#Entrada: Introduce el nombre completo o parte de este. +#Salidas: Imprime las la informacion de viajes. +#Restricciones: Debe introducir un nombre o parte de este. +def consultar_por_empresa() : + empresa = str(input('\nIngrese el nombre de la empresa: ')) + contador = 0 + viaje = open('viajes.txt', 'r') + for informacion in viaje.readlines() : + informacion = informacion.split(';') + viaje.close() + if comprobar_igualdad_texto(empresa, mostrar_nombre_empresa(informacion[13]), cuenta_caracteres(empresa, 0)) : + contador += 1 + print('Número de viaje:', informacion[0]) + print('Ciudad de salida:', informacion[1]) + print('Ciudad de llegada:', informacion[2]) + print('Fecha de salida:', informacion[5],'/', informacion[4],'/', informacion[3],' ','Hora:', informacion[6],':', informacion[7]) + print('Fecha de llegada:', informacion[10],'/', informacion[9],'/', informacion[8],' ','Hora:', informacion[11],':', informacion[12]) + print('Empresa:', mostrar_nombre_empresa(informacion[13])) + print('Placa del vehículo:', informacion[14]) + print('Precio asiento VIP:', informacion[15]) + print('Precio asiento normal', informacion[16]) + print('Precio asiento económico', informacion[17]) + else : + None + if contador == 0 : + print('No hay coincidencias') + return consulta_viajes() + else : + return consulta_viajes() + +#Nombre: consultar por lugar salida. +#Entrada: Introduce el lugar de salida completo o parte de este. +#Salidas: Imprime las la informacion de viajes. +#Restricciones: Debe introducir un lugar de salida o parte de este. +def consultar_por_lugar_salida() : + lugarSalida = str(input('\nIngrese el lugar salida: ')) + contador = 0 + viaje = open('viajes.txt', 'r') + for informacion in viaje.readlines() : + informacion = informacion.split(';') + viaje.close() + if comprobar_igualdad_texto(lugarSalida, informacion[1], cuenta_caracteres(lugarSalida, 0)) : + contador += 1 + print('Número de viaje:', informacion[0]) + print('Ciudad de salida:', informacion[1]) + print('Ciudad de llegada:', informacion[2]) + print('Fecha de salida:', informacion[5],'/', informacion[4],'/', informacion[3],' ','Hora:', informacion[6],':', informacion[7]) + print('Fecha de llegada:', informacion[10],'/', informacion[9],'/', informacion[8],' ','Hora:', informacion[11],':', informacion[12]) + print('Empresa:', mostrar_nombre_empresa(informacion[13])) + print('Placa del vehículo:', informacion[14]) + print('Precio asiento VIP:', informacion[15]) + print('Precio asiento normal', informacion[16]) + print('Precio asiento económico', informacion[17]) + else : + None + if contador == 0 : + print('No hay coincidencias') + return consulta_viajes() + else : + return consulta_viajes() + +#Nombre: consultar por lugar salida. +#Entrada: Introduce el lugar de llegada completo o parte de este. +#Salidas: Imprime las la informacion de viajes. +#Restricciones: Debe introducir un lugar de llegada o parte de este. +def consultar_por_lugar_llegada() : + lugarLlegada = str(input('\nIngrese el lugar llegada: ')) + contador = 0 + viaje = open('viajes.txt', 'r') + for informacion in viaje.readlines() : + informacion = informacion.split(';') + viaje.close() + if comprobar_igualdad_texto(lugarLlegada, informacion[2], cuenta_caracteres(lugarLlegada, 0)) : + contador += 1 + print('Número de viaje:', informacion[0]) + print('Ciudad de salida:', informacion[1]) + print('Ciudad de llegada:', informacion[2]) + print('Fecha de salida:', informacion[5],'/', informacion[4],'/', informacion[3],' ','Hora:', informacion[6],':', informacion[7]) + print('Fecha de llegada:', informacion[10],'/', informacion[9],'/', informacion[8],' ','Hora:', informacion[11],':', informacion[12]) + print('Empresa:', mostrar_nombre_empresa(informacion[13])) + print('Placa del vehículo:', informacion[14]) + print('Precio asiento VIP:', informacion[15]) + print('Precio asiento normal', informacion[16]) + print('Precio asiento económico', informacion[17]) + else : + None + if contador == 0 : + print('No hay coincidencias') + return consulta_viajes() + else : + return consulta_viajes() + +def comprobar_igualdad_texto(lugar, dato, indice) : #Busca las similitudes entre el texto ingresado y el dato exportado. + if lugar == dato[0:indice] : + return True + elif dato == '' : + return False + else : + return comprobar_igualdad_texto(lugar, dato[1:], indice) + +#Nombre: consultar por lugar salida. +#Entrada: Introduce el lugar de llegada completo o parte de este. +#Salidas: Imprime las la informacion de viajes. +#Restricciones: Debe introducir un lugar de llegada o parte de este. +def consultar_por_fecha_salida() : + año1 = str(input('\nIngrese a partir de que año desea buscar: ')) + mes1 = str(input('Ingrese a partir de que mes desea buscar: ')) + dia1 = str(input('Ingrese a partir de que dia desea buscar: ')) + año2 = str(input('\nIngrese el año en que dese finalizar la búsqueda: ')) + mes2 = str(input('Ingrese el mes en que dese finalizar la búsqueda: ')) + dia2 = str(input('Ingrese el dia en que dese finalizar la búsqueda: ')) + if (comprobador_entero(año1, 0) == 2 and comprobador_entero(mes1, 0) == 2 and comprobador_entero(dia1, 0) == 2 and + comprobador_entero(año2, 0) == 2 and comprobador_entero(mes2, 0) == 2 and comprobador_entero(dia2, 0) == 2) : + contador = 0 + viaje = open('viajes.txt', 'r') + for informacion in viaje.readlines() : + informacion = informacion.split(';') + viaje.close() + if informacion[0] == 'inicio' : + None + else : + if comprobar_rango_fechas([año1, mes1, dia1, año2, mes2, dia2], [informacion[3], informacion[4], informacion[5]]) : + contador += 1 + print('Número de viaje:', informacion[0]) + print('Ciudad de salida:', informacion[1]) + print('Ciudad de llegada:', informacion[2]) + print('Fecha de salida:', informacion[5],'/', informacion[4],'/', informacion[3],' ','Hora:', informacion[6],':', informacion[7]) + print('Fecha de llegada:', informacion[10],'/', informacion[9],'/', informacion[8],' ','Hora:', informacion[11],':', informacion[12]) + print('Empresa:', mostrar_nombre_empresa(informacion[13])) + print('Placa del vehículo:', informacion[14]) + print('Precio asiento VIP:', informacion[15]) + print('Precio asiento normal', informacion[16]) + print('Precio asiento económico', informacion[17]) + else : + None + else : + print('Los valores introducidos solo deben ser números') + return consulta_viajes() + if contador == 0 : + print('No hay coincidencias') + return consulta_viajes() + else : + return consulta_viajes() + +#Nombre: consultar por lugar salida. +#Entrada: Introduce el lugar de llegada completo o parte de este. +#Salidas: Imprime las la informacion de viajes. +#Restricciones: Debe introducir un lugar de llegada o parte de este. +def consultar_por_fecha_llegada() : + año1 = str(input('\nIngrese a partir de que año desea buscar: ')) + mes1 = str(input('Ingrese a partir de que mes desea buscar: ')) + dia1 = str(input('Ingrese a partir de que dia desea buscar: ')) + año2 = str(input('\nIngrese el año en que dese finalizar la búsqueda: ')) + mes2 = str(input('Ingrese el mes en que dese finalizar la búsqueda: ')) + dia2 = str(input('Ingrese el dia en que dese finalizar la búsqueda: ')) + if (comprobador_entero(año1, 0) == 2 and comprobador_entero(mes1, 0) == 2 and comprobador_entero(dia1, 0) == 2 and + comprobador_entero(año2, 0) == 2 and comprobador_entero(mes2, 0) == 2 and comprobador_entero(dia2, 0) == 2) : + contador = 0 + viaje = open('viajes.txt', 'r') + for informacion in viaje.readlines() : + informacion = informacion.split(';') + viaje.close() + if informacion[0] == 'inicio' : + None + else : + if comprobar_rango_fechas([año1, mes1, dia1, año2, mes2, dia2], [informacion[8], informacion[9], informacion[10]]) : + contador += 1 + print('Número de viaje:', informacion[0]) + print('Ciudad de salida:', informacion[1]) + print('Ciudad de llegada:', informacion[2]) + print('Fecha de salida:', informacion[5],'/', informacion[4],'/', informacion[3],' ','Hora:', informacion[6],':', informacion[7]) + print('Fecha de llegada:', informacion[10],'/', informacion[9],'/', informacion[8],' ','Hora:', informacion[11],':', informacion[12]) + print('Empresa:', mostrar_nombre_empresa(informacion[13])) + print('Placa del vehículo:', informacion[14]) + print('Precio asiento VIP:', informacion[15]) + print('Precio asiento normal', informacion[16]) + print('Precio asiento económico', informacion[17]) + else : + None + else : + print('Los valores introducidos solo deben ser números') + return consulta_viajes() + if contador == 0 : + print('No hay coincidencias') + return consulta_viajes() + else : + return consulta_viajes() + +def comprobar_rango_fechas(rangoFecha, fechaGuardada) : #Comprueba si una fecha se encuentra dentro de un rango utilizando una fecha menor + fechaMenor = datetime(int(rangoFecha[0]), int(rangoFecha[1]), int(rangoFecha[2]))#y una fecha mayor guardados en una lista. + fechaMayor = datetime(int(rangoFecha[3]), int(rangoFecha[4]), int(rangoFecha[5])) + if fechaMayor > fechaMenor : + fechaAComprobar = datetime(int(fechaGuardada[0]), int(fechaGuardada[1]), int(fechaGuardada[2])) + print(fechaMenor) + print(fechaMayor) + print(fechaAComprobar) + if fechaAComprobar >= fechaMenor and fechaAComprobar <= fechaMayor : + return True + else : + return False + +# +def reservar_viaje() : + mostrar_viajes() + numeroViaje = str(input('\nIntroduzca el numero de viaje en que desea usar: ')) + if comprobador_entero(numeroViaje, 0) == 2 : + if comprobar_existencia_viaje(numeroViaje) : + nombreCliente = str(input('Escriba su nombre completo: ')) + campos + else : + print('El numero de viaje introducido no existe \nPor favor compruebe que el número de viaje introducido exista.') + return consulta_viajes() + else : + print('\nIntroduzca el número de viaje') + return consulta_viajes() +