标题:统计功能没法循环使用 求助 谢谢!
只看楼主
菜鸟要努力
Rank: 1
等 级:新手上路
帖 子:27
专家分:1
注 册:2013-3-4
结帖率:100%
已结贴  问题点数:20 回复次数:3 
统计功能没法循环使用 求助 谢谢!
程序代码:
#include<string.h>
#include<stdlib.h>
#include <stdio.h>
typedef struct employee
{
        char num[10];    //保存职工编号
        char name[15];   //保存职工姓名
        char sex[4];       //保存职工性别
        int danwei;      //保存职工所属二级单位
        char majoy[10];         //保存职工所学专业
        char call[15];       //保存职工职称
        int salary;         //保存职工月工资
        char tell[10];       //保存职工电话号码
   
       
}worker;
void menu()
{
     printf("****************************欢迎来到高校职工管理界面****************************\n");
     printf("================================================================================");
     printf("            ① 输入记录          ② 删除记录          ③ 增加记录\n");
     printf("            ④ 查询记录          ⑤ 统计记录          ⑥ 排序操作\n");
     printf("            ⑦ 保存记录          ⑧ 显示记录          ⑨ 退出界面\n");
     printf("================================================================================\n");
     printf("二级单位如下表:\n");
     printf("         ┌─────────────────────────────┐\n");
     printf("         │    1.财务部      │    2.行政部      │    3.人事部      │\n");
     printf("         │    4.教学部      │  5.校长办公室    │   6.学院办公室   │\n");
     printf("         │    7.学生处      │    8.后勤部      │    9.保卫处      │\n");
     printf("         └─────────────────────────────┘\n");
     printf("请输入功能键(①-⑨):\n");
}

(中间省略其他功能函数)
int count(worker a[],int y)              //统计指定二级单位人数及工资总额
{
    int q[9]={0,0,0,0,0,0,0,0,0};
    int sum[9]={0,0,0,0,0,0,0,0,0};
    int x;
    int i=0;
              for(i=0;i<y;i++)
         { 
             if(a[i].danwei==1)
             {
               q[0]++;
               sum[0]+=a[i].salary;
             }
             if(a[i].danwei==2)
             {
               q[1]++;
               sum[1]+=a[i].salary;
             }
             if(a[i].danwei==3)
             {
               q[2]++;
               sum[2]+=a[i].salary;
             }
             if(a[i].danwei==4)
             {
               q[3]++;
               sum[3]+=a[i].salary;
             }
             if(a[i].danwei==5)
             {
               q[4]++;
               sum[4]+=a[i].salary;
              }
             if(a[i].danwei==6)
             {
              q[5]++;
              sum[5]+=a[i].salary;
              }
             if(a[i].danwei==7)
             {
              q[6]++;
              sum[6]+=a[i].salary;
              }
             if(a[i].danwei==8)
             {
              q[7]++;
              sum[7]+=a[i].salary;
              }
             if(a[i].danwei=9)
             {
              q[8]++;
              sum[8]+=a[i].salary;
              }
         }
       printf("请输入需要统计的二级单位代号:");
       scanf("%d",&x);
       switch(x)
       {
        case 1:
               printf("1.财务部的人数为%d,工资总额为:%d\n",q[0],sum[0]);
               break;
        case 2:
               printf("2.行政部的人数为%d,工资总额为:%d\n",q[1],sum[1]);
               break;
        case 3:
               printf("3.人事部的人数为%d,工资总额为:%d\n",q[2],sum[2]);
               break;
        case 4:
               printf("4.教学部的人数为%d,工资总额为:%d\n",q[3],sum[3]);   
               break;
        case 5:
               printf("5.校长办公室的人数为%d,工资总额为:%d\n",q[4],sum[4]);
               break;
        case 6:
               printf("6.学院办公室的人数为%d,工资总额为:%d\n",q[5],sum[5]);
               break;
        case 7:
               printf("7.学生处的人数为%d,工资总额为:%d\n",q[6],sum[6]);
               break;
        case 8:
               printf("8.后勤部的人数为%d,工资总额为:%d\n",q[7],sum[7]);
               break;
        case 9:
               printf("9.保卫处的人数为%d,工资总额为%d\n",q[8],sum[8]);
               break;
        default:printf("查找不到该二级单位代号,请重新输入!\n");
       }
       return y+1;

}
(中间再次省略功能函数)
void main()      //主函数
{
     int selete,c=0;
     int i=0;
     int z=0;
     char q,p,x,s;
     worker b[100];
     FILE *fp;
         if((fp=fopen("worker++.txt","rb"))==NULL)
             printf("Not Found!\n");
         else
         {
             do
             {
                 fread(&b[i],sizeof(struct employee),1,fp);
                 i++;
             }while(!feof(fp));
     fclose(fp);
     c=i-1;
         }
     while(1)
     {
     menu();                       //菜单
     scanf("%d",&selete);
     if(selete==9)
     {
         printf("感谢您的使用,再见!\n");
         break;
     }
     switch(selete)
     {
       case 1:
               c=input(b,c);
               break;
       case 2:
           {
        do
            {
          c=del(b,c);
          printf("是否继续删除,是按y,否则请按任意值\n");
          getchar();
          scanf("%c",&p);
         }while(p=='Y'||p=='y');
         break;
           }
       case 3:
               {
            do
         {
          c=add(b,c);
          printf("是否继续插入,是按y,否则请按任意值\n");
          getchar();
          scanf("%c",&s);
        }while(s=='Y'||s=='y');
         break;
        }
          
       case 4:
               {
        do
        {
          search(b,c);
          printf("是否继续查找,是按y,否则请按任意值\n");
          getchar();
          scanf("%c",&x);
        }while(x=='Y'||x=='y');
         break;
           }
       case 5:
           {
        do
            {
          c=count(b,c);
          printf("是否继续统计,是按y,否则请按任意值\n");
          getchar();
          scanf("%c",&q);
         }while(q=='Y'||q=='y');
         break;
           }
       case 6:
              sort(b,c);
              display(b,c);
              break;
       case 7:
              save(b,c);
              break;
       case 8:
              display(b,c);
              break;
       default:printf("请重新输入!\n");
     }
     }
} 
情况就是使用统计功能时候 提示是否继续统计,选择y后,输入二级单位代码,但是输出的二级单位人数跟工资总额都是为0,哪里出错了?谢谢~
搜索更多相关主题的帖子: employee 统计 
2013-04-08 15:01
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:10 
自己debug

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-08 15:06
菜鸟要努力
Rank: 1
等 级:新手上路
帖 子:27
专家分:1
注 册:2013-3-4
得分:0 
回复 2楼 peach5460
自己会的话就不需要上来问别人了...
2013-04-08 16:03
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:10 
在输入二级单位代码的scanf前加上
fflush(stdin);
清空下输出缓存。
2013-04-08 19:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-403320-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.181942 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved