该程序使用结构体数组存储职工信息。结构体定义如下:

typedef struct
{
    char number[10];      // 职工编号
    char name[20];        // 姓名
    char sex[10];         // 性别
    char birthday[20];    // 出生年月
    char date[20];        // 入职年月
    char degree[20];      // 学历
    char position[20];    // 职务
    char add[50];         // 地址
    char tel[20];         // 电话
} employee;

该结构体数组的特点是可以存储多个职工的信息,并且每个职工的信息包括职工编号、姓名、性别、出生年月、入职年月、学历、职务、地址和电话等。

在程序中,通过使用结构体数组来存储职工信息,可以方便地对职工信息进行录入、显示、查询、修改和删除等操作。同时,结构体数组的特点还包括可以对职工信息进行排序。

以下是程序代码的示例,其中包含了职工信息管理系统的核心功能,例如录入、显示、查询、修改、删除和排序:

void modify()
{
    int num, flag, i, j;
    char a[10];                                       
    char change[20];        
    char c;
    read(); 
    while (1) 
    {
        flag = 0;
        printf("\n请输入需要修改的职工编号:"); 
        scanf("%s", &a); 
        for (i = 0; i < n; i++) 
        {
            if (strcmp(em[i].number, a) == 0 )
            {
                j = i;
                flag = 1;
            }
        }
        if (!flag)
        {
            printf("\n\n!!!无此员工的信息!!!\n\n");
            printf("\n\n是否继续修改(Y/N):"); 
            scanf("%c", &c); 
            if(c == 'N' || c == 'n') break;
        }
        printf("\n");
        printf("+-------------------------------+\
");
		printf("|    职 工 信 息 修 改 系 统    |\
");
        printf("|           1.修改姓名          |\
"); 
        printf("|           2.修改学历          |\
"); 
        printf("|           3.修改职务          |\
");
        printf("|           4.修改地址          |\
");
        printf("|           5.修改出生年月      |\
");
        printf("|           6.修改入职年月      |\
");
        printf("|           7.修改电话          |\
");
        printf("|           8.修改职工编号      |\
");
        printf("|    输入其他任意键退出本模块   |\
");
        printf("+-------------------------------+\
");
        printf("请选择操作:");
        scanf("%d", &num);
        if (num < 1 || num > 8)
        {
            printf("!!!操作错误!!!\n\n");
            continue;
        }
        system("cls");    // 清屏
        printf("\n请输入修改后的信息:");
        scanf("%s", &change); 
        switch (num)
        {
            case 1 : strcpy(em[j].name, change);
				 break;
            case 2 : strcpy(em[j].degree, change);
				 break;
            case 3 : strcpy(em[j].position, change);
				 break;
            case 4 : strcpy(em[j].add, change);
				 break;
            case 5 : strcpy(em[j].birthday, change);
				 break;
            case 6 : strcpy(em[j].date, change);
				 break;
            case 7 : strcpy(em[j].tel, change);
				 break;
		case 8 : strcpy(em[j].number, change);
				 break;
        }
        printf("\n\n是否继续修改?(Y/N):"); 
        scanf("%*c%c", &c);
        if (c == 'N' || c == 'n')
			break;
		continue;
    }
    write();
}

//  删除函数

void Delete()    
{
    char a[10];           
    int i, j, flag;          
    char c;
    read(); 
    while (1) 
    {
        system("cls");    // 清屏
        flag = 0;
        printf("\n请输入需要删除的职工编号:");
        scanf("%s", &a);
        for (i = 0; i < n; i++)
        {
            if (strcmp(em[i].number, a) == 0)
            {
                n--;
                flag = 1;
                for (j = i; j < n; j++)
                {
                    em[j] = em[j + 1];
                } 
                break;
            }
        }
        if (!flag)
		    printf("\n\n!!!无此员工信息!!!\n\n");
        else
		    printf("\n\n!!!删除成功!!!\n");
        printf("\n\n是否继续删除?(Y/N):");
        scanf("%c", &c);
        if (c == 'N' || c == 'n') break;
        continue;
    }
    write();
}

//输出函数 
  
void show(employee *head)
{
	employee *p = head;
	int j = 1;
	int i;
	char c;
	while (p != NULL)
	{
		for (i = 1; i < n; i++)
		{
			printf("%d. %s  %s  %s  %s  %s  %s  %s  %s  %s\n",j++,p->number,p->name ,p->sex ,p->birthday,
												p->date, p->degree, p->position, p->add, p->tel);
		    p = p->next;
	    }
	}
}

//交换

void exchange(char *p,char *q) 
{
	read();
	char c[20];
    strcpy(c, p);
    strcpy(p, q);
    strcpy(q, c);
}

//排序

void sort() 
{
	char ch;
	char c;
    employee *p, *q, *r;
    read() ;
    while (1)
	{
		printf("按职工编号从小到大的排序信息如下:\n");
        p = head;
        while (p->next != NULL)   //选择排序 
		{
			q = p->next;
            r = p;
            if (r != p)      //交换信息
			{
				exchange(r->number, p->number);
                exchange(r->name, p->name);
                exchange(r->sex, p->sex);
				exchange(r->birthday, p->birthday);
				exchange(r->date, p->date);
                exchange(r->degree, p->degree);
                exchange(r->position, p->position);               
                exchange(r->add, p->add);
                exchange(r->tel, p->tel);
			}
		}
        show();
        system("pause");
	}
}

//菜单

void menu()
{
	printf("*************************\
"); 
    printf("*      ○主菜单 ○      *\n");
	printf("*    0.退 出 菜 单      *\n");
    printf("*    1.录入职工信息     *\n"); 
    printf("*    2.显示职工信息     *\n");
    printf("*    3.查询职工信息     *\n");
    printf("*    4.修改职工信息     *\n");
    printf("*    5.删除职工信息     *\n");
    printf("*    6.职工信息排序     *\n");
    printf("*************************\
"); 
    printf("请输入操作: ");
}

通过上述代码示例,我们可以了解到C语言职工信息管理系统的基本实现方式,并可以进一步扩展和完善系统功能,以满足更复杂的需求。

C语言职工信息管理系统:添加、查询、修改、删除、排序功能实现

原文地址: https://www.cveoy.top/t/topic/fwXR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录