DirtyBilly

BankAccount

Apr 1st, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.89 KB | None | 0 0
  1. package BankAccount;
  2.  
  3. /**
  4.  * Created by Bogdan on 09.02.2017.
  5.  */
  6. public class ATM
  7. {
  8.     public static void main(String[] args) {
  9.         Menu menu = new Menu();
  10.         menu.firstMenu();
  11.     }
  12. }
  13.  
  14. package BankAccount;
  15.  
  16. import java.util.Scanner;
  17.  
  18. /**
  19.  * Created by Bogdan on 09.02.2017.
  20.  */
  21. public class Menu {
  22.     private DataBase db = new DataBase();
  23.     private boolean isTrue = false;
  24.     private Scanner sc = new Scanner(System.in);
  25.     private double balance = 0;
  26.     private int id = 0;
  27.  
  28.     private void join(){ //Авторизация пользователя
  29.         while(!isTrue){
  30.             System.out.print("Email: ");
  31.             String email = sc.nextLine();
  32.  
  33.             System.out.print("Пароль: ");
  34.             String pass = sc.nextLine();
  35.  
  36.             if (!db.hasAccount(email, pass)){
  37.                 System.out.println("\nНе правильный логин или пароль.\n");
  38.             } else {
  39.                 isTrue = true;
  40.                 userID(db.getUserID(email));
  41.             }
  42.         }
  43.         user_menu();
  44.     }
  45.  
  46.     private void userID(int id){
  47.         this.id = id;
  48.     }
  49.  
  50.     private void sign_up(){ // Регистрация пользователя
  51.             System.out.print("Введите имя: ");
  52.         String name = sc.nextLine();
  53.             System.out.print("Введите фамилию: ");
  54.         String lastname = sc.nextLine();
  55.             System.out.print("Email: ");
  56.         String email = sc.nextLine();
  57.             System.out.print("Пароль: ");
  58.         String pass = sc.nextLine();
  59.             System.out.print("Повторите пароль: ");
  60.         String pass2 = sc.nextLine();
  61.  
  62.         while(true) {
  63.             if (pass.equals(pass2)) {
  64.                 if(!db.hasAccount(email)){
  65.                     System.out.println("\nРегистрация окончена! Идет переход к авторизации...");
  66.                     db.addAccount(name, lastname, email, pass);
  67.                     join();
  68.                     break;
  69.                 } else {
  70.                     System.out.println("\nАккаунт с таким Email уже существует. Введите другой Email\n");
  71.                     System.out.print("Email: ");
  72.                     email = sc.nextLine();
  73.                     System.out.print("Пароль: ");
  74.                     pass = sc.nextLine();
  75.                     System.out.print("Повторите пароль: ");
  76.                     pass2 = sc.nextLine();
  77.                 }
  78.             } else {
  79.                 System.out.println("\nПароли не совпадают. Повторите попытку\n");
  80.                 System.out.print("Пароль: ");
  81.                 pass = sc.nextLine();
  82.                 System.out.print("Повторите пароль: ");
  83.                 pass2 = sc.nextLine();
  84.             }
  85.         }
  86.     }
  87.  
  88.     private void exit(){ // Выход из программы
  89.         System.out.println("Закрытие программы...");
  90.         System.exit(0);
  91.     }
  92.  
  93.     private void back(){
  94.         String a;
  95.         System.out.print("Нажмите 2 чтобы вернутся в меню:");
  96.         a = sc.next();
  97.         while(!a.equals("2")) {
  98.             System.out.print("\nВведите другой символ: ");
  99.             a = sc.next();
  100.         }
  101.         user_menu();
  102.     }
  103.  
  104.     private void withdraw(){ //Вывод денег
  105.         balance = db.getBalance(id);
  106.         System.out.print("Введите сумму которую вы хотите вывести($): ");
  107.         double sum = sc.nextDouble();
  108.         while(true) {
  109.             if (balance > sum) {
  110.                 balance -= sum;
  111.                 db.setBalance(balance, id);
  112.                 break;
  113.             } else {
  114.                 System.out.println("На вашем балансе нет столько денег");
  115.                 sum = sc.nextDouble();
  116.             }
  117.         }
  118.         System.out.println("\nНа вашем балансе: " + db.getBalance(id)+"$");
  119.     }
  120.  
  121.     private double balance() { // Пополнение баланса
  122.         System.out.print("Введите сумму которую хотите внести($):");
  123.         int num = sc.nextInt();
  124.         balance += num;
  125.         System.out.printf("\nВаш баланс пополнен на %d$\n",num);
  126.         db.setBalance(balance,id);
  127.         return balance;
  128.     }
  129.  
  130.     private double getBalance(){ //Баланс пользователя
  131.         balance = db.getBalance(id);
  132.         return balance;
  133.     }
  134.  
  135.     public void firstMenu(){ // Меню авторизации и регистрации
  136.         System.out.println("|-------------------|");
  137.         System.out.println("|  1) Вход          |");
  138.         System.out.println("|  2) Регистрация   |");
  139.         System.out.println("|-------------------|");
  140.  
  141.         while(true){
  142.             System.out.println();
  143.             System.out.print("Введите номер пункта (1-2) который вы хотите выбрать: ");
  144.             String num = sc.nextLine();
  145.  
  146.             if (num.equals("1")){
  147.                 System.out.println("\nПереход к авторизации...\n");
  148.                 join();
  149.                 break;
  150.             } else if (num.equals("2")){
  151.                 System.out.println("\nПереход к регистрации...\n");
  152.                 sign_up();
  153.                 break;
  154.             } else {
  155.                 System.out.println("\n*** Ошибка, введите другой символ! ***");
  156.             }
  157.         }
  158.     }
  159.  
  160.     private void user_menu(){ //Меню пользователя
  161.  
  162.         System.out.println("\n    1) Баланс");
  163.         System.out.println("    2) Пополнить");
  164.         System.out.println("    3) Вывести");
  165.         System.out.println("    4) Выход");
  166.         int num;
  167.         while(true){
  168.             System.out.print("\nВведите номер пункта (1-4) который вы хотите выбрать: ");
  169.             num = sc.nextInt();
  170.             switch (num) {
  171.                 case 1:
  172.                     System.out.println("На вашем балансе: " + getBalance() + "$");
  173.                     back();
  174.                     break;
  175.                 case 2:
  176.                     balance();
  177.                     back();
  178.                     break;
  179.                 case 3:
  180.                     withdraw();
  181.                     back();
  182.                     break;
  183.                 case 4:
  184.                     exit();
  185.                 default:
  186.                     System.out.println("\n*** Ошибка, введите другой символ! ***");
  187.             }
  188.         }
  189.     }
  190. }
  191.  
  192. package BankAccount;
  193.  
  194. import java.sql.*;
  195. /**
  196.  * Created by Bogdan on 10.02.2017.
  197.  */
  198. public class DataBase {
  199.     private final String url = "jdbc:mysql://localhost:3306/accountdb";
  200.     private Connection connection = null;
  201.     private ResultSet rs = null;
  202.     private PreparedStatement ps = null;
  203.  
  204.     //Подключение к БД
  205.     private void connect(){
  206.  
  207.         try {
  208.             connection = DriverManager.getConnection(url,"root","root");
  209.         }
  210.         catch (Exception e){
  211.             System.err.println(e.getMessage());
  212.         }
  213.     }
  214.     /*
  215.     Запись аккаунта в в БД
  216.      */
  217.     public void addAccount(String name, String lastname, String email, String password) {
  218.         try {
  219.             String query = " insert into account (name, lastname, email, password, balance)" + " values (?, ?, ?, ?, ?)";
  220.             ps = connection.prepareStatement(query);
  221.             ps.setString(1, name);
  222.             ps.setString(2, lastname);
  223.             ps.setString(3, email);
  224.             ps.setString(4, password);
  225.             ps.setInt(5,0);
  226.  
  227.             ps.execute();
  228.             connection.close();
  229.         }
  230.         catch (Exception e){
  231.             System.err.println(e.getMessage());
  232.         }
  233.  
  234.     }
  235.  
  236.     //Получение ID пользователя
  237.     //Нужен для того чтобы определить какого пользователя баланс нужно получить или обновить.
  238.     //Принцип работы:
  239.     //При авторизации, если она успешна, получаю ID пользователя с помощью его Email
  240.     public int getUserID(String email){
  241.         String query = "select id from account where email = ?";
  242.         int id = 0;
  243.         try {
  244.             ps = connection.prepareStatement(query);
  245.             ps.setString(1,email);
  246.             rs = ps.executeQuery();
  247.             while(rs.next()){
  248.                 id = rs.getInt("id");
  249.                 return id;
  250.             }
  251.             connection.close();
  252.         } catch (SQLException e) {
  253.             e.printStackTrace();
  254.         }
  255.         return id;
  256.     }
  257.  
  258.     //Проверка существует ли аккаунт с таким Email
  259.     public boolean hasAccount(String email){
  260.         String query = "select email from account where email=?";
  261.         try {
  262.             connect();
  263.             ps = connection.prepareStatement(query);
  264.             ps.setString(1,email);
  265.             rs = ps.executeQuery();
  266.             while(rs.next()) {
  267.                 if (rs.getString(1).equals(email)) {
  268.                     return false;
  269.                 } else {
  270.                     return true;
  271.                 }
  272.             }
  273.             connection.close();
  274.         } catch (SQLException e) {
  275.             e.printStackTrace();
  276.             return false;
  277.         }
  278.         return false;
  279.     }
  280.  
  281.     //Обновление баланса пользователя в БД
  282.     public void setBalance(double balance, int userid){
  283.         String query = "update account set balance = ? where id=? ";
  284.  
  285.         try {
  286.             connect();
  287.             ps = connection.prepareStatement(query);
  288.             ps.setDouble(1, balance);
  289.             ps.setInt(2, userid);
  290.             ps.executeUpdate();
  291.             connection.close();
  292.         } catch (SQLException e) {
  293.             e.printStackTrace();
  294.         }
  295.     }
  296.     // получение баланса пользователя из БД
  297.     public double getBalance(int userid) {
  298.         String query = "select balance from account where id =?";
  299.         double balance = 0;
  300.         try {
  301.             connect();
  302.             ps = connection.prepareStatement(query);
  303.             ps.setInt(1,userid);
  304.             rs = ps.executeQuery();
  305.             while(rs.next()){
  306.                 balance = rs.getDouble("balance");
  307.                 return balance;
  308.             }
  309.             connection.close();
  310.         } catch (SQLException e) {
  311.             e.printStackTrace();
  312.         }
  313.         return balance;
  314.     }
  315.  
  316.     /*
  317.     Проверка существует ли аккаунт в БД с таким Email и паролем.
  318.     Если такой аккаунт существует то идет авторизация.
  319.      */
  320.     public boolean hasAccount(String email, String password){
  321.         String query = "select email,password from account where email=?";
  322.         try {
  323.             connect();
  324.             ps = connection.prepareStatement(query);
  325.             ps.setString(1,email);
  326.             rs = ps.executeQuery();
  327.                 while(rs.next()) {
  328.                     if (rs.getString(1).equals(email) && rs.getString(2).equals(password)) {
  329.                         System.out.println("\nАвторизация прошла успешно...\n");
  330.                         return true;
  331.                     } else {
  332.                         return false;
  333.                     }
  334.                 }
  335.             connection.close();
  336.         } catch (SQLException e) {
  337.             e.printStackTrace();
  338.             return false;
  339.         }
  340.         return false;
  341.     }
  342. }
Add Comment
Please, Sign In to add comment