⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 salary.cpp

📁 本人课程设计成果
💻 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 + -