dbouo 2023-11-11 21:19 采纳率: 81.5%
浏览 16
已结题

c#设计一个学生查询窗体

设计一个Windows程序,在Form窗体的文本框中输入姓名、年龄、语文/必修课、数学/选修课、英语数据后,分别单击[小学生]、[中学生]、[大学生]按钮,输出当前学生的总人数、该学生的姓名、学生类型和平均成绩。具体要求如下:
(1)设计一个学生抽象类,在该类中定义学生姓名、年龄私有字段和一个静态统计人数字段,通过构造函数对私有字段初始化,编写一个计算平均成绩的抽象方法。
(2)分别设计小学生类、中学生类、大学生类继承学生类,并扩展自己的字段。小学生扩展语文、数学;中学生扩展语文、数学、英语;大学生扩展必修课、选修课。通过构造函数实现字段的初始化,重写学生类的抽象方法。
(3)单击按钮,分别创建小学生、中学生、大学生对象,并输出题目要求的信息。

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-12 09:56
    关注

    【以下回答由 GPT 生成】

    我将分步回答这个问题:
    
    1. 首先, 我们需要设计一个学生的抽象类,如下:
    ```C#
    public abstract class Student
    {
        private string name;
        private int age;
        protected static int numberOfStudents;
    
        public Student(string name, int age)
        {
            this.name = name;
            this.age = age;
            numberOfStudents++;
        }
    
        public abstract double CalculateAverage(); // 计算平均成绩的抽象方法
    }
    
    1. 接下来, 我们设计三个不同的学生类,如小学生、中学生和大学生:
    public class PrimaryStudent : Student
    {
        private int chinese;
        private int math;
    
        public PrimaryStudent(string name, int age, int chinese, int math) : base(name, age)
        {
            this.chinese = chinese;
            this.math = math;
        }
    
        public override double CalculateAverage()
        {
            return (chinese + math) / 2.0;
        }
    }
    
    public class MiddleStudent : Student
    {
        private int chinese;
        private int math;
        private int english;
    
        public MiddleStudent(string name, int age, int chinese, int math, int english) : base(name, age)
        {
            this.chinese = chinese;
            this.math = math;
            this.english = english;
        }
    
        public override double CalculateAverage()
        {
            return (chinese + math + english) / 3.0;
        }
    }
    
    public class CollegeStudent : Student
    {
        private int requiredCourse;
        private int electiveCourse;
    
        public CollegeStudent(string name, int age, int requiredCourse, int electiveCourse) : base(name, age)
        {
            this.requiredCourse = requiredCourse;
            this.electiveCourse = electiveCourse;
        }
    
        public override double CalculateAverage()
        {
            // 计算大学生平均成绩的具体方法
        }
    }
    
    1. 最后, 在窗体中,当用户点击不同的按钮时,创建对应的学生对象,并展示学生信息:
    private void PrimaryStudentButton_Click(object sender, EventArgs e)
    {
        string name = nameTextBox.Text;
        int age = int.Parse(ageTextBox.Text);
        int chinese = int.Parse(chineseTextBox.Text);
        int math = int.Parse(mathTextBox.Text);
    
        PrimaryStudent student = new PrimaryStudent(name, age, chinese, math);
        // 展示学生信息
    }
    
    private void MiddleStudentButton_Click(object sender, EventArgs e)
    {
        // 类似的创建中学生对象,并展示学生信息
    }
    
    private void CollegeStudentButton_Click(object sender, EventArgs e)
    {
        // 类似的创建大学生对象,并展示学生信息
    }
    

    ```



    【相关推荐】


    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/723650
    • 除此之外, 这篇博客: 我的前端成长之路-写给在迷茫路上的人中的 我是一名毕业于江西城市学院软件技术专业的一名编程人员,从2013年毕业到现在已经有将近7年的工作经验,有一个新手慢慢成长为一个经验丰富的编程者,也从初级工程师慢慢变成以前前端负责人,我这几年的职业生涯里,在外包公司待过,也在创业公司里奋斗过,也在电子厂迷茫过,回想这7年的工作生涯,我一路成长,渐渐的学到了很多,也用自己的技术帮助很多人,现在在这家公司组建了自己的团队,为公司,为各个产品线提供各种各样的前端支持和开发,我和我的团队一起克服种种困难,由稚嫩变成熟,逐渐形成我们自己的前端文化,我相信未来更好!我把我的经历分为四个时期,迷茫期、学习期、沉淀期、发展期。 部分也许能够解决你的问题。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月8日
  • 已采纳回答 11月30日
  • 创建了问题 11月11日

悬赏问题

  • ¥15 更换了一个新的win10系统,再下载VS时碰到的问题,是C++组件的?
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面
  • ¥15 sessionStorage在vue中的用法
  • ¥15 wordpress更换域名后用户图片头像不显示
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework),并且基于qt实现打开一个web
  • ¥30 AD9854 为什么输出波形幅度受限,AI机器人勿扰
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework