您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > C++员工工资管理系统源代码
#includeiomanip#includeiostream#includefstream#includemalloc.h#includestdlib.h#includestring.husingnamespacestd;#defineNULL0#defineLENsizeof(structstudent)intconstN=20;voidMenu();voidPass();intn=0;//定义一个全局变量统计职工人数//——---------定义一个职工信息的结构体structstudent{charname[N];//用来存放姓名charsex[N];//用来存放性别longid;//用来存放编号floatpaid[3];//用来存放工资inttotal;//用来存放总工资structstudent*next;};//--------------职工类classInformation{public:Information();//构造函数.~Information();//析构函数.student*creat();//建立链表voidoutput(student*head);//显示职工信息intcount(student*head);//定义函数count()统计职工总数student*insert(student*head);//指针函数*insert()用来添加职工信息.student*cancel(student*head,longid);//指针函数*cancel()用来删除职工信息.student*find(student*head,longid);//指针函数*find()用来查找职工信息.student*modify(student*head,longid);//指针函数*modife()用来修改职工的信息.voidpaixu(student*head);//定义paixu()函数将职工的总额从大到小排列并输出voidaverage(student*head);//定义职工工资平均值的函数voidsave(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){//定义一个指向structstudent的结构体指针函数*creat()用来录入职工信息.charch[N];n=0;//用来存放职工姓名p1=p2=(student*)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元cout-------------请建立员工信息表,在姓名处键以#结束输入!--------------endl;cout姓名:;cinch;head=NULL;//给指针head赋初值while(strcmp(ch,#)!=0){//调用字符比较函数strcmp()用来判断是否继续输入p1=(student*)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元strcpy(p1-name,ch);//将循环结构前面输入的姓名复制到结构体名为p1的数组name中cout性别:;cinp1-sex;cout编号:;cinp1-id;while((p1-id)0||(p1-id)100000)//判断输入的编号是否有效(100000个){cout对不起您的输入错误!请重新输入(01000000):;cinp1-id;}cout基本工资:;cinp1-paid[0];while((p1-paid[0])0||(p1-paid[0])100000)//判断输入的分数是否有效(=0=100000){cout对不起您的输入错误!请重新输入(0100000):;cinp1-paid[0];}cout加班工资:;cinp1-paid[1];while((p1-paid[1])0||(p1-paid[1])100000)//判断输入的分数是否有效(=0=100000){cout对不起您的输入错误!请重新输入(0100000):;cinp1-paid[1];}cout其他奖金:;cinp1-paid[2];while((p1-paid[2])0||(p1-paid[2])100000)//判断输入的分数是否有效(=0=100000){cout对不起您的输入错误!请重新输入(0100000):;cinp1-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姓名:;cinch;//将输入的姓名存放到字符数组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;//将头指针赋给pdo{coutsetw(6)p1-idsetw(10)p1-namesetw(10)p1-sexsetw(10)p1-paid[0]setw(10)p1-paid[1]setw(12)p1-paid[2]setw(12)p1-totalendl;cout-------------------------------------------------------------------------------\n;p1=p1-next;//将下一组职工信息的next指针赋给p}while(p1!=NULL);//若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出.}}//------------统计职工人数的函数intInformation::count(structstudent*head)//定义函数count()统计职工总数{if(head==NULL)return(0);//若指针head为空返回值为0elsereturn(1+count(head-next));//函数的递归调用}//-----------添加职工的成绩的函数student*Information::insert(student*head)//插入新结点定义一个指向structstudent的结构体指针函数*insert()用来添加职工信息.{system(cls);cout\t----------------请输入新增员工信息----------------\nendl;p1=(student*)malloc(LEN);//使p1指向插入的新结点cout编号:;cinp1-id;while((p1-id)0||(p1-id)100000){cout对不起您的输入错误!请重新输入(0100000):;cinp1-id;//将输入的编号存放到p1所指结构体的数组id中}cout姓名:;cinp1-name;//将输入的姓名存放到结构体名为p1的数组name中cout性别:;cinp1-sex;cout基本工资:;cinp1-paid[0];while((p1-paid[0])0||(p1-paid[0])100000){cout对不起您的输入错误!请重新输入(0100000):;cinp1-paid[0];//将输入的基本工资存放到p1所指结构体的数组paid中}cout加班工资:;cinp1-paid[1];while((p1-paid[1])0||(p1-paid[1])100000){cout对不起您的输入错误!请重新输入(0100000):;cinp1-paid[1];//将输入的加班工资存放到p1所指结构体的数组paid中}cout其他奖金:;cinp1-paid[2];while((p1-paid[2])0||(p1-paid[2])100000){cout对不起您的输入错误!请重新输入(0100000):;cinp1-paid[2];//将输入的其他奖金存放到p1所指结构体的数组paid中}p1-total=p1-paid[0]+p1-paid[1]+p1-paid[2];//计算总分p2=head;//将头指针赋给p2if(head==NULL)//若没调用次函数以前的头指针head为空{head=p1;p1-next=NULL;}//则将p1赋给头指针head并将p1所指结构体成员指针next赋空值else{while((p1-idp2-id)&&(p2-next!=NULL)){p3=p2;//p3指向原p2指向的结点p2=p2-ne
本文标题:C++员工工资管理系统源代码
链接地址:https://www.777doc.com/doc-5821442 .html