• 大小: 11KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签:

资源简介

职工工资管理 基本要求: 定义职工(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

评论

共有 条评论