There is a systematic approach to software development that is often used: first you define the basic users and "stakeholder" (people with interest in the system, but might not necessarily use it), then you list the needs of those people and imagine the coarse features a system would need to fulfill those needs. From those features you can derive required specific behavior and detail how to use them in use cases. After that you will pretty much know what your system will need to be able to do, how to do it and start the program's architecture.
On top of my head, for a library I would imagine:
1. Add/modify/delete book
2. Search book by title/author/edition/subject/...
3. View book information and status (in/out & by who)
4. Member...