1、void yonghuming(); /声明部分void mima();void main();void menu(); /定义一个结构typedef struct char name10; char tel15; char type10; char email20;ComMtd;/菜单void menu() /主菜单 system(cls); /清屏 printf( 欢迎使用手机通讯录nn=n 1.号码添加 n 2.号码查询 n 3.号码修改 n 4.号码删除 n 0. 退出 n 好好学习 ,天天向上队n请选择相应的功能: /号码添加void input() FILE *fp; /定义指向F
2、ILE类型文件的指针变量 ComMtd ry,s; / 定义两个ComMtd结构体的变量 if(fp=fopen(ComMtd.dat,ab+)=NULL) /ab+代表为读写打开一个二进制的文件 出错 printf(cant open file!exit(0);n录入格式 姓名 号码 类别 邮箱。当输入姓名为#结束录入n while(1) 请输入姓名: scanf(%s,ry.name); if(strcmp(ry.name,#)=0) break; /如果输入#则退出添加请输入电话号码:,ry.tel);请输入类别(A办公类B个人类C商务类): scanf(,ry.type);请输入邮箱地
3、址:,ry.email); fseek(fp,0,0); /指针定位到文件开始位置 fread(&s,sizeof(ComMtd),1,fp); while(!feof(fp) if(strcmp(s.tel,ry.tel)=0) 号码已经存在,不能记录.nbreak;/遇到有相同的号码 if(feof(fp) /读到自后也没有相同的号码 fwrite(&ry,sizeof(ComMtd),1,fp); /将信息写入文件 fclose(fp); /关闭文件 getchar(); /接受一个输入void search() /查询ComMtd ry;FILE *fp;char type10;sys
4、tem(n输入要查人员的类别: scanf(,type); /要查询的类别if(fp=fopen(rb)=NULL)fread(&if(! 人员的信息如下:说明:(A办公类B个人类C商务类)n%10s %15s %10s %20s n姓名号码类别邮箱 while(! if(strcmp(ry.type,type)=0) /若为该类别则输出 printf(%10s %15s %10s %20s n,ry.name,ry.tel,ry.type,ry.email); fread(& else 查找失败! fclose(fp); getch(); /修改:输入人员的姓名,查找该人员,若找到则修改该人
5、员的信息,并显示修改前后的结果;void modify() ComMtd ry;rb+ exit(0); if(! 修改前全部人员的信息如下: printf(n输入要修改人员的姓名:,name); if(strcmp(ry.name,name)=0) 修改前人员的信息如下:n请输入该人的号码:n类别: /新信息输入n邮箱: break; /修改完毕退出 n 修改后的人的信息如下: fseek(fp,sizeof(ComMtd),1); /指针向前一位定位 elsen此人不存在,修改失败! getch(); /删除:输入人员姓名,若该人员存在,则删除,并显示删除后余下的人员的信息void del
6、() ComMtd ryN; int i,len,k=-1;n输入要删除的人员姓名: i=0;ryi,sizeof(ComMtd),1,fp); if(feof(fp) break; if(strcmp(ryi.name,name)=0) k=i; i+; /以下是删除后重新写文件 len=i; if(k=0) if(fp=fopen(wb+ exit(0); for(i=0;ilen;i+) if(i=k) continue;删除成功! else printf(删除失败!void choice()char ch;while(1) menu();/ 显示菜单 ch=getch();/选择菜单
7、if(ch=0) exit(0); switch(ch)/判断功能项 case 1: input();2search();3modify();4del(); n欢迎使用!/主函数void main() yonghuming ();void yonghuming() int i,flag; char person20;tt*登录*ntt请输入用户名:=3;i +) char name20 = hch; gets(person); flag=strcmp(person,name); if(flag =0) mima(); elsett用户名错误!nnntt请重新输入:void mima() cha
8、r p20,i=0;tt请输入密码: while(pi=getch() if(pi=13) break; if(pi!=b)*b b i-; pi=0 if(strcmp(p,Y)=0)验证通过nnn choice();ntt密码错误n 3、详细设计(各模块程序设计组成框图、流程图)总流程图1.添加:添加通讯录记录2.删除:删除通讯录记录3.查找:查找通讯录记录4.修改:修改通讯录记录 4、程序运行结果(截图)1主界面2 号码添加3查找4修改5删除6退出5、源程序代码(代码中注明每段代码的完成人)/陈若阳#define N 15 /最大容量为15typedef struct /定义一个结构 char tel15;void menu() /目录/胡月 /定义文件指针 / 定义两个ren结构体的量)=NULL) printf( printf( if(strcmp(s.tel,ry.tel)=0) /要查询的类别)=NULL) printf(while(!/何晓妮 ComMtd ry; fw
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1