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

1、类图:

2、代码:

(1)计算类:

class Arithmetic{  //逻辑计算类
    private int headphoneNum;
    private int mpShellNum;
    private int csProtectorNum;

    public Arithmetic(int hp, int ms, int cp) {
        this.headphoneNum = hp;
        this.mpShellNum = ms;
        this.csProtectorNum = cp;
    }
    public float commission(){
        int total = headphoneNum*80+mpShellNum*10+csProtectorNum*8;
        float commission = 0;
        if(total<1000){
            commission = (float) (total*0.1);
        }else if(total>=1000 && total<=1800){
            commission = (float) (1000*0.1+(total-1000)*0.15);
        }else if(total>1800){
            commission = (float) (1000*0.1+800*0.15+(total-1800)*0.2);
        }
        return commission;
    }
    public String mostSale(){
        StringBuilder mSale = new StringBuilder("耳机 ");
        int max = headphoneNum;
        if (max < mpShellNum) {
            mSale.replace(0, mSale.length(), "手机壳 ");
            max = mpShellNum;
        }else if(max == mpShellNum){
            mSale.append("手机壳 ");
        }
        if (max < csProtectorNum) {
            mSale.replace(0, mSale.length(), "贴膜 ");
            max = mpShellNum;
        }else if(max == csProtectorNum){
            mSale.append("贴膜 ");
        }
        return mSale.toString();
    }
    public int diffSale(){
        int[] goods = {headphoneNum,mpShellNum,csProtectorNum};
        for (int i = 0, len = goods.length; i < len; i++) {
            for (int j = i+1; j < len; j++) {
                if (goods[i] < goods[j]) {
                    int min = goods[i];
                    goods[i] = goods[j];
                    goods[j] = min;
                }
            }
        }
        int dSale = goods[0]-goods[2];
        return dSale;
    }
}

(2)界面类:

class ActionHandle{  //界面设计类
    private JFrame frame = new JFrame("手机配件佣金计算器");
    private JLabel infoLab = new JLabel("请输入销售数量: ");
    private JLabel headphoneLab = new JLabel("耳机: ");
    private JLabel mpShellLab = new JLabel("手机壳: ");
    private JLabel csProtectorLab = new JLabel("贴膜: ");
    private JLabel refundLab = new JLabel("应返还的佣金: ");
    private JLabel mostSaleLab = new JLabel("销售额最高的配件是: ");
    private JLabel diffSaleLab = new JLabel("销售配件最多与最少数量相差: ");
    private JTextField headphoneFie = new JTextField();
    private JTextField mpShellFie = new JTextField();
    private JTextField csProtectorFie = new JTextField();
    private JTextField refundFie = new JTextField();
    private JTextField mostSaleFie = new JTextField();
    private JTextField diffSaleFie = new JTextField();
    private JButton submit = new JButton("OK");
    private JButton reset = new JButton("reset");

    public ActionHandle() {
        Font fnt = new Font("Serirf",Font.BOLD,12);

        frame.setLayout(null);
        infoLab.setFont(fnt);
              //submit按键监听方法
        submit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (e.getSource()==submit) {
                    String headphoneNumStr = new String(headphoneFie.getText());
                    String mpShellNumStr = new String(mpShellFie.getText());
                    String csProtectorNumStr = new String(csProtectorFie.getText());
                    try {
                        int headphoneNumInt = Integer.parseInt(headphoneNumStr);
                        int mpShellNumInt = Integer.parseInt(mpShellNumStr);
                        int csProtectorNumInt = Integer.parseInt(csProtectorNumStr);

                        Arithmetic arithmetic = new Arithmetic(headphoneNumInt, mpShellNumInt, csProtectorNumInt);

                        refundFie.setText(String.valueOf(arithmetic.commission()));
                        mostSaleFie.setText(arithmetic.mostSale());
                        diffSaleFie.setText(String.valueOf(arithmetic.diffSale()));
                    } catch (NumberFormatException e2) {
                        Toolkit.getDefaultToolkit().beep();
                        JOptionPane.showMessageDialog(null, "输入数量不满足要求", "警告", JOptionPane.WARNING_MESSAGE);
                    }
                }
            }
        });
        //reset按键监听方法
        reset.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (e.getSource()==reset) {
                    headphoneFie.setText("");
                    mpShellFie.setText("");
                    csProtectorFie.setText("");
                    refundFie.setText("");
                    mostSaleFie.setText("");
                    diffSaleFie.setText("");
                }
            }
        });
        //关闭
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(1);
            }
        });
        //控件位置安排
        infoLab.setBounds(5, 5, 120, 20);
        frame.add(infoLab);
        headphoneLab.setBounds(5, 30, 60, 20);
        headphoneFie.setBounds(65, 30, 60, 20);
        mpShellLab.setBounds(135, 30, 60, 20);
        mpShellFie.setBounds(195, 30, 60, 20);
        csProtectorLab.setBounds(265, 30, 60, 20);
        csProtectorFie.setBounds(325, 30, 60, 20);
        submit.setBounds(50, 60, 90, 20);
        reset.setBounds(190, 60, 90, 20);
        refundLab.setBounds(5, 90, 90, 20);
        refundFie.setBounds(95, 90, 110, 20);
        mostSaleLab.setBounds(5, 120, 130, 20);
        mostSaleFie.setBounds(135, 120, 110, 20);
        diffSaleLab.setBounds(5, 150, 180, 20);
        diffSaleFie.setBounds(185, 150, 60, 20);

        frame.add(headphoneLab);
        frame.add(mpShellLab);
        frame.add(csProtectorLab);
        frame.add(refundLab);
        frame.add(mostSaleLab);
        frame.add(diffSaleLab);
        frame.add(headphoneFie);
        frame.add(mpShellFie);
        frame.add(csProtectorFie);
        frame.add(refundFie);
        frame.add(mostSaleFie);
        frame.add(diffSaleFie);
        frame.add(submit);
        frame.add(reset);

        frame.setSize(420, 250);
        frame.setVisible(true);
    }
}

(3)执行类:

public class swing {
    public static void main(String[] args) {
        new ActionHandle();
    }
}

3、界面:

时间: 2024-10-18 12:56:40

第4次作业类测试代码+105032014045+杨铭河的相关文章

第4次作业类测试代码+101+谢艳敏

类测试代码的具体要求如下: 界面操作说明补充: 点击OK,如果输入有效,进行相应的数值计算:如果数值不满足约束,则弹出错误说明,统一为"输入有误,请重新输入",然后回到初始输入状态. 点击Cancle,表示重置,清空前面的数据,回到初始状态. (2)NextDate函数问题 String  nextdate(int m,int d,int y) 建立界面,至少包含以下元素,但不限于此: 完成上一天方法:String lastDay(int m,int d,int y) ,完成周几的方法

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

第4次作业:准备类测试代码 类测试代码的具体要求如下: (1)设计三角形完整程序 已经完成的方法是:  String triangle(int a,int b,int c) 现在要求继续增加新的功能: 建立界面,至少包含以下元素,但不限于此: 完成面积的方法:float triangleArea(int a,int b,int c) ,完成周长的方法:int perimeter(int a,int b,int c) 要求: 1.        画出类图: 2.        完成界面和相应的功能

第4次作业类测试代码+105032014138+牟平

类测试代码的具体要求如下: 设计三角形完整程序 已经完成的方法是:  String triangle(int a,int b,int c) 现在要求继续增加新的功能: 建立界面,至少包含以下元素,但不限于此: 完成面积的方法:float triangleArea(int a,int b,int c) ,完成周长的方法:int perimeter(int a,int b,int c) 一.类图 二.功能界面 1 2 3 4 5 6 三.代码: import java.awt.EventQueue;

第4次作业类测试代码+105032014125+洪诗育

类测试代码的具体要求如下: 界面操作说明补充: 点击OK,如果输入有效,进行相应的数值计算:如果数值不满足约束,则弹出错误说明,统一为"输入有误,请重新输入",然后回到初始输入状态. 点击Cancle,表示重置,清空前面的数据,回到初始状态. NextDate函数问题 String  nextdate(int m,int d,int y) 建立界面,至少包含以下元素,但不限于此: 完成上一天方法:String lastDay(int m,int d,int y) ,完成周几的方法:in

第4次作业类测试代码+074+林盼皇

(友情提示:代码部分较多,为了便于测试,项目码源已上传至链接:http://pan.baidu.com/s/1pLscU3T 密码:ug8i)  界面: 1.类图 2.界面和相应的功能. 本次实验是在原来的CalDate日期计算类的基础上,添加了两个方法int weekDay(int m,int d,int y)与String lastDate(int m,int d,int y),此外还编写了GUInterface界面.  a.实现lastDate 1 public String lastDa

第4次作业类测试代码+098+吴超

一.类图 二.代码与界面 简单的分层思想,代码目录如下: 计算日期的业务类操作代码:printDate.java;具体包括如下方法. 2.1  增加计算星期几的方法weekDay(),利用蔡勒(Zeller)公式.即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1: 公式中的符号含义如下,w:星期:c:世纪-1:y:年(两位数):m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1.2月要看作上一年的13.14月来计算,比如2003年1月1日要看作2002年的13月

第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 I

第4次作业类测试代码+085+潘亭

一.类图设计如下 二.界面如下 功能演示 1.输入错误 2.不构成三角形 3.一般三角形 面积默认保留两位小数 4.直角三角形 5.等腰三角形 6.等边三角形 7.cancel演示 防止程序崩溃,默认重置为0 三.代码部分 1.Triangle类 1 package visualTriangle; 2 3 public class Triangle { 4 5 //judge the fields 6 public static boolean Check(int num) 7 { 8 if(n

第5次作业类测试代码+140+阮晨曦

1. 代码链接 http://www.cnblogs.com/chenxxiaol/p/6804119.html 2. 界面设计 3. 等价类测试 分析题目 得出对输入的条件要求为 (1)      整数 (2)      三个数 (3)      1≤a≤100 (4)      1≤b≤100 (5)      1≤c≤100 (6)      a<b+c (7)      b<a+ c (8)      c<a+ b (9)    等腰三角形 (10)   等边三角形 (11)