通讯录设计.docx
- 文档编号:29862386
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:35
- 大小:28.06KB
通讯录设计.docx
《通讯录设计.docx》由会员分享,可在线阅读,更多相关《通讯录设计.docx(35页珍藏版)》请在冰豆网上搜索。
通讯录设计
设计一个实用的小型通讯录程序,具有添加,查询和删除功能。
由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。
电话号码可由字符和数字组成。
实现功能:
(1)系统以菜单方式工作
(2)信息录入功能
(3)信息浏览功能
(4)信息查询功能
(5)信息修改功能
(6)系统退出功能
推荐答案
#include"iostream.h"
#include"windows.h"
#include"fstream.h"
#include"string.h"
#include"iomanip.h"
classdirectories
{
public:
charname[50];
longinttell;
longintphont;
};
intcount()
{
intn=0,i,k,j,m=0,z=0,c;
longintTell;
ints=1,b,choc,add;
charnam[20];
directoriesstr[100],temp;
cout<<"创建通讯录输入1,修改通讯录输入2"< cin>>choc; if(choc==1) { cout<<"通讯录"< cout<<"请输入通讯录人数"< cin>>n; s=n; cout<<"请输入同学的名字,家庭电话,公司电话"< cout<<"************************************"< for(i=1;i<=n;i++) { cout<<"请输入第"< cin>>str[i].name>>str[i].tell>>str[i].phont; } cout<<"名字家庭电话公司电话"< for(i=1;i<=n;i++) cout<<""< } if(choc==2) { cout<<"请输入修改通讯录的名字! "< cin>>nam; ifstreamin_file(nam); if(! in_file) { return0; } in_file.ignore(1000,'\n'); in_file.ignore(7); in_file>>m; in_file.ignore(1000,'\n'); in_file.ignore(1000,'\n'); for(i=1;i<=m;i++){ in_file>>str[i].name>>str[i].tell>>str[i].phont; n++; } } while (1) { cout<<"增加联系人信息1,修改联系人2,排序3,删除联系人4,按条件查找5,输出结果6,退出7"< cin>>s; switch(s) { case1: cout<<"请输入增加通讯录人数"< cin>>m; for(i=n+1;i<=m+n;i++) { cout<<"请输入第"< cin>>str[i].name>>str[i].tell>>str[i].phont;} cout< n+=m; for(i=1;i<=n;i++) cout< break; case2: cout<<"输入要修改同学的名字"< cin>>nam; for(i=1;i<=n;i++) { k=strcmp(nam,str[i].name); if(k==0) { cin>>str[i].name>>str[i].tell>>str[i].phont; break;} } break; case3: //对对象排序 for(i=1;i { for(j=i+1;j<=n;j++) { if(str[i].name>str[j].name) { temp=str[i]; str[i]=str[j]; str[j]=temp; } } } cout<<"按首字母输出: "< cout< for(i=1;i<=n;i++) cout< break; case4: cout<<"输入要删除同学的名字"< cin>>nam; for(i=1;i<=n;i++) {k=strcmp(nam,str[i].name); if(k==0) {str[i]=str[i+1]; n--;}} break; case5: cout<<"按姓名查找请按1,按电话号码查找按2"< cin>>b; switch(b) { case1: c=1; while(c==1) { cout<<"输入您要查找的姓名"< cin>>nam; for(i=1;i<=n;i++) { k=strcmp(nam,str[i].name); if(k==0) { cout<<"名字家庭电话公司电话"< cout<<""< cout<<"想继续查找请输入1,俺0推出"; cin>>c; } } } break; case2: c=1; while(c==1) { cout<<"输入您要查找的电话"< cin>>Tell; for(i=1;i<=n;i++) { if(Tell==str[i].tell||Tell==str[i].phont) { cout< cout< cout<<"想继续查找请输入1,俺0推出"< cin>>c; } } } break; } case6: cout< for(i=1;i<=n;i++) cout< break; case7: intchos; cout<<"保存通讯录? 1/2"< cin>>chos; if(chos==1) { cout<<"输入通讯录的名字(.txt)! "< cin>>nam; ofstreamout_file(nam); if(! out_file) { return0; } out_file< out_file<<"总人数"< out_file<<"名字"< for(i=1;i<=n;i++) out_file< } return0; } } return0; } intchange(int*p) { intp1; while (1) { cout<<"输入新密码"< cin>>*p; cout<<"请再次输入密码"< cin>>p1; if(*p==p1) { cout<<"密码修改成功"< ofstreamout_file("c: \\key.txt"); out_file<<*p< out_file.close(); return0; break; } else cout<<"输入错误"< } } intmain() { ifstreamin_file("c: \\key.txt"); if(! in_file) { return1; } intkey; in_file>>key; intkey1=000000; intn=0; intm; while (1) { cout<<"请输入密码"< cin>>key1; if(key==key1) { cout<<"密码输入正确"< break; } else { cout<<"密码输入错误"< n++; } if(n==3) { cout<<"你输入的次数已超过三次,自动退出! "< Sleep(3000); exit(0); } } Sleep(1000); count(); cout<<"修改密码请输入1,推出输入2"< cin>>m; if(m==1) change(&key); in_file.close(); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 系统功能 1建立一个学生通讯录,并实现对通讯录的插入修改删除排序和查询等操作 2设计简单的字符菜单将上述功能组装起来,形成一个完整的系统 3最好可以将通讯录的信息用文件方式保存,每次运行程序时可以直接读取 问题补充: 哥们有三个错麻烦你帮我全部搞定。 。 。 我赶作业。 。 。 c学的很不扎实现在自己实在做不来 谢谢 我用的tc3.0 最佳答案 给,已经编译运行确认了: #include #include #include #include structrecord { charid[10]; charname[20]; charphone[20]; charadress[40]; charpostcode[10]; chare_mail[30]; }student[500]; intnum=0;//外部变量num为文件中的纪录数 FILE*fp; voidmainmenu();//主菜单 voidnewrecord();//新添纪录 voidsearchmenu();//查询菜单 voidsearchbyid();//按学号查询 voidsearchbyname();//按姓名查询 voidsearchbyphone();//按电话查询 voiddeletemenu();//删除菜单 voiddeleteall();//删除所有 voiddeleteone();//删除单个 voidshowall();//显示所有 voidreadfromfile();//读取文件 voidwritetofile();//写入文件 voiddeletebyid();//按学号删除 voiddeletebyname();//按姓名删除 voidlistbyid();//按学号排序 voidlistbyname();//按姓名排序 voidlistmenu();//排序菜单 voidmain() { readfromfile(); while (1) { mainmenu(); } } voidreadfromfile()//从文件导入 { if((fp=fopen("student.bin","rb"))==NULL) { printf("\n\t\t通讯录文件不存在"); if((fp=fopen("student.bin","wb"))==NULL) { printf("\n\t\t建立失败"); exit(0); } else { printf("\n\t\t通讯录文件已建立"); printf("\n\t\t按任意键进入主菜单"); getch(); return; } exit(0); } fseek(fp,0,2);/*文件位置指针移动到文件末尾*/ if(ftell(fp)>0)/*文件不为空*/ { rewind(fp);/*文件位置指针移动到文件开始位置*/ for(num=0;! feof(fp)&&fread(&student[num],sizeof(structrecord),1,fp);num++); printf("\n\t\t文件导入成功"); printf("\n\t\t按任意键返回主菜单"); getch(); return; } printf("\n\t\t文件导入成功"); printf("\n\t\t通讯录文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单"); getch(); return; } voidmainmenu()//主菜单 { charchoic; system("cls"); printf("\n\t\t********************主菜单********************"); printf("\n\t\t***********1-新添纪录2-查询菜单************"); printf("\n\t\t***********3-删除菜单4-记录排序************"); printf("\n\t\t***********5-保存退出6-不保存退出***********"); printf("\n\t\t************************************************"); printf("\n\t\t请选择: "); choic=getch(); switch(choic) { case'1': newrecord();break; case'2': searchmenu();break; case'3': deletemenu();break; case'4': listmenu();break; case'5': writetofile();break; case'6': exit(0); default: mainmenu(); } } voidsearchmenu()//查询菜单 { charchoic; system("cls"); printf("\n\t\t*******************查询菜单*******************"); printf("\n\t\t**********1-显示所有2-按学号查询************"); printf("\n\t\t**********3-按姓名查询4-按电话查询************"); printf("\n\t\t**********5-返回主菜单************"); printf("\n\t\t************************************************"); printf("\n\t\t请选择: "); choic=getch(); switch(choic) { case'1': showall();break; case'2': searchbyid();break; case'3': searchbyname();break; case'4': searchbyphone();break; case'5': mainmenu();break; } } voiddeletemenu()//删除菜单 { charchoic; if(num==0) { printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单"); getch(); return; } system("cls"); printf("\n\t\t*******************删除菜单*******************"); printf("\n\t\t***********1-删除所有2-删除单个***********"); printf("\n\t\t***********3-返回主菜单***********"); printf("\n\t\t************************************************"); printf("\n\t\t请选择: "); choic=getch(); switch(choic) { case'1': deleteall();break; case'2': deleteone();break; case'3': mainmenu();break; default: mainmenu();break; } } voiddeleteall()//删除所有 { printf("\n\t\t确认删除? (y/n)"); if(getch()=='y') { fclose(fp); if((fp=fopen("student.bin","wb"))==NULL) { printf("\n\t\t不能打开文件,删除失败"); readfromfile(); } num=0; printf("\n\t\t纪录已删除,按任意键返回主菜单"); getch(); return; } else return; } voiddeletebyname()//按姓名删除 { inta=0; intfindmark=0; intj; intdeletemark=0; inti; charname[20]; printf("\n\t\t请输入要删除学生姓名: "); scanf("%s",name); for(i=a;i { if(strcmp(student[i].name,name)==NULL) { printf("\n\t\t以下是您要删除的学生纪录: "); findmark++; printf("\n\t\t________________________________"); printf("\n\t\t学号: %s",student[i].id); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\te-mail: %s",student[i].e_mail); printf("\n\t\t________________________________"); printf("\n\t\t是否删除? (y/n)"); if(getch()=='y') { for(j=i;j student[j]=student[j+1]; num--; deletemark++; printf("\n\t\t删除成功"); if((i+1) { printf("\n\t\t是否继续删除相同姓名的同学信息? (y/n)"); if(getch()=='y') { a=i; continue; } } printf("\n\t\t是否继续删除? (y/n)"); if(getch()=='y') deletebyname(); return; } if((i+1) { printf("\n\t\t是否继续删除相同姓名的同学信息? (y/n)"); if(getch()=='y') { a=i; continue; } } } else continue; } if((deletemark==0)&&(findmark==0)) { printf("\n\t\t没有该同学的纪录"); printf("\n\t\t是否继续删除? (y/n)"); if(getch()=='y') deletebyid(); return; return; } elseif(findmark! =0) { printf("\n\t\t没有重名信息"); printf("\n\t\t没有该同学的纪录"); printf("\n\t\t是否继续删除? (y/n)"); if(getch()=='y') deletebyid(); return; return; } } voiddeletebyid()//按学号删除 { inti,j; intdeletemark=0; char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)