#include <string>
#include <iostream>
#include <time.h>
#include <vector>
using namespace std;
class Employee //å®ä¹éåç±»
{
public:
Employee(); //æé å½æ°
virtual VEmployee();
virtual void Display()=0;
int GetAge(); //è·åå¹´é¾
string GetName(); //è·åå§å
protected:
int Id; //èå·¥IDå·
string Name; //èå·¥å§å
char Sex[5]; //æ§å«
int Wage; //å·¥èµ
string BirthDay; //åºèº«å¹´æ
string WorkTime; //åå å·¥ä½æ¶é´
int Age; //å¹´é¾
};
class Worker : public Employee //å®ä¹å·¥äººç±»
{
public:
Worker();
virtual VWorker();
void Display();
};
class Teacher : public Employee //å®ä¹æå¸ç±»
{
public:
Teacher();
virtual VTeacher();
void Display();
string GetAcademy();
private:
string Academy;
};
Employee::Employee()
{
}
Employee::VEmployee()
{
}
int Employee::GetAge()
{
return Age;
}
string Employee::GetName()
{
return Name;
}
Teacher::Teacher() //æ·»å æå¸ä¿¡æ¯
{
cout<<"请è¾å
¥è¯¥æå¸çä¿¡æ¯ï¼"<<endl;
cout<<"èå·¥ç¼å· : "<<endl;
cin>>Id;
cout<<"å§å : "<<endl;
cin>>Name;
cout<<"æ§å« : "<<endl;
cin>>Sex;
cout<<"å·¥èµ : "<<endl;
cin>>Wage;
cout<<"åºçæ¶é´ : (æ ¼å¼xxxx/xx/xx)"<<endl;
cin>>BirthDay;
cout<<"åå å·¥ä½æ¶é´ : (æ ¼å¼xxxx/xx/xx)"<<endl;
cin>>WorkTime;
cout<<"æå±é¢ç³» : "<<endl;
cin>>Academy;
//ä»çæ¥éæååºçç年份
int Pos = BirthDay.find_first_of('/');
string BirthYear;
BirthYear.assign(BirthDay,0,Pos);
char chBirthYear[6];
strcpy(chBirthYear,BirthDay.c_str());
//è·åå½åç³»ç»ç年份
char NowYear[5];
time_t tnow = time(0);
strftime(NowYear , 5 , "%Y" , localtime(&tnow));
Age = atoi(NowYear)-atoi(chBirthYear); //计ç®å¹´é¾
}
Teacher::VTeacher()
{
}
void Teacher::Display(){ //display()ååå½æ°ï¼è¾åºæå¸ä¿¡æ¯
cout<<"èå·¥ç¼å· : "<<Id<<endl;
cout<<"å§å : "<<Name<<endl;
cout<<"æ§å« : "<<Sex<<endl;
cout<<"å·¥èµ : "<<Wage<<endl;
cout<<"åºçæ¶é´ : "<<BirthDay<<endl;
cout<<"åå å·¥ä½æ¶é´ : "<<WorkTime<<endl;
cout<<"å¹´é¾ : "<<Age<<endl;
}
string Teacher::GetAcademy(){
return Academy;
}
Worker::Worker() //æ·»å 工人信æ¯
{
cout<<"请è¾å
¥è¯¥å·¥äººçä¿¡æ¯ï¼"<<endl;
cout<<"èå·¥ç¼å· : "<<endl;
cin>>Id;
cout<<"å§å : "<<endl;
cin>>Name;
cout<<"æ§å« : "<<endl;
cin>>Sex;
cout<<"å·¥èµ : "<<endl;
cin>>Wage;
cout<<"åºçæ¶é´ : (æ ¼å¼xxxx/xx/xx)"<<endl;
cin>>BirthDay;
cout<<"åå å·¥ä½æ¶é´ : (æ ¼å¼xxxx/xx/xx)"<<endl;
cin>>WorkTime;
//ä»çæ¥éæååºçç年份
int Pos = BirthDay.find_first_of('/');
string BirthYear;
BirthYear.assign(BirthDay,0,Pos);
char chBirthYear[6];
strcpy(chBirthYear,BirthDay.c_str());
//è·åå½åç³»ç»ç年份
char NowYear[5];
time_t tnow = time(0);
strftime(NowYear , 5 , "%Y" , localtime(&tnow));
Age = atoi(NowYear)-atoi(chBirthYear); //计ç®å¹´é¾
}
Worker::VWorker()
{
}
void Worker::Display(){//display()ååå½æ°ï¼è¾åºå·¥äººä¿¡æ¯
cout<<"èå·¥ç¼å· : "<<Id<<endl;
cout<<"å§å : "<<Name<<endl;
cout<<"æ§å« : "<<Sex<<endl;
cout<<"å·¥èµ : "<<Wage<<endl;
cout<<"åºçæ¶é´ : "<<BirthDay<<endl;
cout<<"åå å·¥ä½æ¶é´ : "<<WorkTime<<endl;
cout<<"å¹´é¾ : "<<Age<<endl;
}
void AddTeacher(vector <Teacher> *TeaInfo) //æ°å¢èå¸å¯¹è±¡
{
system("color 05A"); //设置å½åçªå£çèæ¯è²ååæ¯è²
Teacher TeaTemp;
(*TeaInfo).push_back(TeaTemp);
}
void AddWoker(vector <Worker> *WorkerInfo) //æ°å¢å·¥äººå¯¹è±¡
{
system("color 05A");
Worker Wokertmp;
(*WorkerInfo).push_back(Wokertmp);
}
void DisplayAll(vector <Teacher> *TeaInfo,vector <Worker> *WokerInfo){ //æ¾ç¤ºå
¨é¨è工记å½
system("color 05A");
cout<<"æææå¸çä¿¡æ¯ï¼"<<endl;
vector <Teacher>::iterator pTeaInfo;
for (pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!=1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++) //å¦æå°è¾¾vectoræ«å°¾ï¼åéåº
{
(*pTeaInfo).Display();
cout<<endl;
}
cout<<"ææ工人çä¿¡æ¯ï¼"<<endl;
vector <Worker>::iterator pWorkerInfo;
for (pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!=1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++) //å¦æå°è¾¾vectoræ«å°¾ï¼åéåº
{
(*pWorkerInfo).Display();
cout<<endl;
}
cout<<"æEnterè¿å"<<endl;
getchar(); getchar();
}
void DisAvgTeacherAge(vector <Teacher> *TeaInfo){ //æ¥è¯¢èå¸å¹³åå¹´é¾
system("color 05A");
int SumAge = 0;
vector <Teacher>::iterator pTeaInfo;
for (pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!=1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//éåèå¸å®¹å¨
{ //å¦æå°è¾¾vectoræ«å°¾ï¼åéåº
SumAge+= (*pTeaInfo).GetAge();
cout<<endl;
}
if((*TeaInfo).size()!=0)
cout<<"æå¸çå¹³åå¹´é¾ä¸º"<<SumAge/((*TeaInfo).size())<<endl;
else cout<<"没æè®°å½"<<endl;
cout<<"æEnterè¿å"<<endl;
getchar(); getchar();
}
void DisAvgWorkerAge(vector <Worker> *WokerInfo){
system("color 05A");
int SumAge = 0;
vector <Worker>::iterator pWorkerInfo;
for (pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!=1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++) //å¦æå°è¾¾vectoræ«å°¾ï¼åéåº
{
SumAge+= (*pWorkerInfo).GetAge();
cout<<endl;
}
if((*WokerInfo).size()!=0)
cout<<"èå·¥çå¹³åå¹´é¾ä¸º"<<SumAge/((*WokerInfo).size())<<endl;
else cout<<"没æè®°å½"<<endl;
cout<<"æEnteré®è¿å"<<endl;
getchar(); getchar();
}
void DelTeacher(vector <Teacher> *TeaInfo){ //ç¨äºå é¤èå¸ä¿¡æ¯
system("color 05A");
bool Hflag=false;
string SearchName;
vector <Teacher>::iterator pTeaInfo;
cout<<"请è¾å
¥æ¨è¦å é¤çèå¸çå§åï¼"<<endl;
cout<<"å§å: ";
cin>>SearchName;
for(pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty() != 1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++) //å¦æå°è¾¾vectoræ«å°¾ï¼åéåº
{
if (0==SearchName.compare((*pTeaInfo).GetName())) //å¦ææ¾å°è¦å é¤èå¸çå§åï¼åæ§è¡
{
Hflag=true; //æ¾å°èå¸
(*TeaInfo).erase(pTeaInfo); //å é¤vectorä¸æå®çèå¸
continue;
}
}
if (false==Hflag) //å¦æ没æ该èå¸ï¼åæ§è¡
{
cout<<"没æ该èå¸ï¼"<<endl;
}
cout<<"æEnterè¿å"<<endl;
getchar(); getchar();
}
void DelWorker(vector <Worker> *WokerInfo) //ç¨äºå é¤å·¥äººä¿¡æ¯
{
system("color 05A");
bool Hflag=false;
string SearchName;
vector <Worker>::iterator pWorkerInfo;
cout<<"请è¾å
¥æ¨è¦å é¤ç工人çå§åï¼"<<endl;
cout<<"å§å: ";
cin>>SearchName;
for(pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty() != 1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++) //å¦æå°è¾¾vectoræ«å°¾ï¼åéåº
{
if (0==SearchName.compare((*pWorkerInfo).GetName())) //å¦ææ¾å°è¦å é¤å·¥äººçå§åï¼åæ§è¡
{
Hflag=true; //æ¾å°å·¥äºº
(*WokerInfo).erase(pWorkerInfo); //å é¤vectorä¸æå®ç工人
continue;
}
}
if (false==Hflag) //å¦æ没æ该工人ï¼åæ§è¡
{
cout<<"没æ该èå¸ï¼"<<endl;
}
cout<<"æEnterè¿å"<<endl;
getchar();getchar();
}
void SearchByName(vector <Teacher> *TeaInfo,vector <Worker> *WokerInfo){ //æååæ¥æ¾è工信æ¯
system("color 05A");
bool Hflag=false;
string SearchName;
vector <Teacher>::iterator pTeaInfo;
cout<<"请è¾å
¥æ¨è¦æ¥æ¾çèå·¥çå§åï¼"<<endl;
cout<<"å§å: ";
cin>>SearchName;
for(pTeaInfo=(*TeaInfo).begin();pTeaInfo!=(*TeaInfo).end();pTeaInfo++)
{
if (0==SearchName.compare((*pTeaInfo).GetName())) //å¦ææ¾å°è¾å
¥çèå·¥ï¼åæ§è¡
{
Hflag=true; //æ¾å°èå·¥
cout<<"è¿ä¸ªäººæ¯èå¸ï¼ä»çä¿¡æ¯ä¸ºï¼"<<endl;
(*pTeaInfo).Display(); //æ¾ç¤ºè工信æ¯
continue;
}
}
vector <Worker>::iterator pWorkerInfo;
for(pWorkerInfo=(*WokerInfo).begin();pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)
{
if (0==SearchName.compare((*pWorkerInfo).GetName())) //å¦ææ¾å°è¾å
¥çèå·¥ï¼åæ§è¡
{
Hflag=true; //æ¾å°èå·¥
cout<<"è¿ä¸ªäººæ¯èå¸ï¼ä¸ªäººä¿¡æ¯ä¸ºï¼"<<endl;
(*pWorkerInfo).Display(); //æ¾ç¤ºè工信æ¯
continue;
}
}
if (false==Hflag)
{
cout<<"没æè¿ä¸ªèå·¥ï¼"<<endl; //没ææ¾å°ä¿¡æ¯
}
cout<<"æEnterè¿å"<<endl; //è¿å
getchar(); getchar();
}
void DisTeacherByAcademy(vector <Teacher> TeaInfo){ //æç³»è¾åºæå¸ä¿¡æ¯
system("color 05A");
bool Hflag=false;
string SearchName;
vector <Teacher>::iterator pTeaInfo;
while((TeaInfo).empty()!=1) { //è¾åºæææå®ç³»çèå¸
pTeaInfo=(TeaInfo).begin();
string Academy = (*pTeaInfo).GetAcademy();
cout<<"ç³»ï¼"<<Academy<<","<<"该系çèå¸æï¼"<<endl;
for(pTeaInfo=(TeaInfo).begin();(TeaInfo).empty()!=1&&pTeaInfo!=(TeaInfo).end();){
if (0==Academy.compare((*pTeaInfo).GetAcademy()))
{
(*pTeaInfo).Display();
cout<<endl;
(TeaInfo).erase(pTeaInfo);
pTeaInfo=(TeaInfo).begin();
}
else pTeaInfo++;
}
cout<<endl;
}
cout<<"æEnterè¿å"<<endl;
getchar(); getchar();
}
void WriteFile(vector <Teacher> *TeaInfo,vector <Worker> *WokerInfo) //çææ°æ件
{
FILE *fp;
if (NULL==(fp=fopen("Employee.txt","w+")))
{
cout<<"æå¼æ件é误"<<endl;
exit(-1);
}
vector <Worker>::iterator pWorkerInfo;
vector <Teacher>::iterator pTeaInfo;
for(pTeaInfo=(*TeaInfo).begin();pTeaInfo!=(*TeaInfo).end();pTeaInfo++) //åå
¥vectorä¸ææèå¸çä¿¡æ¯
{
fputs("æå¸ä¿¡æ¯ï¼\n",fp);
fprintf(fp,"å§å:%s\n",(*pTeaInfo).GetName().c_str());
fprintf(fp,"å¹´é¾:%d\n",(*pTeaInfo).GetAge());
fputs("\n",fp);
}
fputs("æå¸ä¿¡æ¯ç»æ\n",fp);
for(pWorkerInfo=(*WokerInfo).begin();pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++) //åå
¥vectorä¸ææèå¸çä¿¡æ¯
{
fputs("è工信æ¯ï¼\n",fp);
fprintf(fp,"å§å:%s\n",(*pWorkerInfo).GetName().c_str());
fprintf(fp,"å¹´é¾:%d\n",(*pWorkerInfo).GetAge());
fputs("\n",fp);
}
fputs("è工信æ¯ç»æ\n",fp);
fclose(fp);
}
void Mainmenu(){//èåçé¢
system("color 05A"); //设置å½åçªå£çèæ¯è²ååæ¯è²
cout<<" âââââââââââãæè工管çç³»ç»ãââââââââââ®"<<endl;
cout<<" ⣠请éæ©åè½ â£"<<endl;
cout<<" ââââââââââââââââââââââââââââââ¤"<<endl;
cout<<" ⣠1.æ°å»ºå¹¶è¾å
¥èå·¥æ°æ® â£"<<endl;
cout<<" ⣠2.ææ¡ä»¶è¾åºèå·¥æ°æ® â£"<<endl;
cout<<" ⣠3.å é¤èå·¥æ°æ® â£"<<endl;
cout<<" ⣠0.éåº â£"<<endl;
cout<<" â°âââââââââââââââââââââââââââââ¯"<<endl;
cout<<" ââââââââââââââââââââââââââââââ"<<endl;
cout<<" 请éæ©æ¨è¦æå¡çç±»å«: " ;
}
void Insert(vector <Teacher> *TeaInfo,vector <Worker> *WorkerInfo) //å¢å èå·¥æ°æ®èåçé¢
{
system("color 05A"); //设置å½åçªå£çèæ¯è²ååæ¯è²
int select = -1;
while(select!=0)
{
cout<<" âââââââââââãå¢å èå·¥æ°æ®ãâââââââââââ®"<<endl;
cout<<" ⣠请éæ©æä½: â£"<<endl;
cout<<" ââââââââââââââââââââââââââââââ¤"<<endl;
cout<<" ⣠1å¢å ä¸ä½æå¸è®°å½ â£"<<endl;
cout<<" ⣠2å¢å ä¸ä½å·¥äººè®°å½ â£"<<endl;
cout<<" ⣠0è¿å主èå â£"<<endl;
cout<<" â°âââââââââââââââââââââââââââââ¯"<<endl;
cin>>select;
switch(select){
case 1:AddTeacher(TeaInfo);break;
case 2:AddWoker(WorkerInfo);break;
case 3:Mainmenu();break;
default:
cout<<"åå°ä¸»èå!"<<endl;
}
}
}
void Search(vector <Teacher> *TeaInfo,vector <Worker> *WorkerInfo) //æ¥è¯¢èå·¥æ°æ®èåçé¢
{
system("color 05A"); //设置å½åçªå£çèæ¯è²ååæ¯è²
int select = -1;
while(select!=0)
{
cout<<" âââââââââââãæ¥è¯¢èå·¥æ°æ®ãâââââââââââ®"<<endl;
cout<<" ⣠请éæ©æä½: â£"<<endl;
cout<<" ââââââââââââââââââââââââââââââ¤"<<endl;
cout<<" ⣠1æ¾ç¤ºå
¨é¨èå·¥è®°å½ â£"<<endl;
cout<<" ⣠2æç³»è¾åºæå¸ä¿¡æ¯ â£"<<endl;
cout<<" ⣠3æå§åæ£ç´¢ææä¿¡æ¯ â£"<<endl;
cout<<" ⣠4计ç®æå¸å¹³åå¹´é¾ â£"<<endl;
cout<<" ⣠5计ç®å·¥äººå¹³åå¹´é¾ â£"<<endl;
cout<<" ⣠0è¿å主èå â£"<<endl;
cout<<" â°âââââââââââââââââââââââââââââ¯"<<endl;
cin>>select;
switch(select){
case 1:DisplayAll(TeaInfo,WorkerInfo);break;
case 2:DisTeacherByAcademy(*TeaInfo);break;
case 3:SearchByName(TeaInfo,WorkerInfo);break;
case 4:DisAvgTeacherAge(TeaInfo);break;
case 5:DisAvgWorkerAge(WorkerInfo);break;
case 6:Mainmenu();break;
default:
cout<<"åå°ä¸»èå!"<<endl;
}
}
}
void Delete(vector <Teacher> *TeaInfo,vector <Worker> *WorkerInfo) //å é¤èå·¥æ°æ®
{
system("color 05A"); //设置å½åçªå£çèæ¯è²ååæ¯è²
int select = -1;
while(select!=0)
{
cout<<" âââââââââââãå é¤èå·¥æ°æ®ãâââââââââââ®"<<endl;
cout<<" ⣠请éæ©æä½: â£"<<endl;
cout<<" ââââââââââââââââââââââââââââââ¤"<<endl;
cout<<" ⣠1å é¤ä¸ä½æå¸è®°å½ â£"<<endl;
cout<<" ⣠2å é¤ä¸ä½å·¥äººè®°å½ â£"<<endl;
cout<<" ⣠0è¿å主èå â£"<<endl;
cout<<" â°âââââââââââââââââââââââââââââ¯"<<endl;
cin>>select;
switch(select){
case 1:DelTeacher(TeaInfo);break;
case 2:DelWorker(WorkerInfo);break;
case 3:Mainmenu();break;
default:
cout<<"åå°ä¸»èå!"<<endl;
}
}
}
void MainCho(vector <Teacher> *TeaInfo,vector <Worker> *WorkerInfo)
{ //主èåæä½
int choice = -1;
while(choice!=0){
Mainmenu();
cin>>choice;
switch(choice){
case 1:Insert(TeaInfo,WorkerInfo);break;
case 2:Search(TeaInfo,WorkerInfo);break;
case 3:Delete(TeaInfo,WorkerInfo);break;
case 0:break;
default:
cout<<"æä½é误!"<<endl;
}
}
}
void main() //主å½æ°
{
vector <Teacher> TeaInfo; //
vector <Worker> WorkerInfo; //
vector <Teacher>::iterator pTeacher; //
vector <Worker>::iterator pWoker; //
pTeacher = TeaInfo.begin(); //
pWoker = WorkerInfo.begin(); //
MainCho(&TeaInfo,&WorkerInfo); //è°ç¨ä¸»è¦å¤çç¨åº
WriteFile(&TeaInfo,&WorkerInfo); //åå
¥æ件æä½
}
温馨提示:答案为网友推荐,仅供参考