最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C++员工工资管理系统源代码

来源:动视网 责编:小OO 时间:2025-10-04 13:54:24
文档

C++员工工资管理系统源代码

#include#include#include#include#include#includeusingnamespacestd;#defineNULL0#defineLENsizeof(structstudent)intconstN=20;voidMenu();voidPass();i定义一个全局变量统计职工人数//——--------->定义一个职工信息的结构体structstudent{charname[N];//用来存放姓名charsex[N];//用来存放性别longid;//用来
推荐度:
导读#include#include#include#include#include#includeusingnamespacestd;#defineNULL0#defineLENsizeof(structstudent)intconstN=20;voidMenu();voidPass();i定义一个全局变量统计职工人数//——--------->定义一个职工信息的结构体structstudent{charname[N];//用来存放姓名charsex[N];//用来存放性别longid;//用来
#include

#include

#include

#include

#include

#include

using namespace std;

#define NULL 0

#define LEN sizeof(struct student)  

int const N=20;

void Menu(); 

void Pass();

i定义一个全局变量统计职工人数 

//——--------->定义一个职工信息的结构体

struct student

char name[N];        //用来存放姓名

char sex[N];        //用来存放性别

long id;           //用来存放编号

float paid[3];   //用来存放工资

int total;       //用来存放总工资

struct student *next;

};

//-------------->职工类

class Information

public:

I构造函数. 

~析构函数. 

s建立链表

v显示职工信息

i定义函数count()统计职工总数

student *insert(student*head);    //指针函数*insert()用来添加职工信息.

student *cancel(student *head,long id);    //指针函数*cancel()用来删除职工信息.

student *find(student *head,long id);     //指针函数*find()用来查找职工信息.

student *modify(student *head,long id);  //指针函数*modife()用来修改职工的信息.

void paixu(student *head);              //定义paixu()函数将职工的总额从大到小排列并输出

v定义职工工资平均值的函数

void save(student *head);             //保存文件信息

student *Read();                     //读取文件信息

private:

student *p1,*p2,*p3,*head,st; 

};

Information::Information() 

{cout<<" ******************************************************************************\\n";

cout<<" ------------------------<<欢迎您使用员工工资管理系统>>------------------------\\n";

cout<<" ******************************************************************************\\n\\n";

}

Information::~Information()

{ cout<<" ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤\\n";

cout<<" \\n";

cout<<" 本系统管理员                                 \\n";

cout<<" \\n";

cout<<" \\n";

cout<<" ------------------------<<谢谢您使用员工工资管理系统>>------------------------\\n";

cout<<" \\n";

cout<<" \\n";

cout<<" 欢迎下次使用                                 \\n";

cout<<" \\n";

cout<<" \\n";

cout<<" 再见                                     \\n";

cout<<" \\n";

cout<<" ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤\\n";

}

//------------>建立链表信息

student *Information::creat(void) 

{//定义一个指向struct student的结构体指针函数*creat()用来录入职工信息. 

c用来存放职工姓名 

p1=p2=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元 

cout<<" -------------<<请建立员工信息表,在姓名处键以 # 结束输入!>>--------------"<cout<<" 姓名:";

cin>>ch;

h给指针head赋初值

while (strcmp(ch,"#")!=0) 

{调用字符比较函数strcmp()用来判断是否继续输入

p调用malloc()函数用来开辟一个新的存储单元

s将循环结构前面输入的姓名复制到结构体名为p1的数组name中

cout<<" 性别:";

cin>>p1->sex;

cout<<" 编号:";

cin>>p1->id;

w判断输入的编号是否有效(100000个)

{

cout<<" 对不起您的输入错误!请重新输入(>0<1000000): ";

cin>>p1->id;

cout<<" 基本工资:";

cin>>p1->paid[0];

w判断输入的分数是否有效(>=0 <=100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[0];

cout<<" 加班工资:";

cin>>p1->paid[1];

w判断输入的分数是否有效(>=0 <=100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[1];

cout<<" 其他奖金:";

cin>>p1->paid[2];

w判断输入的分数是否有效(>=0 <=100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[2];

p计算总额 

i如果是输入第一组职工信息就将指针p1赋给指针head

e否则将p1赋给p2所指结构体的next指针

p将指针p1赋给指针p2

n将职工人数n的值加1

cout<<"\\n 姓名:";

c将输入的姓名存放到字符数组ch中

}

p2->next=NULL; //将p2所指结构体的next指针重新赋空值

return (head);//将输入的第一组职工信息返回

}

//--------------->定义output()函数将职工的信息从头指针所指内容开始输出

void Information::output(student *head) 

{

system("cls");

if(head==NULL) cout<<" 这是一个空表,请先输入员工信息!\\n";

else{

cout<<"-------------------------------------------------------------------------------\\n";

cout<<" *职工工资信息表*\\n";

cout<<"-------------------------------------------------------------------------------\\n";

cout<<"|编 号|姓 名|性别|基本工资|加班工资|  |其他奖金|总额|\\n";

cout<<"-------------------------------------------------------------------------------\\n";

p将头指针赋给p 

do

{

cout<id

<name

<sex

<paid[0]

<paid[1]

<paid[2]

<total<cout<<"-------------------------------------------------------------------------------\\n";

p将下一组职工信息的next指针赋给p

}若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出.

}

}

//------------>统计职工人数的函数

i定义函数count()统计职工总数

{

i若指针head为空返回值为0

e函数的递归调用

}

//----------->添加职工的成绩的函数

student *Information::insert( student *head) 

//插入新结点定义一个指向struct student的结构体指针函数*insert()用来添加职工信息.

{

system("cls");

cout<<"\----------------<<请输入新增员工信息>>----------------\\n"<p1=(student *)malloc(LEN);      //使p1指向插入的新结点

cout<<" 编号:";

cin>>p1->id;

while((p1->id)<0||(p1->id)>100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->id; //将输入的编号存放到p1所指结构体的数组id中

cout<<" 姓名:";

cin>>p1->name; //将输入的姓名存放到结构体名为p1的数组name中

cout<<" 性别:";

cin>>p1->sex;

cout<<" 基本工资:";

cin>>p1->paid[0];

while((p1->paid[0])<0||(p1->paid[0])>100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[0]; //将输入的基本工资存放到p1所指结构体的数组paid中

}

cout<<" 加班工资:";

cin>>p1->paid[1];

while((p1->paid[1])<0||(p1->paid[1])>100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[1]; //将输入的加班工资存放到p1所指结构体的数组paid中

}

cout<<" 其他奖金:";

cin>>p1->paid[2];

while((p1->paid[2])<0||(p1->paid[2])>100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[2]; //将输入的其他奖金存放到p1所指结构体的数组paid中

p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总分 

p2=head;         //将头指针赋给p2

if(head==NULL)  //若没调用次函数以前的头指针head为空

{

head=p1;p1->next=NULL;

}        //则将p1赋给头指针head并将p1所指结构体成员指针next赋空值

else 

{

while((p1->id>p2->id)&&(p2->next!=NULL))

{

p3=p2;        //p3指向原p2指向的结点

p2=p2->next;

}           //p2后移一个结点

if(p1->id<=p2->id)

{

if(head==p2)

{

p1->next=head;

head=p1;

}       //插入到第一个结点之前

else 

{

p3->next=p1;

p1->next=p2;

}    //插入到p3所指结点之后

}

else

{

p2->next=p1;

p1->next=NULL;

}  //插入到尾结点之后

}

n++;  //将职工人数加1

cout<<"\----------------<<你输入的员工信息已经成功插入>>----------------"<return (head);

}

//------------>删除职工信息

student *Information::cancel(student *head,long id)   //定义一个指向struct student的结构体指针函数*delete()用来删除考生信息.

system("cls");

if(head==NULL)      //若调用次函数以前的头指针head为空

return(head);

}

else

{

p1=head;        //否则将头指针赋给p1

while(id!=p1->id&&p1->next!=NULL) //寻找要删除的结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空

{

p2=p1;

p1=p1->next;

}                    //p2指向原p1指向的结点p1后移一个结点

if(id==p1->id) //如果输入的职工编号是p1所指的职工编号//结点找到后删除

{

if(p1==head) head=p1->next; //如果head指针和p1指针相等则将下一个结点赋给指针head 

else 

p2->next=p1->next; //否则将p1所指结点赋给p2所指结点将要删除的职工信息跳过去

cout<<" 删除编号为"<n--;               //将职工人数减1 

}

return(head);     //将头指针返回

}

}

/**************************修改职工数据**************************/

student *Information::modify(student *head,long id)

{

system("cls");

cout<<"\----------------<<请输入须修改的员工工资信息>>----------------\\n"<p1=(student *)malloc(LEN); //使p1指向输入的结点

p1=head;                  //否则将头指针赋给p1

while(id!=p1->id&&p1->next!=NULL)

//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空

{

p1=p1->next; //p2指向原p1指向的结点p1后移一个结点

}          

if(id==p1->id) //如果要查找的职工编号是p1所指的职工编号

{

cout<<"你需要修改的员工信息如下:\\n";

cout<<"------------------------------------------------------------------------------\\n";

cout<<"|编 号|   |姓 名|   |性别|   |基本工资|   |加班工资|    |其他奖金|    |总额|\\n";

cout<<"------------------------------------------------------------------------------\\n";

cout<id

<name

<sex

<paid[0]

<paid[1]

<paid[2]

<total<cout<<"------------------------------------------------------------------------------\\n";

cout<<" 编号:";

cin>>p1->id;

while((p1->id)<0||(p1->id)>100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->id; //将输入的编号存放到p1所指结构体的数组id中

cout<<" 姓名:";

cin>>p1->name; //将输入的姓名存放到结构体名为p1的数组name中

cout<<" 性别:";

cin>>p1->sex;

cout<<" 基本工资:";

cin>>p1->paid[0];

while((p1->paid[0])<0||(p1->paid[0])>100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[0]; //将输入的基本工资存放到p1所指结构体的数组paid中

}

cout<<" 加班工资:";

cin>>p1->paid[1];

while((p1->paid[1])<0||(p1->paid[1])>100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[1]; //将输入的加班工资存放到p1所指结构体的数组paid中

}

cout<<" 其他奖金:";

cin>>p1->paid[2];

while((p1->paid[2])<0||(p1->paid[2])>100000)

{

cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";

cin>>p1->paid[2]; //将输入的其他奖金存放到p1所指结构体的数组paid中

p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2]; //计算总分 

}

else 

cout<<" 需要修改的信息中没有编号为"<getchar();

return(head);

}

//------------>查找职工信息

student *Information::find(student *head,long id) 

//定义一个指向struct student的结构体指针函数*find()用来查找职工信息.

{

system("cls");

if(head==NULL)    //若调用次函数以前的头指针head为空

{

cout<<" 这是一个空表,请先输入员工信息!\\n";

return(head); 

}

else

{

p1=head;        //否则将头指针赋给p1

while(id!=p1->id&&p1->next!=NULL)

//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空

{

p1=p1->next; //p2指向原p1指向的结点p1后移一个结点

}

if(id==p1->id) //如果要查找的职工编号是p1所指的职工编号

{

cout<<"------------------------------------------------------------------------------\\n";

cout<<"|编 号|     |姓 名|   |性别|   |基本工资|   |加班工资|  |其他奖金|     |总额|\\n";

cout<<"------------------------------------------------------------------------------\\n";

cout<id

<name

<sex

<paid[0]

<paid[1]

<paid[2]

<total<cout<<"------------------------------------------------------------------------------\\n";

}

else 

cout<<"信息中没有编号为"<return(head);

}

}

//------------定义paixu()函数将职工的工资总额从大到小排列并输出

void Information::paixu(student *head) 

{

system("cls");

int i,k,m=0,j;

student *p[N];//定义一个指向struct student的结构体指针数组p 

if(head!=NULL)//如果头指针是空则继续

{ m=count(head);

cout<<"------------------------------------------------------------------------------\\n";

cout<<" *员工工资统计表*\\n";

cout<<"------------------------------------------------------------------------------\\n";

cout<<"|编号|    |姓名|   |性别|  |基本工资|  |加班工资|  |其他奖金|    |总额|   |名次|\\n";

cout<<"------------------------------------------------------------------------------\\n";

p1=head;

for(k=0;k{

p[k]=p1;

p1=p1->next;

}

for(k=0;kfor(j=k+1;jif(p[k]->totaltotal)

{

p2=p[k];

p[k]=p[j];

p[j]=p2;

} //从大到小排列的指针 

for(i=0;i{

cout<id

<name

<sex

<paid[0]

<paid[1]

<paid[2]

<total

<cout<<"------------------------------------------------------------------------------\\n";

}

}

}

//------------>求各工资的平均值的函数

void Information::average(student *head)

{

int k,m;

float arg1=0,arg2=0,arg3=0;

if(head==NULL)//如果头指针是空则继续

{

cout<<" 这是一个空表,请先输入员工信息!\\n";

}

else

{

m=count(head);

p1=head;

for(k=0;k{

arg1+=p1->paid[0];

arg2+=p1->paid[1];

arg3+=p1->paid[2];

p1=p1->next;

}

arg1/=m;arg2/=m;arg3/=m;

cout<<" *各项工资的平均值*\\n";

cout<<"------------------------------------------------------------------------------\\n";

cout<<"\\基本工资的平均值: "<<<"\\n"<<"\\加班工资的平均值: "<<<"\\n"<<"\\奖金的平均值: "<cout<<"------------------------------------------------------------------------------\\n";

}

}

//------------------->保存函数.

void Information::save(student *head)

{

 system("cls");

    ofstream out("data.txt",ios::out);

out<    while(head!=NULL)

{ out<name<<"\"

<id<<"\"<<"\"

<sex<<"\"

<paid[0]<<"\"

<paid[1]<<"\"

<paid[2]<<"\"

<total< head=head->next;

}   

}

//———————————>读取文件的信息

student *Information::Read()

{  

 system("cls");

 int i=0;

    p1=p2=( student *)malloc(LEN);

    head=NULL;  

    ifstream in("data.txt",ios::in);

in>>i;

if(i==0){cout<<" data 文件中的数据为空,请先输入数据!"<    else {

cout<<"\\n原文件已保存的信息如下:\\n";

cout<<" ………………………………………………………………………………………………"< cout<<"|姓 名|    |编 号|     |性别|  |基本工资|  |加班工资|   |其他奖金|     |总额|\\n";

cout<<" ………………………………………………………………………………………………"< for(;i>0;i--)

{  

  p1=(student *)malloc(LEN);

in>>st.name>>st.id>>st.sex

>>st.paid[0]>>st.paid[1]>>st.paid[2]>>st.total;

strcpy(p1->name,st.name);

p1->id=st.id;

strcpy(p1->sex,st.sex);

p1->paid[0]=st.paid[0];

p1->paid[1]=st.paid[1];

p1->paid[2]=st.paid[2];

p1->total=st.total;

        if(n==0)head=p1;      //如果是输入第一组职工信息就将指针p1赋给指针head

else p2->next=p1; //否则将p1赋给p2所指结构体的next指针

        p2=p1;              //将指针p1赋给指针p2

        n++;               //将n的值加1

  //显示读入数据

cout<<" "<name<<"\"

<id<<" \"

<< p1->sex <<" \"

<< p1->paid[0] <<" \"

<< p1->paid[1] <<" \"

<< p1->paid[2] <<" \"

<< p1->total<        cout<<" ………………………………………………………………………………………………"<}

cout<<" 数据已经成功读取完毕!\\n\\n"< p2->next=NULL;

    in.close();

    return (head);

}

    

}

//-------------------->菜单

void Menu()

{

    student *head=NULL;     

 ※※※※※※※※※※※※※※※※※※※※※※※※※"< ※

 ※ 欢迎进入员工信息统计管理

 ※

 ※※※※※※※※※※※※※※※※※※※※※※※※※"<  

 相关操作选项

  

 ※※※※※※※※※※※※※※※※※※※※※※※※※"< ※ ※"< ※ ※"< ※ 员工数据输入 ※"< ※ ※"< ※ 显示员工工资 ※"< ※ ※"< ※ 排序统计工资 ※"< ※ ※"< ※ 查找员工工资 ※"< ※ ※"< ※ 增加员工工资 ※"< ※ ※"< ※ 删除员工工资 ※"< ※ ※"< ※ 修改员工信息 ※"< ※ ※"< ※ 成功保存信息 ※"< ※ ※"<cout<<"\※ 安全退出系统 ※"< ※ ※"<cout<<"\※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"< 请输入您的选择(0--9):";

 对不起您的输入错误!请输入您的选择(0--9): ";

 

  

              //head=person.Read();   

  

  

 参加工作的员工人数为:"<        case 4:   

   请输入要查找的编号:";

 对不起您的输入错误!请重新输入: ";

    }       

        case 5:    

  

   请输入要删除的编号:";

 对不起您的输入错误!请重新输入: ";

    }   

    case 7:   

  请输入要修改的编号:";

 对不起您的输入错误!请重新输入: ";

    }     

 信息已经成功保存!"<               person.save(head);     

  case 9: 

 对不起您的输入有误!请重新输入:\\n";

 }

 }

}

//----------------->管理员登陆

void Pass()

{

     char UserName[30];

     char Passward[20];

     int i=0;

cout<<"****************************************************************************\\n";

cout<<"\\n\为保护员工信息,只有管理员才可以进行管理!\\n";

cout<<"\\n\管理员名和登陆密码都只有4次机会,如果超过将自动退出系统!\\n\\n";

cout<<"****************************************************************************\\n";

cout<<"\\n请输入管理员名:";

cin>>UserName;

     while (strcmp(UserName,"1")!=0)

 {

if(i>=3)

  exit(0);         //超过4次则登陆失败,退出系统

  i++;

cout<<"\\n管理员名无效!请重新输入:";

cin>>UserName;

 }

cout<<"\\n请输入密码:";

cin>>Passward;

     while(strcmp(Passward,"1")!=0)

 {

if(i>=3)

  exit(0);        //超过4次则登陆失败,退出系统

  i++;

cout<<"\\n密码输入错误!请重新输入:"< cin>>Passward;

 }

cout<<"\\n\\欢迎管理员的到来\\n"<}

//------------------------------>主函数.

int main(void)

{  

 设置背景色和字体颜色

    system("PAUSE");         //系统暂停

 系统清屏

 Pass();

 system("cls");

}

//

文档

C++员工工资管理系统源代码

#include#include#include#include#include#includeusingnamespacestd;#defineNULL0#defineLENsizeof(structstudent)intconstN=20;voidMenu();voidPass();i定义一个全局变量统计职工人数//——--------->定义一个职工信息的结构体structstudent{charname[N];//用来存放姓名charsex[N];//用来存放性别longid;//用来
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top