实现的功能:
1、从本地文件加载原有数据
2、添加联系人
3、删除信息
4、修改信息
5、显示全部联系人
6、查找并查看联系人
7、保存到本地文件
#include<stdio.h>
#define size 10000
struct tel //定义结构体数组
{
char name[20];
int age;
long phnum;
long qq;
char addr[20];
}stu[size],*p;
int length; //定义全局变量
void cover()
{
printf("\t\t *****************************\t\t\n");
printf("\t\t * 欢迎使用此程序\t*\n");
printf("\t\t * 1.添加信息\t\t*\n");
printf("\t\t * 2.显示信息\t\t*\n");
printf("\t\t * 3.查询信息\t\t*\n");
printf("\t\t * 4.修改信息\t\t*\n");
printf("\t\t * 5.删除信息\t\t*\n");
printf("\t\t * 6.退出 \t\t*\n");
printf("\t\t *****************************\t\t\n");
}
void init()
{
FILE *fp;
int i=0;
length=0;
fp=fopen("d:\\shi","r");
if(fp==NULL)
{
printf("\tthe first use !");
fp=fopen("d:\\shi","w+");
}
else
{
p=stu;
while(fread(p,sizeof(struct tel),1,fp)==1)
{
p++;i++;
}
printf("\t已成功加载%d个文件",i);
}
length=i;
fclose(fp);
}
void add()
{
FILE *fp;
fp=fopen("d:\\shi","w+");
p=length+stu;
printf("\n请输入姓名:");
scanf("%s",p->name);
printf("\n请输入年龄:");
scanf("%d",&p->age);
printf("\n请输入电话号码:");
scanf("%ld",&p->phnum);
printf("\n请输入qq号:");
scanf("%ld",&p->qq);
printf("\n请输入地址:");
scanf("%s",p->addr);
length++;
printf("\n现在已有数据%d个\n\n",length);
fclose(fp);
}
void save()
{
FILE *fp;
fp=fopen("d:\\shi","w+");
for(p=stu;p<stu+length;p++)
fwrite(p,sizeof(struct tel),1,fp);
fclose(fp);
}
void show()
{
FILE *fp;
p=stu;
fp=fopen("d:\\shi","r");
if(fp!=NULL)
{
printf("姓名\t\t年龄\t\t电话\t\tQQ号\t\t地址\t \n");
while(fread(p,sizeof(struct tel),1,fp)==1)
{
printf("%s\t\t%d\t\t%ld\t\t%ld\t\t%s",p->name,p->age,p->phnum,p->qq,p->addr);
printf("\n");
p++;
}
}
else
{
printf("错误\n");
exit(0);
}
fclose(fp);
}
int search()
{
FILE *fp;
char names[20];
int i=0;
printf("请输入人员姓名:");
if((fp=fopen("d:\\shi","r+"))==NULL)
{
printf("文件不存在\n");
exit(0);
}
else if((fp=fopen("d:\\shi","r+"))!=NULL)
{
scanf("%s",names);
for(p=stu;p<length+stu;p++)
if((strcmp(names,p->name))==0)
{
i++;
return i;
}
if (p>=stu+length)
return -1;
}
fclose(fp);
}
void delete()
{
int i,k;
k=search();
if(k!=-1)
{
for(i=k;i<length-1;i++)
{
p[i-1]=p[i];
}
length--;
}
else
{
printf("没有此人,无法删除!");
}
}
void change()
{
FILE *fp;
int k,i;
fp=fopen("d:\\shi","r+");
k=search();
if(k!=-1)
{
i=k-1;
printf("\n请输入姓名:");
scanf("%s",stu[i].name);
printf("\n请输入年龄:");
scanf("%d",&stu[i].age);
printf("\n请输入电话号码:");
scanf("%ld",&stu[i].phnum);
printf("\n请输入qq号:");
scanf("%ld",&stu[i].qq);
printf("\n请输入地址:");
scanf("%s",stu[i].addr);
}
else
printf("没有此人,无法修改!");
fclose(fp);
}
int xuanze()
{
char k;
int i=0;
scanf("%c",&k);
if(k=='y')
i++;
return i;
}
main() //主函数
{
int x;
do
{
system("cls"); /*清屏*/
init();
printf("\n");
cover();
printf("请输入选择的菜单:");
scanf("%d",&x);
switch(x)
{
case 1:
add();
save();
printf("继续使用软件吗?(y/n)\n");
xuanze();
if((xuanze())==1)
break;
else
exit(0);
case 2:
show();
printf("继续使用软件吗?(y/n)\n");
xuanze();
if(xuanze()==1)
break;
else
exit(0);
case 3:
search();
printf("姓名\t\t年龄\t\t电话\t\tQQ号\t\t地址\t \n");
printf("%s\t\t%d\t\t%ld\t\t%ld\t\t%s\n",p->name,p->age,p->phnum,p->qq,p->addr);
printf("继续使用软件吗?(y/n)\n");
xuanze();
if(xuanze()==1)
break;
else
exit(0);
case 4:
change();
save();
printf("继续使用软件吗?(y/n)\n");
xuanze();
if(xuanze()==1)
break;
else
exit(0);
case 5:
delete();
save();
printf("继续使用软件吗?(y/n)\n");
xuanze();
if(xuanze()==1)
break;
else
exit(0);
case 6:
exit(0);
default:
printf("输入错误!\n");
exit(0);
}
}while(1);
}