Neler yeni

Gelir - Gider kayıt aracı | Python

MaSTeR

Yönetici
Admin
Katılım
30 Ocak 2022
Mesajlar
33
Tepkime puanı
91
Puanları
200
Gelir - Gider kayıt aracı | Python

Python ile yapılmış bu araç, gelir ve gider kayıtlarınızı tutmanızı sağlar. Programı tekrar çalıştırdığınızda kullandığı basit veri tabanından kayıtları çekerek yansıtır,
bu esnada mevcut bakiyenizi ekranda gösterir.

Kullanım için indirdiğiniz dosyayı herhangi bir yerde klasör oluşturup içerisine atın. Böylelikle aracın oluşturacağı veri tabanı dosyası kaybolmalara karşı engellenmiş olur.

oyuncununini-gelir-gider-araci.PNG



Temel işlerinizi karşılayabileceğini düşünüyoruz. Umarım işinize yarar.
Doğrudan kullanabilmek, exe'ye erişmek için aşağıdaki butonu kullanın.





Meraklısı İçin Kaynak Kodu :
Python:
import tkinter as tk
import sqlite3
from tkinter import ttk

def create_tables():
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    # Gelir tablosunu oluşturma
    c.execute('''CREATE TABLE IF NOT EXISTS gelir
                 (id INTEGER PRIMARY KEY AUTOINCREMENT,
                 miktar REAL,
                 aciklama TEXT)''')

    # Gider tablosunu oluşturma
    c.execute('''CREATE TABLE IF NOT EXISTS gider
                 (id INTEGER PRIMARY KEY AUTOINCREMENT,
                 miktar REAL,
                 aciklama TEXT)''')

    conn.commit()
    conn.close()

def insert_data(table, miktar, aciklama):
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    if table == 'gelir':
        c.execute("INSERT INTO gelir (miktar, aciklama) VALUES (?, ?)", (miktar, aciklama))
    elif table == 'gider':
        c.execute("INSERT INTO gider (miktar, aciklama) VALUES (?, ?)", (miktar, aciklama))

    conn.commit()
    conn.close()

def delete_data(table, item_id):
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    if table == 'gelir':
        c.execute("DELETE FROM gelir WHERE id=?", (item_id,))
    elif table == 'gider':
        c.execute("DELETE FROM gider WHERE id=?", (item_id,))

    conn.commit()
    conn.close()

def calculate_balance():
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    c.execute("SELECT IFNULL(SUM(miktar), 0) FROM gelir")
    gelir = c.fetchone()[0]

    c.execute("SELECT IFNULL(SUM(miktar), 0) FROM gider")
    gider = c.fetchone()[0]

    conn.close()

    bakiye = gelir - gider
    return bakiye

def gelir_ekle():
    miktar = float(gelir_entry.get())
    aciklama = gelir_aciklama_entry.get()
    insert_data('gelir', miktar, aciklama)
    gelir_entry.delete(0, tk.END)
    gelir_aciklama_entry.delete(0, tk.END)
    hesapla()
    update_table()

def gider_ekle():
    miktar = float(gider_entry.get())
    aciklama = gider_aciklama_entry.get()
    insert_data('gider', miktar, aciklama)
    gider_entry.delete(0, tk.END)
    gider_aciklama_entry.delete(0, tk.END)
    hesapla()
    update_table()

def gelir_sil():
    selected_items = gelir_treeview.selection()
    for item in selected_items:
        item_id = gelir_treeview.item(item, "values")[0]
        delete_data('gelir', item_id)
    update_table()

def gider_sil():
    selected_items = gider_treeview.selection()
    for item in selected_items:
        item_id = gider_treeview.item(item, "values")[0]
        delete_data('gider', item_id)
    update_table()

def hesapla():
    bakiye = calculate_balance()
    bakiye_label.config(text="Mevcut bakiye: {:.2f}".format(bakiye))

def update_table():
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    # Gelir tablosunu güncelleme
    c.execute("SELECT * FROM gelir")
    gelir_rows = c.fetchall()

    gelir_treeview.delete(*gelir_treeview.get_children())
    for row in gelir_rows:
        gelir_treeview.insert("", tk.END, values=row)

    # Gider tablosunu güncelleme
    c.execute("SELECT * FROM gider")
    gider_rows = c.fetchall()

    gider_treeview.delete(*gider_treeview.get_children())
    for row in gider_rows:
        gider_treeview.insert("", tk.END, values=row)

    conn.close()

create_tables()

def update_bakiye():
    bakiye = calculate_balance()
    bakiye_label.configure(text="Mevcut Bakiye: {:.2f}".format(bakiye))

window = tk.Tk()
window.title("Oyuncununini.com | Gelir - Gider Kayıt Aracı")
window.geometry("1270x380")
window.resizable(height=False,width=False)

# Gelir bölümü
gelir_frame = tk.Frame(window)
gelir_frame.pack(side=tk.LEFT, padx=10, pady=10)

gelir_label = tk.Label(gelir_frame, text="Gelir Miktarı:")
gelir_label.pack()

gelir_entry = tk.Entry(gelir_frame)
gelir_entry.pack()

gelir_aciklama_label = tk.Label(gelir_frame, text="Gelir Açıklaması:")
gelir_aciklama_label.pack()

gelir_aciklama_entry = tk.Entry(gelir_frame)
gelir_aciklama_entry.pack()

gelir_button = tk.Button(gelir_frame, text="Gelir Ekle", command=gelir_ekle)
gelir_button.pack(pady=5)

gelir_sil_button = tk.Button(gelir_frame, text="Seçilen Gelirleri Sil", command=gelir_sil)
gelir_sil_button.pack(pady=5)

# Gider bölümü
gider_frame = tk.Frame(window)
gider_frame.pack(side=tk.RIGHT, padx=10, pady=10)

gider_label = tk.Label(gider_frame, text="Gider Miktarı:")
gider_label.pack()

gider_entry = tk.Entry(gider_frame)
gider_entry.pack()

gider_aciklama_label = tk.Label(gider_frame, text="Gider Açıklaması:")
gider_aciklama_label.pack()

gider_aciklama_entry = tk.Entry(gider_frame)
gider_aciklama_entry.pack()

gider_button = tk.Button(gider_frame, text="Gider Ekle", command=gider_ekle)
gider_button.pack(pady=5)

gider_sil_button = tk.Button(gider_frame, text="Seçilen Giderleri Sil", command=gider_sil)
gider_sil_button.pack(pady=5)

# Bakiye hesaplama ve gösterme bölümü
bakiye_frame = tk.Frame(window)
bakiye_frame.pack()

hesapla_button = tk.Button(bakiye_frame, text="Bakiyeyi Hesapla", command=hesapla)
hesapla_button.pack(pady=10)

bakiye_label = tk.Label(bakiye_frame, text="Mevcut Bakiye:", font=("Helvetica", 24, "bold"))
bakiye_label.pack(pady=5)


# Gelir tablosu için treeview oluşturuldu
gelir_treeview_frame = tk.Frame(window)
gelir_treeview_frame.pack(side=tk.LEFT, padx=10, pady=10)

gelir_treeview = ttk.Treeview(gelir_treeview_frame, columns=("ID", "Miktar", "Açıklama"), show="headings")
gelir_treeview.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

gelir_treeview.column("ID", width=50)
gelir_treeview.column("Miktar", width=100)
gelir_treeview.column("Açıklama", width=300)

gelir_treeview.heading("ID", text="ID")
gelir_treeview.heading("Miktar", text="Miktar")
gelir_treeview.heading("Açıklama", text="Açıklama")

gelir_scrollbar = ttk.Scrollbar(gelir_treeview_frame, orient="vertical", command=gelir_treeview.yview)
gelir_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

gelir_treeview.configure(yscrollcommand=gelir_scrollbar.set)
gelir_treeview.bind("<ButtonRelease-1>", lambda event: gelir_treeview.selection_set(gelir_treeview.identify_row(event.y)))

# Gider tablosu için treeview oluşturuldu
gider_treeview_frame = tk.Frame(window)
gider_treeview_frame.pack(side=tk.RIGHT, padx=10, pady=10)

gider_treeview = ttk.Treeview(gider_treeview_frame, columns=("ID", "Miktar", "Açıklama"), show="headings")
gider_treeview.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

gider_treeview.column("ID", width=50)
gider_treeview.column("Miktar", width=100)
gider_treeview.column("Açıklama", width=300)

gider_treeview.heading("ID", text="ID")
gider_treeview.heading("Miktar", text="Miktar")
gider_treeview.heading("Açıklama", text="Açıklama")

gider_scrollbar = ttk.Scrollbar(gider_treeview_frame, orient="vertical", command=gider_treeview.yview)
gider_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

gider_treeview.configure(yscrollcommand=gider_scrollbar.set)
gider_treeview.bind("<ButtonRelease-1>", lambda event: gider_treeview.selection_set(gider_treeview.identify_row(event.y)))

update_table()
update_bakiye()

window.mainloop()

 

                                                                                                  
Son düzenleme:

sameteyilcim

Demir
Katılım
19 Tem 2023
Mesajlar
1
Tepkime puanı
0
Puanları
10
Gelir - Gider kayıt aracı | Python

Python ile yapılmış bu araç, gelir ve gider kayıtlarınızı tutmanızı sağlar. Programı tekrar çalıştırdığınızda kullandığı basit veri tabanından kayıtları çekerek yansıtır,
bu esnada mevcut bakiyenizi ekranda gösterir.

Kullanım için indirdiğiniz dosyayı herhangi bir yerde klasör oluşturup içerisine atın. Böylelikle aracın oluşturacağı veri tabanı dosyası kaybolmalara karşı engellenmiş olur.

Ekli dosyayı görüntüle 352


Temel işlerinizi karşılayabileceğini düşünüyoruz. Umarım işinize yarar.
Doğrudan kullanabilmek, exe'ye erişmek için aşağıdaki butonu kullanın.


*** Gizli metin: alıntı yapılamaz. ***



Meraklısı İçin Kaynak Kodu :
Python:
import tkinter as tk
import sqlite3
from tkinter import ttk

def create_tables():
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    # Gelir tablosunu oluşturma
    c.execute('''CREATE TABLE IF NOT EXISTS gelir
                 (id INTEGER PRIMARY KEY AUTOINCREMENT,
                 miktar REAL,
                 aciklama TEXT)''')

    # Gider tablosunu oluşturma
    c.execute('''CREATE TABLE IF NOT EXISTS gider
                 (id INTEGER PRIMARY KEY AUTOINCREMENT,
                 miktar REAL,
                 aciklama TEXT)''')

    conn.commit()
    conn.close()

def insert_data(table, miktar, aciklama):
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    if table == 'gelir':
        c.execute("INSERT INTO gelir (miktar, aciklama) VALUES (?, ?)", (miktar, aciklama))
    elif table == 'gider':
        c.execute("INSERT INTO gider (miktar, aciklama) VALUES (?, ?)", (miktar, aciklama))

    conn.commit()
    conn.close()

def delete_data(table, item_id):
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    if table == 'gelir':
        c.execute("DELETE FROM gelir WHERE id=?", (item_id,))
    elif table == 'gider':
        c.execute("DELETE FROM gider WHERE id=?", (item_id,))

    conn.commit()
    conn.close()

def calculate_balance():
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    c.execute("SELECT IFNULL(SUM(miktar), 0) FROM gelir")
    gelir = c.fetchone()[0]

    c.execute("SELECT IFNULL(SUM(miktar), 0) FROM gider")
    gider = c.fetchone()[0]

    conn.close()

    bakiye = gelir - gider
    return bakiye

def gelir_ekle():
    miktar = float(gelir_entry.get())
    aciklama = gelir_aciklama_entry.get()
    insert_data('gelir', miktar, aciklama)
    gelir_entry.delete(0, tk.END)
    gelir_aciklama_entry.delete(0, tk.END)
    hesapla()
    update_table()

def gider_ekle():
    miktar = float(gider_entry.get())
    aciklama = gider_aciklama_entry.get()
    insert_data('gider', miktar, aciklama)
    gider_entry.delete(0, tk.END)
    gider_aciklama_entry.delete(0, tk.END)
    hesapla()
    update_table()

def gelir_sil():
    selected_items = gelir_treeview.selection()
    for item in selected_items:
        item_id = gelir_treeview.item(item, "values")[0]
        delete_data('gelir', item_id)
    update_table()

def gider_sil():
    selected_items = gider_treeview.selection()
    for item in selected_items:
        item_id = gider_treeview.item(item, "values")[0]
        delete_data('gider', item_id)
    update_table()

def hesapla():
    bakiye = calculate_balance()
    bakiye_label.config(text="Mevcut bakiye: {:.2f}".format(bakiye))

def update_table():
    conn = sqlite3.connect('finans.db')
    c = conn.cursor()

    # Gelir tablosunu güncelleme
    c.execute("SELECT * FROM gelir")
    gelir_rows = c.fetchall()

    gelir_treeview.delete(*gelir_treeview.get_children())
    for row in gelir_rows:
        gelir_treeview.insert("", tk.END, values=row)

    # Gider tablosunu güncelleme
    c.execute("SELECT * FROM gider")
    gider_rows = c.fetchall()

    gider_treeview.delete(*gider_treeview.get_children())
    for row in gider_rows:
        gider_treeview.insert("", tk.END, values=row)

    conn.close()

create_tables()

def update_bakiye():
    bakiye = calculate_balance()
    bakiye_label.configure(text="Mevcut Bakiye: {:.2f}".format(bakiye))

window = tk.Tk()
window.title("Oyuncununini.com | Gelir - Gider Kayıt Aracı")
window.geometry("1270x380")
window.resizable(height=False,width=False)

# Gelir bölümü
gelir_frame = tk.Frame(window)
gelir_frame.pack(side=tk.LEFT, padx=10, pady=10)

gelir_label = tk.Label(gelir_frame, text="Gelir Miktarı:")
gelir_label.pack()

gelir_entry = tk.Entry(gelir_frame)
gelir_entry.pack()

gelir_aciklama_label = tk.Label(gelir_frame, text="Gelir Açıklaması:")
gelir_aciklama_label.pack()

gelir_aciklama_entry = tk.Entry(gelir_frame)
gelir_aciklama_entry.pack()

gelir_button = tk.Button(gelir_frame, text="Gelir Ekle", command=gelir_ekle)
gelir_button.pack(pady=5)

gelir_sil_button = tk.Button(gelir_frame, text="Seçilen Gelirleri Sil", command=gelir_sil)
gelir_sil_button.pack(pady=5)

# Gider bölümü
gider_frame = tk.Frame(window)
gider_frame.pack(side=tk.RIGHT, padx=10, pady=10)

gider_label = tk.Label(gider_frame, text="Gider Miktarı:")
gider_label.pack()

gider_entry = tk.Entry(gider_frame)
gider_entry.pack()

gider_aciklama_label = tk.Label(gider_frame, text="Gider Açıklaması:")
gider_aciklama_label.pack()

gider_aciklama_entry = tk.Entry(gider_frame)
gider_aciklama_entry.pack()

gider_button = tk.Button(gider_frame, text="Gider Ekle", command=gider_ekle)
gider_button.pack(pady=5)

gider_sil_button = tk.Button(gider_frame, text="Seçilen Giderleri Sil", command=gider_sil)
gider_sil_button.pack(pady=5)

# Bakiye hesaplama ve gösterme bölümü
bakiye_frame = tk.Frame(window)
bakiye_frame.pack()

hesapla_button = tk.Button(bakiye_frame, text="Bakiyeyi Hesapla", command=hesapla)
hesapla_button.pack(pady=10)

bakiye_label = tk.Label(bakiye_frame, text="Mevcut Bakiye:", font=("Helvetica", 24, "bold"))
bakiye_label.pack(pady=5)


# Gelir tablosu için treeview oluşturuldu
gelir_treeview_frame = tk.Frame(window)
gelir_treeview_frame.pack(side=tk.LEFT, padx=10, pady=10)

gelir_treeview = ttk.Treeview(gelir_treeview_frame, columns=("ID", "Miktar", "Açıklama"), show="headings")
gelir_treeview.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

gelir_treeview.column("ID", width=50)
gelir_treeview.column("Miktar", width=100)
gelir_treeview.column("Açıklama", width=300)

gelir_treeview.heading("ID", text="ID")
gelir_treeview.heading("Miktar", text="Miktar")
gelir_treeview.heading("Açıklama", text="Açıklama")

gelir_scrollbar = ttk.Scrollbar(gelir_treeview_frame, orient="vertical", command=gelir_treeview.yview)
gelir_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

gelir_treeview.configure(yscrollcommand=gelir_scrollbar.set)
gelir_treeview.bind("<ButtonRelease-1>", lambda event: gelir_treeview.selection_set(gelir_treeview.identify_row(event.y)))

# Gider tablosu için treeview oluşturuldu
gider_treeview_frame = tk.Frame(window)
gider_treeview_frame.pack(side=tk.RIGHT, padx=10, pady=10)

gider_treeview = ttk.Treeview(gider_treeview_frame, columns=("ID", "Miktar", "Açıklama"), show="headings")
gider_treeview.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

gider_treeview.column("ID", width=50)
gider_treeview.column("Miktar", width=100)
gider_treeview.column("Açıklama", width=300)

gider_treeview.heading("ID", text="ID")
gider_treeview.heading("Miktar", text="Miktar")
gider_treeview.heading("Açıklama", text="Açıklama")

gider_scrollbar = ttk.Scrollbar(gider_treeview_frame, orient="vertical", command=gider_treeview.yview)
gider_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

gider_treeview.configure(yscrollcommand=gider_scrollbar.set)
gider_treeview.bind("<ButtonRelease-1>", lambda event: gider_treeview.selection_set(gider_treeview.identify_row(event.y)))

update_table()
update_bakiye()

window.mainloop()

Bakalım.
 

                                                                                                  
Üst Alt