09黄石理工c课程设计职工工资管理系统内容摘要:

//添加职工的成绩的函数 epployee *Information::insert( epployee *head) //插入新结点定义一个指向 struct epployee 的结构体指针函数 *insert()用来添加职工信息 . { //system(cls)。 cout\t请输入新增职工成绩信息 \nendl。 p1=(epployee *)malloc(LEN)。 //使 p1 指向插入的新结点 cout 编号 :。 cinp1id。 while((p1id)0||(p1id)100000) { cout 对不起,您的输入错误 !请重新输入 (0100000):。 cinp1id。 //将输入的编号存放到 p1 所指结构 体的数组 id 中 } cout 姓名 :。 cinp1name。 //将输入的姓名存放到结构体名为 p1 的数组 name 中 cout 性别 :。 cinp1sex。 cout 基本工资 :。 第 21 页 共 34 页 cinp1paid[0]。 while((p1paid[0])0||(p1paid[0])100000) { cout 对不起,您的输入错误 !请重新输入 (0100000):。 cinp1paid[0]。 //将输入的基本工资存放到 p1 所指结构体的数组 paid 中 } cout 加班工资 :。 cinp1paid[1]。 while((p1paid[1])0||(p1paid[1])100000) { cout 对不起,您的输入错误 !请重新输入 (0100000):。 cinp1paid[1]。 //将输入的加班工资存放到 p1 所指结构体的数组 paid 中 } cout 其他奖金 :。 cinp1paid[2]。 while((p1paid[2])0||(p1paid[2])100000) { cout 对不起,您的输入错误 !请重新输入 (0100000):。 cinp1paid[2]。 //将输入的其他奖金存放到 p1 所指结构体的数组 paid 中 } p1total=p1paid[0]+p1paid[1]+p1paid[2]。 //计算总分 p2=head。 //将头指针赋给 p2 if(head==NULL) //若没调用次函数以前的头指针 head 为空 { head=p1。 p1next=NULL。 } //则将 p1 赋给头指针 head 并将 p1 所指结构体成员指针 next 赋空值 else { while((p1idp2id)amp。 amp。 (p2next!=NULL)) { p3=p2。 //p3 指向原 p2 指向的结点 p2=p2next。 } //p2 后移一个结点 if(p1id=p2id) 第 22 页 共 34 页 { if(head==p2) { p1next=head。 head=p1。 } //插入到第一个结点之前 else { p3next=p1。 p1next=p2。 } //插入到 p3 所指结点之后 } else { p2next=p1。 p1next=NULL。 } //插入到尾结点之后 } n++。 //将职工人数加 1 cout\t你输入的职工信息已经成功插入 endl。 return (head)。 } //删除职工信息 epployee *Information::cancel(epployee *head,long id) //定义一个指向 struct epployee 的结构体指针函数 *delete()用来删除考生信息 . { system(cls)。 if(head==NULL) //若调用次函数以前的头指针 head 为空 { return(head)。 } else { 第 23 页 共 34 页 p1=head。 //否则将头指针赋给 p1 while(id!=p1idamp。 amp。 p1next!=NULL) //寻找要删除的结点当 p1 所指的职工编号不是输入的职工编号并且 p1 所指的 next 指针不为空 { p2=p1。 p1=p1next。 } //p2 指向原 p1 指向的结点 p1 后移一个结点 if(id==p1id) //如果输入的职工编号是 p1 所指的职工编号 //结点找到后删除 { if(p1==head) head=p1next。 //如果 head 指针和 p1 指针相等则将下一个结点赋给指针 head else p2next=p1next。 //否则将 p1所指结点赋给 p2所指结点将要删除的职工信息跳过去 cout 删除编号为 id的职工 \n。 n。 //将职工人数减 1 } return(head)。 //将头指针返回 } } /**************************修改职工数据 **************************/ epployee *Information::modify(epployee *head,long id) { //system(cls)。 cout\t请输入须修改的职工工资信息 \nendl。 p1=(epployee *)malloc(LEN)。 //使 p1 指向输入的结点 p1=head。 //否则将头指针赋给 p1 while(id!=p1idamp。 amp。 p1next!=NULL) //寻找结点当 p1 所指的职工编号不是输入的职工编号并且 p1 所指的 next 指针不为空 { p1=p1next。 //p2 指向原 p1 指向的结点 p1 后移一个结点 第 24 页 共 34 页 } if(id==p1id) //如果要查找的职工编号是 p1 所指的职工编号 { cout你需要修改的职工信息如下 :\n。 cout\n。 cout|编 号 | |姓 名 | |性别 | |基本工资 | |加班工资 | |其他奖金 | |总额 |\n。 cout\n。 coutsetw(6)p1id setw(10)p1name setw(10)p1sex setw(10)p1paid[0] setw(15)p1paid[1] setw(12)p1paid[2] setw(12)p1totalendl。 cout\n。 cout 编号 :。 cinp1id。 while((p1id)0||(p1id)100000) { cout 对不起,您的输入错误 !请重新输入 (0100000):。 cinp1id。 //将输入的编号存放到 p1 所指结构体的数组 id 中 } cout 姓名 :。 cinp1name。 //将输入的姓名存放到结构体名为 p1 的数组 name 中 cout 性别 :。 cinp1sex。 cout 基本工资 :。 cinp1paid[0]。 while((p1paid[0])0||(p1paid[0])100000) { cout 对不起,您的输入错误 !请重新输入 (0100000):。 cinp1paid[0]。 //将输入的基本工资存放到 p1 所指结构体的数组 paid 中 } 第 25 页 共 34 页 cout 加班工资 :。 cinp1paid[1]。 while((p1paid[1])0||(p1paid[1])100000) { cout 对不起,您的输入错误 !请重新输入 (0100000):。 cinp1paid[1]。 //将输入的加班工资存放到 p1 所指结构体的数组 paid 中 } cout 其他奖金 :。 cinp1paid[2]。 while((p1paid[2])0||(p1paid[2])100000) { cout 对不起,您的输入错误 !请重新输入 (0100000):。 cinp1paid[2]。 //将输入 的其他奖金存放到 p1 所指结构体的数组 paid 中 } p1total=p1paid[0]+p1paid[1]+p1paid[2]。 //计算总分 } else cout 需要修改的信息中没有编号为 id的职工 .\n\n。 //没有想要修改的结点信息 getchar()。 return(head)。 } //查找职工信息 epployee *Information::find(epployee *head,long id) //定义一个指向 struct epployee 的结构体指针函数 *find()用来查找职工信息 . { //system(cls)。 if(head==NULL) //若调用次函数以前的头指针 head 为空 { cout 这是一个空表 ,请先输入职工信息 !\n。 return(head)。 } else 第 26 页 共 34 页 { p1=head。 //否则将头指针赋给 p1 while(id!=p1idamp。 amp。 p1next!=NULL) //寻找结点当 p1 所指的职工编号不是输入的职工编号并且 p1 所指的 next 指针不为空 { p1=p1next。 //p2 指向原 p1 指向的结点 p1 后移一个结点 } if(id==p1id) //如果要查找的职工编号是 p1 所指的职工编号 { cout\n。 cout|编 号 | |姓 名 | |性别 | |基本工资 | |加班工资 | |其他奖金 | |总额 |\n。 cout\n。 coutsetw(6)p1id setw(10)p1name setw(10)p1sex setw(10)p1paid[0] setw(14)p1paid[1] setw(12)p1paid[2] setw(12)p1totalendl。 cout\n。 } else cout信息中没有编号为 id的职工 .\n。 //结点没找到 return(head)。 } } //定义 sort()函数将职工的工资总额从大到小排列并输出 void Information::sort(epployee *head) { //system(cls)。 int i,k,m=0,j。 第 27 页 共 34 页 epployee *p[N]。 //定义一 个指向 struct epployee 的结构体指针数组。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。