天天看點

三角形問題 -軟體測試

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 "該三角形為直角三角形";
    }
  }
}