| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1079 人关注过本帖
标题:编译没有出现错误提醒了,但是还是运行不了,求助,谢谢!
只看楼主 加入收藏
菜鸟要努力
Rank: 1
等 级:新手上路
帖 子:27
专家分:1
注 册:2013-3-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
编译没有出现错误提醒了,但是还是运行不了,求助,谢谢!
程序代码:
#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("请输入(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("二级单位如下表:\n");
         printf("     ┌─────────────────────────────┐\n");
         printf("     │    1.财务部      │    2.行政部      │    3.人事部      │\n");
         printf("     │    4.教学部      │  5.校长办公室    │   6.学院办公室   │\n");
         printf("     │    7.学生处      │    8.后勤部      │    9.保卫处      │\n");
         printf("     └─────────────────────────────┘\n");
         printf("请输入所属二级单位(1-9):");
         scanf("%d",&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);
             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);
                 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("%d",&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("职工的所属二级单位:%d\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 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("请输入需要统计的二级单位代号:\n");
       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");
       }

}

void sort(worker a[],int y)        //排序,递增序列
{
     int i,j;
     int 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);

                 t=a[i].danwei;
                 a[i].danwei=a[i+1].danwei;
                 a[i+1].danwei=t;

                 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");
     }
     }
} 


请问这段代码还有错误吗?
搜索更多相关主题的帖子: 还是 employee 
2013-04-06 09:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
太长了啊  谁知道哪里会出现错误呢

DO IT YOURSELF !
2013-04-06 10:28
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
没有问题,一切正常,本来想把图片给你的,但是我附不上去

[ 本帖最后由 邓士林 于 2013-4-6 21:04 编辑 ]

Maybe
2013-04-06 20:47
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
收藏
得分:0 
你显示记录试下就知道了!
2013-04-06 21:13
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:0 
回复 3楼 邓士林
有的时候我连代码都复制不下来……
2013-04-06 21:43
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:0 
我觉得你连这么长的代码都写的出来,水平应该不差哦……呵呵
2013-04-06 21:44
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:0 
回复 2楼 wp231957
如何复制人家写的代码啊?有的时候想调试一下人家的东西,发现代码无法复制啊……
2013-04-06 21:46
菜鸟要努力
Rank: 1
等 级:新手上路
帖 子:27
专家分:1
注 册:2013-3-4
收藏
得分:0 
回复 6楼 yctchxf
都是被课程设计老师逼的TT
2013-04-07 15:15
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
回复 8楼 菜鸟要努力
我运行的挺正常的,你那怎么搞的哦

Maybe
2013-04-07 17:51
菜鸟要努力
Rank: 1
等 级:新手上路
帖 子:27
专家分:1
注 册:2013-3-4
收藏
得分:0 
回复 9楼 邓士林
难道是我的VC出问题了==我再试试看,还是谢谢你先~
2013-04-07 21:02
快速回复:编译没有出现错误提醒了,但是还是运行不了,求助,谢谢!
数据加载中...
 
   



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

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