Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added __pycache__/Emre_team4_member.cpython-313.pyc
Binary file not shown.
Binary file added __pycache__/Mahmut_Engin_TL_week4.cpython-313.pyc
Binary file not shown.
Binary file not shown.
Binary file added __pycache__/kitap_islemleri.cpython-313.pyc
Binary file not shown.
Binary file added __pycache__/zaman.cpython-313.pyc
Binary file not shown.
117 changes: 117 additions & 0 deletions kitap_islemleri.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
import json
import os
from tabulate import tabulate

dosya_adi = "kitap.json"

def otomatik_barkod(kayitlar):
if not kayitlar:
return "1000000000001"
son_barkod = max(int(k["Barkod"]) for k in kayitlar)
return str(son_barkod + 1)

def oku():
if os.path.exists(dosya_adi):
with open(dosya_adi, "r", encoding="utf-8") as dosya:
return json.load(dosya)
else:
return []

def kayit(veri):
kayitlar = oku()
veri["Barkod"] = otomatik_barkod(kayitlar)
kayitlar.append(veri)
with open(dosya_adi, "w", encoding="utf-8") as dosya:
json.dump(kayitlar, dosya, indent=4, ensure_ascii=False)
print("\nKitap başarıyla eklendi:")
print(json.dumps(veri, indent=4, ensure_ascii=False))

def kitap_ekle():
veri = {
"Dil": input("Dil: "),
"Fiyat": float(input("Fiyat: ")),
"Kitap Adı": input("Kitap Adı: "),
"Yayınevi": input("Yayınevi: "),
"Yazar": input("Yazar: ")
}
kayit(veri)

def kitap_sil():
barkod = input("Silinecek kitabın barkodunu girin: ")
kayitlar = oku()
yeni_liste = [k for k in kayitlar if k["Barkod"] != barkod]
if len(kayitlar) == len(yeni_liste):
print("Barkod bulunamadı.")
else:
with open(dosya_adi, "w", encoding="utf-8") as dosya:
json.dump(yeni_liste, dosya, indent=4, ensure_ascii=False)
print("Kitap silindi.")

def kitap_arama():
kayitlar = oku()
kelime = input("Aranacak kitap adı veya yazar adı girin: ").lower()

bulunanlar = []
for kitap in kayitlar:
kitap_adi = kitap.get("Kitap Adı", "").lower()
yazar = kitap.get("Yazar", "").lower()

if kelime in kitap_adi or kelime in yazar:
bulunanlar.append([
kitap.get("Barkod", ""),
kitap.get("Kitap Adı", ""),
kitap.get("Yazar", ""),
kitap.get("Yayınevi", ""),
kitap.get("Fiyat", ""),
kitap.get("Dil", "")
])

if bulunanlar:
headers = ["Barkod", "Kitap Adı", "Yazar", "Yayınevi", "Fiyat", "Dil"]
print("\nArama Sonuçları:\n")
print(tabulate(bulunanlar, headers=headers, tablefmt="fancy_grid"))
else:
print("Hiçbir kitap bulunamadı.")

def menu():
while True:
print("\n--- Kitap Kütüphanesi Menüsü ---")
print("1. Kitapları Listele")
print("2. Kitap Ekle")
print("3. Kitap Sil")
print("4. Kitap Ara")
print("0. Çıkış")

secim = input("Seçiminizi yapın (1-4), Cikmak icin 0 a basin: ")
if secim == "1":
kitaplar = oku()
if kitaplar:
tablo = [
[
kitap.get("Barkod", ""),
kitap.get("Kitap Adı", ""),
kitap.get("Yazar", ""),
kitap.get("Yayınevi", ""),
kitap.get("Fiyat", ""),
kitap.get("Dil", "")
]
for kitap in kitaplar
]
headers = ["Barkod", "Kitap Adı", "Yazar", "Yayınevi", "Fiyat", "Dil"]
print("\n📚 Kayıtlı Kitaplar:\n")
print(tabulate(tablo, headers=headers, tablefmt="fancy_grid", numalign="right"))
else:
print("📭 Kayıtlı kitap bulunamadı.")
elif secim == "2":
kitap_ekle()
elif secim == "3":
kitap_sil()
elif secim == "4":
kitap_arama()
elif secim == "0":
print("Programdan çıkılıyor.")
break
else:
print("Geçersiz seçim. Lütfen tekrar deneyin.")
if __name__ == "__main__":
menu()
31 changes: 31 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import os
import uye_islemleri
import zaman
import kitap_islemleri

def temizle():
os.system("cls" if os.name == "nt" else "clear")

def halk_kutuphanesi_menu():
while True:
print("Halk Kütüphanemize Hoşgeldiniz!")
print("1- UYELIK ISLEMLERI")
print("2- KITAP ISLEMLERI")
print("0- CIKIS")

secim = input("Lutfen yapmak istediginiz secimin kodunu giriniz (0, 1, 2): ")


if secim == '1':
uye_islemleri.menu()

elif secim == '2':
kitap_islemleri.menu()
elif secim == '0':
print("Çıkış yapılıyor... Görüşmek üzere!")
break
else:
print("Geçersiz seçenek, lütfen tekrar deneyin.")

if __name__ == "__main__":
halk_kutuphanesi_menu()
20 changes: 20 additions & 0 deletions uye.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[
{
"Id": 1,
"Uye adi": "mahmut",
"Telefon": "11111111",
"Adres": "Rotterdam"
},
{
"Id": 2,
"Uye adi": "kamil",
"Telefon": "456546",
"Adres": "roterdam"
},
{
"Id": 3,
"Uye adi": "emre",
"Telefon": "465464",
"Adres": "utrecht"
}
]
187 changes: 187 additions & 0 deletions uye_islemleri.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
import json
import os
import kitap_islemleri
import zaman

UYE_DOSYA = "uye.json"
TAKIP_DOSYA = "takip.json"

def dosya_okuma(dosya_adi):
if os.path.exists(dosya_adi):
with open(dosya_adi, "r", encoding="utf-8") as f:
try:
return json.load(f)
except json.JSONDecodeError:
return []
return []

def dosya_yazma(dosya_adi, veri):
with open(dosya_adi, "w", encoding="utf-8") as f:
json.dump(veri, f, ensure_ascii=False, indent=4)

def uye_ekle(Uye_Adi, Tel, Adres):
uyeler = dosya_okuma(UYE_DOSYA)
yeni_id = max([u["Id"] for u in uyeler], default=0) + 1
yeni_uye = {
"Id": yeni_id,
"Uye adi": Uye_Adi,
"Telefon": Tel,
"Adres": Adres
}
uyeler.append(yeni_uye)
dosya_yazma(UYE_DOSYA, uyeler)
return yeni_uye

def uye_kontrol(aranan):
uyeler = dosya_okuma(UYE_DOSYA)
return [u for u in uyeler if aranan.lower() in u.get("Uye adi", "").lower()]

def uye_guncelle(guncellenecek_id, yeni_ad=None, yeni_tel=None, yeni_adres=None):
uyeler = dosya_okuma(UYE_DOSYA)
for uye in uyeler:
if uye["Id"] == guncellenecek_id:
if yeni_ad: uye["Uye adi"] = yeni_ad
if yeni_tel: uye["Telefon"] = yeni_tel
if yeni_adres: uye["Adres"] = yeni_adres
dosya_yazma(UYE_DOSYA, uyeler)
return uye
return None

def uye_sil(silinecek_id):
uyeler = dosya_okuma(UYE_DOSYA)
uyeler = [u for u in uyeler if u["Id"] != silinecek_id]
dosya_yazma(UYE_DOSYA, uyeler)
return True

def kitap_odunc_verme(uye_id, kitap_objesi):
uyeler = dosya_okuma(UYE_DOSYA)
uye = next((u for u in uyeler if u["Id"] == uye_id), None)
if not uye:
return None
kayit = {
"Uye": uye,
"Kitap": kitap_objesi,
"Tarih": zaman.kitap_verilis_tarihi()

}
takipler = dosya_okuma(TAKIP_DOSYA)
takipler.append(kayit)
dosya_yazma(TAKIP_DOSYA, takipler)
return kayit

def takip_yaz(veri):
takipler = dosya_okuma(TAKIP_DOSYA)
takipler.append(veri)
dosya_yazma(TAKIP_DOSYA, takipler)

def takip_oku():
return dosya_okuma(TAKIP_DOSYA)

def kitap_iade(index):
takipler = dosya_okuma(TAKIP_DOSYA)
if 0 <= index < len(takipler):
takipler.pop(index)
dosya_yazma(TAKIP_DOSYA, takipler)
return True
return False

def menu():
while True:
print("\n--- KÜTÜPHANE ÜYE İŞLEMLERİ MENÜSÜ ---")
print("1 - Üye Ekle")
print("2 - Üye Ara")
print("3 - Üye Güncelle")
print("4 - Üye Sil")
print("5 - Kitap Ödünç Ver")
print("6 - Kitap Takiplerini Görüntüle")
print("7 - Kitap İade Et")
print("0 - Çıkış")
secim = input("Seçiminizi yapın: ")

if secim == "1":
ad = input("Üye Adı: ")
tel = input("Telefon: ")
adres = input("Adres: ")
yeni_uye = uye_ekle(ad, tel, adres)
print("\nÜye başarıyla eklendi:")
print(json.dumps(yeni_uye, indent=4, ensure_ascii=False))
elif secim == "2":
aranan = input("Aranacak üye adını girin: ")
bulunanlar = uye_kontrol(aranan)
if bulunanlar:
for uye in bulunanlar:
print(json.dumps(uye, indent=4, ensure_ascii=False))
else:
print("Üye bulunamadı.")

elif secim == "3":
try:
guncelle_id = int(input("Güncellenecek Üye ID: "))
except ValueError:
print("Lütfen geçerli bir sayı girin.")
continue
yeni_ad = input("Yeni ad (boş bırakılırsa değişmez): ")
yeni_tel = input("Yeni telefon (boş bırakılırsa değişmez): ")
yeni_adres = input("Yeni adres (boş bırakılırsa değişmez): ")
sonuc = uye_guncelle(guncelle_id, yeni_ad or None, yeni_tel or None, yeni_adres or None)
if sonuc:
print("✅ Üye bilgileri güncellendi.")
else:
print("Üye bulunamadı.")

elif secim == "4":
try:
sil_id = int(input("Silinecek Üye ID: "))
except ValueError:
print("Lütfen geçerli bir sayı girin.")
continue
if uye_sil(sil_id):
print("✅ Üye silindi.")
else:
print("Üye bulunamadı.")

elif secim == "5":
uyeler = dosya_okuma(UYE_DOSYA)
for u in uyeler:
print(f"{u['Id']} - {u['Uye adi']}")
uye_id = int(input("Kitap verilecek üyenin ID'sini girin: "))

kitaplar = kitap_islemleri.oku()
for i, k in enumerate(kitaplar):
print(f"{i} - {k['Kitap Adı']} / {k['Yazar']}")
kitap_index = int(input("Verilecek kitabın numarasını girin: "))
secilen_kitap = kitaplar[kitap_index]

sonuc = kitap_odunc_verme(uye_id, secilen_kitap)
if sonuc:
print("Kitap ödünç verildi.")
else:
print("Hata: Üye bulunamadı.")

elif secim == "6":
takipler = takip_oku()
if takipler:
for i, t in enumerate(takipler):
print(f"{i} - Üye: {t['Uye']['Uye adi']} - Kitap: {t['Kitap']['Kitap Adı']} - Veriliş Tarihi: {t['Verilis Tarihi']}")
else:
print("Hiç kitap takibi yok.")

elif secim == "7":
try:
index = int(input("İade edilecek kitap takip indeksi: "))
except ValueError:
print("Lütfen geçerli bir sayı girin.")
continue
if kitap_iade(index):
print("✅ Kitap iade edildi.")
else:
print("Geçersiz indeks.")

elif secim == "0":
print("Çıkış yapılıyor.")
break
else:
print("Geçersiz seçim. Lütfen tekrar deneyin.")

if __name__ == "__main__":
menu()
23 changes: 23 additions & 0 deletions zaman.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from datetime import datetime, timedelta

def suanki_tarih():
"""Şu anki tarihi ve saati döndürür."""
return datetime.now()

def kitap_verilis_tarihi():
"""Kitabın verildiği tarihi döndürür."""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

def kitap_iade_tarihi(verilis_tarihi, gun_sayisi=14):
"""Kitabın iade edilmesi gereken tarihi hesaplar."""
return verilis_tarihi + timedelta(days=gun_sayisi)

def gecikme_suresi(iade_tarihi):
"""Kitabın iade tarihine göre gecikme süresini hesaplar."""
bugun = datetime.now()
gecikme = (bugun - iade_tarihi).days
return gecikme if gecikme > 0 else 0

def tarih_formatla(tarih):
"""Tarihi 'GG-AA-YYYY SS:DD:SS' formatında stringe çevirir."""
return tarih.strftime("%d-%m-%Y %H:%M:%S")