# taslakian_patil — Project Book Tracker System: Project Overview: The Book Tracker System is a command-line application developed in the C programming language. Its purpose is to help users manage and organize their reading activities efficiently. The system allows users to: - store book information - track reading progress - update reading status - rate books - search and organize their collection This project demonstrates the use of fundamental programming concepts to build a complete and functional system. Objectives: The main objectives of this project are: - To design a structured data system using struct - To implement a menu-driven application using loops and conditionals - To manage collections of data using arrays - To apply file handling for president storage - To provide a simple but effective user interface in the terminal Features: Book Management: * Add new books with: - Title - Author - Genre - Total number of pages * Automatically initializes: - Current page = 0 - Status = "Want to Read" - Rating = none Reading Progress Tracking: - Update the current page of a book - Allows users to track how much they have read Status Management: Each book has a reading status: - 0 -> Want to Read - 1 -> Reading - 2 -> Finished Users can update the status at any time. Rating System: - Users can rate books from 1 to 5 - Input validation ensures only valid ratings are accepted Search Functionality * Search books by: - Title - Author * Uses substring matching (strstr) for flexible searching Filtering: - Filter books based on reading status - Helps users view specific categories (e.g., only finished books) Sorting: - Books can be sorted by rating (descending) - Implemented using a simple sorting algorithm (bubble sort) Statistics: The system provides: - Total number of finished books - Average rating of all books File Handling (Persistence) - Save all book data to a file (books.txt) - Load data when the program starts - Ensures data is not lost after exiting program Programming Concepts Used: This project demonstrates the following core concepts: * Structures (struct): - Used to model real-world entities (books) * Arrays: - Store multiple books efficiently * Functions: - Modular design (each feature has its own function) * Loops (while, for) - Used for menu system and iteration * Conditional Statements (if, switch): - Control program flow * File Handling: - fopen, fprintf, fscanf, fclose * String Handling: - strstr for searching Program Structure: The program is divided into logical components: * Data Structure: - struct Book holds all information about each book * Functional Modules: - addBook() -> add new books - showBook() -> display all books - updateProgress() -> update reading progress - changeStatus() -> update reading status - rateBook() -> assign rating - searchBook() -> search by title/author - filterBooks() -> filter by status - sortBooks() -> sort by rating - showStats() -> display statistics - saveToFile() / loadFromFile() -> file operations * Main Loop: - A while loop controls the menu system and keeps the program running Compilation and Execution: * Compile the program: gcc project.c -o project * Run the program: ./project File Format: - The program stores data in: books.txt - Each book is stored in one line using structured format Design Choices: - A command-line interface was chosen because C does not provide built-in graphical UI support - A fixed-size array is used for simplicity and clarity - A modular approach improves readability and maintainability - A simple file format ensures easy reading and writing of data Limitations: - Maximum number of books is limited (MAX = 100) - No graphical user interface (terminal only) - Basic input validation (can be improved further) - Sorting is limited to rating only Future Improvements - Implement dynamic memory allocation (remove fixed limit) - Add delete/edit book features - Improve sorting (multiple criteria) - Add filtering by genre - Create a graphical interface (GUI) - Improve input validation and error handling Author: Patil Taslakian Conclusion: This project demonstrates how core C programming concepts can be combined to build a practical application. It highlights the importance of structured design, modular programming, and user interaction in software development.