Untitled

 avatar
unknown
plain_text
a month ago
20 kB
4
Indexable
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class Main {
    static ArrayList<user> users = new ArrayList<>();

    static class jsonValue {
        String JsonVal = "";
        jsonObject JsonObj = new jsonObject();
        jsonArray JsonArr = new jsonArray();
        int type;
    }

    static class user {
        String password;
        String name;
        int balance;
        ArrayList<tara> history = new ArrayList<>();
    }

    static class tara {
        String type;
        int balance;
        int id;
        String date;
        String first;
        String last;
    }

    static class jsonObject {
        HashMap<String, jsonValue> JsonObjhash = new HashMap<>();
    }

    static class jsonArray {
        ArrayList<jsonValue> JsonArr = new ArrayList<>();
    }

    public static void signup(String a, String b) {
        user newkarbar = new user();
        newkarbar.name = a;
        newkarbar.password = b;
        newkarbar.balance = 0;
        users.add(newkarbar);
    }

    public static int login(String a, String b) {
        for (int i = 0; i < users.size(); i++) {
            if (users.get(i).name.equals(a)) {
                if (users.get(i).password.equals(b)) {
                    return i;
                }
                return -1;
            }
        }
        return -2;
    }

    public static int finduserlocation(String a) {
        for (int i = 0; i < users.size(); i++) {
            if (users.get(i).name.equals(a)) {
                return i;
            }
        }
        return -1;
    }

    public static String dalqak(String a) {
        String javab = "";
        boolean test = false;
        for (int i = 0; i < a.length(); i++) {
            if (a.charAt(i) == '\\') {
                javab += "11";
                i++;
                continue;
            }
            if (a.charAt(i) == '"') {
                if (!test) {
                    test = true;
                    javab += "0";
                } else {
                    test = false;
                    javab += "0";
                }
            } else if (test) {
                javab += "1";
            } else {
                javab += "0";
            }
        }
        return javab;
    }

    public static jsonValue buildjsonvalue(String a, String check) {
        int l = isjsonvalue(a, check);
        jsonValue javab = new jsonValue();
        javab.type = l;
        if (l == 0) {
            System.out.println(0);
            System.exit(0);
        }
        if (l == 1) {
            javab.JsonVal = a;
        }
        if (l == 2) {
            javab.JsonArr = buildjsonarray(a, check);
        }
        if (l == 3) {
            javab.JsonObj = buildjsonobject(a, check);
        }
        return javab;
    }

    public static jsonArray buildjsonarray(String a, String check) {
        ArrayList<ArrayList<String>> javab = new ArrayList<>();
        javab = narahat(a, check);
        ArrayList<String> javab2 = new ArrayList<>();
        ArrayList<String> javab3 = new ArrayList<>();
        javab2 = javab.get(0);
        javab3 = javab.get(1);
        jsonArray javabf = new jsonArray();
        for (int i = 0; i < javab2.size(); i++) {
            jsonValue jv = buildjsonvalue(javab2.get(i), javab3.get(i));
            javabf.JsonArr.add(jv);
        }
        return javabf;
    }

    public static jsonObject buildjsonobject(String a, String check) {
        ArrayList<ArrayList<String>> javab = narahat(a, check);
        jsonObject javabf = new jsonObject();
        if (javab.isEmpty()) return javabf;
        ArrayList<String> javab2 = new ArrayList<>(javab.get(0));
        ArrayList<String> javab3 = new ArrayList<>(javab.get(1));
        for (int i = 0; i < javab2.size(); i++) {
            ArrayList<String> mo = new ArrayList<>();
            mo = splitobject(javab2.get(i), javab3.get(i));
            String key = mo.get(0);
            jsonValue value = buildjsonvalue(mo.get(1), mo.get(2));
            javabf.JsonObjhash.put(key, value);
        }
        return javabf;
    }

    public static ArrayList<String> splitobject(String a, String check) {
        ArrayList<String> javab = new ArrayList<>();
        for (int i = 0; i < a.length(); i++) {
            if (check.charAt(i) == '0' && a.charAt(i) == ':') {
                String l = a.substring(0, i);
                String l2 = a.substring(i + 1, a.length());
                String l3 = check.substring(i + 1, a.length());
                javab.add(l);
                javab.add(l2);
                javab.add(l3);
                return javab;
            }
        }
        javab.add("null");
        javab.add("mds");
        javab.add("fknd");
        return javab;
    }

    public static ArrayList<ArrayList<String>> narahat(String a, String check) {
        ArrayList<String> javab = new ArrayList<>();
        ArrayList<String> javab2 = new ArrayList<>();
        ArrayList<ArrayList<String>> javabf = new ArrayList<>();
        if (a.length() == 2) return javabf;
        int counterA = 0;
        int counterK = 0;
        String za = "";
        String add = "";
        for (int i = 1; i < a.length() - 1; i++) {
            if (check.charAt(i) == '0') {
                if (a.charAt(i) == '{') {
                    counterA++;
                }
                if (a.charAt(i) == '}') {
                    counterA--;
                }
                if (a.charAt(i) == '[') {
                    counterK++;
                }
                if (a.charAt(i) == ']') {
                    counterK--;
                }
            }
            if (counterA == 0 && counterK == 0 && check.charAt(i) == '0') {
                if (a.charAt(i) == ',') {
                    javab.add(za);
                    javab2.add(add);
                    za = "";
                    add = "";
                    continue;
                }
            }
            add += check.charAt(i);
            za += a.charAt(i);
        }
        javab.add(za);
        javab2.add(add);
        javabf.add(javab);
        javabf.add(javab2);
        return javabf;
    }

    public static boolean isstring(String a) {
        if (!(a.charAt(0) == '"' && a.charAt(a.length() - 1) == '"')) {
            return false;
        }
        for (int i = 1; i < a.length() - 1; i++) {
            if (a.charAt(i) == '"') {
                if (a.charAt(i - 1) != '\\') {
                    return false;
                }
            }
            if (a.charAt(i) == '\\') {
                if (a.charAt(i + 1) == '\\' || a.charAt(i + 1) == '"') {
                    i++;
                } else {
                    return false;
                }
            }
        }
        return true;
    }

    public static String jsonvaluetostring(jsonValue a) {
        String l = "";
        if (a.type == 1) {
            l += a.JsonVal;
        } else if (a.type == 2) {
            int p = 0;
            l += '{';
            for (String it : a.JsonObj.JsonObjhash.keySet()) {
                l += '"' + it + '"';
                l += ':';
                l += jsonvaluetostring(a.JsonObj.JsonObjhash.get(it));
                if (p != a.JsonObj.JsonObjhash.keySet().size() - 1) {
                    l +=',';
                }
                p++;
            }
            l+='}';
        } else if (a.type == 3) {
            int p=0;
            l+='[';
            for (int i=0;i<a.JsonArr.JsonArr.size();i++){
                l+=jsonvaluetostring(a.JsonArr.JsonArr.get(i));
                if (p != a.JsonObj.JsonObjhash.keySet().size() - 1) {
                    l +=',';
                }
                p++;
            }
            l+=']';
        }
        return l;
    }

    public static boolean isvalue(String a, String check) {
        if (a.equals("null") || a.equals("true") || a.equals("false")) {
            return true;
        }
        if (isstring(a)) {
            return true;
        }
        String s = "0123456789";
        boolean non = false;
        for (int i = 0; i < a.length(); i++) {
            String l = "";
            l += a.charAt(i);
            if (i == 0) {
                if (!(a.charAt(i) == '-' || s.contains(l) || a.charAt(i) == '.')) {
                    return false;
                }
                continue;
            }
            if (a.charAt(i) == '.' && i != a.length() - 1 && !non) {
                non = true;
                continue;
            } else if (a.charAt(i) == '.') {
                return false;
            }
            if (!s.contains(l)) {
                return false;
            }
        }
        return true;
    }

    public static boolean isjsonarray(String a, String check) {
        if (!(a.charAt(0) == '[' && a.charAt(a.length() - 1) == ']')) {
            return false;
        }
        ArrayList<ArrayList<String>> splitf = narahat(a, check);
        ArrayList<String> split = splitf.get(0), split2 = splitf.get(1);
        for (int i = 0; i < split.size(); i++) {
            if (isjsonvalue(split.get(i), split2.get(i)) == 0) {
                return false;
            }
        }
        return true;
    }

    public static boolean isjsonobject(String a, String check) {
        if (a.charAt(0) != '{' || a.charAt(a.length() - 1) != '}') return false;
        if (a.length() == 2) return true;
        ArrayList<ArrayList<String>> split = narahat(a, check);
        ArrayList<String> split1 = split.get(0), split2 = split.get(1);
        for (int i = 0; i < split1.size(); i++) {
            ArrayList<String> javab = splitobject(split1.get(i), split2.get(i));
            if (isstring(javab.get(0)) && isjsonvalue(javab.get(1), javab.get(2)) != 0) {
            } else {
                return false;
            }
        }
        return true;
    }

    public static int isjsonvalue(String a, String check) {
        if (isvalue(a, check)) {
            return 1;
        }
        if (isjsonarray(a, check)) {
            return 2;
        }
        if (isjsonobject(a, check)) {
            return 3;
        }
        return 0;
    }

    public static ArrayList<String> splitaval(String a) {
        ArrayList<String> javab = new ArrayList<>();
        for (int i = 0; i < a.length(); i++) {
            if (a.charAt(i) == ' ') {
                javab.add(a.substring(0, i));
                javab.add(a.substring(i + 1, a.length() - 1));
            }
        }
        return javab;
    }

    public static jsonValue datatojsonvalue() {
        jsonValue javab = new jsonValue();
        javab.type = 2;
        HashMap<String, jsonValue> javab2 = javab.JsonObj.JsonObjhash;
        for (int i = 0; i < users.size(); i++) {
            jsonValue temp = new jsonValue();
            temp.type = 2;
            jsonValue temp2 = new jsonValue();
            temp2.type = 1;
            jsonValue temp3 = new jsonValue();
            temp3.type = 2;
            temp2.JsonVal = String.valueOf(users.get(i).balance);
            for (int j = 0; j < users.get(i).history.size(); j++) {
                tara taratemp = users.get(i).history.get(j);
                jsonValue tempx = new jsonValue();
                jsonValue tempx2 = new jsonValue();
                jsonValue tempx3 = new jsonValue();
                jsonValue tempx4 = new jsonValue();
                jsonValue tempx5 = new jsonValue();
                tempx2.JsonVal = taratemp.type;
                tempx3.JsonVal = taratemp.first;
                tempx5.JsonVal = taratemp.date;
                tempx4.JsonVal = String.valueOf(taratemp.balance);
                tempx2.type = 1;
                tempx3.type = 1;
                tempx4.type = 1;
                tempx5.type = 1;
                tempx.type = 3;
                tempx.JsonArr.JsonArr.add(tempx2);
                tempx.JsonArr.JsonArr.add(tempx3);
                tempx.JsonArr.JsonArr.add(tempx4);
                tempx.JsonArr.JsonArr.add(tempx5);
                temp3.JsonObj.JsonObjhash.put(String.valueOf(taratemp.id), tempx);
            }
            temp.JsonObj.JsonObjhash.put("balance", temp2);
            temp.JsonObj.JsonObjhash.put("transaction", temp3);
            javab2.put(users.get(i).name, temp);
        }
        javab.JsonObj.JsonObjhash = javab2;
        return javab;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int userlocate = -1;
        while (true) {
            String a = scan.nextLine();
            String b = a.substring(0, 5);
            String c = a.substring(0, 6);
            if (c.equals("signup")) {
                a = a.substring(0, 7);
                String name = splitaval(a).get(0);
                String password = splitaval(a).get(1);
                user newuser = new user();
                newuser.name = name;
                newuser.password = password;
                newuser.balance = 0;
                users.add(newuser);
                break;
            }
            if (b.equals("login")) {
                a = a.substring(0, 6);
                String name = splitaval(a).get(0);
                String password = splitaval(a).get(1);
                if (login(name, password) == -1) {
                    System.out.println("wrong password");
                    continue;
                } else if (login(name, password) == -2) {
                    System.out.println("wrong username");
                    continue;
                } else {
                    userlocate = login(name, password);
                }
                break;
            }
        }
        user activeuser = new user();
        if (userlocate == -1) {
            activeuser = users.get(users.size() - 1);
        } else {
            activeuser = users.get(userlocate);
        }
        while (true) {
            String a = scan.nextLine();
            if (a.charAt(0) == '1') {
                System.out.println(activeuser.balance);
                continue;
            }
            if (a.charAt(0) == '2') {
                if (activeuser.history.size() == 0) {
                    System.out.println("تراکنشی موجود نیست");
                    continue;
                }
                ArrayList<tara> mova = activeuser.history;
                for (int i = 0; i < mova.size(); i++) {
                    tara taramova = mova.get(i);
                    if (taramova.type.equals("واریز")) {
                        System.out.println("واریز" + ':' + ' ' + taramova.balance + "از" + taramova.first + '(' + taramova.date + ')');
                    } else if (taramova.type.equals("برداشت")) {
                        System.out.println("برداشت" + ':' + ' ' + taramova.balance + '(' + taramova.date + ')');
                    } else if (taramova.type.equals("انتقال")) {
                        System.out.println("انتقال" + ':' + ' ' + taramova.balance + "به" + taramova.first + '(' + taramova.date + ')');
                    }
                }
            }

            if (a.charAt(0) == '3') {
                System.out.println("مبلغ مورد نظر را وارد کنید");
                int v = scan.nextInt();
                scan.nextLine();
                activeuser.balance = activeuser.balance + v;
                tara newtara = new tara();
                LocalDateTime now = LocalDateTime.now();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
                String time = now.format(formatter);
                newtara.date = time;
                newtara.first = "سیستم";
                newtara.type = "واریز";
                newtara.balance = v;
                newtara.id = activeuser.history.size();
                activeuser.history.add(newtara);
                if (userlocate == -1) {
                    users.set(users.size() - 1, activeuser);
                } else {
                    users.set(userlocate, activeuser);
                }
                continue;
            }

            if (a.charAt(0) == '4') {
                System.out.println("مبلغ مورد نظر را وارد کنید");
                int v = scan.nextInt();
                scan.nextLine();
                if (activeuser.balance < v) {
                    System.out.println("موجودی کافی نیست");
                    continue;
                }
                activeuser.balance = activeuser.balance - v;
                tara newtara = new tara();
                LocalDateTime now = LocalDateTime.now();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
                String time = now.format(formatter);
                newtara.date = time;
                newtara.first = "سیستم";
                newtara.type = "برداشت";
                newtara.balance = -v;
                newtara.id = activeuser.history.size();
                activeuser.history.add(newtara);
                if (userlocate == -1) {
                    users.set(users.size() - 1, activeuser);
                } else {
                    users.set(userlocate, activeuser);
                }
                continue;
            }

            if (a.charAt(0) == '5') {
                System.out.println("نام کاربری مقصد را وارد کنید");
                String a5 = scan.nextLine();
                user activeuser2 = new user();
                if (finduserlocation(a5) == -1) {
                    System.out.println("نام کاربری یافت نشد");
                    continue;
                } else {
                    activeuser2 = users.get(finduserlocation(a5));
                }
                System.out.println("مبلغ مورد نظر خود را وارد کنید");
                int v5 = scan.nextInt();
                scan.nextLine();
                if (activeuser.balance < v5) {
                    System.out.println("موجودی کافی نیست");
                    continue;
                }
                activeuser.balance = activeuser.balance - v5;
                activeuser2.balance = activeuser2.balance + v5;
                tara newtara = new tara();
                LocalDateTime now = LocalDateTime.now();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
                String time = now.format(formatter);
                tara newtara5 = new tara();
                tara newtara52 = new tara();
                newtara5.type = "انتقال";
                newtara5.balance = -v5;
                newtara5.id = activeuser.history.size();
                newtara5.first = "a5";
                newtara5.date = time;
                newtara52.type = "واریز";
                newtara52.balance = v5;
                newtara52.id = activeuser2.history.size();
                newtara52.first = activeuser.name;
                newtara52.date = time;
                activeuser.history.add(newtara5);
                activeuser2.history.add(newtara52);
                users.set(finduserlocation(a5), activeuser2);
                if (userlocate == -1) {
                    users.set(users.size() - 1, activeuser);
                } else {
                    users.set(userlocate, activeuser);
                }

            }
        }

    }
}
Editor is loading...
Leave a Comment