终极版本

#include<iostream>
#include<cstring>
#include<fstream>
#include<ostream>
#include<string>
# define maxn 1000
using namespace std;
bool IsExit[maxn];

int num;

#ifndef TIMETODAY_H

#define TIMETODAY_H

class TimetoDay
{
public:
    double Change(double t)
{
return t*1.0/8.0;

}q1;

#endif

#ifndef PERSONILLWITHOUTMONEYTIME_H

#define PERSONILLWITHOUTMONEYTIME_H

#include"TIMETODAY_H"

class PersonIllWithoutMoneyTime:public TimetoDay
{
public:
double IllWithoutMoneyTime;
  bool JudgeillwithoutMoneyTime()
    {
        if(IllWithoutMoneyTime>=0&&IllWithoutMoneyTime<=2)
        {
            return true;
        }
        return false;
    }

};

#endif

#ifndef PERSONRESTWITHOUTMONEYTIME_H

#define PERSONRESTWITHOUTMONEYTIME_H

#include"TIMETODAY_H"

class PersonRestwithoutMoneyTime:public TimetoDay
{
public:
    double  RestWithMoneyTime;
    bool JudgeRestWithMoneyTime()
    {
        if(RestWithMoneyTime>=0&&RestWithMoneyTime<=3)
        {
            return true;
        }
        return false;
    }

};

#endif

#ifndef PEOPLEBASICMESSAGE_H

#define PEOPLEBASICMESSAGE_H

#include"PERSONRESTWITHOUTMONEYTIME_H“

#include"PERSONILLWITHOUTMONEYTIME_H"

#include<cstring>

#include<string>

class PeopleBasicMessage: public PersonIllWithoutMoneyTime,public PersonRestwithoutMoneyTime
{
public:
    int Num;
    string Name;
    char Sex;
    string Department;
    int Rating;
    PeopleBasicMessage() {};
    PeopleBasicMessage(int n1,string str1,char s1,string str2,int s2)
    {
        Num=n1;
        Name=str1;
        Sex=s1;
        Department=str2;
        Rating=s2;
    }

}Man[maxn];

#endif

#ifndef "OPERATOR_H"

#define "OPERATOR_H"

#include"PEOPLEBASICMESSAGE_H"

#include"TIMETODAY_H"

#include<cstring>

#include<string>

class Operator:public PeopleBasicMessage
{
public:
    void SearchMessagebyNum(int num)
    {
        if(IsExit[num]==true)
        {
            cout<<"编号 "<<"姓名  "<<"性别 "<<"工作岗位 "<<"工作等级 "<<"带病休假的时间 "<<"带薪休假的时间 "<<endl;
            cout<<num<<"   "<<Man[num].Name<<"     "<<Man[num].Sex<<"  "<<Man[num].Department<<"      "<<Man[num].Rating<<"     "<<Man[num].IllWithoutMoneyTime<<"                "<<Man[num].RestWithMoneyTime<<endl;
            return ;
        }
        cout<<"找不到这个人的信息!!!"<<endl;
    }
    void SearchMessagebyName(string name)
    {
        int flag=0;
        for(int i=1; i<=maxn; i++)
        {
            if(Man[i].Name==name&&IsExit[i]==true)
            {
                flag=1;
                cout<<i<<" "<<Man[i].Name<<" "<<Man[i].Sex<<" "<<Man[i].Department<<" "<<Man[i].Rating<<" "<<Man[i].IllWithoutMoneyTime<<" "<<Man[i].RestWithMoneyTime<<endl;
            }
        }
        if(flag==0)
        {
            cout<<"查无此人"<<endl;
        }
        return ;
    }
    void PrintAllMessage()
    {
        for(int i=1; i<=num; i++)
        {
            if(IsExit[i]==true)
{cout<<"编号 "<<"姓名  "<<"性别 "<<"工作岗位 "<<"工作等级 "<<"带病休假的时间 "<<"带薪休假的时间 "<<endl;
                cout<<i<<"     "<<Man[i].Name<<"   "<<Man[i].Sex<<"     "<<Man[i].Department<<"       "<<Man[i].Rating<<"        "<<Man[i].IllWithoutMoneyTime<<"           "<<Man[i].RestWithMoneyTime<<endl;

}
    }
    void ChangeMessage(int num,string name,char sex,string department,int rating,int illWithoutMoneyTime,int restWithMoneyTime)
    {
        Man[num].Name=name;
        Man[num].Sex=sex;
        Man[num].Department=department;
        Man[num].Rating=rating;
        Man[num].IllWithoutMoneyTime=illWithoutMoneyTime;
        Man[num].RestWithMoneyTime=restWithMoneyTime;
    }
    void Delete(int num)
    {
        IsExit[num]=false;
    }
    void  CalculateFourKindPersonMessage()
    {
        int t1=0,t2=0,t3=0,t4=0;
        for(int i=1; i<=maxn; i++)
        {
            if(IsExit[i]==false)continue;
            if(Man[i].Department=="Manage")
                t1++;
            if(Man[i].Department=="Technician")
                t2++;
            if(Man[i].Department=="SaleMan")
                t3++;
            if(Man[i].Department=="SaleManager")
                t4++;
        }
        cout<<"经理人数为 "<<" "<<t1<<endl;
        cout<<"技术人员人数为 "<<" "<<t2<<endl;
        cout<<"销售人员人数为 "<<" "<<t3<<endl;
        cout<<"销售经理人数为 "<<" "<<t4<<endl;
        cout<<"总人数为 "<<" "<<t1+t2+t3+t4<<endl;
    }
    void CalculatePeopleMessage(int num)
    {
        if(IsExit[num]==false)
        {
            cout<<"查无此人"<<endl;
            return ;
        }
        cout<<"该员工生病不工作的时间为  "<<Man[num].IllWithoutMoneyTime<<endl;
        cout<<"该员工带薪休假的时间为  "<<Man[num].RestWithMoneyTime<<endl;
    }
    void CalculateSexMessage()
    {
        int t1=0,t2=0;
        for(int i=1; i<=maxn; i++)
        {
            if(IsExit[i]==false)continue;
            if(Man[i].Sex=='m')
            {
                t1++;
            }
            else
            {
                t2++;
            }
        }
        cout<<"男人的数目是"<<" "<<t1<<endl;
        cout<<"女人的数目是"<<" "<<t2<<endl;
    }
    void CalculateRatingMessage()
    {
        int t1=0,t2=0,t3=0,t4=0;
        for(int i=1; i<=maxn; i++)
        {
            if(IsExit[i]==false)continue;
            if(Man[i].Rating==1)t1++;
            if(Man[i].Rating==2)t2++;
            if(Man[i].Rating==3)t3++;
            if(Man[i].Rating==4)t4++;
        }
        cout<<"等级一的人数是 "<<" "<<t1<<endl;
        cout<<"等级二的人数是 "<<" "<<t2<<endl;
        cout<<"等级三的人数是 "<<" "<<t3<<endl;
        cout<<"等级四的人数是 "<<" "<<t4<<endl;
    }
    void CalculateOffMessage(int t)
    {
        if(IsExit[t]==false)
        {
            cout<<"查无此人 "<<endl;
            return ;
        }
        cout<<"此人带薪休假的天数  "<<" "<<Man[t].RestWithMoneyTime<<endl;
        cout<<"此人带病休假的天数  "<<" "<<Man[t].IllWithoutMoneyTime<<endl;
        int k1=0,k2=0;
        if(Man[t].RestWithMoneyTime>3)
        {
            k1=1;
            cout<<"这个人带薪休假天数已经超期 "<<endl;
        }
        if(Man[t].IllWithoutMoneyTime>2)
        {
            k2=1;
            cout<<"这个人生病不工作的时间已超期 "<<endl;
        }
        if(k1==0&&k2==0)
        {
            cout<<"这个人的请假时间合格"<<endl;
        }
    }

} q;

#endif


void Read(){
    ifstream in("data.log");
    for(int i=1; i<=num; i++)
    {
        Man[i].Num = i;
        in >> Man[i].Num  >> Man[i].Name  >> Man[i].Sex  >> Man[i].Department  >> Man[i].Rating     >> Man[i].IllWithoutMoneyTime  >> Man[i].RestWithMoneyTime ;
    }
    in.close();
}




void save(int num) {
    ofstream out("data.log");
    for(int i=1; i<=num; i++)
    {
        Man[i].Num = i;
        out << Man[i].Num << "    " << Man[i].Name << "    " << Man[i].Sex << "    " << Man[i].Department << "    " << Man[i].Rating << "    "    << Man[i].IllWithoutMoneyTime << "    " << Man[i].RestWithMoneyTime << endl;
    }
    out.close();

}

#include<iostream>
#include<cstring>
#include<fstream>
#include<ostream>

#include<string>

#include"OPERATOR_H"

#include"PEOPLEBASICMESSAGE"

# define maxn 1000
using namespace std;

bool IsExit[maxn];

int num;

void Read(){
    ifstream in("data.log");
    for(int i=1; i<=num; i++)
    {
        Man[i].Num = i;
        in >> Man[i].Num  >> Man[i].Name  >> Man[i].Sex  >> Man[i].Department  >> Man[i].Rating     >> Man[i].IllWithoutMoneyTime  >> Man[i].RestWithMoneyTime ;
    }
    in.close();
}
void save(int num) {
    ofstream out("data.log");
    for(int i=1; i<=num; i++)
    {
        Man[i].Num = i;
        out << Man[i].Num << "    " << Man[i].Name << "    " << Man[i].Sex << "    " << Man[i].Department << "    " << Man[i].Rating << "    "    << Man[i].IllWithoutMoneyTime << "    " << Man[i].RestWithMoneyTime << endl;
    }
    out.close();

}

int main()
{
    memset(IsExit,false,sizeof(IsExit));
    Man[1].Name="刘";
    Man[1].Sex='f';
    Man[1].Department="Manager";
    Man[1].Rating=1;
    Man[1].IllWithoutMoneyTime=0;
    Man[1].RestWithMoneyTime=0;
    Man[2].Name="洪";
    Man[2].Sex='m';
    Man[2].Department="Technician";
    Man[2].Rating=2;
    Man[2].IllWithoutMoneyTime=0;
    Man[2].RestWithMoneyTime=0;
    Man[3].Name="凯";
    Man[3].Sex='f';
    Man[3].Department="SaleMan";
    Man[3].Rating=3;
    Man[3].IllWithoutMoneyTime=0;
    Man[3].RestWithMoneyTime=0;
    Man[4].Name="最";
    Man[4].Sex='m';
    Man[4].Department="SaleManager";
    Man[4].Rating=4;
    Man[4].IllWithoutMoneyTime=0;
    Man[4].RestWithMoneyTime=0;
    Man[5].Name="帅";
    Man[5].Sex='f';
    Man[5].Department="Manager";
    Man[5].Rating=1;
    Man[5].IllWithoutMoneyTime=0;
    Man[5].RestWithMoneyTime=0;
    for(int i=1; i<=5; i++)
    {
        IsExit[i]=true;
    }
    cout<<"************************************************************************"<<endl;
    cout<<"                                                                        "<<endl;
    cout<<"                         公司员工考勤管理系统                    "<<endl;
    cout<<"                                                          "<<endl;
    cout<<"                                                          "<<endl;
    cout<<"          进入系统请输入1                    退出请输入2   "<<endl;
    cout<<"**********************************************************************"<<endl;
    int tq;
    cin>>tq;
    num=5;
    if(tq==2)
    {
        return 0;
    }
    int flag=2;
    while(1)
    {
        if(flag==1)
        {
            break;
        }
        cout<<"                               功能表                   "<<endl;
        cout<<"               添加功能--------------------->请输入1 "<<endl;
        cout<<"               查询功能--------------------->请输入2 "<<endl;
        cout<<"               显示功能--------------------->请输入3 "<<endl;
        cout<<"               编辑功能--------------------->请输入4 "<<endl;
        cout<<"               删除功能--------------------->请输入5 "<<endl;
        cout<<"               统计功能--------------------->请输入6 "<<endl;
        cout<<"               保存功能--------------------->请输入7 "<<endl;
        cout<<"               读取功能--------------------->请输入8 "<<endl;
        cout<<"                                       "<<endl;
        cout<<"请输入要进行的操作"<<endl;
        int t;
        cin>>t;
        int order;
        string name;
        char sex;
        string Department;
        int rating;
        int IllWithoutMoneyTime;
        int RestWithMoneyTime;
        if(t==1)
        {
            cout<<"请输入要添加的人的编号 姓名 性别 岗位 等级 带病休假的时间  带薪休假的时间 "<<endl;
            cin>>order>>name>>sex>>Department>>rating>>IllWithoutMoneyTime>>RestWithMoneyTime;
            if(IsExit[order]==true)
            {
                cout<<"该编号下已经有别人的信息存在     "<<endl;
            }
            else
            {
                Man[++num].Num=order;
                Man[num].Name=name;
                Man[num].Sex=sex;
                Man[num].Department=Department;
                Man[num].Rating=rating;
                IsExit[num]=true;
                cout<<"已经存入!!!"<<endl;
            }
        }
        else if(t==2)
        {
            cout<<"通过编号查询请输入1 "<<"  "<<"通过姓名查询请输入2 "<<"  "<<endl;
            int temp;
            cin>>temp;
            if(temp==1)
            {
                int w;
                cout<<"请输入编号  "<<endl;
                cin>>w;
                q.SearchMessagebyNum(w);
            }
            else
            {
                string s;
                cin>>s;
                q.SearchMessagebyName(s);
            }
        }
        else if(t==3)
        {
            q.PrintAllMessage();
        }
        else if(t==4)
        {
            cout<<"请输入要改变的人更改后的信息 "<<endl;
cout<<"修改等级---------------->请输入1"<<endl;
cout<<"修改带病休假时间-------->请输入2"<<endl;
cout<<"修改带薪休假时间-------->请输入3"<<endl;
            cout<<"其他修改---------------->请输入4"<<endl;
int e; 
cin>>e;
if(e==1)
{
           cout<<"请输入 被修改人的编号 以及 修改后等级"<<endl;
  int g1,g2;
  cin>>g1>>g2;
  if(IsExit[g1]==false)
  {
  cout<<" 查无此人!!!"<<endl;
  }
  else 
  {
  Man[g1].Rating=g2;
  cout<<"修改完成!!!"<<endl;
  }
}
if(e==2)
{
           cout<<"请输入 被修改人的编号  请假带病休假的小时"<<endl;
  int  g1;
  double g2;
  cin>>g1>>g2;
  if(IsExit[g1]==false){
  cout<<" 查无此人!!!"<<endl;
  }
  else {
  if(g2>0)
  Man[g1].IllWithoutMoneyTime+=q1.Change(g2);
  if(g2<0)
  Man[g1].IllWithoutMoneyTime-=q1.Change(-g2);
  cout<<"修改完成!!!"<<endl;
  }
}
if(e==3)
{
           cout<<"请输入 被修改人的编号  请假带薪休假的小时"<<endl;
  int  g1;
  double g2;
  cin>>g1>>g2;
  if(IsExit[g1]==false){
  cout<<" 查无此人!!!"<<endl;
  }
  else {
  double  f=q1.Change(g2*1.0);
  if(f>0)
  Man[g1].RestWithMoneyTime+=q1.Change(f);
  if(f<0)
  Man[g1].RestWithMoneyTime-=q1.Change(-f);
  cout<<"修改完成!!!"<<endl;
  }
}
  if(e==4)
  {
cout<<"名次  姓名  性别  岗位  等级  带病休假的时间  带薪休假的时间  "<<endl;
            cin>>order>>name>>sex>>Department>>rating>>IllWithoutMoneyTime>>RestWithMoneyTime;
            q.ChangeMessage(order,name,sex,Department,rating,IllWithoutMoneyTime,RestWithMoneyTime);
  }
        }
        else if(t==5)
        {
            int testnum;
            cout<<"修改带病休假时间-------->请输入1"<<endl;
cout<<"修改带薪休假时间-------->请输入1"<<endl;
            cin>>testnum;
if(testnum==1){
int g;
cout<<"增加休假时间----->输入1"<<endl;
cout<<"减少休假时间----->输入2"<<endl;
cin>>g;
if(g==1){
cout<<"输入人的编号 和 增加的时间 "<<endl;
int temp1,temp2;
cin>>temp1>>temp2;
Man[temp1].IllWithoutMoneyTime+=temp1;
}
else{
                  cout<<"输入人的编号 和 减少的时间 "<<endl;
int temp1,temp2;
cin>>temp1>>temp2;
Man[temp1].IllWithoutMoneyTime-=temp2;
}
}
            if(testnum==2){
int g;

cout<<"增加休假时间----->输入1"<<endl;
cout<<"减少休假时间----->输入2"<<endl;
cin>>g;
if(g==1){
cout<<"输入人的编号 和 增加的时间 "<<endl;
int temp1,temp2;
cin>>temp1>>temp2;
Man[temp1].RestWithMoneyTime+=temp2;
}
else{
                  cout<<"输入人的编号 和 减少的时间 "<<endl;
int temp1,temp2;
cin>>temp1>>temp2;
Man[temp1].RestWithMoneyTime-=temp2;
}
}
            cout<<"删除完成!!! "<<endl;
        }
        else if(t==6)
        {
            cout<<"统计四类人员的数目和总数---------------> 请输入1 "<<endl;
            cout<<"统计某员工的请假情况-------------------> 请输入2"<<endl;
            cout<<"统计男女人数的情况---------------------> 请输入3"<<endl;
            cout<<"统计不同等级对应人数-------------------> 请输入4 "<<endl;
            cout<<"统计员工的请假情况---------------------> 请输入5 "<<endl;
            int testnum;
            cin>>testnum;
            if(testnum==1)
            {
                q.CalculateFourKindPersonMessage();
            }
            else if(testnum==2)
            {
                int g;
                cout<<"请输入员工编号  "<<endl;
                cin>>g;
                q.CalculatePeopleMessage(g);
            }
            else if(testnum==3)
            {
                q.CalculateSexMessage();
            }
            else if(testnum==4)
            {
                q.CalculateRatingMessage();
            }
            else if(testnum==5)
            {
                int s;
                cout<<"请输入要查询的人的情况 "<<endl;
                cin>>s;
                cout<<"带薪休假天数最多为 3天"<<"  "<<"生病可以不工作的时间最多为 2天"<<endl;
                q.CalculateOffMessage(s);
            }
        }
        else if(t==7){
           save(num);
  cout<<"保存成功!"<<endl;
        } else if(t == 8) {
           Read();
  cout<<"读取成功!"<<endl;
        }
        cout<<endl;
        cout<<"退出请输入1 "<<"  "<<"回到主菜单请输入2 "<<endl;
        cin>>flag;
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/let_life_stop/article/details/80822499