实验目的
- 练习C#中抽象类
- 练习静态变量
实验内容:
1.构造一个Student类为抽象类,当中要包含抽象函数。(override)
2.构造一个小学生类Pupil继承Student类,并实现父类的抽象函数。
3.构造一个中学生类Junior继承Student类,并实现父类的抽象函数。
4.构造一个大学生类Undergraduate继承Student类,并实现父类的抽象函数。
要求分别统计小学生,中学生,大学生的人数,和学生的总人数(静态变量的用法)。
一、 核心代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
int age = Convert.ToInt32(TextBox2.Text);
double sub1 = Convert.ToDouble(TextBox3.Text);
double sub2 = Convert.ToDouble(TextBox4.Text);
pupil p = new pupil(TextBox1.Text, age, sub1, sub2);
Label1.Text = "";
Label1.Text += p.getInfo();
/*int num = Convert.ToInt32(TextBox1.Text);
string name = TextBox2.Text;
int grade = Convert.ToInt32(TextBox3.Text);
u1 = new Undergraduate(num, name, grade);
Label1.Text = u1.Message();*/
}
protected void Button2_Click(object sender, EventArgs e)
{
int age = Convert.ToInt32(TextBox2.Text);
double sub1 = Convert.ToDouble(TextBox3.Text);
double sub2 = Convert.ToDouble(TextBox4.Text);
double sub3 = Convert.ToDouble(TextBox5.Text);
Junior j = new Junior(TextBox1.Text, age, sub1, sub2, sub3);
Label1.Text = "";
Label1.Text += j.getInfo();
}
protected void Button3_Click(object sender, EventArgs e)
{
int age = Convert.ToInt32(TextBox2.Text);
double sub1 = Convert.ToDouble(TextBox3.Text);
double sub2 = Convert.ToDouble(TextBox4.Text);
double sub3 = Convert.ToDouble(TextBox5.Text);
Undergraduate u = new Undergraduate(TextBox1.Text, age, sub1, sub2);
Label1.Text = "";
Label1.Text += u.getInfo();
}
public abstract class student
{
protected string name;
protected int age;
public static int number;
public static int number1;
public static int number2;
public static int number3;
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 int total();
public string getInfo()
{
string result = string.Format("总人数:{0}</br>姓名:{1},{2},{3}岁</br>", number, Name, type, age, number1, number2, number3);
if (type == "小学生")
result += string.Format("小学生人数:{0}\n", number1);
else if (type == "中学生")
result += string.Format("中学生人数:{0}\n", number2);
else
result += string.Format("大学生人数:{0}\n", number3);
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.name = name;
this.age = age;
number1++;
}
public override string type
{
get
{
return "小学生";
}
}
public override int total()
{
return number;
}
}
//中学生
public class Junior : student
{
protected double chinese;
protected double math;
protected double english;//英语
public Junior(string name, int age, double chinese, double math, double english) : base(name, age)
{
this.chinese = chinese;
this.math = math;
this.english = english;
number2++;
}
public override string type
{
get
{
return "中学生";
}
}
public override int total()
{
return number2;
}
}
//大学生
public class Undergraduate : student
{
protected double majors;
protected double elective;
public Undergraduate(string name, int age, double majors, double elective) : base(name, age)
{
this.majors = majors;
this.elective = elective;
number3++;
}
public override string type
{
get
{
return "大学生";
}
}
public override int total()
{
return number3;
}
}
}
二、实验结果: