Advertisement
Guest User

Untitled

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