You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于C语言的工资系统:如何实现员工记录展示

嘿,我来帮你搞定这个展示所有员工记录的功能!看你给出的代码片段,已经有了employee结构体的定义,只差把display函数补全,再配合存储员工的数组来遍历输出就行。

首先先修正一个小拼写错误:你的display函数参数里写的struct employe少了最后一个字母e,应该是struct employee,不然编译器会报错哦。

接下来是核心实现思路:

  • 我们需要一个数组来存储10名员工的信息,比如struct employee staff[10];
  • display函数需要接收这个数组和员工总数(这里是10),然后通过循环遍历数组的每一个元素,把每个员工的字段逐一打印出来。

下面是完整的可运行代码,我帮你补全了录入、菜单和展示功能:

#include <stdio.h>
#include <stdlib.h>
#include <string.h> // 处理字符串时需要用到

struct employee {
    int empId, hrW, hrR;
    char empName[30], taxCode;
};

// 展示所有员工记录的函数
void display(struct employee staff[], int count) {
    // 先打印表头,让输出更清晰
    printf("\n=== 所有员工信息 ===\n");
    printf("员工ID | 姓名       | 工作时长 | 时薪 | 税码\n");
    printf("--------------------------------------------\n");
    
    // 遍历数组,逐个打印员工信息
    for (int i = 0; i < count; i++) {
        // 用格式化输出对齐字段,%-7d表示左对齐占7个字符宽度
        printf("%-7d | %-10s | %-8d | %-4d | %c\n", 
               staff[i].empId, 
               staff[i].empName, 
               staff[i].hrW, 
               staff[i].hrR, 
               staff[i].taxCode);
    }
}

// 录入10名员工信息的函数
void inputEmployees(struct employee staff[], int count) {
    for (int i = 0; i < count; i++) {
        printf("\n请录入第%d名员工信息:\n", i + 1);
        printf("员工ID:");
        scanf("%d", &staff[i].empId);
        
        // 处理带空格的姓名(如果不需要可以直接用scanf("%s"))
        printf("员工姓名:");
        getchar(); // 清除缓冲区残留的换行符
        fgets(staff[i].empName, sizeof(staff[i].empName), stdin);
        // 去掉fgets自动读取的换行符
        staff[i].empName[strcspn(staff[i].empName, "\n")] = '\0';
        
        printf("工作时长(小时):");
        scanf("%d", &staff[i].hrW);
        printf("时薪:");
        scanf("%d", &staff[i].hrR);
        printf("税码(单个字符):");
        scanf(" %c", &staff[i].taxCode); // 前面加空格跳过换行符
    }
}

int main() {
    struct employee staff[10]; // 存储10名员工的数组
    int choice;

    // 第一步:录入所有员工信息
    inputEmployees(staff, 10);

    // 菜单循环,直到用户选择退出
    do {
        printf("\n=== 工资系统菜单 ===\n");
        printf("1. 展示所有员工记录\n");
        printf("2. 其他操作(可后续补充,比如计算工资)\n");
        printf("3. 退出系统\n");
        printf("请输入你的选择:");
        scanf("%d", &choice);

        switch(choice) {
            case 1:
                display(staff, 10); // 调用展示函数
                break;
            case 2:
                printf("你可以在这里实现其他功能,比如计算每位员工的实发工资等\n");
                break;
            case 3:
                printf("退出系统,再见!\n");
                break;
            default:
                printf("无效的选择,请重新输入!\n");
        }
    } while(choice != 3);

    return 0;
}

几个关键细节说明:

  • display函数里用了格式化输出(%-7d这类),目的是让输出的表格更整齐,可读性更强。
  • 录入姓名时用了fgets而不是单纯的scanf("%s"),这样可以支持带空格的员工姓名(比如"John Doe"),如果你的需求里姓名不需要空格,也可以换回scanf("%s")。
  • 读取税码时,scanf(" %c")前面的空格是为了跳过之前输入残留的换行符,避免读取到空字符。

你可以直接把这段代码复制到编译器里运行,测试录入和展示功能,后续还可以在菜单的选项2里补充其他需求(比如计算工资、修改员工信息等)。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:08:22