新手作业球大神指点头文件的有关问题

新手作业球大神指点头文件的问题
class Date
{
private:
int year;
int month;
int day;
static int maxYear;
static int minYear;
public: 
Date(int year,int month,int day);
Date();
int GetYear();
static void SetMaxYear(int a);
static void SetMinYear(int b);
friend class Student;
};
int Date::maxYear=0;
int Date::minYear=0;


#include "Date.h"
void Date::SetMaxYear(int a)
{
maxYear=a-13;
}
void Date::SetMinYear(int b)
{
minYear=b;
}
int Date::GetYear()
{
return year;
}
Date ::Date(int year,int month,int day)
{
this->year=year;
this->month=month;
this->day=day;
}
Date::Date()
{
}







#include <iostream>
using namespace std;
#include <string.h>
#include "Date.h"
class Student
{
private:
int no;
string name;
Date bir;
public:
Student();
Student(int m,string s,int year,int month,int day);
string GetName();
Date GetBir();
};


#include "Student.h"
Student ::Student()
{
}
Student::Student(int m,string s,int year,int month,int day):bir(year,month,day)
{

this->name=s;
this->no=m;
}
string Student::GetName()
{
string a;
a=name;
return a;
}
Date Student::GetBir()
{
return bir;
}













#include <iostream>
using namespace std;
#include"Student.h"
#include <vector>
using namespace std;
class StudentList
{
private:
vector <Student> stuArr;
public:
StudentList(Student s1);
StudentList();
Student GetStudent (int year1,int year2);
void AddStudent(Student s2);
void DeleteStudent(string s);
};



#include "StudentList.h"
#include <vector>
#include <string>
StudentList::StudentList(Student s1)
{
stuArr.push_back(s1);
}
StudentList::StudentList()
{
}
void StudentList::AddStudent(Student s2)
{
stuArr.push_back(s2);
}
void StudentList::DeleteStudent(string s)
{
vector <Student> ::iterator p1;
p1=stuArr.begin();
if (stuArr.size()==0)
{
cout<<"当前列表没有元素可以删除"<<endl;
}
else
{
while (p1!=stuArr.end())
{
if(p1->GetName()==s)
{
stuArr.erase(p1);
}
}
}
}
Student StudentList::GetStudent (int year1,int year2)
{
Student stu;
vector<Student>::iterator p2;
p2=stuArr.begin();
if(stuArr.size()==0)
{
cout<<"当前数组没有元素可以查找"<<endl;
}
else
{
while(p2!=stuArr.end())
{
 if((p2->GetBir().GetYear()>year1)&&(p2->GetBir().GetYear()<year2))
 {
    stu=*p2;
 }
}
}
return stu;
}




c:\documents and settings\administrator\桌面\实验9\实验9\date.h(2) : error C2011: 'Date' : 'class' type redefinition
c:\documents and settings\administrator\桌面\实验9\实验9\date.h(17) : error C2374: 'private: static int Date::maxYear' : redefinition; multiple initialization
        c:\documents and settings\administrator\桌面\实验9\实验9\date.h(7) : see declaration of 'private: static int Date::maxYear'
c:\documents and settings\administrator\桌面\实验9\实验9\date.h(18) : error C2374: 'private: static int Date::minYear' : redefinition; multiple initialization
        c:\documents and settings\administrator\桌面\实验9\实验9\date.h(8) : see declaration of 'private: static int Date::minYear'
c:\documents and settings\administrator\桌面\实验9\实验9\date.h(2) : error C2011: 'Date' : 'class' type redefinition
c:\documents and settings\administrator\桌面\实验9\实验9\date.h(17) : error C2374: 'private: static int Date::maxYear' : redefinition; multiple initialization
        c:\documents and settings\administrator\桌面\实验9\实验9\date.h(7) : see declaration of 'private: static int Date::maxYear'
c:\documents and settings\administrator\桌面\实验9\实验9\date.h(18) : error C2374: 'private: static int Date::minYear' : redefinition; multiple initialization
        c:\documents and settings\administrator\桌面\实验9\实验9\date.h(8) : see declaration of 'private: static int Date::minYear'
c:\documents and settings\administrator\桌面\实验9\实验9\student.h(6) : error C2011: 'Student' : 'class' type redefinition
Error executing cl.exe.
连接出错这么多问题是什么地方出错了


------解决思路----------------------
引用:
头文件的包含顺序有讲究吗,还有using namespace std这句是什么意思这个是一定要和#include <iostream>一起使用的对吗

加了using std,标准库的函数,类,才会曝光出来。
------解决思路----------------------
using namespace std,是用Using指示的std标准库,楼上说的对,只有指示过后才会曝光命名空间的所有函数,变量,以及类等等,你把Using放在包含头文件前面,程序会默认使用std空间,你再后面有#include头文件的可能会出现编译问题,最好将你的Using  namespace std;放到所有#include头文件之后