好友信息管理C代码.docx

上传人:b****6 文档编号:8248896 上传时间:2023-01-30 格式:DOCX 页数:20 大小:19.72KB
下载 相关 举报
好友信息管理C代码.docx_第1页
第1页 / 共20页
好友信息管理C代码.docx_第2页
第2页 / 共20页
好友信息管理C代码.docx_第3页
第3页 / 共20页
好友信息管理C代码.docx_第4页
第4页 / 共20页
好友信息管理C代码.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

好友信息管理C代码.docx

《好友信息管理C代码.docx》由会员分享,可在线阅读,更多相关《好友信息管理C代码.docx(20页珍藏版)》请在冰豆网上搜索。

好友信息管理C代码.docx

好友信息管理C代码

#include"stdio.h"/*标准输入输出函数库*/

#include"stdlib.h"/*标准函数库*/

#include"string.h"/*字符串函数库*/

#include"conio.h"/*屏幕操作函数库*/

#defineHEADER1"---------------------------TELEPHONEBOOK---------------------------\n"

#defineHEADER2"|num|name|phonenumber|address|\n"

#defineHEADER3"|--------------|------------|-----------------|---------------------|\n"

#defineFORMAT"|%-10s|%-10s|%-15s|%-20s|\n"

#defineDATAp->num,p->name,p->phonenum,p->address

#defineEND"---------------------------------------------------------------------\n"

#defineN100

intsaveflag=0;/*是否需要存盘的标志变量*/

/*定义与电话簿有关的数据结构*/

typedefstructtelebook/*标记为telebook*/

{

charnum[4];/*编号*/

charname[10];/*姓名*/

charphonenum[15];/*电话号码*/

charaddress[20];/*地址*/

}TELEBOOK;

voidmenu()/*主菜单*/

{

system("cls");/*调用DOS命令,清屏.与clrscr()功能相同*/

textcolor(13);/*在文本模式中选择新的字符颜色*/

gotoxy(10,5);/*在文本窗口中设置光标*/

cprintf("Thetelephone-bookManagementSystem\n");

gotoxy(10,8);

cprintf("*************************Menu********************************\n");

gotoxy(10,9);

cprintf("*1inputrecord2displayrecord*\n");

gotoxy(10,10);

cprintf("*3deleterecord4searchrecord*\n");

gotoxy(10,11);

cprintf("*5modifyrecord6insertrecord*\n");

gotoxy(10,12);

cprintf("*7sortrecord8saverecord*\n");

gotoxy(10,13);

cprintf("*0quitsystem*\n");

gotoxy(10,14);

cprintf("*************************************************************\n");

/*cprintf()送格式化输出至文本窗口屏幕中*/

}

/*格式化输出表头*/

voidprintheader()

{

printf(HEADER1);

printf(HEADER2);

printf(HEADER3);

}

/*格式化输出表中数据*/

voidprintdata(TELEBOOKpp)

{

TELEBOOK*p;

p=&pp;

printf(FORMAT,DATA);

}

/*显示数组temp[]中存储的电话簿记录,内容为telebook结构中定义的内容*/

voidDisp(TELEBOOKtemp[],intn)

{

inti;

if(n==0)/*表示没有电话簿记录*/

{

printf("\n=====>Nottelephonerecord!

\n");

getchar();

return;

}

printf("\n\n");

printheader();/*输出表格头部*/

i=0;

while(i

{

printdata(temp[i]);

i++;

printf(HEADER3);

}

getchar();

}

voidWrong()/*输出按键错误信息*/

{

printf("\n\n\n\n\n***********Error:

inputhaswrong!

pressanykeytocontinue**********\n");

getchar();

}

voidNofind()/*输出未查找此记录的信息*/

{

printf("\n=====>Notfindthistelephonerecord!

\n");

}

/*************************************************************

作用:

用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值

参数:

findmess[]保存要查找的具体内容;nameorphonenum[]保存按什么在数组中查找;

**************************************************************/

intLocate(TELEBOOKtemp[],intn,charfindmess[],charnameorphonenum[])

{

inti=0;

if(strcmp(nameorphonenum,"phonenum")==0)/*按电话号码查询*/

{

while(i

{

if(strcmp(temp[i].phonenum,findmess)==0)/*若找到findmess值的电话号码*/

returni;

i++;

}

}

elseif(strcmp(nameorphonenum,"name")==0)/*按姓名查询*/

{

while(i

{

if(strcmp(temp[i].name,findmess)==0)/*若找到findmess值的姓名*/

returni;

i++;

}

}

return-1;/*若未找到,返回一个整数-1*/

}

/*输入字符串,并进行长度验证(长度

voidstringinput(char*t,intlens,char*notice)

{

charn[255];

do{

printf(notice);/*显示提示信息*/

scanf("%s",n);/*输入字符串*/

if(strlen(n)>lens)printf("\nexceedtherequiredlength!

\n");

/*进行长度校验,超过lens值重新输入*/

}while(strlen(n)>lens);

strcpy(t,n);/*将输入的字符串拷贝到字符串t中*/

}

/*增加电话簿记录*/

intAdd(TELEBOOKtemp[],intn)

{

charch,num[10];

inti,flag=0;

system("cls");

Disp(temp,n);/*先打印出已有的电话簿信息*/

while

(1)/*一次可输入多条记录,直至输入编号为0的记录才结束添加操作*/

{

while

(1)/*输入记录编号,保证该编号没有被使用,若输入编号为0,则退出添加记录操作*/

{

stringinput(num,10,"inputnumber(press'0'returnmenu):

");/*格式化输入编号并检验*/

flag=0;

if(strcmp(num,"0")==0)/*输入为0,则退出添加操作,返回主界面*/

{returnn;}

i=0;

while(i

{

if(strcmp(temp[i].num,num)==0)

{

flag=1;

break;

}

i++;

}

if(flag==1)/*提示用户是否重新输入*/

{getchar();

printf("==>Thenumber%sisexisting,tryagain?

(y/n):

",num);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

continue;

else

returnn;

}

else

{break;}

}

strcpy(temp[n].num,num);/*将字符串num拷贝到temp[n].num中*/

stringinput(temp[n].name,15,"Name:

");

stringinput(temp[n].phonenum,15,"Telephone:

");

stringinput(temp[n].address,15,"Adress:

");

saveflag=1;

n++;

}

returnn;

}

/*按编号或姓名,查询电话簿记录*/

voidQur(TELEBOOKtemp[],intn)

{

intselect;/*1:

按姓名查,2:

按电话号码查,其他:

返回主界面(菜单)*/

charsearchinput[20];/*保存用户输入的查询内容*/

intp=0;

if(n<=0)/*若数组为空*/

{

system("cls");

printf("\n=====>Notelephonerecord!

\n");

getchar();

return;

}

system("cls");

printf("\n=====>1Searchbyname=====>2Searchbytelephonenumber\n");

printf("pleasechoice[1,2]:

");

scanf("%d",&select);

if(select==1)/*按姓名查询*/

{

stringinput(searchinput,10,"inputtheexistingname:

");

p=Locate(temp,n,searchinput,"name");

/*在数组temp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/

if(p!

=-1)/*若找到该记录*/

{

printheader();

printdata(temp[p]);

printf(END);

printf("pressanykeytoreturn");

getchar();

}

else

Nofind();

getchar();

}

elseif(select==2)/*按电话号码查询*/

{

stringinput(searchinput,15,"inputtheexistingtelephonenumber:

");

p=Locate(temp,n,searchinput,"phonenum");

if(p!

=-1)

{

printheader();

printdata(temp[p]);

printf(END);

printf("pressanykeytoreturn");

getchar();

}

else

Nofind();

getchar();

}

else

Wrong();

getchar();

}

/*删除电话簿记录:

先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素*/

intDel(TELEBOOKtemp[],intn)

{

intsel;

charfindmess[20];

intp=0,i=0;

if(n<=0)

{system("cls");

printf("\n=====>Notelephonerecord!

\n");

getchar();

returnn;

}

system("cls");

Disp(temp,n);

printf("\n=====>1Deletebyname=====>2Deletebytelephonenumber\n");

printf("pleasechoice[1,2]:

");

scanf("%d",&sel);

if(sel==1)

{

stringinput(findmess,10,"inputtheexistingname:

");

p=Locate(temp,n,findmess,"name");

getchar();

if(p!

=-1)

{

for(i=p+1;i

{

strcpy(temp[i-1].num,temp[i].num);

strcpy(temp[i-1].name,temp[i].name);

strcpy(temp[i-1].phonenum,temp[i].phonenum);

strcpy(temp[i-1].address,temp[i].address);

}

printf("\n==>deletesuccess!

\n");

n--;

getchar();

saveflag=1;

}

else

Nofind();

getchar();

}

elseif(sel==2)/*先按电话号码查询到该记录所在的数组元素的下标值*/

{

stringinput(findmess,15,"inputtheexistingtelephonenumber:

");

p=Locate(temp,n,findmess,"phonenum");

getchar();

if(p!

=-1)

{

for(i=p+1;i

{

strcpy(temp[i-1].num,temp[i].num);

strcpy(temp[i-1].name,temp[i].name);

strcpy(temp[i-1].phonenum,temp[i].phonenum);

strcpy(temp[i-1].address,temp[i].address);

}

printf("\n=====>deletesuccess!

\n");

n--;

getchar();

saveflag=1;

}

else

Nofind();

getchar();

}

returnn;

}

/*修改电话簿记录。

先按输入的联系人姓名查询到该记录,

然后提示用户修改该记录编号之外的值,编号不能修改*/

voidModify(TELEBOOKtemp[],intn)

{

charfindmess[20];

intp=0;

if(n<=0)

{system("cls");

printf("\n=====>Notelephonenumberrecord!

\n");

getchar();

return;

}

system("cls");

printf("modifytelephonebookrecorder");

Disp(temp,n);

stringinput(findmess,10,"inputtheexistingname:

");/*输入并检验该姓名*/

p=Locate(temp,n,findmess,"name");/*查询到该数组元素,并返回下标值*/

if(p!

=-1)/*若p!

=-1,表明已经找到该数组元素*/

{

printf("Number:

%s,\n",temp[p].num);

printf("Name:

%s,",temp[p].name);

stringinput(temp[p].name,15,"inputnewname:

");

printf("Name:

%s,",temp[p].phonenum);

stringinput(temp[p].phonenum,15,"inputnewtelephone:

");

printf("Name:

%s,",temp[p].address);

stringinput(temp[p].address,30,"inputnewaddress:

");

printf("\n=====>modifysuccess!

\n");

getchar();

Disp(temp,n);

getchar();

saveflag=1;

}

else

{Nofind();

getchar();

}

return;

}

/*插入记录:

按编号查询到要插入的数组元素的位置,然后在该记录编号之后插入一个新数组元素。

*/

intInsert(TELEBOOKtemp[],intn)

{

charch,num[10],s[10];/*s[]保存插入点位置之前的记录编号,num[]保存输入的新记录的编号*/

TELEBOOKnewinfo;

intflag=0,i=0,kkk=0;

system("cls");

Disp(temp,n);

while

(1)

{stringinput(s,10,"pleaseinputinsertlocationaftertheNumber:

");

flag=0;i=0;

while(i

{

if(strcmp(temp[i].num,s)==0){kkk=i;flag=1;break;}

i++;

}

if(flag==1)

break;/*若编号存在,则进行插入之前的新记录输入操作*/

else

{getchar();

printf("\n=====>Thenumber%sisnotexisting,tryagain?

(y/n):

",s);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

{continue;}

else

{returnn;}

}

}

/*以下新记录的输入操作与Add()相同*/

while

(1)

{stringinput(num,10,"inputnewNumber:

");

i=0;flag=0;

while(i

{

if(strcmp(temp[i].num,num)==0){flag=1;break;}

i++;

}

if(flag==1)

{

getchar();

printf("\n=====>Sorry,Thenumber%sisexisting,tryagain?

(y/n):

",num);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

{continue;}

else

{returnn;}

}

else

break;

}

strcpy(newinfo.num,num);/*将字符串num拷贝到newinfo.num中*/

stringinput(newinfo.name,15,"Name:

");

stringinput(newinfo.phonenum,15,"Telephone:

");

stringinput(newinfo.address,15,"Adress:

");

saveflag=1;/*在main()有对该全局变量的判断,若为1,则进行存盘操作*/

for(i=n-1;i>kkk;i--)/*从最后一个组织元素开始往向移一个元素位置*/

{

strcpy(temp[i+1].num,temp[i].num);

strcpy(temp[i+1].name,temp[i].name);

strcpy(temp[i+1].phonenum,temp[i].phonenum);

strcpy(temp[i+1].address,temp[i].address);

}

strcpy(temp[kkk+1].num,newinfo.num);/*在kkk的元素位置后插入新记录*/

strcpy(temp[kkk+1].name,newinfo.name);

strcpy(temp[kkk+1].phonenum,newinfo.phonenum);

strcpy(temp[kkk+1].address,newinfo.address);

n++;

Disp(temp,n);

printf("\n\n");

getchar();

returnn;

}

/*利用选择排序法实现数组的按记录编号或姓名的升序排序*/

voidSelectSort(TELEBOOKtemp[],intn)

{

inti=0,j=0,flag=0,indexmin,select;

charcharflag[10];

TELEBOOKnewinfo;

if(n<=0)

{system("cls");

printf("\n=====>Nottelephonerecord!

\n");

getchar();

return;

}

system("cls");

Disp(temp,n);/*显示排序前的所有记录*/

printf("==>1SORTBYNUMBER==>2SORTBYNAME\n");

printf("pleasechoice[1,2]:

");

scanf("%d",&select);

if(select==1)/*按记录编号排序*/

{

for(i=0;i

{

flag=32767;indexmin=0;

for(j=i;j

{if(atoi(temp[j].num)

{flag=atoi(temp[j].num);

indexmin=j;

}

}

strcpy(newinfo.nu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1