📄 main.cpp
字号:
/////////////////////////////////////////////////////////////////////
////////////main.cpp////////////////
#include<cstdlib>///////////////清屏函数
#include<iostream>
#include<string.h>
#include<ctype.h>
#include<vector>
#include<iomanip>
#include<fstream>
#define DELETE 0
#define NOTDELETE 1
#include"employee.h"
using namespace std;
int input(void);//输入员工信息
int index(void);//信息查询
void reset(void);//信息修改
void displayall();
int main()
{
/////////////////////////设置密码保护
/*char name[20];
int code;
cout<<"//////////////////////////////////////////////////"
<<endl<<"请输入人员信息管理系统帐号:";
cin>>name;
cout<<endl<<"输入密码:";
cin>>code;
cout<<endl;
while(strcmp(name,"zhanglin") || (code!=20054994))
{
cout<<"密码或者帐号错误!";
cout<<"//////////////////////////////////////////////////"
<<endl<<"请输入人员信息管理系统帐号:";
cin>>name;
cout<<endl<<"输入密码:";
cin>>code;
cout<<endl;
}////////////////////////////////////////////////////////////*/
cout<<"///////////////////欢迎来到人员信息管理系统!/////////////////////"<<endl;
char mission;
/////////////////////////////////////////////////////////////选择任务
while(1)
{
cout<<resetiosflags(ios_base::left)<<setw(38)<<"请选择操作类型"<<endl<<setw(34)
<< "1.输入信息"<<endl<<setw(35)<<"2.信息查询 "<<endl
<<setw(36)<<"3、修改信息 "<<endl
<<setw(39)<<"4、显示全部信息"<<endl
<<setw(42)<<"0.退出信息管理系统"<<endl
<<"///////////////////////////////////////////////////////////////////"<<endl;
cin>>mission;
if(!isdigit(mission))
{
cout<<"输入错误!请从新输入!"<<endl;continue;
}
switch(mission-'0')
{
case 1:input();break;
case 2:index();break;
case 3:reset();break;
case 4:displayall();break;
case 0: system("cls");
cout<<endl
<<"--------------------------------谢谢使用!-----------------------------------"
<<endl
<<"--------------------------------退出系统!-----------------------------------"
<<endl<<endl;exit(0);
default:
cout<<"输入错误!请从新输入!"<<endl;break;
}
}
//////////////////////////////////////////////////////////////////
return 0;
}
/////////////////////////////////信息修改及删除
void reset(void)
{
void resetbyname();//按姓名查找
void resetbyno();//按编号查找
char resettype;
cout<<"请输入修改记录"<<endl<<"1、按姓名"<<endl<<"2、按编号"<<endl<<"0、退出"<<endl;
cin>>resettype;
while(!isdigit(resettype))
{
cout<<"输入错误!请从新输入!"<<endl;
}
switch(resettype-'0')
{
case 1: resetbyname();
break;
case 2:resetbyno();
break;
case 0:return ;
default:cout<<"输入错误请从新输入!";break;
}
}
////////////////////////////////////////////////输入信息
int input(void)
{
vector<empstu*>vchar;
char name[20];
technician t1;
manager m1;
salesmanager sm1;
salesman s1;
employee *emp;
empstu employee1[100];
int i=0;
char employeetype;
ofstream ofile("employee.txt",ios_base::app);
while(1)
{
cout<<setiosflags(ios_base::left)<<setw(38)<<"请输入员工职称:"<<endl<<setw(34)
<< "1、销售人员 "<<endl<<setw(35)<<"2、技术工人 "<<endl
<<setw(36)<<"3、销售经理 "<<endl<<setw(42)<<"4、经理"<<endl<<
setw(40)<<"0、退出输入信息"<<endl
<<"///////////////////////////////"<<endl;
cin>>employeetype;
if(!isdigit(employeetype))
{
cout<<"输入错误!请从新输入!"<<endl;continue;
}
bool rightinput=true;//////判断是否正确输入
switch(employeetype-'0')
{
case 1:emp=&s1;
cout<<"请依次输入销售人员的:名字、销售额、编号"<<endl;///////////销售人员资料输入
float sale;//销售金额
cin>>name>>sale;s1.Setsales(sale);s1.promote(0);
break;
case 2:
emp=&t1;
cout<<"请依次输入技术工人的:名字、工作时数、编号:"<<endl;////////技术工人资料输入
int ww;
cin>>name>>ww;t1.SetworkHours(ww);t1.promote(0);
break;
case 4: emp=&m1;
cout<<"请输入经理的: 名字"<<endl;
cin>>name;m1.promote(0);
break;
case 3: emp=&sm1;
cout<<"请输入销售经理的:名字、管辖部门的销售总额"<<endl;
float sl;
cin>>name>>sl;sm1.Setsales(sl);sm1.promote(0);
break;
case 0:
while(!vchar.empty())
{
ofile.write((char*)vchar.back(),sizeof(empstu));
vchar.pop_back();
}
ofile.close();return 0;
default: bool rightinput=false;cout<<"输入错误,请从新输入员工职称!"<<endl;break;
}
if(rightinput)
{
employee1[i].individualno=emp->GetindividualEmpNo();
employee1[i].state=NOTDELETE;
emp->SetName(name);emp->pay();
strcpy(employee1[i].name,emp->GetName());
employee1[i].grade=emp->Getgrade();
employee1[i].salary=emp->GetaccumPay();
vchar.push_back(&employee1[i++]);
//ofile.write((char*)&employee1,sizeof(empstu));
}
}
}
/////////////////////////////////////////////
/////////////查找信息///////////////////////////
int index()
{
char indextype;
int num;
bool found;
char name[20];
struct empstu employee1;
while(1)
{
ifstream ifile("employee.txt",ios_base::binary);
ifile.seekg(ios::beg);
found=false;
cout<<"1、按名字查找"<<endl<<"2、按编号查找"<<endl<<"0、退出"<<endl;
cin>>indextype;
if(!isdigit(indextype))
{
cout<<"输入错误,请从新输入!";
continue;
}
else////////////////////////////容错处理
switch(indextype-'0')
{
case 1:
cout<<"请输入查找人的名字:"<<endl;
cin>>name;
ifile.read((char*)&employee1,sizeof(empstu));
while(!ifile.eof())//从头开始查找直到文件结束
{ if(employee1.state==NOTDELETE)
if(!strcmp(employee1.name,name))//找到信息并输出
{
cout<<name<<endl<<"编号为:"<<employee1.individualno<<endl
<<"级别为"<<employee1.grade<<"级"<<endl
<<"工资为"<<employee1.salary<<endl
<<"///////////////////////////////"<<endl;
found=true;
// break;
}
ifile.read((char*)&employee1,sizeof(empstu));
}//while
break;
case 2:cout<<"请输入查找人的编号:"<<endl;
cin>>num;
ifile.read((char*)&employee1,sizeof(empstu));
while(!ifile.eof())//从头开始查找直到文件结束
{
if(employee1.state==NOTDELETE)
if(employee1.individualno==num)//找到信息并输出
{
cout<<employee1.name<<endl<<"编号为:"<<employee1.individualno<<endl
<<"级别为"<<employee1.grade<<"级"<<endl
<<"工资为"<<employee1.salary<<endl
<<"///////////////////////////////"<<endl;
found=true;
}
ifile.read((char*)&employee1,sizeof(empstu));
}//while
case 0:ifile.close();
return 0;
}//switch
if(!found)
cout<<"没有这个记录!"<<endl;
ifile.close();
}//while
}
void displayall()
{
empstu employee1;
ifstream ifile("employee.txt",ios_base::in);
if(ifile.fail())
{
cout<<"没有记录!"<<endl;
return;
}
ifile.read((char*)&employee1,sizeof(empstu));
while(!ifile.eof())//从头开始查找直到文件结束
{
if(employee1.state==NOTDELETE)
{
cout<<employee1.name<<endl<<"编号为:"<<employee1.individualno<<endl
<<"级别为"<<employee1.grade<<"级"<<endl
<<"工资为"<<employee1.salary<<endl
<<"///////////////////////////////"<<endl;
}
ifile.read((char*)&employee1,sizeof(empstu));
}//while
ifile.close();
}
void resetbyname()
{
char name[20];
empstu employee1;
int reoromit;
bool found=false;
fstream file("employee.txt",ios::out|ios::in);
file.seekg(ios::beg);
cout<<"请选择1:修改2:删除"<<endl;
cin>>reoromit;
cout<<"请输入修改人的名字:"<<endl;
cin>>name;
file.read((char*)&employee1,sizeof(empstu));
while(!file.eof())//从头开始查找直到文件结束
{
if(!strcmp(employee1.name,name))//找到信息并输出
{
found=true;
if(reoromit==1)
{
cout<<"请从新输入员工信息(姓名、编号、级别、月薪)"<<endl;
cin>>employee1.name>>employee1.individualno>>employee1.grade
>>employee1.salary;
file.seekg(-sizeof(empstu),ios::cur);
file.write((char*)&employee1,sizeof(employee1));
cout<<"修改成功!"<<endl;
return;
}
else if(reoromit==2)
{
cout<<"删除成功!"<<endl;
employee1.state=DELETE;
file.seekg(-sizeof(empstu),ios::cur);
file.write((char*)&employee1,sizeof(empstu));
return;
}
}
file.read((char*)&employee1,sizeof(empstu));
}
file.close();
}
void resetbyno()
{
///////////////////////////////////////
//char name[20];
// manager m1;
// technician t1;
// salesmanager sm1;
// salesman s1;
// employee *emp;
empstu employee1;
//////////////////////////////////////////
int reoromit;
int individualno;
bool found=false;
fstream file("employee.txt",ios::out|ios::in);
file.seekg(ios::beg);
cout<<"请选择1:修改"<<endl<<setw(13)<<"2:删除"<<endl;
cin>>reoromit;
cout<<"请输入修改人的编号:"<<endl;
cin>>individualno;
file.read((char*)&employee1,sizeof(empstu));
while(!file.eof())//从头开始查找直到文件结束
{
if(employee1.state==NOTDELETE)
{
if(individualno==employee1.individualno)//找到信息并输出
{
found=true;
if(reoromit==1)
{
/* switch(employee1.grade)
{
case 1:emp=&s1;
cout<<"请依次输入销售人员的:名字、销售额"<<endl;///////////销售人员资料输入
float sale;//销售金额
cin>>name>>sale;s1.Setsales(sale);s1.promote(0);
break;
case 2:emp=&t1;
cout<<"请依次输入技术工人的:名字、工作时数:"<<endl;////////技术工人资料输入
int ww;
cin>>name>>ww;t1.SetworkHours(ww);t1.promote(0);
break;
case 4:emp=&m1;
cout<<"请输入经理的: 名字"<<endl;
cin>>name;m1.promote(0);
break;
case 3:emp=&sm1;
cout<<"请输入销售经理的:名字、管辖部门的销售总额"<<endl;
float sl;
cin>>name>>sl;sm1.Setsales(sl);sm1.promote(0);
break;
}//switch
employee1.state=NOTDELETE;
emp->SetName(name);emp->pay();
strcpy(employee1.name,emp->GetName());
employee1.grade=emp->Getgrade();
employee1.salary=emp->GetaccumPay();
file.seekg(-sizeof(empstu),ios::cur);
file.write((char*)&employee1,sizeof(employee1));
break;*/
cout<<"请从新输入员工信息(姓名、编号、级别、月薪)"<<endl;
cin>>employee1.name>>employee1.individualno>>employee1.grade
>>employee1.salary;
file.seekg(-sizeof(empstu),ios::cur);
file.write((char*)&employee1,sizeof(employee1));
break;
}//if
else if(reoromit==2)
{
employee1.state=DELETE;
cout<<"删除成功!"<<endl;
file.seekg(-sizeof(empstu),ios::cur);
file.write((char*)&employee1,sizeof(empstu));
break;
}
}
}
file.read((char*)&employee1,sizeof(empstu));
}
if(!found)
cout<<"没有该员工!"<<endl;
file.close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -