博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第4次作业类测试代码+105032014065+方绎杰
阅读量:6578 次
发布时间:2019-06-24

本文共 7377 字,大约阅读时间需要 24 分钟。

一、类图

二、代码

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

 三、结果

转载于:https://www.cnblogs.com/Tichocan/p/6791870.html

你可能感兴趣的文章
阿里巴巴数据分析沙龙 杭州站圆满召开
查看>>
云视频会议如何做到参会人脸识别?
查看>>
选择能达到要求的扫描头
查看>>
C语言模拟实现多态
查看>>
公开课(视频)|聊聊 Http 协议和我们日常工作的关系
查看>>
Linux下安装LoadRunner LoadGenerator
查看>>
Active Directory 相关工具
查看>>
Mpls/××× 解决同时存在相同AS号的问题
查看>>
百度网页搜索首次给出外链数据
查看>>
chrome及safari浏览器实现直接粘贴图片(纯JS)
查看>>
Linux工具集合之aria2-axel-curl-wget用法
查看>>
LAMP
查看>>
NFS服务器配置
查看>>
LVS相关实验总结
查看>>
saltstack-haproxy安装
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
小程序正式上线啦,我们采访了最早内测它的人和首批小程序
查看>>
python中的集合
查看>>
基于Kerberos的Windows Network Authentication
查看>>