There are several ways to do that, most of which don't require building a module.
You could use the updated list feature in the new Orchard 1.8. That does pretty much exactly what you describe.
You could use taxonomies, where the boxes are terms (terms have their own content type that you can extend). The workflow is kinda backwards with this, where you put books in boxes rather than picking from the box which books belong.
You could use a content picker field configured for multiple items, and constrained to the book content type.
You could build your own module, with a relationship between your types, as explained here: http://docs.orchardproject.net/Documentation/Creating-1-n-and-n-n-relations but except if this is a pure learning experience, there's little reason to go for that one, as the other three above are so much simpler, and don't require any coding.