krishbaresha commited on
Commit
12a3a3f
Β·
verified Β·
1 Parent(s): 7cb37df

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +108 -0
app.py ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import sqlite3
3
+ import random
4
+
5
+ # ---------------- DATABASE SETUP ----------------
6
+ conn = sqlite3.connect('bank.db', check_same_thread=False)
7
+ cursor = conn.cursor()
8
+
9
+ cursor.execute('''
10
+ CREATE TABLE IF NOT EXISTS accounts (
11
+ name TEXT,
12
+ age INTEGER,
13
+ password TEXT,
14
+ account_number INTEGER PRIMARY KEY,
15
+ balance INTEGER
16
+ )
17
+ ''')
18
+ conn.commit()
19
+
20
+ # ---------------- FUNCTIONS ----------------
21
+
22
+ def create_account(name, age, password):
23
+ acc_no = random.randint(1000, 9999)
24
+
25
+ cursor.execute("SELECT * FROM accounts WHERE name=?", (name,))
26
+ if cursor.fetchone():
27
+ return "❌ Account already exists!"
28
+
29
+ cursor.execute("INSERT INTO accounts VALUES (?, ?, ?, ?, ?)",
30
+ (name, age, password, acc_no, 0))
31
+ conn.commit()
32
+
33
+ return f"βœ… Account Created! Your Account Number: {acc_no}"
34
+
35
+ def login(name, acc_no, password):
36
+ cursor.execute("SELECT * FROM accounts WHERE name=? AND account_number=? AND password=?",
37
+ (name, acc_no, password))
38
+ return cursor.fetchone()
39
+
40
+ def get_balance(user):
41
+ return user[4]
42
+
43
+ def deposit(user, amount):
44
+ new_balance = user[4] + amount
45
+ cursor.execute("UPDATE accounts SET balance=? WHERE account_number=?",
46
+ (new_balance, user[3]))
47
+ conn.commit()
48
+ return new_balance
49
+
50
+ def withdraw(user, amount):
51
+ if user[4] < amount:
52
+ return "❌ Insufficient Balance"
53
+
54
+ new_balance = user[4] - amount
55
+ cursor.execute("UPDATE accounts SET balance=? WHERE account_number=?",
56
+ (new_balance, user[3]))
57
+ conn.commit()
58
+ return new_balance
59
+
60
+ # ---------------- STREAMLIT UI ----------------
61
+
62
+ st.title("🏦 Baryashah Bank")
63
+
64
+ menu = st.sidebar.selectbox("Menu", ["Create Account", "Login"])
65
+
66
+ # CREATE ACCOUNT
67
+ if menu == "Create Account":
68
+ st.subheader("Create New Account")
69
+ name = st.text_input("Name")
70
+ age = st.number_input("Age", min_value=1)
71
+ password = st.text_input("Password", type="password")
72
+
73
+ if st.button("Create"):
74
+ result = create_account(name, age, password)
75
+ st.success(result)
76
+
77
+ # LOGIN
78
+ elif menu == "Login":
79
+ st.subheader("Login")
80
+ name = st.text_input("Name")
81
+ acc_no = st.number_input("Account Number")
82
+ password = st.text_input("Password", type="password")
83
+
84
+ if st.button("Login"):
85
+ user = login(name, acc_no, password)
86
+
87
+ if user:
88
+ st.success("βœ… Login Successful")
89
+
90
+ option = st.selectbox("Choose", ["Check Balance", "Deposit", "Withdraw"])
91
+
92
+ if option == "Check Balance":
93
+ st.info(f"πŸ’° Balance: {get_balance(user)}")
94
+
95
+ elif option == "Deposit":
96
+ amount = st.number_input("Amount", min_value=1)
97
+ if st.button("Deposit"):
98
+ new_balance = deposit(user, amount)
99
+ st.success(f"New Balance: {new_balance}")
100
+
101
+ elif option == "Withdraw":
102
+ amount = st.number_input("Amount", min_value=1)
103
+ if st.button("Withdraw"):
104
+ result = withdraw(user, amount)
105
+ st.success(result)
106
+
107
+ else:
108
+ st.error("❌ Invalid Credentials")