编译环境: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;
}
运行结果如下所示: