版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年新教材高中历史第四单元资本主义制度的确立第9课资产阶级革命与资本主义制度的确立梯度作业练素能含解析新人教版必修中外历史纲要下
- 彩妆培训合同范例
- 威海农村房屋出售合同模板
- 房租无偿租赁合同模板
- 农村房屋商用租赁合同范例
- 床褥销售合同范例
- 双方合租合作合同范例
- 差额结算合同范例
- 奖品采购合同模板
- 2024年天津客运从业资格证试题下载
- 海洋研学劳动课程设计
- 吉林省松原市前郭县南部学区2024~2025学年度七年级上期中测试.名校调研 生物(含答案)
- 林业基础知识考试题库单选题100道及答案解析
- 2024年盘锦北方沥青股份限公司招聘18人高频难、易错点500题模拟试题附带答案详解
- 电气工程及其自动化职业规划课件
- 2024至2030年中国纳米氧化锌行业投资前景及策略咨询研究报告
- 2024年经济师考试-中级经济师考试近5年真题附答案
- 《算法设计与分析基础》(Python语言描述) 课件 第3章基本算法设计方法1
- 2024年个人之间清账协议书模板
- 浙江省杭州市2023-2024学年五年级上学期英语期中试卷(含答案)2
- 期中 (试题) -2024-2025学年译林版(三起)英语四年级上册
评论
0/150
提交评论