栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

软件构造lab1

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

软件构造lab1

1.实验目标概述

本次实验通过求解三个问题,训练基本 Java 编程技能,能够利用 Java OO 开 发基本的功能模块,能够阅读理解已有代码框架并根据功能需求补全代码,能够 为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。 另一方面,利用 Git 作为代码配置管理的工具,学会 Git 的基本使用方法,主要内容如下:

基本的 Java OO 编程

基于 Eclipse IDE 进行 Java 编程

基于 JUnit 的测试

基于 Git 的代码配置管理

2.实验环境配置

本次实验在windows10下进行,使用JAVA版本是JDK11.0.15,IDE使用Eclipse,直接在官网下载installer最新版,在installer中下载Eclipse IDE for Java Developers - 2022-06。

3.实验过程

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

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

3.1 Magic Squares

N阶的幻方是n*n个数的排列,每一行,一列和两条对角线的n个数的和等于同一个常数。要求一就是写一个可以判断一个矩阵是否是一个幻方的函数,并对给出的五个txt文本进行测试,要求二是优化更改给的函数,生成一个6.txt文件并进行测试。

3.1.1 isLegalMagicSquare()

先读入一行数据,然后以这行的数据个数创建n*n方阵。如果没有数据,则提示是空文件,并返回 false。

循环读入该矩阵行列,如果读入过程中抛出NumberFormatException异常,则说明数据格式不符合要求,可能有负数、小数等异常数据,也可能是未按要求用t分割造成的,所以输出提示信息并返回false即可。若读入过程中抛出ArrayIndexOutOfBoundsException异常,说明当创建的矩阵被填满时还有未读入的数据,造成在继续读入数据到矩阵时访问数组越界,这时输出提示信息并返回false。

如果正常读入但最后控制行数的循环变量不等于最后一行的下标说明矩阵行数小于列数,同样输出输出提示信息并返回false。

若以上部分代码正常运行,说明输入的矩阵的格式以及内部数据没有错误,然后就需要判断各行和与各列和以及两个对角线的和是否都相等,如果都相等说明读入的矩阵是一个幻方,返回true;否则输出提示信息并返回false。

各种情况展示:

3.1.2 generateMagicSquare()

首先计算初始位置(0,n/2),赋值为1,之后每次取当前位置的右上角的位置,设置的值每次加1,如果当前行是第一行,则下一行为最后一行,如果当前列是最右边的列,则下一次取左边第一列,如此重复平方次,就可以对全部元素赋值,并且且满足幻方的定义。

​​​​​​​3.2 Turtle Graphics

本任务要求根据代码注释提示补全代码进而实现一个绘制工具Turtle Graphics。

问题一:从Github上获取任务的源代码,在本地创建git仓库,使用git管理本地开发

问题三:利用该工具画出一个正四边形。

问题五:利用该工具完成正多边形内角和外角的计算

问题六:计算向量之间的夹角

问题七:计算凸包

问题八:绘制个人图形

​​​​​​​3.2.1 Problem 1: Clone and import

(1)访问实验手册给出的URL地址,复制P2的URL地址。

(2)在本地创建文件夹git仓库,在文件夹下创建目录Lab1,在Lab1中打开git Bash。

(3)使用命令git init创建Lab1的仓库。

(4)使用命令git clone 下载P2中代码。

(5)通过import将P2导入到eclips中,进行修改,完成实验。

(6)git add * ->git commit -m “”->git push将本地文件加入到本地仓库,将本地仓库同步到远程仓库。

​​​​​​​3.2.2 Problem 3: Turtle graphics and drawSquare

经查看,发现绘制正方形的函数在TurtleSoup中的drawSquare函数中,通过给定的两个方法forward(units)和turn(degrees),可以实现给定参数的前进和旋转,因此只需要前进sideLength长度,转过90°重复这个过程四次即可。

​​​​​​​3.2.3 Problem 5: Drawing polygon

补全calculateRegularPolygonAngle函数。正多边形的每个内角等于180.0 – 360.0 / 边数。

补全calculatePolygonSidesFromAngle函数。知道正多边形的内角,求边数。

补全drawRegularPolygon函数。该函数功能为画出指定边长的正多边形。调用calculateRegularPolygonAngle(sides)计算正多边形的内角,调用forward和turn函数进行前进和转向。

 

绘制一个正七边形:

​​​​​​​3.2.4 Problem 6: Calculating Bearings

补全calculateBearingToPoint函数。该函数的功能是当前点朝向的向量与当前点朝向目标点构成的向量之间的夹角。atan2函数可以计算前进方向与x轴正向夹角。

 补全calculateBearings函数。对列表中的每两个相邻点调用calculateBearingToPoint函数计算夹角,列表保存并返回。

​​​​​​​3.2.5 Problem 7: Convex Hulls

补全convexHull函数,如果点集中的点数小于3时,直接返回原点集即可。否则,先找出这个点集中最左的点,即横坐标最小,然后使用向量的外积寻找以这个点到下一个逆时针转过角度最大的点,然后以下一个点为起点继续寻找,直到找到的点是最开始的起点,返回所经过的点集即可。

​​​​​​​3.2.6 Problem 8: Personal art

个人绘制图像如下:通过调整角度,绘制圆形,形成一个万花筒状的图形。

​​​​​​​3.2.7 Submitting

通过指令git add *->git commit -m “”->git push提交到Lab1仓库。

​​​​​​​3.3 Social Network

本任务要求人作为点,人之间的关系作为边,用图结构实现一张人际关系网。通过BFS计算两节点之间最短路。

3.3.1 设计/实现FriendshipGraph类

在FriendshipGraph中定义了三个函数:

通过addVertex函数添加人物:

通过addEdge增加边:

通过getDistance用BFS获得最短路:

​​​​​​​

3.3.2 ​​​​​​​设计/实现Person类

该类使得每一个人对应到一个Person对象,并储存名字的信息。此外,为了方便,在此定义了访问情况,姓名,距离,和朋友信息四种状态。

 

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

    main函数写在FriendshipGraph类中,同实验要求:

​​​​​​​3.3.4 设计/实现测试用例

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/891107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号