Преглед изворни кода

Правки обработки запросов клиента.

Alec пре 4 година
родитељ
комит
882cac5c13

BIN
out/production/ExampleJavaList/com/company/Bank.class


BIN
out/production/ExampleJavaList/com/company/Client$1.class


BIN
out/production/ExampleJavaList/com/company/Client.class


BIN
out/production/ExampleJavaList/com/company/Main.class


+ 30 - 1
src/com/company/Bank.java

@@ -133,20 +133,30 @@ public class Bank {
     public static void showClientsInfo() {
         Bill current = head;
 
+        System.out.println("\nStart client list info:");
         while (current != null) {
             System.out.printf("Bill number: %s; Client: %s; Passport: %s; Phone: %s; Balance: %.2f;\n", current.getNumber(), current.getName(), current.getPassport(), current.getPhone(), current.getBalance());
             current = current.next;
         }
+        System.out.println("End client list info.\n");
     }
 
     /**
-     * Пополнить баланс
+     * Пополнить баланс (только свой счёт)
      *
      * @param value пополняемое значение
      * @param bill  пополняемый номер счёта
      */
     public static void deposit(double value, String bill) {
+        Bill current = head;
 
+        while (current != null) {
+            if (bill.equals(current.getNumber())) {
+                current.deposit(value);
+                break;
+            }
+            current = current.next;
+        }
     }
 
     /**
@@ -156,7 +166,15 @@ public class Bank {
      * @param bill  номер счёта для списания
      */
     public static void withdraw(double value, String bill) {
+        Bill current = head;
 
+        while (current != null) {
+            if (bill.equals(current.getNumber())) {
+                current.withdraw(value);
+                break;
+            }
+            current = current.next;
+        }
     }
 
     /**
@@ -165,6 +183,17 @@ public class Bank {
      * @param bill номер удаляемого счёта
      */
     public static void delete(String bill) {
+        Bill current = head;
+        Bill last = head;
+
+        while (current != null) {
+            if (bill.equals(current.getNumber())) {
+                last.next = current.next;
+                break;
+            }
 
+            last = current;
+            current = current.next;
+        }
     }
 }

+ 14 - 0
src/com/company/Bill.java

@@ -47,6 +47,20 @@ public class Bill {
         return balance;
     }
 
+    public void deposit(double value) {
+        if (value > 0) {
+            balance += value;
+        }
+    }
+
+    public void withdraw(double value) {
+        if (value > 0) {
+            if (balance >= value) {
+                balance -= value;
+            }
+        }
+    }
+
     public String getPassport() {
         return passport;
     }

+ 17 - 11
src/com/company/Client.java

@@ -30,24 +30,27 @@ public class Client extends Thread {
 
     @Override
     public void run() {
-        while (!isInterrupted()) {
-            try {
-                // Принимаем сообщение от клиента
+        try {
+            // Принимаем сообщение от клиента
 
-                ObjectInputStream objectInputStream = new ObjectInputStream(is);
-                ObjectOutputStream objectOutputStream = new ObjectOutputStream(os);
+            ObjectInputStream objectInputStream = new ObjectInputStream(is);
+            ObjectOutputStream objectOutputStream = new ObjectOutputStream(os);
 
+            while (!isInterrupted()) {
                 UserMessage userMessage = (UserMessage) objectInputStream.readObject();
                 switch (userMessage.TYPE) {
                     case AUTHORIZATION:
+                        System.out.println("Авторизация");
                         authorized = Bank.authorization(userMessage.BILL_NUMBER, userMessage.PIN);
                         break;
                     case SIGN_CONTRACT:
+                        System.out.println("Открытие счёта");
                         SecretData secretData = Bank.insert(userMessage.PASSPORT, userMessage.PHONE, userMessage.FULLNAME, userMessage.BALANCE);
                         objectOutputStream.writeObject(secretData);
                         objectOutputStream.flush();
                         continue;
                     case BREAK_CONTRACT:
+                        System.out.println("Закрытие счёта");
                         if (!authorized) {
                             System.out.println("Для совершения операций со счётом необходимо авторизоваться");
                             objectOutputStream.writeObject(new SendMessage("Действие не выполнено! Необходимо авторизоваться."));
@@ -57,6 +60,7 @@ public class Client extends Thread {
                         Bank.delete(userMessage.BILL_NUMBER);
                         break;
                     case DEPOSIT:
+                        System.out.println("Пополнение");
                         if (!authorized) {
                             System.out.println("Для совершения операций со счётом необходимо авторизоваться");
                             objectOutputStream.writeObject(new SendMessage("Действие не выполнено! Необходимо авторизоваться."));
@@ -66,6 +70,7 @@ public class Client extends Thread {
                         Bank.deposit(userMessage.BALANCE, userMessage.BILL_NUMBER);
                         break;
                     case WITHDRAW:
+                        System.out.println("Снятие");
                         if (!authorized) {
                             System.out.println("Для совершения операций со счётом необходимо авторизоваться");
                             objectOutputStream.writeObject(new SendMessage("Действие не выполнено! Необходимо авторизоваться."));
@@ -80,16 +85,17 @@ public class Client extends Thread {
 
                 objectOutputStream.writeObject(new SendMessage("Действие успешно выполнено"));
                 objectOutputStream.flush();
+            }
+        } catch (ClassNotFoundException | IOException exception) {
 
-            } catch (ClassNotFoundException | IOException exception) {
-                System.out.println(new Timestamp(System.currentTimeMillis()) + " Client disconnected: " + socket.getInetAddress().getHostAddress());
-                if (exception.getMessage() != null) {
-                    System.out.println(exception.getMessage());
-                }
-                interrupt();
+            if (exception.getMessage() != null) {
+                System.out.println(exception.getMessage());
             }
+            interrupt();
         }
 
+        System.out.println(new Timestamp(System.currentTimeMillis()) + " Client disconnected: " + socket.getInetAddress().getHostAddress());
+
         try {
             is.close();
             os.close();

+ 23 - 1
src/com/company/Main.java

@@ -4,14 +4,36 @@ import java.io.IOException;
 
 public class Main {
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Throwable {
         Bank.setName("Сберыч");
 
+        Task task = new Task();
+        task.start();
+
         try {
             Server server = new Server();
             server.Run();
         } catch (IOException exception) {
             System.out.println(exception.getMessage());
         }
+
+        task.interrupt();
+        task.join();
     }
 }
+
+class Task extends Thread {
+    @Override
+    public void run() {
+        while (!isInterrupted()) {
+
+            Bank.showClientsInfo();
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException exception) {
+                System.out.println(exception.getMessage());
+            }
+        }
+    }
+}