Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.85 KB | None | 0 0
  1. class Kulkukortti:
  2.  
  3. def __init__(self, tunniste, nimi):
  4. """ Luokan rakentaja
  5. :param tunniste: henkilön tunniste (str)
  6. :param nimi: henkilön nimi (str)
  7. """
  8. self.__tunniste = tunniste
  9. self.__nimi = nimi
  10. self.__kulkulista = []
  11.  
  12. def tee_lista(self, lista_alueista):
  13. self.__kulkulista = lista_alueista
  14.  
  15. def tulosta_tiedot(self):
  16. kulkualueet = ""
  17.  
  18. for kulkualue in sorted(self.__kulkulista):
  19. kulkualueet += kulkualue + ","
  20.  
  21. kaikki_alueet = kulkualueet.rstrip(",")
  22. print(self.__tunniste, ", ", self.__nimi,", kulkualueet: ", kaikki_alueet, sep="")
  23.  
  24. def anna_nimi(self):
  25. """ Palauttaa kulkukortille talletetun henkilön nimen."""
  26. return self.__nimi
  27.  
  28. def tarkista_pääsy(self, ovi):
  29.  
  30. for n in range(len(ovi)+1):
  31. if ovi[:n+1] in self.__kulkulista:
  32. return True
  33.  
  34. return False
  35.  
  36. def lisää_kulkualue(self, uusi_alue):
  37. uudet_oikeudet = []
  38. poistettavat_oikeudet = []
  39.  
  40. for oikeus in self.__kulkulista:
  41.  
  42. if uusi_alue[0] != oikeus[0]:
  43. if uusi_alue not in uudet_oikeudet:
  44. uudet_oikeudet.append(uusi_alue)
  45.  
  46. elif uusi_alue[0] == oikeus[0]:
  47.  
  48. if len(uusi_alue) > len(oikeus) and oikeus in uusi_alue:
  49. pass
  50.  
  51. elif uusi_alue in oikeus:
  52. poistettavat_oikeudet.append(oikeus)
  53. if uusi_alue not in uudet_oikeudet:
  54. uudet_oikeudet.append(uusi_alue)
  55.  
  56. elif uusi_alue not in oikeus:
  57. if uusi_alue not in uudet_oikeudet:
  58. uudet_oikeudet.append(uusi_alue)
  59.  
  60.  
  61. for arvo in self.__kulkulista:
  62.  
  63. if arvo not in poistettavat_oikeudet:
  64. uudet_oikeudet.append(arvo)
  65.  
  66. self.__kulkulista = uudet_oikeudet
  67.  
  68.  
  69. def yhdistä_kulkukortti(self, toinen_kortti):
  70. uudet_oikeudet = []
  71. poistettavat_oikeudet = []
  72.  
  73. for uusi_alue in toinen_kortti.__kulkulista:
  74.  
  75. for oikeus in self.__kulkulista:
  76.  
  77. if uusi_alue[0] != oikeus[0]:
  78. if uusi_alue not in uudet_oikeudet:
  79. uudet_oikeudet.append(uusi_alue)
  80.  
  81. elif uusi_alue[0] == oikeus[0]:
  82.  
  83. if len(uusi_alue) > len(oikeus) and oikeus in uusi_alue:
  84. pass
  85.  
  86. elif uusi_alue in oikeus:
  87. poistettavat_oikeudet.append(oikeus)
  88. if uusi_alue not in uudet_oikeudet:
  89. uudet_oikeudet.append(uusi_alue)
  90.  
  91. elif uusi_alue not in oikeus:
  92. if uusi_alue not in uudet_oikeudet:
  93. uudet_oikeudet.append(uusi_alue)
  94.  
  95.  
  96. for arvo in self.__kulkulista:
  97.  
  98. if arvo not in poistettavat_oikeudet:
  99. uudet_oikeudet.append(arvo)
  100.  
  101. self.__kulkulista = uudet_oikeudet
  102.  
  103.  
  104.  
  105. def main():
  106. tiedosto = open("kulkutiedot.txt", "r")
  107. kulkukortit = {}
  108.  
  109. try:
  110.  
  111. for rivi in tiedosto:
  112. rivi = rivi.rstrip()
  113.  
  114. kentät = rivi.split(';')
  115. tunniste = kentät[0]
  116. nimi = kentät[1]
  117. kulkukortti = Kulkukortti(tunniste, nimi)
  118. alueet = kentät[2]
  119. lista_alueista = alueet.split(",")
  120.  
  121. kulkukortit[tunniste] = kulkukortti #??? dicti jonka sisällä on olio kulkukortit[tunniste] on olion nimi
  122. kulkukortit[tunniste].tee_lista(lista_alueista) #viedään lista olioon, ei saa viedä parametrina
  123.  
  124. except:
  125. print("Virhe: tiedostoa ei saa luettua.")
  126.  
  127. while True:
  128. rivi = input("komento> ")
  129.  
  130. if rivi == "":
  131. break
  132.  
  133. osat = rivi.split()
  134. käsky = osat[0]
  135.  
  136. if käsky == "lista" and len(osat) == 1: #kulkukorttien tiedot aakkosjärjestyksessä
  137. for rivi in sorted(kulkukortit): #tunniste : olio, rivi = tunniste
  138. kulkukortit[rivi].tulosta_tiedot()
  139.  
  140.  
  141. elif käsky == "tiedot" and len(osat) == 2:
  142. tunniste = osat[1]
  143. try:
  144. kulkukortit[tunniste].tulosta_tiedot()
  145. except:
  146. print("Virhe: tuntematon tunniste.")
  147.  
  148. elif käsky == "kulku" and len(osat) == 3: # kulku tunniste huone
  149. tunniste = osat[1]
  150. huone = osat[2]
  151.  
  152. if tunniste in kulkukortit:
  153.  
  154. onko_oikeus = kulkukortit[tunniste].tarkista_pääsy(huone)
  155. nimi = kulkukortit[tunniste].anna_nimi()
  156.  
  157. if onko_oikeus == True:
  158. print("Kortilla ", tunniste, " ( ", nimi, " ) on kulkuoikeus huoneeseen ", huone, sep="")
  159.  
  160. else:
  161. print("Kortilla ", tunniste, " ( ", nimi, " ) ei kulkuoikeutta huoneeseen ", huone, sep="")
  162.  
  163. else:
  164. print("Virhe: tuntematon tunniste.")
  165.  
  166.  
  167. elif käsky == "lisää" and len(osat) == 3:
  168. tunniste = osat[1]
  169. alue = osat[2]
  170.  
  171. if tunniste in kulkukortit:
  172. kulkukortit[tunniste].lisää_kulkualue(alue)
  173.  
  174. else:
  175. print("Virhe: tuntematon tunniste.")
  176.  
  177.  
  178. elif käsky == "yhdistä" and len(osat) == 3:
  179. henkilö = osat[1] # henkilö, jonka kortille halutaan yhdistää
  180. kortti = osat[2] # yhdistettävä kortti
  181.  
  182. if henkilö in kulkukortit and kortti in kulkukortit :
  183. kulkukortit[henkilö].yhdistä_kulkukortti(kulkukortit[kortti])
  184.  
  185. else:
  186. print("Virhe: tuntematon tunniste.")
  187.  
  188. else:
  189. print("Virhe: Väärä syöte, yritä uudelleen")
  190.  
  191.  
  192. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement