哈工大软件构造lab1实验20级

1.Magic Squares

两个任务。第一个任务:文件读入五个矩阵,对每一个矩阵,首先判断是否有非法输入(行列不等,存在小数,没有用\t分割数据等),然后判断矩阵是否为幻方(幻方定义是首先为方阵,其次行列,对角线之和均相等)第二个任务:运用给出的方法生成n*n的幻方,文件输出,并进行判断。

1.1isLegalMagicSquare()

首先进行文件读入(注意IO异常处理)。运用BufferedReader相关库函数。读入后依次进行输入是否为空判断、输入行长度是否相等判断、数据是否以\t分割判断、输入数是否为整数判断、输入行列是否相等。

判断完成后将数保存在int型List中,而后依次取出存入Square。最后计算Square各行列、对角线数据之和,判断是否相等。

1.2generateMagicSquare()

按照劳伯法生成奇数阶幻方。劳伯法主要思想是把1(或最小的数)放在第一行正中;每一个数放在前一个数的右上一格;若该数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;若该数数所要放的格已经超出了最右列那么就把它放在最左列,上一行;若该数所要放的格已经超出了顶行且超出了最右列,则放在底行左列;若该数所要放的格已经有数填入,那么就把它放在前一个数的下一行同一列的格内

流程图

同时对于n为偶数和负数的情况,在程序开头加入if判断即可。


2.Turtle Graphics

个任务首先需要获取源代码,然后创建和管理本地仓库。画正方形、据内角求边数、据边数求内角,画正多边形,计算方位,计算凸包,个性创作

Problem 1: Clone and import

直接下载zip。下载完之后需要导入两个junit相关包。然后还有一些路径相关的错误需要手动改正一下。

上传github:运用git add *.*以及git commit -m “name” 以及 git push name等指令。

Problem 3: Turtle graphics and drawSquare

    

 任务:让海龟走一个正方形的轨迹。

实现方式:进行四次循环,每次执行前进一次,转90°角一次,就可以画出一个正方形。(如上图)

 Problem 5: Drawing polygons

     任务:画出正n多边形。

     实现方式:首先计算正多边形内角角度。角度为(n-2)*180/n。然后进行n重循环,每次转角角度为刚才计算出来的值。

例:sides=7时

Problem 6: Calculating Bearings

任务:计算从当前点到目标点所需的参数,并将当前方向作为附加参数。然后将其拓展到多点。最后进行测试 处理多个点之间的转角时只需要进行遍历并累加即可。

测试:

Problem 7: Convex Hulls

任务:对给定的点求凸包

方法:找到所有的点中最左下的点(这个点一定是需要的点),称为起始点。从起始点开始遍历所有的点,计算该点与起始点之间的距离与转角,选择最小的那个转角的点作为下一个起始点(如果有多个最小转角,选择与当前点距离最远的点作为下一个起始点)。选定下一个起始点之后将这个点从未选点集合中删除,加入已选点集合中。

测试成功。

Problem 8: Personal art

自行设计并绘制一个图案。数据和结果如下:

Submitting

方法:首先与远程仓库建立连接,而后commit,然后将commit的结果push到git上。

 

​​​​​​​3.Social Network

任务:实现一个社交网络的无向图未来可发展为有向图)节点是人,边代表两人有社交。需要实现的函数是增加人(节点、增加两人之间的关系边)、求两人之间的距离求最短距离)

​​​​​​​1.设计/实现FriendshipGraph

该类具有两个属性.两个属性分别是People列表(用于保存每个人的名字以及社交关系)与nameSet名字集合)nameSet主要是为了处理两个人重名的不合法输入情况。

addVertex方法是添加节点(将新的人加入社交网络)。需要更新people以及nameSet。

addEdge方法时添加朋友关系(单向)只需更新p1的friends集合。

getDistance方法用的是BFS方法。用Map保存p1到各顶点的距离,用Queue保存将访问顶点集合。因为图中每条边都为1,因此使用BFS是最优的选择。代码如下:

2.​​​​​​​设计/实现Person

Person类中有两个属性,三个方法。属性为名字与朋友列表friends,List类型)。三个方法分别是addFriend加朋友,getName获取名字,getFriends获取朋友列表。​​​​​​​

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

按要求使用了实验要求中的模板。先添加人,再添加关系,最后输出两人之间的距离。

​​​​​​​4.设计/实现测试用例

测试了三个功能:addVertex, addEdge,getDistance

输入的图为:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
哈尔滨工业大学(哈工大)数据库实验使用高语言如Python、Java等来操作MySQL数据库。高语言是一种与人类语言相似的编程语言,它具有更高的抽象和封装能力,使得我们使用它们可以更方便地操作数据库。 在数据库实验中,我们会使用高语言来编写程序,通过与MySQL数据库进行交互来实现各种功能。比如,我们可以使用高语言连接到MySQL数据库,并执行SQL语句来创建、查询、更新和删除数据表中的数据。通过编写程序,我们可以更灵活地操作数据库,实现各种复杂的功能。 使用高语言操作MySQL数据库具有以下优点: 1. 便捷性:高语言提供了简洁的语法和丰富的库函数,使得我们可以更快速地编写数据库相关的代码。 2. 可扩展性:高语言具有良好的扩展性,我们可以通过编写自定义的函数、类和模块来实现更复杂的数据库操作。 3. 跨平台性:高语言在不同操作系统和平台上都有良好的兼容性,我们无需为不同的操作系统编写不同的代码。 4. 可读性:高语言具有更接近人类语言的语法,代码可读性更高,我们可以更容易地理解和维护自己编写的代码。 总的来说,哈工大数据库实验使用高语言操作MySQL数据库,可以提高我们的工作效率和代码质量,使得我们能更好地掌握数据库相关的知识和技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值