第4次作业类测试代码+028+刘孝天

Posted 彼得兔-天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第4次作业类测试代码+028+刘孝天相关的知识,希望对你有一定的参考价值。

一:类图

二:代码:

 1:定义接口

 1 package jframeTest;
 2 /*
 3  * @author lxt
 4  * @date 2017年5月2日下午4:22:35
 5  * @Param
 6  */
 7 public interface InteUtil {
 8 
 9     public int perimeter(int a,int b,int c);
10     public float triangleArea(int a,int b,int c);
11     public boolean IsNotInt(String str);
12 }

 2:定义接口实现类

 1 package jframeTest;
 2 import java.math.BigDecimal;
 3 /*
 4  * @author lxt
 5  * @date 2017年5月2日下午4:12:22
 6  * @Param
 7  */
 8 public class TriangleTest implements InteUtil {
 9     public static String triangle(int a, int b, int c){
10         String str=null;
11         if((a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100)){
12             if(a<(b+c)&&b<(a+c)&&c<(a+b)){    
13                 if(a==b&&a==c){
14                     str="等边三角形";
15                 }else if(a==b||a==c||b==c){
16                     str="等腰三角形";
17                 }else if(a*a+b*b==c*c||b*b+c*c==a*a||c*c+a*a==b*b){
18                     str="直角三角形";
19                 }else{
20                     str="一般三角形";
21                 }
22             }else{
23                 str="不能构成三角形";
24             }
25         }else{
26             str="边的值不在范围内";
27         }
28         return str;
29     }
30     
31     /* (non-Javadoc)
32      * @see jframeTest.InteUtil#IsNotInt(int, int, int)
33      * 判断输入的是否为数字
34      */
35      public boolean IsNotInt(String str)
36         {
37          if(str==null)
38            {
39             return false;
40            }
41          else{
42             try{
43               int num=Integer.valueOf(str);
44               return true;
45             }catch (Exception e) {
46               return false;
47                }
48            }
49        }
50 
51     /* (non-Javadoc)
52      * @see jframeTest.InteUtil#perimeter(int, int, int)
53      * 计算三角形的周长
54      */
55     public int perimeter(int a, int b, int c) {
56         // TODO Auto-generated method stub
57         int per=a+b+c;
58         return per;
59     }
60     /* (non-Javadoc)
61      * @see jframeTest.InteUtil#triangleArea(int, int, int)
62      * 计算三角形的面积
63      */
64     public float triangleArea(int a, int b, int c) {
65         // TODO Auto-generated method stub
66          double i = ((a+b+c)*0.5);
67          float j= (float) (i*(i-a)*(i-b)*(i-c));
68          float str=(float)Math.sqrt(j); 
69          BigDecimal bigDecimal = new BigDecimal(str);  
70          float area = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();  
71          return area;
72     }
73 }

 3:定义窗体类

  1 package jframeTest;
  2 
  3 import java.awt.Color;
  4 import java.awt.EventQueue;
  5 import javax.swing.JFrame;
  6 import javax.swing.JOptionPane;
  7 import javax.swing.JPanel;
  8 import java.awt.BorderLayout;
  9 import javax.swing.JButton;
 10 import javax.swing.JTextField;
 11 import java.awt.Font;
 12 import javax.swing.UIManager;
 13 import java.awt.event.MouseAdapter;
 14 import java.awt.event.MouseEvent;
 15 import javax.swing.JLabel;
 16 
 17 /*
 18  * @author lxt
 19  * @date 2017年5月2日下午3:53:05
 20  * @Param
 21  */
 22 public class Jframe {
 23 
 24     private JFrame jframe;
 25     private static TriangleTest text;
 26     private JTextField texta;
 27     private JTextField textb;
 28     private JTextField textc;
 29     private JTextField perimeter;
 30     private JTextField number;
 31     private JTextField outarea;
 32            
 33     public void Triangle() {
 34         
 35         jframe = new JFrame();
 36         jframe.setForeground(Color.green);
 37         jframe.setTitle("欢迎使用三角形管理系统");
 38         jframe.setBounds(300, 250, 400, 230);
 39         jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            
 40         JPanel jpanel = new JPanel();
 41         jpanel.setBounds(0, 0, 400, 280);
 42         jframe.getContentPane().add(jpanel, BorderLayout.CENTER);      
 43         
 44         JLabel input = new JLabel("请输入三角形的三条边:");
 45         input.setForeground(Color.blue);
 46         input.setFont(new Font("宋体", Font.BOLD, 14));
 47         input.setBounds(30, 100, 300, 30);
 48         jpanel.add(input);            
 49         JPanel jp = new JPanel();
 50         jpanel.add(jp);
 51         JLabel jpa = new JLabel("a:");
 52         jp.add(jpa);
 53         jpa.setFont(new Font("宋体", Font.BOLD, 14));
 54         jpa.setSize(30, 30);
 55         texta = new JTextField();
 56         jp.add(texta);
 57         texta.setColumns(5);
 58         texta.setBackground(Color.yellow);
 59             
 60         JLabel jpb = new JLabel("b:");
 61         jp.add(jpb);
 62         jpb.setFont(new Font("宋体", Font.BOLD, 14));
 63         jpb.setSize(20, 20);
 64         textb = new JTextField();
 65         jp.add(textb);
 66         textb.setColumns(5);
 67         textb.setBackground(Color.yellow);
 68         JLabel jpc = new JLabel("c:");
 69         jp.add(jpc);
 70         jpc.setFont(new Font("宋体", Font.BOLD, 14));
 71         jpc.setSize(20, 20);
 72         
 73         textc = new JTextField();
 74         jp.add(textc);
 75         textc.setColumns(5);
 76         textc.setBackground(Color.yellow);    
 77         JPanel bto = new JPanel();
 78         bto.setSize(500, 90);
 79         jpanel.add(bto);
 80             
 81         //用final修饰,供内部类使用
 82         final JButton btok = new JButton("OK");
 83         btok.setSize(60, 60);
 84         btok.setBackground(Color.GREEN);
 85         btok.setFont(new Font("宋体", Font.PLAIN, 14));
 86         bto.add(btok);
 87             
 88         final JButton btc = new JButton("Cancel");
 89         btc.setSize(60, 60);
 90         btc.setBackground(Color.GREEN);
 91         btc.setFont(new Font("宋体", Font.PLAIN, 14));
 92         bto.add(btc);
 93         JPanel outpanel = new JPanel();
 94         outpanel.setBounds(0, 0, 400, 50);
 95         jpanel.add(outpanel);
 96         
 97         JLabel output = new JLabel();
 98         outpanel.add(output,BorderLayout.SOUTH);
 99         output.setFont(new Font("宋体",Font.BOLD, 16));
100         output.setText("这个三角形是:");
101         number = new JTextField();
102         number.setFont(new Font("宋体", Font.PLAIN, 15));
103         outpanel.add(number);
104         number.setBackground(Color.yellow);
105         number.setEditable(false);
106         number.setColumns(18);
107         
108         JPanel jpout = new JPanel();
109         jpanel.add(jpout);
110         JLabel outare = new JLabel();
111         jpout.add(outare);
112         outare.setFont(new Font("宋体", Font.PLAIN, 15));
113         outare.setBackground(UIManager.getColor("Button.background"));
114         outare.setText("面积为:");
115         
116         outarea = new JTextField();
117         outarea.setFont(new Font("宋体", Font.PLAIN, 15));
118         outarea.setEditable(false);
119         jpout.add(outarea);
120         outarea.setColumns(9);
121         outarea.setBackground(Color.yellow);
122         
123         JLabel outper = new JLabel();
124         jpout.add(outper);
125         outper.setFont(new Font("宋体", Font.PLAIN, 15));
126         outper.setBackground(UIManager.getColor("Button.background"));
127         outper.setText("周长为:");
128         
129         perimeter = new JTextField();
130         perimeter.setFont(new Font("宋体", Font.PLAIN, 15));
131         perimeter.setEditable(false);
132         jpout.add(perimeter);
133         perimeter.setColumns(9);
134         perimeter.setBackground(Color.yellow);
135             
136         btc.addMouseListener(new MouseAdapter() {
137         public void mouseClicked(MouseEvent event) {
138            Object object = event.getSource();
139               if(object == btc){
140                texta.setText("");
141                textb.setText("");
142                textc.setText("");
143                number.setText("");
144                outarea.setText("");
145                perimeter.setText("");
146                   }
147                 }
148             });
149         
150     btok.addMouseListener(new MouseAdapter() {
151     public void mouseClicked(MouseEvent event) {
152       Object object = event.getSource();
153         if(object == btok){         
154            int aa,bb,cc;
155            //获取输入框内的文本
156            String a=texta.getText();
157            String b=textb.getText();
158            String c=textc.getText();    
159            //p判断输入边的值是否合法
160            if(text.IsNotInt(a)&&text.IsNotInt(b)&&text.IsNotInt(c))
161            {
162                 aa = Integer.parseInt(a);
163                 bb = Integer.parseInt(b);
164                 cc = Integer.parseInt(c);
165                 //如果输入边的值可构成三角形则计算面积和周长
166                 if (!(TriangleTest.triangle(aa, bb, cc)).equals("边的值不在范围内")&&!(TriangleTest.triangle(aa, bb, cc)).equals("不能构成三角形"))
167                 {
168                     String pe=String.valueOf(text.perimeter(aa, bb, cc));
169                     String ar=String.valueOf(text.triangleArea(aa, bb, cc));
170                     String re=TriangleTest.triangle(aa, bb, cc);
171                     perimeter.setText(pe);
172                     outarea.setText(ar);
173                     number.setText(re);
174                 }
175                 else{
176                //否则将面积和周长置为空
177                     String result=TriangleTest.triangle(aa, bb, cc);
178                     number.setText(result);
179                     outarea.setText("");
180                     perimeter.setText("");
181                     perimeter.setText("");
182                     }
183           }
184            else{
185              // 输入的数值不合法,将输入框置为空
186             JOptionPane.showMessageDialog(null, "输入有误,请重请输入");
187             new JFrame();
188             texta.setText("");
189             textb.setText("");
190             textc.setText("");
191             number.setText("");
192             outarea.setText("");
193             perimeter.setText("");
194                 }
195             }
196         }
197       });
198      }
199     
200     public static void main(String[] args) {
201         text=new TriangleTest();
202         EventQueue.invokeLater(new Runnable() {
203         public void run() {               
204             Jframe window = new Jframe();
205             //设置窗体的可见性
206             window.jframe.setVisible(true);     
207           }
208        });
209     }
210     public Jframe() {
211         Triangle();
212     }
213 }

三:运行结果

 1:

 

 2:

 

 3:

 

4:

 

 

以上是关于第4次作业类测试代码+028+刘孝天的主要内容,如果未能解决你的问题,请参考以下文章

实验三+028+刘孝天

实验二+028+刘孝天

第4次作业类测试代码+105032014166+张珍珍

第4次作业类测试代码+105032014045+杨铭河

第4次作业类测试代码+063+陈彧

第4次作业类测试代码+105032014065+方绎杰