C语言编程通讯录.docx
《C语言编程通讯录.docx》由会员分享,可在线阅读,更多相关《C语言编程通讯录.docx(15页珍藏版)》请在冰点文库上搜索。
![C语言编程通讯录.docx](https://file1.bingdoc.com/fileroot1/2023-8/5/b41b646c-778e-4f0c-a529-8fbb02cf3590/b41b646c-778e-4f0c-a529-8fbb02cf35901.gif)
C语言编程通讯录
C语言编程-通讯录
#include/*字符函数和字符串函数*/
#include/*字符模式函数(调用getch()函数)*/
#include/*输入输出函数*/
inti;
structfriend/*电子通讯录结构定义*/
{
charnum[5];/*编号*/
charname[11];/*名字*/
charsex[2];/*性别*/
charphone[12];/*电话*/
charaddress[26];/*地址*/
charpost_num[11];/*邮编*/
}friends[50];
FILE*fp;
voidData_load()/*数据载入函数*/
{intj;
fp=fopen("friend.txt","r+");/*打开文件friend.txt*/
if(fp==NULL)/*判断是否存在friend.txt,如果不存在则创建*/
{fp=fopen("friend.txt","w");
i=0;
}
else
{for(i=0;i<50;i++)
{j=fgetc(fp);
if(j==EOF)/*判断是否到了文件尾*/
return;
fseek(fp,i*sizeof(structfriend),0);
fread(&friends[i],sizeof(structfriend),1,fp);/*从文件中读取一条记录*/
}
}
}
voidMenu_Select() /*显示菜单界面*/
{
printf("\n");
printf("\n");
printf("\n");
printf("AddressBookManagementSystem\n");
printf("\n");
printf("======================\n");
printf("1.AddressbookdataEntry\n");/*数据输入*/
printf("2.AddressBookdataShow\n");/*数据显示*/
printf("3.AddressBookdataSearch\n");/*数据查找*/
printf("4.AddressBookdataAlter\n");/*数据修改*/
printf("5.AddressBookdataInsert\n");/*数据插入*/
printf("6.AddressBookdataDelete\n");/*数据删除*/
printf("7.AddressBookdataSave\n");/*数据保存*/
printf("0.Exit\n");/*退出*/
printf("======================\n");
printf("Pleasechioce0-7\n\n");
}
intData_check(intk,charID[5])/*检查通讯录中是否存在相同ID或ID输入格式错误*/
{
intj;
if(ID[0]=='0')
k=1;
for(j=0;ID[j]!
='\0';j++)
{
if(ID[j]>'9'||ID[j]<'0')
k++;
}
for(j=0;j
{
if(strcmp(ID,friends[j].num)==0)
k++;
}
returnk;
}
voidData_Input()/*数据输入函数*/
{
charyes_no='1';
charID[5];
intk=0;
if(i>=50)
printf("\n\nStoragefull!
\n\n");
if(i<50)
{
printf("************************************************************************\n");
printf("*******************AddAddressBookInformation***********************\n");
printf("************************************************************************\n");
printf("************************************************************************\n");
}
for(;i<50;i++)
{
do
{
switch(yes_no)
{
case'1':
/*如果输入为'1',则进行数据输入*/
printf("******No.(4)Name(10)Sex(M/F)Phone(11)Address(25)Zip_Code(10)*******\n");
scanf("%s%s%s%s%s%s",ID,friends[i].name,friends[i].sex,friends[i].phone,friends[i].address,friends[i].post_num);
Data_check(k,ID);
while(Data_check(k,ID)>0)/*检查输入的ID是否已存在,如果存在重新输入*/
{
printf("TheNo.alreadyexistsOrTheNo.isn'tcorrect,pleasere-enter\n");
scanf("%s",ID);
Data_check(k,ID);
}
strcpy(friends[i].num,ID);
if(i<49)
{
printf("\n\nWhethertobecontinue?
Y
(1)/N(0)\n\n");
yes_no=getch();
}
if(i>=49)
printf("\n\nStoragefull!
\n\n");
break;
case'0':
break;
default:
yes_no=getch();
}
}while(yes_no!
='1'&&yes_no!
='0');/*如果输入的不是'1'或'0'则重新输入*/
if(yes_no=='0')/*如果输入'0'则退出输入函数*/
{
i++;
break;
}
}
}
intThe_Size(chara[],charb[])/*比较两个ID的大小*/
{
intj,t;
if((j=strlen(a)-strlen(b))>0)t=1;
if((j=strlen(a)-strlen(b))<0)t=-1;
if((j=strlen(a)-strlen(b))==0)
{
if(strcmp(a,b)>0)t=1;
if(strcmp(a,b)<0)t=-1;
if(strcmp(a,b)==0)t=0;
}
returnt;
}
voidData_Show()/*数据输出函数*/
{intj,k;
charm;
structfriendt;
printf("********************************************************************\n");
printf("No.NameSexPhoneAddressZip_Code\n");
printf("********************************************************************\n");
for(j=0;j{for(k=0;k{
if(The_Size(friends[k].num,friends[k+1].num)==1)
{
t=friends[k];
friends[k]=friends[k+1];
friends[k+1]=t;
}
}
}
for(j=0;j
{
printf("%4s%10s%4s%11s%20s%10s\n",friends[j].num,friends[j].name,friends[j].sex,friends[j].phone,friends[j].address,friends[j].post_num);
m=getch();
if(m=='')
break;
}
printf("\n\nThereare%ddatainthebook.\n\n",i);
}
voidData_Search()/*数据查找函数*/
{
chark;
intj,a,b;
charID[5];
charNAME[11];
printf("SearchbyNo.:
1\n");
printf("Searchbyname:
2\n");
k=getch();
switch(k)
{
case'1':
/*按ID查找*/
a=0;
printf("\n\nPleaseentertheNo.\n\n");
scanf("%s",ID);
for(j=0;j
{
if(strcmp(ID,friends[j].num)==0)
{
a++;
printf("No.NameSexPhoneAddressZip_Code\n");
printf("%4s%10s%4s%11s%20s%10s\n",friends[j].num,friends[j].name,friends[j].sex,friends[j].phone,friends[j].address,friends[j].post_num);
}
}
if(a==0)
printf("DonothavetofindtheNo.!
\n\n");
break;
case'2':
/*按姓名查找*/
b=0;
printf("\n\nPleaseentertheName\n\n");
scanf("%s",NAME);
for(j=0;j
{
if(strcmp(NAME,friends[j].name)==0)
{
b++;
printf("No.NameSexPhoneAddressZip_Code\n");
printf("%4s%10s%4s%11s%20s%10s\n",friends[j].num,friends[j].name,friends[j].sex,friends[j].phone,friends[j].address,friends[j].post_num);
}
}
if(b==0)
printf("DonothavetofindtheName!
\n\n");
break;
default:
printf("\n\nError!
\n");
break;
}
}
voidData_Insert()/*数据插入函数*/
{if(i>=50)
printf("\n\nStoragefull!
\n\n");
if(i<50)
{
charID[5];
intk=0;
printf("PleaseentertheNo.thatyouwanttoinsert.\n");
scanf("%s",ID);
Data_check(k,ID);
printf("%d",Data_check(k,ID));/*检查所需插入的ID是否已存在,如果存在重新输入*/
while(Data_check(k,ID)>0)
{
printf("TheNo.alreadyexistsOrTheNo.isn'tcorrect,pleasere-enter\n");
scanf("%s",ID);
Data_check(k,ID);
}
strcpy(friends[i].num,ID);/*插入数据*/
printf("******Name(10)Sex(M/F)Phone(11)Address(30)Zip_Code(10)*******\n");scanf("%s%s%s%s%s",friends[i].name,friends[i].sex,friends[i].phone,friends[i].address,friends[i].post_num);
i++;
}
}
voidData_Delete()/*数据删除函数*/
{
intk,t=0;
charID[5];
printf("\n\nPleaseentertheNo.needtobedeleted\n\n");
scanf("%s",ID);
for(k=0;k
{
if(strcmp(friends[k].num,ID)==0)
{
t++;
break;
}
}
if(t==0)
printf("\n\nTheNo.doesnotExist!
\n\n");
if(t>0)
{
for(;k
{
friends[k]=friends[k+1];
}
printf("\n\nDeletesuccess!
\n\n");
i=i-1;
}
}
voidData_Alter()/*修改函数*/
{
intk,t=0;
charID[5];
printf("\n\nPleaseentertheNo.tobeAmended\n\n");
scanf("%s",ID);
for(k=0;k
{
if(strcmp(friends[k].num,ID)==0)
{
t++;
break;
}
}
if(t==0)
printf("\n\nTheNo.doesnotExist!
\n\n");
if(t>0)
{
strcpy(friends[k].num,ID);
printf("******Name(10)Sex(M/F)Phone(11)Address(30)Zip_Code(10)*******\n");
scanf("%s%s%s%s%s",friends[k].name,friends[k].sex,friends[k].phone,friends[k].address,friends[k].post_num);
printf("\n\nAlterSuccess!
\n\n");
}
}
voidData_Save()/*数据保存函数*/
{
intj;
fp=fopen("friend.txt","w");
for(j=0;j<=i-1;j++)
{
fwrite(&friends[j],sizeof(structfriend),1,fp);
}
printf("\n\nSaveSuccess!
\n\n");
}
voidExit()/*退出函数*/
{
charflag;
printf("SaveorNot?
(Y/N)\n");/*判断是否保存*/
do{
flag=getch();
switch(flag)
{
case'Y':
/*保存*/
Data_Save();
break;
case'y':
/*保存*/
Data_Save();
break;
case'N':
break;
case'n':
break;
}
}while(flag!
='Y'&&flag!
='y'&&flag!
='N'&&flag!
='n');
}
voidmain()
{charchoose,yes_no;
Data_load();
do
{
Menu_Select();
choose=getch();
switch(choose)
{
case'1':
Data_Input();break;/*输入*/
case'2':
Data_Show();break;/*显示*/
case'3':
Data_Search();break;/*查找*/
case'4':
Data_Alter();break;/*修改*/
case'5':
Data_Insert();break;/*插入*/
case'6':
Data_Delete();break;/*删除*/
case'7':
Data_Save();break;/*保存*/
case'0':
Exit();break;/*退出*/
default:
printf("Error!
\n");
}
if(choose=='0')
break;
printf("Wouldyouliketobecontinue?
(Y/N)\n");
do
{
yes_no=getch();
}while(yes_no!
='Y'&&yes_no!
='y'&&yes_no!
='N'&&yes_no!
='n');
if(yes_no=='N'||yes_no=='n')
{
Exit();
break;
}
}while(yes_no!
='Y'||yes_no!
='y');