Untitled
unknown
plain_text
a year ago
12 kB
12
Indexable
import json
conversionRates = {
"USD": 50,
"SAR": 13,
"EGP": 1
}
try:
with open("data.json", "r") as file:
data = json.load(file)
except FileNotFoundError:
print("Error: data.json file not found. Creating a new file.")
data = {"users": []}
except json.JSONDecodeError:
print("Error: Failed to parse JSON data. Initializing empty data.")
data = {"users": []}
while True:
try:
print(" ******************************************Welcome to banat el3am bank management system")
print("If you have an account please enter 'login'", "If you don't have an account enter 'register'", "To stop the project enter 'exit'", sep="\n")
firstStep = input("Enter here: ").strip().lower()
if firstStep == "exit":
print("EXITING the project")
break
elif firstStep == "login":
print(" ******************************************Welcome to LOGIN page")
while True:
try:
ID = input("Please enter your ID: ").strip()
if ID.isdigit():
ID = int(ID)
break
else:
print("Invalid input. Please enter a valid integer for ID.")
except ValueError:
print("Invalid input. Please enter a numeric ID.")
while True:
try:
password = input("Please enter your password: ").strip()
if password.isdigit():
password = int(password)
break
else:
print("Invalid input. Please enter a valid integer for password.")
except ValueError:
print("Invalid input. Please enter a numeric password.")
userFound = False
for user in data['users']:
if user['ID'] == ID and user['Password'] == password:
userFound = True
print(f"Welcome back {user['Name']}")
break
if not userFound:
print("Your ID or your password is not correct. Please try again.")
continue
while True:
try:
print("Choose an operation: deposit, withdraw, transfer, check, logout")
operation = input("Enter your operation: ").strip().lower()
if operation == "logout":
print("LOGGING OUT...")
break
elif operation == "deposit":
try:
amountCurrency = input("Enter the amount and currency: ")
amount, currency = amountCurrency.split(" ")
amount = float(amount)
if currency in conversionRates:
amountEGP = amount * conversionRates[currency]
user['Balance'] += amountEGP
with open("data.json", "w") as file:
json.dump(data, file, indent=2)
print(f"Deposited {amount} {currency} = {amountEGP} EGP\nNew balance: {user['Balance']} EGP")
else:
print("Invalid currency.")
except ValueError:
print("Invalid amount format. Please enter the amount followed by the currency.")
elif operation == "withdraw":
try:
amountCurrency = input("Enter the amount and currency: ")
amount, currency = amountCurrency.split(" ")
amount = float(amount)
if currency in conversionRates:
amountEGP = amount * conversionRates[currency]
if user['Balance'] >= amountEGP:
user['Balance'] -= amountEGP
with open("data.json", "w") as file:
json.dump(data, file, indent=2)
print(f"Withdrew {amount} {currency} = {amountEGP} EGP\nNew balance: {user['Balance']} EGP")
else:
print("Insufficient balance.")
else:
print("Invalid currency.")
except ValueError:
print("Invalid amount format. Please enter the amount followed by the currency.")
elif operation == "transfer":
try:
recipientID = input("Enter recipient ID: ").strip()
if recipientID.isdigit():
recipientID = int(recipientID)
recipient = None
for u in data['users']:
if u['ID'] == recipientID:
recipient = u
break
if recipient:
print(f"Amount will be transferred to {recipient['Name']}")
check = input("Confirm or Enter another ID: ").strip().lower()
if check == "confirm":
amountCurrency = input("Enter the amount and currency: ")
parts = amountCurrency.split(" ")
if len(parts) == 2:
amount, currency = parts
if currency in conversionRates:
amount = float(amount)
if amount >= 0:
amountEGP = amount * conversionRates[currency]
if user['Balance'] >= amountEGP:
user['Balance'] -= amountEGP
recipient['Balance'] += amountEGP
with open("data.json", "w") as file:
json.dump(data, file, indent=2)
print(
f"Transferred {amount} {currency} ({amountEGP} EGP) to {recipient['Name']}\nYour new balance: {user['Balance']} EGP")
else:
print("Insufficient balance.")
else:
print("Amount must be non-negative.")
else:
print("Invalid currency.")
else:
print("Invalid format. Please enter the amount followed by the currency.")
else:
print("Operation cancelled.")
else:
print("Recipient ID not found.")
else:
print("Invalid ID. Please enter a valid numeric ID.")
except ValueError:
print("Invalid input. Please enter a valid number.")
elif operation == "check":
print(f"Name: {user['Name']}")
print(f"Phone Number: {user['Phone Number']}")
print(f"Email: {user['Mail']}")
print(f"Age: {user['Age']}")
print(f"City: {user['City']}")
print(f"Balance: {user['Balance']} EGP")
print(f"ID: {user['ID']}")
else:
print("Invalid operation. Please try again.")
except ValueError as e:
print(f"Error: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
elif firstStep == "register":
print(" ******************************************Welcome to REGISTER page")
try:
name = input("Please enter your name: ")
while True:
phone_number = input("Please enter your phone number (11 digits): ")
if len(phone_number) == 11 and phone_number.isdigit():
break
else:
print("Invalid phone number. Please enter exactly 11 digits.")
mail = input("Please enter your email: ")
while True:
age = input("Please enter your age: ")
if age.isdigit():
age = int(age)
if age > 0:
break
else:
print("Age must be greater than 0. Please enter a valid age.")
else:
print("Invalid age. Please enter a valid integer value for age.")
city = input("Please enter your city: ")
while True:
try:
balance = input("Please enter your balance 'amount and currency': ")
amount, currency = balance.split(" ")
if currency in conversionRates:
amount = float(amount)
if amount >= 0:
balance_in_egp = amount * conversionRates[currency]
break
else:
print("Amount must be non-negative.")
else:
print("Invalid currency.")
except ValueError:
print("Invalid input. Please enter a valid number and currency.")
while True:
password = input("Please enter your password: ").strip()
if password.isdigit():
password = int(password)
break
else:
print("Invalid input. Please enter a valid integer for password.")
maxId = max(user["ID"] for user in data["users"]) if data["users"] else 0
newID = maxId + 1
newUser = {
"Name": name,
"Phone Number": phone_number,
"Mail": mail,
"Age": age,
"City": city,
"Balance": balance_in_egp,
"Password": password,
"ID": newID
}
data['users'].append(newUser)
with open("data.json", "w") as file:
json.dump(data, file, indent=2)
print("Registration successful! You can now log in.", end="...")
print(f"Your ID is {newID}")
except ValueError as e:
print(f"Error: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
else:
print("Invalid option. Please enter 'login' or 'register' or 'exit'.")
except Exception as e:
print(f"An unexpected error occurred in the main menu: {e}")
Editor is loading...
Leave a Comment