用C语言写一个人员文件管理系统(一)

题目如下:
1.输入三个人的信息(姓名,年龄。性别。家庭住址),并保存到txt文件中。再从文件中读取信息显示在屏幕上;
2.实现人员信息重复显示功能;
3.实现人员信息的添加。
过程如下:
首先建立一个结构体 message

#include<stdio.h>
#include<stdlib.h>
#define N 3   //定义三个人
struct message{    //结构体定义
	char name[20];
	int age;
	char sex[20];
	char add[50];
};

主函数中,首先实现信息录入功能,并使用函数fprintf保存到文件中,我这里提前在D盘建立了一个123.txt文件


FILE *fp;   //定义文件指针
 int i,c,b,a;
 struct message me[N];   //定义结构体数组
 if((fp=fopen("d:\\123.txt","r+"))==NULL)   //打开文件
 {
	printf("error");
	exit(0);
 }
 for(i=0;i<N;i++)     //输入信息
 {
	printf("请输入第%d个人的信息:",i+1);
	scanf("%s%d%s%s",me[i].name ,&me[i].age ,me[i].sex ,me[i].add);
	fprintf(fp,"%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add); //向文件中写数据
 }
 fclose(fp);   //关闭文件

信息录入文件后,在从文件中读出来,使用函数fscanf

printf("姓名\t年龄\t性别\t家庭住址\n");
 fp=fopen("d:\\123.txt","w+"); //打开文件
 for(i=0;i<N;i++)
 {
 fscanf(fp,"%s%d%s%s",me[i].name ,&me[i].age ,me[i].sex ,me[i].add);  //从文件中读数据
 printf("%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add );   //显示数据

 }
fclose(fp);  //关闭文件

之后进行人员信息重复显示,首先输入要显示的人是第几个,然后其相关信息便可以显示在屏幕上

printf("请输入要显示第几个人:\n");
scanf("%d",&c);
for(i=0;i<N;i++)  
if (i+1==c)
printf("%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add );  //显示数据
}  

最后可以进行人员添加,和输入信息并保存到文件中类似,注意打开文件,要改为可追加方式

/*写入文件*/
fp=fopen("d:\\123.txt","a+");
printf("请输入是否追加:(1:追加,0:不追加)");
scanf("%d",&b);
if(b==1){
	printf("请输入要追加人数:");
	scanf("%d",&a);
	for(i=N;i<a+N;i++)
  printf("请输入第%d个人的信息:",i+1);
	scanf("%s%d%s%s",me[i].name ,&me[i].age ,me[i].sex ,me[i].add);
	fprintf(fp,"%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add); //向文件中写数据

}
fclose(fp);
/*从文件中读出*/
printf("姓名\t年龄\t性别\t家庭住址\n");
 fp=fopen("d:\\123.txt","w+");
 for(i=0;i<a+N;i++)
 {
 fscanf(fp,"%s%d%s%s",me[i].name ,&me[i].age ,me[i].sex ,me[i].add);  //从文件中读数据
 printf("%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add );

 }
fclose(fp);

显示如下:
首先输入信息:
在这里插入图片描述
然后查看信息复显:在这里插入图片描述
最后添加信息:
程序结束。
代码附录

#include<stdio.h>
#include<stdlib.h>
#define N 3
struct message{
	char name[20];
	int age;
	char sex[20];
	char add[50];
};

void main()
{
 FILE *fp;
 int i,c,b,a;
 struct message me[N];
 if((fp=fopen("d:\\123.txt","w"))==NULL)
 {
	printf("error");
	exit(0);
 }
 for(i=0;i<N;i++)
 {
	printf("请输入第%d个人的信息:",i+1);
	scanf("%s%d%s%s",me[i].name ,&me[i].age ,me[i].sex ,me[i].add);
	fprintf(fp,"%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add); //向文件中写数据
 }
 fclose(fp);
printf("姓名\t年龄\t性别\t家庭住址\n");
 fp=fopen("d:\\123.txt","r");
 for(i=0;i<N;i++)
 {
 fscanf(fp,"%s%d%s%s",me[i].name ,&me[i].age ,me[i].sex ,me[i].add);  //从文件中读数据
 printf("%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add );

 }
fclose(fp);

printf("请输入要显示第几个人:\n");
scanf("%d",&c);
for(i=0;i<N;i++)
{
   
if (i+1==c)
{
printf("%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add );

}
}  

printf("请输入是否追加:(1:追加,0:不追加)");
scanf("%d",&b);
if(b==1){
	fp=fopen("d:\\123.txt","a+");
	printf("请输入要追加人数:");
	scanf("%d",&a);
	for(i=N;i<N+a;i++){
    printf("请输入第%d个人的信息:",i+1);
	scanf("%s%d%s%s",me[i].name ,&me[i].age ,me[i].sex ,me[i].add);
	fprintf(fp,"%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add); //向文件中写数据

}
fclose(fp);

printf("姓名\t年龄\t性别\t家庭住址\n");
 fp=fopen("d:\\123.txt","r+");
 for(i=0;i<N+a;i++)
 {
 fscanf(fp,"%s%d%s%s",me[i].name ,&me[i].age ,me[i].sex ,me[i].add);  //从文件中读数据
 printf("%s\t%d\t%s\t%s\n",me[i].name ,me[i].age ,me[i].sex ,me[i].add );

 }
fclose(fp);
}
else ;
}
原创文章 6 获赞 5 访问量 146

猜你喜欢

转载自blog.csdn.net/weixin_44868393/article/details/105824328