Software Construction Lab-1レポートテンプレート

1実験目標の概要

この実験は、3つの問題を解決し、基本的なJavaプログラミングスキルをトレーニングし、Java OOを使用
して基本的な関数モジュール開発し、既存のコードフレームワークと機能要件に応じた完全なコードを読み取って理解し、
基本的なプログラムをテストし、テストを完了して、開発されたコードが正しいことを最初に確認します。
一方、Gitをコード構成管理のツールとして使用して、Gitの基本的な使用法を学びます。
⚫基本的なJava OOプログラミング⚫Eclipse IDEに
基づくJavaプログラミング
⚫JUnitに
基づくテスト⚫Gitに基づくコード構成管理

2実験環境構成

この実験に必要な開発、テスト、運用環境の構成プロセスを簡単に説明し、必要に応じてスクリーンショットを提供します。
特に、構成プロセスで発生した問題と困難、およびそれらの解決方法を記録します。

  1. 以前の構成はJDK13です。JDK8をアンインストールして再インストールします。
  2. 日食をダウンロードし、JDKとJunitを構成します。
  3. オンラインチュートリアルに従って、Gitをダウンロードして設定します。

ここにGitHub Lab1リポジトリのURL(Lab1-Student ID)を入力します。
https://github.com/ComputerScienceHIT/Lab1-1180300410

3実験プロセス

実験マニュアルを注意深く比較し、4つの質問の各タスクについて、実験プロセスを記録し、次のセクションで設計のアイデアと問題解決のアイデアを説明してください。これらは、概略図または主要なソースコードで補足できます。しかし、すべてのソースコードを貼り付ける必要はありません!)。
明確にするために、必要に応じて各セクションに3レベルの見出しを追加できます。

3.1魔方陣

次数nの魔方陣とは、すべての行、すべての列、および両方の対角線のnの数値の合計が同じ定数になるように、n×nの数値(通常は異なる整数)を正方形に配置したものです。
実験ガイドの概要によると、魔方陣は、行と列が等しく、対角の合計がn * nの正の整数行列を指します。このタスクは、5つの行列が仕様を満たす魔方陣であるかどうかを判断し、stepメソッドを使用して魔方陣を生成することです。

3.1.1 isLegalMagicSquare()

実装のアイデア:

  1. FileReader、BufferedReader、splitを使用して、ファイルの読み取りと分割を行います。
  2. 正規表現「[0-9] +」を使用して正の整数かどうかを判断し、「\ d + \。+ \ D」で10進数かどうかを判断し、「\ d + \ s + \ d」で\ t、「[±]? [0-9] +”は、負の数が使用されるかどうかを決定します。
  3. 2次元配列を使用して読み取ったデータを保存する
  4. 入力がn * n行列かどうかを判別
  5. 長さ2 *長さ+ 2の配列を使用して、行と(長さ)、列と(長さ)、対角線と(2)をそれぞれ格納し、この配列の各要素が同じかどうかを判断します。それらが同じである場合、それは魔方陣ですが、そうでない場合は異なります。
    結果:
    はい、そうです!
    はい、そうです!負の

    を使用する行列ではありません
    スペースを使用する正の整数を使用します。タブを使用します

3.1.2 generateMagicSquare()

取扱説明書のコードに従って、新しいルール準拠マトリックスが生成されます。読み取り時と同様のBufferedWriterとFileWriterを使用して結果を6.txtに書き込み、isLegalMagicSquareを呼び出してそれが魔方陣であるかどうかを判断します。

結果:
68 81 94107120 1 14 27 40 53 66
80 93106119 11 13 26 39 52 65 67
92105118 10 12 25 38 51 64 77
79104117 9 22 24 37 50 63 76 78 91
116 8 21 23 36 49 62 75 88 90103
7 20 33 35 48 61 74 87 89 102 115
19 32 34 47 60 73 86 99 101 114 6
31 44 46 59 72 85 98100113 5 18
43 45 58 71 84 97 110112 4 17 30
55 57 70 83 96109111 3 16 29 42
56 69 82 95108121 2 15 28 41 54
はい、そうです!

3.2カメのグラフィック

角度を計算し、移動距離を計算してグラフを描きます。

3.2.1問題1:クローンとインポート

https://github.com/rainywang/Spring2020_HITCS_SC_Lab1/tree/master/P2でコードダウンロードし、解凍してsrcに配置します。gitinitはウェアハウスを初期化します。

3.2.2問題3:TurtleグラフィックとdrawSquare

正方形は、それぞれが90度回転した4サイクルのサイクルを使用すると考えるのは簡単です。

3.2.3問題5:ポリゴンの描画

ポリゴンの公理と180°に等しい角度に従って毎回回転する必要がある角度を計算し、n回のサイクルを使用してポリゴンを描画します。

3.2.4問題6:ベアリングの計算

回転する角度を計算するループを使用して、calculateBearingToPointを呼び出します。この関数の実現は、特別な状況(座標軸に平行な直線上にある)に対処し、次にatan関数を使用してarctanの値を計算し、現在の方向を差し引き、残りの約360度を回転角度とします。

3.2.5問題7:凸包

境界ホバリングメソッドは、calculateBearingToPointを使用して凸包を計算するために使用されます。最初に左下隅の点を選択し、次にこの点を開始点として使用して、すべての点の中で最小のたわみのある点を徐々に見つけ、特定の時間に見つかった最小のたわみのある点が開始点になるまでセットに保存します。同じ偏角のポイントは、ガイドの要求に応じて遠方のポイントを選択し、abs(x2-x0)とabs(y2-y0)の距離で判断してください。

3.2.6問題8:個人アート

for(int i = 0; i < 36; i++) {
        	drawRegularPolygon(turtle, 360, 2);
        	turtle.turn(10);
        	turtle.color(color[i % 10]);
        }

色とりどりのグラフィックが描かれました。
ここに画像の説明を挿入

3.2.7提出

日食でプロジェクトを右クリックし、[チーム]、[コミット]の順に選択します。送信するファイルを選択してメッセージを書き込むと、送信できます。

3.3ソーシャルネットワーク

それは実際にはグラフの表現の問題です。表記テーブルの表記を採用し、最短距離を得るためにBFSを使用します。

3.3.1 FriendshipGraphクラスの設計/実装

リストを使用して全員の情報を保存し、マップを使用してこの関係図を保存します。ポイントを追加するときは、この人物をリストに追加し、地図に彼の空のマップを作成します。エッジを追加するときに、マップの対応するリスト(リーダーリスト)に他の人を追加します。getDistanceはBFSを使用して実装されます。BFSがそれを見つけられない場合、距離は-1です(問題ではありません)。そして、テストを容易にするためにgetListとgetMapを実装します。

3.3.2 Personクラスの設計/実装

個人は、プライベート文字列名を使用して名前を保存するだけで済みます。コンストラクターを使用してオブジェクトを初期化します。

3.3.3クライアントコードの設計/実装main()

	public static void main(String[] args) {
		FriendshipGraph graph = new FriendshipGraph();
		Person rachel = new Person("Rachel");
		Person ross = new Person("Ross");
		Person ben = new Person("Ben");
		Person kramer = new Person("Kramer");
		graph.addVertex(rachel);
		graph.addVertex(ross);
		graph.addVertex(ben);
		graph.addVertex(kramer);
		graph.addEdge(rachel, ross);
		graph.addEdge(ross, rachel);
		graph.addEdge(ben, ross);
		graph.addEdge(ross, ben);
		System.out.println(graph.getDistance(rachel, ross));
		System.out.println(graph.getDistance(rachel, ben));
		System.out.println(graph.getDistance(rachel, rachel));
		System.out.println(graph.getDistance(rachel, kramer));
	}

3.3.4テストケースの設計/実装

ここに画像の説明を挿入

元の記事を3件公開 いいね!0 訪問56

おすすめ

転載: blog.csdn.net/weixin_43957335/article/details/104719442