C#面向对象编程

C#面向对象编程

题目:

通过观察和交流,我们了解学校内的各类人员,分析他们的属性特征,特性和职责,来设计人员类。作业尽量使用各种面向对象的语法,例如封装,继承、多态和接口、事件等。应用这个设计,实现学校内的一项教育教学任务,例如教学过程、评优考核等。
1、简述问题:
本科生,研究生登入此界面可根据各科成绩,学分来查询优秀等级,绩点和能否获得奖学金;研究生还可以查询自己导师情况,评奖参考学科;老师可以浏览此界面。
2、数据算法说明:
使用窗体设计,按钮事件,接口声明实现,接口安全测试,抽象类,继承类,继承的多态性,封装属性,构造函数;

结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面展示一些 代码

 private void button1_Click(object sender, EventArgs e) //触发按钮button1事件
        {
            if (cbbType.SelectedIndex == 0)
            {
                Student s = new Student(textBox1.Text, textBox2.Text); 
                MessageBox.Show("欢迎本科生" + s.name,"您的学号"+s.number );
                textBox13.Text = s.Mokuai();
            }
            else if(cbbType.SelectedIndex == 1)
            {
                HighStudent h = new HighStudent(textBox1.Text,textBox2.Text);
                MessageBox.Show("欢迎研究生" + h.name, "您的学号" + h.number);
                textBox13.Text = h.Mokuai();
            }
            else
            {
                Teacher t = new Teacher(textBox1.Text,textBox2.Text);
                MessageBox.Show("欢迎老师" + t.name, "您的工号" + t.number);
                textBox13.Text = t.Mokuai();
            }
        }
        private void textBox7_TextChanged(object sender, EventArgs e){ }
        private void button2_Click(object sender, EventArgs e)    //触发按钮button2事件
        {
            OryouJidian o = new OryouJidian();
            BenClasses s = new BenClasses();
            if (s is Classes)            //接口的使用:接口的安全测试
            {
                s.Chengji = Convert.ToInt32(textBox3.Text);
                s.Classesfen = Convert.ToDouble(textBox8.Text);
                string oryou = o.Oryou(s.Chengji);
                double jidian = o.Jidian(s.Chengji);
                label10.Text = s.classespingyou(oryou, jidian);

                s.Chengji = Convert.ToInt32(textBox4.Text);
                s.Classesfen = Convert.ToDouble(textBox9.Text);
                oryou = o.Oryou(s.Chengji);
                jidian = o.Jidian(s.Chengji);
                label11.Text = s.classespingyou(oryou, jidian);

                s.Chengji = Convert.ToInt32(textBox5.Text);
                s.Classesfen = Convert.ToDouble(textBox10.Text);
                oryou = o.Oryou(s.Chengji);
                jidian = o.Jidian(s.Chengji);
                label12.Text = s.classespingyou(oryou, jidian);

                s.Chengji = Convert.ToInt32(textBox6.Text);
                s.Classesfen = Convert.ToDouble(textBox11.Text);
                oryou = o.Oryou(s.Chengji);
                jidian = o.Jidian(s.Chengji);
                label13.Text = s.classespingyou(oryou, jidian);

                s.Chengji = Convert.ToInt32(textBox7.Text);
                s.Classesfen = Convert.ToDouble(textBox12.Text);
                oryou = o.Oryou(s.Chengji);
                jidian = o.Jidian(s.Chengji);
                label14.Text = s.classespingyou(oryou, jidian);
            }
        }
        private void button3_Click(object sender, EventArgs e)  //触发按钮button3事件
        {
            double zong; double shiji;double rate;
            int shu1 = Convert.ToInt32(textBox3.Text);
            double shu2 = Convert.ToDouble(textBox8.Text);
            int C1 = Convert.ToInt32(textBox4.Text);
            double C2 = Convert.ToDouble(textBox9.Text);
            int cao1 = Convert.ToInt32(textBox5.Text);
            double cao2 = Convert.ToDouble(textBox10.Text);
            int xian1 = Convert.ToInt32(textBox6.Text);
            double xian2 = Convert.ToDouble(textBox11.Text);
            int gao1 = Convert.ToInt32(textBox7.Text);
            double gao2 = Convert.ToDouble(textBox12.Text);
            zong = shu1 * shu2 + C1 * C2 + cao1 * cao2 + xian1 * xian2 + gao1 * gao2;
            shiji = (shu2 + C2 + cao2 + xian2 + gao2) * 100;
            rate = zong / shiji;
            if (rate >= 0.95) { MessageBox.Show("恭喜!\n您可以获得本校一等奖学金!"); }
            else if (rate >= 0.80) { MessageBox.Show("恭喜!\n您可以获得本校二等奖学金!"); }
            else if (rate >= 0.75) { MessageBox.Show("恭喜!\n您可以获得本校三等奖学金!"); }
            else { { MessageBox.Show("很遗憾—_— \n您的成绩不能获得奖学金\n请继续加油!"); } }
        }
        private void Display(Daoshi s,string name,string number,string teachage,string masternumber,string department)
        {
            textBox19.Text = s.courses();
            textBox14.Text = name;
            textBox15.Text = number;
            textBox16.Text = teachage;
            textBox17.Text = masternumber;
            textBox18.Text = department;
        }
        private void button4_Click(object sender, EventArgs e)
        {
            string n = Convert.ToString(textBox2.Text);
            int r =Convert.ToInt32(n.Substring(4, 1));  //截取学号中第5个数字,由string型转换为int型
            switch (r)
            {
                case 9:
                case 8:
                case 7:
                    string name = "李老师";string number = "200001"; string teachage = "12";
                    string masternumber = "32"; string department = "计算机科学与技术";                  
                    Daoshi1  D1 =new  Daoshi1(name, number, teachage, masternumber, department);
                    Display(D1, name, number, teachage, masternumber, department);
                    break;
                default:
                     name = "王老师";  number = "200002";  teachage = "19";
                     masternumber = "22";  department = "电子信息";
                    Daoshi2 D2 = new Daoshi2(name, number, teachage, masternumber, department);
                    Display(D2, name, number, teachage, masternumber, department);
                    break;
            }
        }
//duan

 public class Student
    {
        public string number;
        public string name;
        public Student(string name, string number)
        {
            this.name = name;
            this.number = number;
        }
        public virtual string Mokuai()    //实现继承的多态性
        {
            return string.Format("{0}您好!您可以使用本科生模块!", name);
        }
    }

    public class HighStudent:Student    //继承student类
    {
        private string daoshi;         //封装Daoshi属性
        public string getDaoshi()
        {
            return daoshi;
        }
        public void setDaoshi(string NewDaoshi)
        {
            daoshi = NewDaoshi;
        }
        public HighStudent(string name,string number):base (name ,number ){ }
        public override string Mokuai()
        {
            return string.Format("{0}您好!您可以使用研究生模块!", name);
        }
    }
    public class Teacher : Student
    {
        public Teacher(string name,string number):base (name ,number ){ }
        public override string Mokuai()
        {
            return string.Format("{0}老师您好! 您可以查看本界面!", name);
        }
    }
    public abstract class Daoshi     //定义抽象导师类
    {
        public string name;
        public string number;
        public string teachage;     
        public string masternumber;
        public string department;
        public Daoshi(string name, string number, string teachage, string masternumber, string department)//构造函数
        {
            this.name = name;
            this.number = number;
            this.teachage = teachage;
            this.masternumber = masternumber;
            this.department = department;
        }
        public abstract string courses(); //声明抽象方法
    }
    public class Daoshi1 : Daoshi
    {
        public Daoshi1(string name, string number, string teachage, string masternumber, string department) : 
            base(name,number,teachage,  masternumber,  department) {  }//构造函数
        public override string courses() //重写抽象方法
        {
            return "网络管理、网络数据库、入侵检测";
        }
    }
    public class Daoshi2 : Daoshi
    {
        public Daoshi2(string name, string number, string teachage, string masternumber, string department) :
            base(name, number, teachage, masternumber, department)
        { }//构造函数
        public override string courses() //重写抽象方法
        {
            return "视觉模式的分析与理解、三维视觉与场景分析;视频及图像显著性计算、目标检测与识别";
        }
    }
    public class OryouJidian      //此类里的两个方法,用来评优秀等级和计算绩点
    {
        public string Oryou(int chengji)
        {
            string oryou = "";
            if (chengji >= 0 && chengji <= 100)
            {
                switch (chengji / 10)
                {
                    case 10:
                    case 9: oryou = "优秀"; break;
                    case 8: oryou = "良好"; break;
                    case 7: oryou = "中等"; break;
                    case 6: oryou = "及格"; break;
                    default: oryou = "不及格"; break;
                } }
            return oryou;
        }
        public double Jidian(int chengji)
        {
            double jidian = 0;
            if (chengji >= 0 && chengji <= 100)
            {
                if (chengji <= 60)
                { jidian = 0; }
                else
                {jidian = (double)(chengji - 60) / 10; }
            }
            return jidian;
        }
    }
    interface Classes       //接口声明
    {
        int Chengji { get; set; }
        double Classesfen { get; set; }
        string classespingyou(string pingyou, double jidian);
    }
    public class BenClasses : Classes    //接口实现
    {
        private double classesfen;   private int chengji;
        public int Chengji { get=> chengji; set=>chengji=value; }
        public  double Classesfen    
        {
            get { return classesfen; }
            set { classesfen = value; }
        }
        public string classespingyou(string pingyou, double jidian)
        {
            return string.Format("您的成绩为:{0},绩点为:{1}",pingyou ,jidian );
        }
    }

#OK!
#转载请注明原作者,谢谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值