1.題目要求如下:
用C# 設計一個 Windows應用程序,在該程序中首先構造一個學生基本類,再分別構造小學生、中學生、大學生等派生類,當輸入相關數據,單擊不同的按鈕(小學生、中學生、大學生)將分別創建不同的學生對象,並輸出當前學生總人數,該學生的姓名、學生類型和平均成績。
如下圖所示,要求如下:
(1)每個學生都要姓名和年齡。
(2)小學生有語文、數學成績。
(3)中學生有語文、數學和英語成績
(4)大學生有必修課學分總數和選修課學分總數,不包含單科成績。
(5)學生類提供向外輸出信息的方法。
(6)學生類提供統計個人總成績或總學分的方法。
(7)通過靜態成員自動記錄學生總人數。
(8)能通過構造函數完成各字段成員初始化。
(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/
