📄 menu.cpp
字号:
#include "menu.h"
#include "salaryManager.h"
#include "simpleUser.h"
#include "salaryManager.h"
#include "administrator.h"
extern CSimpleUser *sUser;
extern CSalaryManager *mUser;
extern CAdministrator *aUser;
CMenu::CMenu()
{
}
//=====================================用户登录====================================
void CMenu::Login( void )
{
cout<<"\n\n\t\t================欢迎使用职工工资管理系统==============="<<endl;
while( true )
{
cout<<"\n\n\t\t^_^==================================================^_^";
cout<<"\n\n\t\t\t\t[ 1 ]: 一般职工用户登陆"<<endl;
cout<<"\t\t\t\t[ 2 ]: 工资管理员登陆"<<endl;
cout<<"\t\t\t\t[ 3 ]: 系统管理员登陆"<<endl;
cout<<"\t\t\t\t[ 4 ]: 帮助"<<endl;
cout<<"\t\t\t\t[ 0 ]: 退出"<<endl;
cout<<"\t\t\t\t请选择相应的操作: ";
string choose;
cin >> choose;
if( !IsDigit( choose ) )
{
cout<<"\t\t\t\t\t输入有错,请重新选择!"<<endl;
continue;
}
switch( choose[0] )
{
case '1':
if(CheckUser( 1 ))
Op_SimpleUser();///////////////////////////////普通用户的操作
break;
case '2':
if(CheckUser( 2 ))
Op_SalaryManager();////////////////////////////工资管理员的操作
break;
case '3':
if(CheckUser( 3 ))
Op_Administrator();////////////////////////////系统管理员的操作
break;
case '4':
Help();////////////////////////////////////////////帮助
break;
case '0':
Exit();////////////////////////////////////////////退出
default:
cout<<"\n\n\t\t\t输入有错,请重新选择!"<<endl;
break;
}
}
}
//==============================================================================
//==========================普通用户的操作=======================================
void CMenu::Op_SimpleUser( void )
{
while( true )
{
cout<<"\n\n\t\t^_^==================================================^_^";
cout<<"\n\n\t\t\t\t[ 1 ]: 查看个人信息"<<endl;
cout<<"\t\t\t\t[ 2 ]: 修改个人信息"<<endl;
cout<<"\t\t\t\t[ 3 ]: 帮助"<<endl;
cout<<"\t\t\t\t[ # ]: 返回上一层菜单"<<endl;
cout<<"\t\t\t\t[ 0 ]: 退出"<<endl;
cout<<"\t\t\t\t请选择相应的操作: ";
string choose;
cin >> choose;
if( !IsDigit( choose ) )
{
cout<<"\t\t\t\t\t输入有错,请重新选择!"<<endl;
continue;
}
switch( choose[0] )
{
case '1':
sUser->SearchInfo();//////////////////////////////////普通用户查看自己的信息
break;
case '2':
sUser->ChangeInfo();//////////////////////////////////普通用户修改自己的信息
break;
case '3':
Help();
break;
case '#':
return;
case '0':
exit( 1 );
default:
cout<<"\t\t\t\t\t输入有错,请重新选择!"<<endl;
break;
}
}
}
//================================================================================
//==========================工资管理员的操作======================================
void CMenu::Op_SalaryManager( void )
{
while( true )
{
cout<<"\n\n\t\t^_^==================================================^_^";
cout<<"\n\n\t\t\t\t[ 1 ]: 查找员工信息"<<endl;
cout<<"\t\t\t\t[ 2 ]: 修改员工信息"<<endl;
cout<<"\t\t\t\t[ 3 ]: 统计员工信息"<<endl;
cout<<"\t\t\t\t[ 4 ]: 排序"<<endl;
cout<<"\t\t\t\t[ 5 ]: 帮助"<<endl;
cout<<"\t\t\t\t[ # ]: 返回上一层菜单"<<endl;
cout<<"\t\t\t\t[ 0 ]: 退出"<<endl;
cout<<"\t\t\t\t请选择相应的操作: ";
string choose;
cin >> choose;
if( !IsDigit( choose ) )
{
cout<<"\t\t\t\t\t输入有错,请重新选择!"<<endl;
continue;
}
switch( choose[0] )
{
case '1':
Search_Menu();///////////////////////////调用搜索菜单
break;
case '2':
mUser->ChangeInfo();/////////////////////工资管理员修改员工信息
break;
case '3':
Count_Menu();////////////////////////////调用统计菜单
break;
case '4':
Sort_Menu();/////////////////////////////调用排序菜单
break;
case '5':
Help();
break;
case '#':
return;
case '0':
Exit();
default:
cout<<"\n\n\t\t\t输入有错,请重新选择!"<<endl;
break;
}
}
}
//================================================================================
//==========================系统管理员的操作======================================
void CMenu::Op_Administrator( void )
{
while( true )
{
cout<<"\n\n\t\t^_^==================================================^_^";
cout<<"\n\n\t\t\t\t[ 1 ]: 查找员工信息"<<endl;
cout<<"\t\t\t\t[ 2 ]: 修改员工信息"<<endl;
cout<<"\t\t\t\t[ 3 ]: 统计员工信息"<<endl;
cout<<"\t\t\t\t[ 4 ]: 排序"<<endl;
cout<<"\t\t\t\t[ 5 ]: 添加用户"<<endl;
cout<<"\t\t\t\t[ 6 ]: 删除用户"<<endl;
cout<<"\t\t\t\t[ 7 ]: 添加员工"<<endl;
cout<<"\t\t\t\t[ 8 ]: 删除员工"<<endl;
cout<<"\t\t\t\t[ 9 ]: 修改工资体系"<<endl;
cout<<"\t\t\t\t[ # ]: 返回上一层菜单"<<endl;
cout<<"\t\t\t\t[ 0 ]: 退出"<<endl;
cout<<"\t\t\t\t请选择相应的操作: ";
string choose;
cin >> choose;
if( !IsDigit( choose ) )
{
cout<<"\n\n\t\t\t输入有错,请重新选择!"<<endl;
continue;
}
switch( choose[0] )
{
case '1':
Search_Menu();
break;
case '2':
aUser->ChangeInfo();/////////////////////////////系统管理员修改员工信息
break;
case '3':
Count_Menu();
break;
case '4':
Sort_Menu();
break;
case '5':
aUser->AddUser();////////////////////////////////系统管理员添加用户
break;
case '6':
aUser->DelUser();////////////////////////////////系统管理员删除用户
break;
case '7':
aUser->AddEmp();////////////////////////////////系统管理员添加员工
break;
case '8':
aUser->DelEmp();
break;
case '9':
aUser->ChangeSalarySys();
break;
case '#':
return;
case '0':
Exit();
default:
cout<<"\t\t\t\t\t输入有错,请重新选择!"<<endl;
break;
}
}
}
//===============================================================================
//==========================查找菜单======================================
void CMenu::Search_Menu()
{
while( true )
{
cout<<"\n\n\t\t^_^==================================================^_^";
cout<<"\n\n\t\t\t\t[ 1 ]: 按姓名查找员工基本信息"<<endl;
cout<<"\t\t\t\t[ 2 ]: 按工资卡号查找员工基本信息"<<endl;
cout<<"\t\t\t\t[ 3 ]: 按身份证查找员工基本信息"<<endl;
cout<<"\t\t\t\t[ 4 ]: 按部门查找员工基本信息"<<endl;
cout<<"\t\t\t\t[ 5 ]: 按技术职称查找员工基本信息"<<endl;
cout<<"\t\t\t\t[ 6 ]: 按姓名查找工资细节"<<endl;
cout<<"\t\t\t\t[ 7 ]: 按身份证查找工资细节"<<endl;
cout<<"\t\t\t\t[ 8 ]: 按部门查找员工工资细节"<<endl;
cout<<"\t\t\t\t[ # ]: 返回上一层菜单"<<endl;
cout<<"\t\t\t\t[ 0 ]: 退出"<<endl;
cout<<"\t\t\t\t请选择相应的操作: ";
string choose;
cin >> choose;
if( !IsDigit( choose ) )
{
cout<<"\n\n\t\t\t输入有错,请重新选择!"<<endl;
continue;
}
switch( choose[0] )
{
case '1':
mUser->SchByName();
break;
case '2':
mUser->SchBySarCardId();
break;
case '3':
mUser->SchByIdentityId();
break;
case '4':
mUser->SchByDep();
break;
case '5':
mUser->SchByTechPost();
break;
case '6':
mUser->SchDetailByName();
break;
case '7':
mUser->SchDetailById();
break;
case '8':
mUser->SchDetailByDep();
break;
case '#':
return;
case '0':
Exit();
default:
cout<<"\t\t\t\t\t输入有错,请重新选择!"<<endl;
break;
}
}
}
//==========================================================================
//==========================排序菜单=======================================
void CMenu::Sort_Menu()
{
while( true )
{
cout<<"\n\n\t\t^_^==================================================^_^";
cout<<"\n\n\t\t\t\t[ 1 ]: 按基本工资排序"<<endl;
cout<<"\t\t\t\t[ 2 ]: 按职务工资排序"<<endl;
cout<<"\t\t\t\t[ 3 ]: 按扣除工资排序"<<endl;
cout<<"\t\t\t\t[ 4 ]: 按缴税信息排序"<<endl;
cout<<"\t\t\t\t[ 5 ]: 按姓名排序"<<endl;
cout<<"\t\t\t\t[ 6 ]: 按职务排序"<<endl;
cout<<"\t\t\t\t[ # ]: 返回上一层菜单"<<endl;
cout<<"\t\t\t\t[ 0 ]: 退出"<<endl;
cout<<"\t\t\t\t请选择相应的操作: ";
string choose;
cin >> choose;
if( !IsDigit( choose ) )
{
cout<<"\n\n\t\t\t输入有错,请重新选择!"<<endl;
continue;
}
switch( choose[0] )
{
case '1':
mUser->SortByBasePay();
break;
case '2':
mUser->SortByDutyPay();
break;
case '3':
mUser->SortByDeductPay();
break;
case '4':
mUser->SortByTax();
break;
case '5':
mUser->SortByName();
break;
case '6':
mUser->SortByDuty();
break;
case '#':
return;
case '0':
Exit();
default:
cout<<"\t\t\t\t\t输入有错,请重新选择!"<<endl;
break;
}
}
}
//=========================================================================
//==========================统计菜单======================================
void CMenu::Count_Menu()
{
while( true )
{
cout<<"\n\n\t\t^_^==================================================^_^";
cout<<"\n\n\t\t\t\t[ 1 ]: 公司、部门员工工资和员工信息统计"<<endl;
cout<<"\t\t\t\t[ 2 ]: 公司工资总额和部门员工工资详细信息统计"<<endl;
cout<<"\t\t\t\t[ 3 ]: 查看公司最高工资前十名的员工信息"<<endl;
cout<<"\t\t\t\t[ 4 ]: 按部门统计最高工资前十名的员工信息"<<endl;
cout<<"\t\t\t\t[ 5 ]: 查看公司扣除工资最多的十个"<<endl;
cout<<"\t\t\t\t[ # ]: 返回上一层菜单"<<endl;
cout<<"\t\t\t\t[ 0 ]: 退出"<<endl;
cout<<"\t\t\t\t请选择相应的操作: ";
string choose;
cin >> choose;
if( !IsDigit( choose ) )
{
cout<<"\n\n\t\t\t输入有错,请重新选择!"<<endl;
continue;
}
switch( choose[0] )
{
case '1':
mUser->CByDepSar();
break;
case '2':
mUser->CByComP();
break;
case '3':
mUser->CTenAtFront_SalaryInComp();
break;
case '4':
mUser->CTenAtFront_SalaryInDep();
break;
case '5':
mUser->CTenAtFront_DeductSalary();
break;
case '#':
return;
case '0':
Exit();
default:
cout<<"\t\t\t\t\t输入有错,请重新选择!"<<endl;
break;
}
}
}
//==========================================================================
//============================处理密码======================================
string CMenu::GetUserInputPassword()
{
char p;
char passwd[20];
int i=0;
p = _getch();
while (p!='\r')
{
if(p=='\b')
{
while(p=='\b')
{
cout<<"\b \b";
if(i>0)
i--;
else
i=0;
passwd[i]='\0';
p=_getch();
}
continue;
}
cout<<"*";
passwd[i] = p;
i++;
p=_getch();
if(i==10)
{
cout<<"\n你输入的字符串过长"<<endl;
_getch();
break;
}
}
passwd[i] = '\0';
return passwd;
}
//==============================核查用户身份=====================
bool CMenu::CheckUser(int identity)
{
int i=0;
string name="";
string password="";
while(i<3)
{
i++;
cout<<"\n\n\t\t^_^==================================================^_^"<<endl;
cout<<"\t\t\t\t请输入用户名: ";
cin>>name;
switch (identity)
{
case 1:
password=GetUserPW("Secret\\SimpleUser.txt",name);
break;
case 2:
password=GetUserPW("Secret\\SalaryManager.txt",name);
break;
case 3:
password=GetUserPW("Secret\\Administrator.txt",name);
break;
}
if(password=="")
{
cout<<"\t\t\t\t用户名输入有错,请确认!\n\n";
continue;
}
i=0;
cout<<"\t\t\t\t请输入密码: ";
while( i < 3 )
{
if( password==GetUserInputPassword() )
{
if( identity == 1)
sUser = new CSimpleUser(password,name);
if( identity == 2)
mUser = new CSalaryManager(password,name );
if( identity == 3)
aUser = new CAdministrator(password,name );
return true;
}
i++;
if( i == 3)
{
cout<<"\n\t\t\t非法操作超过规定次数,请按任意键退出。"<<endl;
_getch();
exit(0);
}
cout<<"\n\t\t\t\t密码输入错误,请重新输入密码:";
}
}
cout<<"\n\t\t\t非法操作超过规定次数,请按任意键退出。"<<endl;
_getch();
exit(0);
}
//===================================从数据文件获取用户密码=====================
string CMenu:: GetUserPW(char *filePath,string userName)
{
string pw="";
ifstream in(filePath);
if(!in)
{
cout<<"\t\t\tOpen file failure!\n";
return pw;
}
for(string str;getline(in,str);)
{
istringstream sin(str);
string name;
sin>>name;
if(name==userName)
{
sin>>pw;
in.close();
return pw;
}
}
in.close();
return pw;
}
//===================================判断输入是否为数字或“#”==================
bool CMenu::IsDigit( string choose)
{
if( choose.length() != 1 )
return false;
else
{
if(choose[0]=='#')
return true;
if( choose[0] < '0' || choose[0] > '9' )
return false;
}
return true;
}
void CMenu::Help()
{
ifstream in("帮助.txt");
for(string str;getline(in,str);)
cout<<str<<endl;
}
void CMenu::Exit()
{
while( true )
{
cout<<"\n==============================================================================="<<endl;
cout<<"\n\t\t\t即将退出系统,是否保存被修改的数据?"<<endl
<<"\n\t\t\t[ 1 ] 保存 [ 2 ] 另存 [ 3 ] 不存"<<endl;
cout<<"\t\t\t请选择:";
string sFilePath;
string sChoose;
cin>> sChoose;
if( !IsDigit( sChoose ) )
{
cout<<"\t\t\t你的输入有错,请确认!"<<endl;
continue;
}
switch( sChoose[0] )
{
case '1':
SaveFile( "EmployeeData");//////////////////////////默认保存到EmployeeData文件加下
//////////////////////////的employee.txt和salary.txt里
exit(1);
case '2':
cout<<"\t\t\t请输入文件的完全路径(不用写文件名):";
cin>>sFilePath;//////////////////////////////////输入路径名
SaveFile( sFilePath );
exit(1);
case '3':
cout<<"\t\t\t你确定不保存修改过的数据?"<<endl;
cout<<"\t\t\tY / y:不保存。 N / n:返回重新选择。"<<endl;
char cP;
cP = _getch();
while( true )
{
if( cP == 'y' || cP == 'Y' )
exit(1);
else if( cP == 'n' || cP == 'N' )
break;
cP = _getch();
}
if( cP == 'n' )
continue;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -