求C++高手完成职工管理系统
#include<iostream.h>#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fstream.h>
struct work
{
char name[20];//姓名
char num[20];//工职号
};
class WORK//职工信息基类
{
public:
work wk;
WORK() //构造函数
{
}
void dispwk_in();//职工信息简表存档(只含有姓名和年龄的职工信息简表存档)
void dispwk();//简表输出函数(文件)
~WORK() //析构函数
{}
};
struct WORK_manager
{
int age;//年龄
char sex[20];//性别
char greed[20];//学历
int pay;//工资
char dress[20];//住址
char tell[20];//电话
};
class work_manager:public WORK //职工信息处理
{
public:
WORK_manager st;
work_manager *next;
work_manager():WORK()//构造函数
{
}
void handle_menu();//菜单函数
work_manager* add();//增加职工信息
void addin();//增加函数
void dispwks_in();//存档函数(全部数据存入文件并验证是否正确存档)
void dispwks();//全部数据输出函数(文件)
void finde();//查询函数(多种方式查询)
work_manager* cute();//删除函数(指定的职工号和姓名)
void dail();//修改函数(指定的职工号和姓名)
void out();//职工信息浏览函数(内存)
void handle_menu1();//首菜单函数
friend istream& operator>>(istream &in,work_manager& A)
{
in>>A.wk.name>>A.wk.num>>A.st.age>>A.st.sex>>A.st.greed>>A.st.pay>>A.st.dress>>A.st.tell;
return in;
}
friend ostream& operator<<(ostream &out,const work_manager* A)
{
out<<"\t"<<A->wk.name<<"\t"<<A->wk.num<<"\t"<<A->st.age<<"\t"<<A->st.sex<<"\t"<<A->st.greed<<"\t"<<A->st.pay<<"\t"<<A->st.dress<<"\t"<<A->st.tell;
return out;
}
~work_manager()//析构函数
{}
}*head ;
void work_manager::handle_menu()//首菜单函数
{
int i;
handle_menu1();
cin>>i;
while(i<1||i>7)
{
system("cls");
cout<<"输入有错,请重新输入:";
handle_menu1();
cin>>i;
}
switch(i)
{
case 1:dail(); break;
case 2:cute(); break;
case 3:finde(); break;
case 4:out(); break;
case 5:dispwk_in(); break;
case 6:head=add(); break;
case 7:exit(0); break;
}
}
void WORK::dispwk_in()//职工信息简表存档(只含有姓名和年龄的职工信息简表存档)
{
ifstream fout("E:\\职工信息管理系统2.txt",ios::out);
if(!fout)
{
cout<<"文件未打开!"<<endl;
//handle_menu();
}
work_manager *opp;
opp=head;
if(!opp)
{
cout<<"无文件存档!"<<endl;
//handle_menu();
}
while(opp->next!=NULL)
{
fout<<opp->wk.name;
fout<<opp->wk.num;
opp++;
}
fout.close();
}
void WORK::dispwk()//简表输出函数(文件)
{
ifstream fin("e:\\职工信息管理系统2.txt",ios::in);
if(!fin)
{
cout<<"没打开文件!\n";
exit(1);
}
else
{
work_manager *hand=NULL,*q ,*p;
p=new (work_manager);
fin>>p->wk.name;
fin>>p->wk.num;
fin>>p->st.age;
fin>>p->st.dress;
fin>>p->st.greed;
fin>>p->st.pay;
fin>>p->st.sex;
fin>>p->st.tell;
if(!p)
{
cout<<"内存不足,请重启!"<<endl;
exit(1);
}
while(p->wk.num!=0)
{
q=new work_manager;
if(!q)
{
cout<<"内存不足,请重启!"<<endl;
exit(1);
}
fin>>p->wk.name;
fin>>p->wk.num;
fin>>p->st.age;
fin>>p->st.dress;
fin>>p->st.greed;
fin>>p->st.pay;
fin>>p->st.sex;
fin>>p->st.tell;
p->next=NULL;
if(hand==NULL)
{
hand=p;
}
else
{
q=hand;
while(q->next!=NULL)
{
q=q->next;
}
q->next=p;
}
}
}
}
void work_manager::dispwks_in()//存档函数(全部数据存入文件并验证是否正确存档)
{
ifstream fout("E:\\职工信息管理系统.txt",ios::out);
if(!fout)
{
cout<<"文件未打开!"<<endl;
handle_menu();
}
work_manager *opp;
opp=head;
if(!opp)
{
cout<<"无文件存档!"<<endl;
handle_menu();
}
while(opp->next!=NULL)
{
fout<<opp->wk.name;
fout<<opp->wk.num;
fout<<opp->st.age;
fout<<opp->st.dress;
fout<<opp->st.greed;
fout<<opp->st.pay;
fout<<opp->st.sex;
fout<<opp->st.tell;
opp++;
}
fout.close();
}
void work_manager::dispwks()//全部数据输出函数(文件)
{
ifstream fin("e:\\职工信息管理系统.txt",ios::in);
if(!fin)
{
cout<<"没打开文件!\n";
exit(1);
}
else
{
work_manager *hand=NULL,*q ,*p;
p=new (work_manager);
fin>>p->wk.name;
fin>>p->wk.num;
fin>>p->st.age;
fin>>p->st.dress;
fin>>p->st.greed;
fin>>p->st.pay;
fin>>p->st.sex;
fin>>p->st.tell;
if(!p)
{
cout<<"内存不足,请重启!"<<endl;
exit(1);
}
while(p->wk.num!=0)
{
q=new work_manager;
if(!q)
{
cout<<"内存不足,请重启!"<<endl;
exit(1);
}
fin>>p->wk.name;
fin>>p->wk.num;
fin>>p->st.age;
fin>>p->st.dress;
fin>>p->st.greed;
fin>>p->st.pay;
fin>>p->st.sex;
fin>>p->st.tell;
p->next=NULL;
if(hand==NULL)
{
hand=p;
}
else
{
q=hand;
while(q->next!=NULL)
{
q=q->next;
}
q->next=p;
}
}
}
}
void work_manager::finde()//查询函数(多种方式查询)
{
char input[20];
int sa;
system("cls");
cout<<"1.通过职工号"<<endl;
cout<<"2.通过姓名"<<endl;
cout<<"3.通过性别"<<endl;//
cout<<"4.通过学历"<<endl;
cout<<"5.通过地址"<<endl;
cin>>sa;
while(sa<1||sa>5)
{
cout<<"输入有错,重选1-5"<<endl;
cin>>sa;
break;
}
work_manager *q;
q=head;
while(q!=NULL)
{
switch(1)
{
cout<<"请输入职工号:"<<endl;
gets(input);
while(q->next!=NULL)
{
if(strcmp(input,q->wk.num)==0)
{
cout<<"\t工号";
cout<<"\t姓名\t年龄\t性别\t学历\t工资\t地址\t联系电话\n";
cout<<'\t'<<q->wk.num<<'\t'<<q->wk.name<<'\t'<<q->st.age<<'\t'<<q->st.sex<<'\t'<<q->st.greed<<'\t'<<q->st.pay<<'\t'<<q->st.dress<<'\t'<<q->st.tell<<endl;
}
q++;
}
}
switch(2)
{
cout<<"请输入姓名:"<<endl;
gets(input);
while(q->next!=NULL)
{
if(strcmp(input,q->wk.name)==0)
{
cout<<"\t工号";
cout<<"\t姓名\t年龄\t性别\t学历\t工资\t地址\t联系电话\n";
cout<<'\t'<<q->wk.num<<'\t'<<q->wk.name<<'\t'<<q->st.age<<'\t'<<q->st.sex<<'\t'<<q->st.greed<<'\t'<<q->st.pay<<'\t'<<q->st.dress<<'\t'<<q->st.tell<<endl;
}
q++;
}
}
switch(3)
{
gets(input);
while(q->next!=NULL)
{
if(strcmp(input,q->st.sex)==0)
{
cout<<"\t工号";
cout<<"\t姓名\t年龄\t性别\t学历\t工资\t地址\t联系电话\n";
cout<<'\t'<<q->wk.num<<'\t'<<q->wk.name<<'\t'<<q->st.age<<'\t'<<q->st.sex<<'\t'<<q->st.greed<<'\t'<<q->st.pay<<'\t'<<q->st.dress<<'\t'<<q->st.tell<<endl;
}
q++;
}
}
switch(4)
{
gets(input);
while(q->next!=NULL)
{
if(strcmp(input,q->st.greed)==0)
{
cout<<"\t工号";
cout<<"\t姓名\t年龄\t性别\t学历\t工资\t地址\t联系电话\n";
cout<<'\t'<<q->wk.num<<'\t'<<q->wk.name<<'\t'<<q->st.age<<'\t'<<q->st.sex<<'\t'<<q->st.greed<<'\t'<<q->st.pay<<'\t'<<q->st.dress<<'\t'<<q->st.tell<<endl;
}
q++;
}
}
switch(5)
{
gets(input);
while(q->next!=NULL)
{
if(strcmp(input,q->st.dress)==0)
{
cout<<"\t工号";
cout<<"\t姓名\t年龄\t性别\t学历\t工资\t地址\t联系电话\n";
cout<<'\t'<<q->wk.num<<'\t'<<q->wk.name<<'\t'<<q->st.age<<'\t'<<q->st.sex<<'\t'<<q->st.greed<<'\t'<<q->st.pay<<'\t'<<q->st.dress<<'\t'<<q->st.tell<<endl;
}
q++;
}
}
}
cout<<"没有找到相应的记录"<<endl;
}
work_manager* work_manager::cute()//删除函数(指定的职工号和姓名)
{
char input[20];
int sa;
cout<<"\t\t\t1.通过职工号"<<endl;
cout<<"\t\t\t2.通过姓名"<<endl;
cout<<"请输入:"<<endl;
cin>>sa;
while(sa<1||sa>2)
{
cout<<"输入有错,重选1-2"<<endl;
cin>>sa;
break;
}
switch(sa)
{
case 1:
cout<<"请输入职工号:"<<endl;
break;
case 2:
cout<<"请输入姓名:"<<endl;
}
gets(input);
work_manager *p,*q;
q=head;
while(q!=NULL)
{
if((sa==1&&strcmp(input,q->wk.num)==0)||sa==2&&strcmp(input,q->wk.name)==0)
{
if(q==head)
head=q->next;
else
{
p->next=q->next;
cout<<"被删除记录的信息如下:"<<endl;
cout<<"\t工号\t";
cout<<"\t姓名\t年龄\t性别\t学历\t工资\t地址\t联系电话\n";
cout<<'\t'<<q->wk.num<<'\t'<<q->wk.name<<'\t'<<q->st.age<<'\t'<<q->st.sex<<'\t'<<q->st.greed<<'\t'<<q->st.pay<<'\t'<<q->st.dress<<'\t'<<q->st.tell<<endl;
delete(q);
}
}
else
{
p=q;
q=q->next;
}
}
cout<<"没有找到相应的记录"<<endl;
return head;
}
void work_manager::dail()//修改函数(指定的职工号和姓名)
{
char input[20];
int sa;
cout<<"\t\t\t1.通过职工号"<<endl;
cout<<"\t\t\t2.通过姓名"<<endl;
cout<<"请输入职工号:"<<endl;
cin>>sa;
while(sa<1||sa>2)
{
cout<<"输入有错,重选1-2"<<endl;
cin>>sa;
break;
}
switch(sa)
{
case 1:
cout<<"请输入职工号:"<<endl;
break;
case 2:
cout<<"请输入姓名:"<<endl;
}
gets(input);
work_manager *p,*q;
q=head;
while(q!=NULL)
{
if((sa==1&&strcmp(input,q->wk.num)==0)||sa==2&&strcmp(input,q->wk.name)==0)
{
if(q==head)
head=q->next;
else
{
cout<<"需被修改记录的信息如下:"<<endl;
cout<<"\t工号";
cout<<"\t姓名\t年龄\t性别\t学历\t工资\t地址\t联系电话\n";
cout<<'\t'<<q->wk.num<<'\t'<<q->wk.name<<'\t'<<q->st.age<<'\t'<<q->st.sex<<'\t'<<q->st.greed<<'\t'<<q->st.pay<<'\t'<<q->st.dress<<'\t'<<q->st.tell<<endl;
cout<<"请输入!"<<endl;
cout<<"职工号:";
cin>>q->wk.num;
cout<<"姓名:";
cin>>q->wk.name;
cout<<"年龄:";
cin>>q->st.age;
cout<<"性别:";
cin>>q->st.sex;
cout<<"学历:";
cin>>q->st.greed;
cout<<"工资:";
cin>>q->st.pay;
cout<<"地址:";
cin>>q->st.dress;
cout<<"电话号码:";
cin>>st.tell;
}
}
else
{
p=q;
q=q->next;
}
}
cout<<"没有找到相应的记录"<<endl;
}
void work_manager::out()//职工信息浏览函数(内存)
{
work_manager *q;
q=head;
while(q->next!=NULL)
{
cout<<"\t工号";
cout<<"\t姓名\t年龄\t性别\t学历\t工资\t地址\t联系电话\n";
cout<<'\t'<<q->wk.num<<'\t'<<q->wk.name<<'\t'<<q->st.age<<'\t'<<q->st.sex<<'\t'<<q->st.greed<<'\t'<<q->st.pay<<'\t'<<q->st.dress<<'\t'<<q->st.tell<<endl;
q++;
}
cout<<"没有找到相应的记录"<<endl;
handle_menu();
}
work_manager* work_manager::add()
{
work_manager *p ,*hand,*q;
char h='y';
//cout<<"确认增加请按Y,返回请按其他键:";
//cin>>h;
hand=NULL;
while(h=='y'||h=='Y')
{
q=new(work_manager);
if(!q)
{
cout<<"内存不足,请重启运行!"<<endl;
exit(0);
}
else
{
if(hand==NULL)
{
hand=q;
}
else
{
p=hand;
q->addin();
while(p->next=NULL)
{
p=p->next;
}
p->next=q;
q->next=NULL;
}
}
cout<<"继续添加请按Y,退出请按其他键:";
cin>>h;
}
system("cls");
handle_menu();
return hand;
}
void work_manager::addin()
{
cout<<"\t姓名:";
cin>>wk.name;
cout<<"\t职工号:";
cin>>wk.num;
cout<<"\t年龄:";
cin>>st.age;
cout<<"\t性别:";
cin>>st.sex;
cout<<"\t学历:";
cin>>st.greed;
cout<<"\t工资:";
cin>>st.pay;
cout<<"\t地址:";
cin>>st.dress;
cout<<"\t联系电话:";
cin>>st.tell;
}
void work_manager::handle_menu1()//菜单函数
{
cout<<" \t\t\t ┎════┰════┒ "<<endl;
cout<<" \t\t\t ║欢迎﹎ ┃﹎﹎﹎﹎║ "<<endl;
cout<<" \t\t\t ║﹎﹎﹎﹎┃登陆﹎﹎║ "<<endl;
cout<<" \t\t\t ║﹎﹎职管┃ ﹎﹎﹎ ╱╲ "<<endl;
cout<<" \t\t\t ║﹎﹎﹎﹎ ﹎系统..◣╱ "<<endl;
cout<<" \t\t\t ┖════┸════┚ . "<<endl;
cout<<" "<<endl;
cout<<" \t\t\t -○━━━━━━━━●━. "<<endl;
cout<<"\t\t\t1.修改职工信息\t\t2.删除职工信息"<<endl;
cout<<"\t"<<endl;
cout<<"\t"<<endl;
cout<<"\t\t\t3.查询职工信息\t\t4.显示职工信息"<<endl;
cout<<"\t"<<endl;
cout<<"\t"<<endl;
cout<<"\t\t\t5.存档职工信息\t\t6.增加职工信息"<<endl;//菜单选择区
cout<<"\t"<<endl;
cout<<"\t"<<endl;
cout<<"\t\t\t7.退出"<<endl;
cout<<"\t\t请选择输入:";
}
int main()
{
work_manager worker;
worker.handle_menu();
return 0;
}