I don't understand you question based on the cache. Are you storing your data in cache when you first start up the client, and therefore the cache will not get updated ever from the server or data class?
I would not cache the data at all. It isn't necessary or a requirement. If you need to read the data always read directly form the data file.
As far as Dirty reads, if you read from the file when you ask for data, then you do not need to worry about dirty reads. And you really shouldn't care about dirty reads for this assignment. It is not a requirement.
It is possible that you do a search, get records back, another client books some data, and the original client still does not see the booking. That is fine for this assignment. You just need to reread the record right after lock and just before booking/modifying the record.
Mark