1) The assignment requires us to implement the DBMain or DBAccess interface depending on your assignment.
I think you need to think of this class of implementing database like functionality, in that you can create, read, update and delete. (Although all this functionality may not be used by our GUI!)
The purpose of the deleted flag is to provide an optimised mechanism for deleting records. As we are using a flat file it would require a complicated process to remove a record i.e number of bytes from the middle of a file.
Therefore by using a flag to mark the record as deleted we do not reduce the size of the file, but when we need to create a new record we can reuse the space in the file that is marked as deleted.
Also when we read records we ignore records that are marked as deleted.
2) The customer id field is used to determine if the room is available, if the field is empty you can book the room otherwise it's already booked.
You shouldn't modify the date, only the customer id field when the room is booked.
You need to remember that there maybe other applications (read your requirements) that may add new rooms, the application you are writing is for the agents to book the rooms.
Hope my explaination helps
Jason.