帮忙写个程序吧.关于类与对象的.1.定义日期类型myDate.要求有以下面成员:1)要求自定义构造函数,实现日期的设置;(2)可以重新设置日期;(3)可以单独修改年或月或日,要求实现这些

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 01:36:31

帮忙写个程序吧.关于类与对象的.1.定义日期类型myDate.要求有以下面成员:1)要求自定义构造函数,实现日期的设置;(2)可以重新设置日期;(3)可以单独修改年或月或日,要求实现这些
帮忙写个程序吧.关于类与对象的.
1.定义日期类型myDate.要求有以下面成员:1)要求自定义构造函数,实现日期的设置;(2)可以重新设置日期;(3)可以单独修改年或月或日,要求实现这些功能的成员函数;(4)要求对当前日期对象有增加N天或减少N天的操作(N不超过28天);对于不满足要求的天数,要求给出提示并保留原来的数据不被修改.(5)日期的输出格式“XXXX年XX月XX日”.(注:对于要求修改成员变量的函数都要求验证数据的有效性;当数据无效时要求保留原数据,且给出不成功的提示.)
为了统一格式,也方便同学们更有针对性的实现
Date类的声明为:
class myDate
{
private:int year;
int month;
int day;
public:myDate(int newyear,int newmonth,int newday);
bool setDate(int newyear,int newmonth,int newday);
bool setyear(int newyear);
int getyear();
bool setmonth(int newmonth);
int getmonth();
bool setday(int newday);
int getday();
bool increaseday(int n);
bool reduceday(int n);
void display();
};

帮忙写个程序吧.关于类与对象的.1.定义日期类型myDate.要求有以下面成员:1)要求自定义构造函数,实现日期的设置;(2)可以重新设置日期;(3)可以单独修改年或月或日,要求实现这些
//包含一个测试类
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
class MyDate
{
private int year;
private int month;
private int day;
public MyDate(int newyear,int newmonth,int newday){
GregorianCalendar cal = new GregorianCalendar();
cal.set(newyear,newmonth-1,newday);
SimpleDateFormat formaty = new SimpleDateFormat("yyyy");
SimpleDateFormat formatm = new SimpleDateFormat("M");
if(Integer.parseInt(formaty.format(cal.getTime())) == newyear){
if(Integer.parseInt(formatm.format(cal.getTime())) == newmonth){
setDate(newyear,newmonth,newday);
}else
System.out.println("输入日期不正确!");
}else
System.out.println("输入月份不正确!");
}
boolean setDate(int newyear,int newmonth,int newday){
setyear(newyear);
setmonth(newmonth);
setday(newday);
return true;
}
boolean setyear(int newyear){
this.year = newyear;
return true;
}
int getyear(){
return year;
}
boolean setmonth(int newmonth){
this.month = newmonth;
return true;
}
int getmonth(){
return month;
}
boolean setday(int newday){
this.day = newday;
return true;
}
int getday(){
return day;
}
boolean increaseday(int n){
if(n 0){
GregorianCalendar cal = new GregorianCalendar();
cal.set(getyear(),getmonth()-1,getday());
cal.add(GregorianCalendar.DATE,n);
SimpleDateFormat formaty = new SimpleDateFormat("yyyy");
SimpleDateFormat formatm = new SimpleDateFormat("M");
SimpleDateFormat formatd = new SimpleDateFormat("d");
setDate(Integer.parseInt(formaty.format(cal.getTime())),
Integer.parseInt(formatm.format(cal.getTime())),
Integer.parseInt(formatd.format(cal.getTime())));
}else
System.out.println("你输入的天数超出范围,返回当前日期:");
return true;
}
boolean reduceday(int n){
if(n 0){
GregorianCalendar cal = new GregorianCalendar();
cal.set(getyear(),getmonth()-1,getday());
cal.add(GregorianCalendar.DATE,-n);
SimpleDateFormat formaty = new SimpleDateFormat("yyyy");
SimpleDateFormat formatm = new SimpleDateFormat("M");
SimpleDateFormat formatd = new SimpleDateFormat("d");
setDate(Integer.parseInt(formaty.format(cal.getTime())),
Integer.parseInt(formatm.format(cal.getTime())),
Integer.parseInt(formatd.format(cal.getTime())));
}else
System.out.println("你输入的天数超出范围,返回当前日期:");
return true;
}
void display(){
System.out.println(getyear()+"年"+getmonth()+"月"+getday()+"日");
}
}
//测试类
public class TestDate{
public static void main(String[] args){
MyDate md = new MyDate(2011,3,3);
System.out.print("当前日期:");
md.display();
System.out.print("增加29天:");
md.increaseday(29);
md.display();
System.out.print("增加28天:");
md.increaseday(28);
md.display();
MyDate md1 = new MyDate(2011,3,3);
System.out.print("当前日期:");
md1.display();
System.out.print("减少29天:");
md1.reduceday(29);
md1.display();
System.out.print("减少28天:");
md1.reduceday(28);
md1.display();
System.out.println("---------------------");
System.out.println("数据正确性验证:");
MyDate md2 = new MyDate(2011,2,30);
MyDate md3 = new MyDate(2011,22,30);
}
}
运行结果:
当前日期:2011年3月3日
增加29天:你输入的天数超出范围,返回当前日期:
2011年3月3日
增加28天:2011年3月31日
当前日期:2011年3月3日
减少29天:你输入的天数超出范围,返回当前日期:
2011年3月3日
减少28天:2011年2月3日
---------------------
数据正确性验证:
输入日期不正确!
输入月份不正确!