1、C语言程序设计学生通讯录管理系统192020年4月19日文档仅供参考#include stdio.h#include stdlib.h#include string.h#include conio.h#include stdlib.h#define null 0struct recordchar name20;char phone20;char adress40;char postcode10;char e_mail30;student500;struct LinkListstruct record US;struct LinkList *next;a;struct LinkList *hea
2、d=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();void main()system(cls);for(;)switch(menu_select()case 0:adduser();break;case 1:list();break;case 2:search();break;case 3:add();break; case 4:del
3、e();break;case 5:save();break;case 6:exit(0);menu_select()char s80;int a;printf(*_* press any key enter menu! *_* n);getch();system(cls);printf(tt*MENU*nn);printf(tt 0. 输入记录n);printf(tt 1. 显示记录 n);printf(tt 2. 按姓名查找n);printf(tt 3. 插入记录 n);printf(tt 4. 删除记录n);printf(tt 5. 记录保存文件n);printf(tt 6. Quitn)
4、;printf(tt*n);doprintf(n Enter you choice(011):);scanf(%s,s);a=atoi(s);while (a11);return a;adduser()printf(ntt* 请输入用户信息 *n);printf(ntt输入姓名:);scanf(%s,&studentnum.name);printf(ntt输入电话号码:);scanf(%s,&studentnum.phone);printf(ntt输入地址:);scanf(%s,&studentnum.adress);printf(ntt输入邮编:);scanf(%s,&studentnum.
5、postcode);printf(ntt输入e-mail:);scanf(%s,&studentnum.e_mail);num+;printf(ntt是否继续添加?(Y/N):);if (getch()=y)adduser();return(0);list()int i;system(cls);if(num!=0)printf(ntt* 以下为通讯录所有信息*);for (i=0;inum;i+) printf(ntt姓名: %s,studenti.name);printf(ntt电话: %s,studenti.phone);printf(ntt地址: %s,studenti.adress);
6、printf(ntt邮编: %s,studenti.postcode);printf(ntte-mail:%s,studenti.e_mail);printf(tt);if (i+1num)printf(ntt_);system(pause);printf(ntt*);elseprintf(ntt通讯录中无任何纪录);printf(ntt按任意键返回主菜单:);getch();return(0);search()int mark=0;int i;int a=0;printf(ntt* 按姓名查找 *);char name20;printf(ntt请输入姓名:);scanf(%s,name);f
7、or(i=a;inum;i+)if (strcmp(studenti.name,name)=0)printf(ntt* 以下是您查找的用户信息 *);printf(ntt姓名: %s,studenti.name);printf(ntt电话: %s,studenti.phone);printf(ntt地址: %s,studenti.adress);printf(ntte-mail:%s,studenti.e_mail);printf(ntt*);mark+;if (i+1)num)printf(ntt是否继续查找相同名字的用户信息:(y/n);if (getch()=y)a=i;continue
8、;elsereturn(0);elseprintf(ntt按任意键返回主菜单);getch();return(0);if(mark!=0)printf(ntt没有相同姓名的用户纪录);printf(ntt按任意键返回主菜单);getch();return(0);elseprintf(ntt没有相同姓名的用户纪录);printf(ntt按任意键返回主菜单);getch();return(0);add()int i;if (fp=fopen(student.bin,wb)=NULL)printf(ntt文件打开失败);for (i=0;inum;i+)if (fwrite(&studenti,si
9、zeof(struct record),1,fp)!=1)printf(ntt写入文件错误!n);printf(ntt* 请输入用户信息 *n);printf(ntt输入姓名:);scanf(%s,&studentnum.name);printf(ntt输入电话号码:);scanf(%s,&studentnum.phone);printf(ntt输入地址:);scanf(%s,&studentnum.adress);printf(ntt输入邮编:);scanf(%s,&studentnum.postcode);printf(ntt输入e-mail:);scanf(%s,&studentnum.
10、e_mail);num+;printf(ntt是否继续添加?(Y/N):);if (getch()=y)adduser();return(0);fclose(fp);printf(ntt通讯录文件已保存);printf(ntt按任意键退出程序ntt);exit(0);return(0);void deletebyphone()int i,j;int deletemark=0;char phone20;printf(ntt请输入要删除用户电话号码:);scanf(%s,phone);if(num=0)printf(ntt对不起,文件中无任何纪录);printf(ntt按任意键返回主菜单);get
11、ch();return;for (i=0;inum;i+)if (strcmp(studenti.phone,phone)=NULL)printf(ntt以下是您要删除的用户纪录:);printf(ntt姓名: %s,studenti.name);printf(ntt电话: %s,studenti.phone);printf(ntt地址: %s,studenti.adress);printf(ntte-mail:%s,studenti.e_mail);printf(ntt是否删除?(y/n);if (getch()=y)for (j=i;jnum-1;j+)studentj=studentj+
12、1;num-;deletemark+;printf(ntt删除成功);printf(ntt是否继续删除?(y/n);if (getch()=y)deletebyphone();return;elsereturn;continue;if (deletemark=0)printf(ntt没有该用户的纪录);printf(ntt是否继续删除?(y/n);if (getch()=y)deletebyphone();return;void deletebyname()int a=0;int findmark=0;int j;int deletemark=0;int i;char name20;print
13、f(ntt请输入要删除用户姓名:);scanf(%s,name);for (i=a;inum;i+)if (strcmp(studenti.name,name)=NULL)printf(ntt以下是您要删除的用户纪录:);findmark+;printf(ntt_);printf(ntt姓名: %s,studenti.name);printf(ntt电话: %s,studenti.phone);printf(ntt地址: %s,studenti.adress);printf(ntte-mail:%s,studenti.e_mail);printf(ntt_);printf(ntt是否删除?(y
14、/n);if (getch()=y)for (j=i;jnum-1;j+) studentj=studentj+1;num-;deletemark+;printf(ntt删除成功);if(i+1)num)printf(ntt是否继续删除相同姓名的用户信息?(y/n);if (getch()=y)a=i;continue;printf(ntt是否继续删除?(y/n);if (getch()=y)deletebyname();return;if(i+1)num)printf(ntt是否继续删除相同姓名的用户信息?(y/n);if (getch()=y)a=i;continue;elsecontin
15、ue;if (deletemark=0)&(findmark=0)printf(ntt没有该用户的纪录);printf(ntt是否继续删除?(y/n);if (getch()=y)deletebyphone();return;return;else if (findmark!=0)printf(ntt没有重名信息);printf(ntt没有该用户的纪录);printf(ntt是否继续删除?(y/n);if (getch()=y)deletebyphone();return;return;dele()char choic;printf(ntt1-按电话号码删除 2-按姓名删除);printf(ntt请选择:);choic=getch();switch (choic)case 1:deletebyphone();break;case 2:deletebyname();break;return(0);save()int j;FILE*fp;fp=fopen(student.txt,w);if (fp=NULL)printf(cant open the file.);if(num!=0)for(j=0;jnum;j+)fwrite(student,sizeof(student),1,fp);printf(保存成功!);fclose(fp);return(0);