为了账号安全,请及时绑定邮箱和手机立即绑定

我输入两个员工的信息,但结果只显示第一个员工的信息

我输入两个员工的信息,但结果只显示第一个员工的信息

C
coreIdeaLJJ 2016-12-31 16:39:42
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#define N 100struct employee            //职工基本信息{    long num;                //工号    int position;            //职位:1为董事长,2为总经理,3为副总经理 4.普通员工        char name[8];            //姓名        char sex[2];            //性别;f为女,m为男        int age;                //年龄    int cult;                //文化程度:1为硕士。2为学士。3为其他    int state;                //健康状况:1为好,2为一般。3为差}e[N];/* ************  管理模块  ************ *//* 录入职工信息 */void input (){    int i,j;    printf ("请确认输入信息的职工人数(最多100人)\n");    scanf ("%d",&i);        if (i<1  || i>100)    {        printf ("输入数据有误,请重新输入\n");        scanf ("%d",&i);    }    FILE *fp;     if ((fp=fopen("d:\\Staff information.txt","w"))==NULL)    {        printf ("Can not open file!");        exit (0);    }    printf ("*****************************************************************\n");    printf ("备注:\n职位:1为董事长,2为总经理,3为副总经理 4.普通员工\n性别;f为女,m为男\n文化程度:1为硕士。2为学士。3为其他\n健康状况:1为好,2为一般。3为差\n");    printf ("*****************************************************************\n");    printf ("请输入%d名职工信息,(工号、职位等信息,请按Tab键隔开)\n",i);    printf ("工号\t职位\t姓名\t性别\t年龄\t文化程度\t健康状况\n");    for (j=0;j<i;j++);    {        scanf ("%ld%d%s%s%ld%d%d",&e[j].num,&e[j].position,e[j].name,e[j].sex,&e[j].age,&e[j].cult,&e[j].state);        fflush(stdin);        fprintf (fp,"%ld\t%d\t%s\t%s\t%ld\t%d\t%d",e[j].num,e[j].position,e[j].name,e[j].sex,e[j].age,e[j].cult,e[j].state);    /*    fflush(stdin);*/        fprintf (fp,"\n");    }    fclose (fp);            if ((fp=fopen("d:\\Count.txt","w"))==NULL)    {        printf ("Can not open file!");        exit (0);    }        fputc (i,fp);    fclose (fp);     }/* 显示职工信息 */void display (){    FILE *fp;    int f;    if ((fp=fopen("d:\\Count.txt","r"))==NULL)    {        printf ("Can not open file!");        exit (0);    }        f = fgetc (fp);    if ((fp=fopen("d:\\Staff information.txt","r"))==NULL)    {        printf ("Can not open file!");        exit (0);    }/*    printf ("已输入信息的职工有%d人\n",i); */    printf ("工号\t职位\t姓名\t性别\t年龄\t文化程度\t健康状况\n");    for (int a=0;a<f;a++)           {        fscanf (fp,"%ld\t%d\t%s\t%s\t%ld\t%d\t%d",&e[a].num,&e[a].position,e[a].name,e[a].sex,&e[a].age,&e[a].cult,&e[a].state); // 从文件中读出数据,应该用文件的读写函数        printf ("%ld\t%d\t%s\t%s\t%ld\t%d\t\t%d",e[a].num,e[a].position,e[a].name,e[a].sex,e[a].age,e[a].cult,e[a].state);        printf ("\n");    }/* 这个不行    while (!feof (fp))    {        fgets (a,10000,fp);    }*/    fclose (fp);}/* 修改职工信息 *//* 追加职工信息 *//* 删除职工信息 *//* 管理模块选择菜单 */void manage (){    system ("cls");     int choicemanage;    char choice='y';    while (choice == 'Y' || choice == 'y')    {        system ("cls");        printf ("\t\t欢迎进入管理系统\n");        printf ("=======================================\n");        printf ("\t\t请你选择操作类型\n");        printf ("\t\t1输入职工信息\n");        printf ("\t\t2显示职工信息\n");        printf ("\t\t3修改职工信息\n");        printf ("\t\t4追加一个职工信息\n");        printf ("\t\t5删除一个职工信息\n");        printf ("\t\t0退出系统\n");        printf ("=======================================\n");        scanf ("%d",&choicemanage);        system ("cls");        switch (choicemanage)        {            case 1:                input ();               //输入职工信息                break;            case 2:                display ();             //显示职工信息                break;/*            case 3:                chanage ();                //修改职工信息                break;            case 4:                add ();                 //追加职工信息                break;            case 5:                del ();                 //删除职工信息                break;                                         */            case 0:                {                    printf ("谢谢使用再见\n");                    return ;                }            default :                printf ("输入错误请重新输入\n");        }       printf ("是否继续管理?(y/Y)\n");        scanf ("%s",&choice);                  //之前我直接 用格式控制符 %c  根本就没有选择,因为对于%c读入时候,“空格、\n、TAB”等是正常字符,当你最后按 回车键 是把回车键 '\n' 赋值给 choice    }}/* ************  总菜单  ************ */void main (){    int choice;    while (1)    {        printf ("*******************************************\n");        printf ("\t欢迎进入企业人事管理系统中文版\n");        printf ("======================\t\t======================\n");        printf ("\t\t\t请你选择操作\n");        printf ("\t\t\t1进入管理系统\n");        printf ("\t\t\t0退出系统\n");        printf ("======================\t\t======================\n");        scanf ("%d",&choice);        switch (choice)        {        case 1:                              manage ();               //管理系统            break;        case 0:            {                printf ("谢谢使用,再见\n");                exit (0);            }        default:            printf ("输入有误请重新输入\n");        }            }}
查看完整描述

2 回答

?
艾晓健

TA贡献11条经验 获得超0个赞

厉害了、然而我只是个小白、来此为了水晶焰

查看完整回答
反对 回复 2017-01-10
?
艾晓健

TA贡献11条经验 获得超0个赞

怎么一次输入多个员工信息嘞?

回车直接输入了、tab也不行····

查看完整回答
反对 回复 2017-01-10
  • coreIdeaLJJ
    coreIdeaLJJ
    我已经找到问题了?好吧我犯了一个错误:for语句那里多了个分号,去掉后就运行正常了
  • 艾晓健
    艾晓健
    厉害了word ge
  • 2 回答
  • 0 关注
  • 1055 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信