C++如何实现职工工资管理系统
本篇内容主要讲解"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#include #include using namespace std; #define MAX_NAME 10//定义姓名的最大长度#define START 3//初始化为职工开辟的空间#define ADD 5//每次为职工增加的空间#define FILENAME "staff.dat"//存入的文件名 //定义一个职工类class Staff{public: //显示职工信息 void print() { cout< 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<<"开辟空间失败"<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<<"职工人数已达系统限定,"< staff = temp; my_sys->width += ADD; } }}//添加职工信息void Input(System * my_sys){ IF_space(my_sys); cout<<"请输入职工信息:"< >(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<<"系统中没有保存职工信息"< >Name; size_t i = 0; for( i = 0;i < my_sys->len; i++) { if(strcmp(Name,(my_sys->staff+i)->name)==0) { cout<<"该职工信息为:"< staff->print(); break; } } if(i >= my_sys->len) cout<<"系统中没有此职工信息"< len == 0) { cout<<"系统中没有保存职工信息"< >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) { 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<<"输入不合标准"< = my_sys->len) cout<<"系统中没有此职工信息"< len == 0) { cout<<"系统中没有保存职工信息"< >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 len-1; j++) *(my_sys->staff+j) = *(my_sys->staff+j+1); my_sys->len--; break; } } if(i >= m) cout<<"系统中没有此职工信息"< len == 0) { cout<<"系统中没有保存职工信息"< >m>>n; for(size_t i = 0; i 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<<"职工工资前三项之和在 " < len< 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<<"各项工资的平均工资为 " < len<<" " < len<<" " < len<<" " < len<<" " < len< 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 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<<"#######################################################################"<"; 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号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 平均工资"< 到此,相信大家对"C++如何实现职工工资管理系统"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!