This is based on the capstone project from an online C++ course I took years ago. Unfortunately, I can remember neither the name of the organization or the instructor... if you happen to see this, send me a message and I will update the attribution accordingly.
This is a nice exercise of programming ability, since it touches on several different concepts: file handling, string manipulation, data structures and algorithms. A clear design helps with keeping the program elements small and understandable, as does a good knowledge of available libraries.
Each language that I know, or will teach myself will have its own folder, which will also include any packaging items unique to that language (eq Cargo configuration for the Rust language).
The initial specification is: Information about the inventory of a library will be held in a text file. Each inventory item will occupy a line in the text file, and have the format: Title|Author|Publisher|Publication Year|Number of Copies| (the delimiter is the vertical bar or pipe).
The user will be able to:
- View the inventory
- Add an item:
- If it is already in the inventory, then the count is incremented
- Otherwise, a new item is added to the inventory
- Remove an item - if the last item is removed, the count should be set to zero rather than removing the item completely
- Clean up - deletes from the file any items with zero count
- Save changes to the file
Design considerations:
- The program should be able to readily be adapted changes to the file structure (fields and delimited).
- All output items should be made accessible for any type of user front-end (the program should be adaptable to be used as a web backend, or a windowed application)
2024/12/7: design update - use XML and/or JSON to store specifics of data file layout (filename and path, delimeter, field names). Use XML libraries for each language to read at program start up.