Skip to content
Open

Asem #14

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
80 changes: 0 additions & 80 deletions README.md

This file was deleted.

64 changes: 64 additions & 0 deletions asem_python_week_4/asem_book_transactions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import json
import os

BOOK_FILE = "kitap.json"


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


def save_books(book_list):
with open(BOOK_FILE, "w", encoding="utf-8") as file:
json.dump(book_list, file, ensure_ascii=False, indent=4)


def add_book(title, author, publisher, barcode):
books = read_books()


for book in books:
if book["Barkod"] == barcode:
print("A book with this barcode already exists.")
return

new_book = {
"Barkod": barcode,
"Kitap_Adi": title,
"Yayinevi": publisher,
"Yazar": author
}

books.append(new_book)
save_books(books)
print("Book added successfully.")


def delete_book(barcode_to_delete):
books = read_books()
updated_books = [book for book in books if book["Barkod"] != barcode_to_delete]

if len(books) == len(updated_books):
print("Book not found.")
else:
save_books(updated_books)
print("Book deleted.")


def search_book(search_term):
books = read_books()
found = False
for book in books:
if search_term.lower() in book["Kitap_Adi"].lower():
print(f"\n Found Book: {book}")
found = True
if not found:
print("No match found.")


if __name__ == "__main__":
print("Book transactions module loaded.")
103 changes: 103 additions & 0 deletions asem_python_week_4/asem_main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import asem_book_transactions
import asem_member_transactions
import json

while True:
print("\n" + "-" * 58)
print("- WELCOME TO OUR PUBLIC LIBRARY -")
print("- -")
print("- 1 - MEMBERSHIP TRANSACTIONS (Enter 1) -")
print("- 2 - BOOK TRANSACTIONS (Enter 2) -")
print("- 3 - EXIT (Enter 0) -")
print("-" * 58)

choice = input("Please enter the code of your desired option: ")

# --- Membership Transactions
if choice == "1":
print("\n" + "-" * 58)
print("- MEMBERS = 1 = LEND BOOK = 5 -")
print("- ADD MEMBER = 2 = RETURN BOOK = 6 -")
print("- SEARCH MEMBER = 3 = TRACK BOOKS = 7 -")
print("- DELETE MEMBER = 4 = EXIT = 0 -")
print("-" * 58)
operation = input("Select an operation: ")

if operation == "1":
members = asem_member_transactions.read_members()
for member in members:
print(member)

elif operation == "2":
name = input("Enter member name: ")
phone = input("Enter phone number: ")
address = input("Enter address: ")
asem_member_transactions.add_member(name, phone, address)

elif operation == "3":
search = input("Enter name to search: ")
asem_member_transactions.search_member(search)

elif operation == "4":
delete = input("Enter name to delete: ")
asem_member_transactions.delete_member(delete)

elif operation == "5":
asem_member_transactions.lend_book()

elif operation == "6":
asem_member_transactions.return_book()

elif operation == "7":
tracking = asem_member_transactions.read_tracking()
for t in tracking:
print(t)

elif operation == "0":
continue

else:
print("Invalid selection in Membership Transactions.")

# --- Book Transactions
elif choice == "2":
print("\n" + "-" * 58)
print("- BOOKS = 1 -")
print("- ADD BOOK = 2 -")
print("- SEARCH BOOK = 3 -")
print("- DELETE BOOK = 4 EXIT = 0 -")
print("-" * 58)
operation = input("Select an operation: ")

if operation == "1":
books = asem_book_transactions.read_books()
for book in books:
print(book)

elif operation == "2":
title = input("Enter book name: ")
author = input("Enter author: ")
publisher = input("Enter publisher: ")
barcode = input("Enter barcode: ")
asem_book_transactions.add_book(title, author, publisher, barcode)

elif operation == "3":
keyword = input("Enter keyword to search for: ")
asem_book_transactions.search_book(keyword)

elif operation == "4":
barcode = input("Enter barcode to delete: ")
asem_book_transactions.delete_book(barcode)

elif operation == "0":
continue

else:
print("Invalid selection in Book Transactions.")

elif choice == "0":
print("Exiting the system. Goodbye!")
break

else:
print("Invalid selection. Please try again.")
140 changes: 140 additions & 0 deletions asem_python_week_4/asem_member_transactions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
import json
import os
from datetime import datetime, timedelta


MEMBER_FILE = 'member.json'
TRACK_FILE = 'tracking.json'
BOOK_FILE = 'kitap.json'


def read_members():
if not os.path.exists(MEMBER_FILE):
return []
with open(MEMBER_FILE, 'r', encoding='utf-8') as file:
return json.load(file)


def update_members(member_list):
with open(MEMBER_FILE, 'w', encoding='utf-8') as file:
json.dump(member_list, file, ensure_ascii=False, indent=4)


def add_member(name, phone, address):
members = read_members()
new_id = 1
if members:
new_id = max(member["id"] for member in members) + 1
new_member = {
"id": new_id,
"name": name,
"phone": phone,
"address": address
}
members.append(new_member)
update_members(members)
print("Member added successfully.")


def search_member(query):
members = read_members()
for member in members:
if query.lower() in member["name"].lower():
print("Member found:", member)
return member
print("Member not found.")
return None


def delete_member(name_to_delete):
members = read_members()
updated_list = [member for member in members if member["name"].lower() != name_to_delete.lower()]
update_members(updated_list)
print("Member deleted if existed.")


import json

def read_tracking():
try:
with open("tracking.json", "r", encoding="utf-8", errors="replace") as file:
return json.load(file)
except (json.JSONDecodeError, FileNotFoundError):
return []



def save_tracking(data):
tracking = read_tracking()
tracking.append(data)
with open(TRACK_FILE, 'w',encoding="utf-8") as file:
json.dump(tracking, file, ensure_ascii=False, indent=4)


def lend_book():
if not os.path.exists(BOOK_FILE):
print("Book file not found.")
return

with open(BOOK_FILE, 'r',encoding="utf-8") as file:
books = json.load(file)

members = read_members()

barcode = input("Enter the barcode of the book to lend: ")
member_name = input("Enter member name: ")

member = next((m for m in members if m["name"].lower() == member_name.lower()), None)
if not member:
print("Member not found.")
return

for i, book in enumerate(books):
if str(book["Barkod"]) == barcode:
now = datetime.now()
return_date = now + timedelta(days=14)
loan_entry = {
"barcode": barcode,
"member_name": member["name"],
"phone": member["phone"],
"address": member["address"],
"book_title": book["Kitap_Adi"],
"author": book["Yazar"],
"publisher": book["Yayinevi"],
"price": book.get("Fiyat", "N/A"),
"language": book.get("Dil", "N/A"),
"loan_date": now.strftime("%d-%m-%Y, %H:%M"),
"return_date": return_date.strftime("%d-%m-%Y")
}
save_tracking(loan_entry)
books.pop(i)
with open(BOOK_FILE, 'w', encoding='utf-8') as f:
json.dump(books, f, ensure_ascii=False, indent=4)
print("Book has been lent successfully.")
return

print("Book not found.")

# Return a book
def return_book():
books = []
if os.path.exists(BOOK_FILE):
with open(BOOK_FILE, 'r', encoding='utf-8') as file:
books = json.load(file)

title = input("Enter the title of the book to return: ")
author = input("Enter author: ")
publisher = input("Enter publisher: ")
barcode = input("Enter barcode: ")

returned_book = {
"Kitap_Adi": title,
"Yazar": author,
"Yayinevi": publisher,
"Barkod": barcode
}
books.append(returned_book)
with open(BOOK_FILE, 'w', encoding='utf-8') as file:
json.dump(books, file, ensure_ascii=False, indent=4)

print("Book returned and added back to the library.")
Loading