软件构造-social network实现

Lab1-Social Network实现:

1.1.1 设计/实现FriendshipGraph类

 

 

 

 

利用HashMap存储数据,好处是既可以存储成员名字,又可以对应编号,方便查找,开二维数组Edge,记录两点间是否有连线,最初遍历数组将每个点的值设为MAX_VALUE。

 

 

设计类中方法addVertex,利用hashmap的put方法将名字put进表中,在put之前首先利用containsKey函数判断表中是否已经存在输入的名字,如果已存在则退出程序。

 

 

设计类中方法eddEdge,首先判断传入参数是否存在,若不存在则退出,再判断两人间是否已经存在联系,若已有边则重复输入,退出程序。判断完毕无异常后将对应的Edge修改为1表示两点间有线连接。

 

 

设计实现类中函数getDistance,即求两点间最小距离,首先健壮性测试,判断两人是否已经生成点,未生成则退出。检测完毕无问题后开始求最小距离。由于问题为有向无权图的最短距离,只需利用广度优先搜索BFS即可,利用队列QUEUE实现,实现方法如下。

 

 

 

1.1.1 设计/实现Person类

在Person类中只是重新写了构造函数,传入字符串时自动生成名字。

 

 

 

1.1.2 设计/实现客户端代码main()

main函数在FriendshipGraph类中实现,根据指导书上内容进行加点,加边操作,并输出两点间最短距离

 

 

 

最终测试结果如下,符合答案。

 

 

 

1.1.3 设计/实现测试用例

利用Junit进行测试,首先创建Junit test case然后传入对应包,

 

 

写入对应测试函数,addVertextest测试加点,并且对重复加点进行测试

 

 

 

写入addEdgetest对加边进行测试,并且对健壮性测试,分别写入不存在的点,与以生成的边。

 

 

 

最终对计算最短距离进行测试,同样进行健壮性测试,对不存在的点计算路径

 

 

 

设计完成后进行build path导入Junit4,进行测试,完全正确

 

posted @ 2022-06-06 11:13  Gusimo22  阅读(76)  评论(0)    收藏  举报