第4次作业类测试代码+105032014065+方绎杰

一、类图

二、代码

Date类:

package examOne;

import java.util.Scanner;

import snippet.Snippet;

public class Date {
	String ia, ib, ic;
	int y, m, d;
	private boolean Read(){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年份");
		ia = sc.nextLine();
		if( "-1".equals(ia) ){
			sc.close();
			return false;
		}
		System.out.println("请输入月份");
		ib = sc.nextLine();
		System.out.println("请输入日期");
		ic = sc.nextLine();
		return true;
	}

	public void getInputString( String a, String b, String c ){
		ia = a ;
		ib = b ;
		ic = c ;
	}

	public boolean isLeagal(){
		if( isInputInteger() && isInRange() ){
			return true;
		}
		return false;
	}

	private boolean isInputInteger(){
		try{
			y = Integer.valueOf(ia).intValue();
			m = Integer.valueOf(ib).intValue();
			d = Integer.valueOf(ic).intValue();
			return true;
		}
		catch( Exception e){
			return false;
		}
	}

	private boolean isInRange(){
		if( m < 1 || m > 12 ){
			//System.out.println("月份超出范围");
			return false;
		}
		if( d < 1  || d > 31 ){
			//System.out.println("日期超出范围");
			return false;
		}
		if( y < 1912 || y > 2050 ){
			//System.out.println("年份超出范围");
			return false;
		}
		return true;
	}

	private int isLeapYear(){
		if( ( y % 4 == 0 && y % 100 != 0 ) || ( y % 400 == 0 ) ){
			return 1;
		}
		return 0;
	}

	private boolean EndOfMouth( int flg ){
		if( ( m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12 ) && d == 31 ){
	        return true;
	    }
	    if( m == 2 && d == (28 + flg) ){
	        return true;
	    }
	    if( ( m == 4 || m == 6 || m == 9 || m == 11 ) && d == 30 ){
	        return true;
	    }
	    return false;
	}

	private int getMouthDay( int x ){
		if( ( x == 1 || x == 3 || x == 5 || x == 7 || x == 8 || x == 10 || x == 12 ) ){
			return 31 ;
		}
		else if(( x == 4 || x == 6 || x == 9 || x == 11 )){
			return 30 ;
		}
		else if( x == 2 && isLeapYear() == 1 ){
			return 29 ;
		}
		else{
			return 28 ;
		}
	}
	private String NextDate(){
		int ny, nm, nd ;
		ny = y;
		nm = m;
		nd = d;
		int tag = 0;
		if( EndOfMouth( isLeapYear() ) ){
			tag = 1;
		}
		if( nm == 12 && tag == 1 ){
			ny++;
			nm = 1;
			nd = 1;
		}
		else if( tag == 1 ){
			nm++;
			nd = 1;
		}
		else{
			nd++;
		}
		String ret = ny + "年" + nm + "月" + nd + "日";
		return ret;
	}

	private String PreDate(){
		int ny, nm, nd ;
		ny = y;
		nm = m;
		nd = d;
		int tag = 0 ;
		if( nd == 1 ){
			tag = 1 ;
		}
		if( tag == 1 && nm == 1 ){
			ny-- ;
			nm = 12 ;
			nd = 31 ;
		}
		else if( tag == 1 ){
			nm--;
			nd = getMouthDay( nm );
		}
		else {
			--nd ;
		}
		String ret = ny + "年" + nm + "月" + nd + "日";
		return ret;
	}

	private String Week(){
		if( m == 1 || m == 2 ){
			m += 12 ;
			y--;
		}
		int ans = ( d + 2*m + 3*( m + 1 )/5 + y + y/4 - y/100 + y/400 ) % 7;
		ans++ ;
		if( ans == 1 ){
			return "一";
		}
		else if( ans == 2 ){
			return "二" ;
		}
		else if( ans == 3 ){
			return "三";
		}
		else if( ans == 4 ){
			return "四";
		}
		else if( ans == 5 ){
			return "五";
		}
		else if( ans == 6 ){
			return "六";
		}
		else{
			return "七";
		}
	}

	public String GetNextDate(){
		return NextDate();
	}
	public String GetPreDate(){
		return PreDate();
	}
	public String GetWeek(){
		return Week() ;
	}
	public static void main( String args[]){
		Snippet snt = new Snippet();
		snt.drawPicture();
	}
}

 图形类:

package snippet;

import java.awt.Font;
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.JTextField;

import examOne.Date;

public class Snippet {
	private JFrame frame = new JFrame("日期计算程序");
	private JLabel title = new JLabel("请输入需要计算的年月日(1912-2050之间)");
	private JLabel year = new JLabel("年:");
	private JLabel month = new JLabel("月:");
	private JLabel day = new JLabel("日:");
	private JLabel thisWeek = new JLabel("这一天是星期");
	private JLabel nextDay = new JLabel("下一天是:");
	private JLabel prevDay = new JLabel("上一天是:");
	private JTextField t_year = new JTextField();
	private JTextField t_month = new JTextField();
	private JTextField t_day = new JTextField();
	private  JTextField t_thisWeek = new JTextField();
	private JTextField t_nextDay = new JTextField();
	private JTextField t_prevDay = new JTextField();
	private  JButton submit = new JButton("确定");
	private JButton cancel = new JButton("清空");
	private Date date = new Date();
	public void drawPicture() {
	    frame.setLayout(null);
	    submit.addActionListener(new ActionListener() {
	    @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == submit) {
                    String y = t_year.getText();
                    String m = t_month.getText();
                    String d = t_day.getText();
                    date.getInputString( y,m,d );
                    if( date.isLeagal() ){
                    	t_nextDay.setText(date.GetNextDate());
                    	t_prevDay.setText(date.GetPreDate());
                    	t_thisWeek.setText(date.GetWeek());
                    }
                    else{
                    	t_nextDay.setText("输入非法!");
                    	t_prevDay.setText("");
                    	t_thisWeek.setText("");
                    }
                }    

            }
        });
        //使用匿名匿名内部类为cancel按钮添加监听事件
        cancel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //清空输入的数据
                if(e.getSource() == cancel) {
                    t_year.setText("");
                    t_month.setText("");
                    t_day.setText("");
                    t_nextDay.setText("");
                	t_prevDay.setText("");
                	t_thisWeek.setText("");
                }

            }
        });

        /*设置标签位置及大小*/
        Font ft = new Font("黑体",Font.BOLD,24);//设置显示字体
        title.setFont(ft);
        title.setBounds(62, 62, 500, 25);
        year.setFont(ft);
        year.setBounds(80, 124, 50, 25);
        month.setFont(ft);
        month.setBounds(230, 124, 50, 25);
        day.setFont(ft);
        day.setBounds(380, 124, 50, 25);
        thisWeek.setFont(ft);
        thisWeek.setBounds(62, 248, 200, 25);
        prevDay.setFont(ft);
        prevDay.setBounds(62, 372, 150, 25);
        nextDay.setFont(ft);
        nextDay.setBounds(62, 310, 150, 25);
        /*设置文字位置及大小*/
        t_year.setBounds(130, 124, 50, 25);
        t_month.setBounds(280, 124, 50, 25);
        t_day.setBounds(430, 124, 50, 25);
        t_thisWeek.setBounds(230, 248, 50, 25);
        t_thisWeek.setFont(ft);
        t_thisWeek.setEnabled(false);//设置为无法输入
        t_nextDay.setBounds(180, 310, 200, 25);
        t_nextDay.setFont(ft);
        t_nextDay.setEnabled(false);//设置为无法输入
        t_prevDay.setBounds(180, 372, 200, 25);
        t_prevDay.setFont(ft);
        t_prevDay.setEnabled(false);//设置为无法输入
        /*设置按钮位置及大小*/
        submit.setBounds(180, 187, 62, 31);
        cancel.setBounds(320, 187, 62, 31);
        //把所有组件添加到frame中
        frame.add(title);frame.add(year);frame.add(month);frame.add(day);
        frame.add(thisWeek);frame.add(nextDay);frame.add(prevDay);
        frame.add(t_year);frame.add(t_month);frame.add(t_day);
        frame.add(t_thisWeek);frame.add(t_nextDay);frame.add(t_prevDay);
        frame.add(submit);frame.add(cancel);
        /*设置显示画布大小及显示的位置*/
        frame.setSize(600, 490);
        frame.setLocation(300,300);
        frame.setVisible(true);
	}
}

 三、结果

时间: 2024-10-18 07:29:44

第4次作业类测试代码+105032014065+方绎杰的相关文章

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