OOP_多态(C#)

OOP_多态(C#)

一个评选优秀教师和学生的程序,其类结构如图1所示。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出。
在这里插入图片描述

code:

namespace DuoTaiGoodStuTeach
{
    public class Base
    {
        public int num;

        protected string name;
        public Base(string name)
        { this.name = name; }

        public virtual void getnum()
        { }
        public virtual int ifgood()
        { return 0; }

        public void pritname()
        { Console.Write(this.name); }

    }

    public class Student : Base
    {
        public int numS;           /下面调用基类的构造函数
        public Student(string nameS)
            : base(nameS)
        { }

        public override void getnum()
        {
            numS=Convert.ToInt32(Console.ReadLine());
            //return base.getnum();
        }
        public override int ifgood()
        {
            if (numS >70) return 1;
            else      return 0;
        }
    }
    public class Teacher : Base
    {
        public int numT;
        public Teacher(string nameT)
            : base(nameT)
        { }

        public override void getnum()
        {
            numT = Convert.ToInt32(Console.ReadLine());
        }
        public override int ifgood()
        {
            if (numT > 3) return 1;
            else return 0;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string continu = "y"; string[] goodS = new string[66]; int i = 0; int flag = 0; int flag2 = 0;  //int k = 0;
            
            while (continu == "y")
            {   Console.WriteLine("Input teacher(t) or student(s):");
                string choice= Console.ReadLine();
                switch (choice)
                {
                    case "s":
                        Console.Write("姓名:");
                        string nameS = Console.ReadLine();
                        Student baseS = new Student(nameS);
                        Console.Write("成绩:");flag+=1;//记录输入(姓名成绩)的学生个数
                        baseS.getnum(); //int numS =Convert.ToInt32(Console.ReadLine());
                        while (baseS.ifgood() == 1)
                        {                
                             goodS[i] = nameS;i += 1;
                            break;
                        }
                        Console.Write("continue(y/n)?");
                        if (Console.ReadLine() == continu)
                        { continue; }
                        else
                        {
                           // continu = "n";
                           //Console.Write("优秀者的姓名:");
                           //for (int j = 0; j < flag; j++)
                           //{
                           //    Console.Write(goodS[j]+" ");
                           //}
                           break;
                        }
                    case "t": 
                        Console.Write("姓名:");
                        string nameT = Console.ReadLine();
                        Teacher baseT = new Teacher(nameT);
                        Console.Write("每年发表论文数:");flag2+=1;//记录输入(姓名成绩)的老师个数
                        baseT.getnum();
                        while (baseT.ifgood()==1)
                        {
                            goodS[i] = nameT; i += 1;  //老师和学生全存在goodS[]中
                            break;
                        }
                         Console.Write("continue(y/n)?");
                         if (Console.ReadLine() == continu)
                         { continue; }
                         else
                         {
                             break;
                         }
                    default:
                        break;
                }

                continu = "n";
                Console.Write("优秀者的姓名:");
                for (int j = 0; j < i;j++)//flag+flag2; j++)
                {
                    Console.Write(goodS[j] + " ");
                }
            }
           
           
        }
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值