/*

   项目

   人员信息管理系统练习

   最多10个人

   把信息保存到文件中去

 

*/

 

#include <stdio.h>     人员信息管理系统练习

#include <string.h>

int save()  //用来保存人员信息

{

   int num = 0,ids[10] = {},id = 0,pos = 0;   //num用来记录人员个数,pos循环变量

   char name[20] = {},buf[20] = {};                //name记录人员的姓名,buf用来判断是否继续输入下一个人员信息

   float salary = 0.0f;                         //用来记录人员的工资

   FILE * p_file = fopen("a.bin","ab");     //文件指针,在当位置创建文件a.bin

   if (!p_file)                                     //判断文件是否为空

   {

        printf ("文件打开失败:\n");

        return 0;

   }

   while (1)

   {

        printf ("请输入人员id: ");

        scanf ("%d",&id);

        scanf("%*[^\n]"); //清空输入缓冲区

        scanf("%*c");         //清空输入缓冲区

 

        for (pos = 0;pos <= num - 1 ;pos++ )

        {

              if (id == ids[pos])   //判断ID是否相同,相同结止循环

              {

                   break;

              }

        }

        if (pos <= num - 1)   //判断上层for循环是否正常结束,break为非正常结束

        {

              continue;        //跳过本次循环

        }

         printf ("请输入人员姓名:");

        fgets(name,20,stdin);    //fget记取字符串比scanf安全

        if (strlen(name) == 19 && name[18] != '\n')  

        {

              scanf("%*[^\n]");   //清空输入缓冲区

              scanf("%*c");         //清空输入缓冲区

        }

        printf ("请输入人员工资:");

        scanf("%g",&salary);

        scanf("%*[^\n]");  //清空输入缓冲区

        scanf("%*c");         //清空输入缓冲区

        fwrite(&id,sizeof(int),1,p_file);     //写入文件

        fwrite(name,sizeof(char),20,p_file);

        fwrite(&salary,sizeof(float),1,p_file);

         ids[num] = id;    //id放入ids数组中去

        num++;                 //人员个数加1

        printf ("是否要录入下一个员工信息:");

        fgets(buf,20,stdin);

        if (strlen(buf) == 19 && name[18] != '\n')  

        {

              scanf("%*[^\n]");   //清空输入缓冲区

              scanf("%*c");         //清空输入缓冲区

        }

        if (buf[0] != 'y' && buf[0] != 'Y') //判断用户输入的是否是y

        {

              break;

        }

   }

   fclose(p_file);

   return num;

 

}

int main()

{

   printf ("共录入了%d个用户信息\n",save());

  

   return 0;

}