本篇内容主要讲解“C++如何实现职工工资管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++如何实现职工工资管理系统”吧!
题目 职工工资管理系统
1. 输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6. 统计: (A)计算各项工资平均工资及总工资,(B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。
7.保存数据文件功能。
下面是我设计的程序功能
1.主函数 main(void):调用设计者的相关信息函数、调用 Menu()函数,实现系统的主要功能处理;
2.主菜单Menu()函数:确定如何选择所需功能,调用数据输入、显示、查找、增加、删除、修改、保存等函数,完成职工工资管理系统的数据处理;
3.数据输入Input():完成职工信息添加;
4.数据修改函数 update():修改职工工资等信息数据;
5.数据删除函数Delete():删除职工信息数据;
6.数据查找函数 select():查找某一职工工资等信息情况;
7.数据统计函数tongji():统计职工人数;
8.数据显示函数print():将职工信息数据显示出来;
9.文件保存函数Save():将录入的职工信息保存到文件;
10 文件读取函数Read(): 从文件中读取职工信息;
头文件:
#ifndef __MONEY__ #define __MONEY__ #include <iostream> #include <stdlib.h> #include <string.h> using namespace std; #define MAX_NAME 10//定义姓名的最大长度 #define START 3//初始化为职工开辟的空间 #define ADD 5//每次为职工增加的空间 #define FILENAME "staff.dat"//存入的文件名 //定义一个职工类 class Staff { public: //显示职工信息 void print() { cout<<id<<" "<<name<<" "<<mon1<<" "<<mon2<<" "<<mon3<<" " <<mon4<<" "<<mon5<<" "<<Staff::summoney()<<" "<<Staff::avgmoney()<<endl; } //求每个人的总工资 double summoney() { double sum; sum= mon1 + mon2 + mon3 + mon4 + mon5; return sum; } //求每个人的平均工资 double avgmoney() { double avg; avg= (Staff::summoney())/5; return avg; } char name[MAX_NAME]; int id ; double mon1,mon2,mon3,mon4,mon5; }; //定一个系统类 class System { public: //显示系统内的职工信息 void print() { size_t i =0; if(System::len ==0) { cout<<"系统中没有职工信息"<<endl; } for(i = 0;i< System::len;i++) { (System::staff+i)->print(); } } Staff *staff;//职工类的指针 size_t len ;//职工人数 size_t width;//为职工创建的空间大小 }; //初始化系统 void Initclass(System * my_sys); //添加职工信息 void Input(System * my_sys); //查找职工信息 void Select(System * my_sys); //修改职工信息 void Update(System * my_sys); //删除职工信息 void Delete(System * my_sys); //统计职工信息 void tongji(System * my_sys); //求每一项的平均值 void money(System * my_sys); //从文件读取职工信息 void Read(System *my_sys); //将职工信息写入文件 void Save(System *my_sys); //释放动态开辟的空间 void Free(System *my_sys); #endif //__MONEY__
源文件:
#define _CRT_SECURE_NO_WARNINGS 1 #include "xiaodong.h" //初始化系统 void Initclass(System * my_sys) { my_sys->staff= (Staff *)calloc(START ,sizeof(Staff)); if(my_sys->staff == NULL) { cout<<"开辟空间失败"<<endl; exit(EXIT_FAILURE); } my_sys->len = 0 ; my_sys->width = START; } void IF_space(System * my_sys) { if(my_sys->len == my_sys->width) { Staff *temp = (Staff *)realloc(my_sys->staff,my_sys->width+ADD); if(temp == NULL) { cout<<"职工人数已达系统限定,"<<endl; } else { my_sys->staff = temp; my_sys->width += ADD; } } } //添加职工信息 void Input(System * my_sys) { IF_space(my_sys); cout<<"请输入职工信息:"<<endl; cout<<"姓名 基本工资 职务工资 津贴 医疗保险 公积金"<<endl; cin>>(my_sys->staff+my_sys->len)->name >>(my_sys->staff+my_sys->len)->mon1 >>(my_sys->staff+my_sys->len)->mon2 >>(my_sys->staff+my_sys->len)->mon3 >>(my_sys->staff+my_sys->len)->mon4 >>(my_sys->staff+my_sys->len)->mon5; (my_sys->staff + my_sys->len)->id = my_sys->len+1; my_sys->len += 1; } //查找职工信息 void Select(System * my_sys) { if(my_sys->len == 0) { cout<<"系统中没有保存职工信息"<<endl; } else { cout<<"请输入所要查询的职工姓名:"; char Name[10]={0}; cin>>Name; size_t i = 0; for( i = 0;i < my_sys->len; i++) { if(strcmp(Name,(my_sys->staff+i)->name)==0) { cout<<"该职工信息为:"<<endl; cout<<"ID号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 平均工资"<<endl; my_sys->staff->print(); break; } } if(i >= my_sys->len) cout<<"系统中没有此职工信息"<<endl; } } void menu1() { cout<<"请选择要修改的信息:"<<endl; cout<<"***********************************************"<<endl; cout<<"****** 1.修改职工姓名 ******"<<endl; cout<<"****** 2.修改基本工资 ******"<<endl; cout<<"****** 3.修改职务工资 ******"<<endl; cout<<"****** 4.修改紧贴 ******"<<endl; cout<<"****** 5.修改医疗保险 ******"<<endl; cout<<"****** 6.修改公积金 ******"<<endl; cout<<"***********************************************"<<endl; } //修改职工信息 void Update(System * my_sys) { if(my_sys->len == 0) { cout<<"系统中没有保存职工信息"<<endl; } else { cout<<"请输入所要修改的职工姓名:"; char Name[MAX_NAME]={0}; cin>>Name; size_t i = 0; for( i = 0;i < my_sys->len; i++) { if(strcmp(Name,(my_sys->staff+i)->name)==0) { menu1(); cout<<"请选择对应数字序号进行操作:"; int a =0 ; char name[MAX_NAME] ={0}; double mon1 =0.0,mon2 =0.0,mon3 =0.0,mon4 =0.0,mon5 =0.0; cin>>a; switch(a) {<strong> </strong> case 1: cout<<"请输入新的职工姓名:"; cin>>name; strcpy(my_sys->staff->name,name); break; case 2 : cout<<"请输入新的基本工资:"; cin>>mon1; my_sys->staff->mon1 = mon1; break; case 3: cout<<"请输入新的岗位工资:"; cin>>mon2; my_sys->staff->mon2 = mon2; break; case 4: cout<<"请输入新的岗位工资:"; cin>>mon3; my_sys->staff->mon3 = mon3; break; case 5 : cout<<"请输入新的岗位工资:"; cin>>mon4; my_sys->staff->mon4 = mon4; break; case 6: cout<<"请输入新的岗位工资:"; cin>>mon5; my_sys->staff->mon5 = mon5; break; default: cout<<"输入不合标准"<<endl; break; } break; } } if(i >= my_sys->len) cout<<"系统中没有此职工信息"<<endl; } } //删除职工信息 void Delete(System * my_sys) { if(my_sys->len == 0) { cout<<"系统中没有保存职工信息"<<endl; } else { cout<<"请输入所要删除的职工姓名:"; char Name[MAX_NAME]={0}; cin>>Name; size_t i = 0; size_t m = my_sys->len; for( i = 0;i < my_sys->len; i++) { if(strcmp(Name,(my_sys->staff+i)->name)==0) { for(size_t j = i;j<my_sys->len-1; j++) *(my_sys->staff+j) = *(my_sys->staff+j+1); my_sys->len--; break; } } if(i >= m) cout<<"系统中没有此职工信息"<<endl; } } //统计:统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) //以内的工资职工人数及占总职工人数的百分比。 void tongji(System * my_sys) /* m-n为 1000-2000,2000-3000,3000-max*/ { double number = 0.0; double money = 0.0; double m =0.0; double n = 0.0; if(my_sys->len == 0) { cout<<"系统中没有保存职工信息"<<endl; } else { cout<<"请输入你要统计的职工信息指定的条件m 和 n:"; cin>>m>>n; for(size_t i = 0; i<my_sys->len ;i++) { money = (my_sys->staff+i)->mon1 + (my_sys->staff+i)->mon2 + (my_sys->staff+i)->mon3; if((money >= m)&& (money <= n)) number++; } cout<<"职工工资前三项之和在 " <<m <<" --"<<n <<"职工人数及占总职工人数的百分比为:"<<(double)number/my_sys->len<<endl; } } //求每一项的平均值 void money(System * my_sys) { double count1 = 0; double count2 = 0; double count3 = 0; double count4 = 0; double count5 = 0; if(my_sys->len> 0) { for(size_t i = 0;i< my_sys->len; i++) { count1 = count1 + my_sys->staff->mon1; count2 = count2 + my_sys->staff->mon1; count3 = count3 + my_sys->staff->mon1; count4 = count4 + my_sys->staff->mon1; count5 = count5 + my_sys->staff->mon1; } cout<<"各项工资的平均工资为 " <<count1/my_sys->len<<" " <<count2/my_sys->len<<" " <<count3/my_sys->len<<" " <<count4/my_sys->len<<" " <<count5/my_sys->len<<endl; } } //从文件读取职工信息 void Read(System *my_sys) { Staff s; FILE *pf =fopen(FILENAME,"r"); if(pf == NULL) { perror("error:"); Free(my_sys); exit(EXIT_FAILURE); } while(fread(&s,sizeof(Staff),1,pf))//从文件中读取数据,,直到读取的为空 { IF_space(my_sys); my_sys->staff[my_sys->len++] = s; } fclose(pf);//记着关闭文件 } //将职工信息写入文件 void Save(System *my_sys) { FILE *pf = fopen(FILENAME,"w"); if(pf==NULL) { perror("error:"); Free(my_sys); exit(EXIT_FAILURE); } for(size_t i=0; i<my_sys->len ;i++ ) { fwrite(my_sys->staff+i,1,sizeof(Staff),pf); } fclose(pf); } void Free(System *my_sys) { if(my_sys->staff!= NULL) { free(my_sys->staff); my_sys->staff=NULL; } }
测试代码:
#define _CRT_SECURE_NO_WARNINGS #include "xiaodong.h" void menu() { cout<<"#######################################################################"<<endl; cout<<"--------------------------职工工资管理系统()---------------------------"<<endl; cout<<"***********************************************************************"<<endl; cout<<"** 1. 修改职工信息 **"<<endl; cout<<"** 2. 添加职工信息 **"<<endl; cout<<"** 3. 删除职工信息 **"<<endl; cout<<"** 4. 查找职工信息 **"<<endl; cout<<"** 5. 统计职工信息 **"<<endl; cout<<"** 6. 显示职工信息 **"<<endl; cout<<"** 0. 退出系统 **"<<endl; cout<<"#######################################################################"<<endl; } int main() { System my_system; int input = 1; Initclass(&my_system); Read(&my_system); while(input) { menu(); cout<<"请输入要选择的功能:>"; cin>>input; switch(input) { case 1: Update(&my_system); break; case 2: Input(&my_system); break; case 3: Delete(&my_system); break; case 4: Select(&my_system); break; case 5: tongji(&my_system); break; case 6: cout<<"ID号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 平均工资"<<endl; my_system.print(); money(&my_system); break; case 0: break; default: break; } } Save(&my_system); free(my_system.staff);//一定要记得回收 system("pause"); return 0; }
到此,相信大家对“C++如何实现职工工资管理系统”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。