Neon_Falcon

1 laba s kommentani

Apr 25th, 2020
610
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.66 KB | None | 0 0
  1. # Работа Кипреевой Марии КЭ-203 Лабораторная работа №1
  2.  
  3. import random
  4. # подготовка базы пользователей перед работой
  5. users_name = ["Maria", "Vika", "Artem", "Petya", "Danil", "Sasha", "Lesha", "Lera"] # список пользователей
  6.  
  7. rights_users = [
  8. [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
  9. [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
  10. [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
  11. [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
  12. [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
  13. [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
  14. [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
  15. [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]]
  16. ]
  17.  
  18. i = 1 # присваиваем рандомно права пользователям
  19. while i < 8:
  20. for j in range(5):
  21. k = [random.randint(0,1),random.randint(0,1),random.randint(0,1)]
  22. rights_users[i][j] = k
  23. i+=1
  24. i=0
  25. j=0
  26.  
  27.  
  28. def print_rules(rule1, rule2, rule3): # вывод на экран прав пользователя
  29. if rule1 == 1 and rule2 == 1 and rule3 == 1:
  30. return ("Полные права")
  31. elif rule1 == 0 and rule2 == 0 and rule3 == 0:
  32. return ("Запрет")
  33. else:
  34. result = ""
  35. if rule1 == 1:
  36. if result == "":
  37. result += "Чтение"
  38. else:
  39. result += ", чтение"
  40. if rule2 == 1:
  41. if result == "":
  42. result += "Запись"
  43. else:
  44. result += ", запись"
  45. if rule3 == 1:
  46. if result == "":
  47. result += "Передача прав"
  48. else:
  49. result += ", передача прав"
  50. return result
  51.  
  52. def instruct(i): # вывод меню для работы с пользователем и получения указаний
  53. a = input("Жду ваших указаний -> ")
  54.  
  55. if a == "Чтение":
  56. command_id = 0
  57. elif a == "Запись":
  58. command_id = 1
  59. elif a == "Передача прав":
  60. command_id = 2
  61. elif a == "Выход":
  62. print("Работа пользователя ", users_name[i], "завершена. До встречи.")
  63. admittance()
  64. else:
  65. print("Такой команды не существует. Попробуйте написать еще раз.")
  66. return instruct(i)
  67.  
  68. if command_id != 2:
  69. b = int(input("Над каким объектом будете работать? ")) -1
  70. if rights_users[i][b][command_id] == 1:
  71. print("Операция прошла успешно")
  72. instruct(i)
  73. else:
  74. print("Отказ в выполнении операции. У Вас нет прав для ее осуществления.")
  75. instruct(i)
  76. else:
  77. grant(i)
  78. instruct(i)
  79.  
  80. def admittance(): # вход пользователей
  81. name_user = input("Введите имя пользователя: ")
  82. check = name_user in users_name
  83. if check == 0: #проверка регистрации пользователя
  84. print("Пользователя с таким именем нет в системе")
  85. admittance()
  86. else:
  87. print("Идентификация прошла успешно, добро пожаловать в систему \n ")
  88. print("Перечень Ваших прав:") # вывод наличия прав для пользователся
  89. for i in range(0,8):
  90. if name_user == users_name[i]:
  91. user_id = i
  92. for j in range(0,5):
  93. print("Обьект", j+1, ": ",print_rules(rights_users[user_id][j][0],rights_users[user_id][j][1],rights_users[user_id][j][2]))
  94.  
  95. instruct(user_id) # указания
  96.  
  97. def get_rule(): # функция передачи прав
  98. a = input("Какое право передается? ")
  99. if (a != "Чтение") and (a != "Запись") and (a != "Передача прав"): # проверка правильного написания правила
  100. print("Такого права не существует. Попробуйте ещё раз.")
  101. return get_rule()
  102. else:
  103. if a == "Чтение":
  104. return 0
  105. if a == "Запись":
  106. return 1
  107. if a == "Передача прав":
  108. return 2
  109.  
  110. def get_object(): # выбор объекта для передачи
  111. a = int(input("Введите номер объекта: "))
  112. if (a != 1) and (a != 2) and (a != 3) and (a != 4) and (a != 5):
  113. print("Такого объекта не существует. Попробуйте ещё раз.")
  114. return get_object()
  115. else:
  116. return a-1
  117.  
  118. def get_user(): # функция выбора пользователя, которому передаются права
  119. name_user = input("Какому пользователю передается право? ")
  120. check = name_user in users_name
  121. if check == 0:
  122. print("Пользователя с таким именем нет в системе")
  123. return get_user()
  124. else:
  125. for i in range(0, 8):
  126. if name_user == users_name[i]:
  127. return i
  128.  
  129.  
  130. def grant(user_id): # функция передачи прав
  131. rule = get_rule()
  132. object_id = get_object()
  133. user_target = get_user()
  134.  
  135. rights_users[user_target][object_id][rule] = rights_users[user_id][object_id][rule]
  136. print("Передача прав успешно завершена")
  137.  
  138. admittance() # вызов функции регистрации и вывода меню
Advertisement
Add Comment
Please, Sign In to add comment