Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define natural unsigned short
- void Rights_admin();
- int main() {
- Rights_admin();
- }
- typedef enum { Read = 1, Write = 2, Delete = 4, Rename = 8, Copy = 16, All = 31 }rights;
- void Add_rights(char *user, rights Right) {
- *user |= Right;
- }
- void Remove_rights(char *user, rights Right) {
- *user &= ~Right;
- }
- void Show_rights(char user, natural i) {
- if (user == 31)
- printf("Utilizatorul %hu are drepturi depline.\n", i + 1);
- else if (user == 0)
- printf("Utilizatorul %hu nu are drepturi asupra acestui fiser.\n", i + 1);
- else {
- printf("Utilizatorul %hu are drepturile: ", i + 1);
- if (user & Read)
- printf("Citire, ");
- if (user & Write)
- printf("Scriere, ");
- if (user & Delete)
- printf("Stergere, ");
- if (user & Rename)
- printf("Redenumire, ");
- if (user & Copy)
- printf("Copiere, ");
- printf("\b\b. \n");
- }
- }
- void Rights_admin() {
- natural numberUsers, i, option, option2;
- char *users;
- do {
- printf("Introduceti numarul de utilizatori: "); scanf("%hu", &numberUsers);
- } while (!numberUsers);
- users = (char *)malloc(sizeof(char) * numberUsers);
- for (i = 0; i < numberUsers; i++) users[i] = 0;
- Add_rights(&users[0], All);
- do {
- printf("\nPrimul utilizator are drepturi depline.\n\n");
- printf("0. Introarcere in main.\n");
- printf("1. Adaugare de drepturi.\n");
- printf("2. Scoatere de drepturi.\n");
- printf("3. Afisarare drepturilor utilizatorilor.\n");
- printf("Introduceti optiunea dorita: "); scanf("%hu", &option);
- system("cls");
- switch (option)
- {
- case 1:
- printf("Utilizatorul caruia i se adauga: "); scanf("%hu", &i);
- i--;
- if (!i) {
- printf("\nPrimul utilizator nu se poate modifica.\n\n");
- continue;
- }
- printf("\nIntroduceti cifrele corspunzatoare drepturilor dorite!\n");
- printf("1. Citire.\n");
- printf("2. Scriere.\n");
- printf("3. Stergere.\n");
- printf("4. Redenumire.\n");
- printf("5. Copiere.\n");
- printf("6. Toate.\n");
- printf("Introduceti optiunea dorita: "); scanf("%hu", &option2);
- do {
- switch (option2 % 10) {
- case 1: Add_rights(&users[i], Read);
- break;
- case 2: Add_rights(&users[i], Write);
- break;
- case 3: Add_rights(&users[i], Delete);
- break;
- case 4: Add_rights(&users[i], Rename);
- break;
- case 5: Add_rights(&users[i], Copy);
- break;
- default:
- break;
- }
- if (option2 % 10 == 6) {
- Add_rights(&users[i], All);
- break;
- }
- option2 /= 10;
- } while (option2);
- break;
- case 2:
- printf("Utilizatorul caruia i se scoate: "); scanf("%hu", &i);
- i--;
- if (!i) {
- printf("Primul utilizator nu se poate modifica\n");
- continue;
- }
- printf("\nIntroduceti cifrele corspunzatoare drepturilor dorite!\n");
- printf("1. Citire.\n");
- printf("2. Scriere.\n");
- printf("3. Stergere.\n");
- printf("4. Redenumire.\n");
- printf("5. Copiere.\n");
- printf("6. Toate\n");
- printf("Introduceti optiunea dorita: "); scanf("%hu", &option2);
- do {
- switch (option2 % 10) {
- case 1: Remove_rights(&users[i], Read);
- break;
- case 2: Remove_rights(&users[i], Write);
- break;
- case 3: Remove_rights(&users[i], Delete);
- break;
- case 4: Remove_rights(&users[i], Rename);
- break;
- case 5: Remove_rights(&users[i], Copy);
- break;
- default:
- break;
- }
- if (option2 % 10 == 6) {
- Remove_rights(&users[i], All);
- break;
- }
- option2 /= 10;
- } while (option2);
- break;
- case 3:
- for (i = 0; i < numberUsers; i++)
- Show_rights(users[i], i);
- break;
- default:
- printf("Date introduse gresit!\n");
- break;
- }
- } while (option);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement