UI版 : 三角形問題(JFrame界面) - 軟體測試
一. 軟體設計介紹
該軟體以研究三角形問題為目的.
通過使用者選擇三角形判斷依據後,輸入三角形的三條邊長,通過相對應的功能判斷出該三角形的類型.
當使用者完成本次操作後,會提示是否繼續操作.若退出操作即結束該程式.
二. 軟體開發平台簡介
Eclipse軟體,使用Java語言編寫.開始可以先以指令方式來完成該程式,後期可以寫成視窗來是程式更完整.
三. 需求分析
1).擁有較好的互動性,可以讓使用者明白該軟體的用處功能,有相應的提示,操作簡單
2).輸出結果時,若出現錯誤,需要将具體錯誤描述出來
3).輸入的類型可以是小數
四. 概要設計
設計思路
運用switch case語句來讓使用者選擇相應功能後進行三邊的輸入,其中相對應的功能要單獨封裝到一個類中.
完成輸入後,立刻輸出結果,其中若輸入不規範,需要讓使用者進行重新輸入.如輸出結果錯誤,需要将錯誤原因輸出到控制台,讓使用者看到.
完成一次操作後,可以繼續彈出開始的幾個菜單,其中包含退出的選項,當使用者選擇退出後,完成本次程式,程式退出.
五. 詳細設計
5.1 主要設計原理
5.1.1 switch-case語句
先将主要功能通過syso輸出,後用s-c語句來讓使用者選擇對應的操作.
5.1.2 方法提取
由于每個case都需要使用者的輸入,是以将使用者的輸入提取為一個輸入的方法,并将輸入的三個數值類型存放到list清單當中後進行排序為後面功能提供友善.
5.1.3 判定功能
邊關系判定
通過三角形的邊的特征來判斷該三角形式何種三角形
角關系判定
通過勾股定理來完成角度的判斷
若一個三角形的三邊a,b,c (a>b≥c>0) 滿足:
1.b²+c²>a²,則這個三角形是銳角三角形;
2.b²+c²=a²,則這個三角形是直角三角形;
3.b²+c²<a²,則這個三角形是鈍角三角形。
邊和角關系判定
大邊對大角,故隻需求出最大邊所對應的角的餘弦值即可判斷該三角形的形狀
5.2包說明
5.2.1 預設包
其中包括一個Triangle類,與使用者互動的操作代碼,主類,調用工具類.
5.2.2 工具包
包括三個類,分别将邊關系,角關系,邊和角關系的判定功能代碼包含在内.
六. 調試分析
功能完備,具備基本功能,與使用者互動可以
七. 總結
完成實作該程式,但界面不足,需要改進與使用者的互動美
八. 附錄
8.1 源代碼
package cn.com.clearlight.triangle;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import cn.com.clearlight.utils.AngularRelation;
import cn.com.clearlight.utils.EdgeAngularRelation;
import cn.com.clearlight.utils.EdgeRelation;
public class Triangle {
public static void main(String[] args) {
System.out.println("三角形問題");
System.out.println("您可根據相應序号來選擇對應功能\n");
while (true) {
System.out.println(" * * * * * * * * *" + "");
System.out.println(" *" + " " + "1.邊關系判定\t *");
System.out.println(" *" + " " + "2.角關系判定\t *");
System.out.println(" *" + " " + "3.邊和角判定\t *");
System.out.println(" *" + " " + "4.幫助文檔\t *");
System.out.println(" *" + " " + "5.Exit\t *");
System.out.println(" * * * * * * * * *" + "");
Scanner sc = new Scanner(System.in);
String num = sc.next();
switch (num) {
case "1":
System.out.println("------邊關系判定------");
EdgeRelation edge = new EdgeRelation();
float[] len = new float[3];
len = valueInput();
System.out.println(edge.Edge(len[0], len[1], len[2]) + "\n\n");
break;
case "2":
System.out.println("------角關系判定------");
AngularRelation angular = new AngularRelation();
float[] len1 = new float[3];
len1 = valueInput();
System.out.println(angular.Angular(len1[0], len1[1], len1[2]) + "\n\n");
break;
case "3":
System.out.println("------邊和角判定------");
EdgeAngularRelation edgeAngular = new EdgeAngularRelation();
float[] len2 = new float[3];
len2 = valueInput();
System.out.println(edgeAngular.EdgeAngular(len2[0], len2[1], len2[2]) + "\n\n");
break;
case "4":
System.out.println("------幫助文檔------");
System.out.println("Tip:輸入的三條邊可以是小數\n\n如您有好的建議,請聯系V:10010031\n\n");
break;
case "5":
System.out.println("感謝您的本次使用,祝您生活愉快!再見!");
System.exit(0);
default:
System.out.println("您的輸入有誤,請重新輸入\n");
}
}
}
public static float[] valueInput() {// 使用者輸入以及判斷所輸入的是否滿足構成三角形
System.out.println("請輸入三角形的三條邊長(以空格隔開):");
while (true) {
try {
Scanner sc = new Scanner(System.in);
float a = sc.nextFloat();
float b = sc.nextFloat();
float c = sc.nextFloat();
float[] lengths = new float[3];
if (a + b <= c || a + c <= b || b + c <= a) {
System.out.println("您輸入的三邊不能構成三角形,請重新輸入");
} else {
List<Float> list = new ArrayList<Float>();
list.add(a);
list.add(b);
list.add(c);
Collections.sort(list);
lengths[1] = list.get(1);
lengths[2] = list.get(2);
return lengths;
}
} catch (Exception e) {
System.out.println("您的輸入有誤,請重新輸入!");
}
}
}
}
工具包中的類:
1.
package cn.com.clearlight.utils;
public class EdgeRelation {
public String Edge(float a, float b, float c) {
if (a == b || a == c || b == c) {
if (a == b && a == c && b == c) {
return "該三角形為等邊三角形";
} else {
if (a * a + b * b == c * c) {
return "該三角形為等腰直角三角形";
} else {
return "該三角形為等腰三角形";
}
}
} else {
if (a * a + b * b == c * c) {
return "該三角形為直角三角形";
} else {
return "該三角形為一般三角形";
}
}
}
}
package cn.com.clearlight.utils;
public class AngularRelation {
public String Angular(float a, float b, float c) {
float x, y;
x = a * a + b * b;
y = c * c;
if (x > y) {
return "這個三角形是銳角三角形";
} else if (x < y) {
return "這個三角形是鈍角三角形";
} else {
return "這個三角形是直角三角形";
}
}
}
package cn.com.clearlight.utils;
public class EdgeAngularRelation {
public String EdgeAngular(float a, float b, float c) {
float cosC;
cosC = (a * a + b * b - c * c) / 2 * a * b;
if (cosC > 0) {
return "該三角形為銳角三角形";
} else if (cosC < 0) {
return "該三角形為鈍角三角形";
} else {
return "該三角形為直角三角形";
}
}
}