C语言项目--企业员工管理系统(附带全套源代码)

项目的目的

企业员工管理系统主要是针对企业员工的基本信息进行增、删、改、查的相关操作,以便用户使用本管理系统时可以快速对员工的信息进行管理。

项目应用技术

1.结构体和指针

使用了结构体 staff 来表示员工信息,通过指针来进行动态内存分配和管理,确保能够在运行时根据需要创建新的员工信息节点。

2.内存分配和释放

通过 malloc 函数动态地为新的员工信息节点分配内存空间,以便存储输入的员工信息。这样做可以在程序运行时灵活地分配所需的内存。

3.用户输入和数据存储

通过 scanf 函数实现了对用户输入的员工信息的获取,包括工号、职务、姓名、性别、年龄、文化程度、工资、办公电话、家庭电话、手机号码、微信号码和家庭住址等信息,并将其存储在新创建的员工信息节点中。

4.链表操作

通过将新的员工信息节点添加到员工信息链表的末尾,实现了一个简单的链表操作,确保了员工信息的顺序存储和管理。

项目的构建思路

一、定义员工信息

使用 typedef struct 定义了一个名为 staff 的结构体类型,用于表示员工的信息。并且通过指针将这些信息链接成链表,以便进行复杂的数据操作和管理。

// 员工信息
typedef struct staff 
{
    int num; // 工号
    char duty[10]; // 职务
    char name[15]; // 姓名
    char sex[5]; // 性别
    int age; // 年龄
    char edu[10]; // 文化程度
    int salary; // 工资
    char tel_office[13]; // 办公电话
    char tel_home[13]; // 家庭电话
    char mobile[13]; // 手机号码
    char WeChat[12]; // 微信号码
    char address[31]; // 家庭住址
    struct staff* next;
} staff;

二、链表初始化及声明函数

//声明子函数
void addstaff(staff* emp);
void namedel(staff* emp);
void numdel(staff* emp);
void change(staff* emp);
void namecha(staff* emp);
void numcha(staff* emp);
void printstaff(staff* emp);
void namefind(staff* emp);
void numfind(staff* emp);
void display(staff* emp);
// 初始化员工信息
staff* Init() 
{
    staff* emp = (staff*)malloc(sizeof(staff));
    emp->next = NULL;
    return emp;
}
  • 函数 Init 用于创建并初始化一个新的 staff 结构体实例。
  • 通过 malloc 函数在堆上分配内存,确保灵活地管理内存使用。
  • 将新节点的 next 指针设置为1.结构体和指针。

三、输入员工信息

// 输入员工信息
void addstaff(staff* emp) 
{
    staff* node = (staff*)malloc(sizeof(staff));
    printf("请输入员工信息\n");
    printf("工号:");
    scanf("%d", &node->num);
    printf("职务:");
    scanf("%s", node->duty);
    printf("姓名:");
    scanf("%s", node->name);
    printf("性别:");
    scanf("%s", node->sex);
    printf("年龄:");
    scanf("%d", &node->age);
    printf("文化程度:");
    scanf("%s", node->edu);
    printf("工资:");
    scanf("%d", &node->salary);
    printf("办公电话:");
    scanf("%s", node->tel_office);
    printf("家庭电话:");
    scanf("%s", node->tel_home);
    printf("手机号码:");
    scanf("%s", node->mobile);
    printf("微信号码:");
    scanf("%s", node->WeChat);
    printf("家庭住址:");
    scanf("%s", node->address);

    node->next = NULL;
    
    while (emp->next != NULL) 
	{
        emp = emp->next;
    }
    emp->next = node;
}

四、删除员工信息

//删除员工信息
//按姓名删除 
void namedel(staff* emp) 
{
    char name1[15];
    printf("请输入你想要删除员工的姓名:"); 
    scanf("%s", name1);

    staff* temp = emp->next; // 要删除结点
    staff* pre = emp;//要删除结点的上一个结点
    while (temp != NULL) 
    {
        if (strcmp(temp->name, name1) == 0) 
        {
        	pre=temp->next;
        	free(temp);
            break;
        }
        temp = temp->next;
        pre = pre->next;
    }
}
//按工号删除 
void numdel(staff* emp)
{
	int a;
	printf("请输入你要删除员工的工号:");
	scanf("%d",&a);
	staff* temp = emp->next; // 要删除结点 
	staff* pre = emp;//要删除结点的上一个结点 
    while (temp != NULL) 
    {
        if (temp->num==a) 
        {
            pre=temp->next;
            free(temp);
            break;
        }
        temp = temp->next;
        pre = pre->next;
    }
}
  • 使用 strcmp 函数比较字符串,判断员工的姓名是否与输入的姓名相匹配,实现按姓名删除员工信息的功能。
  • 遍历员工信息链表,查找要删除的员工节点,并将其从链表中移除。通过记录要删除节点的前一个节点(pre)和要删除节点本身(temp)来实现删除操作。
  • 使用 free 函数释放要删除的员工节点的内存空间,避免内存泄漏问题。

五、修改员工信息

//修改员工信息
void change(staff* emp)
{
	staff* node = emp;
	printf("请输入员工信息\n");
    printf("工号:");
    scanf("%d", &node->num);
    printf("职务:");
    scanf("%s", node->duty);
    printf("姓名:");
    scanf("%s", node->name);
    printf("性别:");
    scanf("%s", node->sex);
    printf("年龄:");
    scanf("%d", &node->age);
    printf("文化程度:");
    scanf("%s", node->edu);
    printf("工资:");
    scanf("%d", &node->salary);
    printf("办公电话:");
    scanf("%s", node->tel_office);
    printf("家庭电话:");
    scanf("%s", node->tel_home);
    printf("手机号码:");
    scanf("%s", node->mobile);
    printf("微信号码:");
    scanf("%s", node->WeChat);
    printf("家庭住址:");
    scanf("%s", node->address);
}
//按姓名修改 
void namecha(staff* emp) 
{
    char name1[15];
    printf("请输入你想要修改员工的姓名:"); 
    scanf("%s", name1);

    staff* temp = emp->next; // 要修改结点
    while (temp != NULL) 
    {
        if (strcmp(temp->name, name1) == 0) 
        {
        	change(temp);
            break;
        }
        temp = temp->next;
    }
}

//按工号修改 
void numcha(staff* emp)
{
	int a;
	printf("请输入你要修改员工的工号:");
	scanf("%d",&a);
	staff* temp = emp->next; // 要修改结点 
    while (temp != NULL) 
    {
        if (temp->num==a) 
        {
            change(temp); 
            break;
        }
        temp = temp->next;
    }
}  
  • 修改员工信息 (change 函数):这个函数负责修改单个员工节点的信息。通过用户输入更新节点中的各项属性,包括工号、职务、姓名、性别、年龄、文化程度、工资、办公电话、家庭电话、手机号码、微信号码和家庭住址。

  • 按姓名修改员工信息 (namecha 函数):这个函数根据用户输入的姓名,遍历链表查找对应的员工节点。一旦找到匹配的节点,就调用 change 函数对该节点进行信息修改。

  • 按工号修改员工信息 (numcha 函数):这个函数根据用户输入的工号,遍历链表查找对应的员工节点。一旦找到匹配的节点,就调用 change 函数对该节点进行信息修改。

六、查找员工信息

//查询员工信息
//按姓名查找
void namefind(staff* emp) 
{
    char name1[15];
    printf("请输入你想要查找员工的姓名:"); 
    scanf("%s", name1);

    staff* temp = emp->next; // 跳过头节点
    int found = 0; // 标记是否找到对应的员工
    while (temp != NULL) 
    {
        if (strcmp(temp->name, name1) == 0) 
        {
        	printf("---------------------------------------------\n");
        	printf("     姓名:%s       信息如下:               \n",name1);
        	printf("---------------------------------------------\n");
            printstaff(temp);
            found = 1;
            break;
        }
        temp = temp->next;
    }
    if (found==0) 
    {
        printf("未找到姓名为%s的员工。\n", name1);
    }
}

//按工号查找
void numfind(staff* emp)
{
	int a;
	printf("请输入你要查找员工的工号:");
	scanf("%d",&a);
	staff* temp = emp->next; // 跳过头节点
    int found = 0; // 标记是否找到对应的员工
    while (temp != NULL) 
    {
        if (temp->num==a) 
        {
        	printf("---------------------------------------------\n");
        	printf("     工号:%d       信息如下:               \n",a);
        	printf("---------------------------------------------\n");
            printstaff(temp);
            found = 1;
            break;
        }
        temp = temp->next;
    }
    if (found==0) 
    {
        printf("未找到工号为%d的员工。\n", a);
    }
} 
  • 按姓名查找员工信息 (namefind 函数):该函数通过用户输入的姓名,遍历链表查找对应的员工节点。一旦找到匹配的节点,就调用 printstaff 函数打印该节点的信息,并设置 found 标志为 1。如果遍历完链表未找到匹配的员工节点,则输出未找到提示信息。

  • 按工号查找员工信息 (numfind 函数):该函数通过用户输入的工号,遍历链表查找对应的员工节点。一旦找到匹配的节点,就调用 printstaff 函数打印该节点的信息,并设置 found 标志为 1。如果遍历完链表未找到匹配的员工节点,则输出未找到提示信息。

七、显示所有员工信息

// 打印员工信息
void printstaff(staff* emp) 
{
    staff* current = emp; 
    while (current != NULL) 
	{
        printf("工号: %d\n", current->num);
        printf("职务: %s\n", current->duty);
        printf("姓名: %s\n", current->name);
        printf("性别: %s\n", current->sex);
        printf("年龄: %d\n", current->age);
        printf("文化程度: %s\n", current->edu);
        printf("工资: %d\n", current->salary);
        printf("办公电话: %s\n", current->tel_office);
        printf("家庭电话: %s\n", current->tel_home);
        printf("手机号码: %s\n", current->mobile);
        printf("微信号码: %s\n", current->WeChat);
        printf("家庭住址: %s\n", current->address);
        printf("\n");
        current = current->next;
    }
}
//显示所有员工信息
void display(staff* emp)
{ 
	printf("---------------------------------------------\n");
    printf("              所有员工信息如下:             \n");
    printf("---------------------------------------------\n");
	while(emp!=NULL)
	{
		printstaff(emp);
		emp=emp->next;
	}
}
  • 循环结构:使用 while 循环来遍历链表中的每个员工节点,直到链表结束。

  • 函数调用:调用 printstaff 函数,将每个员工节点的信息打印出来。

  • 显示所有员工信息 (display 函数):该函数通过遍历链表中的每个员工节点,调用 printstaff 函数将员工的信息打印出来。在打印之前,函数会先输出一个固定的格式化提示信息,以美化输出效果。

八、统计员工信息

//统计员工信息
void statistic(staff* emp)
{
	int mannum=0;
	int womannum=0;
	int sum=0;
	staff* temp=emp->next;//跳过头结点
	while(temp!=NULL)
	{
		if(strcmp(temp->sex,"男")==0)
		{
			mannum+=1;
		}
		else if(strcmp(temp->sex,"女")==0)
		{
			womannum+=1;
		}
		sum+=1;
		temp=temp->next;	
	}
	printf("             以下就是相关员工的统计信息:              \n");
    printf("-------------------------------------------------------\n");
    printf("    员工总数           男员工数            女员工数    \n");
    printf("       %d                 %d                   %d      \n",sum,mannum,womannum);
    printf("-------------------------------------------------------\n");
} 
  • 变量声明和初始化:使用整型变量 mannumwomannum 和 sum 分别记录男性员工数、女性员工数以及员工总数,并将它们初始化为 0。

  • 指针操作:使用指针 temp 遍历链表,从头结点的下一个节点开始,跳过头结点。

  • 循环结构:使用 while 循环遍历链表中的每个员工节点,直到链表的末尾。

  • 条件判断:使用 if 和 else if 语句,通过 strcmp 函数比较员工的性别,分别统计男性和女性员工。

  • 字符串处理:使用 strcmp 函数比较字符串,判断员工的性别是 "男" 还是 "女"。

  • 输入输出操作:使用 printf 函数输出统计结果,包括员工总数、男性员工数和女性员工数。

  • 统计员工信息 (statistic 函数):该函数遍历链表中的每个员工节点,根据员工的性别分别统计男性和女性员工数量,同时统计员工总数。在统计完成后,函数会输出相关统计信息,包括员工总数、男性员工数和女性员工数,并以格式化的方式显示。

九、菜单

// 菜单
void menu()
{
   printf("*******************************************************\n");
   printf("*           欢迎进入企业员工管理系统v1.0              *\n");
   printf("*******************************************************\n");
   printf("*               1.输入员工信息                        *\n"); 
   printf("*               2.查询员工信息                        *\n"); 
   printf("*               3.显示所有员工信息                    *\n"); 
   printf("*               4.修改员工信息                        *\n"); 
   printf("*               5.删除员工信息                        *\n"); 
   printf("*               6.统计员工信息                        *\n");
   printf("*               0.退出系统                            *\n"); 
   printf("*******************************************************\n"); 
}

十、主函数

// 主函数
int main() 
{
	staff* emp=Init();
	int num;
	while(1)
	{
		menu();
		
		printf("请选择您需要的操作(0-6):");
		scanf("%d",&num);
		if(num==1)
		{
			addstaff(emp);
		}
		else if(num==2)
		{
			printf("            查询员工信息:              \n");
			printf("----------------------------------------\n");
			printf("            1.按姓名查询                \n"); 
			printf("            2.按工号查询                \n");
			printf("            0.返回主菜单                \n"); 
			printf("----------------------------------------\n");
			int find;
			printf("请选择(0-2):");
			scanf("%d",&find);
			while(1)
			{
				if(find==1)
				{
					namefind(emp);
				}
				else if(find==2)
				{
					numfind(emp);
				}
				else if(find==0)
				{
					break;
				} 
				else
				{
					printf("输入数字有误!\n");
					break; 
				}
			}
			
		}
		else if(num==3)
		{
			display(emp);
		}
		else if(num==4)
		{
			printf("            修改员工信息:              \n");
			printf("----------------------------------------\n");
			printf("            1.按姓名修改                \n"); 
			printf("            2.按工号修改                \n");
			printf("            0.返回主菜单                \n"); 
			printf("----------------------------------------\n");
			int change;
			printf("请选择(0-2):");
			scanf("%d",&change);
			while(1)
			{
				if(change==1)
				{
					namecha(emp);
					break;
				}
				else if(change==2)
				{
					numcha(emp);
					break;
				} 
				else if(change==0)
				{
					break;
				}
				else
				{
					printf("输入数字有误!\n");
					break; 
				}
			}	
		}
		else if(num==5)
		{
			printf("            删除员工信息:              \n");
			printf("----------------------------------------\n");
			printf("            1.按姓名删除                \n"); 
			printf("            2.按工号删除                \n");
			printf("            0.返回主菜单                \n"); 
			printf("----------------------------------------\n");
			int del;
			printf("请选择(1-or-2):");
			scanf("%d",&del);
			while(1)
			{
				if(del==1)
				{
					namedel(emp);
				}
				else if(del==2)
				{
					numdel(emp);
				} 
				else if(del==0)
				{
					break;
				}
				else
				{
					printf("输入数字有误!\n");
					break;	
				}
			}
				
		}
		else if(num==6)
		{
			statistic(emp);
		}
		else if(num==7)
		{
			break;
		}
		else
		{
			printf("输入数字有误,请重新输入!!!");
		}	
	}
    return 0;
}
  • 函数调用:使用函数调用来实现不同操作,如 Init() 初始化员工链表,menu() 显示菜单,addstaff(emp) 添加员工,namefind(emp) 和 numfind(emp) 查询员工,display(emp) 显示员工信息,namecha(emp) 和 numcha(emp) 修改员工信息,namedel(emp) 和 numdel(emp) 删除员工信息,以及 statistic(emp) 统计员工信息。

  • 循环结构:使用 while(1) 实现主循环,使程序可以持续运行,直到用户选择退出。嵌套循环用于在某些操作(如查询、修改、删除)中提供进一步的选择,并在用户选择返回主菜单时退出当前循环。

  • 条件判断:使用 if-else if-else 语句根据用户输入的数字选择对应的操作,在查询、修改和删除操作中,通过二级菜单进一步细分操作类型,并使用条件判断执行具体操作。

  • 输入输出操作:使用 printf 函数向用户展示菜单和提示信息。使用 scanf 函数获取用户输入的操作选项和进一步的选择。

  • 指针操作:使用指针 emp 指向员工链表的头结点,通过传递这个指针来进行各种员工信息的操作。

项目全套代码展示

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
// 员工信息
typedef struct staff 
{
    int num; // 工号
    char duty[10]; // 职务
    char name[15]; // 姓名
    char sex[5]; // 性别
    int age; // 年龄
    char edu[10]; // 文化程度
    int salary; // 工资
    char tel_office[13]; // 办公电话
    char tel_home[13]; // 家庭电话
    char mobile[13]; // 手机号码
    char WeChat[12]; // 微信号码
    char address[31]; // 家庭住址
    struct staff* next;
} staff;
//声明子函数
void addstaff(staff* emp);
void namedel(staff* emp);
void numdel(staff* emp);
void change(staff* emp);
void namecha(staff* emp);
void numcha(staff* emp);
void printstaff(staff* emp);
void namefind(staff* emp);
void numfind(staff* emp);
void display(staff* emp);
// 功能函数
// 初始化员工信息
staff* Init() 
{
    staff* emp = (staff*)malloc(sizeof(staff));
    emp->next = NULL;
    return emp;
}

// 输入员工信息
void addstaff(staff* emp) 
{
    staff* node = (staff*)malloc(sizeof(staff));
    printf("请输入员工信息\n");
    printf("工号:");
    scanf("%d", &node->num);
    printf("职务:");
    scanf("%s", node->duty);
    printf("姓名:");
    scanf("%s", node->name);
    printf("性别:");
    scanf("%s", node->sex);
    printf("年龄:");
    scanf("%d", &node->age);
    printf("文化程度:");
    scanf("%s", node->edu);
    printf("工资:");
    scanf("%d", &node->salary);
    printf("办公电话:");
    scanf("%s", node->tel_office);
    printf("家庭电话:");
    scanf("%s", node->tel_home);
    printf("手机号码:");
    scanf("%s", node->mobile);
    printf("微信号码:");
    scanf("%s", node->WeChat);
    printf("家庭住址:");
    scanf("%s", node->address);

    node->next = NULL;
    
    while (emp->next != NULL) 
	{
        emp = emp->next;
    }
    emp->next = node;
}
//删除员工信息
//按姓名删除 
void namedel(staff* emp) 
{
    char name1[15];
    printf("请输入你想要删除员工的姓名:"); 
    scanf("%s", name1);

    staff* temp = emp->next; // 要删除结点
    staff* pre = emp;//要删除结点的上一个结点
    while (temp != NULL) 
    {
        if (strcmp(temp->name, name1) == 0) 
        {
        	pre=temp->next;
        	free(temp);
            break;
        }
        temp = temp->next;
        pre = pre->next;
    }
}
//按工号删除 
void numdel(staff* emp)
{
	int a;
	printf("请输入你要删除员工的工号:");
	scanf("%d",&a);
	staff* temp = emp->next; // 要删除结点 
	staff* pre = emp;//要删除结点的上一个结点 
    while (temp != NULL) 
    {
        if (temp->num==a) 
        {
            pre=temp->next;
            free(temp);
            break;
        }
        temp = temp->next;
        pre = pre->next;
    }
}
//修改员工信息
void change(staff* emp)
{
	staff* node = emp;
	printf("请输入员工信息\n");
    printf("工号:");
    scanf("%d", &node->num);
    printf("职务:");
    scanf("%s", node->duty);
    printf("姓名:");
    scanf("%s", node->name);
    printf("性别:");
    scanf("%s", node->sex);
    printf("年龄:");
    scanf("%d", &node->age);
    printf("文化程度:");
    scanf("%s", node->edu);
    printf("工资:");
    scanf("%d", &node->salary);
    printf("办公电话:");
    scanf("%s", node->tel_office);
    printf("家庭电话:");
    scanf("%s", node->tel_home);
    printf("手机号码:");
    scanf("%s", node->mobile);
    printf("微信号码:");
    scanf("%s", node->WeChat);
    printf("家庭住址:");
    scanf("%s", node->address);
}
//按姓名修改 
void namecha(staff* emp) 
{
    char name1[15];
    printf("请输入你想要修改员工的姓名:"); 
    scanf("%s", name1);

    staff* temp = emp->next; // 要修改结点
    while (temp != NULL) 
    {
        if (strcmp(temp->name, name1) == 0) 
        {
        	change(temp);
            break;
        }
        temp = temp->next;
    }
}

//按工号修改 
void numcha(staff* emp)
{
	int a;
	printf("请输入你要修改员工的工号:");
	scanf("%d",&a);
	staff* temp = emp->next; // 要修改结点 
    while (temp != NULL) 
    {
        if (temp->num==a) 
        {
            change(temp); 
            break;
        }
        temp = temp->next;
    }
}  

// 打印员工信息
void printstaff(staff* emp) 
{
    staff* current = emp; 
    while (current != NULL) 
	{
        printf("工号: %d\n", current->num);
        printf("职务: %s\n", current->duty);
        printf("姓名: %s\n", current->name);
        printf("性别: %s\n", current->sex);
        printf("年龄: %d\n", current->age);
        printf("文化程度: %s\n", current->edu);
        printf("工资: %d\n", current->salary);
        printf("办公电话: %s\n", current->tel_office);
        printf("家庭电话: %s\n", current->tel_home);
        printf("手机号码: %s\n", current->mobile);
        printf("微信号码: %s\n", current->WeChat);
        printf("家庭住址: %s\n", current->address);
        printf("\n");
        current = current->next;
    }
}

//查询员工信息
//按姓名查找
void namefind(staff* emp) 
{
    char name1[15];
    printf("请输入你想要查找员工的姓名:"); 
    scanf("%s", name1);

    staff* temp = emp->next; // 跳过头节点
    int found = 0; // 标记是否找到对应的员工
    while (temp != NULL) 
    {
        if (strcmp(temp->name, name1) == 0) 
        {
        	printf("---------------------------------------------\n");
        	printf("     姓名:%s       信息如下:               \n",name1);
        	printf("---------------------------------------------\n");
            printstaff(temp);
            found = 1;
            break;
        }
        temp = temp->next;
    }
    if (found==0) 
    {
        printf("未找到姓名为%s的员工。\n", name1);
    }
}

//按工号查找
void numfind(staff* emp)
{
	int a;
	printf("请输入你要查找员工的工号:");
	scanf("%d",&a);
	staff* temp = emp->next; // 跳过头节点
    int found = 0; // 标记是否找到对应的员工
    while (temp != NULL) 
    {
        if (temp->num==a) 
        {
        	printf("---------------------------------------------\n");
        	printf("     工号:%d       信息如下:               \n",a);
        	printf("---------------------------------------------\n");
            printstaff(temp);
            found = 1;
            break;
        }
        temp = temp->next;
    }
    if (found==0) 
    {
        printf("未找到工号为%d的员工。\n", a);
    }
} 

//显示所有员工信息
void display(staff* emp)
{ 
	printf("---------------------------------------------\n");
    printf("              所有员工信息如下:             \n");
    printf("---------------------------------------------\n");
	while(emp!=NULL)
	{
		printstaff(emp);
		emp=emp->next;
	}
}
 
//统计员工信息
void statistic(staff* emp)
{
	int mannum=0;
	int womannum=0;
	int sum=0;
	staff* temp=emp->next;//跳过头结点
	while(temp!=NULL)
	{
		if(strcmp(temp->sex,"男")==0)
		{
			mannum+=1;
		}
		else if(strcmp(temp->sex,"女")==0)
		{
			womannum+=1;
		}
		sum+=1;
		temp=temp->next;	
	}
	printf("             以下就是相关员工的统计信息:              \n");
    printf("-------------------------------------------------------\n");
    printf("    员工总数           男员工数            女员工数    \n");
    printf("       %d                 %d                   %d      \n",sum,mannum,womannum);
    printf("-------------------------------------------------------\n");
} 
// 菜单
void menu()
{
   printf("*******************************************************\n");
   printf("*           欢迎进入企业员工管理系统v1.0              *\n");
   printf("*******************************************************\n");
   printf("*               1.输入员工信息                        *\n"); 
   printf("*               2.查询员工信息                        *\n"); 
   printf("*               3.显示所有员工信息                    *\n"); 
   printf("*               4.修改员工信息                        *\n"); 
   printf("*               5.删除员工信息                        *\n"); 
   printf("*               6.统计员工信息                        *\n");
   printf("*               0.退出系统                            *\n"); 
   printf("*******************************************************\n"); 
}
// 主函数
int main() 
{
	staff* emp=Init();
	int num;
	while(1)
	{
		menu();
		
		printf("请选择您需要的操作(0-6):");
		scanf("%d",&num);
		if(num==1)
		{
			addstaff(emp);
		}
		else if(num==2)
		{
			printf("            查询员工信息:              \n");
			printf("----------------------------------------\n");
			printf("            1.按姓名查询                \n"); 
			printf("            2.按工号查询                \n");
			printf("            0.返回主菜单                \n"); 
			printf("----------------------------------------\n");
			int find;
			printf("请选择(0-2):");
			scanf("%d",&find);
			while(1)
			{
				if(find==1)
				{
					namefind(emp);
				}
				else if(find==2)
				{
					numfind(emp);
				}
				else if(find==0)
				{
					break;
				} 
				else
				{
					printf("输入数字有误!\n");
					break; 
				}
			}
			
		}
		else if(num==3)
		{
			display(emp);
		}
		else if(num==4)
		{
			printf("            修改员工信息:              \n");
			printf("----------------------------------------\n");
			printf("            1.按姓名修改                \n"); 
			printf("            2.按工号修改                \n");
			printf("            0.返回主菜单                \n"); 
			printf("----------------------------------------\n");
			int change;
			printf("请选择(0-2):");
			scanf("%d",&change);
			while(1)
			{
				if(change==1)
				{
					namecha(emp);
					break;
				}
				else if(change==2)
				{
					numcha(emp);
					break;
				} 
				else if(change==0)
				{
					break;
				}
				else
				{
					printf("输入数字有误!\n");
					break; 
				}
			}	
		}
		else if(num==5)
		{
			printf("            删除员工信息:              \n");
			printf("----------------------------------------\n");
			printf("            1.按姓名删除                \n"); 
			printf("            2.按工号删除                \n");
			printf("            0.返回主菜单                \n"); 
			printf("----------------------------------------\n");
			int del;
			printf("请选择(1-or-2):");
			scanf("%d",&del);
			while(1)
			{
				if(del==1)
				{
					namedel(emp);
				}
				else if(del==2)
				{
					numdel(emp);
				} 
				else if(del==0)
				{
					break;
				}
				else
				{
					printf("输入数字有误!\n");
					break;	
				}
			}
				
		}
		else if(num==6)
		{
			statistic(emp);
		}
		else if(num==7)
		{
			break;
		}
		else
		{
			printf("输入数字有误,请重新输入!!!");
		}	
	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值