第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;
    }
}

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("");
                }

            }
        });
    }

}

时间: 2024-12-10 23:15:51

第4次作业类测试代码+101+谢艳敏的相关文章

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

实验二+101+谢艳敏

一.实验目的 掌握基于覆盖理论与基本路径的基本白盒测试方法和实践 二.实验要求 运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结. 三.实验内容 根据各位同学自己的被测程序,分别作出各类白盒测试技术的用例设计和相应的Junit脚本. 所有的覆盖的技术:语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.组合覆盖.路径覆盖,基本路径测试方法. 包括的内容有: 1) 被测源代码: 1 public class GetData { 2 3 public s

第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

第4次作业类测试代码_078_刘玲志

1.类图: 2.输入合法时,计算结果: 输入不合法时(输入为空,不为数字,长度不在int长度范围内等),提示输入有误,并清空输入框,重新输入: 3.代码: 1 package Practiseone; 2 3 import java.awt.EventQueue; 4 import java.awt.Font; 5 import java.awt.Frame; 6 import java.awt.event.ActionEvent; 7 import java.awt.event.ActionL