Skip to content
9,041 changes: 9,041 additions & 0 deletions Israa_Kitap.json

Large diffs are not rendered by default.

83 changes: 83 additions & 0 deletions Israa_book_transactions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import json
import os


# books_file='books.json'
books_file='Israa_kitap.json'

def load_books():
if os.path.exists(books_file):
with open(books_file,'r') as file:
try:
data = json.load(file)
return data if isinstance(data, list) else []
except json.JSONDecodeError:
return []


def save_books(books):
with open(books_file,'w') as file:
json.dump(books,file,indent=4)

def add_book(title, author, year,barcode):
books = load_books()
if books is None:
books = [] # Ensure it's always a list
books.append({"title": title, "author": author, "year": year,'Barcode':barcode})
save_books(books)

def delete_book(title):
books = load_books()
book_exists = any( book.get('title' ) == title for book in books)
if book_exists:
books = [book for book in books if book.get('title' ) != title]
save_books(books)
print(f'Book "{title}" has been deleted successfully.')
else:
print(f'Book "{title}" not found.')

def search_book(title):
books=load_books()
return next((book for book in books if book.get('title' )== title),None)

def list_books():
books = load_books()
if books:
for book in books:
print(f"Title: { book.get('Title' )} - Author: {book.get('Author' )}")
else:
print("No books available.")

def main():
while True:
print('Welcome in Book transactions')
print('1.add book')
print('2.Search book')
print('3.delete book ')
print('4.List book')
print('5.Exit')
choice=input('Please select an option: ')

if choice=='1':
title=input('Enter book title: ')
author=input('Enter book author: ')
year=input('Enter book year: ')
barcode=input('Enter book barcode: ')
add_book(title,author,year,barcode)
print("Book added successfully!")
elif choice=='2':
title=input('Enter book title to search: ')
book=search_book(title)
if book:
print(f"Book found! Title: {book['title']}, Author: {book['author']}, Year: {book['year']}")
else:
print("Book not found.")
elif choice=='3':
title=input('Enter book title to delete : ')
delete_book(title)
elif choice=='4':
list_books()
elif choice=='5':
break
else:
print('Invalid choise , please try again!')
24 changes: 24 additions & 0 deletions Israa_main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import Israa_book_transactions
import Israa_membership_transactions

def main():
while True:
print('')
print('Welcome to our puplic library')
print('1.Book transactions')
print('2.Membership transactions')
print('3.Exit')

choice=input('Please select an option: ')

if choice=='1':
Israa_book_transactions.main()
elif choice=='2':
Israa_membership_transactions.main()
elif choice=='3':
break
else:
print('Option is not found. Please try again!')

if __name__ == "__main__":
main()
162 changes: 162 additions & 0 deletions Israa_membership_transactions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
import json
import os
from datetime import datetime,timedelta
import Israa_book_transactions

members_file='members.json'
tracking_file='tracking.json'

def load_members():
if os.path.exists(members_file):
with open(members_file,'r') as file:
try:
data = json.load(file)
return data if isinstance(data, list) else []
except json.JSONDecodeError:
return []
return []

def save_members(members):
with open(members_file,'w') as file:
json.dump(members, file, indent=4)


def add_member(name):
members=load_members()
members.append({'name':name})
print('Added member is succesfully')
save_members(members)

def delete_member(name):
members = load_members()
member_exists = any(member["name"] == name for member in members)
if member_exists:
members = [member for member in members if member["name"] != name]
save_members(members)
print(f'Member "{name}" has been deleted successfully.')
else:
print(f'Member "{name}" not found.')

def check_member(name):
members = load_members()
if any(member["name"] == name for member in members):
print(f'Member "{name}" exists.')
else:
print(f'Member "{name}" not found.')

def save_tracking(tracking_data):
existing_tracking = []
if os.path.exists(tracking_file):
with open(tracking_file, "r") as file:
try:
existing_tracking = json.load(file)
if not isinstance(existing_tracking, list):
existing_tracking = []
except json.JSONDecodeError:
existing_tracking = []
existing_tracking.append(tracking_data)
with open(tracking_file, "w") as file:
json.dump(existing_tracking, file, indent=4)

def lend_book(member_name, book_title):
books = Israa_book_transactions.load_books()
members = load_members()
if not any(member['name'] == member_name for member in members):
return "Member not found."
book = next((book for book in books if book.get("title") == book_title), None)
if not book:
return "Book not found."



# Calculate loan and return dates
loan_date = datetime.now()
return_date = loan_date + timedelta(weeks=2)

tracking_data = {
"member": member_name,
"book": book_title,
"loan_date": loan_date.strftime("%d-%m-%Y"),
"return_date": return_date.strftime("%d-%m-%Y")
}

# Save tracking data
save_tracking(tracking_data)
books = [book for book in books if book.get("title") != book_title]
Israa_book_transactions.save_books(books)

print(f'Book "{book_title}" loaned to "{member_name}". Return by {return_date.strftime("%d-%m-%Y")}')


tracking_file = "taksi.json"
books_file = "Israa_Kitap.json"

def load_json(filename):
""" Load JSON data safely from a file """
if os.path.exists(filename):
with open(filename, "r") as file:
try:
data = json.load(file)
return data if isinstance(data, list) else []
except json.JSONDecodeError:
return []
return []

def save_json(filename, data):
""" Save data to JSON file """
with open(filename, "w") as file:
json.dump(data, file, indent=4)


def return_book(member_name, book_title):
tracking = load_json(tracking_file)
books = load_json(books_file)
# Find the loan record
loan_record = next((entry for entry in tracking if entry["member"] == member_name and entry["book"] == book_title), None)
if not loan_record:
print(f'No loan record found for "{book_title}" under "{member_name}".')
return
# Remove from tracking records
tracking = [entry for entry in tracking if not (entry["member"] == member_name and entry["book"] == book_title)]
save_json(tracking_file, tracking)
# Add book back to Israa_Kitap.json
books.append({"title": book_title})
save_json(books_file, books)
print(f'Book "{book_title}" has been successfully returned by "{member_name}".')


def main():
while True:
print("\nMembership Transactions")
print("1. Add Member")
print("2. Lend Book")
print('3.Delete Member')
print("4. Check Member")
print('5.Return Book')
print('6.Exit')

choice = input("Please select an option: ")

if choice == '1':
name = input("Enter member name: ")
add_member(name)
elif choice == '2':
member_name = input("Enter member name: ")
book_title = input("Enter book title to lend: ")
result=lend_book(member_name, book_title)
print(result)
elif choice=='3':
name=input('Enter member name to delete: ')
delete_member(name)
elif choice =='4':
name=input('Enter member name to check: ')
check_member(name)
elif choice=='5':
member_name = input("Enter member name: ")
book_title = input("Enter book title to return: ")
return_book(member_name, book_title)
elif choice == '6':
print("Exiting membership transactions.")
break
else:
print("Invalid choice, please try again!")
8 changes: 8 additions & 0 deletions Israa_time_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from datetime import datetime,timedelta
def get_lending_period():

loan_date = datetime.now()
return_date = loan_date + timedelta(weeks=2)
return loan_date.strftime("%Y-%m-%d"), return_date.strftime("%Y-%m-%d")

get_lending_period()
Binary file not shown.
Binary file not shown.
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.")
Loading