Untitled
unknown
plain_text
7 months ago
20 kB
5
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