c语言编程排班表代码是什么

fiy 其他 7

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    以下是一个示例的C语言编程排班表代码:

    #include <stdio.h>
    
    #define NUM_EMPLOYEES 7   // 员工人数
    #define NUM_DAYS 30       // 排班天数
    
    int main() {
        char employeeNames[NUM_EMPLOYEES][20] = { "员工1", "员工2", "员工3", "员工4", "员工5", "员工6", "员工7" };
        char schedule[NUM_DAYS][20];   // 保存排班结果的数组
    
        int i, j;
    
        // 初始化排班表,将所有的排班设置为默认值
        for (i = 0; i < NUM_DAYS; i++) {
            for (j = 0; j < NUM_EMPLOYEES; j++) {
                schedule[i][j] = '-';
            }
        }
    
        // 根据排班规则进行排班
        for (i = 0; i < NUM_DAYS; i++) {
            for (j = 0; j < NUM_EMPLOYEES; j++) {
                if (i % NUM_EMPLOYEES == j) {
                    schedule[i][j] = 'O';   // 设置为上班
                }
            }
        }
    
        // 打印排班表
        printf("排班表:\n");
        for (i = 0; i < NUM_DAYS; i++) {
            printf("第%d天: ", i+1);
            for (j = 0; j < NUM_EMPLOYEES; j++) {
                printf("%s: %c\t", employeeNames[j], schedule[i][j]);
            }
            printf("\n");
        }
    
        return 0;
    }
    

    上述代码实现了一个简单的排班表功能,包括了员工姓名、排班天数以及排班结果的存储和输出。通过设置排班规则,将员工按照轮流上班的方式进行排班,并将结果以表格形式输出。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    C语言编程排班表代码可以根据具体需求进行编写,下面是一个简单的示例代码:

    #include <stdio.h>
    
    #define MAX_EMPLOYEES 10
    #define MAX_DAYS 31
    
    typedef struct {
        int day;
        int month;
        int year;
    } Date;
    
    typedef struct {
        char name[20];
        Date dateOfBirth;
    } Employee;
    
    typedef struct {
        Employee employees[MAX_EMPLOYEES];
        int schedule[MAX_DAYS];
        int numEmployees;
    } Schedule;
    
    void addEmployee(Schedule *schedule, Employee employee) {
        if (schedule->numEmployees < MAX_EMPLOYEES) {
            schedule->employees[schedule->numEmployees] = employee;
            schedule->numEmployees++;
            printf("Employee added successfully!\n");
        } else {
            printf("Maximum number of employees reached!\n");
        }
    }
    
    void assignShift(Schedule *schedule, int day, int shift) {
        if (day >= 1 && day <= MAX_DAYS) {
            schedule->schedule[day - 1] = shift;
            printf("Shift assigned successfully!\n");
        } else {
            printf("Invalid day!\n");
        }
    }
    
    void displaySchedule(Schedule schedule) {
        printf("Schedule:\n");
        for (int i = 0; i < MAX_DAYS; i++) {
            printf("Day %d: Shift %d\n", i + 1, schedule.schedule[i]);
        }
    }
    
    int main() {
        Schedule schedule;
        schedule.numEmployees = 0;
    
        Employee employee1 = {"John Doe", {1, 1, 1990}};
        Employee employee2 = {"Jane Smith", {10, 3, 1985}};
        
        addEmployee(&schedule, employee1);
        addEmployee(&schedule, employee2);
        
        assignShift(&schedule, 1, 1);
        assignShift(&schedule, 2, 2);
        assignShift(&schedule, 3, 1);
        
        displaySchedule(schedule);
    
        return 0;
    }
    

    上述代码中定义了三个结构体:Date表示日期,Employee表示员工,Schedule表示排班表。通过addEmployee函数可以添加员工,通过assignShift函数可以为指定日期分配班次,通过displaySchedule函数可以显示排班表。在主函数中,首先创建一个排班表对象schedule,然后添加两个员工,分配三个日期的班次,并最后显示排班表。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    编写排班表的C语言代码可以根据具体需求的复杂程度而有所不同。下面是一个简单的示例代码,用来实现一个基本的排班表功能:

    #include <stdio.h>
    #include <string.h>
    
    #define MAX_EMPLOYEES 100 // 最大员工数量
    #define MAX_DAYS 7 // 一周的天数
    
    // 员工结构体
    typedef struct {
        char name[50]; // 姓名
        int schedule[MAX_DAYS]; // 排班表
    } Employee;
    
    // 初始化排班表
    void initSchedule(Employee* employee) {
        for (int i = 0; i < MAX_DAYS; i++) {
            employee->schedule[i] = 0;
        }
    }
    
    // 添加员工
    void addEmployee(Employee* employees, int* count) {
        if (*count >= MAX_EMPLOYEES) {
            printf("员工数量已达上限!\n");
            return;
        }
        
        Employee newEmployee;
        printf("请输入员工姓名:");
        scanf("%s", newEmployee.name);
        
        initSchedule(&newEmployee); // 初始化排班表
        
        employees[*count] = newEmployee;
        (*count)++;
        
        printf("员工添加成功!\n");
    }
    
    // 编辑排班表
    void editSchedule(Employee* employee) {
        int day;
        int shift;
        
        printf("请输入要编辑的日期(1-7):");
        scanf("%d", &day);
        
        if (day < 1 || day > MAX_DAYS) {
            printf("输入的日期无效!\n");
            return;
        }
        
        printf("请输入要编辑的班次(1-3):");
        scanf("%d", &shift);
        
        if (shift < 1 || shift > 3) {
            printf("输入的班次无效!\n");
            return;
        }
        
        employee->schedule[day - 1] = shift;
        
        printf("排班表编辑成功!\n");
    }
    
    // 打印排班表
    void printSchedule(Employee* employees, int count) {
        printf("姓名\t周一\t周二\t周三\t周四\t周五\t周六\t周日\n");
        
        for (int i = 0; i < count; i++) {
            printf("%s\t", employees[i].name);
            
            for (int j = 0; j < MAX_DAYS; j++) {
                printf("%d\t", employees[i].schedule[j]);
            }
            
            printf("\n");
        }
    }
    
    int main() {
        Employee employees[MAX_EMPLOYEES];
        int employeeCount = 0;
        int choice;
        
        while (1) {
            printf("1. 添加员工\n");
            printf("2. 编辑排班表\n");
            printf("3. 打印排班表\n");
            printf("4. 退出程序\n");
            printf("请输入选择:");
            scanf("%d", &choice);
            
            switch (choice) {
                case 1:
                    addEmployee(employees, &employeeCount);
                    break;
                case 2:
                    if (employeeCount == 0) {
                        printf("还没有添加员工!\n");
                    } else {
                        char name[50];
                        printf("请输入员工姓名:");
                        scanf("%s", name);
                        
                        for (int i = 0; i < employeeCount; i++) {
                            if (strcmp(name, employees[i].name) == 0) {
                                editSchedule(&employees[i]);
                                break;
                            }
                            
                            if (i == employeeCount - 1) {
                                printf("找不到该员工!\n");
                            }
                        }
                    }
                    break;
                case 3:
                    if (employeeCount == 0) {
                        printf("还没有添加员工!\n");
                    } else {
                        printSchedule(employees, employeeCount);
                    }
                    break;
                case 4:
                    printf("程序退出!\n");
                    return 0;
                default:
                    printf("选择无效!\n");
                    break;
            }
        }
    }
    

    上述代码实现了一个简单的排班表功能,具体功能包括:

    1. 添加员工:可以输入员工姓名,系统会为该员工初始化一个空的排班表;
    2. 编辑排班表:根据输入的员工姓名和日期、班次,修改相应的排班表;
    3. 打印排班表:将所有员工的姓名和排班表打印出来;
    4. 退出程序:退出排班表程序运行。

    以上只是一个简单的排班表代码示例,具体根据需求的复杂程度,可以在此基础上进行进一步的扩展和优化。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部