Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include <iostream>
- #include <string>
- #include <string.h>
- #include <ctime>
- #include <locale>
- using namespace std;
- struct Users
- {
- string username;
- string file1;
- string file2;
- string file3;
- string file4;
- };
- void checking_delo(Users user, string delo, Users users[3]);
- void doing(Users user, Users users[3], string delo, int num);
- void pokaz_prav(Users user);
- void checking_names(Users users[3], string username);
- void razdacha_prav(Users users[3], string prava_dostupa[5], int num)
- {
- int i;
- for (i = 0; i < 3; i++)
- {
- if (i == num) //если встретился админ
- {
- users[i].file1 = prava_dostupa[0];
- users[i].file2 = prava_dostupa[0];
- users[i].file3 = prava_dostupa[0];
- users[i].file4 = prava_dostupa[0];
- }
- else {
- users[i].file1 = prava_dostupa[rand() % 5];
- users[i].file2 = prava_dostupa[rand() % 5];
- users[i].file3 = prava_dostupa[rand() % 5];
- users[i].file4 = prava_dostupa[rand() % 5];
- }
- }
- }
- void func_grant(Users user, Users users[3], string name, int num, string pravo) {
- int o = 0;
- int indicator = 0;
- if (pravo == "read") {
- pravo = "чтение";
- }
- else if (pravo == "write") {
- pravo = "запись";
- }
- else if (pravo == "all") {
- pravo = "полные права";
- }
- else {indicator = 1; }
- if (indicator == 0) {
- for (int i = 0; i < 3; i++) {
- if (name == users[i].username) {
- if (num == 1) {
- users[i].file1 = pravo; cout << "Успешно .Жду указаний "; string delo; cin >> delo; checking_delo(user, delo, users);
- }
- else if (num == 2) {
- users[i].file2 = pravo; cout << "Успешно .Жду указаний "; string delo; cin >> delo; checking_delo(user, delo, users);
- }
- else if (num == 3) {
- users[i].file3 = pravo; cout << "Успешно .Жду указаний "; string delo; cin >> delo; checking_delo(user, delo, users);
- }
- else if (num == 4) {
- users[i].file4 = pravo; cout << "Успешно .Жду указаний ";// string delo; cin >> delo; checking_delo(user, delo, users);
- pokaz_prav(users[0]); pokaz_prav(users[1]); pokaz_prav(users[2]);
- }
- }
- else {
- o++;
- }
- if (o == 3) {
- cout << "Операция невозможна тк такого пользователя не существует.Жду указаний ";
- string delo;
- cin >> delo;
- checking_delo(user, delo, users);
- }
- }
- }
- else {
- cout << "Такой операции не существует. Жду указаний "; string delo; cin >> delo; checking_delo(user, delo, users);
- }
- }
- void doing(Users user, Users users[3], string delo, int num) {
- int i;
- string prava_usera[5] = { "none", user.file1, user.file2,user.file3,user.file4 };
- if (delo == "read" or delo == "write") {
- for (i = 1; i < 5; i++) {
- if (num == i) {
- if (delo == "read" and (prava_usera[i] == "чтение" or prava_usera[i] == "чтение и запись" or prava_usera[i] == "полные права")) {
- cout << "Операция прошла успешно. Жду указаний ";
- cin >> delo;
- checking_delo(user, delo, users);
- }
- else if (delo == "write" and (prava_usera[i] == "запись" or prava_usera[i] == "чтение и запись" or prava_usera[i] == "полные права")) {
- cout << "Операция прошла успешно. Жду указаний ";
- cin >> delo;
- checking_delo(user, delo, users);
- }
- else
- {
- cout << "Нет прав на подобное действие. Жду указаний ";
- cin >> delo;
- checking_delo(user, delo, users);
- }
- }
- }
- }
- else {
- for (i = 1; i < 5; i++) {
- if (num == i) {
- if (prava_usera[i] == "полные права") {
- cout << "\nКакое право передаётся? ";
- string pravo;
- cin >> pravo;
- cout << "\nКакому пользователю передаётся право? ";
- string name;
- cin >> name;
- func_grant(user,users, name,num,pravo);
- }
- else { cout << "отказ в выполнении"; }
- }
- }
- }
- }
- void checking_delo(Users user, string delo, Users users[3]) {
- int p;
- if (delo == "read" or delo == "write") {
- cout << "\nПринято. Над каким объектом совершается действие? ";
- int num;
- cin >> num;
- doing(user, users, delo, num);
- }
- else if (delo == "grant")
- {
- cout << "\nПринято. Право на какой объект передается? ";
- int num;
- cin >> num;
- doing(user, users, delo, num);
- }
- else if (delo == "quit") {
- cout << "\nВыход для смены пользователя осуществлён. Имя либо выход ";
- string username;
- cin >> username;
- if (username!="exit") {
- checking_names(users, username);
- }
- else {
- cout << "\nРабота системы завершена. Приятного дня.";
- }
- }
- else if (delo == "exit") {
- cout << "\nРабота системы завершена. Приятного дня.";
- }
- else {
- cout << "\nНевозможно такое действие. Введите повторно.";
- cin >> delo;
- checking_delo(user, delo, users);
- }
- }
- void pokaz_prav(Users user)
- {
- cout << "\nUsername: " << user.username << "\n";
- cout << "file1: " << user.file1 << "\n";
- cout << "file2: " << user.file2 << "\n";
- cout << "file3: " << user.file3 << "\n";
- cout << "file4: " << user.file4 << "\n";
- }
- void checking_names(Users users[3], string username) {
- cout << "\nПодождите выполняется проверка";
- int i;
- int o = 0;
- string delo;//для хотелок пользователя
- for (i = 0; i < 3; i++) {
- if (username == users[i].username) {
- cout << "\nДобро пожаловать! " << users[i].username << " Ваши права";
- pokaz_prav(users[i]);
- cout << "\n Чего хотите?";
- cin >> delo;
- checking_delo(users[i], delo, users);
- break;
- }
- else {
- o++;
- }
- if (o == 3) {
- cout << "\nНет такого пользователя. Попробуйте ещё раз. Введите имя ";
- cin >> username;
- int n = 0;
- checking_names(users, username);
- }
- }
- }
- int main()
- {
- setlocale(LC_ALL, "");
- string user_logins[3] = { "Vasia","Petia","Nikita" };
- string prava_dostupa[5] = { "полные права","чтение","запись" ,"чтение и запись" ,"нет прав" };
- int i, num;
- srand(time(0));
- Users users[3]; //создается массив структур
- for (i = 0; i < 3; i++)
- {
- users[i].username = user_logins[i]; // вводятся имена юзеров
- }
- for (i = 0; i < 3; i++)
- {
- cout << users[i].username << "\n";
- }
- num = rand() % 3; //num для рандомного выбора администратора
- for (i = 0; i < 3; i++)
- {
- razdacha_prav(users, prava_dostupa, num); //раздаются права юзерам
- }
- //pokaz_prav(users[0]); pokaz_prav(users[1]); pokaz_prav(users[2]);
- string nam;
- cout << "\nВаше имя?";
- cin >> nam;
- cout << " " << nam;
- checking_names(users, nam); //проверка пользователя
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement