benglala0828 2021-12-11 20:26 采纳率: 100%
浏览 88
已结题

公司员工基本信息管理程序设计 设计结构体数组,结构中包含数据为:员工编号、姓名、性别、年龄、职务、部门、住址。 设计各个函数,通过选择菜单调用以上各函数

这个问题没搞懂怎么改,后两个不能跑

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int n;
struct employee
{
    int num[1000];
    char name[20];
    char sex;
    char post[20];//职位
    char department[30];//部门
    char Addr[50];//住址
    int age;
};struct employee peo[10];
void addmessages(struct employee peo[])
{
    char c[2];
    int n=0;
    do
    {
        printf("员工编号.姓名.性别.年龄.职务.部门.住址\n");
        scanf("%d %s %s %d %s %s %s",&peo[n].num,&peo[n].name,&peo[n].sex,&peo[n].age,&peo[n].post,&peo[n].department,&peo[n].Addr);
        n++;
        printf("\n继续输入下一次请按Y或y:");
        scanf("%s",c);

    }while(!(strcmp(c,"Y"))||!(strcmp(c,"y")));
}
void show( struct employee peo[])
{   int i;
    for(i=0;i<n;i++)
    {
        printf("%d %s %s %d %s %s %s",peo[i].num,peo[i].name,peo[i].sex,peo[i].age,peo[i].post,peo[i].department,peo[i].Addr);
    }

}
void find(struct employee peo[])
{
    printf("输入部门,性别查找员工信息:");
    int n,i;
    char bm[20];
    char sex1;
    scanf("%s%s",bm,&sex1);
    for(i=0;i<n;i++)
    if(!(strcmp(peo[i].department,bm))&&!(strcmp(peo[i].sex,sex1)))
    {
        printf("%d %s %s %d %s %s %s",peo[i].num,peo[i].name,peo[i].sex,peo[i].age,peo[i].post,peo[i].department,peo[i].Addr);
    }
}
main()
{
    int menu ;
    while (1)
    {
        printf ("1. 输入数据 \n");
        printf ("2. 显示所有员工信息 \n");
        printf ("3. 输入部门、性别,显示该部门的员工记录\n");
        printf ("4. 结束.");
        printf("请输入数字1—3:");
        scanf("%d",&menu);
        switch (menu)
        {case 1:
        addmessages(peo);break ;
        case 2:
        show(peo);break;
        case 3:
        find(peo);break;
        case 4:
        exit(0);
        }
    }
}


  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-12-11 20:29
    关注

    修改如下,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int n;
    struct employee
    {
        int  num;  //num[1000];
        char name[20];
        char sex;
        char post[20];//职位
        char department[30];//部门
        char Addr[50];//住址
        int  age;
    };struct employee peo[10];
    void addmessages(struct employee peo[])
    {
        char c[2];
        //int  n=0;
        do
        {
            printf("员工编号.姓名.性别.年龄.职务.部门.住址\n");
            //scanf("%d %s %s %d %s %s %s",&peo[n].num,&peo[n].name,&peo[n].sex,&peo[n].age,&peo[n].post,&peo[n].department,&peo[n].Addr);
            scanf("%d %s %c %d %s %s %s",&peo[n].num,peo[n].name,&peo[n].sex,&peo[n].age,peo[n].post,peo[n].department,peo[n].Addr);
            n++;
            printf("\n继续输入下一次请按Y或y:");
            scanf("%s",c);
        }while(!(strcmp(c,"Y"))||!(strcmp(c,"y")));
    }
    void show( struct employee peo[])
    {   int i;
        for(i=0;i<n;i++)
        {
            //printf("%d %s %s %d %s %s %s",peo[i].num,peo[i].name,peo[i].sex,peo[i].age,peo[i].post,peo[i].department,peo[i].Addr);
            printf("%d %s %c %d %s %s %s\n",peo[i].num,peo[i].name,peo[i].sex,peo[i].age,peo[i].post,peo[i].department,peo[i].Addr);
        }
    }
    void find(struct employee peo[])
    {
        printf("输入部门,性别查找员工信息:");
        int i;    //n,
        char bm[20];
        char sex1;
        //scanf("%s%s",bm,&sex1);
        scanf("%s %c",bm,&sex1);
        for(i=0;i<n;i++){
           //if(!(strcmp(peo[i].department,bm))&&!(strcmp(peo[i].sex,sex1)))
           if((strcmp(peo[i].department,bm)==0)&&(peo[i].sex == sex1))
           {
              //printf("%d %s %s %d %s %s %s",peo[i].num,peo[i].name,peo[i].sex,peo[i].age,peo[i].post,peo[i].department,peo[i].Addr);
              printf("%d %s %c %d %s %s %s\n",peo[i].num,peo[i].name,peo[i].sex,peo[i].age,peo[i].post,peo[i].department,peo[i].Addr);
              break;
           }
        }
        if(i >= n)
           printf("not found!\n");
    }
    main()
    {
        int menu ;
        while (1)
        {
            printf ("1. 输入数据 \n");
            printf ("2. 显示所有员工信息 \n");
            printf ("3. 输入部门、性别,显示该部门的员工记录\n");
            printf ("4. 结束.");
            printf("请输入数字1—3:");
            scanf("%d",&menu);
            switch (menu)
            {
            case 1:
                   addmessages(peo);break ;
            case 2:
                   show(peo);break;
            case 3:
                   find(peo);break;
            case 4:
                   exit(0);
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月11日
  • 已采纳回答 12月11日
  • 创建了问题 12月11日

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?