「已注销」 2022-12-01 12:05 采纳率: 66.7%
浏览 52
已结题

类的继承,综合输出学生信息并析构

代码怎样实现用出生日期算年龄并和其他信息一起输出呢,以及析构函数和Number属性呢
【问题描述】 请问

  1. 定义一个Person类,该类具有数数据成员_Name, _Gender, _Age,属性Name, Gender,虚方法GetAge() 直接返回_Age。

定义一个Student类,继承Person类,该类具有数据成员_No, _Score, _Birthday, _Number及属性No, Score,重写GetAge(),由出生日期计算而来,Number属性以计算存在于系统中学生的人数,每创建一个学生对象,学生人数加1, 每析构一个对象,学生人数减1。另外该类还具有一个Print方法,要求按“Number:No,Name, Gender,Age,Score”格式输出。

  1. 完成Program类的Main()方法。
    创建多个学生对象,按要求输出学生信息。
 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);
        }
    }

} 

  • 写回答

3条回答 默认 最新

  • 浪客 2022-12-01 14:26
    关注
    
    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);
        }
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月2日
  • 已采纳回答 12月1日
  • 创建了问题 12月1日

悬赏问题

  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图