人员信息管理系统练习
/*
项目
人员信息管理系统练习
最多10个人
把信息保存到文件中去
*/
#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;
}
转载于:https://blog.51cto.com/fwguan/1693058