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日

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用