Advertisement
Guest User

Untitled

a guest
Feb 18th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.27 KB | None | 0 0
  1. #include "stdio.h"
  2. #include <iostream>
  3. #include <string>
  4. #include <string.h>
  5. #include <ctime>
  6. #include <locale>
  7. using namespace std;
  8.  
  9. struct Users
  10. {
  11.     string username;
  12.     string file1;
  13.     string file2;
  14.     string file3;
  15.     string file4;
  16. };
  17. void checking_delo(Users user, string delo, Users users[3]);
  18. void doing(Users user, Users users[3], string delo, int num);
  19. void pokaz_prav(Users user);
  20. void checking_names(Users users[3], string username);
  21. void razdacha_prav(Users users[3], string prava_dostupa[5], int num)
  22. {
  23.     int i;
  24.     for (i = 0; i < 3; i++)
  25.     {
  26.         if (i == num) //если встретился админ
  27.         {
  28.             users[i].file1 = prava_dostupa[0];
  29.             users[i].file2 = prava_dostupa[0];
  30.             users[i].file3 = prava_dostupa[0];
  31.             users[i].file4 = prava_dostupa[0];
  32.         }
  33.         else {
  34.             users[i].file1 = prava_dostupa[rand() % 5];
  35.             users[i].file2 = prava_dostupa[rand() % 5];
  36.             users[i].file3 = prava_dostupa[rand() % 5];
  37.             users[i].file4 = prava_dostupa[rand() % 5];
  38.         }
  39.     }
  40. }
  41. void func_grant(Users user, Users users[3], string name, int num, string pravo) {
  42.     int o = 0;
  43.     int indicator = 0;
  44.     if (pravo == "read") {
  45.         pravo = "чтение";
  46.     }
  47.     else if (pravo == "write") {
  48.         pravo = "запись";
  49.     }
  50.     else if (pravo == "all") {
  51.         pravo = "полные права";
  52.     }
  53.     else {indicator = 1; }
  54.     if (indicator == 0) {
  55.         for (int i = 0; i < 3; i++) {
  56.             if (name == users[i].username) {
  57.                 if (num == 1) {
  58.                     users[i].file1 = pravo; cout << "Успешно .Жду указаний "; string delo; cin >> delo; checking_delo(user, delo, users);
  59.                    
  60.                 }
  61.                 else if (num == 2) {
  62.                     users[i].file2 = pravo; cout << "Успешно .Жду указаний "; string delo; cin >> delo; checking_delo(user, delo, users);
  63.                    
  64.                 }
  65.                 else if (num == 3) {
  66.                     users[i].file3 = pravo; cout << "Успешно .Жду указаний "; string delo; cin >> delo; checking_delo(user, delo, users);
  67.                    
  68.                 }
  69.                 else if (num == 4) {
  70.                     users[i].file4 = pravo; cout << "Успешно .Жду указаний ";// string delo; cin >> delo; checking_delo(user, delo, users);
  71.                     pokaz_prav(users[0]); pokaz_prav(users[1]); pokaz_prav(users[2]);
  72.                 }
  73.  
  74.             }
  75.             else {
  76.                 o++;
  77.             }
  78.             if (o == 3) {
  79.                 cout << "Операция невозможна тк такого пользователя не существует.Жду указаний ";
  80.                 string delo;
  81.                 cin >> delo;
  82.                 checking_delo(user, delo, users);
  83.             }
  84.         }
  85.     }
  86.     else {
  87.         cout << "Такой операции не существует. Жду указаний "; string delo; cin >> delo; checking_delo(user, delo, users);
  88.  
  89.     }
  90. }
  91. void doing(Users user, Users users[3], string delo, int num) {
  92.     int i;
  93.     string prava_usera[5] = { "none", user.file1, user.file2,user.file3,user.file4 };
  94.     if (delo == "read" or delo == "write") {
  95.         for (i = 1; i < 5; i++) {
  96.             if (num == i) {
  97.                 if (delo == "read" and (prava_usera[i] == "чтение" or prava_usera[i] == "чтение и запись" or prava_usera[i] == "полные права")) {
  98.                     cout << "Операция прошла успешно. Жду указаний ";
  99.                     cin >> delo;
  100.                     checking_delo(user, delo, users);
  101.                 }
  102.                 else if (delo == "write" and (prava_usera[i] == "запись" or prava_usera[i] == "чтение и запись" or prava_usera[i] == "полные права")) {
  103.                     cout << "Операция прошла успешно. Жду указаний ";
  104.                     cin >> delo;
  105.                     checking_delo(user, delo, users);
  106.                 }
  107.                 else
  108.                 {
  109.                     cout << "Нет прав на подобное действие. Жду указаний ";
  110.                     cin >> delo;
  111.                     checking_delo(user, delo, users);
  112.                 }
  113.             }
  114.         }
  115.     }
  116.     else {
  117.         for (i = 1; i < 5; i++) {
  118.             if (num == i) {
  119.                 if (prava_usera[i] == "полные права") {
  120.                     cout << "\nКакое право передаётся? ";
  121.                     string pravo;
  122.                     cin >> pravo;
  123.                     cout << "\nКакому пользователю передаётся право? ";
  124.                     string name;
  125.                     cin >> name;
  126.                     func_grant(user,users, name,num,pravo);
  127.                    
  128.                 }
  129.                 else { cout << "отказ в выполнении"; }
  130.             }
  131.         }
  132.     }
  133. }
  134. void checking_delo(Users user, string delo, Users users[3]) {
  135.     int p;
  136.     if (delo == "read" or delo == "write") {
  137.         cout << "\nПринято. Над каким объектом совершается действие? ";
  138.         int num;
  139.         cin >> num;
  140.         doing(user, users, delo, num);
  141.     }
  142.     else if (delo == "grant")
  143.     {
  144.         cout << "\nПринято. Право на какой объект передается? ";
  145.         int num;
  146.         cin >> num;
  147.         doing(user, users, delo, num);
  148.     }
  149.     else if (delo == "quit") {
  150.         cout << "\nВыход для смены пользователя осуществлён. Имя либо выход ";
  151.         string username;
  152.         cin >> username;
  153.         if (username!="exit") {
  154.             checking_names(users, username);
  155.         }
  156.         else {
  157.             cout << "\nРабота системы завершена. Приятного дня.";
  158.         }
  159.     }
  160.     else if (delo == "exit") {
  161.         cout << "\nРабота системы завершена. Приятного дня.";
  162.     }
  163.     else {
  164.         cout << "\nНевозможно такое действие. Введите повторно.";
  165.         cin >> delo;
  166.         checking_delo(user, delo, users);
  167.     }
  168.  
  169. }
  170. void pokaz_prav(Users user)
  171. {
  172.     cout << "\nUsername: " << user.username << "\n";
  173.     cout << "file1: " << user.file1 << "\n";
  174.     cout << "file2: " << user.file2 << "\n";
  175.     cout << "file3: " << user.file3 << "\n";
  176.     cout << "file4: " << user.file4 << "\n";
  177. }
  178. void checking_names(Users users[3], string username) {
  179.     cout << "\nПодождите выполняется проверка";
  180.     int i;
  181.     int o = 0;
  182.     string delo;//для хотелок пользователя
  183.     for (i = 0; i < 3; i++) {
  184.         if (username == users[i].username) {
  185.             cout << "\nДобро пожаловать! " << users[i].username << " Ваши права";
  186.             pokaz_prav(users[i]);
  187.             cout << "\n Чего хотите?";
  188.             cin >> delo;
  189.             checking_delo(users[i], delo, users);
  190.             break;
  191.         }
  192.         else {
  193.             o++;
  194.         }
  195.         if (o == 3) {
  196.             cout << "\nНет такого пользователя. Попробуйте ещё раз. Введите имя ";
  197.             cin >> username;
  198.             int n = 0;
  199.             checking_names(users, username);
  200.         }
  201.     }
  202. }
  203.    
  204.  
  205.  
  206.  
  207. int main()
  208. {
  209.     setlocale(LC_ALL, "");
  210.     string user_logins[3] = { "Vasia","Petia","Nikita" };
  211.     string prava_dostupa[5] = { "полные права","чтение","запись" ,"чтение и запись" ,"нет прав" };
  212.     int i, num;
  213.  
  214.     srand(time(0));
  215.     Users users[3]; //создается массив структур
  216.     for (i = 0; i < 3; i++)
  217.     {
  218.         users[i].username = user_logins[i];  // вводятся имена юзеров
  219.     }
  220.     for (i = 0; i < 3; i++)
  221.     {
  222.         cout << users[i].username << "\n";
  223.     }
  224.     num = rand() % 3; //num для рандомного выбора администратора
  225.     for (i = 0; i < 3; i++)
  226.     {
  227.         razdacha_prav(users, prava_dostupa, num); //раздаются права юзерам
  228.     }
  229.     //pokaz_prav(users[0]); pokaz_prav(users[1]); pokaz_prav(users[2]);
  230.     string nam;
  231.     cout << "\nВаше имя?";
  232.     cin >> nam;
  233.     cout << " " << nam;
  234.     checking_names(users, nam); //проверка пользователя
  235.     system("pause");
  236.  
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement