VS 2010 编译出错:error LNK2005求帮助
/*person.h*/
#ifndef PERSON_H
#define PERSON_H
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
enum Title{zg=1,fg,zj,cj,jx,Null};
enum Position{ky=1,fk,zk,fc,zc,ft,zt,NUll}; //科员,副科,正科,副处,正处,副厅,正厅
class CDate{ //定义电子日历类
public:
//默认构造函数
CDate(int year=1985,int month=10,int day=1){ //带参构造函数
SetDate(year,month,day); //调用成员函数来初始化
}
void show(){
cout<<m_nYear<<"/"<<m_nMonth<<"/"<<m_nDay<<endl; //显示日期
}
void SetDate(int year,int month,int day){
m_nYear=year;
m_nMonth=month;
m_nDay=day; //设置日期
}
friend ostream& operator<<(ostream& osObject,const CDate &d){
osObject<<d.m_nYear<<"/"<<d.m_nMonth<<"/"<<d.m_nDay<<endl;
return osObject;
}
friend istream& operator>>(istream& isObject,CDate &d){
isObject>>d.m_nYear>>d.m_nMonth>>d.m_nDay;
return isObject;
}
int getyear(){
return m_nYear;
}
int getmonth(){
return m_nMonth;
}
int getday(){
return m_nDay;
}
private:
int m_nYear;
int m_nMonth;
int m_nDay; //日 月 年
};
class Person{
public:
Person(int by=2010,int bm=8,int bd=30,int wy=1985,int wm=10,int wd=1,char *n="李小军",bool s=true,int a=25);
int getID(){return ID;}
string getname(){return name;}
bool getsex(){return sex;}
int getage(){return age;}
bool operator==(const Person &t)const;
bool operator<(const Person &t)const;
void input();
void show();
static int CUR_ID;
int getBir_year(){return birthday.getyear();}
int getBir_month(){return birthday.getmonth();}
int getBir_day(){return birthday.getday();}
int getWor_year(){return work_time.getyear();}
int getWor_month(){return work_time.getmonth();}
int getWor_day(){return work_time.getday();}
protected:
int ID; //工号
string name; //姓名
CDate birthday; //出生日期
bool sex; //性别
int age; //年龄
CDate work_time; //入伍时间
};
class Teacher:virtual public Person{
public:
Teacher(int by=2010,int bm=8,int bd=30,int wy=1985,int wm=10,int wd=1,char *n="李小军", bool s=true,int a=25,Title t=Null); //派生类的构造函数
void input();
void show();
Title gettitle(){return title;}
protected:
Title title; //职称
float wage;
};
class Administrator:virtual public Person{
public:
Administrator(int by=2010,int bm=8,int bd=30,int wy=1985,int wm=10,int wd=1,char *n="李小军",bool s=true,int a=25,Position p=NUll); //派生类的构造函数
void show();
void input();
Position getposition(){return position;}
protected:
Position position; //职务
float wage;
};
class Admin_tea:public Teacher,public Administrator{
public:
Admin_tea(int by=2010,int bm=8,int bd=30,int wy=1985,int wm=10,int wd=1,char *n="李小军",bool s=true,int a=25,Title t=Null,Position p=NUll); //派生类的构造函数
void show();
void input();
void set(int id,string sname,int by,int bm,int bd,bool xb,int a,int wy,int wm,int wd,Title t,Position p,float w){
birthday.SetDate(by,bm,bd);
work_time.SetDate(wy,wm,wd);
ID=id;
name=sname;
age=a;
sex=xb;
title=t;
position=p;
wage=w;
}
float getwage(){return wage;}
private:
float wage;
};
#endif
/*person.cpp*/
#include "person.h"
void Display_Title(Title &t){
switch(t){
case 1: cout<<"正高\n"; break;
case 2: cout<<"副高\n"; break;
case 3: cout<<"中级\n"; break;
case 4: cout<<"初级\n"; break;
case 5: cout<<"见习\n"; break;
default: cout<<"临时工\n";
}
}
void Display_Position(Position &p){
switch(p){
case 1: cout<<"科员\n"; break;
case 2: cout<<"副科\n"; break;
case 3: cout<<"正科\n"; break;
case 4: cout<<"副处\n"; break;
case 5: cout<<"正处\n"; break;
case 6: cout<<"副厅\n"; break;
case 7: cout<<"正厅\n"; break;
default: cout<<"临时工\n";
}
}
void input_Title(Title &t){
string s;
cin>>s;
if(s=="zg"||s=="正高"||s=="教授") t=zg;
else if(s=="fg"||s=="副高"||s=="副教授") t=fg;
else if(s=="zj"||s=="中级"||s=="讲师") t=zj;
else if(s=="cj"||s=="初级"||s=="助教") t=cj;
else if(s=="jx"||s=="见习"||s=="见习助教") t=jx;
else if(s=="") t=Null;
else cout<<"输入有误\n";
}
void input_Position(Position &p){
string s; cin>>s;
if(s=="ky"||s=="科员") p=ky;
else if(s=="fk"||s=="副科") p=fk;
else if(s=="zk"||s=="正科") p=zk;
else if(s=="fc"||s=="副处") p=fc;
else if(s=="zc"||s=="正处") p=zc;
else if(s=="ft"||s=="副厅") p=ft;
else if(s=="zt"||s=="正厅") p=zt;
else if(s=="") p=NUll;
else cout<<"输入有误\n";
}
Person::Person(int by,int bm,int bd,int wy,int wm,int wd,char *n,bool s,int a):birthday(by,bm,bd),work_time(wy,wm,wd){ //基类的构造函数
ID=++CUR_ID;
name=n;
sex=s;
age=a;
}
void Person::show(){
cout<<"工号:"<<ID<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"出生日期:";
birthday.show();
cout<<"性别:";
if(sex)
cout<<"男"<<endl;
else
cout<<"女"<<endl;
cout<<"年龄:"<<age<<endl;
cout<<"入伍时间:";
work_time.show();
}
/*
bool Person::operator==(const Admin_tea &at)const
{
if(ID==at.ID) return true;
else return false;
}
bool Person::operator<(const Admin_tea &)const;
{if(ID<at.ID) return true;
else return false;
}
*/
Teacher::Teacher(int by,int bm,int bd ,int wy,int wm,int wd,char *n,bool s,int a,Title t):Person(by,bm,bd,wy,wm,wd,n,s,a){
title=t;
switch(title){
case 1: wage=5000; break;
case 2: wage=4500; break;
case 3: wage=4000; break;
case 4: wage=3500; break;
case 5: wage=3000; break;
default: wage=1500;
}
}
void Teacher::show(){
Person::show();
cout<<"职称: ";
Display_Title(title);
cout<<"工资: "<<wage<<endl;
cout<<endl;
}
Administrator::Administrator(int by,int bm,int bd ,int wy,int wm,int wd,char *n,bool s,int a,Position p):Person(by,bm,bd,wy,wm,wd,n,s,a){
position=p;
switch(position){
case 1: wage=3000; break;
case 2: wage=3500; break;
case 3: wage=4000; break;
case 4: wage=4500; break;
case 5: wage=5000; break;
case 6: wage=5500; break;
case 7: wage=6000; break;
case 8: wage=1000; break;
default: wage=1500;
}
}
void Administrator::show(){
Person::show();
cout<<"职务: "; Display_Position(position);
cout<<"工资: "<<wage<<endl;
cout<<endl;
}
Admin_tea::Admin_tea(int by,int bm,int bd ,int wy,int wm,int wd,char *n,bool s,int a,Title t,Position p)
:Person(by,bm,bd,wy,wm,wd,n,s,a),Teacher(by,bm,bd,wy,wm,wd,n,s,a,t),Administrator(by,bm,bd,wy,wm,wd,n,s,a,p){
switch(position){
case 1: wage=Teacher::wage+300; break;
case 2: wage=Teacher::wage+600; break;
case 3: wage=Teacher::wage+900; break;
case 4: wage=Teacher::wage+1200; break;
case 5: wage=Teacher::wage+1500; break;
case 6: wage=Teacher::wage+1800; break;
case 7: wage=Teacher::wage+2100; break;
case 8: wage=Teacher::wage;
}
}
void Admin_tea::show(){
Person::show();
if(position==NUll) {cout<<"职称:"; Display_Title(title);}
if(title==Null) {cout<<"职务级别:"; Display_Position(position);};
cout<<"工资: "<<wage<<endl;
cout<<endl;
}
void Person::input(){
string xb;
cout << "工号:"<<ID<<endl;
cout<<"姓名:"; cin>>name;
cout<<"出生日期:"; cin>>birthday;
cout<<"性别:"; cin>>xb; if(xb=="男") sex=true; else sex=false;
cout<<"年龄:"; cin>>age;
cout<<"入伍时间:"; cin>>work_time;
}
void Teacher::input(){
Person::input();
cout<<"职称:"; input_Title(title);
cout<<"工资:"<<wage<<endl;
}
void Administrator::input(){
Person::input();
cout<<"职务级别:"; input_Position(position);
cout<<"工资:"<<wage<<endl;
}
void Admin_tea::input(){
Teacher::input();
cout<<"职务级别:"; input_Position(position);
cout<<"工资:"<<wage<<endl;
}
/*
friend ostream& operator<<(ostream& osObject, const Person *per)
{ per->show();
}
*/
main.cpp
[其他解释]
56
[其他解释]
出现了下面的错误,求帮助
1>lab9.obj : error LNK2005: "void __cdecl Display_Title(enum Title &)" (?Display_Title@@YAXAAW4Title@@@Z) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "void __cdecl Display_Position(enum Position &)" (?Display_Position@@YAXAAW4Position@@@Z) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "void __cdecl input_Title(enum Title &)" (?input_Title@@YAXAAW4Title@@@Z) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "void __cdecl input_Position(enum Position &)" (?input_Position@@YAXAAW4Position@@@Z) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: __thiscall Person::Person(int,int,int,int,int,int,char *,bool,int)" (??0Person@@QAE@HHHHHHPAD_NH@Z) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Person::show(void)" (?show@Person@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: __thiscall Teacher::Teacher(int,int,int,int,int,int,char *,bool,int,enum Title)" (??0Teacher@@QAE@HHHHHHPAD_NHW4Title@@@Z) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Teacher::show(void)" (?show@Teacher@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: __thiscall Administrator::Administrator(int,int,int,int,int,int,char *,bool,int,enum Position)" (??0Administrator@@QAE@HHHHHHPAD_NHW4Position@@@Z) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Administrator::show(void)" (?show@Administrator@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: __thiscall Admin_tea::Admin_tea(int,int,int,int,int,int,char *,bool,int,enum Title,enum Position)" (??0Admin_tea@@QAE@HHHHHHPAD_NHW4Title@@W4Position@@@Z) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_tea::show(void)" (?show@Admin_tea@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Person::input(void)" (?input@Person@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Teacher::input(void)" (?input@Teacher@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Administrator::input(void)" (?input@Administrator@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_tea::input(void)" (?input@Admin_tea@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "void __cdecl menu(void)" (?menu@@YAXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: __thiscall Admin_teaDatabase::Admin_teaDatabase(void)" (??0Admin_teaDatabase@@QAE@XZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_teaDatabase::Add(void)" (?Add@Admin_teaDatabase@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_teaDatabase::Find(void)" (?Find@Admin_teaDatabase@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_teaDatabase::Delete(void)" (?Delete@Admin_teaDatabase@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_teaDatabase::Modify(void)" (?Modify@Admin_teaDatabase@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_teaDatabase::Statistics(void)" (?Statistics@Admin_teaDatabase@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_teaDatabase::Display(void)" (?Display@Admin_teaDatabase@@QAEXXZ) 已经在 DataBase.obj 中定义
1>lab9.obj : error LNK2005: "public: void __thiscall Admin_teaDatabase::Save(void)" (?Save@Admin_teaDatabase@@QAEXXZ) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "void __cdecl Display_Title(enum Title &)" (?Display_Title@@YAXAAW4Title@@@Z) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "void __cdecl Display_Position(enum Position &)" (?Display_Position@@YAXAAW4Position@@@Z) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "void __cdecl input_Title(enum Title &)" (?input_Title@@YAXAAW4Title@@@Z) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "void __cdecl input_Position(enum Position &)" (?input_Position@@YAXAAW4Position@@@Z) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: __thiscall Person::Person(int,int,int,int,int,int,char *,bool,int)" (??0Person@@QAE@HHHHHHPAD_NH@Z) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: void __thiscall Person::show(void)" (?show@Person@@QAEXXZ) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: __thiscall Teacher::Teacher(int,int,int,int,int,int,char *,bool,int,enum Title)" (??0Teacher@@QAE@HHHHHHPAD_NHW4Title@@@Z) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: void __thiscall Teacher::show(void)" (?show@Teacher@@QAEXXZ) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: __thiscall Administrator::Administrator(int,int,int,int,int,int,char *,bool,int,enum Position)" (??0Administrator@@QAE@HHHHHHPAD_NHW4Position@@@Z) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: void __thiscall Administrator::show(void)" (?show@Administrator@@QAEXXZ) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: __thiscall Admin_tea::Admin_tea(int,int,int,int,int,int,char *,bool,int,enum Title,enum Position)" (??0Admin_tea@@QAE@HHHHHHPAD_NHW4Title@@W4Position@@@Z) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: void __thiscall Admin_tea::show(void)" (?show@Admin_tea@@QAEXXZ) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: void __thiscall Person::input(void)" (?input@Person@@QAEXXZ) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: void __thiscall Teacher::input(void)" (?input@Teacher@@QAEXXZ) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: void __thiscall Administrator::input(void)" (?input@Administrator@@QAEXXZ) 已经在 DataBase.obj 中定义
1>person.obj : error LNK2005: "public: void __thiscall Admin_tea::input(void)" (?input@Admin_tea@@QAEXXZ) 已经在 DataBase.obj 中定义
1>E:\C课程学习\人事\1111\Debug\1111.exe : fatal error LNK1169: 找到一个或多个多重定义的符号