BAPPS 2022-06-04 18:50 采纳率: 87%
浏览 45
已结题

职工信息管理系统在用职工号查询员工信息时出现错误

请问在选择5按职工号查询员工信息时,没有相应员工信息输出,并且输入不在员工范围内的名字时也不输出“对不起,贵公司没有该员工!”,这是什么原因,应该怎么改动啊?哭了

img

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct workers //声明职工信息结构体类型
{
int JobNo; //成员JobNo职工号
char name[15]; //成员name姓名
char sex[15]; //成员sex性别
int age; //成员age年龄
int salary; //成员salary工资
char addr[15]; //成员addr住址
int tel; //成员tel电话
}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(em); break; //录入员工信息
case 2:browse_JobNo(em); break; //按职工号排序员工信息
case 3:browse_Salary(em); break; //按工资排序员工信息
case 4:search_Name(em); break; //按姓名查找员工信息
case 5:search_JobNo(em); 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() //定义菜单menu函数
{
puts("\t职工信息管理系统");
puts("\t1.职工信息录入");
puts("\t2.按职工号排序员工信息");
puts("\t3.按工资排序员工信息");
puts("\t4.按姓名查找员工信息");
puts("\t5.按职工号查找员工信息");
puts("\t6.求最低工资 ");
puts("\t7.求最高工资");
puts("\t8.求平均工资");
puts("\t9.退出\n");
}

void input() //定义录入员工信息函数
{
int n; //员工的个数/
int i;
printf("请输入员工的总人数:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("\n 请输入员工的信息:\n");
printf("请输入工号:");
scanf("%d",&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("%d",&em[i].tel);
printf("\n");
count++; //输入一位员工信息,count加一,最后count为总员工数
}
printf("\n添加完毕!\n");
printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
for(i=0;i<count;i++)
printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\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=0,aver=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,t;
int n=count; //把员工数目传给n
for(i=0;i<n-1;i++)
{
t=i;
for(j=1;j<n;j++)
{
if(em[i].JobNo>em[j].JobNo)
{
temp=em[i];
em[i]=em[j];
em[j]=temp;
}
}
}
printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
for(i=0;i<n;i++)
printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\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,t;
int n=count; //把员工数目传给n
for(i=0;i<n-1;i++)
{
t=i;
for(j=1;j<n;j++)
{
if(em[i].salary>em[j].salary)
{
temp=em[i];
em[i]=em[j];
em[j]=temp;
}
}
}
printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
for(i=0;i<n;i++)
printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
}

//按职工号查找职工信息/
void search_JobNo()
{
int num1;
int i,t=0;
int n=count;
printf("\n请输入要查找的职工号:");
scanf("%d",num1);
for(i=0;i<n;i++)
{
if(num1==em[i].JobNo)
{
if(t==0)
{
printf("\n已找到以下信息:\n");
printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
}
}
}
if(t==1)
printf("\n对不起,贵公司没有该员工!\n");
}

//按姓名查找职工信息/
void search_Name()
{
char name1[20]; //定义一个数组存放要查找的姓名
int i,t=0;
int n=count;
printf("\n请输入要查找的姓名:");
scanf("%s",name1);
for(i=0;i<n;i++)
{
if(strcmp(name1,em[i].name)==0) //strcmp对两个字符串的大小进行比较
{
if(t==0)
{
printf("\n已找到以下信息:\n");
printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
}
}
}
if(t==1)
printf("\n对不起,贵公司没有该员工!\n");
}

  • 写回答

1条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-06-04 18:59
    关注

    img


    这里少了&,改好了

    img

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    struct workers //声明职工信息结构体类型
    {
    int JobNo; //成员JobNo职工号
    char name[15]; //成员name姓名
    char sex[15]; //成员sex性别
    int age; //成员age年龄
    int salary; //成员salary工资
    char addr[15]; //成员addr住址
    int tel; //成员tel电话
    }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(em); break; //录入员工信息
    case 2:browse_JobNo(em); break; //按职工号排序员工信息
    case 3:browse_Salary(em); break; //按工资排序员工信息
    case 4:search_Name(em); break; //按姓名查找员工信息
    case 5:search_JobNo(em); 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() //定义菜单menu函数
    {
    puts("\t职工信息管理系统");
    puts("\t1.职工信息录入");
    puts("\t2.按职工号排序员工信息");
    puts("\t3.按工资排序员工信息");
    puts("\t4.按姓名查找员工信息");
    puts("\t5.按职工号查找员工信息");
    puts("\t6.求最低工资 ");
    puts("\t7.求最高工资");
    puts("\t8.求平均工资");
    puts("\t9.退出\n");
    }
    
    void input() //定义录入员工信息函数
    {
    int n; //员工的个数/
    int i;
    printf("请输入员工的总人数:");
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
    printf("\n 请输入员工的信息:\n");
    printf("请输入工号:");
    scanf("%d",&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("%d",&em[i].tel);
    printf("\n");
    count++; //输入一位员工信息,count加一,最后count为总员工数
    }
    printf("\n添加完毕!\n");
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
    for(i=0;i<count;i++)
    printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\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=0,aver=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,t;
    int n=count; //把员工数目传给n
    for(i=0;i<n-1;i++)
    {
    t=i;
    for(j=1;j<n;j++)
    {
    if(em[i].JobNo>em[j].JobNo)
    {
    temp=em[i];
    em[i]=em[j];
    em[j]=temp;
    }
    }
    }
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
    for(i=0;i<n;i++)
    printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\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,t;
    int n=count; //把员工数目传给n
    for(i=0;i<n-1;i++)
    {
    t=i;
    for(j=1;j<n;j++)
    {
    if(em[i].salary>em[j].salary)
    {
    temp=em[i];
    em[i]=em[j];
    em[j]=temp;
    }
    }
    }
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话\n");
    for(i=0;i<n;i++)
    printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
    }
    
    //按职工号查找职工信息/
    void search_JobNo()
    {
    int num1;
    int i,t=0;
    int n=count;
    printf("\n请输入要查找的职工号:");
    scanf("%d",&num1);
    for(i=0;i<n;i++)
    {
    if(num1==em[i].JobNo)
    {
    if(t==0)
    {
    printf("\n已找到以下信息:\n");
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话 \n");
    printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
    }
    }
    }
    if(t==1)
    printf("\n对不起,贵公司没有该员工!\n");
    }
    
    //按姓名查找职工信息/
    void search_Name()
    {
    char name1[20]; //定义一个数组存放要查找的姓名
    int i,t=0;
    int n=count;
    printf("\n请输入要查找的姓名:");
    scanf("%s",name1);
    for(i=0;i<n;i++)
    {
    if(strcmp(name1,em[i].name)==0) //strcmp对两个字符串的大小进行比较
    {
    if(t==0)
    {
    printf("\n已找到以下信息:\n");
    printf("\n职工号\t姓名\t性别\t年龄\t工资\t住址\t电话 \n");
    printf("\n%d\t%s\t%s\t%d\t%d\t%s\t%d\n",em[i].JobNo,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].addr,em[i].tel);
    }
    }
    }
    if(t==1)
    printf("\n对不起,贵公司没有该员工!\n");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 修改了问题 6月4日
  • 创建了问题 6月4日

悬赏问题

  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行