📄 menu.cpp
字号:
// Menu.cpp: implementation of the Menu class.
#include "Menu.h"
void Menu::print(Member* p) //打印每个记录的函数
{
cout<<"\n\t姓名:\t"<<p->getname()<<"\n\t编号:\t"
<<p->getidnum()<<"\n\t级别:\t"<<p->Getlever()
<<"\n\t月薪:\t"<<p->getincome()<<"(元)"<<endl;
}
///////////////////////////////////////////////////////////////////
//********Menu菜单调用函数进去界面*****************************//
Menu::Menu()
{ InitArr();
Se=0;
count=0;
Te=0;
unsave=1;
Head=0;
Tail=0;
Ma=0;
Sm=0;
Start();
}
Menu::~Menu(){} //析够函数
//////////////////////////////////////////////////////////////////////////
//初始化数组
void Menu::InitArr()
{
int i=0;
for(i=0;i<MAX;i++)
{
Mb[i]=0;
}
}
////////////////////////////////////////////////////////////////////////
//显示欢迎界面///////////
void Menu::Start()
{ Load();
HandleMenu();
}
/////////////////////////////////////////////////////////////////////////////
//*******************对菜单的选择,选择怎么对公司人员进行修改*************//
void Menu::HandleMenu()
{
for(;;)
{
switch(MenuSelect())
{
case 1:AddRecord();
break;
case 2:ShowAR();
break;
case 3:Modify();
break;
case 4:DeleteRe();
break;
case 5:Ask();
break;
case 6:Save();
break;
case 7:Quit();
exit(1);
break ;
}
}
}
/*****************************************************
/*功能:实现公司员工信息管理系统主界面功能
/* 入口参数:s[2],cn---数组,输入数字
出口参数:公司员工信息菜单的显示
/*****************************************************/
int Menu::MenuSelect()
{ char s[2];
int cn=0;
cout<<"*********************★★公司人员管理系统★★**********************************"<<endl;
cout<<" § §"<<" § § (系统提示:要修改、删除公司人员"<<endl;
cout<<"****** ☆录入(1) ☆显示(2) ☆修改(3) *****"<<" 的记录,首先要找到对应的记录"<<endl;
cout<<" § §"<<" § § 然后在进行修改、删除,在查询的"<<endl;
cout<<"****** ☆删除(4) ☆查询(5) ☆保存(6) *****"<<" 时候,是按照公司人员的编号和 "<<endl;
cout<<" § §"<<" § § 姓名查询的.) "<<endl;
cout<<"****** ☆退出(7) ☆无 (8) ☆无 (9) ******"<<endl;
cout<<" § § § §"<<endl;
cout<<"*****************★★请输入你要选择的功能(1-7)★★******************************"<<endl;
cout<<" 版权声明:武汉科技大学城市学院·创新工作室 "<<endl;
for(;;)
{
gets(s);
cn=atoi(s);
if(cn<1||cn>=8)
{cout<<"\n\t请选择菜单(1--7):"<<flush;}
else break;
}
return cn;
}
//**下面是对公司人员信息的查找*********************//
int Menu::Search()
{
int i=0,num=0,cn=0,flage=0,chre=11;
char choose[2],n[20];
cout<<"1.编号查询"<<endl;
cout<<"2.姓名查询"<<endl;
cout<<"请选择1--2:\t"<<flush;
cin>>choose;
while(1)
{
cn=atoi(choose);
if(cn!=1&&cn!=2)
{
cout<<"\t您输入错误!请重选(1--2):"<<flush;
cin>>choose;
}
else
break;
}
switch(cn)
{
case 1:cout<<"******************请输入你要查询的编号:";
cin>>num;
Head=Mb;
flage=0;
for(i=0;i<MAX;i++)
{
if(Head[i]&&Head[i]->getidnum()==num)
{
flage=1;
cout<<"\t找到这条记录。\n";
print(Head[i]);
return i;
}
}
if(flage==0)
cout<<"\t没有此记录:"<<endl;
return -1;
case 2:cout<<"******************请输入你要查询的姓名:\t";
cin>>n;
Head=Mb;
flage=0;
for(i=0;Head[i]&&i<MAX;i++)
{
chre=strcmp(Head[i]->getname(),n);
if(!chre)
{
flage=1;
cout<<"*******找到此记录:\n";
print(Head[i]);
return i;
}
}
if(flage==0)
cout<<"*******没有此记录!"<<endl;
return -1;
}
return -1;
}
//////////////////////////////////////////////////////////////////////////
//用于保存记录的函数。
void Menu::SaveRecord()
{
Head=Mb;
Tail=Mb;
count=0;
for(int i=0;i<MAX;i++)
{
if(Tail[i])
count++;
}
if(count==0)
cout<<"******************没有记录可保存!"<<endl;
ofstream out;
out.open("employee.txt",ios_base::out);
if(!out)
{
cout<<"\t打开文件失败"<<endl;
exit(1);
}
out<<count<<'\n';
for(i=0;i<MAX;i++)
{
if(Head[i])
out<<*Head[i];
}
out.close();
cout<<"*************"<<count<<"条记录已经存储到文件。"<<endl;
}
///////////////////////////////////////////////////////////////////////////
//操作文件菜单的加载
void Menu::Load()
{
int i=0,le=0;
ifstream in;
in.open("employ.txt",ios_base::in);
if(!in)
in>>count; //输入count值
InitArr();
for(i=0;i<count;i++)
{
in>>Mem;
le=Mem.Getlever();
if(le>=1&&le<=3)
{
unsigned long ps;
Mb[i]=new Seller(Mem.getname(),0);
Mb[i]->Setlever(le);
Mb[i]->setidnum(Mem.getidnum());
Mb[i]->setincome(Mem.getincome());
ps=unsigned long(Mem.getincome()/getrate1);
Mb[i]->Setpsv(ps);
}
else if(le>=4&&le<=6)
{
int time=0;
Mb[i]=new Technician(Mem.getname(),0);
Mb[i]->Setlever(le);
Mb[i]->setidnum(Mem.getidnum());
Mb[i]->setincome(Mem.getincome());
time=int(Mem.getincome()/meyhou1);
Mb[i]->Setwktm(time);
}
else if(le>=7&&le<=9)
{
unsigned long sv;
Mb[i]=new Sellmanager(Mem.getname(),0);
Mb[i]->Setlever(le);
Mb[i]->setidnum(Mem.getidnum());
Mb[i]->setincome(Mem.getincome());
sv=(Mem.getincome()-utcome1)/dedper1;
Mb[i]->Setsv(sv);
}
else
{
Mb[i]=new Manager(Mem.getname());
Mb[i]->Setlever(le);
Mb[i]->setidnum(Mem.getidnum());
Mb[i]->setincome(Mem.getincome());
}
}
in.close();
}
/*****************************************************
/*功能:实现公司员工信息显示功能
/* 入口参数:mb[i],i,flag---整形变量,输入数字
出口参数:公司员工信息的显示
/*****************************************************/
void Menu::ShowAR()
{
int i=0,size=0,flage=0;
for(i=0;i<MAX;i++)
{
if(Mb[i])
{
print(Mb[i]);
flage=1;
size++;
if(size%4==0&&size!=0)
{
cout<<"*******每次显示4条记录,按回车(enter)继续显示.\t";
cin.get();
cout<<endl;
}
}
}
if(flage==0)
cout<<"*************记录为空,无法显示!";
cout<<"\n*************记录显示完毕!按回车(enter)键继续其他操作";
cout<<"\n\n";
getchar();
}
//////////////////////////////////////////////////////////////////////
//////*********************下面是文件的保存********************
void Menu::Save()
{
SaveRecord();
unsave=0;
}
/*****************************************************
/*功能:实现公司员工信息的录入功能
/* 入口参数:i,cn,choi,le---整形变量,输入数字
出口参数:对不同级别的员工的信息的输出
/*****************************************************/
void Menu::AddRecord()
{
int i=0,cn=0;
char n[20];
char choi[2],le[2];
cout<<"\n*************请输入公司员工的级别!"<<endl;
cout<<"(兼职推销员)****请输入(1至3)****"<<endl;
cout<<"(兼职技术员)****请输入(4至6)****"<<endl;
cout<<"(销售经理 )****请输入(7至9)****"<<endl;
cout<<"(经 理 )****请输入(10至12)****"<<endl;
cin>>le;
cn=atoi(le);
if(cn<1||cn>12)
{
cout<<"\n*************您的输入错误!请重新输入!\n";
AddRecord();
}
else if(cn>=1&&cn<=3)
{
/*****************************************************
/*功能:实现公司员工兼职推销员信息录入功能
/* 入口参数:i,n,cn---整形变量,输入数字
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -