C语言程序设计学生通讯录管理系统
1 #include #include #include #include #include #define null 0 struct record char name20; char phone20; char adress40; char postcode10; char e_mail30; student500; struct LinkList struct record US; struct LinkList *next; a; struct LinkList *head=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; 2 case 2:search();break; case 3:add();break; case 4:dele();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); printf(tt*n); do printf(n Enter you choice(011):); scanf(%s,s); a=atoi(s); while (a11); return a; adduser() printf(ntt* 请输入用户信息 *n); printf(ntt输入姓名 :); scanf(%s, printf(ntt输入电话号码 :); scanf(%s, printf(ntt输入地址 :); scanf(%s, printf(ntt输入邮编 :); 3 scanf(%s, printf(ntt输入 e-mail:); scanf(%s, num+; printf(ntt是否继续添加 (Y/N):); if (getch()=y) adduser(); return(0); list() int i; system(cls); if(num!=0) printf(ntt* 以下为通讯录所有信息*); for (i=0;i<num;i+) printf(ntt姓名: %s,studenti.name); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntt邮编: %s,studenti.postcode); printf(ntte-mail:%s,studenti.e_mail); printf(tt); if (i+1<num) printf(ntt_); system(pause); printf(ntt*); else printf(ntt通讯录中无任何纪录); printf(ntt按任意键返回主菜单:); getch(); return(0); search() int mark=0; int i; int a=0; printf(ntt* 按姓名查找 *); 4 char name20; printf(ntt请输入姓名 :); scanf(%s,name); for(i=a;i<num;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; else return(0); else printf(ntt按任意键返回主菜单); getch(); return(0); if(mark!=0) printf(ntt没有相同姓名的用户纪录); printf(ntt按任意键返回主菜单); getch(); return(0); else printf(ntt没有相同姓名的用户纪录); printf(ntt按任意键返回主菜单); 5 getch(); return(0); add() int i; if (fp=fopen(,wb)=NULL) printf(ntt文件打开失败 ); for (i=0;i<num;i+) if (fwrite( printf(ntt* 请输入用户信息 *n); printf(ntt输入姓名 :); scanf(%s, printf(ntt输入电话号码 :); scanf(%s, printf(ntt输入地址 :); scanf(%s, printf(ntt输入邮编 :); scanf(%s, printf(ntt输入 e-mail:); scanf(%s, 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; 6 int deletemark=0; char phone20; printf(ntt请输入要删除用户电话号码:); scanf(%s,phone); if(num=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; for (i=0;i<num;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;j<num-1;j+) studentj=studentj+1; num-; deletemark+; printf(ntt删除成功 ); printf(ntt是否继续删除 (y/n); if (getch()=y) deletebyphone(); return; else return; continue; if (deletemark=0) printf(ntt没有该用户的纪录); printf(ntt是否继续删除 (y/n); if (getch()=y) deletebyphone(); 7 return; void deletebyname() int a=0; int findmark=0; int j; int deletemark=0; int i; char name20; printf(ntt请输入要删除用户姓名:); scanf(%s,name); for (i=a;i<num;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/n); if (getch()=y) for (j=i;j<num-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) 8 deletebyname(); return; if(i+1)<num) printf(ntt是否继续删除相同姓名的用户信息(y/n); if (getch()=y) a=i; continue; else continue; if (deletemark=0) 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=g