using System;
namespace Exam
{
public delegate void DelegateEndExam(DateTime t,Student s);
public class Student
{
private String _name;
public event DelegateEndExam FinishExam;
public Student(String name)
{
_name=name;
}
public void BeginTest(DateTime bt)
{
Console.WriteLine("{0}/t{1}开始答题",_name,bt);
}
public void HandInPaper()
{
Console.WriteLine("{0}/t答题完成",this.ToString());
FinishExam(DateTime.Now,this);
}
public override string ToString()
{
return _name;
}
}
public delegate void DelegateBeginExam(DateTime t);
class Teacher
{
public event DelegateBeginExam BeginExam;
public Teacher()
{}
public void SendBeginExam()
{
BeginExam(DateTime.Now);
}
public void AcceptPaper(DateTime t,Student s)
{
Console.WriteLine("收{0}/t的试卷",s.ToString());
}
}
public class Exam
{
public Exam()
{}
public static void Main()
{
Teacher teacher=new Teacher();
Student[] students=new Student[5];
int index=0;
students[index++]=new Student("Jack");
students[index++]=new Student("Tom");
students[index++]=new Student("Jim");
students[index++]=new Student("Baker");
students[index++]=new Student("Lucy");
foreach(Student tr in students)
{
teacher.BeginExam+=new DelegateBeginExam(tr.BeginTest);
tr.FinishExam+=new DelegateEndExam(teacher.AcceptPaper);
}
teacher.SendBeginExam();
foreach(Student stu in students)
{
stu.HandInPaper();
}
}
}
}