C#面向对象编程
题目:
通过观察和交流,我们了解学校内的各类人员,分析他们的属性特征,特性和职责,来设计人员类。作业尽量使用各种面向对象的语法,例如封装,继承、多态和接口、事件等。应用这个设计,实现学校内的一项教育教学任务,例如教学过程、评优考核等。
1、简述问题:
本科生,研究生登入此界面可根据各科成绩,学分来查询优秀等级,绩点和能否获得奖学金;研究生还可以查询自己导师情况,评奖参考学科;老师可以浏览此界面。
2、数据算法说明:
使用窗体设计,按钮事件,接口声明实现,接口安全测试,抽象类,继承类,继承的多态性,封装属性,构造函数;
结果:
下面展示一些 代码
。
private void button1_Click(object sender, EventArgs e) //触发按钮button1事件
{
if (cbbType.SelectedIndex == 0)
{
Student s = new Student(textBox1.Text, textBox2.Text);
MessageBox.Show("欢迎本科生" + s.name,"您的学号"+s.number );
textBox13.Text = s.Mokuai();
}
else if(cbbType.SelectedIndex == 1)
{
HighStudent h = new HighStudent(textBox1.Text,textBox2.Text);
MessageBox.Show("欢迎研究生" + h.name, "您的学号" + h.number);
textBox13.Text = h.Mokuai();
}
else
{
Teacher t = new Teacher(textBox1.Text,textBox2.Text);
MessageBox.Show("欢迎老师" + t.name, "您的工号" + t.number);
textBox13.Text = t.Mokuai();
}
}
private void textBox7_TextChanged(object sender, EventArgs e){ }
private void button2_Click(object sender, EventArgs e) //触发按钮button2事件
{
OryouJidian o = new OryouJidian();
BenClasses s = new BenClasses();
if (s is Classes) //接口的使用:接口的安全测试
{
s.Chengji = Convert.ToInt32(textBox3.Text);
s.Classesfen = Convert.ToDouble(textBox8.Text);
string oryou = o.Oryou(s.Chengji);
double jidian = o.Jidian(s.Chengji);
label10.Text = s.classespingyou(oryou, jidian);
s.Chengji = Convert.ToInt32(textBox4.Text);
s.Classesfen = Convert.ToDouble(textBox9.Text);
oryou = o.Oryou(s.Chengji);
jidian = o.Jidian(s.Chengji);
label11.Text = s.classespingyou(oryou, jidian);
s.Chengji = Convert.ToInt32(textBox5.Text);
s.Classesfen = Convert.ToDouble(textBox10.Text);
oryou = o.Oryou(s.Chengji);
jidian = o.Jidian(s.Chengji);
label12.Text = s.classespingyou(oryou, jidian);
s.Chengji = Convert.ToInt32(textBox6.Text);
s.Classesfen = Convert.ToDouble(textBox11.Text);
oryou = o.Oryou(s.Chengji);
jidian = o.Jidian(s.Chengji);
label13.Text = s.classespingyou(oryou, jidian);
s.Chengji = Convert.ToInt32(textBox7.Text);
s.Classesfen = Convert.ToDouble(textBox12.Text);
oryou = o.Oryou(s.Chengji);
jidian = o.Jidian(s.Chengji);
label14.Text = s.classespingyou(oryou, jidian);
}
}
private void button3_Click(object sender, EventArgs e) //触发按钮button3事件
{
double zong; double shiji;double rate;
int shu1 = Convert.ToInt32(textBox3.Text);
double shu2 = Convert.ToDouble(textBox8.Text);
int C1 = Convert.ToInt32(textBox4.Text);
double C2 = Convert.ToDouble(textBox9.Text);
int cao1 = Convert.ToInt32(textBox5.Text);
double cao2 = Convert.ToDouble(textBox10.Text);
int xian1 = Convert.ToInt32(textBox6.Text);
double xian2 = Convert.ToDouble(textBox11.Text);
int gao1 = Convert.ToInt32(textBox7.Text);
double gao2 = Convert.ToDouble(textBox12.Text);
zong = shu1 * shu2 + C1 * C2 + cao1 * cao2 + xian1 * xian2 + gao1 * gao2;
shiji = (shu2 + C2 + cao2 + xian2 + gao2) * 100;
rate = zong / shiji;
if (rate >= 0.95) { MessageBox.Show("恭喜!\n您可以获得本校一等奖学金!"); }
else if (rate >= 0.80) { MessageBox.Show("恭喜!\n您可以获得本校二等奖学金!"); }
else if (rate >= 0.75) { MessageBox.Show("恭喜!\n您可以获得本校三等奖学金!"); }
else { { MessageBox.Show("很遗憾—_— \n您的成绩不能获得奖学金\n请继续加油!"); } }
}
private void Display(Daoshi s,string name,string number,string teachage,string masternumber,string department)
{
textBox19.Text = s.courses();
textBox14.Text = name;
textBox15.Text = number;
textBox16.Text = teachage;
textBox17.Text = masternumber;
textBox18.Text = department;
}
private void button4_Click(object sender, EventArgs e)
{
string n = Convert.ToString(textBox2.Text);
int r =Convert.ToInt32(n.Substring(4, 1)); //截取学号中第5个数字,由string型转换为int型
switch (r)
{
case 9:
case 8:
case 7:
string name = "李老师";string number = "200001"; string teachage = "12";
string masternumber = "32"; string department = "计算机科学与技术";
Daoshi1 D1 =new Daoshi1(name, number, teachage, masternumber, department);
Display(D1, name, number, teachage, masternumber, department);
break;
default:
name = "王老师"; number = "200002"; teachage = "19";
masternumber = "22"; department = "电子信息";
Daoshi2 D2 = new Daoshi2(name, number, teachage, masternumber, department);
Display(D2, name, number, teachage, masternumber, department);
break;
}
}
//duan
public class Student
{
public string number;
public string name;
public Student(string name, string number)
{
this.name = name;
this.number = number;
}
public virtual string Mokuai() //实现继承的多态性
{
return string.Format("{0}您好!您可以使用本科生模块!", name);
}
}
public class HighStudent:Student //继承student类
{
private string daoshi; //封装Daoshi属性
public string getDaoshi()
{
return daoshi;
}
public void setDaoshi(string NewDaoshi)
{
daoshi = NewDaoshi;
}
public HighStudent(string name,string number):base (name ,number ){ }
public override string Mokuai()
{
return string.Format("{0}您好!您可以使用研究生模块!", name);
}
}
public class Teacher : Student
{
public Teacher(string name,string number):base (name ,number ){ }
public override string Mokuai()
{
return string.Format("{0}老师您好! 您可以查看本界面!", name);
}
}
public abstract class Daoshi //定义抽象导师类
{
public string name;
public string number;
public string teachage;
public string masternumber;
public string department;
public Daoshi(string name, string number, string teachage, string masternumber, string department)//构造函数
{
this.name = name;
this.number = number;
this.teachage = teachage;
this.masternumber = masternumber;
this.department = department;
}
public abstract string courses(); //声明抽象方法
}
public class Daoshi1 : Daoshi
{
public Daoshi1(string name, string number, string teachage, string masternumber, string department) :
base(name,number,teachage, masternumber, department) { }//构造函数
public override string courses() //重写抽象方法
{
return "网络管理、网络数据库、入侵检测";
}
}
public class Daoshi2 : Daoshi
{
public Daoshi2(string name, string number, string teachage, string masternumber, string department) :
base(name, number, teachage, masternumber, department)
{ }//构造函数
public override string courses() //重写抽象方法
{
return "视觉模式的分析与理解、三维视觉与场景分析;视频及图像显著性计算、目标检测与识别";
}
}
public class OryouJidian //此类里的两个方法,用来评优秀等级和计算绩点
{
public string Oryou(int chengji)
{
string oryou = "";
if (chengji >= 0 && chengji <= 100)
{
switch (chengji / 10)
{
case 10:
case 9: oryou = "优秀"; break;
case 8: oryou = "良好"; break;
case 7: oryou = "中等"; break;
case 6: oryou = "及格"; break;
default: oryou = "不及格"; break;
} }
return oryou;
}
public double Jidian(int chengji)
{
double jidian = 0;
if (chengji >= 0 && chengji <= 100)
{
if (chengji <= 60)
{ jidian = 0; }
else
{jidian = (double)(chengji - 60) / 10; }
}
return jidian;
}
}
interface Classes //接口声明
{
int Chengji { get; set; }
double Classesfen { get; set; }
string classespingyou(string pingyou, double jidian);
}
public class BenClasses : Classes //接口实现
{
private double classesfen; private int chengji;
public int Chengji { get=> chengji; set=>chengji=value; }
public double Classesfen
{
get { return classesfen; }
set { classesfen = value; }
}
public string classespingyou(string pingyou, double jidian)
{
return string.Format("您的成绩为:{0},绩点为:{1}",pingyou ,jidian );
}
}
#OK!
#转载请注明原作者,谢谢!