zoukankan      html  css  js  c++  java
  • 第4次作业类测试代码+101+谢艳敏

    类测试代码的具体要求如下:

    界面操作说明补充:

    点击OK,如果输入有效,进行相应的数值计算;如果数值不满足约束,则弹出错误说明,统一为“输入有误,请重新输入”,然后回到初始输入状态。

    点击Cancle,表示重置,清空前面的数据,回到初始状态。

    (2)NextDate函数问题 

          String  nextdate(int m,int d,int y)

     建立界面,至少包含以下元素,但不限于此:

    完成上一天方法:String lastDay(int m,int d,int y) ,完成周几的方法:int weekDay(int m,int d,int y)

    要求:

    1、画出类图。

    2、完成界面和相应的功能。

    界面如下:

    输入数据点击OK键:

    点击Cancel键:

    输入不满足约束的数据:

    3、代码黏贴到博客,提交作业,博客名称:第4次作业类测试代码+学号+姓名

    NextDate类:

    public class NextDate {
        // 检查日期是否合法
        public static boolean checkDate(int y, int m, int d) {
            // 年份判断
            if (y < 1915 || y > 2050) {
                System.out.println("年份超出范围");
                return false;
            }
            // 月份判断
            else if (m < 1 || m > 12) {
                System.out.println("月份超出范围");
                return false;
            }
            // 判断日期
            // 判断闰年和非闰年二月最后一天
            else if (((d < 1 || d > 28) && m == 2 && !(y % 4 == 0 && y % 100 != 0 || y % 400 == 0))
                    || ((d < 1 || d > 29) && m == 2 && (y % 4 == 0 && y % 100 != 0 || y % 400 == 0))) {
                System.out.println("日期超出范围");
                return false;
            }
            // 判断其他月最后一天
            else if (((d < 1 || d > 30) && (m == 4 || m == 6 || m == 9 || m == 11))
                    || ((d < 1 || d > 31) && (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12))) {
                System.out.println("日期超出范围");
                return false;
            } else {
                return true;
            }
        }
    
        // 下一天 nextDate函数
        public static String nextDate(int m, int d, int y) {
            // 判断是否是闰年以及二月的最后一天的情况
            if ((d == 28 && m == 2 && !(y % 4 == 0 && y % 100 != 0 || y % 400 == 0))
                    || (d == 29 && m == 2 && (y % 4 == 0 && y % 100 != 0 || y % 400 == 0))) {
                d = 1;
                m = 3;
            }
            // 其他月份最后一天的情况
            else if ((d == 30 && (m == 4 || m == 6 || m == 9 || m == 11))
                    || (d == 31 && (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12))) {
                d = 1;
                m++;
            }
            // 每个月不是最后一天的情况
            else
                d++;
            // 一年最后一天的情况
            if (m > 12) {
                m = 1;
                ++y;
            }
            return y + "年" + m + "月" + d + "日";
        }
    
        // 上一天lastDay函数
        public static String lastDay(int m, int d, int y) {
            // 上一天是二月的最后一天
            if (d == 1 && m == 3) {
                // 是否闰年
                if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
                    d = 29;
                    m--;
                } else {
                    d = 28;
                    m--;
                }
            }
            // 上一天是去年的最后一天
            else if (d == 1 && m == 1) {
                d = 31;
                m = 12;
                --y;
            }
            // 上一天是小月的最后一天
            else if (m == 4 || m == 6 || m == 9 || m == 11) {
                d = 30;
                m--;
            }
            // 上一天是大月的最后一天
            else {
                d = 31;
                m--;
            }
            return y + "年" + m + "月" + d + "日";
        }
    
        // 周几weekDay函数
        public static String weekDay(int m, int d, int y) {
            if (m == 1 || m == 2) {
                y--;
                m += 12;
                y--;
            }
    
            int week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400 + 1) % 7;
            String sweek = null;
            switch (week) {
            case 1:
                sweek = "一";
                break;
            case 2:
                sweek = "二";
                break;
            case 3:
                sweek = "三";
                break;
            case 4:
                sweek = "四";
                break;
            case 5:
                sweek = "五";
                break;
            case 6:
                sweek = "六";
                break;
            case 7:
                sweek = "日";
                break;
            }
            return sweek;
        }
    }
    View Code

    NextDateUI:

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;
    
    public class NextDateUI {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            // 创建标题为“日期计算程序”的窗口
            JFrame frame = new JFrame("日期计算程序");
            frame.setLayout(null);
            // 标签
            JLabel lab_prompt = new JLabel("请输入需要计算的年月日:");
            JLabel lab_year = new JLabel("年:");
            JLabel lab_month = new JLabel("月:");
            JLabel lab_day = new JLabel("日:");
            JLabel lab_weekday = new JLabel("这天是星期:");
            JLabel lab_nextday = new JLabel("下一天是:");
            JLabel lab_lastday = new JLabel("上一天是:");
            // 文本框
            JTextField txt_year = new JTextField();
            JTextField txt_month = new JTextField();
            JTextField txt_day = new JTextField();
            JTextField txt_weekday = new JTextField();
            JTextField txt_nextday = new JTextField();
            JTextField txt_lastday = new JTextField();
            // 按钮
            JButton btn_submit = new JButton("Ok");
            JButton btn_cancel = new JButton("Cancel");
            // 将组件添加到frame
            frame.add(lab_prompt);
            frame.add(lab_year);
            frame.add(lab_month);
            frame.add(lab_day);
            frame.add(lab_weekday);
            frame.add(lab_nextday);
            frame.add(lab_lastday);
            frame.add(txt_year);
            frame.add(txt_month);
            frame.add(txt_day);
            frame.add(txt_weekday);
            frame.add(txt_nextday);
            frame.add(txt_lastday);
            frame.add(btn_submit);
            frame.add(btn_cancel);
    
            // 为标签组件设置大小位置
            lab_prompt.setBounds(20, 20, 500, 30);
            lab_year.setBounds(40, 60, 50, 30);
            lab_month.setBounds(160, 60, 50, 30);
            lab_day.setBounds(270, 60, 50, 30);
            lab_weekday.setBounds(40, 160, 100, 30);
            lab_nextday.setBounds(40, 210, 150, 30);
            lab_lastday.setBounds(40, 260, 150, 30);
            // 为文本框组件设置大小位置
            txt_year.setBounds(60, 60, 70, 30);
            txt_month.setBounds(180, 60, 70, 30);
            txt_day.setBounds(290, 60, 70, 30);
            txt_weekday.setBounds(120, 160, 100, 30);
            txt_weekday.setEnabled(false);
            txt_nextday.setBounds(110, 210, 150, 30);
            txt_nextday.setEnabled(false);
            txt_lastday.setBounds(110, 260, 150, 30);
            txt_lastday.setEnabled(false);
            // 为按钮组件设置大小位置
            btn_submit.setBounds(120, 110, 80, 30);
            btn_cancel.setBounds(240, 110, 80, 30);
            // 设置窗口的位置和大小
            frame.setBounds(500, 200, 430, 370);
            frame.setVisible(true);
    
            // 按钮事件
            // OK按钮
            btn_submit.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (e.getSource() == btn_submit) {
                        String y, m, d;
                        y = txt_year.getText().toString();
                        m = txt_month.getText().toString();
                        d = txt_day.getText().toString();
    
                        // 用正则表达式判断是否为数字
                        if (y.matches("[0-9]+") && m.matches("[0-9]+") && d.matches("[0-9]+")) {
                            int year = Integer.parseInt(txt_year.getText());
                            int month = Integer.parseInt(txt_month.getText());
                            int day = Integer.parseInt(txt_day.getText());
                            if (NextDate.checkDate(year, month, day)) {
                                // 下一天
                                txt_nextday.setText(NextDate.nextDate(month, day, year));
                                // 上一天
                                txt_lastday.setText(NextDate.lastDay(month, day, year));
                                // 周几
                                txt_weekday.setText(NextDate.weekDay(month, day, year));
                            } else {
                                JOptionPane.showMessageDialog(null, "输入有误,请重请输入");
                                txt_year.setText("");
                                txt_month.setText("");
                                txt_day.setText("");
                            }
                        } else {
                            JOptionPane.showMessageDialog(null, "输入有误,请重请输入");
                            txt_year.setText("");
                            txt_month.setText("");
                            txt_day.setText("");
                        }
                    }
                }
            });
            // Cancel按钮
            btn_cancel.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (e.getSource() == btn_cancel) {
                        txt_year.setText("");
                        txt_month.setText("");
                        txt_day.setText("");
                        txt_weekday.setText("");
                        txt_nextday.setText("");
                        txt_lastday.setText("");
                    }
    
                }
            });
        }
    
    }
    View Code
  • 相关阅读:
    设计模式 创建型 抽象工厂
    mysql 案例 ~ 分析执行完的大事务
    mysql 查询优化案例汇总
    mysql 原理 ~ innodb恢复机制
    mysql 原理~ 乐观锁和悲观锁
    mysql 原理 ~ 常规锁
    mysql 5.7 ~ 新特性
    mysql 原理 ~ checkpoint
    mysql原理~undo管理
    mysql原理~undo
  • 原文地址:https://www.cnblogs.com/xwhisper/p/6794442.html
Copyright © 2011-2022 走看看