Untitled
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