日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

哈工大软件构造lab1

發(fā)布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哈工大软件构造lab1 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2020年春季學期
計算機學院《軟件構造》課程

Lab 1實驗報告
?

姓名

麥昌瀚

學號

190110920

班號

7

電子郵件

835889372@qq.com

手機號碼

?

目錄

1 實驗目標概述... 1

2 實驗環(huán)境配置... 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 設計/實現(xiàn)FriendshipGraph類... 2

3.3.2 設計/實現(xiàn)Person類... 2

3.3.3 設計/實現(xiàn)客戶端代碼main(). 2

3.3.4 設計/實現(xiàn)測試用例... 3

4 實驗進度記錄... 3

5 實驗過程中遇到的困難與解決途徑... 3

6 實驗過程中收獲的經驗、教訓、感想... 3

6.1 實驗過程中收獲的經驗和教訓... 3

6.2 針對以下方面的感受... 3

  • 實驗目標概述
  • 本次實驗通過求解三個問題,訓練基本 Java編程技能,能夠利用 Java OO開發(fā)基本的功能模塊,能夠閱讀理解已有代碼框架并根據(jù)功能需求補全代碼,能夠為所開發(fā)的代碼編寫基本的測試程序并完成測試,初步保證所開發(fā)代碼的正確性。另一方面,利用 Git作為代碼配置管理的工具,學會 Git的基本使用方法。

    1、基本的 Java OO編程
    2、基于 Eclipse IDE進行 Java編程
    3、基于 JUnit的測試
    4、基于 Git的代碼配置管理

  • 實驗環(huán)境配置
  • 簡要陳述你配置本次實驗所需開發(fā)、測試、運行環(huán)境的過程,必要時可以給出屏幕截圖。特別是要記錄配置過程中遇到的問題和困難,以及如何解決的。

    由于之前已經安裝過jdk,所以此次我直接打開高級系統(tǒng)設置查看環(huán)境變量路徑,并在命令行窗口檢查確認jdk為1.8版本。隨后在lab0的實驗報告中根據(jù)給出的網址下載安裝了ecilpse,在git官網下載安裝了git-bash。

    難點:由于實驗指導書安裝eclipse的教程充斥著大量晦澀難懂的英文和復雜操作,所以結合csdn的教程順利安裝好程序并初步掌握eclipse的使用和java基礎編程。

    GitHub Lab1倉庫的URL地址(Lab1-學號)

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

  • 實驗過程
  • 請仔細對照實驗手冊,針對四個問題中的每一項任務,在下面各節(jié)中記錄你的實驗過程、闡述你的設計思路和問題求解思路,可輔之以示意圖或關鍵源代碼加以說明(但無需把你的源代碼全部粘貼過來!)。

    為了條理清晰,可根據(jù)需要在各節(jié)增加三級標題。

  • Magic Squares
  • MagicSquare是一個正整數(shù)組成的正方形,他的每一行、每一列和對角線的數(shù)字之和都相等。

    任務一:編寫一個Java程序(Magicsquare.java)用于檢查矩陣的行/列/對角線值,該程序能夠從五個已經提供的txt文檔中讀入數(shù)據(jù),來判斷輸入的數(shù)據(jù)能否構成一個MagicSquare,若是則返回true,若不是則返回false且說明原因。

    任務二:對給出的generateMagicSquare函數(shù)進行擴充,使之能夠產生一個MagicSquare并且將其輸入到文本6.txt中,然后對其判斷是否為MagicSquare。并且滿足若輸入的為奇數(shù)能產生MagicSquare,而輸入偶數(shù)或者負數(shù)會返回false。

  • isLegalMagicSquare()
  • 首先需要判斷讀入的數(shù)據(jù)能否構成一個矩陣。根據(jù)實驗手冊,需要判斷的三張錯誤:

    行列數(shù)不相等:逐行讀取得知總行數(shù),然后對每一行按照\t進行分割得出列數(shù),判斷每一列是否與行數(shù)相等,若有一列不相等,則返回false。

    矩陣中某些數(shù)字不是正整數(shù):按照\t將分割后的字符串裝入數(shù)組中,然后判斷這些字符串是否包含”.”或者”-”,若包含,則返回false。

    不是以\t作為分隔符:按照\t將分割后的字符串裝入數(shù)組中,然后判斷這些字符串是否包含空格,若包含,則返回false。

    可以構成矩陣時,讀入文件中的數(shù)字,用二維數(shù)組表示矩陣,分別計算矩陣每一行、每一列、對角線的和是否相等來判斷能否構成MagicSquare,并返回true。

    使用try-catch組合,若文件讀取本身出現(xiàn)問題,呈現(xiàn)相關錯誤信息

    輸出的結果:

  • generateMagicSquare()
  • 輸入的 n不合法時(n為偶數(shù)、n為負數(shù)等)提示錯誤并“優(yōu)雅的”退出:

    將產生的 magic square寫入文件\src\P1\txt\6.txt中并檢驗

  • Turtle Graphics
  • 實現(xiàn)一個繪圖工具Trurtle Graphics,需要我們完成的任務為:畫出一個正方形,計算正多邊形內角,由正多邊形內角得到邊數(shù),計算從一個點到另外一個點所需要轉過的角度,給定一系列點計算每次轉過的角度并返回在集合中,計算一系列點中的凸包,調用函數(shù)繪制個人藝術作品,使用junit進行單元測試。

  • Problem 1: Clone and import
  • 從github上獲取代碼:網頁download。

    從本地創(chuàng)建git倉庫:1、git init初始化本地倉庫2、git add remote添加遠程庫源3、在遠程倉庫創(chuàng)建master分支4、git pull origin master將遠程倉庫同步到本地5、git add * ->git commit -m “……”->git push將本地文件加入到本地倉庫,將本地倉庫同步到遠程倉庫。

  • Problem 3: Turtle graphics and drawSquare
  • 通過四次循環(huán),使用forward、turn函數(shù)每次前進+轉90°就可以得到正方形。

  • Problem 5: Drawing polygons
  • 補全calculateRegularPolygonAngle。正多邊形的內角等于180 – 360./ 邊數(shù)

    補全calculatePolygonSidesFromAngle。知道正多邊形的內角求邊數(shù),由前句進行簡單數(shù)學公式轉換即可

    補全drawRegularPolygon。畫出指定邊長的正多邊形。調用calculateRegularPolygonAngle(sides)計算正多邊形的內角,調用forward和turn函數(shù)進行前進和轉向。

  • Problem 6: Calculating Bearings
  • 補全calculateBearingToPoint。該函數(shù)利用atan2函數(shù)計算前進方向與x軸正向夾角,之后再把該角度轉換成與y軸正向的夾角,注意如果出現(xiàn)負數(shù)要再加上360°。

    補全calculateBearings。對列表中的每兩個相鄰點調用calculateBearingToPoint計算夾角,列表保存并返回

  • Problem 7: Convex Hulls
  • 計算給定集合中的凸包需要利用Gift wrapping algorithm算法。點數(shù)少于3個時直接得凸包,否則先找到最左下角的點加入集合:

    然后比較剩余點到此點的偏轉角,找到偏轉角最小的加入集合,當偏轉角相同時,需要找到最長的一條邊的點加入集合,當回到起點時終止程序,最后即可得到凸包的點集:

  • Problem 8: Personal art
  • 經計算后繪制得到一個頂角豎直向上的五色正五角星:

  • Submitting
  • (1).打開git-bash

    (2).cd /D/P2

    (3).git add .HIT- Lab1-190110920

    (4).git commit –m “P2”

    (5)git push origin master

  • Social Network
  • 實現(xiàn)并測試Friendship Graph類和Person類,模擬社交網絡,可以計算圖中兩個人之間的距離。

  • 設計/實現(xiàn)FriendshipGraph類
  • 1.定義一個Person集合來儲存所有人的對象,定義一個String集合來儲存所有已經存在的名字并進行初始化:

    2.函數(shù)addVertex:增加一個人的對象。 實現(xiàn)此功能需要注意用來增加的Person對象是否已經存在,所以需要在開始判斷name中是否已經有了匹配的的名字,若已經存在,則輸出“輸入人名重復”并結束程序,若沒有則將待增加的新的Person對象加入people集合中,對象的名字加入name集合中:

    3.函數(shù)addEdge:增加一條有向邊。實現(xiàn)此功能只需要調用Person類的addnewfriend方法即可

    4.函數(shù):getDistance:得到兩個人之間的最短距離。使用廣度優(yōu)先搜索方式求最短路徑的方法。若兩個Person對象為同一個,則返回0。然后定義一個Map集合way和一個Person隊列thequeue,隊列thequeue用來儲存廣搜的遍歷結果,theway的Map集合用來儲存廣搜的所有元素及他們與第一個元素的距離。具體實現(xiàn)為將第一個元素c1入隊,并且把c1和下標0入集合,當隊列非空時,彈出隊首元素top,并且得到top在集合theway中的下標distance,然后只要隊首元素的所有朋友friend,中的元素與c2不同就全部入隊,這些元素及下標distance+1放入集合。隊列非空則繼續(xù)執(zhí)行以上步驟,直到找到某個元素與c2相同并且返回這個元素在集合way中的下標。如果直到隊列為空還沒找到c2,則返回-1:

  • 設計/實現(xiàn)Person類
  • 1.定義String變量name儲存名字,定義一個Person的集合friend,定義一個

    2.構造方法:依據(jù)輸入的字符串初始化這個名字,并且將這個名字加入集合friend中:

    3.增加本人新朋友addnewfriend:直接將新Person對象加入friend中即可

    4.得到本人的名字getname:直接返回name

    5.得到本人的朋友列表getthisfriend,直接返回friends

  • 設計/實現(xiàn)客戶端代碼main()
  • 基于實驗報告的代碼稍加修改

    輸出結果為:

  • 設計/實現(xiàn)測試用例
  • 創(chuàng)建對象測試public void addVertextest()

    加入朋友關系測試public void addEdgetest()

    覆蓋每個頂點先建立交際網,再測試距離是否正確public void getDistancetest()

  • 實驗進度記錄
  • 請使用表格方式記錄你的進度情況,以超過半小時的連續(xù)編程時間為一行。

    每次結束編程時,請向該表格中增加一行。不要事后胡亂填寫。

    不要嫌煩,該表格可幫助你匯總你在每個任務上付出的時間和精力,發(fā)現(xiàn)自己不擅長的任務,后續(xù)有意識的彌補。

    日期

    時間段

    任務

    實際完成情況

    2021-05-13

    15:45-17:00

    嘗試初步編寫問題1的isLegalMagicSquare函數(shù)

    按計劃完成

    2021-05-16

    14:00-16:00

    編寫問題1的isLegalMagicSquare函數(shù)并完成測試

    延期1小時完成

    2021-05-20

    15:45-17:00

    編寫問題1的generateMagicSquare函數(shù)并完成測試

    按計劃完成

    2021-05-20

    19:00-20:00

    嘗試了解第二題的概況并完成1-4

    延期1小時完成

    2021-05-21

    15:00-17:00

    完成P2的凸包和個人藝術設計,并經過調試后通過了自帶的測試

    按計劃完成

    2021-05-22

    13:00-17:00

    完成P3的Person類和FriendshipGraph類

    按計劃完成

    2021-05-22

    19:00-20:00

    完成P3的測試

    按計劃完成

    2021-05-23

    19:00-21:00

    完成收尾工作

    按計劃完成

  • 實驗過程中遇到的困難與解決途徑
  • 遇到的難點

    解決途徑

    初次接觸java,文件讀寫出現(xiàn)很多問題

    通過查閱資料理解了flie類和bufferreader類等的關系與使用

    p2的英文教程在初次接觸時造成了許多困難

    經過耐心閱讀領會了題目的意思和大致目標

    ……

    ……

  • 實驗過程中收獲的經驗、教訓、感想
  • 實驗過程中收獲的經驗和教訓
  • 此次實驗初次使用java,我對眾多語法和結構不熟悉。但是在一段時間的鉆研后,我學到了java領域的許多新奇知識,并逐漸熟悉了git、eclipse和junit的使用,受益匪淺。

  • 針對以下方面的感受
  • Java編程語言是否對你的口味?
  • 第一印象不錯,具有面向對象編程固有的許多優(yōu)點與特色

  • 關于Eclipse IDE
  • 對于初學者十分友好,自動提示與糾錯功能非常強大

  • 關于Git和GitHub
  • 較為生疏,還需要深入研究

  • 關于CMU和MIT的作業(yè)
  • 英文教程障礙較大

  • 關于本實驗的工作量、難度、deadline
  • 適中

  • 關于初接觸“軟件構造”課程
  • 收獲頗豐

    其他收獲:

    Scanner cannot be resolved to a type

    剛開始接觸java,這個問題非常簡單但是在網上怎么也找不到答案
    Scanner類使用前需要將其導入。
    在代碼的最前端加入
    import java.util.Scanner;
    即可
    ?

    總結

    以上是生活随笔為你收集整理的哈工大软件构造lab1的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 少妇肥臀大白屁股高清 | 免费观看黄色的网站 | 日本高清在线一区 | 韩国精品一区二区三区 | 免费伊人网 | 欧美一二三区视频 | 91桃色污| 最新在线中文字幕 | 久久亚洲av午夜福利精品一区 | 五月婷婷av | 91福利视频在线观看 | 一区二区三区国产av | 影音先锋男人的天堂 | 婷婷日| 视频丨9l丨白浆 | 亚洲青色在线 | 永久视频在线 | 亚洲视频在线一区 | 加勒比hezyo黑人专区 | 操操网| 韩国主播青草55部完整 | 精品久久久国产 | 欧美精品在线视频观看 | 欧美xxxx吸乳| 国产中文字幕av | 日韩不卡中文字幕 | 午夜精品久久久久久久四虎美女版 | 日韩欧美猛交xxxxx无码 | 日韩久久久久久 | 久久99精品久久久久久水蜜桃 | 亚洲综合色在线 | 久久久久久免费观看 | 在线一级视频 | 美女野外找人搭讪啪啪 | 色av性av丰满av| 亚洲男男网站 | 亚洲欧洲国产精品 | 爆操女秘书 | av鲁丝一区鲁丝二区鲁丝三区 | 青青草视频免费 | 色天天色 | 国产美女久久久久 | 色插综合| 国产精品久久久久久久久久久久午夜片 | 潘金莲激情呻吟欲求不满视频 | 亚洲成年人专区 | 91香焦视频 | 国产成人精品午夜福利Av免费 | 久久久久国产精品熟女影院 | 一区二区在线观看免费 | 免费91看片 | 香蕉视频性| 四虎影院污| 国产95在线 | 涩涩屋污| 五月伊人婷婷 | 丰满少妇一区二区三区专区 | 国产人成无码视频在线观看 | 精品啪啪 | 久久久国产精品无码 | 日韩av.com | 成人影片在线免费观看 | 午夜色大片 | 波多野结衣黄色片 | 久久高清| 成人综合在线观看 | 欧美视频| 美女免费视频网站 | 制服.丝袜.亚洲.另类.中文 | 超碰天天操 | 亚洲欧美色图片 | 99精品网 | 在线xxxx | 波多野结衣视频一区二区 | 人妻久久一区二区 | 97精品人人妻人人 | 精品三级视频 | 久久男人天堂 | 亚洲最大的av网站 | 免费观看一区二区 | 99精品视频免费版的特色功能 | av片久久| 欧美亚洲国产一区二区三区 | 亚洲情射 | 影音先锋制服 | 日韩字幕在线观看 | 国产精品欧美精品 | 欧美高清视频一区二区三区 | 久久艹精品视频 | 一二三毛片 | 波多野结衣家庭主妇 | 向日葵视频在线播放 | 久久久久在线观看 | 久久久久亚洲av无码专区首jn | 精人妻一区二区三区 | 扒下小娇妻的内裤打屁股 | 91精品国产乱码久久 | 欧美一区二区三区在线看 | 日韩第九页 |