Java程序设计_中国大学MOOC_第10讲 图形用户界面_Week10 互评作业

( 10分 )

做一个窗体应用程序“体重指数计算器”,能根据用户输入的性别、身高、体重计算出“体质指数(身体质量指数)”,并给出是否偏胖的判断。其中,体质指数(BMI)=体重(kg)÷身高^2(m),大于24则为偏胖,更详细的判断可以在网上查查相关的资料。要求有用户界面组件(如文本框、单选按钮、按钮)、布局和事件处理。

 

评分标准:

是一个窗体应用程序(1分);

有按钮、文本框等组件(2分);

有布局(2分);

有事件处理(2分);

正确计算,并显示结果(2分);

总体较好(1分)。

Codes:

package JavaGUI;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/*
    做一个窗体应用程序“体重指数计算器”,能根据用户输入的性别、身高、体重计算出“体质指数
    (身体质量指数)”,并给出是否偏胖的判断。其中,体质指数(BMI)=体重(kg)÷身高^2(m),
    大于24则为偏胖,更详细的判断可以在网上查查相关的资料。要求有用户界面组件(如文本框、
    单选按钮、按钮)、布局和事件处理。

    评分标准:
    是一个窗体应用程序(1分);
    有按钮、文本框等组件(2分);
    有布局(2分);
    有事件处理(2分);
    正确计算,并显示结果(2分);
    总体较好(1分)。
    
*/

public class BmiCal extends JFrame implements ActionListener {
    private static final Component JPanel = null;
    JTextField weight;
    JTextField height;
    JButton submit,reset;
    CheckboxGroup sex=new CheckboxGroup();
    JLabel res=new JLabel("BMI指数为:");
    
    public BmiCal() {
        super("体重指数计算器");
        Container BC=getContentPane();
        
        JPanel cont=new JPanel();
        cont.setLayout(new GridLayout(4,2));
        cont.add(new JLabel("体重(kg):"));
        
        Font font=new Font("宋体",10,30);
        
        weight=new JTextField(10);
        cont.add(weight);
        
        
        cont.add(new JLabel("升高(m):"));
        height=new JTextField(10);
        cont.add(height);
        height.setFont(font);
        weight.setFont(font);
        
        cont.add(new Checkbox("男",true,sex));
        cont.add(new Checkbox("女",false,sex));
        
        submit=new JButton("确认");
        cont.add(submit);
        submit.setFont(font);
        reset=new JButton("重置");
        cont.add(reset);
        reset.setFont(font);
        
        submit.addActionListener(this);
        reset.addActionListener(this);
        
        BC.setLayout(new BorderLayout(5,5));
        BC.add("Center",cont);
        BC.add("South",res);
        res.setFont(font);
        
        setSize(500,800);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    
    double wei,hei,bmi;
    
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==reset) {
            weight.setText("");
            height.setText("");
            System.out.println("reset");
        }
        else if(e.getSource()==submit) {
            String sw=weight.getText();
            String sh=height.getText();
            if(sw.contentEquals("") || sh.contentEquals(""))
                JOptionPane.showMessageDialog(JPanel,"数据缺失!请填写完整!","温馨提示",JOptionPane.WARNING_MESSAGE);
            else {
                wei=Double.valueOf(weight.getText());
                hei=Double.valueOf(height.getText());            
                bmi=wei/(hei*hei);
                
                dataProcess(bmi);                
            }
        }
    }
    
    public void dataProcess(double bmi) {
        String info;
        bmi= (double)Math.round(bmi*10)/10;
        System.out.println("bmi="+bmi);
        if(bmi<=18.4) {
            info="偏瘦";
        }
        else if(bmi>=18.5 && bmi<=23.9)
            info="正常";
        else if(bmi>=24.0 && bmi<=27.9)
            info="过重";
        else
            info="肥胖";
        
        res.setText("BMI指数为"+bmi+","+info);
    }
    
    public static void main(String[] args) {
        new BmiCal();
    }
    
}
 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值