因为《软件测试》课程需要,写一个程序对三角形进行测试,本程序对整型和浮点型数据都进行了覆盖,测试用例都能通过,但是输入其他字符串或者其他的字符并没有进行判断(毕竟三角形边长是数字),所以程序还是有点瑕疵,有兴趣就自行修改完善。

实验内容
三角形问题
根据下面给出的规格说明,利用等价类划分方法,给出足够的测试用例并根据用例执行测试。
输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断这三条边是否能构成三角形?
如果能构成三角形,则判断三角形的类型(等边三角形、等腰三角形、一般三角形)。
要求输入三个整数a、b、c,必须满足以下条件:1≤a≤200;1≤b≤200;1≤c≤200。
请用黑盒测试方法设计测试用例。


主函数:

public class test {public static void main(String[] args) {Triangle win = new Triangle();}
}

功能函数:

//功能函数
//Triangle.javaimport java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Triangle extends JFrame implements ActionListener {int a, b, c;//三角形的三条边double d, f, g;JTextField text1, text2, text3, text4;JButton button1, button2, button3;JLabel label1, label2, label3, label4;Box basebox, box1, box2, box3;public Triangle() {super("三角形黑盒测试程序");setLayout(new FlowLayout());text1 = new JTextField(22);text2 = new JTextField(22);text3 = new JTextField(22);text4 = new JTextField(22);label1 = new JLabel("请输入第一条边长:");label2 = new JLabel("请输入第二条边长:");label3 = new JLabel("请输入第三条边长:");label4 = new JLabel("判断结果:");button1 = new JButton("确定");button2 = new JButton("清除");button3 = new JButton("结束程序");box1 = Box.createVerticalBox();box1.add(label1);box1.add(Box.createVerticalStrut(10));box1.add(label2);box1.add(Box.createVerticalStrut(10));box1.add(label3);box1.add(Box.createVerticalStrut(20));box1.add(label4);box2 = Box.createVerticalBox();box2.add(text1);box2.add(Box.createVerticalStrut(4));box2.add(text2);box2.add(Box.createVerticalStrut(4));box2.add(text3);box2.add(Box.createVerticalStrut(20));box2.add(text4);box3 = Box.createVerticalBox();box3.add(button1);box3.add(Box.createVerticalStrut(8));box3.add(button2);box3.add(Box.createVerticalStrut(8));box3.add(button3);basebox = Box.createHorizontalBox();basebox.add(box1);basebox.add(Box.createHorizontalStrut(10));basebox.add(box2);basebox.add(Box.createHorizontalStrut(15));basebox.add(box3);add(basebox);button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);setBounds(0, 50, 500, 180);//设置背景图片setSize(500, 180);  //设置大小//设置位置setLocation(0, 50);//背景图片的路径。(相对路径或者绝对路径。本例图片放于"java项目名"的文件下)String path = "C://Users//五十少年//Desktop//p8g3le.jpg";// 背景图片ImageIcon background = new ImageIcon(path);// 把背景图片显示在一个标签里面JLabel label = new JLabel(background);// 把标签的大小位置设置为图片刚好填充整个面板label.setBounds(0, 0, this.getWidth(), this.getHeight());// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明JPanel imagePanel = (JPanel) this.getContentPane();imagePanel.setOpaque(false);// 把背景图片添加到分层窗格的最底层作为背景this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));//点关闭按钮时退出setVisible(true);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}@Overridepublic void actionPerformed(ActionEvent e) {if (text1.getText().isEmpty() || text2.getText().isEmpty() || text3.getText().isEmpty()) {  //判断输入是否为空text4.setText("请输入有效值");} else if (text1.getText().matches("^[0-9]+([.]{0,1}[0-9]+){0,1}$") || text2.getText().matches("^[0-9]+([.]{0,1}[0-9]+){0,1}$") ||text3.getText().matches("^[0-9]+([.]{0,1}[0-9]+){0,1}$")) {//判断是否是浮点型d = Double.parseDouble(text1.getText());f = Double.parseDouble(text2.getText());g = Double.parseDouble(text3.getText());if (e.getSource() == button1) {if ((d < 1 || d > 200) || (f < 1 || f > 200) || (g < 1 || g > 200)) {text4.setText("取值在不允许的范围内,请重新输入");} else {if ((d + f > g && d + g > f && f + g > d)) {  //判断是否能构成三角形if (d == f && d == g && f == g) {text4.setText("该三角形是等边三角形");} else if (d == f || d == g || f == g) {text4.setText("该三角形是等腰三角形");} else {text4.setText("该三角形是一般三角形");}} else {text4.setText("不能构成三角形");}}}} else {   //输入为整数的情况a = Integer.parseInt(text1.getText());b = Integer.parseInt(text2.getText());c = Integer.parseInt(text3.getText());if (e.getSource() == button1) {if ((a < 1 || a > 200) || (b < 1 || b > 200) || (c < 1 || c > 200)) {text4.setText("取值在不允许的范围内,请重新输入");} else {if ((a + b > c && a + c > b && b + c > a)) {  //判断是否能构成三角形if (a == b && a == c && b == c) {text4.setText("该三角形是等边三角形");} else if (a == b || a == c || b == c) {text4.setText("该三角形是等腰三角形");} else {text4.setText("该三角形是一般三角形");}} else {text4.setText("不能构成三角形");}}}}if (e.getSource() == button2) {  //清除数据text1.setText("");text2.setText("");text3.setText("");text4.setText("");}if (e.getSource() == button3) {System.exit(0);  //关闭程序}}
}

运行效果:

三角形黑盒测试-Java Swing相关推荐

  1. 【java毕业设计】基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现(毕业论文+程序源码)——俄罗斯方块游戏

    基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现,文章末尾 ...

  2. java swing开发窗体程序开发(四)MVC结构

    MVC是一种设计结构(非设计模式,非设计原则) M:Model 模型层:即用于存储数据的对象 V:View 视图层:即用于为模型提供数据显示的对象 C:Controller 控制器层:即处理用户的业务 ...

  3. 使用Java Swing实现7个经典应用诠释算法精髓

    算法可视化 码云仓库地址:https://gitee.com/CandyWall/alogrithm-visualizer 喜欢的朋友记得点个star哟 本代码参考慕课网的liuyubobobo老师的 ...

  4. 【java毕业设计】基于java+swing+GUI的雷电游戏GUI设计与实现(毕业论文+程序源码)——雷电游戏

    基于java+swing+GUI的雷电游戏GUI设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+GUI的雷电游戏GUI设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  5. Java项目:潜艇大战项目(java+swing)

    源码获取:博客首页 "资源" 里下载! 功能简介: Java swing实现的一款小游戏潜艇大战的项目源码 游戏界面: @SuppressWarnings({ "unus ...

  6. Java项目:日历万年历(java+swing)

    源码获取:博客首页 "资源" 里下载! 功能简介: 万年历 启动类: public class CalendarMainClass { public static void mai ...

  7. java布局工具,Java Swing:库,工具,布局管理器

    What libraries/tools do you have in your Java Swing Tool set? XUL Layout Managers Packagers/Installe ...

  8. java swing 文件选择,设置默认文件选择路径,桌面路径

    在上传文件,选择文件的时候,往往会遇到路径选择的问题,比如,一般上传的默认路径是 我的文档,而我们恰好需要默认在桌面,那怎么办呢? 下面的内容也许会帮到你! 首先,看java swing 方面,使用 ...

  9. java swing原理浅析

    2019独角兽企业重金招聘Python工程师标准>>> 没有接触过ui编程的人在学习ui编程时可能会对ui组件和各组件间的关系有点混乱,下面笔者就java swing的原理做下简单分 ...

最新文章

  1. javascript 之反射
  2. EL表达式中格式化日期显示
  3. 统一返回的json时间格式
  4. pythontry参数_Python ——Try Except
  5. python自动获取天气_用python获取天气数据,并作定时播报
  6. Spring Cloud Hoxton正式发布,Spring Boot 2.2 不再孤单
  7. jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析
  8. 如何让图片充满excel单元格_如何在Excel单元格建立下拉菜单
  9. 周鸿祎在美参加的信息安全大会已有两人确诊新冠肺炎
  10. Bzoj 2683: 简单题(CDQ分治)
  11. slim.conv2d以及slim.convolution2d与tf.nn.conv2d的不同
  12. 服务器 通知系统设计,组列表管理服务器的设计与实现
  13. 如何编写干净的Java代码
  14. mysql索引失效情况
  15. 想做AI工程师?这个案例必须掌握!(附完整代码Keras实现CNN)
  16. fatal error LNK1123 错误解决方法
  17. C++ endl 的本质是什么
  18. 无粉丝无流量怎么加入快手小黄车?怎么开通小黄车?
  19. iOS开发罗盘/指南针
  20. 基于Spring Boot的个人博客系统的设计与实现毕业设计源码271611

热门文章

  1. Qt图片绘图类QPixmap、QImage、QPicture
  2. Android新浪微博实训报告,新浪微博产品简析
  3. 基于Python的BP网络实现手写数字识别
  4. 2022 GIS保研面试:武大国重、资环、中科院空天院;地信GIS专业/遥感专业保研夏令营面试、预推免面试
  5. linux 处理匹配文本的前后行
  6. 这几招对博勒飞粘度计检测精度的提升有很大帮助
  7. coco数据集大小分类_COCO数据集使用
  8. MATLAB制作扇形图及颜色调配
  9. pom文件分析(笔记)
  10. MySQL DDL Duplicate entry '12' for key 'PRIMARY'