基于C语言的小型企业员工信息管理系统开发

 选题

本次是使用大学常用VC6.0

基于C 语言的小型企业员工信息管理系统开发

设计要求:

1.利用结构体设计图书信息的数据结构,包括:姓名、性别、工号、年龄、学历、岗位、 电话等。

2. 系统具有录入、查询、显示、删除、排序、保存等基本功能。

3.系统各功能模块采用函数的形式来实现,

4. 系统的所有数据均以数据文件的形式保存,以便于系统的管理与维护。

5. 按要求撰写设计报告。正文部分包括设计题目与要求、系统功能模块划分、流程图、 完整程序代码、结果及分析。要求文档条理清晰,语言流畅,排版规范。 

代码 

代码如下: 

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
  
#define MAX_EMPLOYEES 100  
  
struct Employee {  
    char name[50];  
    char gender[10];  
    int id;  
    int age;  
    char education[20];  
    char position[30];  
    char phone[15];  
};  
  
struct Employee employees[MAX_EMPLOYEES];  
int num_employees = 0;  
  
void input_employee() {  
    struct Employee new_employee;  
    printf("输入姓名: ");  
    scanf("%s", new_employee.name);  
    printf("输入性别 (男/女): ");  
    scanf("%s", new_employee.gender);  
    printf("输入工号: ");  
    scanf("%d", &new_employee.id);  
    printf("输入年龄: ");  
    scanf("%d", &new_employee.age);  
    printf("输入学历: ");  
    scanf("%s", new_employee.education);  
    printf("输入岗位: ");  
    scanf("%s", new_employee.position);  
    printf("输入电话号码: ");  
    scanf("%s", new_employee.phone);  
    employees[num_employees++] = new_employee;  
}  
  
void query_employee() {  
    char name[50];
	int i;
    printf("输入名称进行查询: ");  
    scanf("%s", name);  
    for (i = 0; i < num_employees; i++) {  
        if (strcmp(employees[i].name, name) == 0) {  
            printf("工号: %d\n", employees[i].id);  
            printf("年龄: %d\n", employees[i].age);  
            printf("学历: %s\n", employees[i].education);  
            printf("岗位: %s\n", employees[i].position);  
            printf("电话号码: %s\n", employees[i].phone);  
            return;  
        }  
    }  
    printf("Employee not found.\n");  
}  
  
void display_employees() {
	int i;
    for (i = 0; i < num_employees; i++) {  
        printf("姓名: %s\n", employees[i].name);  
        printf("工号: %d\n", employees[i].id);  
        printf("年龄: %d\n", employees[i].age);  
        printf("学历: %s\n", employees[i].education);  
        printf("岗位: %s\n", employees[i].position);  
        printf("电话: %s\n", employees[i].phone);  
        printf("\n");  
    }  
}  
  
void delete_employee() {  
    char name[50];  
	int i,j;
    printf("输入需要删除的员工姓名: ");  
    scanf("%s", name);  
    for (i = 0; i < num_employees; i++) {  
        if (strcmp(employees[i].name, name) == 0) {  
           
			for (j = i; j < num_employees - 1; j++) {  
                employees[j] = employees[j + 1];  
            }  
            num_employees--;  
            printf("Employee deleted.\n");  
            return;  
        }  
    }  
    printf("Employee not found.\n");  
}  
  
void sort_employees() {  
    int i, j;  
    char sort_by[20];  
    printf("\n输入要排序的字段(姓名、工号、年龄、学历、岗位、电话): ");  
    scanf("%s", sort_by);  
    for (i = 0; i < num_employees - 1; i++) {  
        for (j = i + 1; j < num_employees; j++) {  
            if (strcmp(sort_by, "姓名") == 0) {  
                if (strcmp(employees[i].name, employees[j].name) > 0) {  
                    struct Employee temp = employees[i];  
                    employees[i] = employees[j];  
                    employees[j] = temp;  
                }  
            } else if (strcmp(sort_by, "工号") == 0) {  
                if (employees[i].id > employees[j].id) {  
                    struct Employee temp = employees[i];  
                    employees[i] = employees[j];  
                    employees[j] = temp;  
                }  
            } else if (strcmp(sort_by, "年龄") == 0) {  
                if (employees[i].age > employees[j].age) {  
                    struct Employee temp = employees[i];  
                    employees[i] = employees[j];  
                    employees[j] = temp;  
                }  
            } else if (strcmp(sort_by, "学历") == 0) {  
                if (strcmp(employees[i].education, employees[j].education) > 0) {  
                    struct Employee temp = employees[i];  
                    employees[i] = employees[j];  
                    employees[j] = temp;  
                }  
            } else if (strcmp(sort_by, "岗位") == 0) {  
                if (strcmp(employees[i].position, employees[j].position) > 0) {  
                    struct Employee temp = employees[i];  
                    employees[i] = employees[j];  
                    employees[j] = temp;  
                }  
            } else if (strcmp(sort_by, "电话") == 0) {  
                if (strcmp(employees[i].phone, employees[j].phone) > 0) {  
                    struct Employee temp = employees[i];  
                    employees[i] = employees[j];  
                    employees[j] = temp;  
                }  
            } else {  
                printf("无效.\n");  
                return;  
            }  
        }  
    }  
}
void save_employees() 
{
	int i;
	FILE *file = fopen("employees.txt", "w");
	if (file == NULL)
	{
		printf("无法打开文件.\n");
		return;
	}
	for ( i = 0; i < num_employees; i++) 
	{
		fprintf(file, "姓名: %s\n", employees[i].name);
		fprintf(file, "工号: %d\n", employees[i].id);
		fprintf(file, "年龄: %d\n", employees[i].age);
		fprintf(file, "学历: %s\n", employees[i].education);
		fprintf(file, "岗位: %s\n", employees[i].position);
		fprintf(file, "电话: %s\n", employees[i].phone);
		fprintf(file, "\n");
	}
	fclose(file);
	printf("数据已保存到文件.\n");
}

int main()
{
	int choice;
	do 
	{
		printf("\n====员工信息管理系统====\n");
		printf("1. 输入员工信息\n");
		printf("2. 查询员工\n");
		printf("3. 显示员工\n");
		printf("4. 删除员工信息\n");
		printf("5. 对员工进行排序\n");
		printf("6. 将员工保存到文件中\n");
		printf("7. Exit\n");
		printf("选择: ");
		scanf("%d", &choice);
		switch (choice)
		{
			case 1:
			input_employee();
			break;
			case 2:
			query_employee();
			break;
			case 3:
			display_employees();
			break;
			case 4:
			delete_employee();
			break;
			case 5:
			sort_employees();
			break;
			case 6:
			save_employees();
			break;
			case 7:
			printf("Exiting...\n");
			break;
			default:
			printf("Invalid choice.\n");
		}
	} 
	while (choice != 7);
return 0;
}

功能测试

 

 根据提示输入员工信息,下图中输入了工号为1 的员工信息,更多的输入过程省略

 

 然后测试显示所有信息功能,可以正常输出

 

 剩下的你们自己测试吧!

而在保存文件后,可以看见同一目录下出现了一名为employees.txt的数据文件

功能 

此系统功能包括:

  • 录入功能:允许用户输入新员工的详细信息,并将其添加到员工数组中。
  • 查询功能:允许用户根据员工的工号或姓名查询其详细信息。
  • 显示功能:显示当前存储在系统中的所有员工的详细信息。
  • 删除功能:允许用户根据员工的工号或姓名删除其信息。
  • 排序功能:允许用户根据员工的姓名或年龄对员工信息进行排序。
  • 保存功能:将当前存储在系统中的所有员工信息保存到文件中,以便于将来使用。
  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值