资源简介
职工工资管理
基本要求:
定义职工(employee )类,其中至少包括姓名、性别、工号、电话、所在科室和工资。
功能要求:
1、设计菜单实现功能选择;
2、输入功能:输入职工信息,并保存到文件中;
3、查询功能:
1)能够根据工号精确查询职工信息;
2)能够根据姓名、科室查询职工信息
3)分科室进行工资统计,计算各科室的平均工资
4、根据职工的工资排序输出
5、根据工号修改职工信息
6、根据工号删除职工信息
代码片段和文件信息
/*定义职工(employee )类,其中至少包括姓名、性别、工号、电话、所在科室和工资。*/
#include
#include
#include
#include
using namespace std;
class employee
{
private:
int m_Id; //职工号
float m_salary; //工资
char m_name[20]; //职工姓名
char m_tel[14]; //电话
char m_office[20]; //科室
char m_sex[5]; //性别
public:
employee() {}
employee& operator =(employee &re)
{
strcpy(m_name re.m_name);
strcpy(m_tel re.m_tel);
strcpy(m_office re.m_office);
strcpy(m_sex re.m_sex);
m_Id = re.m_Id;
m_salary = re.m_salary;
return *this;
}
char *get_name()
{
return m_name;
}
char *get_office()
{
return m_office;
}
float get_salary()
{
return m_salary;
}
int get_ID()
{
return m_Id;
}
friend ostream& operator <<(ostream &os const employee &re)
{
os << re.m_name << “\t\t“ << re.m_sex << “\t\t“ << re.m_Id << “\t\t“ << re.m_tel << “\t\t“ << re.m_office << “\t\t“ << re.m_salary << endl;
return os;
}
friend istream& operator >>(istream &is employee &re)
{
is >> re.m_name >> re.m_sex >> re.m_Id >> re.m_tel >> re.m_office >> re.m_salary;
return is;
}
~employee() {}
};
/* 2、输入功能:输入职工信息,并保存到文件中;*/
void AddEmployee()
{
fstream fs;
fs.open(“employeeinfo.dat“ ios::out | ios::app | ios::binary);
if (!fs)
cout << “Failed.“ << endl;
else {
int len;
cout << “请输入添加的职工数:“;
cin >> len;
if (len > 0)
{
employee *emp = new employee[len];
cout << “请输入职工的姓名、性别、工号、电话、所在科室和工资“ << endl;
for (int i = 0; i < len; i++)
{
cin >> emp[i];
fs.write((char*)&emp[i] sizeof(emp[i]));
}
delete[]emp;
}
}
fs.close();
fs.clear();
}
/* 3、查询功能:1)能够根据工号精确查询职工信息;*/
void ReseachByID()
{
fstream fs;
fs.open(“employeeinfo.dat“ ios::in | ios::binary);
if (!fs)
cout << “Failed.“ << endl;
else
{
int id i;
cout << “请输入你要查询的人的工号:“;
cin >> id;
fs.seekg(0 ios::end); //文件指针调到文件末尾
int s = fs.tellg(); //计算文件大小
int n = s / sizeof(employee); //计算文件中职工人数
fs.seekg(ios::beg); //文件指针调到文件开头
employee *e = new employee[n];
employee temp;
for (i = 0; i < n; i++)
fs.read((char *)&e[i] sizeof(e[i]));
int j = -1;
for (i = 0; i < n; i++)
if (id == e[i].get_ID())
j = i;
if (j == -1)
cout << “无此职工号!“ << endl;
else
{
cout << “姓名 | 性别 | 工号 | 电话 | 科室 | 工资 “ << endl;
cout << “-----------|-----------|--------------------|--------------------|--------------|-------------“ << endl;
cout << e[j];
}
delete[] e;
}
fs.close();
fs.clear();
}
/*3、查询功能:2)能够根据姓名、科室查询职工信息*/
void ReseachByNameAOffice()
{
fstream fs;
fs.open(“employeeinfo.dat“ ios::in | ios::binary);
if (!fs)
cout << “Failed.“ << endl;
else
{
char name[20];
char office[20];
cout << “请输入你要查询的人的姓名:“;
cin >> name;
cout << “请输入你要查询的人的科室:“;
cin >> office;
fs.seekg(0 i
评论
共有 条评论