You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
261 lines
5.7 KiB
261 lines
5.7 KiB
#include<stdio.h>
|
|
#include<stdlib.h>
|
|
#include<string.h>
|
|
typedef struct
|
|
{
|
|
char name[10];
|
|
char jiguan[20];
|
|
long long num1;
|
|
long long num2;
|
|
char email[20];
|
|
}person;
|
|
void xinjian(FILE *p);
|
|
void liulan(FILE *p);
|
|
void chaxun(FILE *p);
|
|
void xiugai(FILE *p);
|
|
int shanchu(FILE *p);
|
|
int count=0;
|
|
FILE *p;
|
|
person lxr;
|
|
void main()
|
|
{
|
|
char next='Y';
|
|
char ch;
|
|
int b;
|
|
while(next=='Y')
|
|
{
|
|
printf("---------欢迎使用讯通讯录---------\n");
|
|
printf("功能目录:\n");
|
|
printf("1:新建联系人\n");
|
|
printf("2:查看联系人\n");
|
|
printf("3:查找联系人\n");
|
|
printf("4:修改联系人信息\n");
|
|
printf("5:删除联系人\n");
|
|
printf("6:退出通讯录\n");
|
|
int c;
|
|
printf("请输入序号:");
|
|
scanf("%d",&c);
|
|
switch(c)
|
|
{
|
|
case 1:xinjian(p);
|
|
break;
|
|
case 2:liulan(p);
|
|
break;
|
|
case 3:chaxun(p);
|
|
break;
|
|
case 4:xiugai(p);
|
|
break;
|
|
case 5:b=shanchu(p);
|
|
break;
|
|
case 6:printf("感谢您的使用!");
|
|
break;
|
|
default:printf("请输入正确的序号:\n");
|
|
break;
|
|
}
|
|
if(c==6)
|
|
next='N';
|
|
else
|
|
{
|
|
printf("继续使用系统功能:Y\n退出:其他字母\n");
|
|
if(c==5)
|
|
scanf("%c",&next);
|
|
else
|
|
scanf("%c%c",&ch,&next);
|
|
}
|
|
}
|
|
}
|
|
void xinjian(FILE *p)
|
|
{
|
|
char next='Y';
|
|
p=fopen("txl.sto","rb+");
|
|
if(p==NULL)
|
|
p=fopen("txl.sto","wb+");
|
|
fseek(p,0,SEEK_END);
|
|
while(next=='Y')
|
|
{
|
|
printf("姓名:\n");
|
|
scanf("%s",lxr.name);
|
|
printf("籍贯:\n");
|
|
scanf("%s",lxr.jiguan);
|
|
printf("电话号码1:\n");
|
|
scanf("%lld",&lxr.num1);
|
|
printf("电话号码2:\n");
|
|
scanf("%lld",&lxr.num2);
|
|
printf("邮箱:\n");
|
|
scanf("%s",lxr.email);
|
|
fwrite(&lxr,sizeof(lxr),1,p);
|
|
fflush(stdin);
|
|
printf("是否继续进行建立新联系人;\n是:Y\n否:其他字母\n");
|
|
next=getchar();
|
|
count=count+1;
|
|
}
|
|
fclose(p);
|
|
|
|
|
|
}
|
|
void liulan(FILE *p)
|
|
{ int i=0;
|
|
p=fopen("txl.sto","rb+");
|
|
if(p==NULL)
|
|
{
|
|
printf("通讯录为空,请建立新联系人!\n");
|
|
fclose(p);
|
|
}
|
|
else
|
|
{
|
|
rewind(p);
|
|
printf("\n\nItem list-------------------------------------1\n");
|
|
printf("姓名 籍贯 电话号码1 电话号码2 邮箱\n");
|
|
fread(&lxr,sizeof(lxr),1,p);
|
|
while(!feof(p))
|
|
{
|
|
printf("%s %s %lld %lld %s\n",lxr.name,lxr.jiguan,lxr.num1,lxr.num2,lxr.email);
|
|
fread(&lxr,sizeof(lxr),1,p);
|
|
}
|
|
fclose(p);
|
|
}
|
|
|
|
}
|
|
void chaxun(FILE *p)
|
|
{
|
|
int xuhao1=0;
|
|
p=fopen("txl.sto","rb+");
|
|
if(p==NULL)
|
|
{
|
|
printf("通讯录为空,请建立新联系人!\n");
|
|
fclose(p);
|
|
}
|
|
else
|
|
{
|
|
char mingzi[20];
|
|
printf("请输入要查询的用户名:\n");
|
|
scanf("%s",mingzi);
|
|
fread(&lxr,sizeof(lxr),1,p);
|
|
while(!feof(p))
|
|
{
|
|
if(strcmp(mingzi,lxr.name)==0)
|
|
{
|
|
printf("姓名: 籍贯: 电话号码1: 电话号码2: 邮箱:\n");
|
|
printf("%s %s %lld %lld %s\n",lxr.name,lxr.jiguan,lxr.num1,lxr.num2,lxr.email);
|
|
xuhao1=xuhao1+1;
|
|
}
|
|
|
|
fread(&lxr,sizeof(lxr),1,p);
|
|
}
|
|
if(xuhao1==count&&(strcmp(mingzi,lxr.name)!=0))
|
|
printf("无该联系人\n");
|
|
fclose(p);
|
|
}
|
|
}
|
|
void xiugai(FILE *p)
|
|
{
|
|
rewind(p);
|
|
p=fopen("txl.sto","rb+");
|
|
if(p==NULL)
|
|
{
|
|
printf("通讯录为空,请建立新联系人!\n");
|
|
fclose(p);
|
|
}
|
|
else
|
|
{
|
|
char mingzi[20];
|
|
printf("请输入要修改的有用户名:\n");
|
|
scanf("%s",mingzi);
|
|
while(!feof(p))
|
|
{
|
|
fread(&lxr,sizeof(lxr),1,p);
|
|
if(strcmp(mingzi,lxr.name)==0)
|
|
{
|
|
char next='Y';
|
|
printf("1.姓名:%s\n",lxr.name);
|
|
printf("2.籍贯:%s\n",lxr.jiguan);
|
|
printf("3.电话号码1:%lld\n",lxr.num1);
|
|
printf("4.电话号码2:%lld\n",lxr.num2);
|
|
printf("5.邮箱:%s\n",lxr.email);
|
|
printf("6.取消\n");
|
|
while(next=='Y')
|
|
{
|
|
int xuhao;
|
|
printf("请输入序号:");
|
|
scanf("%d",&xuhao);
|
|
switch(xuhao)
|
|
{
|
|
case 1:printf("请修改姓名:");
|
|
scanf("%s",lxr.name);
|
|
break;
|
|
case 2:printf("请修改籍贯:");
|
|
scanf("%s",lxr.jiguan);
|
|
break;
|
|
case 3:printf("请修改电话号码1:");
|
|
scanf("%lld",&lxr.num1);
|
|
break;
|
|
case 4:printf("请修改电话号码2:");
|
|
scanf("%lld",&lxr.num2);
|
|
break;
|
|
case 5:printf("请修改邮箱:");
|
|
scanf("%s",lxr.email);
|
|
break;
|
|
case 6:break;
|
|
|
|
default:printf("输入错误\n");
|
|
break;
|
|
}
|
|
printf("继续修改:Y\n停止修改:其他字母\n");
|
|
getchar();
|
|
next=getchar();
|
|
}
|
|
fseek(p,-sizeof(lxr),SEEK_CUR);
|
|
fwrite(&lxr,sizeof(lxr),1,p);
|
|
printf("修改成功!\n");
|
|
fclose(p);
|
|
return ;
|
|
}
|
|
|
|
|
|
}
|
|
printf("没有该联系人\n");
|
|
fclose(p);
|
|
return;
|
|
}
|
|
}
|
|
int shanchu(FILE *p)
|
|
{
|
|
p=fopen("txl.sto","rb+");
|
|
if(p==NULL)
|
|
{
|
|
printf("通讯录为空,请建立新联系人!\n");
|
|
fclose(p);
|
|
getchar();
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
person b;
|
|
person blank={};
|
|
char name[20];
|
|
int jishu=0;
|
|
rewind(p);
|
|
printf("请输入您要删除的联系人名称:");
|
|
scanf("%s",name);
|
|
fflush(stdin);
|
|
while(!feof(p))
|
|
{
|
|
fread(&b,sizeof(b),1,p);
|
|
if(strcmp(name,b.name)==0)
|
|
{
|
|
fseek(p,-sizeof(b),SEEK_CUR);
|
|
fwrite(&blank,sizeof(blank),1,p);
|
|
printf("删除成功!\n");
|
|
fclose(p);
|
|
jishu=jishu+1;
|
|
return 0;
|
|
}
|
|
|
|
}
|
|
if(jishu==count&&(strcmp(name,b.name)!=0))
|
|
printf("无该联系人!\n");
|
|
fclose(p);
|
|
return 0;
|
|
}
|
|
}
|