Advertisement
Guest User

Untitled

a guest
May 26th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.94 KB | None | 0 0
  1.  
  2. import javax.annotation.processing.SupportedSourceVersion;
  3. import java.io.*;
  4. import java.util.ArrayList;
  5. import java.util.Scanner;
  6.  
  7. public class Main {
  8.  
  9.     public static void main(String[] args) {
  10.         ArrayList<Key> keys = new ArrayList<>();
  11.         ArrayList<Door> doors = new ArrayList<>();
  12.         ArrayList<User> users = new ArrayList<>();
  13.         Scanner in = new Scanner(System.in);
  14.  
  15. //        users.add(new User("Vasya", "vasya"));
  16. //        users.add(new User("Petya", "petya"));
  17. //        users.add(new User("Igor", "igor"));
  18. //        users.add(new User("root","root"));
  19. //
  20. //        keys.add(new Key(156, users.get(0)));
  21. //        keys.add(new Key(157, users.get(1)));
  22. //        keys.add(new Key(158, users.get(2)));
  23. //        keys.add(new Key(159, users.get(2)));
  24. //
  25. //        doors.add(new Door("VasyaRoom", 156));
  26. //        doors.add(new Door("PetyaRoom", 157));
  27. //        doors.add(new Door("IgorRoom", 158));ro
  28. //        doors.add(new Door("IgorRoom2", 159));
  29.  
  30.         File doorr = new File("doors.dat");
  31.         File keyy = new File("keys.dat");
  32.         File userr = new File("users.dat");
  33.  
  34.         if(doorr.exists()&&keyy.exists()&&userr.exists()) {
  35.             try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(doorr))) {
  36.                 doors = ((ArrayList<Door>) ois.readObject());
  37.             } catch (Exception ex) {
  38.                 System.out.println(ex.getMessage());
  39.             }
  40.  
  41.             try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(keyy))) {
  42.                 keys = ((ArrayList<Key>) ois.readObject());
  43.             } catch (Exception ex) {
  44.                 System.out.println(ex.getMessage());
  45.             }
  46.  
  47.             try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(userr))) {
  48.                 users = ((ArrayList<User>) ois.readObject());
  49.             } catch (Exception ex) {
  50.                 System.out.println(ex.getMessage());
  51.             }
  52.         }else {
  53.             System.out.println("Data was lost, can't work now");
  54.         }
  55.         String name;
  56.         String password;
  57.         System.out.print("Enter your name : ");
  58.         name = in.next();
  59.         System.out.print("Enter your password : ");
  60.         password = in.next();
  61.         User newUser = new User(name, password);
  62.  
  63.         start : for (User user : users) {
  64.             if (newUser.equals(user) && user.isRoot()) {
  65.                 System.out.println("congratulations, you are root");
  66.                 int change = 10;
  67.                 while (change != 0) {
  68.                     printAdminMenu();
  69.                     change = in.nextInt();
  70.                     switch (change) {
  71.                         case 1: {
  72.                             printSubMenu();
  73.                             int subChange = in.nextInt();
  74.                             switch (subChange) {
  75.                                 case 1:
  76.                                     printKeys(keys);
  77.                                     break;
  78.  
  79.                                 case 2: {
  80.                                     boolean userExists = false;
  81.                                     String keyOwner;
  82.                                     int number;
  83.                                     System.out.println("Enter name of new key owner");
  84.                                     keyOwner = in.next();
  85.                                     System.out.println("Enter a number of key");
  86.                                     number = in.nextInt();
  87.                                     Key newKey;
  88.                                     for(User user1 : users){
  89.                                         if(user1.name.equals(keyOwner)) {
  90.                                             System.out.println("User already have been added, now you added a key");
  91.                                             newKey = new Key(number,user1);
  92.                                             keys.add(newKey);
  93.                                             break;
  94.                                         }
  95.                                         else if (user1.equals(users.get(users.size() - 1))) {
  96.                                             System.out.println("User does not exists, try again");
  97.                                             break;
  98.                                         }
  99.                                     }
  100.  
  101.                                     break;
  102.                                 }
  103.                                 case 3: {
  104.                                     int number;
  105.                                     System.out.println("Enter a number of key to delete");
  106.                                     number = in.nextInt();
  107.                                     for (Key key : keys) {
  108.                                         if (key.number == number) {
  109.                                             keys.remove(key);
  110.                                             break;
  111.                                         }
  112.                                     }
  113.                                 }
  114.                                 break;
  115.                                 default:
  116.                                     System.out.println("unknown digit");
  117.                                     break;
  118.                             }
  119.  
  120.                             break;
  121.                         }
  122.  
  123.  
  124.                         case 2: {
  125.                             printSubMenu();
  126.                             int subChange = in.nextInt();
  127.                             switch (subChange) {
  128.                                 case 1: {
  129.                                     int numberOfDoor = 0;
  130.                                     for (Door door : doors) {
  131.                                         System.out.println(numberOfDoor + ". Door is " + door.name);
  132.                                         numberOfDoor++;
  133.                                     }
  134.                                     break;
  135.                                 }
  136.                                 case 2: {
  137.                                     System.out.println("Enter a name of door");
  138.                                     name = in.next();
  139.                                     System.out.println("Enter key value for door");
  140.                                     int keyVal = in.nextInt();
  141.                                     Door newDoor = new Door(name, keyVal);
  142.                                     doors.add(newDoor);
  143.                                     break;
  144.                                 }
  145.                                 case 3: {
  146.                                     String nameOfDoor;
  147.                                     System.out.println("Enter a name of door");
  148.                                     nameOfDoor = in.next();
  149.                                     for (Door door : doors) {
  150.                                         if (door.name.equals(nameOfDoor)) {
  151.                                             doors.remove(door);
  152.                                             break;
  153.                                         }
  154.                                     }
  155.                                     break;
  156.                                 }
  157.  
  158.                                 default:
  159.                                     System.out.println("unknown digit");
  160.                                     break;
  161.                             }
  162.  
  163.                             break;
  164.                         }
  165.                         case 3: {
  166.                             doorByKeys(doors, keys);
  167.                             break;
  168.                         }
  169.  
  170.                         case 4: {
  171.                             keyForDoors(doors, keys);
  172.                             break;
  173.                         }
  174.  
  175.                         case 5:{
  176.                             printSubMenu();
  177.                             int subChange = in.nextInt();
  178.                             switch (subChange){
  179.                                 case 1:{
  180.                                     int numberOfUser = 0;
  181.                                     for (User user1 : users) {
  182.                                         System.out.println(numberOfUser + ". User is " + user1.name);
  183.                                         numberOfUser++;
  184.                                     }
  185.                                     break;
  186.                                 }
  187.  
  188.                                 case 2: {
  189.                                     System.out.println("Enter a name of user");
  190.                                     name = in.next();
  191.                                     System.out.println("Enter a password for new user");
  192.                                     password = in.next();
  193.                                     User newUser1 = new User(name, password);
  194.                                     users.add(newUser1);
  195.                                     break;
  196.                                 }
  197.                                 case 3: {
  198.                                     String nameOfUser;
  199.                                     System.out.println("Enter a name of user");
  200.                                     nameOfUser = in.next();
  201.                                     for (User user1 : users) {
  202.                                         if (user1.name.equals(nameOfUser)) {
  203.                                             System.out.println("user found and was deleted");
  204.                                             users.remove(user1);
  205.                                             break;
  206.                                         }
  207.                                     }
  208.                                     break;
  209.                                 }
  210.                             }
  211.                             break;
  212.                         }
  213.                        
  214.                         case 0:
  215.                             break;
  216.                         default:
  217.                             System.out.println("unknown digit");
  218.                             break;
  219.  
  220.                     }
  221.                 }
  222.                 break start;
  223.             }
  224.             else if (newUser.equals(user)) {
  225.                 System.out.println("You have been logged as " + user.name);
  226.                 System.out.print("You have key(s) : ");
  227.                 for (Key key : keys) {
  228.                     for (Door door : doors) {
  229.                         if (key.owner.equals(newUser)) {
  230.                             if (door.canBeOpenedBy(key.number)) {
  231.                                 System.out.print(key.number + " from " + door.name + "; ");
  232.                             }
  233.                         }
  234.                     }
  235.  
  236.                 }
  237.                 break;
  238.             }
  239.  
  240.             else if (user.equals(users.get(users.size() - 1)))
  241.                 System.out.println("Incorrect username/password");
  242.  
  243.  
  244.         }
  245.  
  246.         try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("users.dat"))){
  247.             oos.writeObject(users);
  248.         } catch (Exception ex){
  249.             System.out.println(ex.getMessage());
  250.         }
  251.  
  252.         try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("doors.dat"))){
  253.             oos.writeObject(doors);
  254.         } catch (Exception ex){
  255.             System.out.println(ex.getMessage());
  256.         }
  257.  
  258.         try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("keys.dat"))){
  259.             oos.writeObject(keys);
  260.         } catch (Exception ex){
  261.             System.out.println(ex.getMessage());
  262.         }
  263.         try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("keys.dat"))){
  264.             for (Door dooor : doors) oos.writeObject(dooor);
  265.         }  catch (IOException ex){
  266.         System.out.println(ex.getMessage());
  267.     }
  268.  
  269.     }
  270.  
  271.  
  272.     public static void printAdminMenu(){
  273.         System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  274.         System.out.println("1. Edit keys list");
  275.         System.out.println("2. Edit doors list");
  276.         System.out.println("3. Make list of doors list that can be opened by one key");
  277.         System.out.println("4. Make list of keys that can open doors");
  278.         System.out.println("5. Edit users list");
  279.         System.out.println("0. Exit");
  280.         System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  281.     }
  282.  
  283.     static void  printSubMenu(){
  284.         System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  285.         System.out.println("1. Print list");
  286.         System.out.println("2. Add an item in list");
  287.         System.out.println("3. Remove an item from list");
  288.         System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  289.     }
  290.     static void userKeys(ArrayList<Key>keys,String owner){
  291.         Scanner in = new Scanner(System.in);
  292.         System.out.println("You have keys:");
  293.         int keyNumber=0;
  294.         for(Key key : keys){
  295.             if(key.owner.equals(owner)){
  296.                 System.out.println(keyNumber+". "+key.number+" key");
  297.                 keyNumber++;
  298.             }
  299.         }
  300.         System.out.println("Take a key >> ");
  301.         int takeKey = in.nextInt();
  302.         System.out.println(keys.get(takeKey).number);
  303.     }
  304.  
  305.     static void printKeys(ArrayList<Key>keys){
  306.         int numberOfKey = 0;
  307.         for (Key key : keys) {
  308.             System.out.println(numberOfKey+". Key is "+key.number + "; owner is "+key.owner.name);
  309.             numberOfKey++;
  310.         }
  311.     }
  312.     static void keyForDoors(ArrayList<Door>doors, ArrayList<Key>keys){
  313.         for (Key key : keys){
  314.             for (Door door : doors){
  315.                 if(door.canBeOpenedBy(key.number))
  316.                     System.out.println("Key "+key.number + " can open door " + door.name);
  317.             }
  318.         }
  319.     }
  320.     static void doorByKeys(ArrayList<Door>doors, ArrayList<Key>keys){
  321.         for (Door door : doors){
  322.             for (Key key : keys){
  323.                 if(door.canBeOpenedBy(key.number))
  324.                     System.out.println("Door "+door.name + " can be opened with "+key.number+ " key.");
  325.             }
  326.         }
  327.     }
  328. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement