C++实现简单的工资管理系统

编译环境:VS2019    语言:C++

项目描述:实现一个简单的工资管理系统,可以进行添加员工、查询员工、显示员工信息、删除员工信息、修改员工信息以及退出系统。添加员工时可以输入员工工号、姓名、性别、年龄、工资和工时。查询、删除、修改都是按照工号进行操作,如果不存在该员工就会作出提示,点击显示时可以显示当前系统中的所有员工,选择0操作就会退出当前系统。(操作界面如下图所示)

                                        

程序主代码如下:

#include<iostream>
#include<fstream> 
using namespace std;
#include<string>
#define FILEMANE "moneysystem.txt"
#define max 100

class Worker   //员工类   
{
public:
	Worker()
	{
		workerid = 0;
		workername = " ";
		money = 0;
		sex = " ";
		age = 0;
		worktime = 0;

	}

	void getW();
	void showW();

	int workerid;
	string workername;
	float money;
	float worktime;
	string sex;
	int age;
};
void Worker::getW()
{
	cout << "请输入工号:" << endl;
	cin >> workerid;

	cout << "请输入名字:" << endl;
	cin >> workername;

	cout << "请输入性别:" << endl;
	cin >> sex;

	cout << "请输入年龄:" << endl;
	cin >> age;

	cout << "请输入工资:" << endl;
	cin >> money;

	cout << "请输入工时" << endl;
	cin >> worktime;

}
void Worker::showW()
{
	cout << "工号:" << workerid
		 << "\t姓名:" << workername 
	     << "\t性别:" << sex 
	     << "\t年龄:" << age 
	     << "\t工时:" << worktime << "小时" 
	     << "\t工资:" << money << "元" << endl;
	 
}
void Menu()  //菜单界面 
{
	cout << "******亲,请选择您的操作:******" << endl;
	cout << "*******键盘:1 代表添加*********" << endl;
	cout << "*******键盘:2 代表查询*********" << endl;
	cout << "*******键盘:3 代表显示*********" << endl;
	cout << "*******键盘:4 代表删除*********" << endl;
	cout << "*******键盘:5 代表修改*********" << endl;
	cout << "*******键盘:0 代表退出*********" << endl;

}

class BOX
{
public:
	BOX()
	{
		ifstream ifs;
		//文件不存在时
		ifs.open(FILEMANE, ios::in);//读文件
			if (!ifs.is_open())
			{
				cout << "文件不存在!" << endl;
				Size= 0;
				Wfile = true;
				ifs.close();
				return ;
			}
			//文件存在,但是数据为空
			char ch;
			ifs >> ch;
			if (ifs.eof())
			{
				cout << "文件为空!" << endl;
				Size = 0;
				Wfile = true;
				ifs.close();
				return;
			}
	}
	Worker worker[max];
	int Size;
	void save();//写文件

	//统计文件中的人数
	int getnum();

	//判断文件是否为空
	bool Wfile;
	
};
void  BOX::save()//保存文件用的函数
{

	ofstream ofs;
	ofs.open(FILEMANE, ios::out); //写文件

	for (int i = 0; i < Size; i++)
	{
		ofs << worker[i].workerid << " "
			<< worker[i].workername << " "
			<< worker[i].sex << " "
			<< worker[i].age << " "
			<< worker[i].worktime << " "
			<< worker[i].money << endl;
	}

	ofs.close();
}//写文件
int BOX::getnum()

{
	ifstream ifs;
	ifs.open(FILEMANE, ios::in);//打开文件

	int id;
	string wname;
	float wmoney;
	float wtime;
	string wsex;
	int wage;

	int num = 0;
	while (ifs >> id && ifs >> wname && ifs >> wmoney && ifs >> wtime && ifs >> wsex && ifs >> wage)
	{
		num++;
	}

	return num;

}

void GetWorker(BOX* box)            //添加操作
{
	if (box->Size == max)
	{
		cout << "工资系统已满!" << endl;
	}
	else
	box->worker[box->Size].getW();
	box->Size++;

	//添加人后文件就不为空了,所以为false
	box->Wfile = false;
	cout << "添加成功!" << endl;

	box->save();//保存数据到文件中

	system("pasue");
	system("cls");//清屏
}
int isExist(BOX* box, int id)
{
	for (int i = 0; i < box->Size; i++)
	{
		if (box->worker[i].workerid == id)
			return i;
	}
	return -1;
}
void FindWorker(BOX* box)      //查找
{
	cout << "请输入您查找的工号:" << endl;
	int id;
	cin >> id;
	int ret = isExist(box, id);
	if (ret != -1) 
	{
		box->worker[ret].showW();
	}
	else {
		cout << "还没有这个人哟!" << endl;
	}

	system("pause");
	system("cls");
}
void ShowWorker(BOX* box)     //显示
{
	if (box->Size == 0)
	{
		cout << "当前系统还没有这个人哟!" << endl;
	}
	else
	{
		for (int i = 0; i < box->Size; i++)
		{
			box->worker[i].showW();
		}
	}
	system("pause");
	system("cls");
}
void DelectWorker(BOX* box) //删除 
{
	cout << "请输入你要删除的人的工号:" << endl;
	int id;
	cin >> id;

	int ret = isExist(box, id);
	if (ret != -1)
	{
		for (int i = ret; i < box->Size; i++)
		{
			//数据前移
			box->worker[i] = box->worker[i + 1];
		}
		box->Size--;//更新系统中书的本数
		cout << "删除成功啦!" << endl;
	}
	else
	{
		cout << "还没有这个人哟" << endl;
	}
}
void ModifiWorker(BOX* box)   //修改
{
	cout << "请输入您要修改的人的工号" << endl;
	int id;
	cin >> id;
	int ret = isExist(box, id);
	if (ret != -1)
	{
		box->worker[ret].getW();
	}

	cout << "修改成功!" << endl;
}


int main()
{
	BOX box;
	int select = 0;
	while (true)
	{
		Menu();//调用菜单界面 放在前面运行时候就可以直接看到菜单界面
		cin >> select;
		switch (select)
		{
		case 1://添加
			GetWorker(&box); break;
		case 2://查询 
			FindWorker(&box); break;
		case 3://显示 
			ShowWorker(&box); break;
		case 4://删除 
			DelectWorker(&box); break;
		case 5://修改
			ModifiWorker(&box); break;
		case 0://退出 
			cout << "欢迎您下次使用哟!" << endl;
			system("pause");
			break;
		default:
			break;
		}
	}

	return 0;
}

运行结果如下所示:

                                 

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值