Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Работа Кипреевой Марии КЭ-203 Лабораторная работа №1
- import random
- # подготовка базы пользователей перед работой
- users_name = ["Maria", "Vika", "Artem", "Petya", "Danil", "Sasha", "Lesha", "Lera"] # список пользователей
- rights_users = [
- [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
- [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
- [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
- [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
- [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
- [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
- [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
- [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]]
- ]
- i = 1 # присваиваем рандомно права пользователям
- while i < 8:
- for j in range(5):
- k = [random.randint(0,1),random.randint(0,1),random.randint(0,1)]
- rights_users[i][j] = k
- i+=1
- i=0
- j=0
- def print_rules(rule1, rule2, rule3): # вывод на экран прав пользователя
- if rule1 == 1 and rule2 == 1 and rule3 == 1:
- return ("Полные права")
- elif rule1 == 0 and rule2 == 0 and rule3 == 0:
- return ("Запрет")
- else:
- result = ""
- if rule1 == 1:
- if result == "":
- result += "Чтение"
- else:
- result += ", чтение"
- if rule2 == 1:
- if result == "":
- result += "Запись"
- else:
- result += ", запись"
- if rule3 == 1:
- if result == "":
- result += "Передача прав"
- else:
- result += ", передача прав"
- return result
- def instruct(i): # вывод меню для работы с пользователем и получения указаний
- a = input("Жду ваших указаний -> ")
- if a == "Чтение":
- command_id = 0
- elif a == "Запись":
- command_id = 1
- elif a == "Передача прав":
- command_id = 2
- elif a == "Выход":
- print("Работа пользователя ", users_name[i], "завершена. До встречи.")
- admittance()
- else:
- print("Такой команды не существует. Попробуйте написать еще раз.")
- return instruct(i)
- if command_id != 2:
- b = int(input("Над каким объектом будете работать? ")) -1
- if rights_users[i][b][command_id] == 1:
- print("Операция прошла успешно")
- instruct(i)
- else:
- print("Отказ в выполнении операции. У Вас нет прав для ее осуществления.")
- instruct(i)
- else:
- grant(i)
- instruct(i)
- def admittance(): # вход пользователей
- name_user = input("Введите имя пользователя: ")
- check = name_user in users_name
- if check == 0: #проверка регистрации пользователя
- print("Пользователя с таким именем нет в системе")
- admittance()
- else:
- print("Идентификация прошла успешно, добро пожаловать в систему \n ")
- print("Перечень Ваших прав:") # вывод наличия прав для пользователся
- for i in range(0,8):
- if name_user == users_name[i]:
- user_id = i
- for j in range(0,5):
- print("Обьект", j+1, ": ",print_rules(rights_users[user_id][j][0],rights_users[user_id][j][1],rights_users[user_id][j][2]))
- instruct(user_id) # указания
- def get_rule(): # функция передачи прав
- a = input("Какое право передается? ")
- if (a != "Чтение") and (a != "Запись") and (a != "Передача прав"): # проверка правильного написания правила
- print("Такого права не существует. Попробуйте ещё раз.")
- return get_rule()
- else:
- if a == "Чтение":
- return 0
- if a == "Запись":
- return 1
- if a == "Передача прав":
- return 2
- def get_object(): # выбор объекта для передачи
- a = int(input("Введите номер объекта: "))
- if (a != 1) and (a != 2) and (a != 3) and (a != 4) and (a != 5):
- print("Такого объекта не существует. Попробуйте ещё раз.")
- return get_object()
- else:
- return a-1
- def get_user(): # функция выбора пользователя, которому передаются права
- name_user = input("Какому пользователю передается право? ")
- check = name_user in users_name
- if check == 0:
- print("Пользователя с таким именем нет в системе")
- return get_user()
- else:
- for i in range(0, 8):
- if name_user == users_name[i]:
- return i
- def grant(user_id): # функция передачи прав
- rule = get_rule()
- object_id = get_object()
- user_target = get_user()
- rights_users[user_target][object_id][rule] = rights_users[user_id][object_id][rule]
- print("Передача прав успешно завершена")
- admittance() # вызов функции регистрации и вывода меню
Advertisement
Add Comment
Please, Sign In to add comment