文章链接:https://codemouse.online/archives/2020-06-04160611
需求
八、职工工资管理系统(最多允许1人-组,最多允许4组选择)
需求:公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的
职工号、姓名、月工资、岗位、工龄、性别等信息。
程序基本功能:
1.增加、修改、删除一个职工信息。
2.显示全部职工信息。
3.按条件显示职工信息(条件有按电话号码、姓名、职称或职工号等)。
4.按条件显示工资信息(职工号,职称等)。
5.查找指定金额范围的职工职称。
代码
#include <stdio.h>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
#define FPHONE 1
#define FNAME 2
#define FWNO 3
#define FPOSITION 4
class Worker{
public:
string wno;
string name;
double money;
string position;
int workAge;
string sex;
string phoneNum;
// 打印个人所有信息
void print(){
printf("职工号:%s \t 名字:%s \t 工资:%f \t 职位:%s \t 工龄:%d \t 性别:%s \t 电话号码:%s\n"
, wno.c_str(), name.c_str(), money, position.c_str(), workAge, sex.c_str(), phoneNum.c_str());
}
// 打印工资信息
void printMoney(){
printf("职工号:%s \t 名字:%s \t 工资:%f \n"
, wno.c_str(), name.c_str(), money);
}
// 打印职工职称
void printPosition(){
printf("职工号:%s \t 名字:%s \t 职位:%s \n"
, wno.c_str(), name.c_str(), position.c_str());
}
};
// 所有职员
vector<Worker> workers;
void printMenu(){
printf("************职工工资管理系统************\n");
printf("*1.输入职工信息 *\n");
printf("*2.修改职工信息 *\n");
printf("*3.删除职工信息 *\n");
printf("*4.打印全部职工信息 *\n");
printf("*5.按条件查询职工信息 *\n");
printf("*6.按条件显示工资信息 *\n");
printf("*7.查找指定金额范围的职工职称 *\n");
printf("*8.退出程序 *\n");
printf("****************************************\n");
printf("输入您的选择并回车(1-8)\n");
}
程序中默认不重名
// 返回所在数组下标,条件有按电话号码、姓名、职工号
int findWorker(int flags){
string info;
int i = 0;
switch (flags){
case FPHONE:
printf("请输入手机号码\n");
cin >> info;
for ( i = 0; i < workers.size(); i++)
{
if (!info.compare(workers[i].phoneNum))
return i;
}
break;
case FNAME:
printf("请输入职员名字\n");
cin >> info;
for ( i = 0; i < workers.size(); i++)
{
if (!info.compare(workers[i].name))
return i;
}
break;
case FWNO:
printf("请输入员工号\n");
cin >> info;
for ( i = 0; i < workers.size(); i++)
{
if (!info.compare(workers[i].wno))
return i;
}
break;
}
return -1;
}
void insertWorkers(){
int num = 0;
printf("请输入要添加的职员数量\n");
scanf("%d",&num);
printf("职工号\t 名字\t 工资\t 职位\t 工龄\t 性别\t 电话号码 并用空格隔开\n");
Worker temp;
for (int i = 0; i < num; i++)
{
cin >> temp.wno >> temp.name >> temp.money >> temp.position >> temp.workAge >> temp.sex >> temp.phoneNum;
workers.push_back(temp);
}
printf("添加完成\n");
}
// 输入职工号修改员工信息
void updateWorker(){
int index = findWorker(FWNO);
if (index < 0){
printf("未找到该员工\n");
return;
}
printf("找到该员工\n");
printf("请输入修改 名字\t 工资\t 职位\t 工龄\t 性别\t 电话号码 并用空格隔开\n");
cin >> workers[index].name >> workers[index].money >> workers[index].position >> workers[index].workAge >> workers[index].sex >> workers[index].phoneNum;
printf("修改完成\n");
}
// 删除员工
void deleteWorker(){
int index = findWorker(FWNO);
if (index < 0){
printf("未找到该员工\n");
return;
}
printf("找到该员工\n");
workers.erase(workers.begin() + index);
printf("删除完成\n");
}
// 打印所有员工的信息
void printALL(){
for (int i = 0; i < workers.size(); i++)
{
workers[i].print();
}
}
// 查找一定范围的
void findRange(){
double low;
double hight;
printf("请输入最低金额和最高金额\n");
cin >> low >> hight;
for (int i = 0; i < workers.size(); i++)
{
if (workers[i].money >= low && workers[i].money <= hight)
workers[i].printPosition();
}
}
// 按条件查询职员信息
void printCondition(){
int flag = 0;
printf("1.电话号码查询\n 2.姓名查询 \n 3.职工号查询 \n 4.职称查询\n");
printf("请输入[1-4]\n");
cin >> flag;
if (flag <= 3){
int index = findWorker(flag);
if (index >= 0)
workers[index].print();
else
printf("未找到员工\n");
}
else if (flag == FPOSITION){
string info;
printf("请输入职称\n");
cin >> info;
int flag = 1;
for (int i = 0; i < workers.size(); i++)
{
if (!info.compare(workers[i].position)){
workers[i].print();
flag = 0;
}
}
if (flag)
printf("未找到员工\n");
}
}
//按条件显示工资信息,条件(职工号,职称)
void printMoney(){
int flag = 0;
printf("1.职工号查询 \n 2.职称查询\n");
printf("请输入[1-2]\n");
cin >> flag;
if (flag == 1 ){
int index = findWorker(flag);
if (index >= 0)
workers[index].printMoney();
}
else if (flag == 2){
string info;
printf("请输入职称\n");
cin >> info;
for (int i = 0; i < workers.size(); i++)
{
if (!info.compare(workers[i].position))
workers[i].printMoney();
}
}
}
/*3、
八、职工工资管理系统(最多允许1人-组,最多允许4组选择)
需求:公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的
职工号、姓名、月工资、岗位、工龄、性别等信息。
程序基本功能:
1.增加、修改、删除一个职工信息。
2.显示全部职工信息。
3.按条件显示职工信息(条件有按电话号码、姓名、职称或职工号等)。
4.按条件显示工资信息(职工号,职称等)。
5.查找指定金额范围的职工职称。
*/
int main()
{
int select = 0;
while (1){
printMenu();
cin >> select;
switch (select)
{
case 1:
insertWorkers();
break;
case 2:
updateWorker();
break;
case 3:
deleteWorker();
break;
case 4:
printALL();
break;
case 5:
printCondition();
break;
case 6:
//按条件显示工资信息
printMoney();
break;
case 7:
findRange();
break;
case 8:
exit(0);
break;
default:
printf("输入错误,请重新输入\n");
break;
}
}
return 0;
}