发布时间:2023-06-01 10:00
本文实例为大家分享了C语言实现手机电话簿管理系统的具体代码,供大家参考,具体内容如下
用c设计出模拟手机通讯录管理系统,实现对手机中的通讯录进行管理
查看功能:选择此功能时,列出下列三类选择。A办公类,B个人类,C商务类,当选中某类时,显示出此类中的所有数据。
增加功能:能录入新数据,一个结点包括:姓名、电话号码、分类(可选项有:A 办公类,B 个人类,C 商务类)、电子邮件。
拨号功能:能显示出通讯录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声音。
修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。
删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
#include#include #include #include #define N 15 //最大容量为15 typedef struct //定义一个结构 { char name[10]; char haoma[15]; char leibie[10]; char dizhi[20]; }ren; //菜单 void menu() //目录 { system(\"cls\"); //清屏 printf(\"\\n\\n\\n ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\"); printf(\" ┃ ┃\"); printf(\" ┃ ┃\"); printf(\" ┃ ┃\"); printf(\" ┃ ┃\"); printf(\" ┃ ┃\"); printf(\" ┃ ┃\"); printf(\" ┃ ┃\"); printf(\" ┃ ┏━━━━━━━━━━┓ ┃\"); printf(\"\\n ┃ ┃ 欢迎使用手机通讯录 ┃ ┃ \\n\"); printf(\" ┃ ┗━━━━━━━━━━┛ ┃\"); printf(\" ┃ ┏━━━━━━━━━━┓ ┃\\n\"); printf(\" ┃ ┃ ┃ ┃\\n\"); printf(\" ┃ ┃ ┃ ┃\\n\"); printf(\" ┃ ┃ 1.添加联系人 ┃ ┃\\n\"); printf(\" ┃ ┃ 2.查询联系人 ┃ ┃\\n\"); printf(\" ┃ ┃ 3.修改联系人 ┃ ┃\\n\"); printf(\" ┃ ┃ 4.删除联系人 ┃ ┃\\n\"); printf(\" ┃ ┃ 5.拨号 ┃ ┃\\n\"); printf(\" ┃ ┃ 0.退出 ┃ ┃\\n\"); printf(\" ┃ ┃ ┃ ┃\\n\"); printf(\" ┃ ┃ ┃ ┃\\n\"); printf(\" ┃ ┗━━━━━━━━━━┛ ┃\\n\"); printf(\" ┃ ┃\\n\"); printf(\" ┃ ┃\\n\"); printf(\" ┃ ┃\\n\"); printf(\" ┃ ┃\\n\"); printf(\" ┃ ┃\\n\"); printf(\" ┃ ┃\\n\"); printf(\" ┃ ┃\\n\"); printf(\" ┃ ┃\\n\"); printf(\" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ \"); printf(\"\\n\"); printf(\"请选择相应的功能:\"); } //号码添加 void input() { FILE *fp; //定义文件指针 ren ry,s; // 定义两个ren结构体的量 if((fp=fopen(\"ren.dat\",\"ab+\"))==NULL) {printf(\"can\'t open file!\\n\");exit(0);} printf(\"\\n录入格式\\n姓名:\\n号码:\\n类别:\\n邮箱:\\n当输入姓名为#结束录入\\n\"); while(1) { printf(\"请输入姓名:\"); scanf(\"%s\",ry.name); if(strcmp(ry.name,\"#\")==0) break; //如果输入#则退出添加 printf(\"请输入电话号码:\"); scanf(\"%s\",ry.haoma); printf(\"请输入类别(A办公类B个人类C商务类):\"); scanf(\"%s\",ry.leibie); printf(\"请输入邮箱地址:\"); scanf(\"%s\",ry.dizhi); fseek(fp,0,0); //指针定位到文件开始位置 fread(&s,sizeof(ren),1,fp); while(!feof(fp)) { if(strcmp(s.haoma,ry.haoma)==0) {printf(\"号码已经存在,不能记录.\\n\");break;}//遇到有相同的号码 fread(&s,sizeof(ren),1,fp); } if(feof(fp)) //读到自后也没有相同的号码 fwrite(&ry,sizeof(ren),1,fp); //将信息写入文件 } fclose(fp); //关闭文件 getchar(); //接受一个输入 } void search() //查询 { ren ry; FILE *fp; char leibie[10]; system(\"cls\"); printf(\"\\n输入要查人员的类别: \");scanf(\"%s\",leibie);//要查询的类别 if((fp=fopen(\"ren.dat\",\"rb\"))==NULL) {printf(\"can\'t open file!\\n\");exit(0);} fread(&ry,sizeof(ren),1,fp); if(!feof(fp)) { printf(\" 人员的信息如下:\\n\"); printf(\"说明:(A办公类B个人类C商务类)\"); printf(\"\\n%10s %15s %10s %20s \\n\",\"姓名\",\"号码\",\"类别\",\"邮箱\"); while(!feof(fp)) { if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出 { printf(\"%10s %15s %10s %20s \\n\",ry.name,ry.haoma,ry.leibie,ry.dizhi); } fread(&ry,sizeof(ren),1,fp); } } else printf(\"查找失败!!!\"); fclose(fp); getch(); } //修改:输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果; void modi() { ren ry; FILE *fp; char name[10]; system(\"cls\"); if((fp=fopen(\"ren.dat\",\"rb+\"))==NULL) {printf(\"can\'t open file!\\n\");exit(0);} if(!feof(fp)) {printf(\" 修改前全部人员的信息如下:\\n\"); printf(\"\\n%10s %15s %10s %20s \\n\",\"姓名\",\"号码\",\"类别\",\"邮箱\"); fread(&ry,sizeof(ren),1,fp); while(!feof(fp)) { printf(\"%10s %15s %10s %20s \\n\",ry.name,ry.haoma,ry.leibie,ry.dizhi); fread(&ry,sizeof(ren),1,fp); } } printf(\"\\n输入要修改人员的姓名: \");scanf(\"%s\",name); if((fp=fopen(\"ren.dat\",\"rb+\"))==NULL) {printf(\"can\'t open file!\\n\");exit(0);} while(!feof(fp)) { fread(&ry,sizeof(ren),1,fp); if(strcmp(ry.name,name)==0) { printf(\" 修改前人员的信息如下:\\n\"); printf(\"\\n%10s %15s %10s %20s \\n\",\"姓名\",\"号码\",\"类别\",\"邮箱\"); printf(\"%10s %15s %10s %20s \\n\",ry.name,ry.haoma,ry.leibie,ry.dizhi); printf(\"\\n请输入该人的号码:\");scanf(\"%s\",ry.haoma); printf(\"\\n类别:\");scanf(\"%s\",ry.leibie); //新信息输入 printf(\"\\n邮箱:\");scanf(\"%s\",ry.dizhi); break; //修改完毕退出 } } if(!feof(fp)) { printf(\" \\n 修改后的人的信息如下:\\n\"); printf(\"\\n%10s %15s %10s %20s \\n\",\"姓名\",\"号码\",\"类别\",\"邮箱\"); printf(\"%10s %15s %10s %20s \\n\",ry.name,ry.haoma,ry.leibie,ry.dizhi); fseek(fp,-sizeof(ren),1); //指针向前一位定位 fwrite(&ry,sizeof(ren),1,fp); } else printf(\"\\n此人不存在,修改失败!!\"); fclose(fp); getch(); } //删除:输入人员姓名,若该人员存在,则删除,并显示删除后余下的人员的信息 void dele() { ren ry[N]; FILE *fp; char name[10]; int i,len,k=-1; system(\"cls\"); printf(\"\\n输入要删除的人员姓名: \");scanf(\"%s\",name); i=0; if((fp=fopen(\"ren.dat\",\"rb+\"))==NULL) {printf(\"can\'t open file!\\n\");exit(0);} while(!feof(fp)) { fread(&ry[i],sizeof(ren),1,fp); if(feof(fp)) break; if(strcmp(ry[i].name,name)==0) k=i; i++; } fclose(fp); //以下是删除后重新写文件 len=i; if(k>=0) { if((fp=fopen(\"ren.dat\",\"wb+\"))==NULL) {printf(\"can\'t open file!\\n\");exit(0);} for(i=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
圈量直播电商私域案例:SCRM工具赋能“交个朋友”公私域闭环
从0开始使用pnpm构建一个Monorepo方式管理的demo
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
报错“Cannot read properties of null (reading ‘addEventListener‘)“
electron应用开发(electron-quick-start + vuecli + 生成PC客户端)完美无bug
解决SpringCloud项目引用SpringCloud Config配置文件无效问题