#include \x0d\x0a#include \x0d\x0a#include \x0d\x0a#include \x0d\x0a#define N 100 void input()//添加新用户
函数 \x0d\x0avoid amend()//修改用户信息函数 \x0d\x0avoid delete_client()//删除用户信息函数 \x0d\x0avoid demand_client()//用户信息查询函数 \x0d\x0avoid collect_telephone()//用户信息汇总函数 \x0d\x0avoid save_client(struct telephone message)//保存函数 \x0d\x0avoid demand_name()//按用户名查询 \x0d\x0avoid demand_telephone()//按电话号码查询 \x0d\x0a \x0d\x0astruct telephone \x0d\x0a{ \x0d\x0achar client_name[20]\x0d\x0achar client_address[30]\x0d\x0achar client_telephone[15]\x0d\x0a} //添加新用户函数 \x0d\x0avoid input() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0achar reply='y'\x0d\x0achar save='y'\x0d\x0awhile (reply=='y') \x0d\x0a{ printf("用户
姓名:")\x0d\x0ascanf("%s",message.client_name)\x0d\x0a \x0d\x0aprintf("电话号码:")\x0d\x0ascanf("%s",message.client_telephone)save_client(message)\x0d\x0a \x0d\x0aprintf("要继续吗?(y/n):")\x0d\x0ascanf(" %c",&reply)\x0d\x0a} \x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0a} //保存函数 \x0d\x0avoid save_client(struct telephone message) \x0d\x0a{ \x0d\x0aFILE *fp\x0d\x0afp=fopen("message.dat","a+")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0afwrite(&message,sizeof(struct telephone),1,fp)\x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("\n打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0a} //修改用户信息函数 \x0d\x0avoid amend() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0aFILE *fp\x0d\x0achar amend_name[20]\x0d\x0achar reply='y'\x0d\x0achar found='y'\x0d\x0achar save='y'\x0d\x0aint size=sizeof(struct telephone)\x0d\x0awhile (reply=='y') \x0d\x0a{ \x0d\x0afound='n'\x0d\x0afp=fopen("message.dat","r+w")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0aprintf("\n请输入要修改的姓名:")\x0d\x0ascanf("%s",amend_name)\x0d\x0awhile ((fread(&message,size,1,fp))==1) \x0d\x0a{ \x0d\x0aif ((strcmp(amend_name,message.client_name))==0) \x0d\x0a{ \x0d\x0afound='y'\x0d\x0abreak\x0d\x0a} \x0d\x0a} \x0d\x0aif (found=='y') \x0d\x0a{ printf("==========================================\n")\x0d\x0aprintf("\n用户姓名:%s\n",message.client_name) \x0d\x0a \x0d\x0aprintf("\n电话号码:%s\n",message.client_telephone)\x0d\x0aprintf("==========================================\n")\x0d\x0aprintf("修改用户信息:\n")\x0d\x0aprintf("\n用户姓名:")\x0d\x0ascanf("%s",message.client_name)printf("\n电话号码:")\x0d\x0ascanf("%s",message.client_telephone)\x0d\x0aprintf("\n要保存吗?(y/n):")\x0d\x0ascanf(" %c",&save)\x0d\x0aif (save=='y') \x0d\x0a{ \x0d\x0afseek(fp,-size,1)\x0d\x0afwrite(&message,sizeof(struct telephone),1,fp)\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("无此人信息!\n")\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aprintf("要继续吗?(y/n):")\x0d\x0ascanf(" %c",&reply)\x0d\x0a} \x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0a} //删除用户信息函数 \x0d\x0avoid delete_client() \x0d\x0a{ \x0d\x0astruct telephone message[N]\x0d\x0astruct telephone temp_str\x0d\x0astruct telephone delete_str\x0d\x0aint i=0,j=0\x0d\x0achar reply='y'\x0d\x0achar found='y'\x0d\x0achar confirm='y'\x0d\x0achar delete_name[20]\x0d\x0aFILE *fp\x0d\x0awhile (reply=='y') \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0afp=fopen("message.dat","r")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0ai=0\x0d\x0afound='n'\x0d\x0aprintf("\n请输入姓名:")\x0d\x0ascanf("%s",delete_name)\x0d\x0awhile ((fread(&temp_str,sizeof(struct telephone),1,fp))==1) \x0d\x0a{ \x0d\x0aif ((strcmp(delete_name,temp_str.client_name))==0) \x0d\x0a{ \x0d\x0afound='y'\x0d\x0adelete_str=temp_str\x0d\x0a}//查找要删除的记录 \x0d\x0aelse \x0d\x0a{ \x0d\x0amessage[i]=temp_str\x0d\x0ai++\x0d\x0a}//将其它无关记录保存起来 \x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aif (found=='y') \x0d\x0a{ \x0d\x0aprintf("==========================================\n")\x0d\x0aprintf("用户姓名:%s\n",delete_str.client_name)\x0d\x0a \x0d\x0aprintf("电话号码:%s\n",delete_str.client_telephone)\x0d\x0aprintf("==========================================\n")\x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("无此人信息,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0abreak\x0d\x0a} \x0d\x0aprintf("确定要删除吗?(y/n):")\x0d\x0ascanf(" %c",&confirm)\x0d\x0aif (confirm=='y') \x0d\x0a{ \x0d\x0afp=fopen("message.dat","w")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0afor(j=0j3) \x0d\x0a{ \x0d\x0aprintf("请输入1-6之间的整数\n")\x0d\x0aprintf("按任意键返回菜单??\n") \x0d\x0a getchar()\x0d\x0acontinue\x0d\x0a} \x0d\x0aif (choice==1) \x0d\x0a{ \x0d\x0ademand_name()\x0d\x0a} \x0d\x0aelse if (choice==2) \x0d\x0a{ \x0d\x0ademand_telephone()\x0d\x0a} \x0d\x0a} \x0d\x0a} //按用户名查询 \x0d\x0avoid demand_name() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0aFILE *fp\x0d\x0achar amend_name[20]\x0d\x0achar reply='y'\x0d\x0achar found='y'\x0d\x0awhile (reply=='y') \x0d\x0a{ \x0d\x0afound='n'\x0d\x0afp=fopen("message.dat","r+w")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0aprintf("\n请输入姓名:")\x0d\x0ascanf("%s",amend_name)\x0d\x0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) \x0d\x0a{ \x0d\x0aif ((strcmp(amend_name,message.client_name))==0) \x0d\x0a{ \x0d\x0afound='y'\x0d\x0abreak\x0d\x0a} \x0d\x0a} \x0d\x0aif (found=='y') \x0d\x0a{ printf("==========================================\n")\x0d\x0aprintf("用户姓名:%s\n",message.client_name)printf("电话号码:%s\n",message.client_telephone)\x0d\x0aprintf("==========================================\n")\x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("无此人信息!\n")\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aprintf("要继续吗?(y/n):")\x0d\x0ascanf(" %c",&reply)\x0d\x0a} \x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0a} //按电话号码查询 \x0d\x0avoid demand_telephone() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0aFILE *fp\x0d\x0achar telephone[20]\x0d\x0achar reply='y'\x0d\x0achar found='y'\x0d\x0awhile (reply=='y') \x0d\x0a{ \x0d\x0afound='n'\x0d\x0afp=fopen("message.dat","r+w")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0aprintf("\n请输入电话号码:")\x0d\x0ascanf("%s",telephone)\x0d\x0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) \x0d\x0a{ \x0d\x0aif ((strcmp(telephone,message.client_telephone))==0) \x0d\x0a{ \x0d\x0afound='y'\x0d\x0abreak\x0d\x0a} \x0d\x0a} \x0d\x0aif (found=='y') \x0d\x0a{ printf("==========================================\n")\x0d\x0aprintf("用户姓名:%s\n",message.client_name)printf("电话号码:%s\n",message.client_telephone)\x0d\x0aprintf("==========================================\n")\x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("无此电话号码的有关信息!\n")\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aprintf("要继续吗?(y/n):")\x0d\x0ascanf(" %c",&reply)\x0d\x0a} \x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0a} //用户信息汇总函数 \x0d\x0avoid collect_telephone() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0aFILE *fp\x0d\x0afp=fopen("message.dat","r")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0aprintf("\n用户姓名\t\t电话号码\n")\x0d\x0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) \x0d\x0a{ \x0d\x0aprintf("\n%-24s",message.client_name)printf("%-12s\n",message.client_telephone)\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetch()\x0d\x0a} void main() \x0d\x0a{ \x0d\x0achar choice[10]=""\x0d\x0aint len=0\x0d\x0awhile (choice[0]!='7') \x0d\x0a{ printf("\t==========电话本号码查询系统=============\n")printf("\t\t 1、添加新
联系人\n")\x0d\x0aprintf("\t\t 2、修改联系人信息\n")\x0d\x0aprintf("\t\t 3、删除联系人信息\n")\x0d\x0aprintf("\t\t 4、联系人信息查询\n")\x0d\x0aprintf("\t\t 5、联系人信息汇总\n")\x0d\x0a \x0d\x0aprintf("\t\t 7、退出\n")\x0d\x0aprintf("\t=========================================\n")\x0d\x0aprintf("请选择(1-7):")\x0d\x0ascanf("%s",choice)\x0d\x0alen=strlen(choice)\x0d\x0aif (len>1) \x0d\x0a{ \x0d\x0aprintf("请输入1-6之间的整数\n")\x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0acontinue\x0d\x0a} switch (choice[0]) { \x0d\x0acase '1': \x0d\x0ainput()\x0d\x0abreak\x0d\x0acase '2': \x0d\x0aamend()\x0d\x0abreak\x0d\x0acase '3': \x0d\x0adelete_client()\x0d\x0abreak\x0d\
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct people
{ char name[100]
char num[100]
struct people* next
}
struct people* head
struct people* p
void inputpeo()
{ //插入头节点后
while(1)
{ struct people* newpeople = (people*) malloc(sizeof(people))
p = head
printf("输入姓名:\n")
scanf("%s", newpeople->name)
printf("输入电话:\n")
scanf("%s", newpeople->num)
newpeople->next = head->next
head->next = newpeople
printf("按任意键接着输入,按R返回目录\n")
getchar()
char ch = getchar()
if(ch == 'R' || ch == 'r')
{ break
}
}
}
void showpeo()
{ for(p = headp != NULLp = p->next)
{ if(p != head)
{ printf("姓名:%s 电话:%s\n", p->name, p->num)
}
}
}
void deletepeo(people *peo)
{ people *q = head->next
for(p = headq != NULLq = q->next, p = p->next)
{ if(strcmp(q->name , peo->name ) == 0)
{ p->next = q->next
free(q)
}
}
if(q == NULL) printf("未找到联系人\n")
}
void find(people *peo)
{ for(p = headp != NULLp = p->next)
{ if(p != head)
{ if(strcmp(p->name , peo->name ) == 0)
{ printf("姓名:%s 电话:%s\n", p->name , p->num )
return
}
}
}
if(p == NULL) printf("没找到联系人\n")
}
void change(people *peo)
{ for(p = headp != NULLp = p->next)
{ if(p != head)
{ if(strcmp(p->name , peo->name ) == 0)
{ printf("姓名:%s 电话:%s\n", p->name , p->num )
printf("现将电话修改为:\n")
scanf("%s", p->num )
return
}
}
}
if(p == NULL) printf("没找到联系人\n")
}
void menu()
{ printf("输入1录入联系人\n")
printf("输入2显示联系人\n")
printf("输入3删除联系人\n")
printf("输入4查找联系人\n")
printf("输入5修改联系人\n")
printf("输入6退出系统\n")
}
int main()
{ head = (people*) malloc(sizeof(people))
head->next = NULL//定义了一个可以指向结构体的指针
menu()
int n
scanf("%d", &n)
while (n != 6)
{ people *peo = (people*) malloc(sizeof(people))
switch (n)
{ case 1://1.录入信息
inputpeo()
break
case 2://2.显示信息
showpeo()
break
case 3://3.删除信息
printf("输入需要删除的人的名字:\n")
scanf("%s", peo->name )
deletepeo(peo)
break
case 4://4.查找信息
printf("输入需要查找的人的名字:\n")
scanf("%s", peo->name)
find(peo)
break
case 5://5.修改信息
printf("输入需要修改的人的名字:\n")
scanf("%s", peo->name)
change(peo)
break
default:
printf("输入错误,重新输入\n")
break
}
menu()
scanf("%d", &n)
}
printf("结束")
return 0
}