diff --git a/kitap_islemleri.py b/kitap_islemleri.py new file mode 100644 index 0000000..9aa4eee --- /dev/null +++ b/kitap_islemleri.py @@ -0,0 +1,70 @@ +# Json işlemleri için kullanılır +import json + +# Dosya kontrolü için kullanılır +import os + + +DOSYA_ADI = "kitap.json" + +# ===================================================== +# Kitap.json dosyası okunur +def oku(): + if not os.path.exists(DOSYA_ADI): + return [] + + with open(DOSYA_ADI, "r", encoding="utf-8") as dosya: + return json.load(dosya) + +# ===================================================== +# Kitap.json dosyasına veriler yazılır +def kayit(veri): + with open(DOSYA_ADI, "w", encoding="utf-8") as dosya: + json.dump(veri, dosya, ensure_ascii=False, indent=4) + +# ===================================================== +# Kitap ekleme +def kitap_ekle(Kitap_Adi, Yazar, Yayinevi, Barkod): + kitaplar = oku() + + yeni_kitap = { + "kitap_adi": Kitap_Adi, + "yazar": Yazar, + "yayinevi": Yayinevi, + "barkod": Barkod + } + + kitaplar.append(yeni_kitap) + kayit(kitaplar) + + print("✅ Kitap başarıyla eklendi") + +# ===================================================== +# Kitap silme +def kitap_sil(silinecek_veri): + kitaplar = oku() + yeni_liste = [] + + for kitap in kitaplar: + if kitap["kitap_adi"] != silinecek_veri: + yeni_liste.append(kitap) + + kayit(yeni_liste) + print("🗑️ Kitap silindi") + +# ===================================================== +# Kitap arama +def kitap_ara(arama): + kitaplar = oku() + + for kitap in kitaplar: + if kitap["kitap_adi"] == arama: + print("📘 Kitap bulundu:") + return kitap + return None + + + +# ===================================================== +if __name__ == "__main__": + print("kitap işlemleri modülü") \ No newline at end of file diff --git a/kitaplar.json b/kitaplar.json new file mode 100644 index 0000000..9bab173 --- /dev/null +++ b/kitaplar.json @@ -0,0 +1,34 @@ +[ + { + "Barkod": 9786053114772, + "Dil": "Türkçe", + "Fiyat": 20.4, + "Kitap_Adi": "Süt Lekesi", + "Yayinevi": "Destek Yayinlari", + "Yazar": "Esra Ezmeci" + }, + { + "Barkod": 9786057906465, + "Dil": "Türkçe", + "Fiyat": 20.4, + "Kitap_Adi": "Yanliş Hayat Doğru Yaşanmaz", + "Yayinevi": "Olimpos Yayinlari", + "Yazar": "Ethem Emin Nemutlu" + }, + { + "Barkod": 9786051856322, + "Dil": "Türkçe", + "Fiyat": 27.3, + "Kitap_Adi": "Hazan", + "Yayinevi": "Everest Yayinlari", + "Yazar": "Ayşe Kulin" + }, + { + "Barkod": 9789750751363, + "Dil": "Türkçe", + "Fiyat": 24.15, + "Kitap_Adi": "Okçu'nun Yolu", + "Yayinevi": "Can Yayinlari", + "Yazar": "Paulo Coelho" + } +] diff --git a/main.py b/main.py new file mode 100644 index 0000000..29fc3aa --- /dev/null +++ b/main.py @@ -0,0 +1,173 @@ +import kitap_islemleri +import uye_islemleri +import json +import zaman + +def ana_menu(): + print("-" * 60) + print(" HALK KUTUPHANEMIZE HOS GELDINIZ") + print("-" * 60) + print() + print(" 1- UYELIK ISLEMLERI 1") + print(" 2- KITAP ISLEMLERI 2") + print(" 3- CIKIS 0") + print() + print("-" * 60) + + +def uyelik_menu(): + print("-" * 60) + print(" UYELIK ISLEMLERI") + print("-" * 60) + print() + print(" UYELER = 1") + print(" UYE EKLEME = 2") + print(" UYE ARA = 3") + print(" UYE SIL = 4") + print(" KITAP ODUNC = 5") + print(" KITAP IADE = 6") + print(" KITAP TAKIBI = 7") + print(" CIKIS = 0") + print() + print("-" * 60) + + +def kitap_menu(): + print("-" * 60) + print(" KITAP ISLEMLERI") + print("-" * 60) + print() + print(" KITAPLAR = 1") + print(" KITAP EKLE = 2") + print(" KITAP ARA = 3") + print(" KITAP SIL = 4") + print(" CIKIS = 0") + print() + print("-" * 60) + + + + + + + + + + +while True: + ana_menu() + secim = input("Lutfen yapmak istediginiz secimin kodunu girin : ") + + if secim == "1": + while True: + uyelik_menu() + islem = input("Islem seciniz : ") + + if islem == "1": + print(">> UYELER LISTELENIYOR...") + uyeler = uye_islemleri.uye_oku() + print(uyeler) + + elif islem == "2": + print(">> UYE EKLEME EKRANI") + + Uye_adi = input("Uye adi giriniz:") + Tel = int(input("Telefon numarasi giriniz: ")) + Adres = input("Adresi giriniz: ") + uye_islemleri.uye_ekle(Uye_adi,Tel,Adres) + print(">>Uye basariyla eklendi.") + + elif islem == "3": + print(">> UYE ARAMA EKRANI") + id = int(input("Aranacak uyenin id numarasini giriniz: ")) + uye = uye_islemleri.uye_ara(id) + if uye == None: + print("Uye bulunamadi.") + else: + print(">>Uye bulundu:") + print(uye) + + elif islem == "4": + print(">> UYE SILME EKRANI") + id = int(input("Silinecek uyenin id numarasini giriniz: ")) + uye_islemleri.uye_sil(id) + print("Uye silindi.") + + elif islem == "5": + print(">> KITAP ODUNC VERME") + uye_id= int(input("Uyenin id numarasini girniz: ")) + kitap_adi = input("Odunc alinacak kitabun adini giriniz: ") + uye_islemleri.kitap_odunc_verme(uye_id,kitap_adi) + + elif islem == "6": + print(">> KITAP IADE") + uye_id= int(input("Uyenin id numarasini girniz: ")) + kitap_adi = input("Iade edilecek kitabun adini giriniz: ") + uye_islemleri.kitap_iade(uye_id,kitap_adi) + + elif islem == "7": + print(">> KITAP TAKIBI") + takip_listesi = zaman.takip_oku() + if takip_listesi == []: + print("Takip kaydi yok.") + else: + for kayit in takip_listesi: + print("----------------------") + print("Uye ID:", kayit["id"]) + print("Kitap Adi:", kayit["Kitap_adi"]) + print("Kayit Tarihi:", kayit["Kayit_Tarihi"]) + print("Iade Tarihi:", kayit["Kitap_iade_tarih"]) + print("----------------------") + + + elif islem == "0": + break + else: + print("Hatali secim!") + + elif secim == "2": + while True: + kitap_menu() + islem = input("Islem seciniz : ") + + if islem == "1": + print(">> KITAPLAR LISTELENIYOR...") + kitaplar = kitap_islemleri.oku() + if not kitaplar: + print("Hic kitap yok.") + else: + print("Kitap Listesi:") + for kitap in kitaplar: + print(f"- {kitap['kitap_adi']} | {kitap['yazar']}") + + elif islem == "2": + print(">> KITAP EKLEME") + + kitap_adi = input("Kitap adi: ") + yazar = input("Yazar: ") + yayinevi = input("Yayinevi: ") + barkod = input("Barkod: ") + + kitap_islemleri.kitap_ekle(kitap_adi, yazar, yayinevi, barkod) + + elif islem == "3": + print(">> KITAP ARAMA") + arama = input("Aranacak kitap adi: ") + kitap_islemleri.kitap_ara(arama) + + elif islem == "4": + print(">> KITAP SILME") + silinecek = input("Silinecek kitap adi: ") + kitap_islemleri.kitap_sil(silinecek) + + elif islem == "0": + print("Kitap menusunden cikiliyor...") + break + else: + print("Hatali secim!") + + elif secim == "0": + print("Cikis yapiliyor... Iyi gunler!") + break + else: + print("Hatali secim!") \ No newline at end of file diff --git a/uye_islemleri.py b/uye_islemleri.py new file mode 100644 index 0000000..1375e18 --- /dev/null +++ b/uye_islemleri.py @@ -0,0 +1,126 @@ +import json +import os +import kitap_islemleri +import zaman +from kitap_islemleri import kitap_ara + +uye_dosyasi = "uyeler.json" + +def uye_kontrol(): + if not os.path.exists(uye_dosyasi): + with open(uye_dosyasi, "w", encoding= "utf-8") as f: + json.dump([], f, ensure_ascii = False, indent=4) + return True + + +def uye_oku(): + uye_kontrol() + with open(uye_dosyasi, "r", encoding= "utf-8") as f: + uyeler = json.load(f) + return uyeler + +def uye_yaz(uyeler): + with open(uye_dosyasi, "w", encoding="utf-8") as f: + json.dump(uyeler, f, ensure_ascii=False, indent=4) + +def uye_ekle(Uye_Adi,Tel,Adres): + + yeni_id = get_next_user_id() + yeni_uye={"id": yeni_id, "Uye_Adi": Uye_Adi, "Tel":Tel , "Adres": Adres, "odunc_kitaplar":[] } + uyeler = uye_oku() + uyeler.append(yeni_uye) + uye_yaz(uyeler) + return yeni_id + +def uye_sil(id): + uyeler = uye_oku() + uyeler = [uye for uye in uyeler if uye["id"] != id] + uye_yaz(uyeler) + return True + +def uye_ara(id): + uyeler = uye_oku() + for uye in uyeler: + if uye["id"] == id: + return uye + return None + +def get_next_user_id(): + uyeler = uye_oku() + if uyeler == []: + return 1 + else: + #find the highest id + highest_id = max(uye["id"] for uye in uyeler) + return highest_id + 1 + +def kitap_odunc_verme(uye_id,kitap_adi): + uye = uye_ara(uye_id) + if uye == None: + print("Uye bulunamadi.") + return + else: + kitap = kitap_islemleri.kitap_ara(kitap_adi) + if kitap == None: + print("Kitap bulunamadi") + return + else: + uyeler = uye_oku() + for u in uyeler: + if u["id"]==uye_id: + if "odunc_kitaplar" not in u or u["odunc_kitaplar"] is None: + u["odunc_kitaplar"] = [] + if kitap_adi in u["odunc_kitaplar"]: + # normalde buraya düşmez ama yine de güvenlik + print("Bu kitap zaten üyede görünüyor.") + return False + u["odunc_kitaplar"].append(kitap_adi) + break + uye_yaz(uyeler) + zaman.tarih(uye_id,kitap_adi) + print("kitap odunc verildi") + +def kitap_iade(uye_id,kitap_adi): + uye = uye_ara(uye_id) + if uye == None: + print("Uye bulunamadi.") + return + else: + if kitap_adi not in uye["odunc_kitaplar"]: + print("bu kitap bu uyede yok") + return + else: + uyeler=uye_oku() + for u in uyeler: + if u["id"]==uye_id: + u["odunc_kitaplar"].remove(kitap_adi) + break + uye_yaz(uyeler) + zaman.takip_sil(uye_id, kitap_adi) + print("Kitap iade edildi.") + return True + + +def uye_guncelle(id, yeni_ad, yeni_tel, yeni_adres): + uyeler=uye_oku() + bulundu = False + for u in uyeler: + if u["id"] == id: + u["Uye_Adi"] = yeni_ad + u["Tel"] = yeni_tel + u["Adres"] = yeni_adres + bulundu = True + break + if bulundu: + + uye_yaz(uyeler) + print("Uye bilgileri guncellendi.") + else: + print("Uye bulunamadi") + + +if __name__ == "__main__": + print("Uye islemleri modulu") + + + \ No newline at end of file diff --git a/uyeler.json b/uyeler.json new file mode 100644 index 0000000..8299f29 --- /dev/null +++ b/uyeler.json @@ -0,0 +1,40 @@ +[ + { + "id": 27, + "Uye_Adi": "Naim Ucar", + "Tel": "545-345-6786", + "Adres": "Başka Bir Sokak, Başka Bir Mahalle, Amstero" + }, + { + "id": 22, + "Uye_Adi": "Burak GUnes", + "Tel": "555-234-5678", + "Adres": "GUneş Sokak, GUneş Mahalle, Ankara, 06000" + }, + { + "id": 3, + "Uye_Adi": "Ayse Demir", + "Tel": "555-345-6789", + "Adres": "Başka Bir Sokak, Başka Bir Mahalle, İzmir" + }, + { + "id": 28, + "Uye_Adi": "Naim Ucar", + "Tel": "545-345-6786", + "Adres": "Başka Bir Sokak, Başka Bir Mahalle, Amstero" + }, + { + "id": 29, + "Uye_Adi": "d", + "Tel": 345, + "Adres": "sfv", + "odunc_kitaplar": [] + }, + { + "id": 30, + "Uye_Adi": "dsd", + "Tel": 3453, + "Adres": "sfe", + "odunc_kitaplar": [] + } +] \ No newline at end of file diff --git a/zaman.json b/zaman.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/zaman.json @@ -0,0 +1 @@ +[] diff --git a/zaman.py b/zaman.py new file mode 100644 index 0000000..d7ec9ed --- /dev/null +++ b/zaman.py @@ -0,0 +1,56 @@ +from datetime import datetime, timedelta +import json +import os +import uye_islemleri +import kitap_islemleri + + +takip_dosyasi = "zaman.json" +def kontrol(): + if not os.path.exists(takip_dosyasi): + with open(takip_dosyasi, "w", encoding= "utf-8") as t: + json.dump([], t, ensure_ascii = False, indent=4) + return True + +def takip_oku(): + kontrol() + with open(takip_dosyasi, "r", encoding= "utf-8") as t: + takip_listesi = json.load(f) + return takip_listesi + +def takip_yaz(takip_listesi): + with open(takip_dosyasi, "w", encoding="utf-8") as t: + json.dump(takip_listesi, t, ensure_ascii=False, indent=4) + +def takip_sil(uye_id, kitap_adi): + takip = takip_oku() + yeni_takip = [] + for kayit in takip: + if not(kayit["id"]==uye_id and kayit["Kitap_adi"]==kitap_adi): + yeni_takip.append(kayit) + takip_yaz(yeni_takip) + + + +def tarih(uye_id,kitap_adi): + + bugun = datetime.now() + iki_hafta_sonra = bugun + timedelta(days=14) + suan = bugun.strftime("%Y-%m-%d") + ozel = iki_hafta_sonra.strftime("%Y-%m-%d") + + odunc_kitap = {"id": uye_id, "Kitap_adi":kitap_adi,"Kayit_Tarihi": suan,"Kitap_iade_tarih":ozel} + takip = takip_oku() + takip.append(odunc_kitap) + takip_yaz(takip) + print(takip) + + + + + + + + +if __name__ == "__main__": + print(kontrol()) \ No newline at end of file