实现计算功能
在map包下创建RelationshipMap.java,其中内容如下:
package map;
import java.util.HashMap;
import java.util.Map;
public class RelationshipMap {
public String getRelationShipValueByMap(String key) {
Map<String,String> relationship=new HashMap<String,String>();
/**************************父族****************************/
relationship.put("f","父亲");
relationship.put("m","母亲");
relationship.put("f,w","母亲");
relationship.put("f,f","祖父/爷爷");
relationship.put("f,m","祖母/奶奶");
relationship.put("f,f,w","祖母/奶奶");
relationship.put("f,f,f","曾祖父/太爷爷");
relationship.put("f,f,m","曾祖母/太奶奶");
relationship.put("f,f,f,w","曾祖母/太奶奶");
relationship.put("f,f,f,f","高祖父/老太爷爷");
relationship.put("f,f,f,m","高祖母/老太奶奶");
relationship.put("f,f,f,f,w","高祖母/老太奶奶");
relationship.put("f,bb","伯父/伯伯");
relationship.put("f,bb,w","伯母/姆姆");
relationship.put("f,sb","叔父/叔叔");
relationship.put("f,sb,w","叔母/婶婶");
relationship.put("f,bs","姑母/大姑/姑妈");
relationship.put("f,bs,h","姑丈/姑夫");
relationship.put("f,ss","姑母/姑姑");
relationship.put("f,ss,h","姑丈/姑夫");
relationship.put("f,bb,s","堂兄/堂哥/哥哥");
relationship.put("f,sb,s","堂弟/弟弟");
relationship.put("f,bb,s,w","堂嫂/嫂嫂");
relationship.put("f,sb,s,w","堂弟妇/弟妹");
relationship.put("f,bb,d","堂姐/堂姊");
relationship.put("f,bb,d,h","堂姐夫");
relationship.put("f,sb,d","堂妹");
relationship.put("f,sb,d,h","堂妹夫");
relationship.put("f,bs,s","表兄/表哥");
relationship.put("f,bs,s,w","表嫂");
relationship.put("f,ss,s","表弟");
relationship.put("f,ss,s,w","表弟妇");
relationship.put("f,bs,d","表姐");
relationship.put("f,bs,d,h","表姐夫");
relationship.put("f,ss,d","表妹");
relationship.put("f,ss,d,h","表妹夫");
relationship.put("f,f,bs,s","表伯");
relationship.put("f,f,bs,s,w","表姆");
relationship.put("f,f,ss,s","表叔");
relationship.put("f,f,ss,s,w","表婶");
relationship.put("f,f,bs,d","表姑");
relationship.put("f,f,bs,d,h","表姑夫");
relationship.put("f,f,ss,d","表姑");
relationship.put("f,f,ss,d,h","表姑夫");
relationship.put("f,m,bb","舅祖父/舅公");
relationship.put("f,m,bb,w","舅祖母/妗婆");
relationship.put("f,m,sb","舅祖父/舅公");
relationship.put("f,m,sb,w","舅祖母/妗婆");
relationship.put("f,f,bb","伯祖父");
relationship.put("f,f,f,bb,s","堂伯祖父");
relationship.put("f,f,bb,w","伯祖母");
relationship.put("f,f,f,bb,s,w","堂伯祖母");
relationship.put("f,f,sb","叔祖父");
relationship.put("f,f,f,sb,s","堂叔祖父");
relationship.put("f,f,sb,w","叔祖母");
relationship.put("f,f,f,sb,s,w","堂叔祖母");
relationship.put("f,f,bs","祖姑母/姑婆");
relationship.put("f,f,ss","祖姑母/姑婆");
relationship.put("f,f,f,bb,d","祖姑母/姑婆");
relationship.put("f,f,f,sb,d","祖姑母/姑婆");
relationship.put("f,f,bs,h","祖姑丈/姑婆公");
relationship.put("f,f,ss,h","祖姑丈/姑婆公");
relationship.put("f,f,f,bb,d,h","祖姑丈/姑婆公");
relationship.put("f,f,f,sb,d,h","祖姑丈/姑婆公");
relationship.put("f,f,f,bb","曾伯祖父");
relationship.put("f,f,f,f,bb,s","曾伯祖父");
relationship.put("f,f,f,bb,w","曾伯祖母");
relationship.put("f,f,f,f,bb,s,w","曾伯祖母");
relationship.put("f,f,f,sb","曾叔祖父");
relationship.put("f,f,f,f,sb,s","曾叔祖父");
relationship.put("f,f,f,sb,w","曾叔祖母");
relationship.put("f,f,f,f,sb,s,w","曾叔祖母");
relationship.put("f,f,f,bs","曾祖姑母/太姑婆");
relationship.put("f,f,f,ss","曾祖姑母/太姑婆");
relationship.put("f,f,f,f,bb,d","曾祖姑母/太姑婆");
relationship.put("f,f,f,f,sb,d","曾祖姑母/太姑婆");
relationship.put("f,f,f,bs,h","曾祖姑丈/太姑婆公");
relationship.put("f,f,f,ss,h","曾祖姑丈/太姑婆公");
relationship.put("f,f,f,f,bb,d,h","曾祖姑丈/太姑婆公");
relationship.put("f,f,f,f,sb,d,h","曾祖姑丈/太姑婆公");
relationship.put("f,f,f,f,bb","高伯祖父/老太公");
relationship.put("f,f,f,f,f,bb,s","高伯祖父/老太公");
relationship.put("f,f,f,f,bb,w","高伯祖母/老太婆");
relationship.put("f,f,f,f,f,bb,s,w","高伯祖母/老太婆");
relationship.put("f,f,f,f,sb","高叔祖父/老太公");
relationship.put("f,f,f,f,f,sb,s","高叔祖父/老太公");
relationship.put("f,f,f,f,sb,w","高叔祖母/老太婆");
relationship.put("f,f,f,f,f,sb,s,w","高叔祖母/老太婆");
relationship.put("f,f,f,f,bs","高祖姑母/老太姑婆");
relationship.put("f,f,f,f,ss","高祖姑母/老太姑婆");
relationship.put("f,f,f,f,f,bb,d","高祖姑母/老太姑婆");
relationship.put("f,f,f,f,f,sb,d","高祖姑母/老太姑婆");
relationship.put("f,f,f,f,bs,h","高祖姑丈/老太姑婆公");
relationship.put("f,f,f,f,ss,h","高祖姑丈/老太姑婆公");
relationship.put("f,f,f,f,f,bb,d,h","高祖姑丈/老太姑婆公");
relationship.put("f,f,f,f,f,sb,d,h","高祖姑丈/老太姑婆公");
/**************************母族****************************/
relationship.put("m,h","父亲/爸爸");
relationship.put("m,f","外祖父/外公/姥爷");
relationship.put("m,m","外祖母/外婆/姥姥");
relationship.put("m,f,f","大外祖父/外太公/太姥爷");
relationship.put("m,f,f,w","大外祖母/外太婆/太姥姥");
relationship.put("m,f,m","大外祖母/外太婆/太姥姥");
relationship.put("m,bb","舅父/大舅");
relationship.put("m,bb,w","舅母/舅妈");
relationship.put("m,sb","舅父/舅舅");
relationship.put("m,sb,w","舅母/舅妈");
relationship.put("m,bs","姨母/大姨/姨妈");
relationship.put("m,bs,h","姨丈/姨夫");
relationship.put("m,ss","姨母/姨姨");
relationship.put("m,ss,h","姨丈/姨夫");
relationship.put("m,bb,s","表哥/表弟");
relationship.put("m,sb,s","表哥/表弟");
relationship.put("m,bb,s,w","表嫂/表弟妇");
relationship.put("m,sb,s,w","表嫂/表弟妇");
relationship.put("m,bb,d","表姐/表妹");
relationship.put("m,bb,d,h","表姐夫/表妹夫");
relationship.put("m,sb,d","表姐/表妹");
relationship.put("m,sb,d,h","表姐夫/表妹夫");
relationship.put("m,bs,s","表哥/表弟");
relationship.put("m,ss,s","表哥/表弟");
relationship.put("m,bs,s,w","表嫂/表弟妇");
relationship.put("m,ss,s,w","表嫂/表弟妇");
relationship.put("m,bs,d","表姐/表妹");
relationship.put("m,ss,d","表姐/表妹");
relationship.put("m,bs,d,h","表姐夫/表妹夫");
relationship.put("m,ss,d,h","表姐夫/表妹夫");
relationship.put("m,f,bs,s","表舅");
relationship.put("m,f,ss,s","表舅");
relationship.put("m,f,bs,s,w","表妗");
relationship.put("m,f,ss,s,w","表妗");
relationship.put("m,f,bs,d","表姨");
relationship.put("m,f,bs,d,h","表姨夫");
relationship.put("m,f,ss,d","表姨");
relationship.put("m,f,ss,d,h","表姨夫");
relationship.put("m,m,bb","外舅祖父/外舅公");
relationship.put("m,m,sb","外舅祖父/外舅公");
relationship.put("m,m,bb,w","外舅祖母/外妗婆");
relationship.put("m,m,sb,w","外舅祖母/外妗婆");
relationship.put("m,f,bb","外伯祖父/外伯公");
relationship.put("m,f,sb","外叔祖父/外叔公");
relationship.put("m,f,bb,w","外伯祖母/外姆婆");
relationship.put("m,f,sb,w","外叔祖母/外婶婆");
relationship.put("m,f,f,bb,s","堂外伯祖父/堂外伯公");
relationship.put("m,f,f,sb,s","堂外叔祖父/堂外叔公");
relationship.put("m,f,f,bb,s,w","堂外伯祖母/堂外姆婆");
relationship.put("m,f,f,sb,s,w","堂外叔祖母/堂外婶婆");
relationship.put("m,f,bs","外姑母/外姑婆");
relationship.put("m,f,ss","外姑母/外姑婆");
relationship.put("m,f,bs,h","外姑丈/外姑婆公");
relationship.put("m,f,ss,h","外姑丈/外姑婆公");
relationship.put("m,f,f,bb,d","堂外姑母/堂外姑婆");
relationship.put("m,f,f,bb,d,h","堂外姑丈/堂外姑婆公");
relationship.put("m,f,f,sb,d","堂外姑母/堂外姑婆");
relationship.put("m,f,f,sb,d,h","堂外姑丈/堂外姑婆公");
/**************************妻族****************************/
relationship.put("w,f","岳父");
relationship.put("w,m","岳母");
relationship.put("w,f,f","太岳父");
relationship.put("w,f,m","太岳母");
relationship.put("w,f,f,w","太岳母");
relationship.put("w,bb","大舅子");
relationship.put("w,bb,w","大妗");
relationship.put("w,sb","小舅子");
relationship.put("w,sb,w","小妗");
relationship.put("w,bs","大姨子");
relationship.put("w,ss","小姨子");
relationship.put("w,bs,h","襟兄");
relationship.put("w,ss,h","襟弟");
relationship.put("w,f,bb","伯岳父");
relationship.put("w,f,bb,w","伯岳母");
relationship.put("w,f,sb","叔岳父");
relationship.put("w,f,sb,w","叔岳母");
return relationship.get(key);
}
}
该类中放置了亲属关系的数据。
接着为计算按钮添加事件监听器,其内容如下:
// “计算”按钮事件
countButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String key = new NameProperty().convertTextAreaToString(inputRelationTextArea);
outputResultTextArea.setText(new RelationshipMap().getRelationShipValueByMap(key));
}
});
运行程序,效果如下:
到此为止,所有功能都已经实现了。
总结
这种思路是将所有关系链存储到Map中,而亲属关系是有很多了,上面的10个亲属称谓按钮就可以组成上千种关系,因此使用这种思路完成这个项目就需要列出所有亲属关系链的键值对,需要花费大量的代价。
在下一个项目种将使用JavaFX来实现亲戚关系计算器,并且使用另一种算法来实现。
可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。
注意:在公众号后台回复【20191116】可获取本节源码。