HITSC Lab1
目录
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 的基本使用方法。
基本的 Java OO 编程
基于 Eclipse IDE 进行 Java 编程
基于 JUnit 的测试
基于 Git 的代码配置管理
2 实验环境配置
首先前往java官网下载java(由于网速太差所以从同学那里拷了一份,手动添加了path)
然后安装eclipse,在安装eclipse中可能会提醒说java版本不匹配,这时候只要从官网上下个压缩包然后手动添加java路径就可以了
实验地址:https://classroom.github.com/a/qL3Yd1XX
3 实验过程
请仔细对照实验手册,针对四个问题中的每一项任务,在下面各节中记录你的实验过程、阐述你的设计思路和问题求解思路,可辅之以示意图或关键源代码加以说明(但无需把你的源代码全部粘贴过来!)。
为了条理清晰,可根据需要在各节增加三级标题。
3.1 Magic Squares
这个问题分两个,第一个需要我们对于已有文件判断是否是幻方,主要是考察对于java的操作。
第二个问题主要是对于一些异常的处理等等。
3.1.1 isLegalMagicSquare()
首先使用file 和scanner从指定文件中读入。
然后使用”%”分隔,读入所有内容。
然后使用”\n”把内容按行分布。
在每一行中分别判断是否是矩阵,使用用”\t”分割等等。
最后判断和是否相等。
3.1.2 generateMagicSquare()
首先把代码复制进来,然后加入对于输入是否是负数以及偶数进行判断。
接着使用filewriter以及file把结果输出到对应文件中。
3.2 Turtle Graphics
逐步完成一个任务,初步熟悉junit。
3.2.1 Problem 1: Clone and import
从github中使用download操作下载zip.
然后使用git init git add git commit -m “”等操作上传文件
3.2.2 Problem 3: Turtle graphics and drawSquare
画一个正方形。
每次旋转90,前进sidelength
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
使用git init git add git commit -m “”等操作上传文件
3.3 Social Network
让我们实现一个bfs和junit文件。
3.3.1 设计/实现FriendshipGraph类
分别实现加点,加边,以及bfs求最短路的方法。
使用hashset来确保没有重边,使用map来使名字和序号意义对应。
3.3.2 设计/实现Person类
Person类中维护一个string数组
3.3.3 设计/实现客户端代码main()
3.3.4 设计/实现测试用例
首先把问题中给的测试样例进行测试,然后测试有向图的情况。
给出你的设计和实现思路/过程/结果。
4 实验进度记录
请使用表格方式记录你的进度情况,以超过半小时的连续编程时间为一行。
每次结束编程时,请向该表格中增加一行。不要事后胡乱填写。
不要嫌烦,该表格可帮助你汇总你在每个任务上付出的时间和精力,发现自己不擅长的任务,后续有意识的弥补。
日期 |
时间段 |
任务 |
实际完成情况 |
2020-03-04 |
18:30-19:30 |
编写问题1函数并进行测试 |
按计划完成 |
2020-03-06 |
18:30-19:30 |
编写问题2函数并进行测试 |
按计划完成 |
2020-03-07 |
18:30-19:30 |
编写问题3函数并进行测试 |
按计划完成 |
5 实验过程中遇到的困难与解决途径
遇到的困难 |
解决途径 |
文件输出不覆盖而是继续输出 |
把filewriter中改为false |
6 实验过程中收获的经验、教训、感想
6.1 实验过程中收获的经验和教训
熟悉了java语言,以及eclipse,junit等等
熟悉了github的一些基本操作
6.2 针对以下方面的感受
(1) Java编程语言是否对你的口味? 还可以
(2) 关于Eclipse IDE;感觉使用并不舒服
(3) 关于Git和GitHub;好用
(4) 关于CMU和MIT的作业;适量
(5) 关于本实验的工作量、难度、deadline;适量
(6) 关于初接触“软件构造”课程;稍有困难
(7) 疫情期间,只能远程授课,个人在家里完成实验任务,你对该学习方式有什么想法?没有