第4次作业类测试代码+105032014116+陈洁
1.类图:
2.程序界面:
3.
Date.java
1 package test; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 7 public class Date { 8 public String nextdate(int m,int d,int y){ 9 Calendar calendar = Calendar.getInstance(); 10 calendar.set(Calendar.YEAR, y); 11 calendar.set(Calendar.MONTH, m - 1); 12 calendar.set(Calendar.DATE, d + 1); 13 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); 14 String date=sdf.format(calendar.getTime()); 15 return date; 16 } 17 public String lastDay(int m,int d,int y){ 18 Calendar calendar = Calendar.getInstance(); 19 calendar.set(Calendar.YEAR, y); 20 calendar.set(Calendar.MONTH, m - 1); 21 calendar.set(Calendar.DATE, d -1); 22 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); 23 String date=sdf.format(calendar.getTime()); 24 return date; 25 26 } 27 public int weekDay(int m,int d,int y){ 28 String date=y+"年"+m+"月"+d+"日"; 29 SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日"); 30 Calendar c = Calendar.getInstance(); 31 try { 32 c.setTime(format.parse(date)); 33 } catch (ParseException e) { 34 // TODO 自动生成的 catch 块 35 return 0;//错误提示 36 } 37 38 int weekday = 0; 39 if(c.get(Calendar.DAY_OF_WEEK) == 1){ 40 weekday = 7; 41 }else{ 42 weekday = c.get(Calendar.DAY_OF_WEEK) - 1; 43 } 44 return weekday; 45 } 46 public boolean isDate(String date) { 47 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"); 48 dateFormat.setLenient(false); 49 try { 50 dateFormat.parse(date.trim()); 51 } 52 catch (ParseException pe) { 53 return false; 54 } 55 return true; 56 } 57 }
Frame.java
1 package test; 2 3 import java.awt.Font; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.awt.event.WindowAdapter; 7 import java.awt.event.WindowEvent; 8 9 import javax.swing.JButton; 10 import javax.swing.JFrame; 11 import javax.swing.JLabel; 12 import javax.swing.JOptionPane; 13 import javax.swing.JTextField; 14 15 public class Frame { 16 17 Date date=new Date(); 18 19 JFrame frame = new JFrame("日期计算程序"); 20 JLabel title = new JLabel("请输入年月日"); 21 JLabel l_year = new JLabel("年:"); 22 JLabel l_month = new JLabel("月:"); 23 JLabel l_day = new JLabel("日:"); 24 JLabel thisWeek = new JLabel("这一天是星期"); 25 JLabel nextDay = new JLabel("下一天是:"); 26 JLabel lastDay = new JLabel("上一天是:"); 27 28 JTextField t_year = new JTextField(); 29 JTextField t_month = new JTextField(); 30 JTextField t_day = new JTextField(); 31 JTextField t_thisDay = new JTextField(); 32 JTextField t_nextDay = new JTextField(); 33 JTextField t_lastDay = new JTextField(); 34 JButton b_OK = new JButton("OK"); 35 JButton b_Cancel = new JButton("Cancel"); 36 public Frame(){ 37 frame.setLayout(null); 38 Font ft = new Font("微软雅黑", Font.PLAIN, 18);// 设置显示字体 39 title.setFont(ft); 40 title.setBounds(62, 62, 500, 25); 41 l_year.setFont(ft); 42 l_year.setBounds(80, 124, 50, 25); 43 l_month.setFont(ft); 44 l_month.setBounds(230, 124, 50, 25); 45 l_day.setFont(ft); 46 l_day.setBounds(380, 124, 50, 25); 47 thisWeek.setFont(ft); 48 thisWeek.setBounds(62, 248, 200, 25); 49 lastDay.setFont(ft); 50 lastDay.setBounds(62, 372, 150, 25); 51 nextDay.setFont(ft); 52 nextDay.setBounds(62, 310, 150, 25); 53 54 55 b_OK.addActionListener(new ActionListener() { 56 @Override 57 public void actionPerformed(ActionEvent e) { 58 // TODO 自动生成的方法存根 59 int year=0,month=0,day=0; 60 try{ 61 year=Integer.parseInt(t_year.getText()); 62 month=Integer.parseInt(t_month.getText()); 63 day=Integer.parseInt(t_day.getText()); 64 }catch(Exception ex){ 65 JOptionPane.showMessageDialog(null, "输入有误,请重新输入!"); 66 return; 67 } 68 if(year>2050||year<1912||month>12||month<1||day>31||day<1){ 69 JOptionPane.showMessageDialog(null, "输入有误,请重新输入!"); 70 return; 71 } 72 if(!date.isDate(year+"年"+month+"月"+day+"日")){ 73 JOptionPane.showMessageDialog(null, "日期不正确!"); 74 return; 75 } 76 t_nextDay.setText(date.nextdate(month, day, year)); 77 t_lastDay.setText(date.lastDay(month, day, year)); 78 if(date.weekDay(month, day, year)!=0){ 79 t_thisDay.setText(""+date.weekDay(month, day, year)); 80 } 81 82 } 83 84 }); 85 b_Cancel.addActionListener(new ActionListener() { 86 87 @Override 88 public void actionPerformed(ActionEvent e) { 89 // TODO 自动生成的方法存根 90 91 t_day.setText(""); 92 t_month.setText(""); 93 t_year.setText(""); 94 t_nextDay.setText(""); 95 t_lastDay.setText(""); 96 t_thisDay.setText(""); 97 // System.exit(1); 98 } 99 }); 100 frame.addWindowListener(new WindowAdapter() { 101 public void windowClosing(WindowEvent e) { 102 System.exit(1); 103 } 104 }); 105 t_year.setBounds(130, 124, 50, 25); 106 t_month.setBounds(280, 124, 50, 25); 107 t_day.setBounds(430, 124, 50, 25); 108 t_thisDay.setBounds(180, 245, 100, 25); 109 t_thisDay.setFont(ft); 110 t_thisDay.setEnabled(false); 111 t_nextDay.setBounds(180, 310, 200, 25); 112 t_nextDay.setFont(ft); 113 t_nextDay.setEnabled(false); 114 t_lastDay.setBounds(180, 372, 200, 25); 115 t_lastDay.setFont(ft); 116 t_lastDay.setEnabled(false); 117 118 b_OK.setBounds(180, 187, 100, 30); 119 b_Cancel.setBounds(320, 187, 100, 30); 120 121 frame.add(title); 122 frame.add(l_year); 123 frame.add(l_month); 124 frame.add(l_day); 125 frame.add(thisWeek); 126 frame.add(nextDay); 127 frame.add(lastDay); 128 frame.add(t_year); 129 frame.add(t_month); 130 frame.add(t_day); 131 frame.add(t_thisDay); 132 frame.add(t_nextDay); 133 frame.add(t_lastDay); 134 frame.add(b_OK); 135 frame.add(b_Cancel); 136 137 frame.setSize(550, 500); 138 frame.setLocation(250, 250); 139 frame.setVisible(true); 140 141 } 142 public static void main(String[] args) { 143 new Frame(); 144 } 145 }