热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C++实现职工工资管理系统课程设计_C语言

这篇文章主要为大家详细介绍了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<        <    }
    //求每个人的总工资
    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<<"系统中没有职工信息"<        }
 
        for(i = 0;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<<"开辟空间失败"<        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<<"职工人数已达系统限定,"<        }
        else 
        {    
            my_sys->staff = temp;
            my_sys->width += ADD;
        }
    }
}
//添加职工信息
void Input(System * my_sys)
{
    IF_space(my_sys);
    cout<<"请输入职工信息:"<    cout<<"姓名 基本工资 职务工资 津贴 医疗保险 公积金"<    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<<"系统中没有保存职工信息"<    }
    else
    {
        cout<<"请输入所要查询的职工姓名:";
        char Name[10]={0};
        cin>>Name;
        size_t i = 0;
        for( i = 0;i len; i++)
        {
            if(strcmp(Name,(my_sys->staff+i)->name)==0)
            {
            cout<<"该职工信息为:"<            cout<<"ID号    姓名    基本工资   职务工资    津贴    医疗保险   公积金   总工资    平均工资"<            my_sys->staff->print();
            break;
            }
        }
        if(i >= my_sys->len)
            cout<<"系统中没有此职工信息"<    }
    
}
void menu1()
{
    cout<<"请选择要修改的信息:"<    cout<<"***********************************************"<    cout<<"******       1.修改职工姓名              ******"<    cout<<"******       2.修改基本工资              ******"<    cout<<"******       3.修改职务工资              ******"<    cout<<"******       4.修改紧贴                  ******"<    cout<<"******       5.修改医疗保险              ******"<    cout<<"******       6.修改公积金                ******"<    cout<<"***********************************************"< 
 
}
//修改职工信息
void Update(System * my_sys)
 
{
    if(my_sys->len == 0)
    {
        cout<<"系统中没有保存职工信息"<    }
    else
    {
        cout<<"请输入所要修改的职工姓名:";
        char Name[MAX_NAME]={0};
        cin>>Name;
        size_t i = 0;
        for( i = 0;i 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<<"输入不合标准"<                    break;
                }
                break;
            }
 
        }
        if(i >= my_sys->len)
            cout<<"系统中没有此职工信息"<    }
}
//删除职工信息
void Delete(System * my_sys)
{
    if(my_sys->len == 0)
    {
        cout<<"系统中没有保存职工信息"<    }
    else
    {
        cout<<"请输入所要删除的职工姓名:";
        char Name[MAX_NAME]={0};
        cin>>Name;
        size_t i = 0;
        size_t m = my_sys->len;
        for( i = 0;i len; i++)
        {
            if(strcmp(Name,(my_sys->staff+i)->name)==0)
            {
                for(size_t j = i;jlen-1; j++)
                    *(my_sys->staff+j) = *(my_sys->staff+j+1);
                my_sys->len--;
                break;
            }
        }
        if(i >= m)
            cout<<"系统中没有此职工信息"<    }
    
}
 
//统计:统计符合指定条件(如职工工资前三项之和在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<<"系统中没有保存职工信息"<    }
    else
    {
        cout<<"请输入你要统计的职工信息指定的条件m 和 n:";  
        cin>>m>>n;  
        for(size_t i = 0; ilen ;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<    }
}
//求每一项的平均值
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;ilen; 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<    }
}
 
//从文件读取职工信息    
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; ilen ;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<<"#######################################################################"<    cout<<"--------------------------职工工资管理系统()---------------------------"<    cout<<"***********************************************************************"<    cout<<"**                        1. 修改职工信息                            **"<    cout<<"**                        2. 添加职工信息                            **"<    cout<<"**                        3. 删除职工信息                            **"<    cout<<"**                        4. 查找职工信息                            **"<    cout<<"**                        5. 统计职工信息                            **"<    cout<<"**                        6. 显示职工信息                            **"<    cout<<"**                        0. 退出系统                                **"<    cout<<"#######################################################################"< 
}
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号    姓名  基本工资  职务工资  津贴  医疗保险  公积金  总工资  平均工资"<            my_system.print();
            money(&my_system);
            break;
        case 0:
            break;
        default:
            break;
        }
    }
    Save(&my_system);
    free(my_system.staff);//一定要记得回收
    system("pause");
    return 0;
}

本文实例为大家分享了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<        <    }
    //求每个人的总工资
    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<<"系统中没有职工信息"<        }
 
        for(i = 0;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<<"开辟空间失败"<        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<<"职工人数已达系统限定,"<        }
        else 
        {    
            my_sys->staff = temp;
            my_sys->width += ADD;
        }
    }
}
//添加职工信息
void Input(System * my_sys)
{
    IF_space(my_sys);
    cout<<"请输入职工信息:"<    cout<<"姓名 基本工资 职务工资 津贴 医疗保险 公积金"<    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<<"系统中没有保存职工信息"<    }
    else
    {
        cout<<"请输入所要查询的职工姓名:";
        char Name[10]={0};
        cin>>Name;
        size_t i = 0;
        for( i = 0;i len; i++)
        {
            if(strcmp(Name,(my_sys->staff+i)->name)==0)
            {
            cout<<"该职工信息为:"<            cout<<"ID号    姓名    基本工资   职务工资    津贴    医疗保险   公积金   总工资    平均工资"<            my_sys->staff->print();
            break;
            }
        }
        if(i >= my_sys->len)
            cout<<"系统中没有此职工信息"<    }
    
}
void menu1()
{
    cout<<"请选择要修改的信息:"<    cout<<"***********************************************"<    cout<<"******       1.修改职工姓名              ******"<    cout<<"******       2.修改基本工资              ******"<    cout<<"******       3.修改职务工资              ******"<    cout<<"******       4.修改紧贴                  ******"<    cout<<"******       5.修改医疗保险              ******"<    cout<<"******       6.修改公积金                ******"<    cout<<"***********************************************"< 
 
}
//修改职工信息
void Update(System * my_sys)
 
{
    if(my_sys->len == 0)
    {
        cout<<"系统中没有保存职工信息"<    }
    else
    {
        cout<<"请输入所要修改的职工姓名:";
        char Name[MAX_NAME]={0};
        cin>>Name;
        size_t i = 0;
        for( i = 0;i 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<<"输入不合标准"<                    break;
                }
                break;
            }
 
        }
        if(i >= my_sys->len)
            cout<<"系统中没有此职工信息"<    }
}
//删除职工信息
void Delete(System * my_sys)
{
    if(my_sys->len == 0)
    {
        cout<<"系统中没有保存职工信息"<    }
    else
    {
        cout<<"请输入所要删除的职工姓名:";
        char Name[MAX_NAME]={0};
        cin>>Name;
        size_t i = 0;
        size_t m = my_sys->len;
        for( i = 0;i len; i++)
        {
            if(strcmp(Name,(my_sys->staff+i)->name)==0)
            {
                for(size_t j = i;jlen-1; j++)
                    *(my_sys->staff+j) = *(my_sys->staff+j+1);
                my_sys->len--;
                break;
            }
        }
        if(i >= m)
            cout<<"系统中没有此职工信息"<    }
    
}
 
//统计:统计符合指定条件(如职工工资前三项之和在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<<"系统中没有保存职工信息"<    }
    else
    {
        cout<<"请输入你要统计的职工信息指定的条件m 和 n:";  
        cin>>m>>n;  
        for(size_t i = 0; ilen ;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<    }
}
//求每一项的平均值
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;ilen; 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<    }
}
 
//从文件读取职工信息    
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; ilen ;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<<"#######################################################################"<    cout<<"--------------------------职工工资管理系统()---------------------------"<    cout<<"***********************************************************************"<    cout<<"**                        1. 修改职工信息                            **"<    cout<<"**                        2. 添加职工信息                            **"<    cout<<"**                        3. 删除职工信息                            **"<    cout<<"**                        4. 查找职工信息                            **"<    cout<<"**                        5. 统计职工信息                            **"<    cout<<"**                        6. 显示职工信息                            **"<    cout<<"**                        0. 退出系统                                **"<    cout<<"#######################################################################"< 
}
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号    姓名  基本工资  职务工资  津贴  医疗保险  公积金  总工资  平均工资"<            my_system.print();
            money(&my_system);
            break;
        case 0:
            break;
        default:
            break;
        }
    }
    Save(&my_system);
    free(my_system.staff);//一定要记得回收
    system("pause");
    return 0;
}


推荐阅读
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了一个程序,可以输出1000内能被3整除且个位数为6的所有整数。程序使用了循环和条件判断语句来筛选符合条件的整数,并将其输出。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
author-avatar
vijay
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有