Conceptual help needed for creating forms related to parent node I would like to ask for your opinion in creating a solution for the following application requirements. The general purpose of the application is to administrate students, teachers and courses much like a school administration software. 

Some content-types will have related forms (original format is PDF) that are filled in partially by the user and partially by the application.
After filling in the required data, the forms must be printable (PDF) and stored for future editing and printing again. The filled form must always stay related to a specific parent node. Means, if the user views or edits the content of a certain node, he needs to see the related forms and be able to click on them to fill in data or edit or print the filled in form again and again.

A small example. 

Content-type: student (node)

- related form: attendance 
- related form: enrollment       


Properties of the related forms:

- original forms are available as PDF files
- some fields are filled in programmatically, taking data from the currently viewed student node
- other fields are filled in manually by the user
- filled in forms need to be printable (PDF) or send as mail attachment
- filled in forms need to be stored for future printing / editing 
- forms always need to be related with their parent student node


My targeted solution is as follows using as example the form "attendance": 


programmatically create and validate the form "attendance"
store the filled form as a PDF file in the file system  
add the PDF as attachment to the related student node
add an edit button beside the attachment that leads the user to the filled form (for editing and printing again)


Could this solution work? 
Does anybody have ideas or hints for a better solution?
Any comments are very appreciated.
I would solve this a bit differently:


Programmatically create and validate the form "attendance" - sounds good.
I would create a separate database table and store the filled form data there. It should have node (and user) id fields to determine to which node (user) it is related to. The node id field or node and user id field combination should be unique so you can always get the right attendance data for the specific node/user. Optionally it could have a unique, auto-incremental attendance id as the primary key if more than one field would be needed otherwise (easier to create unique paths for every attendance). Then I'd also add either separate fields for every form field or one field for all the data (serialized) depending of the needs.
Add a link instead to a programmatically created path (example: attendance/1/pdf where 1 would be the unique id for the attendance). When the user goes to the page create the pdf from the attendance data that they can download/view.
Add a link to the attendance edit form page (example path: attendance/1/edit).


One more thing to note is to get the (view/edit) permissions right if there is a need for restrictions.

In case my solution idea doesn't fit too well with all the specific requirements I would just say that you should store data in the database not files.