Compare commits
	
		
			No commits in common. "main" and "v1.0" have entirely different histories.
		
	
	
		
							
								
								
									
										136
									
								
								main.py
								
								
								
								
							
							
						
						
									
										136
									
								
								main.py
								
								
								
								
							|  | @ -1,136 +0,0 @@ | ||||||
| import sqlite3 |  | ||||||
| import matplotlib.pyplot as plt |  | ||||||
| from datetime import datetime |  | ||||||
| 
 |  | ||||||
| # Inicjalizacja bazy danych |  | ||||||
| def init_db(): |  | ||||||
|     conn = sqlite3.connect("finance.db") |  | ||||||
|     cursor = conn.cursor() |  | ||||||
|     cursor.execute(""" |  | ||||||
|         CREATE TABLE IF NOT EXISTS transactions ( |  | ||||||
|             id INTEGER PRIMARY KEY AUTOINCREMENT, |  | ||||||
|             type TEXT NOT NULL, -- 'income' lub 'expense' |  | ||||||
|             amount REAL NOT NULL, |  | ||||||
|             category TEXT, |  | ||||||
|             date TEXT NOT NULL |  | ||||||
|         ) |  | ||||||
|     """) |  | ||||||
|     conn.commit() |  | ||||||
|     conn.close() |  | ||||||
| 
 |  | ||||||
| # Dodawanie transakcji |  | ||||||
| def add_transaction(transaction_type, amount, category): |  | ||||||
|     conn = sqlite3.connect("finance.db") |  | ||||||
|     cursor = conn.cursor() |  | ||||||
|     date = datetime.now().strftime("%Y-%m-%d") |  | ||||||
|     cursor.execute(""" |  | ||||||
|         INSERT INTO transactions (type, amount, category, date) |  | ||||||
|         VALUES (?, ?, ?, ?) |  | ||||||
|     """, (transaction_type, amount, category, date)) |  | ||||||
|     conn.commit() |  | ||||||
|     conn.close() |  | ||||||
|     print("Transakcja dodana!") |  | ||||||
| 
 |  | ||||||
| # Przeglądanie historii transakcji |  | ||||||
| def view_transactions(): |  | ||||||
|     conn = sqlite3.connect("finance.db") |  | ||||||
|     cursor = conn.cursor() |  | ||||||
|     cursor.execute("SELECT * FROM transactions ORDER BY date DESC") |  | ||||||
|     transactions = cursor.fetchall() |  | ||||||
|     conn.close() |  | ||||||
|     print("\nHistoria transakcji:") |  | ||||||
|     for t in transactions: |  | ||||||
|         print(f"{t[0]} | {t[1]} | {t[2]:.2f} | {t[3]} | {t[4]}") |  | ||||||
| 
 |  | ||||||
| # Filtrowanie transakcji |  | ||||||
| def filter_transactions(category=None, start_date=None, end_date=None): |  | ||||||
|     conn = sqlite3.connect("finance.db") |  | ||||||
|     cursor = conn.cursor() |  | ||||||
|     query = "SELECT * FROM transactions WHERE 1=1" |  | ||||||
|     params = [] |  | ||||||
|     if category: |  | ||||||
|         query += " AND category = ?" |  | ||||||
|         params.append(category) |  | ||||||
|     if start_date: |  | ||||||
|         query += " AND date >= ?" |  | ||||||
|         params.append(start_date) |  | ||||||
|     if end_date: |  | ||||||
|         query += " AND date <= ?" |  | ||||||
|         params.append(end_date) |  | ||||||
|     cursor.execute(query, params) |  | ||||||
|     transactions = cursor.fetchall() |  | ||||||
|     conn.close() |  | ||||||
|     print("\nFiltrowane transakcje:") |  | ||||||
|     for t in transactions: |  | ||||||
|         print(f"{t[0]} | {t[1]} | {t[2]:.2f} | {t[3]} | {t[4]}") |  | ||||||
| 
 |  | ||||||
| # Wyświetlanie salda |  | ||||||
| def calculate_balance(): |  | ||||||
|     conn = sqlite3.connect("finance.db") |  | ||||||
|     cursor = conn.cursor() |  | ||||||
|     cursor.execute("SELECT SUM(amount) FROM transactions WHERE type = 'income'") |  | ||||||
|     income = cursor.fetchone()[0] or 0 |  | ||||||
|     cursor.execute("SELECT SUM(amount) FROM transactions WHERE type = 'expense'") |  | ||||||
|     expense = cursor.fetchone()[0] or 0 |  | ||||||
|     conn.close() |  | ||||||
|     balance = income - expense |  | ||||||
|     print(f"Saldo konta: {balance:.2f} zł") |  | ||||||
| 
 |  | ||||||
| # Wyświetlanie statystyk |  | ||||||
| def show_statistics(): |  | ||||||
|     conn = sqlite3.connect("finance.db") |  | ||||||
|     cursor = conn.cursor() |  | ||||||
|     cursor.execute("SELECT category, SUM(amount) FROM transactions WHERE type = 'expense' GROUP BY category") |  | ||||||
|     data = cursor.fetchall() |  | ||||||
|     conn.close() |  | ||||||
|     if not data: |  | ||||||
|         print("Brak danych do wyświetlenia statystyk.") |  | ||||||
|         return |  | ||||||
| 
 |  | ||||||
|     categories = [d[0] for d in data] |  | ||||||
|     amounts = [d[1] for d in data] |  | ||||||
| 
 |  | ||||||
|     plt.bar(categories, amounts) |  | ||||||
|     plt.title("Wydatki według kategorii") |  | ||||||
|     plt.xlabel("Kategoria") |  | ||||||
|     plt.ylabel("Kwota (zł)") |  | ||||||
|     plt.show() |  | ||||||
| 
 |  | ||||||
| # Główna pętla programu |  | ||||||
| def main(): |  | ||||||
|     init_db() |  | ||||||
|     while True: |  | ||||||
|         print("\n--- MENU ---") |  | ||||||
|         print("1. Dodaj transakcję") |  | ||||||
|         print("2. Wyświetl historię transakcji") |  | ||||||
|         print("3. Filtruj transakcje") |  | ||||||
|         print("4. Pokaż saldo konta") |  | ||||||
|         print("5. Wyświetl statystyki") |  | ||||||
|         print("6. Wyjście") |  | ||||||
|         choice = input("Wybierz opcję: ") |  | ||||||
| 
 |  | ||||||
|         if choice == "1": |  | ||||||
|             t_type = input("Typ (income/expense): ").strip().lower() |  | ||||||
|             amount = float(input("Kwota: ")) |  | ||||||
|             category = input("Kategoria: ").strip() |  | ||||||
|             add_transaction(t_type, amount, category) |  | ||||||
|         elif choice == "2": |  | ||||||
|             view_transactions() |  | ||||||
|         elif choice == "3": |  | ||||||
|             category = input("Kategoria (lub ENTER aby pominąć): ").strip() or None |  | ||||||
|             start_date = input("Data początkowa (YYYY-MM-DD, lub ENTER aby pominąć): ").strip() or None |  | ||||||
|             end_date = input("Data końcowa (YYYY-MM-DD, lub ENTER aby pominąć): ").strip() or None |  | ||||||
|             filter_transactions(category, start_date, end_date) |  | ||||||
|         elif choice == "4": |  | ||||||
|             calculate_balance() |  | ||||||
|         elif choice == "5": |  | ||||||
|             show_statistics() |  | ||||||
|         elif choice == "6": |  | ||||||
|             print("Do widzenia!") |  | ||||||
|             break |  | ||||||
|         else: |  | ||||||
|             print("Nieprawidłowa opcja. Spróbuj ponownie.") |  | ||||||
| 
 |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
| 
 |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| matplotlib |  | ||||||
		Loading…
	
		Reference in New Issue