代码怎样实现用出生日期算年龄并和其他信息一起输出呢,以及析构函数和Number属性呢
【问题描述】 请问
定义一个Student类,继承Person类,该类具有数据成员_No, _Score, _Birthday, _Number及属性No, Score,重写GetAge(),由出生日期计算而来,Number属性以计算存在于系统中学生的人数,每创建一个学生对象,学生人数加1, 每析构一个对象,学生人数减1。另外该类还具有一个Print方法,要求按“Number:No,Name, Gender,Age,Score”格式输出。
internal class Program
{
static void Main(string[] args)
{
DateTime date1 = new DateTime(2001, 8, 9);
Student s1 = new Student(1,0106101,"zhangsan","gentle",19,90.88);
s1.print();
Console.ReadKey();
}
}
class Person
{
///
/// 字段 基本信息
///
private string _Name;
private string _Gender;
public int _Age;
///
/// 属性 名字 性别
///
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
public string Gender
{
get
{
return _Gender;
}
set
{
_Gender = value;
}
}
public virtual int GetAge()//虚方法
{
return _Age;
}
}
class Student: Person
{
///
/// 字段
///
private int _No;
private double _Score;
private DateTime _BirthDate;
private int _Number=0;
public Student (int Number,int No,string Name,string Gender,int BirthDate, double Score)
{
_Number = Number;
_No = No;
}
///
/// 属性
///
public int No
{
get
{
return _No;
}
set
{
_No=value;
}
}
public double Score
{
get
{
return _Score;
}
set
{
_Score=value;
}
}
public int Number//待修改
{
get
{
return _Number ++;
}
set
{
_Number =value;
}
}
public override int GetAge()
{
DateTime now = DateTime.Now;
int age = now.Year - _BirthDate.Year;
if (now.Month < _BirthDate.Month || (now.Month == _BirthDate.Month && now.Day < _BirthDate.Day))
{
age--;
}
_Age = age;
return _Age;
}
public void print()//Number:No,
{
Console.WriteLine("{0}:, {1}, {2}, {3}, {4}, {5}, {6}", Number, No, Name, Gender,_Age,Score);
}
}
}
internal class Program
{
static void Main(string[] args)
{
DateTime date1 = new DateTime(2001, 8, 9);
Student s1 = new Student(0106101, "zhangsan", "gentle", date1, 90.88);
s1.print();
Student s2 = new Student(0106102, "李四", "gentle", new DateTime(2000, 3, 12), 99.88);
s2.print();
s1 = new Student(0106103, "王五", "tttt", new DateTime(2002, 12, 2), 80.88);
s1.print();
Console.ReadKey();
}
}
class Person
{
///
/// 字段 基本信息
///
private string _Name;
private string _Gender;
protected int _Age;
///
/// 属性 名字 性别
///
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
public string Gender
{
get
{
return _Gender;
}
set
{
_Gender = value;
}
}
public virtual int GetAge()//虚方法
{
return _Age;
}
public Person(string Name = "", string Gender = "")
{
_Name = Name;
_Gender = Gender;
_Age = 0;
}
}
class Student : Person
{
///
/// 字段
///
private int _No;
private double _Score;
private DateTime _BirthDate;
private static int _Number = 0;
public Student()
{
_Number++;
}
~Student()
{
if (_Number > 0) _Number--;
}
public Student(int No, string Name, string Gender, DateTime BirthDate, double Score) : base(Name, Gender)
{
_Number++; //_Number = Number;
_No = No;
_BirthDate = BirthDate;
_Score = Score;
_Age = GetAge();
}
///
/// 属性
///
public int No
{
get
{
return _No;
}
set
{
_No = value;
}
}
public double Score
{
get
{
return _Score;
}
set
{
_Score = value;
}
}
public static int Number//待修改
{
get
{
return _Number;
}
// set
// {
// _Number = value;
// }
}
public override int GetAge()
{
DateTime now = DateTime.Now;
int age = now.Year - _BirthDate.Year;
if (now.Month < _BirthDate.Month || (now.Month == _BirthDate.Month && now.Day < _BirthDate.Day))
{
age--;
}
_Age = age;
return _Age;
}
public void print()//Number:No,
{
Console.WriteLine("{0}:, {1}, {2}, {3}, {4}, {5}", _Number, _No, base.Name, base.Gender, base._Age, _Score);
}
}
internal class Program
{
static void Main(string[] args)
{
DateTime date1 = new DateTime(2001, 8, 9);
Student s1 = new Student(0106101, "zhangsan", "gentle", date1, 90.88);
s1.print();
Student s2 = new Student(0106102, "李四", "gentle", new DateTime(2000, 3, 12), 99.88);
s2.print();
s1 = new Student(0106103, "王五", "tttt", new DateTime(2002, 12, 2), 80.88);
s1.print();
Console.ReadKey();
}
}
class Person
{
///
/// 字段 基本信息
///
private string _Name;
private string _Gender;
protected int _Age;
///
/// 属性 名字 性别
///
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
public string Gender
{
get
{
return _Gender;
}
set
{
_Gender = value;
}
}
public virtual int GetAge()//虚方法
{
return _Age;
}
public Person(string Name = "", string Gender = "")
{
_Name = Name;
_Gender = Gender;
_Age = 0;
}
}
class Student : Person
{
///
/// 字段
///
private int _No;
private double _Score;
private DateTime _BirthDate;
private static int _Number = 0;
public Student()
{
_Number++;
}
~Student()
{
if (_Number > 0) _Number--;
}
public Student(int No, string Name, string Gender, DateTime BirthDate, double Score) : base(Name, Gender)
{
_Number++; //_Number = Number;
_No = No;
_BirthDate = BirthDate;
_Score = Score;
_Age = GetAge();
}
///
/// 属性
///
public int No
{
get
{
return _No;
}
set
{
_No = value;
}
}
public double Score
{
get
{
return _Score;
}
set
{
_Score = value;
}
}
public static int Number//待修改
{
get
{
return _Number;
}
// set
// {
// _Number = value;
// }
}
public override int GetAge()
{
DateTime now = DateTime.Now;
int age = now.Year - _BirthDate.Year;
if (now.Month < _BirthDate.Month || (now.Month == _BirthDate.Month && now.Day < _BirthDate.Day))
{
age--;
}
_Age = age;
return _Age;
}
public void print()//Number:No,
{
Console.WriteLine("{0}:, {1}, {2}, {3}, {4}, {5}", _Number, _No, base.Name, base.Gender, base._Age, _Score);
}
}
C/C++---Person类、学生类
https://blog.csdn.net/qq_44528283/article/details/111177794