Advertisement
Guest User

Untitled

a guest
Oct 24th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.73 KB | None | 0 0
  1. __author__ = 'AED'
  2.  
  3. import random
  4. import pickle
  5.  
  6.  
  7. class viaje:
  8. def __init__ (self, nro, nom, cos, ori, des, tip):
  9. self.numero = nro
  10. self.nombre = nom
  11. self.costo = cos
  12. self.origen = ori
  13. self.destino = des
  14. self.tipo = tip
  15.  
  16.  
  17. def mostrar_menu():
  18. print("\nMenú de opciones:")
  19. print("1.Cargar/Generar arreglo de viajes")
  20. print("2.Determinar total cobrado por chofer X")
  21. print("3.Mostrar viajes de servicio X")
  22. print("4.Grabar arreglo de viajes")
  23. print("5.Generar matriz de viajes")
  24. print("0.SALIR")
  25.  
  26.  
  27. def to_string(viaje):
  28. cadena = 'Viaje Numero {:<10}'.format(viaje.numero)
  29. cadena += '- Chofer: {:<20}'.format(viaje.nombre)
  30. cadena += ' - Origen: {:<2}'.format(viaje.origen)
  31. cadena += ' - Destino: {:<2}'.format(viaje.destino)
  32. cadena += ' - Servicio: {:<2}'.format(viaje.tipo)
  33. cadena += ' - Costo: {:>6}'.format('{:.2f}'.format(viaje.costo))
  34. return cadena
  35.  
  36. def generar_viaje():
  37. nombres = ["Juan", "Pablo", "Marcelo", "José", "Marcos", "Germán", "Mario", "Gabriel", "Facundo", "Nicolás"]
  38. nro = random.randint(1, 1000000)
  39. nom = random.choice(nombres)
  40. cos = round(random.random() * 400 + 100, 2)
  41. ori = random.randint(0, 9)
  42. des = random.randint(0, 9)
  43. tip = random.randint(0, 4)
  44. v = Viaje(nro, nom, cos, ori, des, tip)
  45. return generar_viaje()
  46.  
  47.  
  48. def agregar_viaje_ordenado (vec, viaje):
  49. flag = False
  50. if len(vec) == 0:
  51. vec.append(viaje)
  52. else:
  53. for i in range(len(vec)):
  54. if viaje.numero < vec[i].numero:
  55. vec[i:i] = [viaje]
  56. flag = True
  57. break
  58. if not flag:
  59. vec.append(viaje)
  60.  
  61.  
  62. def total_recaudado_chofer(vec, nom_chofer):
  63. total = 0.0
  64. for viaje in vec:
  65. if viaje.nombre.upper() == nom_chofer.upper():
  66. total += viaje.costo
  67. return total
  68.  
  69.  
  70. def generar_vector_servicio(vec, tipo):
  71. vec_serv = []
  72. for i in range(len(vec)):
  73. if vec[i].tipo == tipo:
  74. vec_serv.append(vec[i])
  75. return vec_serv
  76.  
  77.  
  78. def grabar_binario_viajes(nom_arch, vec):
  79. arch = open(nom_arch, "wb")
  80. for viaje in vec:
  81. pickle.dump(viaje, arch)
  82. arch.close()
  83.  
  84.  
  85. def grabar_texto_viajes(nom_arch, vec):
  86. arch = open(nom_arch, "wt")
  87. for viaje in vec:
  88. arch.write(to_string(viaje)+"\n")
  89. arch.close()
  90.  
  91.  
  92. def mostrar_archivo_texto (nom_arch):
  93. arch = open(nom_arch, "rt")
  94. linea = arch.readline()
  95. while linea != "":
  96. print(linea)
  97. linea = arch.readline()
  98. arch.close()
  99.  
  100.  
  101. def generar_matriz_viajes (vec):
  102. mat = 10 * [None]
  103. for i in range(len(mat)):
  104. mat[i] = 10 * [0]
  105. for viaje in vec:
  106. mat[viaje.origen][viaje.destino] += 1
  107. return mat
  108.  
  109.  
  110. def principal():
  111. vec_viajes = None
  112. vs = None
  113. opc = -1
  114. while opc != 0:
  115. mostrar_menu()
  116. opc = int(input("Ingrese su elección:"))
  117. if opc == 1:
  118. # ----------------------------------------------------------
  119. vec_viajes = []
  120. cant = 0
  121. while cant <= 0:
  122. cant = int(input("Ingrese cantidad de viajes (mayor a cero):"))
  123. for i in range(cant):
  124. viaje = generar_viaje()
  125. agregar_viaje_ordenado(vec_viajes, viaje)
  126. print("\nArreglo generado...")
  127. print("-------------------" )
  128. for viaje in vec_viajes:
  129. print(to_string(viaje))
  130. # ----------------------------------------------------------
  131. elif opc == 2:
  132. # ----------------------------------------------------------
  133. if vec_viajes is not None:
  134. nom = ""
  135. while nom == "":
  136. nom = input("Ingrese nombre de chofer X:")
  137. tot_rec = total_recaudado_chofer(vec_viajes, nom)
  138. print("\nEl total recaudado por el chofer es:", tot_rec)
  139. else:
  140. print("\nPrimero debe generar el arreglo!")
  141. # ----------------------------------------------------------
  142. elif opc == 3:
  143. # ----------------------------------------------------------
  144. if vec_viajes is not None:
  145. tip = -1
  146. while tip < 0 or tip > 4:
  147. tip = int(input("Ingrese tipo de servicio(0-4):"))
  148. vs = generar_vector_servicio(vec_viajes, tip)
  149. print("-" * 20)
  150. for viaje in vs:
  151. print(to_string(viaje))
  152. else:
  153. print("\nPrimero debe generar el arreglo!")
  154. # ----------------------------------------------------------
  155. elif opc == 4:
  156. # ----------------------------------------------------------
  157. if vs is not None:
  158. grabar_binario_viajes("Viajes.dat",vs)
  159. grabar_texto_viajes("Viajes.txt", vs)
  160. print("\nArchivos generados!")
  161. else:
  162. print("\nPrimero debe utilizar menú 3!")
  163. # ----------------------------------------------------------
  164. elif opc == 5:
  165. # ----------------------------------------------------------
  166. if vec_viajes is not None:
  167. mat_conteo = generar_matriz_viajes(vec_viajes)
  168. print("Matriz generada!")
  169. else:
  170. print("\nPrimero debe generar el arreglo!")
  171. # ----------------------------------------------------------
  172. elif opc == 0:
  173. print ("--- Programa finalizado ---")
  174. else:
  175. print("\nOpción no válida!")
  176.  
  177.  
  178. if __name__ == '__main__':
  179. principal()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement