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

📄 cpp1.cpp

📁 本系统主要用于管理企业员工的基本信息及工资的计算。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//yuangongguanli.cpp


#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<iomanip.h>
class yuangong  //员工
{public:
	void append();//增加员工
	void display();//显示所有员工
	void search();//查询单个员工
	int number;//编号
	char name[20];//姓名
	char sex[20];//性别
	char state[30];//职位
	float salary;//工资
	
	int age;//年龄
	char xueli[30];	//学历
	char dengji[20];//技术等级
	char zhicheng[20];//职称
};
void yuangong::append()//增加员工
{				
		yuangong yg;
		fstream f;
	    //yuangong *a=new yuangong;
		f.open("yuangong.dat",ios::in|ios::out);
		f.seekg(0,ios::end);
		long pos=f.tellg();
	
	int a=1;//辅助变量
		int b,c,x,y,z,t,q,m;  
		
		do{	f.seekg(0,ios::beg);
				cout<<"请输入员工编号:?"<<endl;
				cin>>b;
		do
				{f.read((char *)&yg,sizeof(yuangong));  //搜索编号是否重复
				}while(yg.number!=b&&f.tellg()!=pos);
				if(yg.number==b) 
				{	cout<<"编号有重复!!!"<<endl;}
				else
					{a=0;
					}
		}while(a==1);

	    
		yg.number=b;
		cout<<"请输入员工姓名:?";
		cin>>yg.name;
l:      cout<<"请选择员工性别:?";
        cout<<"1.男性"<<'\t'<<"2.女性"<<endl;
		cout<<"请选择:?";
		cin>>c;
		switch(c)
		{	case 1:		strcpy(yg.sex,"male");break;
			case 2:		strcpy(yg.sex,"female");break;
			default :   cout<<"输入错误!!,请重新输入!"<<endl;goto l;
		}
		cout<<"请输入员工年龄:?"<<endl;
		cin>>yg.age;
m:		cout<<"请选择员工职位:?"<<endl;
		cout<<"1.经理"<<endl;
		cout<<"2.行政人员"<<endl;
		cout<<"3.技术人员"<<endl;
		cout<<"4.钟点工"<<endl;
		cout<<"5.工件工"<<endl;
		cout<<"请选择:?";
		cin>>m;
		switch(m)
			{	case 1:	{	strcpy(yg.state,"经理");
n:                         	cout<<"请输入学历"<<endl;
							cout<<"1。中学或中专"<<endl;
							cout<<"2。大学或大专"<<endl;		   
							cout<<"3。研究生	"<<endl;	   
							cin>>x;	
							switch(x)
								{	case 1: strcpy(yg.xueli,"中学或中专");
							                strcpy(yg.dengji,"unknow");strcpy(yg.zhicheng,"unkonw");break;
									case 2:	strcpy(yg.xueli,"大学或大专");
										    strcpy(yg.dengji,"unknow"); strcpy(yg.zhicheng,"unkonw");break;
									case 3: strcpy(yg.xueli,"研究生");
											strcpy(yg.dengji,"unknow");strcpy(yg.zhicheng,"unkonw");break;
								default :   cout<<"输入错误!!请重新输入!"<<endl;goto n;
								}
							break;}
             	   case 2:   {		strcpy(yg.state,"行政人员");
o:                               cout<<"请输入学历"<<endl;
								cout<<"1。中学或中专"<<endl;
								cout<<"2。大学或大专"<<endl;		   
								cout<<"3。研究生	"<<endl;	   
								cin>>y;	
								switch(y)
									{	case 1: strcpy(yg.xueli,"中学或中专");
								                strcpy(yg.dengji,"unknow");break;
										case 2:	strcpy(yg.xueli,"大学或大专");
											    strcpy(yg.dengji,"unknow");break;
										case 3: strcpy(yg.xueli,"研究生");
											     strcpy(yg.dengji,"unknow");break;
									  default :   cout<<"输入错误!!请重新输入!"<<endl;goto o;
									}
p:                           	cout<<"请输入行政人员的职称:"<<endl;
								cout<<"1,初级"<<endl;
								cout<<"2.中级"<<endl;
								cout<<"3.高级"<<endl;
								cin>>q;
								switch(q)
								{case 1:strcpy(yg.zhicheng,"初级");break;
									case 2:strcpy(yg.zhicheng,"中级");break;
									case 3:strcpy(yg.zhicheng,"高级");break;
									default :   cout<<"输入错误!!请重新输入!"<<endl;goto p;
								}
			                  break;	
						  }
			   case 3:   	   {	strcpy(yg.state,"技术人员");
q:                                	cout<<"请输入学历:?"<<endl;
									cout<<"1。中学或中专"<<endl;
									cout<<"2。大学或大专"<<endl;		   
									cout<<"3。研究生	"<<endl;	   
									cin>>z;	
									switch(z)
									{	case 1: strcpy(yg.xueli,"中学或中专");
									             strcpy(yg.zhicheng,"unkonw");break;
										case 2:	strcpy(yg.xueli,"大学或大专");
											     strcpy(yg.zhicheng,"unkonw");break;
										case 3: strcpy(yg.xueli,"研究生");
											     strcpy(yg.zhicheng,"unkonw");break;
										default :   cout<<"输入错误!!请重新输入!"<<endl;goto q;
									}
r:                             		cout<<"请输入技术人员的技术等级:?"<<endl;
									cout<<"1,初级"<<endl;
									cout<<"2.中级"<<endl;
									cout<<"3.高级"<<endl;
									cin>>t;
									switch(t)
									{case 1:strcpy(yg.dengji,"初级");break;
									case 2:strcpy(yg.dengji,"中级");break;
									case 3:strcpy(yg.dengji,"高级");break;
										default :   cout<<"输入错误!!请重新输入!"<<endl;goto r;
									}
									break;
							   }
				case 4:	   {      strcpy(yg.state,"钟点工");
					              strcpy(yg.xueli,"unknow");
							      strcpy(yg.dengji,"unknow");
								   strcpy(yg.zhicheng,"unkonw");break;
						   }
			
						  
				case 5:    {      strcpy(yg.state,"工件工");
								  strcpy(yg.xueli,"unkonw");
								  strcpy(yg.dengji,"unknow");
								  strcpy(yg.zhicheng,"unkonw");break;}
							      
				default :   cout<<"输入错误!!请重新输入!"<<endl;goto m;
		}
        	
						   
		 
	  yg.salary=0;					//默认工资=0
						
	   f.seekg(0,ios::end);
		f.write((char *)&yg,sizeof(yuangong)); //写入文件
		f.close();
}
void yuangong::display()     //输出全部员工基本信息
{	fstream f;
	yuangong yg; 
	f.open("yuangong.dat",ios::in|ios::out);
	f.seekg(0,ios::end);
	long pos=f.tellg();
	f.seekg(0,ios::beg);
	cout<<setw(10)<<"编号"<<setw(10)<<"姓名"<<setw(10)<<"性别"<<setw(10)<<"年龄"<<setw(10)<<"职位"<<endl;
	do
		{	f.read((char *)&yg,sizeof(yuangong));   //读取文件
			
			cout<<setw(10)<<yg.number<<setw(10)<<yg.name<<setw(10)<<yg.sex<<setw(10)<<yg.age<<setw(10)<<yg.state<<endl;
		}while(f.tellg()!=pos);

	f.close();
}
void yuangong::search()  //查询单个员工具体信息
{	yuangong yg;
	fstream f;
	f.open("yuangong.dat",ios::in|ios::out);
	f.seekg(0,ios::end);
	long pos=f.tellg();
	f.seekg(0,ios::beg);
	
	int a=1;
	while(a==1)
	{	cout<<"请输入要查询的员工的编号:?"<<endl;
	int i;
	cin>>i;
	
		do
		{f.read((char *)&yg,sizeof(yuangong));  //读搜索
		}while(yg.number!=i&&f.tellg()!=pos);
	   cout<<setw(5)<<"编号"<<setw(8)<<"姓名"<<setw(8)<<"性别"<<setw(5)<<"年龄"<<setw(10)<<"职位"<<setw(10)<<"学历"<<setw(8)<<"职称"<<setw(12)<<"技术等级"<<setw(8)<<"工资"<<endl;
		if(yg.number==i) 
		{
		cout<<setw(5)<<yg.number<<setw(8)<<yg.name<<setw(8)<<yg.sex<<setw(5)<<yg.age<<setw(10)<<yg.state<<setw(10)<<yg.xueli<<setw(8)<<yg.zhicheng<<setw(12)<<yg.dengji<<setw(8)<<yg.salary<<endl;
	     a=0;
	}else  cout<<"没有此员工!!"<<endl;}

	f.close();
}
class ganbu: virtual public yuangong//干部类
{public:
void print();//显示所有干部(包括经理,行政人员,技术人员)
};
void ganbu::print()//显示所有干部(包括经理,行政人员,技术人员)
{	yuangong yg;
	fstream f;
	f.open("yuangong.dat",ios::in|ios::out);
	f.seekg(0,ios::end);
	long pos=f.tellg();
	f.seekg(0,ios::beg);
	
	cout<<setw(8)<<"编号"<<setw(10)<<"姓名"<<setw(10)<<"性别"<<setw(10)<<"年龄"<<setw(10)<<"职位"<<setw(15)<<"学历"<<endl;
	do
		{	f.read((char *)&yg,sizeof(yuangong)); 
		
		
			if((strcmp(yg.state,"经理")==0)||(strcmp(yg.state,"行政人员")==0)||(strcmp(yg.state,"技术人员")==0))
				{
				  cout<<setw(8)<<yg.number<<setw(10)<<yg.name<<setw(10)<<yg.sex<<setw(10)<<yg.age<<setw(10)<<yg.state<<setw(15)<<yg.xueli<<endl;
				}
			
		}while(f.tellg()!=pos);
		f.close();
}
class gongren:virtual public yuangong  //工人类
{public:
void print();//显示所有工人(包括工件工,钟点工)
};
void gongren::print()//显示所有工人(包括工件工,钟点工)
{	yuangong yg;
	fstream f;
	f.open("yuangong.dat",ios::in|ios::out);
	f.seekg(0,ios::end);
	long pos=f.tellg();
	f.seekg(0,ios::beg);
	cout<<setw(10)<<"编号"<<setw(10)<<"姓名"<<setw(10)<<"性别"<<setw(10)<<"年龄"<<setw(15)<<"职位"<<endl;
	do
		{	f.read((char *)&yg,sizeof(yuangong)); 
			if((strcmp(yg.state,"工件工")==0)||(strcmp(yg.state,"钟点工")==0))
				{	
				cout<<setw(10)<<yg.number<<setw(10)<<yg.name<<setw(10)<<yg.sex<<setw(10)<<yg.age<<setw(15)<<yg.state<<endl;
				}
		}while(f.tellg()!=pos);
		f.close();
}

class jishurenyuan:public ganbu//技术人员类
{public:
 void salary();//计算技术人员工资
 void print();//显示所有技术人员
};
void jishurenyuan::print()//显示所有技术人员
{yuangong yg;
	fstream f;
	f.open("yuangong.dat",ios::in|ios::out);
	f.seekg(0,ios::end);
	long pos=f.tellg();
	f.seekg(0,ios::beg);
	cout<<setw(10)<<"编号"<<setw(10)<<"姓名"<<setw(10)<<"性别"<<setw(10)<<"年龄"<<setw(15)<<"职位"<<setw(10)<<"学历"<<setw(10)<<"技术等级"<<endl;
	do
		{	f.read((char *)&yg,sizeof(yuangong)); 
		
			if((strcmp(yg.state,"技术人员")==0))
			{
			   cout<<setw(10)<<yg.number<<setw(10)<<yg.name<<setw(10)<<yg.sex<<setw(10)<<yg.age<<setw(15)<<yg.state<<setw(10)<<yg.xueli<<setw(10)<<yg.dengji<<endl;
			}
		}while(f.tellg()!=pos);
		f.close();

}
void jishurenyuan::salary()//计算技术人员工资
{	int i;
	fstream f;
	yuangong yg;
	float m,n;
	f.open("yuangong.dat",ios::in|ios::out);
	cout<<"请输入要计算工资的员工编号:";
	cin>>i;
	f.seekg(0,ios::end);
	long pos=f.tellg();
	f.seekg(0,ios::beg);
	do	
	{f.read((char *)&yg,sizeof(yuangong));  //搜索
	}while(yg.number!=i&&f.tellg()!=pos);
	if(yg.number==i)  
	{	if(strcmp(yg.state,"技术人员")==0)
		
		   
	   {  if(strcmp(yg.dengji,"初级")==0)
				{m=500;}
		 else if(strcmp(yg.dengji,"中级 ")==0)
				{m=700;}
		 else   {m=900;}
	     if(strcmp(yg.xueli,"中学或中专")==0)
				{n=1000;}
	     else if(strcmp(yg.xueli,"大学或大专")==0)
				{n=1200;}
	     else   {n=1500;}
					
          yg.salary=m+n;
	      f.seekg(-long(sizeof(yuangong)),ios::cur);
	      f.write((char *)&yg,sizeof(yuangong));
	      cout<<setw(8)<<"编号"<<setw(8)<<"姓名"<<setw(8)<<"性别"<<setw(8)<<"年龄"<<setw(12)<<"职位"<<setw(12)<<"学历"<<setw(8)<<"职称"<<setw(12)<<"技术等级"<<setw(8)<<"工资"<<endl;
		
		  cout<<setw(8)<<yg.number<<setw(8)<<yg.name<<setw(8)<<yg.sex<<setw(8)<<yg.age<<setw(12)<<yg.state<<setw(12)<<yg.xueli<<setw(8)<<yg.zhicheng<<setw(12)<<yg.dengji<<setw(8)<<yg.salary<<endl;}

		  else cout<<"员工编号非行政人员"<<endl; }
     else cout<<"输入错误编号"<<endl;
f.close();
}
class jingli:public ganbu//经理类
{public:
	void salary();//计算经理工资
	void print();//显示所有经理
};
void jingli::print()//显示所有经理
{yuangong yg;
	fstream f;
	f.open("yuangong.dat",ios::in|ios::out);
	f.seekg(0,ios::end);
	long pos=f.tellg();
	f.seekg(0,ios::beg);
	cout<<setw(10)<<"编号"<<setw(10)<<"姓名"<<setw(10)<<"性别"<<setw(10)<<"年龄"<<setw(15)<<"职位"<<setw(10)<<"学历"<<endl;
	
	do
		{	f.read((char *)&yg,sizeof(yuangong)); 
			if((strcmp(yg.state,"经理")==0))
				{
				 cout<<setw(10)<<yg.number<<setw(10)<<yg.name<<setw(10)<<yg.sex<<setw(10)<<yg.age<<setw(15)<<yg.state<<setw(10)<<yg.xueli<<endl;
				}
		}while(f.tellg()!=pos);
		f.close();

}

void jingli::salary()//计算经理工资
{	int i;
	fstream f;
	yuangong yg;
	float m;
	f.open("yuangong.dat",ios::in|ios::out);
	cout<<"请输入要计算工资的员工编号:";
	cin>>i;
	f.seekg(0,ios::end);
	long pos=f.tellg();
	f.seekg(0,ios::beg);
	do	
	{f.read((char *)&yg,sizeof(yuangong));  //搜索
	}while(yg.number!=i&&f.tellg()!=pos);
	if(yg.number==i)  
	{	if(strcmp(yg.state,"经理")==0)
		{
			if(strcmp(yg.xueli,"中学或中专")==0)
			{m=3000;}
			else if(strcmp(yg.xueli,"大学或大专")==0)
			{m=4000;}
			else {m=4500;}
	

        yg.salary=m;
        f.seekg(-long(sizeof(yuangong)),ios::cur);
	    f.write((char *)&yg,sizeof(yuangong));
	    cout<<setw(8)<<"编号"<<setw(8)<<"姓名"<<setw(8)<<"性别"<<setw(8)<<"年龄"<<setw(12)<<"职位"<<setw(12)<<"学历"<<setw(8)<<"工资"<<endl;
		
        cout<<setw(8)<<yg.number<<setw(8)<<yg.name<<setw(8)<<yg.sex<<setw(8)<<yg.age<<setw(12)<<yg.state<<setw(12)<<yg.xueli<<setw(8)<<yg.salary<<endl;}
	   	
	 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -