软件构造lab1的目的在于初步了解java的熟悉以及使用,所以才用的实验材料源于MIT 和 CMU ,实验分为三部分,是这几个实验中简单地一个。由于是第一次实验首先介绍一下实验环境,哈工大采用的是github里再带的classroom具体形式见实验指导书。
3.1magic square
3.1 Magic Squares
A magic square of order n is an arrangement of n×n numbers, usually distinct
integers, in a square, such that the n numbers in all rows, all columns, and both
diagonals sum to the same constan
输入文件给出一个n阶矩阵,判断该矩阵是否合法即可,输入文件只要有reader就可以了
输入一个正整数,如果是奇数,生成一个n阶矩阵,使其满足幻方性质,并保存到输出按文件中;如果是偶数,或者不是正整数,提示输入非法。
判断(2)生成的矩阵是否是幻方。
3.1.1 isLegalMagicSquare()
要求:您要编写一个Java程序(MagicSquare.java),用于检查矩阵的行/列/对角值,然后判断它是否为幻方。它返回一个布尔结果,指示输入是否是一个幻方。
实现思路:
将每行每列没对角线的值求出来判断是否值相同即可
3.1.2 generateMagicSquare()
将指导书上的代码稍微修改即可,不赘述
3.2 Turtle Graphics
因为已经给出了颜色,本节最终的任务是实现图形的具象化,所以说只需要先通过数学规律找到角度之间的关系,然后直接将边沿长和角度变换即可最后通过不同颜色不同长度的变换角度变换实现personal art 即可。
3.3Social Network
实现虚拟的社交网络并且加入点边等
3.3.1设计/实现FriendshipGraph类
通过Map<String,ArrayList>类加入Person在Map中,并且在addvertex中给对于Map的ArrayList中加入名字,在getdistance中调用三个hashmap,通过花名册names对visted的名字赋予Boolean值false并设distance中第一个变量level对应object值为0,检查二者是否为相同字符串,不是的情况下Bfs遍历,distance即为最后找到前最后出栈元素的level+1,若不能搜索到返回-1.
3.3.2设计/实现Person类
通过重载实现名字写入。
3.3.3设计/实现客户端代码main()
写入名字创建Person。创建人际关系图,加入人,关系,并且进行getdistance搜索
3.3.4设计/实现测试用例
创建abcd对创建是否成功进行判断,如果存在重复创建返回false
对边创建判断如果存在重复返回false
对距离进行判断是否与理想值相同
第一次实验较为简单34天即可完成