软件构造lab1

  1. 实验目标概述

本次实验通过求解三个问题,训练基本 Java 编程技能,能够利用 Java OO

发基本的功能模块,能够阅读理解已有代码框架并根据功能需求补全代码,能够

为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。

另一方面,利用 Git 作为代码配置管理的工具,学会 Git 的基本使用方法。

l 基本的 Java OO 编程

l 基于 Eclipse IDE 进行 Java 编程

l 基于 JUnit 的测试

l 基于 Git 的代码配置管理

  1. 实验环境配置

安装IDEA ,下载JDK11,进行环境配置下载Junit所需要的包。下载git,进行ssh相关配置,使用git remote 以及push等命令进行连接和更新。

Lab1仓库URL:https://github.com/ComputerScienceHIT/HIT-Lab1-120L021928

  1. 实验过程

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

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

    1. Magic Squares

任务1:判断文件中所传入的一个矩阵是否有非法输入,判断完之后,判断矩阵是不是幻方

任务2:使用ppt中的算法,生成一个矩阵,并判断其是否为一个幻方

幻方就是一个每行每列且每个对角线的数的和都相同的矩阵,而实验要求该矩阵从文本文件中读入。

      1. isLegalMagicSquare()

此方法的功能为从文本文件中读入一个矩阵,并对其进行检验,判断是否为幻方。

首先应进行文件读入

在文件读入的过程中,检验吗,检验每一个读入数据是否非法,即是否为负数或浮点数,若出现负数则报错输入非法,而如果判断出其行和列数不一致,也进行报错。

对输入合法的矩阵进行其行列和对角线和的判定,首先将两个对角线算出后直接进行比较,相同直接保存并作为后续判断标准,同时定义两个变量保存每次更新的行与列的和,每次更新后先相互比较,相同的话与对角线值进行比较,出现不相等直接返回错误信息。

      1. generateMagicSquare()

一、幻方按照阶数可分成了三类,奇数阶幻方双偶阶幻方单偶阶幻方

二、奇数阶幻方(劳伯法)

奇数阶幻方最经典的填法是罗伯法。填写的方法是:

1(或最小的数)放在第一行正中;按以下规律排列剩下的(n×n1)个数:

1)每一个数放在前一个数的右上一格;

2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;

3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;

4)如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在底行且最左列

5)如果这个数所要放的格已经有数填入,那么就把它放在前一个数的下一行同一列的格内。

    1. Turtle Graphics

MIT实验

任务一:自己画正方形

任务二:求多边形内角度数

任务三:根据内角度数求多边形边数

任务四:画出一个多边形

任务五:根据点的坐标求夹角

任务六:凸包算法

任务七:自己画图形

      1. Problem 1: Clone and import

将GitHub中的代码直接下载至本地库中。

      1. Problem 3: Turtle graphics and drawSquare

根据输入的长度每次向前走后进行转向90度,循环四次

      1. Problem 5: Drawing polygons

根据之前函数算出的多边形内角度数进行转向,循环次数等于多边形边数

      1. Problem 6: Calculating Bearings

给定两个已知坐标的list后,先检查是否为空或两个list内的元素是否相同,对其中的每一个相对夹角进行计算并存入新建的list中,返回新建的list

      1. Problem 7: Convex Hulls

首先判断图中的点数是否大于三,如果小于三则无法进行算法,大于三后,先筛选所有点中x值最小的点,相同时取y值较小的点,以选中的点为原点,找寻与其夹角最小的点,当夹角相同时选取远端的点,直到选取的下一个点为最开始的点时停止算法。

      1. Problem 8: Personal art
      1. Submitting

如何通过Git提交当前版本到GitHub上你的Lab1仓库。

    1. Social Network

设计Person类后,对个人信息进行各种操作,并用图中求最短路径的算法求得两个人认识之间最短需要间隔几个人的最短路径问题。

      1. 设计/实现FriendshipGraph

首先应该构建一个能够以储存person信息的map,在map中进行搜索时采用广度优先搜索,而在图中的信息存储时,由于名字不能有重复(因为广度优先搜索是根据名字进行判断。

      1. 设计/实现Person

首先Person类应该能存储基本信息,个人信息应该能被访问,同时要完成对于个人朋友的添加功能。

      1. 设计/实现客户端代码main()
      1. 设计/实现测试用例

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值