View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Procastination Station Cases Page

Since you have made it to this page I will assume you already know about our semester genealogy project. If not check out the Spring 2004 section of the Cases page for some nice explanations of the project itself.


Our Tree Class

As I was reading section 2 of Milestone 4 a leprechaun ran into the computer lab that I was occupying, did a back-flip, and turned to run out the door. As he sprinted toward his exit he jumped into the air, clicked his heels together, and screamed "make a new class, call it 'Tree'." As you will see in our code from M4 and later there is a Tree class.

Given any person in a genealogy, you can use the Tree class to easily construct that person's family tree. Quite simply make a new instance of Tree, assign it a genealogy to work with, and set the tree's focus to a given person. To find the father of the focus' mother simply send the message 'momsDad' to the instance of tree. Take a look at our code to see how simply this is implemented. In a large genealogy this lookup could be slow but for our purposes it did just fine. Feel free to use a more efficient search method. In a matter of minutes the tree could be extended to return the persons great-great-great-grandmother just by refocusing the tree as you climb to older generations. Of course store the original focus so you can return the tree to its starting state before exiting the method.

Once we had our working Tree, creating the GUI required for M4 took a matter of minutes using prefab. Getting it to function properly when the focus of the tree was changed was a totally different story. See Keith's Prefab Help. The Tree made the family matching of Milestone 6 an very painless task. Once we had our match scoring algorithm working for two individuals all of the real work for family matching was done. In the person matching points are awarded for similar or matching attributes between the people. A high score would be two people having identical information. A very slightly lower score would be attained if you were to remove the birth date of one of the people, as all their other information would still match. SoundEx was used in the name matching. Family matching was added by creating trees focused on each of the two people in question. We then used the person matching algorithm between the parents and grandparents of the people being matched. Each of these scores was added to the match scores of the individuals. However, each generation was weighted lighter than the younger one. If this was not done, two brothers would appear to be almost identical matches.

User Interface

As stated previously we used Prefab. We have the same basic GUI windows from Milestone 2 being reused a lot.


Links to this Page