C语言职工信息管理系统:添加、查询、修改、删除、排序功能实现
该程序使用结构体数组存储职工信息。结构体定义如下:
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语言职工信息管理系统的基本实现方式,并可以进一步扩展和完善系统功能,以满足更复杂的需求。
原文地址: https://www.cveoy.top/t/topic/fwXR 著作权归作者所有。请勿转载和采集!