软件构造实验一

目录

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. 实验环境配置

在这里给出你的GitHub Lab1仓库的URL地址:

https://github.com/ComputerScienceHIT/HIT-Lab1-120L021525

  1. 实验过程

请仔细对照实验手册,针对四个问题中的每一项任务,在下面各节中记录你的实验过程、阐述你的设计思路和问题求解思路,可辅之以示意图或关键源代码加以说明(但无需把你的源代码全部粘贴过来!)。

为了条理清晰,可根据需要在各节增加三级标题。

    1. Magic Squares

读取五个 txt 文件,判断其中的数据是否可以构成幻方(每一行、列、对角线上的数字和为一相同常数),如果是就返回true,否则返回false。

      1. isLegalMagicSquare()

按步骤给出你的设计和实现思路/过程/结果。

遍历文件(储存数据的矩阵)。途中判断矩阵行列数是否相等,不等返回false,并对是否有非法数据和非法分隔符进行判断,当出现时返回false。

建立一个数组,分别存储每一行、每一列、以及对角线上的数据和。每遍历到一个数字,就把数据加载到数组对应的位置,在遍历结束后,通过判断该数组各个数字是否相等,就可以判断是否是幻方。

      1. generateMagicSquare()

当输入的n为负数或偶数时,函数输出false结束。当输入合法时,按照所给算法构造幻方,并将其写入6.txt。

    1. Turtle Graphics

实现一个绘图工具Turtle graphics,画出一个正方形,通过多边形内角和公式得到正多边形内角或边数,计算从一个点到另外一个点所需要转过的角度,给定一系列点计算每次转过的角度并返回在集合中,凸包suanfa1,绘制图形,junit进行单元测试。。

      1. Problem 1: Clone and import

如何从GitHub获取该任务的代码、在本地创建git仓库、使用git管理本地开发。

根据实验手册地址下载,使用git。

      1. Problem 3: Turtle graphics and drawSquare

每次旋转90°,画四次即可画出正方形。

      1. Problem 5: Drawing polygons

与正方形类似,计算每次需旋转的角度和边数,可画出正多边形。

      1. Problem 6: Calculating Bearings

根据数学公式即可推出。

      1. Problem 7: Convex Hulls

凸包算法,先找到最左下角点,然后计算每次最小偏移角对应的另外一个点,然后以该点为起点,重复操作,就可以得到一个点集,该点集就是最终结果。

      1. Problem 8: Personal art

不断改变图形的大小和颜色即可做到。

      1. Submitting

先存储到本地git仓库,然后使用push命令。

    1. Social Network

在人群中建立一个人际关系网,可增加新的人,在某两个人之间添加关系,并可求任两人之间的关系长。

      1. 设计/实现FriendshipGraph类

使用二维数组来存储图,数组中某个元素的值代表对应的 是否有社交关系。使用图的搜索算法即可求得任意两个顶点间的距离。

      1. 设计/实现Person类

给出你的设计和实现思路/过程/结果。

建立一个person类,用于储存人名。

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

给出你的设计和实现思路/过程/结果。

实验手册已经给出大部分思路。

      1. 设计/实现测试用例

  1. 实验进度记录

请使用表格方式记录你的进度情况,以超过半小时的连续编程时间为一行。

每次结束编程时,请向该表格中增加一行。不要事后胡乱填写。

不要嫌烦,该表格可帮助你汇总你在每个任务上付出的时间和精力,发现自己不擅长的任务,后续有意识的弥补。

日期

时间段

任务

实际完成情况

2022-05-02

20:00-21:30

编写问题1

按计划完成

2022-05-03

13:00-20:00

编写问题2

第二天完成

2022-05-06

14:00-19:30

编写问题3

按计划完成

  1. 实验过程中遇到的困难与解决途径

遇到的困难

解决途径

此前未接触过Java

通过网课和博客自学

  1. 实验过程中收获的经验、教训、感想
    1. 实验过程中收获的经验和教训(必答)

从零开始学习了Java和git的基础应用。

    1. 针对以下方面的感受(必答)
  1. Java编程语言是否对你的口味?与你熟悉的其他编程语言相比,Java有何优势和不足?

相比于C语言,Java更加方便,有很多功能已经实现过了。

  1. 关于Eclipse或IntelliJ IDEA,它们作为IDE的优势和不足;

Eclipse的UI界面对用户不友好。看上去很难受。

  1. 关于Git和GitHub,是否感受到了它在版本控制方面的价值;

除了连接速度实在捉急之外,没感觉到什么缺点。

  1. 关于CMU和MIT的作业,你有何感受;

考察的比较多,任务量较大。

  1. 关于本实验的工作量、难度、deadline;

新人第一次接触Java,在从头开始学的情况下任务量还是挺大的。

  1. 关于初接触“软件构造”课程;

软件构造这门课程很有意义,通过自己设计代码去实现一些功能,比如画图,算magicsquare 都很有趣。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值