基于C语言开发一个职工管理系统

开发一个基本的职工管理系统(Employee Management System)使用C语言可以包括多个功能,如添加职工信息、显示所有职工信息、按姓名查找职工、删除职工信息以及修改职工信息等。这里,我将为你提供一个简单的框架和几个关键功能的实现。

首先,定义职工的数据结构,然后实现各个功能。

1. 定义职工的数据结构

c 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_EMP 100
#define NAME_LEN 50

typedef struct {
    int id;
    char name[NAME_LEN];
    int age;
    float salary;
} Employee;

Employee employees[MAX_EMP];
int empCount = 0;

2. 添加职工信息

c 复制代码
void addEmployee() {
    if (empCount >= MAX_EMP) {
        printf("Error: Reached maximum employee count\n");
        return;
    }

    printf("Enter Employee ID: ");
    scanf("%d", &employees[empCount].id);
    printf("Enter Employee Name: ");
    scanf(" %[^\n]", employees[empCount].name); // 注意前面有空格,以忽略之前留下的换行符
    printf("Enter Employee Age: ");
    scanf("%d", &employees[empCount].age);
    printf("Enter Employee Salary: ");
    scanf("%f", &employees[empCount].salary);

    empCount++;
    printf("Employee added successfully!\n");
}

3. 显示所有职工信息

c 复制代码
void displayEmployees() {
    if (empCount == 0) {
        printf("No employees to display.\n");
        return;
    }

    printf("Employee List:\n");
    for (int i = 0; i < empCount; i++) {
        printf("ID: %d, Name: %s, Age: %d, Salary: %.2f\n", 
               employees[i].id, employees[i].name, employees[i].age, employees[i].salary);
    }
}

4. 主函数和菜单

c 复制代码
int main() {
    int choice;

    while (1) {
        printf("\nEmployee Management System\n");
        printf("1. Add Employee\n");
        printf("2. Display All Employees\n");
        // 可以在这里添加更多选项,如删除、查找和修改
        printf("0. Exit\n");
        printf("Enter your choice: ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addEmployee();
                break;
            case 2:
                displayEmployees();
                break;
            case 0:
                printf("Exiting...\n");
                exit(0);
            default:
                printf("Invalid choice. Please try again.\n");
        }
    }

    return 0;
}

注意

  • 这个示例使用了静态数组来存储职工信息,这在实际应用中可能不是最佳选择,因为一旦达到数组的最大容量,就无法再添加更多职工。更灵活的解决方案是使用链表或动态内存分配。
  • 菜单中的其他功能(如删除、查找和修改职工信息)可以通过添加新的函数来实现,并在主函数的switch语句中调用这些函数。
  • 输入处理中需要特别注意,如使用scanf(" %[^\n]", ...)来读取字符串(注意%前的空格),以避免由于之前输入的换行符导致的问题。
  • 这是一个非常基础的示例,实际应用中可能需要考虑更多的错误处理和边界情况。
相关推荐
代码or搬砖8 分钟前
Collections和Arrays
java·开发语言
吴名氏.19 分钟前
电子书《Java程序设计与应用开发(第3版)》
java·开发语言·java程序设计与应用开发
于慨31 分钟前
dayjs处理时区问题、前端时区问题
开发语言·前端·javascript
listhi52040 分钟前
基于MATLAB的LTE系统仿真实现
开发语言·matlab
ss2731 小时前
ScheduledThreadPoolExecutor异常处理
java·开发语言
ejjdhdjdjdjdjjsl1 小时前
Winform初步认识
开发语言·javascript·ecmascript
六毛的毛1 小时前
比较含退格的字符串
开发语言·python·leetcode
xingzhemengyou11 小时前
Python GUI之tkinter-基础控件
开发语言·python
挖矿大亨1 小时前
C++中深拷贝与浅拷贝的原理
开发语言·c++·算法
崇山峻岭之间1 小时前
Matlab学习记录16
开发语言·学习·matlab