HIT软件构造Lab1记录

目录

2 实验环境配置  

3 实验过程  

3.1 Magic Squares    

3.1.1 isLegalMagicSquare()

3.1.2 generateMagicSquare()     

3.2 Turtle Graphics   

3.2.1 Problem 1: Clone and import      

3.2.2 Problem 3: Turtle graphics and drawSquare    

3.2.3 Problem 5: Drawing polygons    

3.2.4 Problem 6: Calculating Bearings

3.2.5 Problem 7: Convex Hulls    

3.2.6 Problem 8: Personal art

3.2.7 Submitting   

3.3 Social Network   

3.3.1 设计/实现FriendshipGraph    

3.3.2 设计/实现Person

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

3.3.4 设计/实现测试用例   

4 实验进度记录  

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

6 实验过程中收获的经验、教训、感想  

6.1 实验过程中收获的经验和教训

6.2 针对以下方面的感受

  1. 实验目标概述

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

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

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

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

基本的 Java OO 编程

基于 Eclipse IDE 进行 Java 编程

基于 JUnit 的测试

基于 Git 的代码配置管理

  1. 实验环境配置

本实验使用了IDEA而不是pdf中给出的eclipse作为ide,不过还是通过pdf中给出的链接安装了eclipse,不过没有使用,在git官网下载了git,并在IDEA中下载了git和Junit插件,安装过程中并未出现困难

GitHub Lab1仓库的URL地址:

https://github.com/ComputerScienceHIT/HIT-Lab1-1190201517

  1. 实验过程

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

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

    1. Magic Squares

幻方:对一个行列数相等的矩阵,若其每一行之和、每一列之和以及对角线之和都相等,则其为一个幻方(Magic Square)

要求一:

设计一个程序来判断五个文件中的矩阵是否为MagicSquare,其中文件保存的矩阵需以\t分割每个数字。若是返回true,若不是或文件有错误则输出false并输出错误原因。

要求二:

设计一个函数来生成一个给定大小的MagicSquare,并存入到文件6.txt中,并用要求一中的和函数判断其是否为符合定义的MagicSquare。

      1. isLegalMagicSquare()

对于读入的文件,构建二维数组存储其中的数字,读入过程中即可检查其行列是否相等、是否均为正整数,是否由\t分割等,若不符合定义则弹出报错终止程序。因为使用Integer.valueOf存入数组,在读取到空格时会报错,以此检验数字是否由\t分割

读入完毕后,对于得到的二维数组,计算其各行、列以及两对角线之和并依次比较,一旦发现不相等就跳出循环并返回false,若最终没有发现不相等,则返回true。

      1. generateMagicSquare()

生成magicsquare的函数已经在手册中给出,因此我们只需检查输入的n是否合法(正奇数),不合法是终止函数返回false,合法时生成、写入文件并返回true。之后在用要求一的函数检验生成的文件即可。

    1. Turtle Graphics

根据要求,我们要按照注释补全给定程序中缺失的特定功能的函数,来实现一个绘图工具,其能够实现绘制正多边形、计算正多边形内角、计算偏角等功能。

      1. Problem 1: Clone and import

从给定链接下载P2的文件包并导入项目中。

      1. Problem 3: Turtle graphics and drawSquare、

通过已经给出的转向和前进指令来绘制正方形

      1. Problem 5: Drawing polygons

绘制指定边数和边长的正多边形

      1. Problem 6: Calculating Bearings

通过给定朝向和点集,计算改变朝向的偏角值集

      1. Problem 7: Convex Hulls

利用BFS算法计算给定点集的凸包

      1. Problem 8: Personal art

      1. Submitting

通过IDEA的git插件,输入url提交至自己的github仓库中

    1. Social Network

通过Person和FriendshipGraph两个类,用FriendshipGraph模拟Person对象间的社交关系,实现对社交网络的模拟,并实现计算两个Person之间的最短社交距离的功能。

      1. 设计/实现FriendshipGraph类

存储网络中的person以及person的全部name

加入新用户时,检测是否有重名,若重名终止程序

通过person类中的操作实现addEdge

使用有向图的BFS算法计算两点的最短距离。


主函数部分实现了手册中给出的代码

运行结果:

      1. 设计/实现Person类

Person类代码如下

Person类包含了用户姓名以及人际关系,通过List保存每个对象的朋友以表现朋友关系,因此通过向List中添加元素实现addFriend的功能。

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

      1. 设计/实现测试用例

通过三个测试用例,检验程序的添加用户、添加用户关系、计算最短距离三个功能

  1. 实验进度记录

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

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

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

日期

时间段

任务

实际完成情况

2021-05-11

13:45-15:30

大致学习实验内容,编写问题1isLegalMagicSquare函数

按计划完成

2021-05-20

全天

完成P1及P2全部内容

超过凌晨几小时

2021-05-23

全天

完成剩余内容并整理学习到内容

完成

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

遇到的困难

解决途径

对java掌握不熟练,很多方法、函数需要查阅资料,浪费了很多时间

努力学习java,掌握基本代码方式

对github不太了解,不清楚仓库、clone等功能是如何运作的

查阅各种资料,实践理解功能

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

大概了解了java的代码、项目管理、git的版本控制、以及github的共享体系

    1. 针对以下方面的感受
  1. Java编程语言是否对你的口味?

还可以,有时不够直观,但整体上功能更多,比c更灵活

  1. 关于Eclipse IDE

没有使用,习惯使用IDEA,今后会补充这方面的不足

  1. 关于GitGitHub

用得不太好,但也还行

  1. 关于CMUMIT的作业;

很有创意,给我提供了很多思路

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

难度很适合作为第一次实验

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

有很多不习惯的地方,但是一一克服后感觉收获颇丰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值