主函数调用时,被调函数定义不明,什么问题
这是一个多文件的程序。三个文件,第一个是person.h,定义了类的成员。第二个是person.cpp,实现类。第三个是主函数文件。为什么会在编译时出现被调函数定义不明呢? 代码在下面,可以编译下看!//person.h
class person
{
private:
char num[10]; //编号
char type[20]; //人员类型
char name[20]; //姓名
char sex[10]; //性别
char age[10]; //年龄
char zhiwu[20]; //职务
char zhicheng[20]; //职称
char zzmm[20]; //政治面貌
char zgxl[20]; //最高学历
char rzsj[20]; //任职时间
char lysj[30]; //来院时间
static int bianhao; //计数器
public:
void setperson(char *tyoe1,char *name1,char *sex1,char *age1,char *zhiwu1,char *zhicheng1,char *zzmm1,char *zgxl1,char *rzsj1,char *lysj1);
static int& getbianhao() {return bianhao;};
char *gettype() {return type;};
char *getname() {return name;};
char *getsex() {return sex;};
char *getage() {return age;};
char *getzhiwu() {return zhiwu;};
char *getzhicheng() {return zhicheng;};
char *getzzmm() {return zzmm;};
char *getzgxl() {return zgxl;};
char *getrzsj() {return rzsj;};
char *getlysj() {return lysj;};
char *getnum() {return num;};
void tjry();
void find();
void output();
void shanchu();
void xiugai();
void tongji();
};
person p[100];
person pp[100];
int k;
int k1;
int person::bianhao=0;
//person.cpp
#include<iostream>
#include<fstream>
#include<cstring>
#include<iomanip>
#include"person.h"
using namespace std;
//#######################################################################################
void person::setperson(char *type1,char *name1,char *sex1,char *age1,char *zhiwu1,char *zhicheng1,char *zzmm1,char *zgxl1,char *rzsj1,char *lysj1)
{
int static j=1;
strcpy(type,type1);
strcpy(name,name1);
strcpy(sex,sex1);
strcpy(age,age1);
strcpy(zhiwu,zhiwu1);
strcpy(zhicheng,zhicheng1);
strcpy(zzmm,zzmm1);
strcpy(zgxl,zgxl1);
strcpy(rzsj,rzsj1);
strcpy(lysj,lysj1);
bianhao++;
ofstream file("添加人员.txt",ios_base::app);
file<<p[j].getbianhao()<<endl;
file<<p[j].gettype()<<endl;
file<<p[j].getname()<<endl;
file<<p[j].getsex()<<endl;
file<<p[j].getage()<<endl;
file<<p[j].getzhiwu()<<endl;
file<<p[j].getzhicheng()<<endl;
file<<p[j].getzzmm()<<endl;
file<<p[j].getzgxl()<<endl;
file<<p[j].getrzsj()<<endl;
file<<p[j].getlysj()<<endl;
j++;
file.close();
}
//#######################################################################################
void person::tongji() //统计人员信息
{
int a=0,b=0,c=0,d=0,k=1;
ifstream filem("添加人员.txt",ios_base::in);
while(!filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhicheng();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
if(strcmp(pp[k].gettype(),"行政人员")==0||strcmp(pp[k].gettype(),"教师")==0||strcmp(pp[k].gettype(),"一般员工")==0)
a++;
if(strcmp(pp[k].getzzmm(),"党员")==0)
b++;
if(strcmp(pp[k].getsex(),"女")==0)
c++;
if(strcmp(pp[k].getzgxl(),"博士")==0)
d++;
k++;
}
filem.close();
cout<<setw(8)<<"在职人数"<<setw(12)<<"党员人数"<<setw(12)<<"女工人数"<<setw(12)<<"高学历人数"<<endl;
cout<<setw(8)<<a<<setw(12)<<b<<setw(12)<<c<<setw(12)<<d<<endl;
}
//#######################################################################################
void person::xiugai() //修改人员信息
{
int k=1;
ifstream filem("添加人员.txt",ios_base::in);
while(!filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhicheng();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
k++;
}
filem.close();
cout<<"请输入要修改的人的编号:"<<endl;
int x,y;
cin>>x;
cout<<"请输入编号为"<<x<<"的人需要修改的项目的代号:"<<endl;
cout<<"1:编号-2:人员类型-3:姓名-4:性别-5:年龄-6:职务-7:职称-8:政治面貌-9:最高学历-10:任职时间-11:来院时间"<<endl;
cin>>y;
switch(y)
{
case 1:
{cout<<"请输入新的编号:"; cin>>pp[x].getnum();} break;
case 2:
{cout<<"请输入新的人员类型:"; cin>>pp[x].gettype();} break;
case 3:
{cout<<"请输入新的姓名:";cin>>pp[x].getname();} break;
case 4:
{cout<<"请输入新的性别:";cin>>pp[x].getsex();} break;
case 5:
{cout<<"请输入新的年龄:";cin>>pp[x].getage();} break;
case 6:
{cout<<"请输入新的职务:";cin>>pp[x].getzhiwu();} break;
case 7:
{cout<<"请输入新的职称:";cin>>pp[x].getzhicheng();} break;
case 8:
{cout<<"请输入新的政治面貌:";cin>>pp[x].getzzmm();} break;
case 9:
{cout<<"请输入新的最高学历:";cin>>pp[x].getzgxl();} break;
case 10:
{cout<<"请输入新的任职时间:";cin>>pp[x].getrzsj();} break;
case 11:
{cout<<"请输入新的来院时间:";cin>>pp[x].getlysj();} break;
}
ofstream file1("添加人员.txt",ios_base::trunc);
for(k=1;k<=bianhao;k++)
{
file1<<pp[k].getnum()<<endl;
file1<<pp[k].gettype()<<endl;
file1<<pp[k].getname()<<endl;
file1<<pp[k].getsex()<<endl;
file1<<pp[k].getage()<<endl;
file1<<pp[k].getzhiwu()<<endl;
file1<<pp[k].getzhicheng()<<endl;
file1<<pp[k].getzzmm()<<endl;
file1<<pp[k].getzgxl()<<endl;
file1<<pp[k].getrzsj()<<endl;
file1<<pp[k].getlysj()<<endl;
}
file1.close();
cout<<"修改并保存完毕"<<endl;
}
//#######################################################################################
void person::shanchu() //删除人员信息
{
int z;
ifstream filem("添加人员.txt",ios_base::in);
int k=1;
while(!filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhicheng();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
k++;
}
filem.close();
cout<<"请输入要被删除的人员信息编号:"<<endl;
cin>>z;
while(z<1 || z>bianhao)
{
cout<<"没有找到你要删除的人,请重新输入:"<<endl;cin>>z;
}
ofstream file2("添加人员.txt",ios_base::trunc);
for(k=1;k<=bianhao;k++)
{
if(z==k) break;
file2<<pp[k].getnum()<<endl;
file2<<pp[k].gettype()<<endl;
file2<<pp[k].getname()<<endl;
file2<<pp[k].getsex()<<endl;
file2<<pp[k].getage()<<endl;
file2<<pp[k].getzhiwu()<<endl;
file2<<pp[k].getzhicheng()<<endl;
file2<<pp[k].getzzmm()<<endl;
file2<<pp[k].getzgxl()<<endl;
file2<<pp[k].getrzsj()<<endl;
file2<<pp[k].getlysj()<<endl;
}
for(k=z+1;k<=bianhao;k++)
{
file2<<pp[k-1].getnum()<<endl;
file2<<pp[k].gettype()<<endl;
file2<<pp[k].getname()<<endl;
file2<<pp[k].getsex()<<endl;
file2<<pp[k].getage()<<endl;
file2<<pp[k].getzhiwu()<<endl;
file2<<pp[k].getzhicheng()<<endl;
file2<<pp[k].getzzmm()<<endl;
file2<<pp[k].getzgxl()<<endl;
file2<<pp[k].getrzsj()<<endl;
file2<<pp[k].getlysj()<<endl;
}
file2.close();
cout<<"删除记录完毕"<<endl;
}
//#######################################################################################
void person::find() //查询人员信息
{
cout<<"1:按编号查询——2:按姓名查询——请选择(1-2)"<<endl;
int m;
cin>>m;
while(m<1 || m>2)
{
cout<<"请重新输入(1-2)"<<endl; cin>>m;
}
switch(m)
{
case 1:
{
char n[10];
cout<<"请输入要查找的编号:";
cin>>n;
ifstream filem("添加人员.txt",ios_base::in);
int k=1;
while(!filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhicheng();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
if(strcmp(pp[k].getnum(),n)==0)
{
cout<<setw(4)<<"编号"<<setw(9)<<"人员类型"<<setw(8)<<"姓 名"<<setw(5)<<"性别"<<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称"<<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职时间"<<setw(10)<<"来院时间"<<endl;
cout<<setw(4)<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(8)<<pp[k].getname()<<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage()<<setw(5)<<pp[k].getzhiwu()<<setw(5)<<pp[k].getzhicheng()<<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl()<<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;
break;
}
k++;
if(filem.eof())
{cout<<"\n 警告:没有要查找的人!!!!!!";}
}
filem.close();
}
break;
case 2:
{
char nname[20];
cout<<"请输入要查找的姓名:";
cin>>nname;
ifstream filem("添加人员.txt",ios_base::in);
int k=1;
while(!filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhicheng();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
if(strcmp(pp[k].getname(),nname)==0)
{
cout<<setw(4)<<"编号"<<setw(9)<<"人员类型"<<setw(8)<<"姓 名"<<setw(5)<<"性别"<<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称"<<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职时间"<<setw(10)<<"来院时间"<<endl;
cout<<setw(4)<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(8)<<pp[k].getname()<<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage()<<setw(5)<<pp[k].getzhiwu()<<setw(5)<<pp[k].getzhicheng()<<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl()<<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;
break;
}
k++;
if(filem.eof())
{cout<<"\n 警告:没有要查找的人!!!!!!";}
}
while(!filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhicheng();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
if(strcmp(pp[k].getname(),nname)==0)
{
cout<<setw(4)<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(8)<<pp[k].getname()<<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage()<<setw(5)<<pp[k].getzhiwu()<<setw(5)<<pp[k].getzhicheng()<<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl()<<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;
continue;
}
k++;
}
filem.close();
}
break;
}
}
//#######################################################################################
void person::tjry() //添加人员信息
{
int v,l=1;
char type2[20],name2[20],sex2[10],age2[10],zhiwu2[20],zhicheng2[20],zzmm2[20],zgxl2[20],rzsj2[20],lysj2[30];
cout<<"请输入要添加的人数"<<endl;
cin>>k;
p[1].getbianhao()=pp[k1].getbianhao();
v=bianhao;
for(int i=v+1;i<=v+k;i++)
{
cout<<"请输入第"<<l<<"个人的信息"<<endl;
cout<<"人员类型:"; cin>>type2;
cout<<"姓名:"; cin>>name2;
cout<<"性别:"; cin>>sex2;
cout<<"年龄:"; cin>>age2;
cout<<"职务:"; cin>>zhiwu2;
cout<<"职称:"; cin>>zhicheng2;
cout<<"政治面貌:"; cin>>zzmm2;
cout<<"最高学历:"; cin>>zgxl2;
cout<<"任职时间:"; cin>>rzsj2;
cout<<"来院时间:"; cin>>lysj2;
p[i].setperson(type2,name2,sex2,age2,zhiwu2,zhicheng2,zzmm2,zgxl2,rzsj2,lysj2);
l++;
}
}
//#######################################################################################
void person::output() //显示人员信息
{
ifstream filem("添加人员.txt",ios_base::in);
int k=1;
cout<<setw(4)<<"编号"<<setw(9)<<"人员类型"<<setw(8)<<"姓 名"<<setw(5)<<"性别"<<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称"<<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职时间"<<setw(10)<<"来院时间"<<endl;
while(!filem.eof())
{
filem>>pp[k].getbianhao();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhicheng();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
cout<<setw(4)<<pp[k].getbianhao()<<setw(9)<<pp[k].gettype()<<setw(8)<<pp[k].getname()<<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage()<<setw(5)<<pp[k].getzhiwu()<<setw(5)<<pp[k].getzhicheng()<<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl()<<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;
k++;
}
k1=--k;
filem.close();
}
//#######################################################################################
void menu() //菜单
{
person pjk;
int c;
cout<<endl;
cout<<"------------------------高校人事管理系统---------------------------"<<endl;
cout<<"* *"<<endl;
cout<<"* 1--添加人员信息并保存 *"<<endl;
cout<<"* 2--删除人员信息 *"<<endl;
cout<<"* 3--修改人员信息 *"<<endl;
cout<<"* 4--查询人员信息 *"<<endl;
cout<<"* 5--统计人员信息 *"<<endl;
cout<<"* 6--显示所有信息 *"<<endl;
cout<<"* 7--退出 *"<<endl;
cout<<"-------------------------------------------------------------------"<<endl;
cout<<" 请选择(1-7): "<<endl;
cin>>c;
switch(c)
{
case 1: pjk.tjry();menu(); break;
case 2: pjk.shanchu();menu(); break;
case 3: pjk.xiugai();menu(); break;
case 4: pjk.find(); cout<<endl<<endl; menu(); break;
case 5: pjk.tongji();menu(); break;
case 6: pjk.output();menu(); break;
case 7: exit(1);break;
}
}
//#######################################################################################
//gxrsgl.cpp
#include<iostream>
#include<fstream>
#include<cstring>
#include<iomanip>
#include"person.h"
using namespace std;
void main()
{
menu();
}