C++员工工资管理系统源代码.docx
- 文档编号:11263956
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:26
- 大小:47.74KB
C++员工工资管理系统源代码.docx
《C++员工工资管理系统源代码.docx》由会员分享,可在线阅读,更多相关《C++员工工资管理系统源代码.docx(26页珍藏版)》请在冰豆网上搜索。
C++员工工资管理系统源代码
#include
#include
#include
#include
#include
#include
#defineNULL0
#defineLENsizeof(structstudent)intconstN=20;
voidMenu();
voidPass();
intn=0;//定义一个全局变量统计职工人数//——>定义一个职工信息的结构体
//用来存放姓名
//用来存放性别
//用来存放编号
//用来存放工资
//用来存放总工资
structstudent*next;};
职工类
//
voidoutput(student*head);intcount(student*head);student*insert(student*head);student*cancel(student*head,longid);student*find(student*head,longid);student*modify(student*head,longid);voidpaixu(student*head);
列并输出
voidaverage(student*head);voidsave(student*head);student*Read();
private:
//显示职工信息
//定义函数count()统计职工总数指针函数*insert()用来添加职工信息.
//指针函数*cancel()用来删除职工信息.//指针函数*find()用来查找职工信息.//指针函数*modife()用来修改职工的信息.
//定义paixu()函数将职工的总额从大到小排
//定义职工工资平均值的函数
//保存文件信息
//读取文件信息
student*p1,*p2,*p3,*head,st;
};
Information:
:
Information()
{cout<<"
****************************************************************************
cout<<"<<欢迎您使用员工工资管理系
统>>\n";
cout<<"
**\n\n";
****************************************************************************
Information:
:
~Information()
{cout<<"
ooooooooooooooooooooooooooooooooooooooo
\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<<"
ooooooooooooooooooooooooooooooooooooooo
\n";
建立链表信息student*Information:
:
creat(void){//定义一个指向structstudentcharch[N];n=0;p1=p2=(student*)malloc(LEN);//
//
cout<<"<<请建立
入!
>>"< cout<<"姓名: ";cin>>ch;head=NULL;//给指针headwhile(strcmp(ch,"#")! =0){//调用字符比较函数strcmp()p1=(student*)malloc(LEN);strcpy(p1->name,ch);p1的数组name中cout<<"性别: ";cin>>p1->sex;cout<<"编号: ";cin>>p1->id;while((p1->id)<0||(p1->id)>100000){cout<<"对不起您的输入错误! 请重新输入cin>>p1->id; }cout<<"基本工资: ";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000)(>=0<=100000) {cout<<"对不起您的输入错误! 请重新输入cin>>p1->paid[0]; }cout<<"加班工资: ";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000)(>=0<=100000) {cout<<"对不起您的输入错误! 请重新输入cin>>p1->paid[1]; }cout<<"其他奖金: ";cin>>p1->paid[2]; 的结构体指针函数*creat()用来录入职工信息. //用来存放职工姓名 调用malloc()函数用来开辟一个新的存储单元 员工信息表,在姓名处键以#结束 赋初值 用来判断是否继续输入 //调用malloc()函数用来开辟一个新的存储单元 //将循环结构前面输入的姓名复制到结构体名为 //判断输入的编号是否有效(100000个) (>0<1000000): "; (>0<100000): "; (>0<100000): "; //判断输入的分数是否有 //判断输入的分数是否有 while((p1->paid[2])<0||(p1->paid[2])>100000)//判断输入的分数是否有效(>=0<=100000) { cout<<"对不起您的输入错误! 请重新输入(>0<100000): ";cin>>p1->paid[2]; }p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总额 if(n==0)head=p1;//如果是输入第一组职工信息就将指针p1赋给指针headelsep2->next=p1;//否则将p1赋给p2所指结构体的next指针 p2=p1;//将指针p1赋给指针p2n++;//将职工人数n的值加1cout<<"\n姓名: "; cin>>ch;//将输入的姓名存放到字符数组ch中 } p2->next=NULL;//将p2所指结构体的next指针重新赋空值return(head);//将输入的第一组职工信息返回 } //>定义output()函数将职工的信息从头指针所指内容开始输出 voidInformation: : output(student*head) { system("cls"); if(head==NULL)cout<<"这是一个空表,请先输入员工信息! \n"; else{ cout<<"\n"; cout<<"*职工工资信息表*\n"; cout<<"\n"; cout<<"|编号||姓名||性别||基本工资||加班工资||其他奖金||总额|\n"; cout<<"\n"; p1=head;//将头指针赋给p do { cout< < < < < < < cout<<"\n"; p1=p1->next;//将下一组职工信息的next指针赋给p }while(p1! =NULL);//若指针p非空则继续,目的是把所有的职工信息都传给指针p然 后输出. } } //>统计职工人数的函数 intInformation: : count(structstudent*head) { if(head==NULL)return(0); elsereturn(1+count(head->next)); } //定义函数count() 统计职工总数 //若指针head为空返回值为0//函数的递归调用 //>添加职工的成绩的函数 student*Information: : insert(student*head) //插入新结点定义一个指向structstudent 的结构体指针函数*insert() 用来添加职工信 息. { system("cls"); cout<<"\t<<请输入新增员工信息>>\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<<"\t<<你输入的员工信息已经成功插入>>"< return(head); } student*Information: : cancel(student*head,longid)//定义一个指向structstudent的结构体指针函数*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,longid) { system("cls"); cout<<"\t<<请输入须修改的员工工资信息>>\n"< p1=(student*)malloc(LEN);//使p1指向输入的结点 p1=head;//否则将头指针赋给p1while(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< < < < < < < 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<<"需要修改的信息中没有编号为"< return(head); } //>查找职工信息 student*Information: : find(student*head,longid) //定义一个指向structstudent的结构体指针函数*find()用来查找职工信息. { system("cls"); if(head==NULL)//若调用次函数以前的头指针head为空 { cout<<"这是一个空表,请先输入员工信息! \n"; return(head); } else { p1=head;//否则将头指针赋给p1while(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< < < < < < < cout<<"\n"; } else cout<<"信息中没有编号为"< } } //定义paixu()函数将职工的工资总额从大到小排列并输出 voidInformation: : paixu(student*head) { system("cls"); inti,k,m=0,j; student*p[N];//定义一个指向structstudent的结构体指针数组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;k for(j=k+1;j total) { p2=p[k]; p[k]=p[j]; p[j]=p2; }//从大到小排列的指针 for(i=0;i {cout< cout<<"\n"; } } } //>求各工资的平均值的函数 voidInformation: : average(student*head) { intk,m; floatarg1=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<<"\t\t基本工资的平均值: "< <<"\n"<<"\t\t加班工资的平均值: "< <<"\n"<<"\t\t奖金的平均值: "< } } //>保存函数. v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 员工 工资管理 系统 源代码