职工管理系统完整

#include
#include
using namespace std;
#include

//-------------------------------------------------------------------
//菜单
void caidan()
{
cout << “******************************************************” << endl;
cout << “***************欢迎使用职工管理系统” << endl;
cout << “0.退出管理程序” << endl;
cout << “1.增加职工信息” << endl;
cout << “2.显示职工信息” << endl;
cout << “3.删除离职职工” << endl;
cout << “4.修改职工信息” << endl;
cout << “5.查找职工信息” << endl;
cout << “6.按照编号排序” << endl;
cout << “7.清空所有文档” << endl;
cout << endl;
}
//-------------------------------------------------------------------

class zhigong
{
public:
//有编号 姓名 职位等级
int bianhao;
string name;
int lv;

};
//-------------------------------------------------------------------
//-------------------------------------------------------------------
//输入职工信息
zhigong z[999]; int num = 0;//公用方便其他函数调用
//-------------------------------------------------------------------
void zengjia()
{

int a2;
cout << "1.员工" << endl;
cout << "2.经理" << endl;
cout << "3.老板" << endl;
cout << "请选择" << endl;
cin>>a2;
if (a2 == 1)
{
	cout << "输入职工编号:"; cin >> z[num].bianhao; cout << endl;
	cout << "输入职工姓名:"; cin >> z[num].name; cout << endl;
	z[num].lv = 1;
}
if (a2 == 2)
{
	cout << "输入职工编号:"; cin >> z[num].bianhao; cout << endl;
	cout << "输入职工姓名:"; cin >> z[num].name; cout << endl;
	z[num].lv = 2;
}
if (a2 == 3)
{
	cout << "输入职工编号:"; cin >> z[num].bianhao; cout << endl;
	cout << "输入职工姓名:"; cin >> z[num].name; cout << endl;
	z[num].lv = 3;
}



num++;

}
//-------------------------------------------------------------------
void baocun()//保存职工信息
{

fstream ofs;
ofs.open("zhigong.txt", ios::out);

for (int o = 0; o < 999; o++)
{
	if(z[o].lv>=1&&z[o].lv<=3)
	ofs << z[o].bianhao << " "
		<< z[o].name << " "
		<< z[o].lv << endl;
}

}

//-------------------------------------------------------------------
//初始化
void chushihua()
{

fstream f;
f.open("zhigong.txt", ios::in);//读文件
//1.文件不存在
if (!f.is_open())
{
	cout << "文件不存在" << endl;
	f.close();
	return;
}
//2.文件存在但为空
char ch;
f >> ch;
if (f.eof())
{
	//文件为空
	cout << "文件为空" << endl;
	f.close();
}
//3.文件存在,且有数据
fstream s;
s.open("zhigong.txt", ios::in);

int bianhao;
string name;
int lv;
while (s >> bianhao && s >> name && s >> lv)
{
	z[num].bianhao = bianhao;
	z[num].name = name;
	z[num].lv = lv;
	num++;
	
	

}

}
//-------------------------------------------------------------------
void xianshi()//显示职工信息
{
fstream f;
f.open(“zhigong.txt”, ios::in);
int bianhao;
string name;
int lv;
while (f >> bianhao && f >> name &&f>>lv)
{
cout << “编号:” << bianhao << " 姓名:" << name << " 等级:" << lv << endl;
}
f.close();
}
//-------------------------------------------------------------------
void shanchu()//删除
{
cout << “请输入要删除离职人员的(编号)或(姓名)” << endl;
int a;//选择按钮

int bianhaoxz;//供自己输入的去对比文件输入相同来用的变量
string namexz;

int bianhao;
string name;
int lv;
cout << "请输入编号" << endl;
cin >> bianhaoxz;//选择按钮

int num1 = 0;  int num2 = 0;//num2测他现在有多少行我需要知道他现在一空有多少个存放数据的数组

fstream f;
f.open("zhigong.txt", ios::in);//只读

while (f >> bianhao && f >> name&&f>>lv) //读这个文件里的内容 有的读就符合条件
{
	
	       //因为上面我写下来  文件夹的第一行肯定是数组[0] 
	num1++; //num1代表第num1条 如果要是想拿数组就是num1-1
	
	if (bianhaoxz == bianhao)
	{
		break;//退出循环
	}
	
}
f.close();


//开始删掉 删掉后面的数组全部要+1顶上来位置不是会造成一个空的行
for (num1; num1 < 999; num1++)
{
	z[num1-1] = z[num1];   //假如是数组3要被删了 不造成空口话 直接用数组[4]把他覆盖掉  然后4去了3的位子
	                           //5就去接替4的位子后面也是这样 直到他的lv不等于1|2|3 这三个数其中一个就是没有了
	//还有一种情况如果是数组存放数据 最后一个数组 那他就无法+1 他无法被一个空的东西赋值
	if (num1 == num)
	{
		z[num1].lv = 0; //这样他不就不可已进入重写就可以变成删除了
	}

	if (z[num1-1].lv != 1 &&z[num1-1].lv != 2&&z[num1-1].lv != 3)  //当lv不是1.2.3这三个数其中之一
	{
		break;
	}
}
//这个时候再重新录入文件把之前的文件给覆盖掉
fstream ofs;
ofs.open("zhigong.txt", ios::out);

for (int o = 0; o < 999; o++)
{
	if (z[o].lv >= 1 && z[o].lv <= 3)
	{
		ofs << z[o].bianhao << " "
			<< z[o].name << " "
			<< z[o].lv << endl;
	}
}

}
//-------------------------------------------------------------------

//修改职工信息
void xiugai()
{
int num2 = 0;
int bianhao;
string name;
int lv;
int bianhaoxz;
cout << “请输入要修改员工的编号” << endl;
cin >> bianhaoxz;
fstream f;
f.open(“zhigong.txt”, ios::in);//读

while (f >> bianhao && f >> name && f >> lv) //获取了编号的行数 他的[数组]  =行数-1 ==  num2-1
{
	num2++;
	if (bianhaoxz == bianhao)
	{
		break;
	}
}
string a;
f.close();
cout << "请输入新的编号:"; cin >> z[num2 - 1].bianhao; cout << endl;
cout << "请输入新的姓名:"; cin >> z[num2 - 1].name; cout << endl;
cout << "请输入他的新职位:"; cin >> a;
if (a == "员工")
{
	z[num2 - 1].lv = 1;
}
else if (a == "经理")
{
	z[num2 - 1].lv = 2;
}
else if (a == "老板")
{
	z[num2 - 1].lv = 3;
}
//这个时候再重新录入文件把之前的文件给覆盖掉
fstream ofs;
ofs.open("zhigong.txt", ios::out);

for (int o = 0; o < 999; o++)
{
	if (z[o].lv >= 1 && z[o].lv <= 3)
	{
		ofs << z[o].bianhao << " "
			<< z[o].name << " "
			<< z[o].lv << endl;
	}
}

}
//-------------------------------------------------------------------

//查找员工
void chazhao()
{
int a;
cout << “请输入员工编号” << endl;
cin >> a;

int bianhao;
string name;
int lv;
fstream f;
f.open("zhigong.txt", ios::in);

while (f >> bianhao && f >> name && f >> lv)
{
	if (a==bianhao)
	{
		cout << "编号:" << bianhao; cout << " 姓名:" << name << " 等级:" << lv << endl;
	}
}
f.close();

}

//-------------------------------------------------------------------------------------------------
//按照编号排序
void paixu()
{
cout << num << endl;
for (int a = 0; a < num - 1; a++)
{
for (int b = 0; b < num-a-1; b++)
{
if (z[b].bianhao > z[b + 1].bianhao)
{
class zhigong temp;
temp = z[b];
z[b] = z[b + 1];
z[b + 1] = temp;
}
}
}

//这个时候再重新录入文件把之前的文件给覆盖掉
fstream ofs;
ofs.open("zhigong.txt", ios::out);

for (int o = 0; o < 999; o++)
{
	if (z[o].lv >= 1 && z[o].lv <= 3)
	{
		ofs << z[o].bianhao << " "
			<< z[o].name << " "
			<< z[o].lv << endl;
	}
}
ofs.close();

}
//--------------------------------------------------------

//清空文档
void qingkong()
{
//这个时候再重新录入文件把之前的文件给覆盖掉

for (int a = 0; a < 999; a++)
{
	z[a].lv = 0; //直接把全部lv等于0 
	if (a == num - 1)
	{
		break;
	}
}


//重新写入覆盖  因为lv在1-3才能传入数据 等于0直接等于覆盖个空的
fstream ofs;
ofs.open("zhigong.txt", ios::out);

for (int o = 0; o < 999; o++)
{
	if (z[o].lv >= 1 && z[o].lv <= 3)
	{
		ofs << z[o].bianhao << " "
			<< z[o].name << " "
			<< z[o].lv << endl;
	}
}
ofs.close();

}

//-------------------------------------------------------------------
int main()
{

//初始化
chushihua();

//-----------------------------------------------------------
int A;//选择
while(1)
{
//菜单
caidan();
cin >> A;//选择
//------------------------------------------------------------
//0.退出管理程序
if (A == 0)
{
cout << “欢迎下次使用” << endl;
system(“pause”);
exit(0);//退出函数
}
//---------------------------------------------------------------
//1.增加职工信息
if (A == 1)
{
zengjia(); //输入职工信息
cout << “添加成功” << endl;
baocun();//保存职工信息

	};

//--------------------------------------------------------------------------
if (A==2)//2.显示职工信息
{
xianshi();
}
//--------------------------------------------------------------------------
if (A == 3)//删除离职职工
{
shanchu();
}

//--------------------------------------------------------------------------
//4.修改职工信息
if (A == 4)
{
xiugai();
}

	//5.查找职工信息
	if (A == 5)
	{
		chazhao();
	}

	//6.按照编号排序
	if (A == 6)
	{
		paixu();
	}

	//7.清空文档
	if (A == 7)
	{
		qingkong();
	}

}

system("pause");
return 0;

}

//num=最大行数

猜你喜欢

转载自blog.csdn.net/ADADQDQQ/article/details/108373421