📄 salary.cpp
字号:
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include"salary.h"
struct infoRecorder
{
int number;
char name[30];
int status;
}ir1,ir2;
struct salaryRecorder
{
int number;
char name[30];
int month;
double salary;
}sr1,sr2;
void employee::showinfo()
{
ifstream ifile("info.txt",ios::in|ios::binary);
if(!ifile)
{
cerr<<endl<<"员工信息文件读取错误!"<<endl;
}
while(!ifile.eof())
{
ifile.read((char*)&ir1,sizeof(ir1));
cout<<endl<<"编号:"<<ir1.number<<" 姓名:"<<ir1.name<<" 级别:";
Status(ir1.status);
}
}
int employee::search()
{
int i;
ifstream ifile("info.txt",ios::in|ios::binary);
if(!ifile)
{
cerr<<endl<<"员工信息文件读取错误!"<<endl;
return 1;
}
while(!ifile.eof())
{
ifile.read((char*)&ir1,sizeof(ir1));
i=strcmp(ir1.name,name);
if(i==0)
{ir2=ir1;}
}
if(ir2.name!=NULL)
{
number=ir2.number;
status=ir2.status;
ifile.close();
return 0;
}
return 1;
}
void employee::info()
{ int w=0;
int maxnum=0; //得到文件中最大的员工编号
int num;
char a;
cout<<"请输入员工编号(1~100)将自动生成"<<endl;
cout<<"请输入员工姓名(不可有空格):";
cin>>name ;
ifstream ifile("info.txt",ios::in|ios::binary);//打开员工文件
if(!ifile)
{
cerr<<endl<<"员工信息文件读取错误!"<<endl;
return;
}
while(!ifile.eof())//根据名字查找职工信息
{
ifile.read((char*)&ir1,sizeof(ir1));
while(ir1.name==name)
{
cout<<"此员工信息已存在"<<" "<<"是否重新输入(y/n)"<<endl;
cin>>a;
while(a!='y'||a!='Y'||a!='n'||a!='N')
{
cout<<"输入错误重新输入"<<endl;
cin>>a;
}
if(a=='y'||a=='Y')cin>>name;
else if(a=='n'||a=='N') w=1;
while(w==1)return;
}
if(w==1)return;
num=ir1.number;
if(maxnum<num)maxnum=num;
}if(w==1)return;
ifile.close();
number=maxnum+1;
cout<<"请输入员工职务代码(0 ~ 3):0:经理;1:销售经理;2:编程人员;3:销售人员"<<endl;
cin>>status;
while(status<0||status>3)
{
cout<<"员工职务代码输入错误,请重新输入"<<endl;
cin>>status;
}
}
int employee::recordinf()
{
strcpy(ir1.name,name);
ir1.number=number;
ir1.status=status;
ofstream ofile("info.txt",ios::app|ios::binary);
//追加打开文件
if(!ofile)
{
cerr<<endl<<"员工信息文件打开错误"<<endl;
return 0;
}
ofile.write((char*)&ir1,sizeof(ir1)); //写入一个记录
ofile.close();
return 1;
}
int employee::recordsalary()
{
char ch1;
cout<<endl<<"是否存档(y/n):";
cin>>ch1;
while(ch1!='Y'&&ch1!='y'&&ch1!='N'&&ch1!='n')
{
cin>>ch1;
}
if(ch1=='N'&&ch1=='n')return 0;
else
{
strcpy(sr1.name,name);
sr1.number=number;
cout<<endl<<"请输入当前月份:";
cin>>sr1.month;
while(sr1.month<1||sr1.month>12)
{
cout<<endl<<" 输入月份错误 请重新输入:";
cin>>sr1.month;
}
sr1.salary=salary;
ofstream ofile("salary.txt",ios::app|ios::binary);
if(!ofile)
{
cerr<<endl<<"员工工资件打开错误"<<endl;
return 0;
}
ofile.write((char*)&sr1,sizeof(sr1)); //写入一个记录
ofile.close();
return 1;
}
}
void employee::Status(int status)
{
switch(status)
{
case 0:cout<<"经理";break;
case 1:cout<<"销售经理";break;
case 2:cout<<"编程人员";break;
case 3:cout<<"销售人员";break;
default:break;
}
}
void employee::searchEmInfo(int num)
{
ifstream ifile ("info.txt",ios::in|ios::binary);
if(!ifile)
{
cerr<<"员工信息文件打开错误"<<endl;
}
while(!ifile.eof())
{
ifile.read((char*)&ir1,sizeof(ir1));
if(ir1.number==num)
{
ir2=ir1;
}
}
if(ir2.name!="")
{
cout<<endl<<"编号:"<<ir2.number<<"姓名:"<<ir2.name<<"级别:";
Status(ir2.status);
cout<<endl;
}
ifile.close();
}
void employee::searchEnSaInfo(int num)
{
ifstream ifile("salary.txt",ios::in|ios::binary);
if(!ifile)
{
cerr<<endl<<"员工工资件打开错误"<<endl;
}
while(!ifile.eof())
{
ifile.read((char*)&sr1,sizeof(sr1));
if(sr1.number==num)
{
sr2=sr1;
}
}
if(sr2.name!="")
cout<<endl<<"姓名:"<<sr2.name<<"月份:"<<sr2.month<<"工资:"<< sr2.salary<<endl;
ifile.close();
}
ITman::ITman()
{
worklysalary=200;
}
void ITman::mansalary()
{
cout<<"请输入编程人员"<<name<<"本月的工作天数:";
cin>>workday;
salary=workday*worklysalary;
cout<<"(编程人员):"<<name<<"(编号):"<<number<<"本月工资为:"<<salary<<endl;
}
salesman::salesman()
{
getrate=0.05;
}
void salesman::mansalary()
{
cout<<"请输入销售员"<<name<<"本月销售额:";
cin>>salesum;
salary=salesum*getrate;
cout<<"(销售员)"<<name<<"(编号)"<<number<<"本月工资为:"<<salary<<endl;
}
manager::manager()
{
fixedsalary=8000;
}
void manager::countsalary()
{
salary=fixedsalary;
}
salesmanager::salesmanager()
{
getrate=0.02;
fixedsalary=4000;
}
void salesmanager::countsalary()
{
cout<<"请输入销售经理"<<name<<"本月的销售额:";
cin>>salesum;
salary=fixedsalary+salesum*getrate;
cout<<"(销售经理)"<<name<<"(编号)"<<number<<"本月的工资为:"<<salary<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -