公司工资管理系统(C++源代码)(共16页).doc

上传人:飞****2 文档编号:12205388 上传时间:2022-04-24 格式:DOC 页数:16 大小:57KB
返回 下载 相关 举报
公司工资管理系统(C++源代码)(共16页).doc_第1页
第1页 / 共16页
公司工资管理系统(C++源代码)(共16页).doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《公司工资管理系统(C++源代码)(共16页).doc》由会员分享,可在线阅读,更多相关《公司工资管理系统(C++源代码)(共16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上#include #include #include #include #include #include #define NULL 0int const N=20;#define LEN sizeof(struct student)using namespace std;void Menu();void Pass();int n=0; /定义一个全局变量统计职工人数/-定义一个职工信息的结构体struct studentchar nameN; /用来存放姓名char sexN; /用来存放性别char zhiwuN; /用来存放职务char bumenN; / 用来

2、存放所在部门long id; /用来存放编号float paid; /用来存放工资int total; /用来存放总工资struct student *next;/-职工类class Information public: student *creat(); /建立链表 void output(student *head); /显示职工信息 int count(student *head); /定义函数count()统计职工总数 student *insert(student*head); /指针函数*insert()用来添加职工信息. student *cancel(student *hea

3、d,long id); /指针函数*cancel()用来删除职工信息. student *find(student *head,long id); /指针函数*find()用来查找职工信息. student *modify(student *head,long id); /指针函数*modife()用来修改职工的信息. void paixu(student *head); /定义paixu()函数将职工的总额从大到小排列并输出 void average(student *head); /定义职工工资平均值的函数 void save(student *head); /保存文件信息 student

4、 *Read(); /读取文件信息 private: student *p1,*p2,*p3,*head,st; /-建立链表信息student *Information:creat(void)/定义一个指向struct student 的结构体指针函数*creat()用来录入职工信息. char chN;n=0; /用来存放职工姓名 p1=p2=(student *)malloc(LEN);/调用malloc()函数用来开辟一个新的存储单元 cout -endl; coutch; head=NULL; /给指针head 赋初值 while (strcmp(ch,#)!=0) /调用字符比较函

5、数strcmp()用来判断是否继续输入 p1=(student *)malloc(LEN); /调用malloc()函数用来开辟一个新的存储单元 strcpy(p1-name,ch); /将循环结构前面输入的姓名复制到结构体名为p1 的数组name 中 coutp1-sex; coutp1-id; while(p1-id)id) /判断输入的编号是否有效(个) cout0p1-id; coutp1-bumen; cout 请选择级别:endl; cout 1.经理endl; cout 2.技术人员endl; cout 3.销售人员endl; cout 4.销售经理xuanze; switch(

6、xuanze) case 1: float wage1; cout请输入级别:p1-zhiwu; cout请输入经理的工资:wage1; p1-paid=wage1; break; case 2: int worktime; int wage2; cout请输入级别:p1-zhiwu; cout请输入技术人员的工作时间:worktime; cout请输入技术人员每小时的工资:wage2; p1-paid=worktime*wage2; break; case 3: int wage3; double ticheng3; cout请输入级别:p1-zhiwu; cout请输入当月销售额:wage

7、3; cout请输入提成比例:ticheng3; p1-paid=wage3*ticheng3; break; case 4: int wage4; double ticheng4; int gongzi; cout请输入级别:p1-zhiwu; cout请输入销售经理的固定工资:gongzi; cout请输入当月销售额:wage4; cout请输入提成比例:ticheng4; p1-paid=gongzi+wage4*ticheng4; break; if(n=0)head=p1; /如果是输入第一组职工信息就将指针p1 赋给指针head else p2-next=p1; /否则将p1 赋给

8、p2 所指结构体的next 指针 p2=p1; /将指针p1 赋给指针p2 n+; /将职工人数n 的值加1 coutch; /将输入的姓名存放到字符数组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;

9、cout-n; cout|编 号| |姓 名| |性别| |所在部门| |级别| |工资|n; cout-n; p1=head; /将头指针赋给p do coutsetw(6)idsetw(10)namesetw(10)sexsetw(10)bumensetw(10)zhiwusetw(10)paidendl; coutnext; /将下一组职工信息的next 指针赋给p while(p1!=NULL); /若指针p 非空则继续,目的是把所有的职工信息都传给指针p 然后输出./-统计职工人数的函数int Information:count(struct student *head) /定义函数

10、count()统计职工总数 if(head=NULL)return(0); /若指针head 为空返回值为0 else return(1+count(head-next); /函数的递归调用/-添加职工的工资的函数student *Information:insert( student *head)/插入新结点定义一个指向struct student 的结构体指针函数*insert()用来添加职工信息. system(cls); coutt-nendl; p1=(student *)malloc(LEN); /使p1 指向插入的新结点 coutp1-id; while(p1-id)id) co

11、ut0p1-id; /将输入的编号存放到p1 所指结构体的数组id 中 coutp1-name; /将输入的姓名存放到结构体名为p1 的数组name 中 coutp1-sex; coutp1-bumen; cout 请选择级别:endl; cout 1.经理endl; cout 2.技术人员endl; cout 3.销售人员endl; cout 4.销售经理xuanze; switch(xuanze) case 1:float wage1;cout请输入级别:p1-zhiwu;cout请输入经理的工资:wage1;p1-paid=wage1;break; case 2:int worktime

12、;int wage2; cout请输入级别:p1-zhiwu;cout请输入技术人员的工作时间:worktime;cout请输入技术人员每小时的工资:wage2;p1-paid=worktime*wage2;break; case 3: int wage3;double ticheng3;cout请输入级别:p1-zhiwu;cout请输入当月销售额:wage3;cout请输入提成比例:ticheng3;p1-paid=wage3*ticheng3;break; case 4:int wage4;double ticheng4;int gongzi;cout请输入级别:p1-zhiwu;cou

13、t请输入销售经理的固定工资:gongzi;cout请输入当月销售额:wage4;cout请输入提成比例:ticheng4;p1-paid=gongzi+wage4*ticheng4;break; p2=head; /将头指针赋给p2 if(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-next; /p2 后移一个结点

14、if(p1-idid) 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 coutt-删除职工信息student *Information:cancel(student *head,long id) /定义一个指向structstudent 的结构体指针函数*delete()用来删除考生信息. system(cls); if(head=NULL) /若调用次函

15、数以前的头指针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-nex

16、t; /否则将p1 所指结点赋给p2 所指结点将要删除的职工信息跳过去 cout 删除编号为id的职工n; n-; /将职工人数减1 return(head); /将头指针返回/*修改职工数据*/student *Information:modify(student *head,long id) system(cls); coutt-nid&p1-next!=NULL) /寻找结点当p1 所指的职工编号不是输入的职工编号并且p1 所指的next 指针不为空 p1=p1-next; /p2 指向原p1 指向的结点p1 后移一个结点 if(id=p1-id) /如果要查找的职工编号是p1 所指的职

17、工编号 cout你需要修改的职工信息如下:n; cout-n; cout|编 号| |姓 名| |性别| |所属部门| |级别| |工资|n; cout-n; coutsetw(6)idsetw(10)namesetw(10)sexsetw(10)bumensetw(10)zhiwusetw(12)paidendl; cout-n; coutp1-id; while(p1-id)id) cout0p1-id; /将输入的编号存放到p1 所指结构体的数组id 中 coutp1-name; /将输入的姓名存放到结构体名为p1 的数组name 中 coutp1-sex; coutp1-bumen;

18、cout 请选择级别:endl; cout 1.经理endl; cout 2.技术人员endl; cout 3.销售人员endl; cout 4.销售经理xuanze; switch(xuanze) case 1:float wage1;cout请输入级别:p1-zhiwu;cout请输入经理的工资:wage1;p1-paid=wage1;break; case 2:int worktime;int wage2;cout请输入级别:p1-zhiwu;cout请输入技术人员的工作时间:worktime;cout请输入技术人员每小时的工资:wage2;p1-paid=worktime*wage2;

19、break; case 3: int wage3;double ticheng3;cout请输入级别:p1-zhiwu;cout请输入当月销售额:wage3;cout请输入提成比例:ticheng3;p1-paid=wage3*ticheng3;break; case 4: int wage4; double ticheng4; int gongzi; cout请输入级别:p1-zhiwu; cout请输入销售经理的固定工资:gongzi; cout请输入当月销售额:wage4; cout请输入提成比例:ticheng4; p1-paid=gongzi+wage4*ticheng4; brea

20、k; elsecout 需要修改的信息中没有编号为id查找职工信息student *Information:find(student *head,long id)/定义一个指向struct student 的结构体指针函数*find()用来查找职工信息. system(cls); if(head=NULL) /若调用次函数以前的头指针head 为空 coutid&p1-next!=NULL) /寻找结点当p1 所指的职工编号不是输入的职工编号并且p1 所指的next 指针不为空 p1=p1-next; /p2 指向原p1 指向的结点p1 后移一个结点 if(id=p1-id) /如果要查找的职

21、工编号是p1 所指的职工编号 cout-n; cout|编 号| |姓 名| |性别| |所属部门| |级别| |工资|n; cout-n; coutsetw(6)idsetw(10)namesetw(10)sexsetw(10)bumensetw(10)zhiwusetw(12)paidendl; cout-n; else cout信息中没有编号为id的职工.n; /结点没找到 return(head); /-定义paixu()函数将职工的工资总额从大到小排列并输出void Information:paixu(student *head) system(cls); int i,k,m=0,j

22、; student *pN;/定义一个指向struct student 的结构体指针数组p if(head!=NULL)/如果头指针是空则继续 m=count(head); cout-n; cout *职工工资统计表*n; cout-n; cout|编号| |姓名| |性别| |所属部门| |级别| |工资| |名次|n; cout-n; p1=head; for(k=0;knext; for(k=0;km-1;k+) /选择排序法 for(j=k+1;jpaidpaid) p2=pk; pk=pj; pj=p2; /从大到小排列的指针 for(i=0;im;i+) coutsetw(6)id

23、setw(8)namesetw(9)sexsetw(10)bumensetw(10)zhiwusetw(10)paidsetw(10)i+1endl; cout求各工资的平均值的函数void Information:average(student *head) int k,m; float arg=0; if(head=NULL)/如果头指针是空则继续 cout 这是一个空表,请先输入职工信息!n; else m=count(head); p1=head; for(k=0;kpaid; p1=p1-next; arg/=m; cout *工资的平均值*n; cout-n; couttt 工资的

24、平均值: setw(4)argnendl; cout保存函数.void Information:save(student *head) system(cls); ofstream out(data,ios:out); outcount(head)endl; while(head!=NULL) outnametidttsextbumentzhiwutpaidtnext;/-读取文件的信息student *Information:Read() system(cls); int i=0; p1=p2=( student *)malloc(LEN); head=NULL; ifstream in(da

25、ta,ios:out); ini; if(i=0)cout data 文件中的数据为空,请先输入数据!endl; return 0; else coutn 原文件已保存的信息如下:n; cout endl; cout|姓 名| |编 号| |性别| |所属部门| |级别| |工资|n; cout 0;i-) p1=(student *)malloc(LEN); inst.namest.idst.sexst.bumenst.zhiwust.paid; strcpy(p1-name,st.name); p1-id=st.id; strcpy(p1-sex,st.sex); strcpy(p1-bu

26、men,st.bumen); strcpy(p1-zhiwu,st.zhiwu); p1-paid=st.paid; if(n=0)head=p1; /如果是输入第一组职工信息就将指针p1赋给指针head else p2-next=p1; /否则将p1 赋给p2 所指结构体的next 指针 p2=p1; /将指针p1 赋给指针p2 n+; /将n 的值加1 /显示读入数据 cout nametid tsex tbumen tzhiwu tpaid tendl; cout endl; cout 数据已经成功读取完毕!nnnext=NULL; return (head); /-菜单void Menu() Information person; student *head=NULL; int choice; long i; do couttendl; coutt endl; coutt _ _ _ 欢迎进入

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁