人事管理系统怎么修改

1.当我输入两个员工,不能查询到第二个员工
2.我不会使用文件
针对这两个问题想请教大家,谢谢,附上代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void menu();
void app();
void name();
void num();
void search();
int fun(int);
void total();
void sort();
int xiugai(int);
void shanchu(int);
int baocun();
void zaizhi();
void dangyuan();
void nvgong();
void gaoxue();
void age();
void laiyuan();
int N;
int main()
{
menu();
return 0;
}
struct employee
{
int num; //职工编号为整型;
char name[30]; //姓名为字符串;
int sex; //性别为字符型;
int age; //年龄为整型;
int work; //职务为整型;
int pro; //职称为整型;
int sta; //政治面貌为整型;
int edu; //最高学历为整型;
int date1; //任职时间为整型;
struct time
{
int year;
int month;
int day;
};
struct time date2;//来院时间为结构体;
int cate; //人员类别为整型;
}employee;
struct employee em[100];
void menu()
{
int n;
printf("\tmenu\n");//菜单的输入
printf("\t\t 请选择您需要的操作!\n");
printf("\t\t 操作:\n");
printf("\t\t 0、退出操作系统\n");
printf("\t\t 1、录入职工信息\n");
printf("\t\t 2、查询编辑职工信息\n");
printf("\t\t 3、统计职工信息\n");
printf("\t\t 4、职工信息排序\n");
printf("\t 选择相关操作请输入该操作前面的数字!\n");
printf("您的选择是:");
scanf("%d",&n);
switch(n)
{
case 1://录入职工信息;
app();
break;
case 2://查询编辑职工信息;
search();
break;
case 3://统计职工信息;
total();
break;
case 4://职工信息排序;
sort();
break;
case 0://退出操作系统;
printf("欢迎下次使用!");
break;

}

}
void app()
{

int i;
printf("请输入职工的个数:");
scanf("%d",&N);
printf("\n开始录入:\n");
for(i=0;i<N;i++)
{
    printf("请输入职工编号:\n");
    scanf("%d",&em[i].num);

    printf("\n请输入职工姓名:\n");
    scanf("%s",em[i].name);

    printf("\n请输入性别:(说明:1为女性,2为男性)\n");
    scanf("%d",&em[i].sex);
    
    printf("\n请输入年龄:\n");
    scanf("%d",&em[i].age);

    printf("\n职务是:(说明:1.行政;2.教师;3.一般员工)\n");
    scanf("%d",&em[i].work);

    printf("\n职称为:(说明:1.助教;2.讲师;3.副教授;4.教授)\n");
    scanf("%d",&em[i].pro);

    printf("\n政治面貌为:(说明:1.团员;2.党员)\n");
    scanf("%d",&em[i].sta);
    
    printf("\n最高学历为:(说明:1.专科;2.本科;3.硕士;4.博士)\n");
    scanf("%d",&em[i].edu);

    printf("\n任职时间为:(说明:以年为单位)\n");
    scanf("%d",&em[i].date1);

    printf("\n来院时间为:(eg:2021 12 12)\n");
    scanf("%d %d %d",&em[i].date2.year,&em[i].date2.month,&em[i].date2.day);

    printf("\n请输入人员类别:(说明:1.在职员工;2.退休员工;3.临时工)\n");
    scanf("%d",&em[i].cate);    

    if(i==N-1) break;    
}
baocun();
printf("\n输入完毕,接下来请选择:\n");
menu();

}
void num() /按编号查找/
{
int i,n,w;
int b;
printf("\n请输入您要查找的职工编号:");
scanf("%d",&n);
for(i=0;i<N;i++)
{
if(em[i].num==n)
{
printf("编号为%d的职工的信息如下:\n",n);
printf("姓名:%s\n性别:%d\n年龄:%d\n职务:%d\n职称:%d\n政治面貌:%d\n最高学历:%d\n任职时间:%d\n来院时间:%d %d %d\n人员类别:%d\n",em[i].name,em[i].sex,em[i].age,em[i].work,em[i].pro,em[i].sta,em[i].edu,em[i].date1,em[i].date2.year,em[i].date2.month,em[i].date2.day,em[i].cate);
printf("是否需要修改该职工信息?(1意为是,0意为否)\n");
printf("请选择:\n");
scanf("%d",&b);

        switch(b)
        {
            case 1:fun(i);break;
            case 0:
                do
                    {
                        printf("\n\t\t     请选择接下来的操作:\n");
                        printf("\t\t      1、统计职工信息\n");
                        printf("\t\t      2、职工信息排序\n");
                        printf("\t\t      3、返回主菜单\n");
                        printf("\t\t      4、退出系统\n");
                        printf("请选择:");
                        scanf("%d",&n);     
                        printf("\n\n");
                        if(n<1||n>4)
                        {
                            w=1;getchar();printf("\t输入有误,请重新选择:\n");    
                        }
                        else w=0;
                    }while(w==1);
                switch(n)
                {
                    case 1:total();break;
                    case 2:sort();break;
                    case 3:menu();break;
                    case 4:printf("欢迎下次使用!");break;
                    }
         }
    }
    else {
        printf("未找到该职工\n\n"); 
        search();
    }
}

}
void name() /按姓名查找/
{
int w,i,n;
char a[30];
int b;
printf("请输入您要查找的职工姓名:");
scanf("%s",a);
getchar();
for(i=0;i<N;i++)
{
if(strcmp(a,em[i].name)==0)
{
printf("\n该职工的信息如下:\n");
printf("编号:%d \n性别:%d\n年龄:%d\n职务:%d\n职称:%d\n政治面貌:%d\n最高学历:%d\n任职时间:%d\n来院时间:%d %d %d\n人员类别:%d\n",em[i].num,em[i].sex,em[i].age,em[i].work,em[i].pro,em[i].sta,em[i].edu,em[i].date1,em[i].date2.year,em[i].date2.month,em[i].date2.day,em[i].cate);
printf("是否需要修改该职工信息?(1意为是,0意为否)\n");
printf("请选择:\n");
scanf("%d",&b);
switch(b)
{
case 1:fun(i);break;
case 0: do
{
printf("\t\t 请选择接下来的操作:\n");
printf("\t\t 1、统计职工信息\n");
printf("\t\t 2、职工信息排序\n");
printf("\t\t 3、返回主菜单\n");
printf("\t\t 4、退出系统\n");
printf("请选择:");
scanf("%d",&n);
printf("\n\n");
if(n<1||n>4)
{
w=1;getchar();printf("\t输入有误,请重新选择:\n");
}
else w=0;
}while(w==1);
switch(n)
{
case 1:total();break;
case 2:sort();break;
case 3:menu();break;
case 4:printf("欢迎下次使用!");break;
}
}
}
else {
printf("未找到该职工\n\n");
search();
}
}
}
void search() /查询功能,包括按编号查找和按姓名查找/
{
int n,w;
printf("\t\t 请选择您要查询的方式:\n");
printf("\t\t 1、按编号查询\n");
printf("\t\t 2、按姓名查询\n");
printf("\t\t 3、返回主菜单\n");
printf("请选择:");
scanf("%d",&n);
printf("\n\n");
switch(n)
{
case 1:num();break;
case 2:name();break;
case 3:menu();break;
}
}

int fun(int i) /编辑信息功能,包括修改和删除/
{
int n,w;

    printf("\t\t********************编辑********************\n");
    printf("\t\t\t1.返回上一菜单\n");
    printf("\t\t\t2.重新按编号查找\n");
    printf("\t\t\t3.重新按姓名查找\n");
    printf("\t\t\t4.修改信息\n");
    printf("\t\t\t5.删除信息\n");
    printf("\t\t\t6.返回主菜单\n");
    printf("\t\t\t7.退出\n");
    printf("\t\t*********************************************\n");
    printf("请选择:");
    scanf("%d",&n);
switch(n)
{
    case 1: search(); break;
    case 2: num(); break;
    case 3: name(); break;
    case 4: xiugai(i); break;
    case 5: shanchu(i); break;
    case 6: menu(); break;
    case 7: printf("欢迎下次使用!"); 
 } 
return 0;        

}
void laiyuan()
{
int i,k,j,q;
struct employee b;
for(k=0;k<N;k++)
{
q=k;
for(j=k+1;j<N;j++){
if(em[j].date2.year<em[q].date2.year)
q=j;
else if(em[j].date2.year==em[q].date2.year)
if(em[j].date2.month<em[q].date2.month)
q=j;
else if(em[j].date2.month==em[q].date2.month)
if(em[j].date2.day<em[q].date2.day)
q=j;
}
b=em[q];em[q]=em[k];em[k]=b;
}
printf("按1显示排序后的结果\n按0返回:");
scanf("%d",&q);
if(q==1)
{
printf("编号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 任职时间 来院时间 人员类别\n");
for(i=0;i<N;i++)
printf("%d %s %d %d %d %d %d %d %d %s %d\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].work,em[i].pro,em[i].sta,em[i].edu,em[i].date1,em[i].date2.year,em[i].date2.month,em[i].date2.day,em[i].cate);
sort();
}
else sort();
}
void total()
{
int n;
printf("\t\t********************统计********************\n");
printf("\t\t\t\t1.在职人员统计\n");
printf("\t\t\t\t2.党员人数统计\n");
printf("\t\t\t\t3.女工人数统计\n");
printf("\t\t\t\t4.高学历高职称人数统计\n");
printf("\t\t\t\t5.返回主菜单\n");
printf("\t\t*********************************************\n");
printf("\t请选择;");
scanf("%d",&n);
printf("\n");
switch(n)
{
case 1: zaizhi(); break;
case 2: dangyuan(); break;
case 3: nvgong(); break;
case 4: gaoxue(); break;
case 5: menu(); break;
}
}
void zaizhi()
{
int k,num=0;
printf("编号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 任职时间 来院时间 人员类别\n");
for(k=0;k<N;k++)
{
if(em[k].cate==1)
{
num++;
printf("%d %s %d %d %d %d %d %d %d %d %d %d %d\n",em[k].num,em[k].name,em[k].sex,em[k].age,em[k].work,em[k].pro,em[k].sta,em[k].edu,em[k].date1,em[k].date2.year,em[k].date2.month,em[k].date2.day,em[k].cate);
}
}
printf("\n在职人数为:%d\n",num);
total();
}
void dangyuan()
{
int k,num=0;
printf("编号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 任职时间 来院时间 人员类别\n");
for(k=0;k<N;k++)
{
if(em[k].sta==2)
{
num++;
printf("%d %s %d %d %d %d %d %d %d %d %d %d %d\n",em[k].num,em[k].name,em[k].sex,em[k].age,em[k].work,em[k].pro,em[k].sta,em[k].edu,em[k].date1,em[k].date2.year,em[k].date2.month,em[k].date2.day,em[k].cate);
}
}
printf("\n党员人数为:%d\n",num);
total();
}
void nvgong()
{
int k,num=0;
printf("编号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 任职时间 来院时间 人员类别\n");
for(k=0;k<N;k++)
{
if(em[k].sex==1)
{
num++;
printf("%d %s %d %d %d %d %d %d %d %d %d %d %d\n",em[k].num,em[k].name,em[k].sex,em[k].age,em[k].work,em[k].pro,em[k].sta,em[k].edu,em[k].date1,em[k].date2.year,em[k].date2.month,em[k].date2.day,em[k].cate);
}
}
printf("\n女工人数为:%d\n",num);
total();
}
void gaoxue()
{
int k,num=0;
printf("编号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 任职时间 来院时间 人员类别\n");
for(k=0;k<N;k++)
{
if(em[k].edu>=2||em[k].pro>=2)
{
num++;
printf("%d %s %d %d %d %d %d %d %d %d %d %d %d\n",em[k].num,em[k].name,em[k].sex,em[k].age,em[k].work,em[k].pro,em[k].sta,em[k].edu,em[k].date1,em[k].date2.year,em[k].date2.month,em[k].date2.day,em[k].cate);
}
}
printf("\n高学历高职称人数为:%d\n",num);
total();
}