




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/ / 公司员工管理系统 -CEMS #include #include #include #include #include/ 文件操作头文件/ 包含 system() 等函数的头文件/ 字符串处理头文件/ 输入输出流重载需要的头文件/ 工资明细结构体typedef struct WAGEfloat Base_Wage; / 基本工资 float Merit_Wage; / 绩效工资 float Sum_Wage; / 总工资 WAGE;/ 包括职工姓名、职工号的工资记录typedefstruct Emplo_Wage1char id10;/ 职工编char name10;/职工姓名WAGE
2、 data;/ 工资Emplo_Wage;typedefrstruct Node charE_id10;/职工号charE_name10;/ 姓名charE_sex3; / 性别charE_dep20; / 部门charE_job20; / 职务floatE_wage; / 工资structNode *prior;/ 前驱指针structNode *next;/ 后继指针Node,*DLink;/ 工资大于 1000 的员工,超过部门需要按税率交税float Tax_Rate1=0.05f;/ 3000 以下float Tax_Rate2=0.1f; / 3000-8000 float Tax
3、_Rate3=0.15f;/ 8000 以上void SetWage(DLink p);/ 职工类class employeeprivate:Node data; / 结构体类型的数据成员 public:friend ostream & operator(istream &stream,DLink p);/ 友元重载输入流运算符employee(); 构造函数/DLink CreateLink();/创建链表DLink InsertNode(DLink Head); / 插入一个结点 ;/ 全局常量,一个结点的大小const int NUM=sizeof(Node);/ 重载输出流运算符ost
4、ream & operator(ostream & stream,const DLink p) streamsetiosflags(ios:left)setw(10)E_idsetiosflags(ios:l eft)setw(10)E_namesetiosflags(ios:left)setw(7)E_sex setiosflags(ios:left)setw(15)E_depsetiosflags(ios:left)setw (15)E_jobsetiosflags(ios:left)setw(8)E_wage(istream & stream,DLink p)coutp-E_name;c
5、outp-E_sex;coutp-E_dep;coutp-E_job;SetWage(p); / 输入工资 coutprior=NULL;Head-next=NULL;return Head;/ 插入结点DLink employee:InsertNode(DLink Head)DLink p;打开文件ofstream file(EmployeeInfo.txt,ios:app); / if(!file) coutCannot open the file!n; return 0;p=new Node;cout 请输入员工信息 :n;coutp-E_id;while(strcmp(p-E_id,0
6、0) / 循环输入,以 00 结束输入 cinp;p-prior=Head;p-next=Head-next;if(Head-next!=NULL) / 如果不是空链 Head-next-prior=p;Head-next=p;(char *)p,NUM);p=new Node; cout 请输入员工信息 :n;coutp-E_id;(); / 关闭文件printf( 录入完毕 .n);return Head;/ 输出格式void Print_Format() coutsetiosflags(ios:left)setw(10) 职工号 setiosflags(ios:left)setw(10)
7、姓名 setiosflags(ios:left)setw(7)性别 setiosflags(ios:left)setw(15) 所在部门 setiosflags(ios:left)setw(15) 职务 setiosflags(ios:left)setw(8)工资 endl;/ 设置工资税率void SetTRate()docout 请输入税率 :; cinTax_Rate1;while(Tax_Rate11|Tax_Rate10);docout 请输入税率 :; cinTax_Rate2;while(Tax_Rate21|Tax_Rate20);docout 请输入税率 :; cinTax_
8、Rate3;while(Tax_Rate31|Tax_Rate30);/ 设置一个员工的明细工资void SetWage(DLink p)/ intflag=0;float sum;Emplo_Wage *s;s = new Emplo_Wage;/ q = new Emplo_Wage;fstream file;(Employee_Wage_Info.txt,ios:app);if(!file) cout 打开工资文件失败! endl; return; couts-data.Base_Wage; / 设置基本工资 couts-data.Merit_Wage; / 设置绩效工资 sum=s-d
9、ata.Base_Wage + s-data.Merit_Wage; if(sumdata.Sum_Wage=sum;else if(sumdata.Sum_Wage=(sum-1000) * (1-Tax_Rate1)+1000; else if(sumdata.Sum_Wage=(sum-3000) * (1-Tax_Rate2)+3000; elses-data.Sum_Wage=(sum-8000) * (1-Tax_Rate3)+8000; p-E_wage=s-data.Sum_Wage; / 总工资 strcpy(s-id , p-E_id);strcpy(s-name , p-
10、E_name);(char *)s,sizeof(Emplo_Wage); / 写入文件();/ 输出void Print()count- 计数/ 打开文件int n,count=0;/n- 输入的每屏显示的记录数,DLink p;ifstream file(EmployeeInfo.txt);if(!file) coutCannot open the file!n; return; p=new Node;coutn;system(cls); / 清屏Print_Format(); / 输出字段名while(!()(char *)p,NUM);if()break;if(n=count) / 控
11、制每一屏显示的记录条数system(pause); / 暂停system(cls); / 清屏 count=0; / 计数器清零 Print_Format();coutp;count+;/ 修改函数void Amend()int n; / 用于选择修改选项char id10; / 存放输入的需要修改信息的职工号DLink p;p=new Node;fstream file;(EmployeeInfo.txt,ios:in|ios:out); / 以读写方式打 开 if(!file) coutCannot open the file!n; return; coutid; while(!() (c
12、har *)p,NUM);if()break;if(!strcmp(p-E_id,id)break;if()printf( 没有这个职工号 !n);return;coutvv可以修改的项目有:1-部门2-职务3-工资n;coutn;if(n=0)/ 修改所在部门、职务、工资coutp-E_dep;coutp-E_job; SetWage(p);else if(n=1) / 修改所在部门coutp-E_dep;else if(n=2) / 修改职务coutp-E_job;else if(n=3) / 修改工资SetWage(p);elseprintf( 输入错误 !n);(-1*NUM,ios:
13、cur); / 写指针回跳一条记录,以更新记录 (char *)p,NUM); / 写入更新后的记录 if(n=0|n=1|n=2|n=3)printf( 修改成功 !n); / 操作提示 (); / 关闭文件 / 查询函数void Query()char Query_Value20; / 存放输入的需要查询的姓名或部门名称 int flag=0,n; / 是否查询到的标志 DLink p;p=new Node;ifstream file(EmployeeInfo.txt); / 打开文件 if(!file) coutCannot open the file!n; return; cout 通
14、过哪种方式查询: endl;coutt1- 姓名2- 所在部门 endl;coutn;if(n=1)coutQuery_Value;else if(n=2)coutQuery_Value;else cout 输入错误 !E_name,Query_Value)flag=1; flag=1; / 关闭文件 Print_Format(); coutE_dep,Query_Value) Print_Format(); coutp; if(flag=0) printf( 查询失败 , 没有相应记录 !n);();/ / 删除函数void Delete()char id10; / 存放输入的职工号char
15、 name10; / 存放输入的职工姓名int count1=0,count2=0; /count1- 总的记录数, count2- 删除记录以后的总 记录数DLink p;p=new Node;ifstream file(EmployeeInfo.txt);if(!file) coutCannot open the file!n; return; ofstream newfile(NewEmployeeInfo.txt);if(!newfile) coutCannot open the file!n; return; coutid;coutname;while(!()(char *)p,NU
16、M);count1+; if() break;if(strcmp(p-E_name,name)|strcmp(p-E_id,id) new(char *)p,NUM);count2+;(); / 关闭文件new();remove(EmployeeInfo.txt);EmployeeInfo.txt/ 关闭文件/ 删除原来的rename(NewEmployeeInfo.txt,EmployeeInfo.txt); / 重命名 if(count1=count2)printf( 没有这个记录 !n);else printf( 删除成功 !n);/ 查看职工工资明细void showwage()int
17、 n;char temp110;Emplo_Wage temp2;ifstream file(Employee_Wage_Info.txt);if(!file) cout 职工工资表文件不能打开 !endl; return; cout 请选择操作项: endl;cout1- 查看某个职工工资明细2- 查看全部职工工资明细 endl;coutn;if(n=1) / 输出某一个职工的工资明细 couttemp1;else if(n!=2)cout 输入错误 !endl;return; coutsetiosflags(ios:left)setw(10) 职工号 setiosflags(ios:lef
18、t)setw(10)姓名setiosflags(ios:left)setw(10) 基本工资 setiosflags(ios:left)setw(10) 绩效工资 setiosflags(ios:left)setw(10)总工资 endl;while(!()(char *)&temp2,sizeof(Emplo_Wage);if()break;if(n=1) / 输出某一个职工的工资明细if(!strcmp(temp2.id,temp1) coutsetiosflags(ios:left)setw(10)temp2.idsetiosflags (ios:left)setw(10)temp2.n
19、amesetiosflags(ios:left)setw(10) temp2.data.Base_Wagesetiosflags(ios:left)setw(10)temp2.data. Merit_Wagesetiosflags(ios:left)setw(10) temp2.data.Sum_Wageendl; break;else / 输出全部职工的工资明细 coutsetiosflags(ios:left)setw(10)temp2.idsetiosflags (ios:left)setw(10)setiosflags(ios:left)setw(10) temp2
20、.data.Base_Wagesetiosflags(ios:left)setw(10)temp2.data. Merit_Wagesetiosflags(ios:left)setw(10) temp2.data.Sum_Wageendl; / 欢迎界面void startface()system(color 0A); / 设置屏幕显示的前景色、背景色 system(cls); / 清屏/cout*、endl;coutendlendlendlendlendl; cout*endl; coutendl;cout 公司员工管理系统endl;cout欢迎进入endl; cout*endl;coutendlendlendlendlendlendlendlendlendlendl; system(pause); / 暂停/ 主菜单void menu()system(cls); coutendlendl;cout|单 * cout|/ 清屏*|endl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园小班识字游戏征文
- 产品质量保证及售后服务承诺书
- 项目投资保密协议
- 石墨技术在提高汽车工业效率的作用
- 电子商务平台的物流配送系统优化
- 社区教育与文化建设的融合实践
- 黑背上的数学奇遇故事解读
- 货物装卸搬运承包合同
- 电影衍生品市场策略与营销手段探讨
- 新一代移动通信技术推广合同
- 九上下册物理人教版九年级物理全册第十九章《生活用电》第3节《安全用电》课件(42张)公开课教案
- 2024年计算机二级WPS考试题库380题(含答案)
- 2024年人教版九年级英语单词默写单(微调版)
- 事业单位工作人员奖励审批表
- 【绝味鸭脖公司的存货管理问题及完善对策8500字】
- 山东省技能大赛青岛选拔赛-世赛选拔项目52样题(平面设计技术)
- 防排烟规范培训
- 飞灰处置及资源化综合利用项目可行性研究报告模板-备案拿地
- 2024年咨询工程师考试大纲
- 免疫治疗皮疹护理查房
- 小学六年级开学第一课课件二篇
评论
0/150
提交评论