c++通讯录系统.docx
- 文档编号:12036073
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:19
- 大小:18.73KB
c++通讯录系统.docx
《c++通讯录系统.docx》由会员分享,可在线阅读,更多相关《c++通讯录系统.docx(19页珍藏版)》请在冰豆网上搜索。
c++通讯录系统
#include
#include
usingnamespacestd;
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
intOK=1;
intOVER=0;
intERROR=0;
typedefstruct
{
charnum[10];//编号
charname[20];//姓名
charsex[6];//性别
charphone[13];//电话
charaddr[31];//地址
}DataType;
typedefstruct
{
DataType*elem;
intlength;//当前长度
intlistsize;//线性表的长度
}SqList;
/*主菜单*/
intmenu_select()
{
intchoice;
cout<<"\t\t个人通讯录管理系统\t\t\n";
cout<<"***************************************************\n";
cout<<"*1.建立"<<"2.插入"<<"3.查询"<<"4.删除"<<"5.输出"<<"0.退出*\n";
cout<<"***************************************************\n";
cout<<"请选择操作0-5:
";
for(;;)
{
cin>>choice;
if(choice<0||choice>5)//小于0大于5
cout<<"输入错误,重选0-5:
";
else
break;
}
cout< returnchoice; } voidInitList(SqList&L)//初始化线性表 { L.elem=(DataType*)malloc(LIST_INIT_SIZE*sizeof(DataType)); if(! L.elem) exit(OVER); L.length=0; L.listsize=LIST_INIT_SIZE; } voidCreateList(SqList&L)//建立通讯录 { L.elem=(DataType*)malloc(LIST_INIT_SIZE*sizeof(DataType)); if(! L.elem) exit(OVER); L.length=0; L.listsize=LIST_INIT_SIZE;//因为建立一个通讯录,即重新开始建立一个,所以要初始化 inti=0; intflag=1; while(flag==1) { cout<<"编号(4)-姓名(8)-性别(3)-电话(11)-地址(31)\n"; cin>>L.elem[i].num>>L.elem[i].name>>L.elem[i].sex>>L.elem[i].phone>>L.elem[i].addr; i++; L.length++; cout<<"是否还要继续添加? (0or1): "; cin>>flag; cout< } } intInsertNode(SqList&L,inti,DataTypex) { if(i<1||i>L.length+1)//这里L.length加1的目的是,用户可能会在最后边接上元素,并不插, returnERROR; DataType*newbase; DataType*p,*q; if(L.length>=L.listsize) { newbase=(DataType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(DataType)); if(! newbase) exit(OVER); L.elem=newbase; L.listsize+=LISTINCREMENT; } /*插入操作*/ q=&(L.elem[i-1]);//q为第i个元素的位置 for(p=&(L.elem[L.length-1]);p>=q;p--) { strcpy_s((p+1)->num,p->num); strcpy_s((p+1)->name,p->name); strcpy_s((p+1)->sex,p->sex); strcpy_s((p+1)->phone,p->phone); strcpy_s((p+1)->addr,p->addr);//i-1之后的元素依次后移一位 } strcpy_s(q->num,x.num); strcpy_s(q->name,x.name); strcpy_s(q->sex,x.sex); strcpy_s(q->phone,x.phone); strcpy_s(q->addr,x.addr); L.length++; returnOK; } //------通讯录查询------------ voidcomputeLPSArray(char*pat,intM,int*lps); intKMPSearch(char*pat,char*txt) { intM=strlen(pat); intN=strlen(txt); int*lps=(int*)malloc(sizeof(int)*M); intj=0;//indexforpat[] computeLPSArray(pat,M,lps); inti=0;//indexfortxt[] while(i { if(pat[j]==txt[i]) { j++; i++; } if(j==M) { j=lps[j-1]; return1;//匹配到对应字符串 } elseif(pat[j]! =txt[i]) { if(j! =0) j=lps[j-1]; else i=i+1; } } free(lps); return0; } voidcomputeLPSArray(char*pat,intM,int*lps) { intlen=0;//记录前一个[最长匹配的前缀和后缀]的长度 inti; lps[0]=0;//lps[0]必须是0 i=1; while(i { if(pat[i]==pat[len]) { len++; lps[i]=len; i++; } else//(pat[i]! =pat[len]) { if(len! =0) { len=lps[len-1]; } else//如果(len==0) { lps[i]=0;//没有一个匹配的 i++; } } } } voidListPhoneFind(chara[],SqList&L)//动态查询号码 { intlen=0; for(inti=0;;i++) { if(a[i]=='\0') break; elselen++; } DataType*p; char*b=newchar[len]; p=L.elem; for(inti=1;i<=L.length;i++) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 通讯录 系统