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

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

界面操作说明补充:

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

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

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)

类图:

主程序:

package theday;
    import java.util.Calendar;
    import java.util.Scanner;
    public class Date {
        public static void main(String[] args){

            System.out.print("请输入日期");
            Scanner input = new Scanner(System.in);
            int year = input.nextInt();
            int month = input.nextInt();
            int day = input.nextInt();
            System.out.println(NextDay(year,month,day));
            System.out.println(WeekDay(month,day, year));
            System.out.println(LastDay(month,day, year));
        }

        public static boolean LeapYear(int year)
         {
                if((year%4==0&&year%100!=0)||(year%400==0)){
                    //是闰年
                    return true;
                }
                return false;
            }

        public static String NextDay(int year, int month, int day){

             if(1912 <= year && year <= 2050)
                {
                    //判断月份是否超出范围
                    if(1 <= month && month <= 12)
                    {
                        //大月判断,每个月只有31天
                        if(month == 1||month == 3||month == 5||month == 7||month == 8||month ==10||month == 12)
                        {
                            if(1 <= day && day < 30)
                                return year+"年"+month+"月"+(day+1)+"日";
                            else if(day == 31)
                            {
                                if(month == 12)
                                    return (year+1)+"年1月1日";
                                else
                                    return year+"年"+(month+1)+"月1日";
                            }
                            else
                                return "日期超出范围";
                        }
                        //小月判断,每个月只有30天
                        else if(month == 4||month == 6||month == 9||month == 11)
                        {
                            if(1 <= day && day < 29)
                                return year+"年"+month+"月"+(day+1)+"日";
                            if(day == 30)
                                return year+"年"+(month+1)+"月"+"1日";
                            else
                                return "日期超出范围";
                        }

                        else
                        {
                            if(LeapYear(year))
                            {
                                if(1 <= day && day < 28)
                                    return year+"年"+month+"月"+(day+1)+"日";
                                if(day == 29)
                                    return year+"年"+(month+1)+"月"+"1日";
                                else
                                    return "日期超出范围";
                            }
                            else
                            {
                                if(1 <= day && day < 27)
                                    return year+"年"+month+"月"+(day+1)+"日";
                                if(day == 28)
                                    return year+"年"+(month+1)+"月"+"1日";
                                else
                                    return "日期超出范围";
                            }
                        }

                    }
                    else
                        return "日期超出范围";
                }
                else
                {
                    return "日期超出范围";
                }    

        }

        public static  int WeekDay(int month,int day,int year){
             if(month==1){
                    month=13;
                    year=year-1;
                }
             if(month==2){
                    month=14;
                    year=year-1;
                }
             int h = (int) (day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1)%7;
              switch (h)
                {
                case 0:
                    return 7;
                case 1:
                    return 1;

                case 2:
                    return 2;

                case 3:
                    return 3;
                case 4:
                    return 4;
                case 5:
                    return 5;
                case 6:
                    return 6;

                }
              return 0;
                }

        public static String LastDay(int year,int month,int day){
             boolean leapYear = LeapYear(year);
                String r = "";
                if(day < 1 || day > 31) {
                    r = "日期超出范围";
                } else {
                    if(month != 1 && month != 3){
                        if(day == 1) {
                            r = year + "年" + (month-1) + "月30日";
                        } else {
                            r = year + "年" + month + "月" + (day-1) + "日";
                        }
                    } else {
                        switch(month) {
                            case 1:
                                r = (year-1) + "年12月31日";
                                break;
                            case 3:
                                if(leapYear) {
                                    r = year + "年" + (month-1) + "月29日";
                                } else {
                                    r = year + "年" + (month-1) + "月28日";
                                }
                                break;
                        }
                    }

                }
                if(month != 2){
                    if(day < 1 || day > 30) {
                        r = "日期超出范围";
                    } else {
                        if(day == 1) {
                            r = year + "年" + (month-1) + "月31日";
                        } else {
                            r = year + "年" + month + "月" + (day-1) + "日";
                        }
                    }
                } else if (month == 2 && LeapYear(year)){
                    if(day < 1 || day > 29) {
                        r = "日期超出范围";
                    } else {
                        if(day == 1) {
                            r = year + "年" + (month-1) + "月31日";
                        } else {
                            r = year + "年" + month + "月" + (day-1) + "日";
                        }
                    }
                } else {
                    if(day < 1 || day > 28) {
                        r = "日期超出范围";
                    } else {
                        if(day == 1) {
                            r = year + "年" + (month-1) + "月31日";
                        } else {
                            r = year + "年" + month + "月" + (day-1) + "日";
                        }
                    }
                }
                return r;
            }
    }

程序结果:

界面设计代码:

package theday;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;

import theday.Date;

public class frame extends JFrame {

    private JPanel contentPane;
    private JTextField year;
    private JTextField month;
    private JTextField day;
    private JTextField textField_3;
    private JTextField textField_4;
    private JTextField textField_5;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    frame frame = new frame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public frame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 510, 417);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);

        JButton btnOk = new JButton("OK");
        btnOk.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                    String Year = year.getText();
                    String Month = month.getText();
                    String Day =  day.getText();
                    int month = 0, year = 0, day = 0;
                    year = Integer.parseInt(Year);
                    month = Integer.parseInt(Month);
                    day = Integer.parseInt(Day);
                    int week = Date.WeekDay(month, day, year);
                    String Next = Date.NextDay(year, month, day);
                    String last = Date.LastDay(year, month, day);
                    textField_3.setText(Integer.toString(week));
                    textField_4.setText(last);
                    textField_5.setText(Next);
            }

        });

        JButton btnNewButton = new JButton("Cancle");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                year.setText("");
                month.setText("");
                day.setText("");
                textField_3.setText("");
                textField_4.setText("");
                textField_5.setText("");
            }
        });

        JLabel label = new JLabel("\u5E74");

        JLabel label_1 = new JLabel("\u6708");

        JLabel label_2 = new JLabel("\u65E5");

        JLabel label_3 = new JLabel("\u8FD9\u5929\u662F\u661F\u671F\uFF1A");

        JLabel label_4 = new JLabel("\u4E0A\u4E00\u5929\u662F\uFF1A");

        JLabel label_5 = new JLabel("\u4E0B\u4E00\u5929\u662F\uFF1A");

        year = new JTextField();
        year.setColumns(10);

        month = new JTextField();
        month.setColumns(10);

        day = new JTextField();
        day.setColumns(10);

        textField_3 = new JTextField();
        textField_3.setColumns(10);

        textField_4 = new JTextField();
        textField_4.setColumns(10);

        textField_5 = new JTextField();
        textField_5.setColumns(10);
        GroupLayout gl_contentPane = new GroupLayout(contentPane);
        gl_contentPane.setHorizontalGroup(
            gl_contentPane.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_contentPane.createSequentialGroup()
                    .addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING)
                        .addGroup(gl_contentPane.createSequentialGroup()
                            .addGap(38)
                            .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
                                .addGroup(gl_contentPane.createSequentialGroup()
                                    .addPreferredGap(ComponentPlacement.RELATED)
                                    .addComponent(year, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(ComponentPlacement.RELATED)
                                    .addComponent(label)
                                    .addPreferredGap(ComponentPlacement.RELATED)
                                    .addComponent(month, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(ComponentPlacement.RELATED)
                                    .addComponent(label_1)
                                    .addPreferredGap(ComponentPlacement.RELATED)
                                    .addComponent(day, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(ComponentPlacement.UNRELATED)
                                    .addComponent(label_2))
                                .addGroup(gl_contentPane.createSequentialGroup()
                                    .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
                                        .addComponent(label_4)
                                        .addComponent(label_3)
                                        .addComponent(label_5))
                                    .addPreferredGap(ComponentPlacement.RELATED)
                                    .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING, false)
                                        .addComponent(textField_3, GroupLayout.PREFERRED_SIZE, 148, GroupLayout.PREFERRED_SIZE)
                                        .addComponent(textField_4, 162, 162, Short.MAX_VALUE)
                                        .addComponent(textField_5)))))
                        .addGroup(Alignment.LEADING, gl_contentPane.createSequentialGroup()
                            .addGap(79)
                            .addComponent(btnOk, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE)
                            .addGap(40)
                            .addComponent(btnNewButton)))
                    .addGap(197))
        );
        gl_contentPane.setVerticalGroup(
            gl_contentPane.createParallelGroup(Alignment.TRAILING)
                .addGroup(gl_contentPane.createSequentialGroup()
                    .addGap(46)
                    .addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
                        .addComponent(year, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(label)
                        .addComponent(month, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(label_1)
                        .addComponent(day, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(label_2))
                    .addGap(33)
                    .addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
                        .addComponent(label_3)
                        .addComponent(textField_3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(ComponentPlacement.UNRELATED)
                    .addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
                        .addComponent(label_4)
                        .addComponent(textField_4, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(ComponentPlacement.UNRELATED)
                    .addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
                        .addComponent(label_5)
                        .addComponent(textField_5, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addGap(18)
                    .addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
                        .addComponent(btnOk)
                        .addComponent(btnNewButton))
                    .addContainerGap())
        );
        contentPane.setLayout(gl_contentPane);
    }
}

总结

第一次接触JAVA的swing,艰难的编写完了这个界面。并按照要求增加了个别方法。过程是痛苦的,收获是巨大的。

时间: 2024-10-13 00:12:27

第4次作业类测试代码+105032014125+洪诗育的相关文章

第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次作业类测试代码+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) 

第4次作业类测试代码+019+李悦洲

类图: 代码: package swingDesign; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JLabel; import java.awt.Font; import javax.swing.JTextField; import javax.swing.JButton;