标题:还是那个统计问题,请问应该怎么改TT
只看楼主
菜鸟要努力
Rank: 1
等 级:新手上路
帖 子:27
专家分:1
注 册:2013-3-4
结帖率:100%
已结贴  问题点数:18 回复次数:3 
还是那个统计问题,请问应该怎么改TT
程序代码:
#include<string.h>
#include<stdlib.h>
#include <stdio.h>
typedef struct employee
{
        char num[10];    //保存职工编号
        char name[15];   //保存职工姓名
        char sex[4];       //保存职工性别
        char danwei[15];      //保存职工所属二级单位
        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("请输入(1-9):\n");
}
int input(worker a[],int k)                //输入记录
{
     int j,x;
     char str[10];
     j=x=0;
     while(1)
     {
         printf("----------------------------\n");
         printf("请输入职工的工号(按0返回):");
             scanf("%s",str);
             strcpy(a[k].num,str);
         for(j=0;j<k;j++)    
         {
             if(strcmp(a[j].num,str)==0)
             {
                 printf("已经有工号为%s的员工信息!请重新输入员工号。\n",str);
                 printf("请输入职工的编号:");
                 scanf("%s",str);
                 strcpy(a[k].num,str);
             }
         }

         if(strcmp(a[k].num,"0")==0)
         break;
         printf("请输入职工的姓名:");
         scanf("%s",&a[k].name);
         printf("请输入职工的性别:");
         scanf("%s",&a[k].sex);
         printf("请输入职工所属二级单位:");
         scanf("%s",&a[k].danwei);
         printf("请输入职工所学专业:");
         scanf("%s",&a[k].majoy);
         printf("请输入职工的职称:");
         scanf("%s",&a[k].call);
         printf("请输入职工的月薪:");
         scanf("%d",&a[k].salary);
         printf("请输入职工的电话号码:");
         scanf("%s",&a[k].tell);
         k++;
     }
     return k;
}

int del(worker a[],int y)                //删除记录
{
     int i=0;
     int x=0;
     char str[15];
     printf("请输入你要删除的职工号:");
     scanf("%s",str);
     printf("--------删除成功--------\n");
     for(i=0;i<y;i++)
     if(!strcmp(str,a[i].num))
     {
         while(i<y)
         {
             strcpy(a[i].num,a[i+1].num);
             strcpy(a[i].name,a[i+1].name);
             strcpy(a[i].sex,a[i+1].sex);
             strcpy(a[i].danwei,a[i+1].danwei);
             strcpy(a[i].majoy,a[i+1].majoy);
             strcpy(a[i].call,a[i+1].call);
             a[i].salary=a[i+1].salary;
             strcpy(a[i].tell,a[i+1].tell);
             i++;
         }
         x++;
     }
     if(x==0)
     {
         printf("输入的职工号不存在,请重新输入:\n");
     }
     return y-x;
}

int add(worker a[],int y)            //增加记录
{
     int i;
     int x=0;
     char str[15];
     printf("请输入你要插入的职工工号:");
     scanf("%s",str);
     printf("请输入该职工的相关信息:\n");
     for(i=0;i<y;i++)
         if(strcmp(str,a[i].num)==0)
         {
             x=i;
             for(i=y;i>x+1;i--)
             {
                 strcpy(a[i].num,a[i-1].num);
                 strcpy(a[i].name,a[i-1].name);
                 strcpy(a[i].sex,a[i-1].sex);
                 strcpy(a[i].danwei,a[i-1].danwei);
                 strcpy(a[i].majoy,a[i-1].majoy);
                 strcpy(a[i].call,a[i-1].call);
                 a[i].salary=a[i-1].salary;
                 strcpy(a[i].tell,a[i-1].tell);
             }
         }
         x++;
                 printf("请输入职工的工号:");
                         scanf("%s",a[i].num);
                         printf("请输入职工的姓名:");
                         scanf("%s",&a[i].name);
                         printf("请输入职工所属二级单位:");
                         scanf("%s",&a[i].danwei);
                         printf("请输入职工所学专业:");
                         scanf("%s",&a[i].majoy);
                         printf("请输入职工的职称:");
                         scanf("%s",&a[i].call);
                         printf("请输入职工的月薪:");
                         scanf("%d",&a[i].salary);
                         printf("请输入职工的电话号码:");
                         scanf("%s",&a[i].tell);
                 return y+1;
}

int search(worker a[],int y)          //查询记录
{
     int i;
     int x=0;
     char str[15];
     printf("请输入你要查找的职工工号或电话号码:");
     scanf("%s",str);
     for(i=0;i<y;i++)
     if(!strcmp(str,a[i].num)||!strcmp(str,a[i].tell))
     {
         printf("职工的工号为%s\n",a[i].num);
         printf("职工的姓名为%s\n",a[i].name);
         printf("职工的性别:%s\n",a[i].sex);
         printf("职工的所属二级单位:%s\n",a[i].danwei);
         printf("职工的所学专业:%s\n",a[i].majoy);
         printf("职工的职称:%s\n",a[i].call);
         printf("职工的月工资:%d\n",a[i].salary);
         printf("职工的电话号码:%s\n",a[i].tell);
         x++;
     }
     if(x==0)
     {
       
         printf("未查找到该职工的记录\n");
         return -1;
     }
}
void 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 i=0;
              for(i=0;i<y;i++)
         { 
             if(a[i].danwei='A')
             {
               q[0]++;
               sum[0]+=a[i].salary;
             }
             if(a[i].danwei='B')
             {
               q[1]++;
               sum[1]+=a[i].salary;
             }
             if(a[i].danwei='C')
             {
               q[2]++;
               sum[2]+=a[i].salary;
             }
             if(a[i].danwei='D')
             {
               q[3]++;
               sum[3]+=a[i].salary;
             }
             if(a[i].danwei='E')
             {
               q[4]++;
               sum[4]+=a[i].salary;
              }
             if(a[i].danwei='F')
             {
              q[5]++;
              sum[5]+=a[i].salary;
              }
             if(a[i].danwei='G')
             {
              q[6]++;
              sum[6]+=a[i].salary;
              }
             if(a[i].danwei='H')
             {
              q[7]++;
              sum[7]+=a[i].salary;
              }
             if(a[i].danwei='I')
             {
              q[8]++;
              sum[8]+=a[i].salary;
              }
         }
       printf("请输入需要统计的二级单位代号:\n");
       switch();
       {
        case 'A':
               printf("A.财务部的人数为%d,工资总额为:%d\n",q[0],sum[0]);
               break;
        case 'B':
     printf("B.行政部的人数为%d,工资总额为:%d\n",q[1],sum[1]);
               break;
        case 'C':
     printf("C.人事部的人数为%d,工资总额为:%d\n",q[2],sum[2]);
               break;
        case 'D':
     printf("D.教学部的人数为%d,工资总额为:%d\n",q[3],sum[3]);   
               break;
        case 'E':
     printf("E.校长办公室的人数为%d,工资总额为:%d\n",q[4],sum[4]);
               break;
        case 'F':
     printf("F.学院办公室的人数为%d,工资总额为:%d\n",q[5],sum[5]);
               break;
        case 'G':
     printf("G.学生处的人数为%d,工资总额为:%d\n",q[6],sum[6]);
               break;
        case 'H':
     printf("H.后勤部的人数为%d,工资总额为:%d\n",q[7],sum[7]);
               break;
        case 'I':
     printf("I.保卫处的人数为%d,工资总额为%d\n",q[8],sum[8]);
               break;
        default:printf("查找不到该二级单位代号,请重新输入!\n");
       }

}

void sort(worker a[],int y)        //排序,递增序列
{
     int i,j;
     float t;
     char str[15];
     for(j=0;j<y-1;j++)
         for(i=0;i<y-1-j;i++)
             if(a[i].salary>a[i+1].salary)
             {
                 t=a[i].salary;
                 a[i].salary=a[i+1].salary;
                 a[i+1].salary=t;
                
                 strcpy(str,a[i].name);
                 strcpy(a[i].name,a[i+1].name);
                 strcpy(a[i+1].name,str);

                 strcpy(str,a[i].sex);
                 strcpy(a[i].sex,a[i+1].sex);
                 strcpy(a[i+1].sex,str);
                
                 strcpy(str,a[i].num);
                 strcpy(a[i].num,a[i+1].num);
                 strcpy(a[i+1].num,str);

                 strcpy(str,a[i].danwei);
                 strcpy(a[i].danwei,a[i+1].danwei);
                 strcpy(a[i+1].danwei,str);

                 strcpy(str,a[i].majoy);
                 strcpy(a[i].majoy,a[i+1].majoy);
                 strcpy(a[i+1].majoy,str);

                 strcpy(str,a[i].call);
                 strcpy(a[i].call,a[i+1].call);
                 strcpy(a[i+1].call,str);

                 strcpy(str,a[i].tell);
                 strcpy(a[i].tell,a[i+1].tell);
                 strcpy(a[i+1].tell,str);
             }
}
void save(worker a[],int n)   //保存记录
{
     FILE *fp;
     int i;
     if((fp=fopen("worker.txt","wb"))==NULL)
     {
         printf("cannot open file\n");
         return;
     }
     for(i=0;i<n;i++)
         if(fwrite(&a[i],sizeof(struct employee),1,fp)!=1)
             printf("file write error\n");
         fclose(fp);
}
void display(worker a[],int n)            //显示操作
{
     int i=0;
     if(n==0)
     {
         printf("Files are empty\n");
         return;
     }
     do
     {
         printf("----------------------------\n");
         printf("职工的工号为%s\n",a[i].num);
         printf("职工的姓名为%s\n",a[i].name);
         printf("职工的性别:%s\n",a[i].sex);
         printf("职工的所属二级单位:%s\n",a[i].danwei);
         printf("职工的所学专业:%s\n",a[i].majoy);
         printf("职工的职称:%s\n",a[i].call);
         printf("职工的月工资:%d\n",a[i].salary);
         printf("职工的电话号码:%s\n",a[i].tell);
         i++;
     }while(i<n);
}
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:
           {
             display(b,c);
        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:
           count(b,c);
           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");
     }
     }
} 


请问第五个功能要怎么改正,就是那个统计指定二级单位人数以及工资总额那个,麻烦各位了 谢谢TT
搜索更多相关主题的帖子: 还是 统计 employee 
2013-04-04 01:37
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
得分:9 
2013-04-04 06:29
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:9 
你看看你的if的条件,你那是赋值不是判断。
2013-04-04 09:41
菜鸟要努力
Rank: 1
等 级:新手上路
帖 子:27
专家分:1
注 册:2013-3-4
得分:0 
回复 3楼 shmilyflf
额...好吧 脑袋短路了TT 谢谢提醒
2013-04-06 08:34



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




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

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