Merhaba,
bu konumuzda Python ile bir harcama takip uygulaması kodlayacağız.
Bu program kişisel bütçe yönetimini kolaylaştırmak için geliştirilmiş terminal üzerinden çalışan bir araçtır. Günlük hayatta yaptığınız harcamaları düzenli bir şekilde kaydetmenize, kategorilere ayırmanıza ve toplam harcamanızı kolayca görüntülemenize yardımcı olur.
Kodlar ;
Bazı Görseller ;
bu konumuzda Python ile bir harcama takip uygulaması kodlayacağız.
Bu program kişisel bütçe yönetimini kolaylaştırmak için geliştirilmiş terminal üzerinden çalışan bir araçtır. Günlük hayatta yaptığınız harcamaları düzenli bir şekilde kaydetmenize, kategorilere ayırmanıza ve toplam harcamanızı kolayca görüntülemenize yardımcı olur.
Kodlar ;
Python:
import os
import json
import hashlib
import pyfiglet
EXPENSES_FILE = "expenses.json"
USERS_FILE = "users.json"
def clear_screen():
os.system("cls" if os.name == "nt" else "clear")
display_welcome_message()
def display_welcome_message():
welcome_art = pyfiglet.figlet_format("RICARDIE")
print(welcome_art)
def hash_password(password):
return hashlib.sha256(password.encode()).hexdigest()
def load_users():
if os.path.exists(USERS_FILE):
with open(USERS_FILE, "r") as file:
return json.load(file)
return {}
def save_users(users):
with open(USERS_FILE, "w") as file:
json.dump(users, file)
def load_expenses():
if os.path.exists(EXPENSES_FILE):
with open(EXPENSES_FILE, "r") as file:
return json.load(file)
return {}
def save_expenses(data):
with open(EXPENSES_FILE, "w") as file:
json.dump(data, file)
def display_menu():
print("\nHarcama Takip Uygulaması")
print("1. Harcama Ekle")
print("2. Harcamaları Listele")
print("3. Toplam Harcama Görüntüle")
print("4. Çıkış")
def register_user(users):
while True:
clear_screen()
username = input("Kullanıcı adı: ").strip()
if username in users:
print(f"'{username}' kullanıcı adı zaten alınmış. Lütfen farklı bir kullanıcı adı seçin.")
continue
elif not username:
print("Kullanıcı adı boş olamaz. Lütfen geçerli bir kullanıcı adı girin.")
continue
password = input("Şifre: ").strip()
if not password:
print("Şifre boş olamaz. Lütfen geçerli bir şifre girin.")
continue
hashed_password = hash_password(password)
users[username] = hashed_password
save_users(users)
print(f"Kullanıcı başarıyla oluşturuldu. Hoş geldiniz, {username}!")
return username
def login_user(users):
while True:
clear_screen()
username = input("Kullanıcı adı: ").strip()
password = input("Şifre: ").strip()
hashed_password = hash_password(password)
if username in users and users[username] == hashed_password:
print(f"Tekrar hoş geldiniz, {username}!")
return username
else:
print("Kullanıcı adı veya şifre hatalı. Lütfen tekrar deneyin.")
input("\nDevam etmek için Enter'a basın...")
continue
def add_expense(data, username):
clear_screen()
category = input("Harcama kategorisi (örn. Yemek, Ulaşım): ")
amount = input("Harcama miktarı: ")
if amount.isdigit() or amount.replace('.', '', 1).isdigit():
if username not in data:
data[username] = []
data[username].append({"kategori": category, "miktar": float(amount)})
print("Harcama başarıyla eklendi.")
else:
print("Geçersiz miktar. Lütfen bir sayı girin.")
input("\nDevam etmek için Enter'a basın...")
def list_expenses(data, username):
clear_screen()
expenses = data.get(username, [])
if not expenses:
print("Henüz eklenmiş bir harcama yok.")
else:
print("\nHarcamalar:")
for index, expense in enumerate(expenses, start=1):
print(f"{index}. Kategori: {expense['kategori']}, Miktar: {expense['miktar']} TL")
input("\nDevam etmek için Enter'a basın...")
def calculate_total(data, username):
clear_screen()
expenses = data.get(username, [])
total = sum(expense["miktar"] for expense in expenses)
print(f"\nToplam Harcama: {total:.2f} TL")
input("\nDevam etmek için Enter'a basın...")
def main():
users = load_users()
data = load_expenses()
current_user = None
clear_screen()
while True:
if not current_user:
print("1. Kayıt Ol")
print("2. Giriş Yap")
print("3. Çıkış")
choice = input("Seçiminizi yapın (1-3): ")
if choice == "1":
current_user = register_user(users)
elif choice == "2":
current_user = login_user(users)
elif choice == "3":
print("Uygulama kapatılıyor...")
break
else:
print("Geçersiz seçim. Lütfen tekrar deneyin.")
else:
display_menu()
choice = input("Bir seçenek girin (1-4): ")
if choice == "1":
add_expense(data, current_user)
save_expenses(data)
elif choice == "2":
list_expenses(data, current_user)
elif choice == "3":
calculate_total(data, current_user)
elif choice == "4":
print("Hesaptan çıkış yapılıyor...")
current_user = None
else:
print("Geçersiz seçim. Lütfen tekrar deneyin.")
if __name__ == "__main__":
main()
Bazı Görseller ;


