用c语言写一个职工工资管理程序

用c语言写一个职工工资管理程序将10名职工的数据(职工号、职工名、性别、年龄、工资)从键盘输入,然后送到磁
盘文件worker1.dat中保存起来。
从磁盘文件中读出这些数据,依次打印出来。
对职工数据按工资高低排序,将排好序的各记录存放在文件worker2.dat中。
将职工号为单数和偶数的职工信息分别存放另两个磁盘文件worker3.dat和worker4.dat中,并从这两个文件中读出职工信息在显示器上显示出来。

思路:

使用结构体保存职工信息,设计单独的函数,实现录入,按职工工资排序,分解单双数职工,读取和写入文件,显示数据等功能。

1 - 从键盘录入信息到数组结构并保存至文件,录入+写入文件。

2 - 从磁盘文件中读出这些数据,依次打印出来, 读取文件+显示数据。

3 - 对职工数据按工资高低排序,将排好序的各记录存放在文件worker2.dat中, 排序+写入文件。

4 - 将职工号为单数和偶数的职工信息分别存放另两个磁盘文件worker3.dat和worker4.dat中, 分解单双数职工+写入文件。

5 - 并从这两个文件中读出职工信息在显示器上显示出来, 读取文件+显示数据。


代码片段如下:

int main(int argc, char* argv[])
{
    worker arr[WORKER_NUMBER];
    int cnt = WORKER_NUMBER;
    worker odd[WORKER_NUMBER];
    int oddnum = 0;
    worker even[WORKER_NUMBER];
    int evennum = 0;

    clear_worker_array(arr, cnt);
    clear_worker_array(odd, cnt);
    clear_worker_array(even, cnt);

    //1.录入并保存至worker1.dat
    entering_data(arr, cnt);
    if( save_file(arr, cnt, filename[0]) == 0 )
    {
        printf("原始记录已成功保存至文件 - %s\n", filename[0]);
    }

    //2.读取worker1.dat并显示
    clear_worker_array(arr, cnt);
    if( load_file(arr, &cnt, filename[0]) == 0 )
    {
        printf("载入文件 - %s\n", filename[0]);
    }
    show_data(arr, cnt);

    //3.排序并保存至worker2.dat
    sort_by_salary(arr, cnt);
    if( save_file(arr, cnt, filename[1]) ==0 )
    {
        printf("按工资排序后的记录已成功保存至文件 - %s\n", filename[1]);
    }

    //4.保存单数和双数职工号信息至worker3.dat和worker4.dat
    filter_workers(arr, cnt, odd, &oddnum, even, &evennum);
    if( save_file(odd, oddnum, filename[2]) == 0 )
    {
        printf("职工号为单数的记录已成功保存至文件 - %s\n", filename[2]);
    }
    if( save_file(even, evennum, filename[3]) == 0 )
    {
        printf("职工号为双数的记录已成功保存至文件 - %s\n", filename[3]);
    }

    //5.读取worker3.dat和worker4.dat并显示
    clear_worker_array(odd, oddnum);
    oddnum = 0;
    if( load_file(odd, &oddnum, filename[2]) == 0 )
    {
        printf("载入文件 - %s\n", filename[2]);
    }
    show_data(odd, oddnum);

    clear_worker_array(even, oddnum);
    evennum = 0;
    if( load_file(even, &evennum, filename[3]) == 0 )
    {
        printf("载入文件 - %s\n", filename[3]);
    }
    show_data(even, evennum);

    return 0;
}

为了测试方便,此处的宏只指定了5个职工的信息,若要达到你要求的,直接改成10即可。运行结果如下:

完整代码请参考附件 - worker_manager.c

:by never715

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-07
可以使用一个结构体数组来做
结构体中存储各个职工的信息
然后对该结构体数组进行操作
保存到文件即将结构体数组保存到文件
显示时从文件读取数据到数组中
然后再遍历数组输出即可

如果代码不想自己写的话
我可以有偿代劳本回答被网友采纳
第2个回答  2017-03-07
c语音。
相似回答