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

http://img.mukewang.com/58676e0d0001d92019201027.jpg

http://img.mukewang.com/58676ea6000132e913450793.jpg

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 100

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

coreIdeaLJJ
浏览 1056回答 2
2回答

艾晓健

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

艾晓健

怎么一次输入多个员工信息嘞?回车直接输入了、tab也不行····
打开App,查看更多内容
随时随地看视频慕课网APP