I am disappointed in the points lost in the GUI since that's where I felt was the easiest part for me. May be I just had it "too simple". I know there are many more things I could do to make the GUI much better. Perhaps I took the advice of "keeping it simple" here too far in some area.
Basically, my GUI had a search area at the top with editable combobox for name and location, with a clear and search button. The JTable is shown below. I also provided a menu and a popup menu for the "book/unbook" command. May be I shouldn't have the "unbook" implementation. I didn't implement any sorting, since the fellow with 400/400 didn't do that. That may or may not be a point loser though.
Anyhow, some other experience I'd like to share and others may find useful:
I start the project just before Christmas last year, beginning of Dec 2006 and completed/submitted around early March. I think it's just under 4 weeks since my submission and getting my results today.
The actual time is probably in the order of 2-3 40-hr work weeks. I'd say the first week of effort is mostly in setting up the project which I think make life simpler in the actual project development. I set up 4 directories: assignment (where the original downloaded assignment sits), development (where I put the actual development source and everything else used for development), solutions (where the final submission files as outlined in the assignment would go. These are the files that generated the final submission JAR file), and submission (where I extracted the submission JAR file back out to ensure what I submit is what should be there. It was also used for some final testing).
I used Eclipse for my IDE and set up an ANT script to do the complete build, documentation and JAR process. I has some JUnit tests, but didn't put that in the ANT script, nor thought it was really warranted. All my documentations were developed in the "development" directory. Everything in the "solutions" were created by the ANT script. This helps to ensure that the right files goes in the right place exactly as outline by the instructions, no extraneous files or problems with different versions.
The ANT script does the build and jar the runme.jar, copies the original database files and instructions from the "assignment", generates the javadoc, and JAR everything up from the solutions directory.
For "versioning", I simply need to zip up my development directory at the end of the day and email it back to myself on my gmail acct. This is a simple and pretty effective way to ensure I have back up and version if I need to go back to any previous version without investing a lot of time do anything fancy.
I also spend some time in learning about RMI, which was my choice of networking. Didn't bother with sockets at all. As I said, I thought the GUI was the easiest part, since in my work, I have done a lot of GUI work far more complex than this project. Perhaps it was over confidence. Or just trying to pick the right set of features to implement in the GUI.
I think one question that has come up here many times is the DuplicateKeyException in the create() methods in the interface. It is safe to say that I only implemented the class and my method never throws it, and no "key" was determined. I did mention it in my choices.txt and explain how it could be implemented, assuming we know of the key. I took out the hashcode() and equals() method in my "Contractor" class which I originally implmented for the "key", and later, after reading about others who didn't implement it without losing marks, I just drop it.
I organized my choices.txt in terms of the layers: Overall, GUI, Networking, Server, with a "heading" and numbered points for each item.
Anyhow, if anyone have more questions, feel free to ask.