Lab1报告

1 实验目标概述 1
2 实验环境配置 1
3 实验过程 1
3.1 Magic Squares 1
3.1.1 isLegalMagicSquare() 1
3.1.2 generateMagicSquare() 1
3.2 Turtle Graphics 1
3.2.1 Problem 1: Clone and import 2
3.2.2 Problem 3: Turtle graphics and drawSquare 2
3.2.3 Problem 5: Drawing polygons 2
3.2.4 Problem 6: Calculating Bearings 2
3.2.5 Problem 7: Convex Hulls 2
3.2.6 Problem 8: Personal art 2
3.2.7 Submitting 2
3.3 Social Network 2
3.3.1 设计/实现FriendshipGraph类 2
3.3.2 设计/实现Person类 2
3.3.3 设计/实现客户端代码main() 2
3.3.4 设计/实现测试用例 3
4 实验进度记录 3
5 实验过程中遇到的困难与解决途径 3
6 实验过程中收获的经验、教训、感想 3
6.1 实验过程中收获的经验和教训 3
6.2 针对以下方面的感受 3

1 实验目标概述
本次实验通过求解四个问题(其中一个可选),训练基本 Java 编程技能,能 够利用 Java OO 开发基本的功能模块,能够阅读理解已有代码框架并根据功能需 求补全代码,能够为所开发的代码编写基本的测试程序并完成测试,初步保证所 开发代码的正确性。另一方面,利用 Git 作为代码配置管理的工具,学会 Git 的 基本使用方法。

(1)基本的 Java OO 编程
(2)基于 Eclipse IDE 进行 Java 编程
(3)基于 JUnit 的测试
(4)基于 Git 的代码配置管理
2 实验环境配置
简要陈述你配置本次实验所需开发、测试、运行环境的过程,必要时可以给出屏幕截图。
特别是要记录配置过程中遇到的问题和困难,以及如何解决的。

在这里给出你的GitHub Lab1仓库的URL地址(Lab1-学号)。
Lab1-L180300401

Github URL : https://github.com/ComputerScienceHIT/Lab1-L180300401

3 实验过程
请仔细对照实验手册,针对四个问题中的每一项任务,在下面各节中记录你的实验过程、阐述你的设计思路和问题求解思路,可辅之以示意图或关键源代码加以说明(但无需把你的源代码全部粘贴过来!)。
为了条理清晰,可根据需要在各节增加三级标题。
3.1 Magic Squares
在这里简要概述你对该任务的理 MagicSquare 实验上首先要理解在Java上读入和写入文件的方法,还要学习读入数组使将字符串转换成数字,判断读入的数字是否是符合要求,还要学习生成MagicSquare的方式以及判断输出。
3.1.1 isLegalMagicSquare()
按步骤给出你的设计和实现思路/过程/结果。

  1. 定义一个一维数组来用来存储从文件中按行读出的字符串。
  2. 然后通过语句
    String[] m = str[j].split("\t");
    ms[j][k] = Integer.valueOf(m[k]);
    来按照制表符来切割字符串,并转换成int类型整数,再定义一个二维数组用来存储得到的整数。
    3.得到矩阵后,先求出矩阵第一行数据的和。然后再与剩余的行和列以及对角线元素的和来比较,若不相等则返回false,最后如果都相等则返回true.

3.1.2 generateMagicSquare()
按步骤给出你的设计和实现思路/过程/结果。
在这里插入图片描述

  1. 首先判断传的参数n是否是正数且是奇数,若不是则打印相应提示信息并退出。
  2. 然后按照流程图的算法来生成MagicSqure
  3. 最后通过BufferedWriter写入文件。
    3.2 Turtle Graphics
    任务理解:实现一个完整的绘制工具Trurtle Graphics。主要考点:计算几何基础知识,正多边形的内角外角,java函数调用绘制多边形,计算向量之间的夹角,计算凸包,使用Junit进行单元测试。

3.2.1 Problem 1: Clone and import
从本地创建git仓库:
1.git init初始化本地仓库
2.git add remote origin 添加远程库源
3.在远程仓库创建master分支
4.git pull origin master将远程仓库同步到本地
5.git add->git commit->git push 将本地文件加入本地仓库,将本地仓库同步到远程仓库

3.2.2 Problem 5: Drawing polygons
调用calculateRegularPolygonAngle计算正多边形内角。根据正多边形内角=(边数-2)/sides。

3.2.3 Problem 6: Calculating Bearings
计算从一个点到下一个点,依次需要转过的角度。先计算第一个到第二个点和y轴之间的夹角,然后通过for循环,计算以result中上一个角为准,到下一个点转动的角度。

3.2.4 Problem 7: Convex Hulls
采用gift-wrapping算法实现convexHull
(1)先找出最左下的点A,加入返回的结果result中
(2)利用方法calculateBearingToPoint,依次计算从上一个加入result的点和所有未加入点(除A外)的直线和y轴之间的夹角,将夹角最小的点标记为可加入。
(3)如果标记的点的夹角,与上一个加入的点的夹角相同,则去除上一个点。
(4)将标记的点加入result
(5)直到A点被第二次标记,算法结束。

3.2.5 Problem 8: Personal art
在这里插入图片描述

运行结果

3.2.6 Submitting
Git push提交代码。
3.3 Social Network
实现Person和FriendshipGraph两个类,模拟社交网络,提供添加节点(人),节点之间添加边(社交关系),通过BFS计算两节点之间最短路的功能。主要考点:java类的实现,java基本数据结构,BFS
3.3.1 设计/实现FriendshipGraph类
使用List name存储所有节点。int[][]graph以邻接矩阵记录边。
addVertex:添加节点,向persons List中添加一个person对象。
addEdge: 添加边,计算两人下标,graph数组对应位置改为1 。
getDistance:利用BFS计算两人间最短路径。

3.3.2 设计/实现Person类
String name 储存人名。
SetName(String name) 设置名字
String GetName() 返回储存的名字
Person(String string) 传参并调用SetName设置名字

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

3.3.4 设计/实现测试用例
测试单边联通的特殊情况,测试重名的情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值