BAPPS 2022-06-02 11:06 采纳率: 87%
浏览 11
已结题

职工信息管理系统中的浏览信息环节出现错误,但不知道如何改正

请问这一代码中的look函数有什么错误,老是搞不定
#include <stdio.h>
#include <stdlib.h>
struct employee
{int nubmer;
char name;
char sex;
int age;
int wage;
char adress;
int phone;
}emp[50];
void search(struct employee emp[],int d);
void look(struct employee emp[],int f);

main()
{
int i,j,n,a,b,c;

printf("请输入您需要处理多少个职员数据");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d个职工数据:\n",i+1);
printf("依次输入 工号 姓名 性别 年龄 工资 地址 电话\n");
scanf("%5d%5s%5s%5d%5d%5s%5d",&emp[i].nubmer,&emp[i].name,&emp[i].sex,&emp[i].age,&emp[i].wage,&emp[i].adress,&emp[i].phone);
}
printf("\n1.计算\n2.信息浏览\n3.查询");
printf("请输入数字来实现功能");
scanf("%d",&a);
switch(a)
{case 1:look(emp,n);

}

return 0;
}
void look(struct employee emp[],int f)
{int a,i,j;
struct employee temp;
printf("请输入用哪种方式浏览信息\n1.职工号\n2.工资");
scanf("%d",&a);
if(a==1)
{
for (i=1;i<=f;i++)
{for(j=i;j<=f;j++)
if(emp[j-1].nubmer>emp[j].nubmer)
{temp=emp[j-1];
emp[j-1]=emp[j];
emp[j]=temp;
}
}
}
if(a==2)
{
for (i=1;i<=f;i++)
{for(j=i;j<=f;j++)
if(emp[j-1].wage>emp[j].wage)
{temp=emp[j-1];
emp[j-1]=emp[j];
emp[j]=temp;
}
}
}
for(i=0;i<f;i++)
printf("%5d%5s%5s%5d%5d%5s%5d",emp[i].nubmer,emp[i].name,emp[i].sex,emp[i].age,emp[i].wage,emp[i].adress,emp[i].phone);
}

void search(struct employee emp[],int d)
{int a,x,i;
char name[10];
printf("请选择你要查询的方式\n1.按姓名查询2.按职工号查询");
scanf("%d",&a);
if(a==1)
printf("请输入你要查询的姓名");
scanf("%s",&name) ;
for(i=0;i<d;i++)
{if(strcmp(emp[i].name,name)==0)
printf("%5d%5s%5s%5d%5d%5s%5d",emp[i].nubmer,emp[i].name,emp[i].sex,emp[i].age,emp[i].wage,emp[i].adress,emp[i].phone);
}
if(a==2)
printf("请输入你要查询的职工号");
scanf("%d",&x);
for(i=0;i<d;i++)
{if(strcmp(emp[i].nubmer,x)==0)
printf("%5d%5s%5s%5d%5d%5s%5d",emp[i].nubmer,emp[i].name,emp[i].sex,emp[i].age,emp[i].wage,emp[i].adress,emp[i].phone);
}
}

  • 写回答

1条回答 默认 最新

  • sinJack 2022-06-02 11:33
    关注
    #include <stdio.h>
    #include <string.h>
    #include <string.h>
    #include<stdlib.h>
    struct workers
    {
    char JobNo[15]; //职工号
    char name[15]; //姓名
    char sex[15]; //性别
    int age; //年龄
    int salary; //工资
    char addr[15]; //住址
    char tel[15]; //电话
    }em[50];
    void menu();//菜单
    void input();//录入
    struct workers max(struct workers em[]);
    struct workers min(struct workers em[]);
    struct workers average(struct workers em[]);
    void browse_JobNo();//浏览职工号排序
    void browse_Salary();//浏览工资排序
    void search_JobNo(); //按职工号查询
    void search_Name();//按姓名查询
     int count=0;
    int main()
    {
    int number;
    while (1)
    {
    menu();
    printf("请输入菜单编号:");
    scanf("%d", &number);
    switch (number)
    {
    case 1:input(); break; //录入员工信息
    case 2:browse_JobNo(); break; //按职工号排序员工信息
    case 3:browse_Salary(); break; //按工资排序员工信息
    case 4:search_Name(); break; //按姓名查找员工信息
    case 5:search_JobNo(); break; //按职工号查找员工信息
    case 6:min(em); break; //求最低工资
    case 7:max(em); break; //求最高工资
    case 8:average(em); break; //求平均工资
    case 9:exit(0); break; //退出
    default:printf("输入有误!");
    }
    }
     
    return 0;  
    }
     
    void menu()
    {
    puts("\t职工信息管理系统\n");
    puts("\t1.职工信息录入");
    puts("\t2.按职工号排序员工信息");
    puts("\t3.按工资排序员工信息");
    puts("\t4.按姓名查找员工信息");
    puts("\t5.按职工号查找员工信息");
    puts("\t6.求最低工资 ");
    puts("\t7.求最高工资");
    puts("\t8.求平均工资");
    puts("\t9.退出");
    }
     
    void input()//录入函数/
    {
    int n; //员工的个数/
    int i;
    printf("请输入员工的总人数:\n");
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
    printf("\n 请输入员工的信息:\n");
    printf("请输入工号:");
    scanf("%s",em[i].JobNo);
    printf("请输入姓名:");
    scanf("%s",em[i].name);
    printf("请输入性别:");
    scanf("%s",em[i].sex);
    printf("请输入年龄:");
    scanf("%d",&em[i].age);
    printf("请输入工资:");
    scanf("%d",&em[i].salary);
    printf("请输入住址:");
    scanf("%s",em[i].addr);
    printf("请输入电话:");
    scanf("%s",em[i].tel);
    printf("\n");
    count++;
    }
    printf("\n添加完毕!\n");
    for(i=0;i<count;i++)
    printf("\n%s\t%s\t%s\t%d\t%d\t%s\t%s\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
    }
     
    //函数功能;求全体职工的最高工资/
    struct workers max(struct workers em[])
    {
    int m=0,i;
    for(i=0;i<count;i++)
    {
    if(em[i].salary>em[m].salary)
    m=i;
    }
    printf("全体职工的最高工资是:%d\n",em[m].salary);
    return em[m];
    }
    //函数功能:求全体职工的最低工资/
    struct workers min(struct workers em[])
    {
    int m=0,i;
    for(i=0;i<count;i++)
    {
    if(em[i].salary<em[m].salary)
    m=i;
    }
    {
    printf("全体职工的最低工资是:%d\n",em[m].salary);
    }
    return em[m];
    }
    //函数功能:求全体职工的平均工资/
    struct workers average(struct workers em[])
    {
    int i,sum,aver;
    sum=0;
    for(i=0;i<count;i++)
    {
    sum=sum+em[i].salary;
    }
    aver=sum/i;
    printf("全体职工的平均工资是:%d\n",aver);
    }
     
    //按职工号排序函数
    void browse_JobNo() //浏览信息时按照职工号由小到大顺序排序
    {
    struct workers temp;
    int i,j;
    int n=count;
    for(i=0;i<n-1;i++)
    for(j=0;j<n-1-i;j++)
    if(em[j].JobNo>em[j+1].JobNo)//排序
    { temp=em[j];
    em[j]=em[j+1];
    em[j+1]=temp;
    }
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
    for(i=0;i<n;i++)
    printf("\n%s\t%s\t%s\t%d\t%d\t%s\t%s\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
    }
     
    //按工资排序函数
    void browse_Salary() //浏览信息时按照工资由小到大顺序排序
    {
    struct workers temp;
    int i,j;
    int n=count;
    for(i=0;i<n-1;i++)
    for(j=0;j<n-1-i;j++)
    if(em[j].salary>em[j+1].salary)//排序
    { temp=em[j];
    em[j]=em[j+1];
    em[j+1]=temp;
    }
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
    for(i=0;i<n;i++)
    printf("\n%s\t%s\t%s\t%d\t%d\t%s\t%s\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
    }
     
    //按姓名查找职工信息
    void search_Name()
    {
    char name1[20]; //定义一个数组指向字符串
    int i,t,n=0;
    printf("\n请输入要查找的姓名:");
    scanf("%s",name1);
    for(i=0;i<n;i++) //遍历
    if(strcmp(name1,em[i].name)==0) //strcmp对两个字符串的大小进行比较
    {
    if(n==0)
    { printf("\n已找到以下信息:\n");
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话 \n");
    }
    n++;
    printf("\n%s\t%s\t%s\t%d\t%d\t%s\t%s\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
    }
    if(n==0) //没有一个符合条件
    { printf("\n对不起,贵公司没有该员工!\n");
    getchar();
    getchar();
    }
    }
     
    //按职工号查找职工信息
    void search_JobNo()
    {
    char num1[20];
    int i,t,n=0;
    printf("\n请输入要查找的职工号:");
    scanf("%s",&num1);
    for(i=0;i<n;i++) //遍历
    if(strcmp(em[i].JobNo,num1)==0)
    {
    if(n==0)
    { printf("\n已找到以下信息:\n");
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
    }
    n++;
    printf("\n%s\t%s\t%s\t%d\t%d\t%s\t%s\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
    }
    if(n==0) //没有一个符合条件
    { printf("\n对不起,贵公司没有该员工!\n");
    getchar();
    getchar();
    }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月10日
  • 已采纳回答 6月2日
  • 创建了问题 6月2日

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据