Java程序设计 实验二 面向对象程序设计

实验目的

	通过编程和上机实验,掌握类和构造方法的定义及创建对象的方法,掌握类的封装及继承原则,正确使用重载和覆盖等多态概念设计可复用方法,熟悉包、接口的使用方法,掌握面向对象的程序设计方法。

实验内容

1、编写MyDate类,完善上次实验中的人员信息录入,实现日期合法性判断,包括大小月和闰年。

package shiyaner;
import java.util.*;
class Student {
   
	   private String name;
	   private MyDate mydate;
	   private int age;
	   private double score;
	   public Student(String n,int y,int m,int d,double s)
	   {
   
		  mydate=new MyDate(y, m, d);
	      name=n;
	      score=s;
	      Calendar calendar = Calendar.getInstance();
	      if(mydate.year<=calendar.get(Calendar.YEAR))
	      {
   
	    	  if(mydate.month<calendar.get(Calendar.MONTH)+1)
	    	  {
   	    
	    		  age=2021-mydate.year;	 		  
	    	  }
	    	  else if(mydate.month>calendar.get(Calendar.MONTH)+1)
	    	  {
   
	    		  age=2020-mydate.year;
	    	  }
	    	  else
	    	  {
   
	    		  if(mydate.day<=calendar.get(Calendar.DATE))
	    		  {
   
	    			  age=2021-mydate.year;  
	    		  }
	    		  else age=2020-mydate.year;
	    	  }
	      }
	      else age=-1;
	    }
	   public int getAge()
	   {
   
		   return age;
	   }	 
	   public String toString()
	   {
   
		   return "姓名:"+name+"\t年龄:"+age+"\t出生日期:"+mydate.year+"年"+mydate.month+"月"+mydate.day+"日\tJAVA课程成绩:"+score;
	   }
}

class MyDate {
   
	int year;
	int month;
	int day;	
	public MyDate(int y,int m,int d)
	{
   
		year=y;
		month=m;
		day=d;
	}
	
	public boolean isVaildYear(int year)
	{
   
		if(year<0||year>2020)return false;
		else return true;
	}	
	public boolean isVaildMonth(int month)
	{
   
		if(month<1||month>12)return false;
		else return true;
	}
	public boolean isVaildDay(int year,int month,int day)
	{
   
		if(day<1||day>theDaysOfMonth(year,month))return false;
		else return true;
	}
	public boolean isLeapYear(int year)
	{
   
		if(year%400==0||year%100!=0&&year%4==0)return true;
		else return false;
	}
	public int theDaysOfMonth(int year,int month)
	{
   
		switch(month) {
   
		case 1:case 3:case 5:case 7:case 8:case 10: case 12:
			return 31;
		case 4:case 6:case 9:case 11:
			return 30;
		case 2:
			if(isLeapYear(year))return 29;
			else return 28;
		default: return -1;
		}
	}
	public boolean isVaildDate(int year,int month,int day)
	{
   
		if(isVaildYear(year)&&isVaildMonth(month)&&isVaildDay(year,month,day))		
			return true;					
		else 
			return false;		
	}
}
public class shiyaner_yi {
   
		public static void main(String[] args){
   
			Student stu[]=new Student[999];
			MyDate md[]=new MyDate[999];
			double sc[]=new double[999];//记录成绩
			double sa[]=new double[999];//记录年龄
			double sumsc=0,sumsa=0;
			@SuppressWarnings("resource")
			Scanner ss=new Scanner(System.in);
			int i=0;
			while(true)
			{
   
				System.out.println("请输入学生的姓名、出生年月日和java课程实验成绩:")
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.编写MyDate.java 2.该有如下构造方法 2.1 无参数构造方法public MyDate(),以当前的系统时间构造MyDate对象 2.2 public MyDate(int year, int month, int day), 以指定的年日构造MyDate对象 3.该有如下属性 3.1 private int year ;//年 3.2 private int month; // 3.3 private int day; //日 4.该有如下方法 4.1 public String after(int day); //返回当前对象代表的日期之后day天的日期,比如当前对象是2008-8-8,调用after(5)以后,应该返回2008-8-13,格式可自定义 4.2 public String before(int day); //返回当前对象代表的日期之前day天的日期,比如当前对象是2008-8-8,调用before(5)以后,应该返回2008-8-3,格式可自定义 4.3 public void setYear(int year); //设置年为指定值year 4.4 public void setMonth(int month); //设置为指定值month 4.5 public void setDay(int day); //设置日为指定值day 4.6 public int getYear(); //返回当前对象的年 4.7 public int getMonth(); //返回当前对象的 4.8 public int getDay(); //返回当前对象的日 4.9 public void set (int year, int month, int day); //设置年、、日为指定的值year、month、day 4.10 public String toString();//以字符串形式返回当前对象的年日,例如2008年0808日,格式可自定义 4.11 public boolean equals(MyDate mydate);//当前对象与另一个对象比较,如果两个对象的年日均相等,则返回true,反之返回false 5.编写TestMyDate.java,在main方法对MyDate的各个方法进行测试 6.按照编程规范为MyDate.java编写规范的代码 7.按照java doc API的要求,对代码编写规范的注释,然后利用javadoc.exe命令生成MyDate.java的API doc 8.撰写上机报告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值