Advertisement
Alx09

Drepturi adminstrare fiser

Mar 1st, 2021
721
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.70 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define natural unsigned short
  5.  
  6. void Rights_admin();
  7.  
  8. int main() {
  9. Rights_admin();
  10.            
  11. }
  12.  
  13. typedef enum { Read = 1, Write = 2, Delete = 4, Rename = 8, Copy = 16, All = 31 }rights;
  14.  
  15. void Add_rights(char *user, rights Right) {
  16.     *user |= Right;
  17. }
  18.  
  19. void Remove_rights(char *user, rights Right) {
  20.     *user &= ~Right;
  21. }
  22.  
  23. void Show_rights(char user, natural i) {
  24.     if (user == 31)
  25.         printf("Utilizatorul %hu are drepturi depline.\n", i + 1);
  26.     else if (user == 0)
  27.         printf("Utilizatorul %hu nu are drepturi asupra acestui fiser.\n", i + 1);
  28.     else {
  29.         printf("Utilizatorul %hu are drepturile: ", i + 1);
  30.         if (user & Read)
  31.             printf("Citire, ");
  32.         if (user & Write)
  33.             printf("Scriere, ");
  34.         if (user & Delete)
  35.             printf("Stergere, ");
  36.         if (user & Rename)
  37.             printf("Redenumire, ");
  38.         if (user & Copy)
  39.             printf("Copiere, ");
  40.  
  41.         printf("\b\b. \n");
  42.     }
  43.  
  44. }
  45.  
  46. void Rights_admin() {
  47.     natural numberUsers, i, option, option2;
  48.     char *users;
  49.     do {
  50.         printf("Introduceti numarul de utilizatori: "); scanf("%hu", &numberUsers);
  51.     } while (!numberUsers);
  52.     users = (char *)malloc(sizeof(char) * numberUsers);
  53.     for (i = 0; i < numberUsers; i++) users[i] = 0;
  54.     Add_rights(&users[0], All);
  55.     do {
  56.  
  57.         printf("\nPrimul utilizator are drepturi depline.\n\n");
  58.         printf("0. Introarcere in main.\n");
  59.         printf("1. Adaugare de drepturi.\n");
  60.         printf("2. Scoatere de drepturi.\n");
  61.         printf("3. Afisarare drepturilor utilizatorilor.\n");
  62.         printf("Introduceti optiunea dorita: "); scanf("%hu", &option);
  63.         system("cls");
  64.  
  65.         switch (option)
  66.         {
  67.         case 1:
  68.             printf("Utilizatorul caruia i se adauga: "); scanf("%hu", &i);
  69.             i--;
  70.             if (!i) {
  71.                 printf("\nPrimul utilizator nu se poate modifica.\n\n");
  72.                 continue;
  73.             }
  74.             printf("\nIntroduceti cifrele corspunzatoare drepturilor dorite!\n");
  75.             printf("1. Citire.\n");
  76.             printf("2. Scriere.\n");
  77.             printf("3. Stergere.\n");
  78.             printf("4. Redenumire.\n");
  79.             printf("5. Copiere.\n");
  80.             printf("6. Toate.\n");
  81.             printf("Introduceti optiunea dorita: "); scanf("%hu", &option2);
  82.             do {
  83.                 switch (option2 % 10) {
  84.                 case 1: Add_rights(&users[i], Read);
  85.                     break;
  86.                 case 2: Add_rights(&users[i], Write);
  87.                     break;
  88.                 case 3: Add_rights(&users[i], Delete);
  89.                     break;
  90.                 case 4: Add_rights(&users[i], Rename);
  91.                     break;
  92.                 case 5: Add_rights(&users[i], Copy);
  93.                     break;
  94.                 default:
  95.                     break;
  96.                 }
  97.                 if (option2 % 10 == 6) {
  98.                     Add_rights(&users[i], All);
  99.                     break;
  100.                 }
  101.                 option2 /= 10;
  102.             } while (option2);
  103.             break;
  104.         case 2:
  105.             printf("Utilizatorul caruia i se scoate: "); scanf("%hu", &i);
  106.             i--;
  107.             if (!i) {
  108.                 printf("Primul utilizator nu se poate modifica\n");
  109.                 continue;
  110.             }
  111.             printf("\nIntroduceti cifrele corspunzatoare drepturilor dorite!\n");
  112.             printf("1. Citire.\n");
  113.             printf("2. Scriere.\n");
  114.             printf("3. Stergere.\n");
  115.             printf("4. Redenumire.\n");
  116.             printf("5. Copiere.\n");
  117.             printf("6. Toate\n");
  118.             printf("Introduceti optiunea dorita: "); scanf("%hu", &option2);
  119.             do {
  120.                 switch (option2 % 10) {
  121.                 case 1: Remove_rights(&users[i], Read);
  122.                     break;
  123.                 case 2: Remove_rights(&users[i], Write);
  124.                     break;
  125.                 case 3: Remove_rights(&users[i], Delete);
  126.                     break;
  127.                 case 4: Remove_rights(&users[i], Rename);
  128.                     break;
  129.                 case 5: Remove_rights(&users[i], Copy);
  130.                     break;
  131.                 default:
  132.                     break;
  133.                 }
  134.                 if (option2 % 10 == 6) {
  135.                     Remove_rights(&users[i], All);
  136.                     break;
  137.                 }
  138.                 option2 /= 10;
  139.             } while (option2);
  140.             break;
  141.         case 3:
  142.             for (i = 0; i < numberUsers; i++)
  143.                 Show_rights(users[i], i);
  144.             break;
  145.         default:
  146.             printf("Date introduse gresit!\n");
  147.             break;
  148.         }
  149.     } while (option);
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement