案例 设计一个WinForm应用程序,在该程序有学生类(基类),小学生,中学生,大学生等派生类 当输入相关数据,单击不同的按钮(小学生,中学生,大学生)将分别创建不同的学生对象,并输出当前的学生的总数,该学生的姓名,学生类型和平均成绩。
时间: 2024-12-03 18:31:27 浏览: 9
案例描述:
首先,我们可以创建一个名为`Student`的基类,包含通用属性如`name`, `averageScore`,以及方法`introduce()`用于基础信息展示。然后,为了实现针对小学生、中学生和大学生的具体功能,我们为每个阶段的学生创建相应的派生类,比如`PrimaryStudent`, `JuniorStudent`, 和 `SeniorStudent`。
```csharp
public abstract class Student
{
public string name { get; set; }
public int averageScore { get; set; }
public void introduce()
{
Console.WriteLine($"Name: {name}, Average Score: {averageScore}");
}
}
public class PrimaryStudent : Student
{
// 可能添加额外属性,如年级
}
public class JuniorStudent : Student
{
// 可能添加额外属性,如是否选修某些课程
}
public class SeniorStudent : Student
{
// 可能添加额外属性,如专业
}
// Winform界面部分
public partial class MainForm : Form
{
private List<Student> students = new List<Student>();
public MainForm()
{
InitializeComponent();
}
private void createStudentButton_Click(object sender, EventArgs e)
{
if (sender is Button button)
{
switch ((string)button.Name)
{
case "primaryStudentButton":
var primaryStudent = new PrimaryStudent();
// 设置学生属性并添加到列表
primaryStudent.name = "小明";
primaryStudent.averageScore = 85;
students.Add(primaryStudent);
break;
case "juniorStudentButton":
var juniorStudent = new JuniorStudent();
juniorStudent.name = "李华";
juniorStudent.averageScore = 90;
students.Add(juniorStudent);
break;
case "seniorStudentButton":
var seniorStudent = new SeniorStudent();
seniorStudent.name = "张三";
seniorStudent.averageScore = 95;
students.Add(seniorStudent);
break;
}
// 输出学生信息
Console.WriteLine($"Total Students: {students.Count}");
foreach (var student in students)
{
student.introduce();
}
}
}
}
```
在这个案例中,用户通过点击对应的学生按钮,会创建相应类型的对象并显示基本信息。
阅读全文