用C# 設計一個 Windows應用程序,在該程序中首先構造一個學生基本類,再分別構造小學生、中學生、大學生等派生類,當輸入相關數據,單擊不同的按鈕(小學生、中學生、大學生)將分別創建不同的學生對象,並輸出當前學生總人數,該學生的姓名、學生類型和平均成績。


1.題目要求如下:

用C# 設計一個 Windows應用程序,在該程序中首先構造一個學生基本類,再分別構造小學生、中學生、大學生等派生類,當輸入相關數據,單擊不同的按鈕(小學生、中學生、大學生)將分別創建不同的學生對象,並輸出當前學生總人數,該學生的姓名、學生類型和平均成績。

如下圖所示,要求如下:

     (1)每個學生都要姓名和年齡。

    (2)小學生有語文、數學成績。

 (3)中學生有語文、數學和英語成績

 (4)大學生有必修課學分總數和選修課學分總數,不包含單科成績。

 (5)學生類提供向外輸出信息的方法。

 (6)學生類提供統計個人總成績或總學分的方法。

   (7)通過靜態成員自動記錄學生總人數。

  (8)能通過構造函數完成各字段成員初始化。
 
2.來吧展示,代碼如下:
using System;
using System.Windows.Forms;

namespace All_Student_4._1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.Text = "";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                Pupil pu = new Pupil(textBox1.Text, Convert.ToInt16(textBox2.Text), Convert.ToDouble(textBox3.Text), Convert.ToDouble(textBox4.Text));
                richTextBox1.Text += pu.getInfo();
                textBox1.Text = "";
                textBox2.Text = "";
                textBox3.Text = "";
                textBox4.Text = "";
                textBox5.Text = "";
            }
            catch
            {
                MessageBox.Show("請輸入完善的信息!");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                Middle pu = new Middle(textBox1.Text, Convert.ToInt16(textBox2.Text), Convert.ToDouble(textBox3.Text), Convert.ToDouble(textBox4.Text), Convert.ToDouble(textBox5.Text));
                richTextBox1.Text += pu.getInfo();
                textBox1.Text = "";
                textBox2.Text = "";
                textBox3.Text = "";
                textBox4.Text = "";
                textBox5.Text = "";
            }
            catch
            {
                MessageBox.Show("請輸入完善的信息!");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                College pu = new College(textBox1.Text, Convert.ToInt16(textBox2.Text), Convert.ToDouble(textBox3.Text), Convert.ToDouble(textBox4.Text));
                richTextBox1.Text += pu.getInfo();
                textBox1.Text = "";
                textBox2.Text = "";
                textBox3.Text = "";
                textBox4.Text = "";
                textBox5.Text = "";
            }
            catch
            {
                MessageBox.Show("請輸入完善的信息!");
            }
        }
    }
    public abstract class Student
    {
        protected string name;
        protected int age;
        public static int number;
        public Student(string name, int age)
        {
            this.name = name;
            this.age = age;
            number++;
        }
        public string Name
        {
            get { return name; }
        }
        public virtual string type
        {
            get { return "學生"; }
        }
        public abstract double total();
        public string getInfo()
        {
            string result = string.Format("總人數:{0},姓名:{1},{2},{3}歲", number, Name, type, age);
            if (type == "小學生")
                result += string.Format(",平均成績:{0:N2}:\n", total() / 2);
            else if (type == "中學生")
                result += string.Format(",平均成績:{0:N2}:\n", total() / 3);
            else
                result += string.Format(",總學分為{0:N2}:\n", total());
            return result;
        }
    }
    public class Pupil : Student //派生小學生類
    {
        protected double chinese;
        protected double math;
        public Pupil(string name, int age, double chinese, double math) : base(name, age)
        {
            this.chinese = chinese;
            this.math = math;
        }
        public override string type
        {
            get { return "小學生"; }           
        }
        public override double total()
        {
            return chinese + math;
        }
    }
    public class Middle : Student //派生中學生類
    {
        protected double chinese;
        protected double math;
        protected double english;
        public Middle(string name, int age, double chinese, double math, double english) : base(name, age)
        {
            this.chinese = chinese;
            this.math = math;
            this.english = english;
        }
        public override string type
        {
            get { return "中學生"; }           
        }
        public override double total()
        {
            return chinese + math + english;
        }
    }
    public class College : Student  //派生大學生類
    {
        protected double obligatory;
        protected double elective;
        public College(string name, int age, double obligatory, double elective)
            : base(name, age)
        {
            this.obligatory = obligatory;
            this.elective = elective;
        }
        public override string type
        {
            get {return "大學生";}
        }
        public override double total()
        {
            return obligatory + elective;
        }
    }
}

 

3.運行結果如下:

依次輸入不同年級學生的基本信息和各科成績或者學分

 

 最終的三條記錄展示如下:

 

 

我是小關,關注我,帶你從初級入門編程
希望能幫到大家,問你們要一個贊,你們會給嗎,謝謝大家
版權聲明:本文版權歸作者(@攻城獅小關)和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
大家寫文都不容易,請尊重勞動成果~
交流加Q:1909561302
CSDN地址https://blog.csdn.net/Mumaren6/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM