实验目的
通过编程和上机实验,掌握类和构造方法的定义及创建对象的方法,掌握类的封装及继承原则,正确使用重载和覆盖等多态概念设计可复用方法,熟悉包、接口的使用方法,掌握面向对象的程序设计方法。
实验内容
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课程实验成绩:")