#include #define maxsize 100 fstream iofile; //文件指针 class Time //时间类 { public: int year; int month; int day; }; class Telem //个人信息 { public: char name[20]; char sex[10]; Time birthtime; //组合Time类 char num[20]; char wage[20]; Time worktime; int year; char department[20]; friend istream& operator>>(istream& input,Telem& T); friend ostream& operator<<(ostream& output,Telem& T); friend int operator-(Time & t1,Time & t2); }; class People:virtual public Telem //雇员类 { public: People(); virtual void AddF()=0; //添加 virtual void Addall()=0; virtual void Add()=0; virtual void Display(); //输出数组的内容 virtual void Displaypart(char p[]); 1 virtual void Findname(char n[]); virtual void Findyear(int ); virtual void Del(char n[])=0; virtual void Del(int ); protected: Telem data[maxsize]; Time now; int length; }; class Teacher:virtual public People //派生虚基类 { public: virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n[]); }; class worker:virtual public People //派生虚基类 { public: virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n[]); }; People::People() //系统自动生成的构造函数 { length=0; now.year=2010; now.month=7; now.day=6; } void People::Display() //引用 { int i; for(i=0;i cout<void People::Displaypart(char p[])//引用数组 { int i,c; for(i=0;i cout<<\"输出选择姓名1 性别2 编号3 工资4 出生日期5 工作时间6 年龄7 系别8 退出选择9\"< switch(c) { case 1: cout<<\"姓名:\"<case 8: cout<<\"系别:\"<default:cout<<\"操作错误......\"< int i; for(i=0;i int i; for(i=0;i } void People::Del(int i) { int j; if(i<1||i>length) cout<<\"不存在第\"<void worker::AddF() { int flag=0; iofile.open(\"worker_information.txt\文件的打开与关闭 while(iofile.seekg(ios::cur)) { iofile.seekg(length*sizeof(data[length]),ios::beg); iofile.read((char*)&data[length],sizeof(data[length])); //文件的随机访问 length++; if(length==maxsize) { flag=1; goto loop; } } People::Del(length); cout<<\"添加人员信息成功......\"< cout<<\"人员信息储存空间已满......\"< char ans; int flag=0; iofile.open(\"worker_information.txt\ do { cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<\"添加人员信息成功......\"< length++; if(length==maxsize) { flag=1; goto loop; } cout<<\"contine(Y|N)?\"; cin>>ans; }while('y'==ans||'Y'==ans); loop: if(1==flag) cout<<\"人员信息储存空间已满......\"< int flag=0; iofile.open(\"worker_information.txt\ if(length==maxsize) { flag=1; goto loop; } cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<\"添加人员信息成功......\"< cout<<\"人员信息储存空间已满......\"< cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"< void worker::Del(char n[]) { int i,j,k; for(i=0;i k=i+1;break; } if(k<1) cout<<\"不存在姓名\"< int j; if(i<1||i>length) cout<<\"不存在第\"<cout<<\"删除成功......\"< int flag=0; iofile.open(\"Teacher_information.txt\ while(iofile.seekg(sizeof(data[length]),ios::cur)) { if(iofile.seekg(length*sizeof(data[length]),ios::beg)) iofile.read((char*)&data[length],sizeof(data[length])); else break; length++; if(length==maxsize) { flag=1; goto loop; } } People::Del(length); 6 cout<<\"添加人员信息成功......\"< cout<<\"人员信息储存空间已满......\"< char ans; int flag=0; iofile.open(\"Teacher_information.txt\ do { cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<\"添加人员信息成功......\"< flag=1; goto loop; } cout<<\"contine(Y|N)?\"; cin>>ans; }while('y'==ans||'Y'==ans); loop: if(1==flag) cout<<\"人员信息储存空间已满......\"< int flag=0; iofile.open(\"Teacher_information.txt\ if(length==maxsize) { flag=1; goto loop; } cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<\"添加人员信息成功......\"< length++; loop: if(1==flag) cout<<\"人员信息储存空间已满......\"< cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆教师信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"< int i,j,k; for(i=0;i k=i+1;break; } if(k<1) cout<<\"不存在姓名\"< int j; if(i<1||i>length) cout<<\"不存在第\"<cout<<\"删除成功......\"< int y,m,d; 8 cout<<\"请输入姓名(以*结尾):\"< T.birthtime.year=(y>=1900&&y<=2100)?y:1900; T.birthtime.month=(m>=1&&m<=12)?m:1; T.birthtime.day=(d>=1&&d<=31)?d:1; cout<<\"请输入系别(以*结尾):\"< T.worktime.year=(y>=1900&&y<=2100)?y:1900; T.worktime.month=(m>=1&&m<=12)?m:1; T.worktime.day=(d>=1&&d<=31)?d:1; return input; } ostream& operator<<(ostream& output,Telem& T) { cout<<\"姓名:\"; output< 9 return t1.year-t2.year; } void Showmenu() { cout< Teacher tea; worker stu; People *pt=&tea; People *ps=&stu; int c=0,k=0,l=0,i=0; char nam[20],part[20]; Showmenu(); for(;;) { cout<<\"请根据菜单执行相应操作: \"; cin>>c; switch(c) { case 1: { cout<<\" ★ ☆ ★ ☆ ★ ☆ ★录入全部人员记录 ★ ☆ ★ ☆ ★ ☆ ★\"< cout<<\" ★ ☆ ★ ☆ ★从键盘输入教师信息 ☆ ★ ☆ ★ ☆\"< cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆从键盘输入工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"< cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆从键盘增加一位人员记录 ★ ☆ ★ ☆ ★ ☆ ★ ☆\"< pt->Add(); else if(2==k) ps->Add(); else cout<<\"操作错误...\"< cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆按部门输出人员信息(可选) ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"< cout<<\"请输入要输出人员的系别(以*结尾):\"< 11 else if(2==k) { cout<<\"请输入要输出人员的系别(以*结尾):\"< else cout<<\"操作错误......\"< cout<<\"按姓名查找1 按年龄查找2\"< cout<<\"请输入要查找人员的姓名(以*结尾):\"< else if(2==l) { cout<<\"请输入要查找人的年龄:\"< pt->Findyear(i); } else cout<<\"操作错误......\"< cout<<\"按姓名查找1 按年龄查找2\"< if (1==l) { cout<<\"请输入要查找人员的姓名(以*结尾):\"< 12 } else if(2==l) { cout<<\"请输入要查找人的年龄:\"< else cout<<\"操作错误......\"< 13 因篇幅问题不能全部显示,请点此查看更多更全内容