Book Tracker Program Demonstration | Rishi Nalem

WHAT TO KNOW - Sep 7 - - Dev Community

<!DOCTYPE html>





Book Tracker Program Demonstration | Rishi Nalem

<br> body {<br> font-family: sans-serif;<br> }<br> h1, h2, h3 {<br> text-align: center;<br> }<br> img {<br> display: block;<br> margin: 20px auto;<br> max-width: 80%;<br> }<br> pre {<br> background-color: #f0f0f0;<br> padding: 10px;<br> border-radius: 5px;<br> overflow-x: auto;<br> }<br> code {<br> font-family: monospace;<br> }<br>



Book Tracker Program Demonstration | Rishi Nalem



Introduction



This article will guide you through a demonstration of a simple book tracking program. This program will allow you to keep track of your reading list, mark books as read, and even rate them. It's a practical example of how to apply programming concepts like data structures, loops, and user input to create a useful application. We will be using Python for this demonstration. You can find the complete code on GitHub:

https://github.com/your-username/book-tracker



Understanding such programs helps in grasping basic programming concepts and can even serve as a starting point for building more elaborate personal projects.



Program Structure



Let's break down the core components of our book tracker program:


  1. Data Structure:

We'll use a Python dictionary to store book information. Each book will be represented as a dictionary within the main dictionary, with keys like 'title', 'author', 'genre', 'read', and 'rating'.


books = {
"book1": {
    "title": "The Hitchhiker's Guide to the Galaxy",
    "author": "Douglas Adams",
    "genre": "Science Fiction",
    "read": False,
    "rating": 0
},
"book2": {
    # More books here...
}
}

  • Menu-Driven Interaction:

    A simple menu will guide the user through the program's functionalities. Users can choose to add books, view their reading list, mark books as read, and rate books.

    
    while True:
    print("\nBook Tracker Menu:")
    print("1. Add Book")
    print("2. View Reading List")
    print("3. Mark Book as Read")
    print("4. Rate Book")
    print("5. Exit")
    
    choice = input("Enter your choice (1-5): ")
    
    # Process user choice...
    


  • Functions for Different Operations:

    We'll create functions to handle each menu option. For instance, a 'add_book' function will prompt the user for book details and add it to the 'books' dictionary.

    
    def add_book():
    title = input("Enter book title: ")
    author = input("Enter author: ")
    genre = input("Enter genre: ")
    books[f"book{len(books)+1}"] = {
        "title": title,
        "author": author,
        "genre": genre,
        "read": False,
        "rating": 0
    }
    print("Book added successfully!")
    

    Code Implementation

    Here's the complete Python code for our book tracker program:


    books = {}
  • def add_book():
    title = input("Enter book title: ")
    author = input("Enter author: ")
    genre = input("Enter genre: ")
    books[f"book{len(books)+1}"] = {
    "title": title,
    "author": author,
    "genre": genre,
    "read": False,
    "rating": 0
    }
    print("Book added successfully!")

    def view_reading_list():
    if not books:
    print("Your reading list is empty.")
    return
    print("\nReading List:")
    for book_id, book_data in books.items():
    print(f" {book_id}: {book_data['title']} by {book_data['author']} ({book_data['genre']})")
    if book_data['read']:
    print(f" Status: Read, Rating: {book_data['rating']}/5")
    else:
    print(" Status: Not Read")

    def mark_as_read():
    view_reading_list()
    if not books:
    return
    book_id = input("\nEnter the ID of the book to mark as read: ")
    if book_id in books:
    books[book_id]['read'] = True
    print("Book marked as read!")
    else:
    print("Invalid book ID.")

    def rate_book():
    view_reading_list()
    if not books:
    return
    book_id = input("\nEnter the ID of the book to rate: ")
    if book_id in books:
    rating = int(input("Enter rating (1-5): "))
    if 1 <= rating <= 5:
    books[book_id]['rating'] = rating
    print("Book rated successfully!")
    else:
    print("Invalid rating. Please enter a value between 1 and 5.")
    else:
    print("Invalid book ID.")

    while True:
    print("\nBook Tracker Menu:")
    print("1. Add Book")
    print("2. View Reading List")
    print("3. Mark Book as Read")
    print("4. Rate Book")
    print("5. Exit")

    choice = input("Enter your choice (1-5): ")
    
    if choice == '1':
        add_book()
    elif choice == '2':
        view_reading_list()
    elif choice == '3':
        mark_as_read()
    elif choice == '4':
        rate_book()
    elif choice == '5':
        print("Exiting Book Tracker. Goodbye!")
        break
    else:
        print("Invalid choice. Please try again.")
    


    Explanation

    1. Initialization:

      • The books dictionary is initialized to an empty dictionary.
      • add_book Function:
      • Takes user input for the book's title, author, and genre.
      • Creates a new dictionary for the book, sets its initial read status to False, and its rating to 0.
      • Adds this book dictionary to the books dictionary using a unique key generated from the number of existing books.
      • view_reading_list Function:
      • If the books dictionary is empty, it prints a message indicating an empty reading list.
      • Otherwise, it iterates through the books dictionary and prints information for each book, including its ID, title, author, genre, and its read status and rating if applicable.
      • mark_as_read Function:
      • Displays the reading list.
      • Prompts the user to enter the ID of the book they want to mark as read.
      • Updates the read status of the corresponding book in the books dictionary to True.
      • rate_book Function:
      • Displays the reading list.
      • Prompts the user to enter the ID of the book they want to rate.
      • Takes user input for the rating (between 1 and 5) and updates the rating in the corresponding book's dictionary.
      • Main Loop:
      • Continuously presents the menu options to the user.
      • Takes the user's choice and calls the appropriate function based on their input.
      • If the user chooses to exit (option 5), the loop breaks.

        Running the Program

    2. Save the Code: Save the code as a .py file (e.g., book_tracker.py).

      1. Run the Script: Open a terminal or command prompt, navigate to the directory where you saved the file, and run the script using python book_tracker.py.
      2. Interact with the Menu: Follow the menu prompts to add books, view your list, mark books as read, and rate them.

        Further Enhancements

        This is a basic book tracker. You can extend its functionality by:
    • Saving Data: Implement saving the book data to a file so that it persists between program runs.
    • Search Functionality: Add the ability to search for books based on title, author, or genre.
    • Sorting Options: Allow users to sort the reading list by different criteria (title, author, genre, rating, etc.).
    • User Interface: Use a graphical user interface (GUI) library like Tkinter or PyQt for a more visually appealing experience.

      Conclusion

      This demonstration provides a basic understanding of how to create a book tracker program using Python. By understanding the core concepts like data structures, loops, and user input, you can build more complex and customized applications. Remember, programming is about problem-solving, and this book tracker example serves as a stepping stone towards building your own unique projects.
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Terabox Video Player