C语言实现职工管理系统完整攻略
1. 概述
C语言实现职工管理系统的主要目的是建立一个能够简单快速地管理职工信息的系统。该系统可以实现添加、删除、修改、查询职工信息等功能。
2. 设计思路
2.1 数据结构设计
我们可以使用如下的数据结构来存储职工信息:
typedef struct Employee
{
int num; // 职工编号
char name[20]; // 职工姓名
int age; // 职工年龄
char sex[5]; // 职工性别
float salary; // 职工工资
} Employee;
这个结构体定义了职工的一些基本信息,包括编号、姓名、年龄、性别和工资等。
2.2 界面设计
我们可以使用控制台命令行来实现职工管理系统的界面。通过在控制台输出不同的信息,来实现职工管理系统的各项功能。
3. 实现过程
3.1 主函数
在主函数中,我们可以首先定义一个数组来存储职工信息,然后通过读取文件的方式初始化数组。接下来,根据用户的选择,调用不同的函数来处理用户的输入。
示例代码:
int main()
{
Employee emps[1000];
int n = readFromFile("data.txt", emps);
int choice;
do
{
printf("===============\n");
printf("请选择操作:\n");
printf("1. 添加职工信息\n");
printf("2. 删除职工信息\n");
printf("3. 修改职工信息\n");
printf("4. 查询职工信息\n");
printf("5. 退出系统\n");
printf("===============\n");
scanf("%d", &choice);
switch (choice)
{
case 1:
addEmployee(emps, &n);
break;
case 2:
deleteEmployee(emps, &n);
break;
case 3:
modifyEmployee(emps, &n);
break;
case 4:
queryEmployee(emps, n);
break;
case 5:
printf("谢谢使用,下次再见!\n");
return 0;
default:
printf("请输入正确的数字(1-5):\n");
break;
}
} while (1);
}
3.2 添加职工信息
添加职工信息需要输入职工的基本信息,然后将该信息添加到数组中。
示例代码:
void addEmployee(Employee emps[], int *n)
{
printf("请输入职工编号:\n");
scanf("%d", &emps[*n].num);
printf("请输入职工姓名:\n");
scanf("%s", emps[*n].name);
printf("请输入职工年龄:\n");
scanf("%d", &emps[*n].age);
printf("请输入职工性别:\n");
scanf("%s", emps[*n].sex);
printf("请输入职工工资:\n");
scanf("%f", &emps[*n].salary);
(*n)++;
printf("添加成功!\n");
}
3.3 删除职工信息
删除职工信息需要输入职工的编号,然后在数组中查找该编号并删除该职工信息。
示例代码:
void deleteEmployee(Employee emps[], int *n)
{
int num;
printf("请输入需要删除的职工编号:\n");
scanf("%d", &num);
int i;
for (i = 0; i < *n; i++)
{
if (emps[i].num == num)
{
int j;
for (j = i; j < *n - 1; j++)
{
emps[j] = emps[j + 1];
}
(*n)--;
printf("删除成功!\n");
return;
}
}
printf("职工编号不存在!\n");
}
3.4 修改职工信息
修改职工信息需要输入职工的编号,然后在数组中查找该编号并修改该职工信息的相关内容。
示例代码:
void modifyEmployee(Employee emps[], int *n)
{
int num;
printf("请输入需要修改的职工编号:\n");
scanf("%d", &num);
int i;
for (i = 0; i < *n; i++)
{
if (emps[i].num == num)
{
printf("请输入职工姓名(原姓名:%s):\n", emps[i].name);
scanf("%s", emps[i].name);
printf("请输入职工年龄(原年龄:%d):\n", emps[i].age);
scanf("%d", &emps[i].age);
printf("请输入职工性别(原性别:%s):\n", emps[i].sex);
scanf("%s", emps[i].sex);
printf("请输入职工工资(原工资:%.2f):\n", emps[i].salary);
scanf("%f", &emps[i].salary);
printf("修改成功!\n");
return;
}
}
printf("职工编号不存在!\n");
}
3.5 查询职工信息
查询职工信息可以按照职工编号或者职工姓名来查询。
示例代码:
void queryEmployee(Employee emps[], int n)
{
int choice;
printf("请选择查询方式:\n");
printf("1. 按照职工编号查询\n");
printf("2. 按照职工姓名查询\n");
scanf("%d", &choice);
if (choice == 1)
{
int num;
printf("请输入职工编号:\n");
scanf("%d", &num);
int i;
for (i = 0; i < n; i++)
{
if (emps[i].num == num)
{
printf("职工编号:%d 姓名:%s 年龄:%d 性别:%s 工资:%.2f\n",
emps[i].num, emps[i].name, emps[i].age, emps[i].sex, emps[i].salary);
return;
}
}
printf("职工编号不存在!\n");
}
else if (choice == 2)
{
char name[20];
printf("请输入职工姓名:\n");
scanf("%s", name);
int i;
for (i = 0; i < n; i++)
{
if (strcmp(emps[i].name, name) == 0)
{
printf("职工编号:%d 姓名:%s 年龄:%d 性别:%s 工资:%.2f\n",
emps[i].num, emps[i].name, emps[i].age, emps[i].sex, emps[i].salary);
}
}
}
else
{
printf("请输入正确的数字(1-2):\n");
}
}
3.6 读写文件
程序退出之前需要将数组中的数据写入文件,以便下次启动程序时能够继续使用。
示例代码:
int readFromFile(char *filename, Employee emps[])
{
FILE *fp = fopen(filename, "r");
if (fp == NULL)
{
return 0;
}
int n = 0;
while (!feof(fp))
{
fscanf(fp, "%d %s %d %s %f", &emps[n].num, emps[n].name, &emps[n].age, emps[n].sex, &emps[n].salary);
n++;
}
fclose(fp);
return n;
}
void writeToFile(char *filename, Employee emps[], int n)
{
FILE *fp = fopen(filename, "w");
int i;
for (i = 0; i < n; i++)
{
fprintf(fp, "%d %s %d %s %f\n", emps[i].num, emps[i].name, emps[i].age, emps[i].sex, emps[i].salary);
}
fclose(fp);
}
4. 总结
本文主要介绍了如何使用C语言实现职工管理系统,包括数据结构设计、界面设计和主要功能的实现过程。通过这个例子,我们可以更好地理解C语言的基本语法和编程思路。在开发过程中,也可以根据实际情况进行修改和扩展,让程序更加实用和高效。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现职工管理系统 - Python技术站