好友信息管理C代码Word文档格式.docx
《好友信息管理C代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《好友信息管理C代码Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
/*电话号码*/
charaddress[20];
/*地址*/
}TELEBOOK;
voidmenu()/*主菜单*/
system("
cls"
);
/*调用DOS命令,清屏.与clrscr()功能相同*/
textcolor(13);
/*在文本模式中选择新的字符颜色*/
gotoxy(10,5);
/*在文本窗口中设置光标*/
cprintf("
Thetelephone-bookManagementSystem\n"
gotoxy(10,8);
*************************Menu********************************\n"
gotoxy(10,9);
*1inputrecord2displayrecord*\n"
gotoxy(10,10);
*3deleterecord4searchrecord*\n"
gotoxy(10,11);
*5modifyrecord6insertrecord*\n"
gotoxy(10,12);
*7sortrecord8saverecord*\n"
gotoxy(10,13);
*0quitsystem*\n"
gotoxy(10,14);
*************************************************************\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<
n)/*逐条输出数组中存储的电话簿记录*/
printdata(temp[i]);
i++;
getchar();
voidWrong()/*输出按键错误信息*/
\n\n\n\n\n***********Error:
inputhaswrong!
pressanykeytocontinue**********\n"
voidNofind()/*输出未查找此记录的信息*/
Notfindthistelephonerecord!
/*************************************************************
作用:
用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值
参数:
findmess[]保存要查找的具体内容;
nameorphonenum[]保存按什么在数组中查找;
**************************************************************/
intLocate(TELEBOOKtemp[],intn,charfindmess[],charnameorphonenum[])
inti=0;
if(strcmp(nameorphonenum,"
phonenum"
)==0)/*按电话号码查询*/
while(i<
n)
{
if(strcmp(temp[i].phonenum,findmess)==0)/*若找到findmess值的电话号码*/
returni;
}
elseif(strcmp(nameorphonenum,"
name"
)==0)/*按姓名查询*/
if(strcmp(temp[i].name,findmess)==0)/*若找到findmess值的姓名*/
return-1;
/*若未找到,返回一个整数-1*/
/*输入字符串,并进行长度验证(长度<
lens)*/
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("
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;
n)/*查询该编号是否已经存在,若存在则要求重新输入一个未被占用的编号*/
if(strcmp(temp[i].num,num)==0)
flag=1;
break;
if(flag==1)/*提示用户是否重新输入*/
{getchar();
==>
Thenumber%sisexisting,tryagain?
(y/n):
num);
%c"
&
ch);
if(ch=='
y'
||ch=='
Y'
)
continue;
else
returnn;
{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++;
/*按编号或姓名,查询电话簿记录*/
voidQur(TELEBOOKtemp[],intn)
intselect;
/*1:
按姓名查,2:
按电话号码查,其他:
返回主界面(菜单)*/
charsearchinput[20];
/*保存用户输入的查询内容*/
intp=0;
if(n<
=0)/*若数组为空*/
Notelephonerecord!
\n=====>
1Searchbyname=====>
2Searchbytelephonenumber\n"
pleasechoice[1,2]:
scanf("
%d"
select);
if(select==1)/*按姓名查询*/
stringinput(searchinput,10,"
inputtheexistingname:
p=Locate(temp,n,searchinput,"
/*在数组temp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/
if(p!
=-1)/*若找到该记录*/
printheader();
printdata(temp[p]);
printf(END);
pressanykeytoreturn"
Nofind();
elseif(select==2)/*按电话号码查询*/
stringinput(searchinput,15,"
inputtheexistingtelephonenumber:
=-1)
else
Wrong();
/*删除电话簿记录:
先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素*/
intDel(TELEBOOKtemp[],intn)
intsel;
charfindmess[20];
intp=0,i=0;
=0)
{system("
Disp(temp,n);
1Deletebyname=====>
2Deletebytelephonenumber\n"
sel);
if(sel==1)
stringinput(findmess,10,"
p=Locate(temp,n,findmess,"
for(i=p+1;
i<
n;
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);
\n==>
deletesuccess!
n--;
elseif(sel==2)/*先按电话号码查询到该记录所在的数组元素的下标值*/
stringinput(findmess,15,"
/*修改电话簿记录。
先按输入的联系人姓名查询到该记录,
然后提示用户修改该记录编号之外的值,编号不能修改*/
voidModify(TELEBOOKtemp[],intn)
Notelephonenumberrecord!
return;
modifytelephonebookrecorder"
stringinput(findmess,10,"
/*输入并检验该姓名*/
p=Locate(temp,n,findmess,"
/*查询到该数组元素,并返回下标值*/
if(p!
=-1)/*若p!
=-1,表明已经找到该数组元素*/
Number:
%s,\n"
temp[p].num);
%s,"
temp[p].name);
stringinput(temp[p].name,15,"
inputnewname:
temp[p].phonenum);
stringinput(temp[p].phonenum,15,"
inputnewtelephone:
temp[p].address);
stringinput(temp[p].address,30,"
inputnewaddress:
modifysuccess!
{Nofind();
return;
/*插入记录:
按编号查询到要插入的数组元素的位置,然后在该记录编号之后插入一个新数组元素。
*/
intInsert(TELEBOOKtemp[],intn)
charch,num[10],s[10];
/*s[]保存插入点位置之前的记录编号,num[]保存输入的新记录的编号*/
TELEBOOKnewinfo;
intflag=0,i=0,kkk=0;
while
(1)
{stringinput(s,10,"
pleaseinputinsertlocationaftertheNumber:
n)/*查询该编号是否存在,flag=1表示该编号存在*/
if(strcmp(temp[i].num,s)==0){kkk=i;
flag=1;
break;
if(flag==1)
/*若编号存在,则进行插入之前的新记录输入操作*/
Thenumber%sisnotexisting,tryagain?
s);
{continue;
/*以下新记录的输入操作与Add()相同*/
{stringinput(num,10,"
inputnewNumber:
flag=0;
if(strcmp(temp[i].num,num)==0){flag=1;
Sorry,Thenumber%sisexisting,tryagain?
strcpy(newinfo.num,num);
/*将字符串num拷贝到newinfo.num中*/
stringinput(newinfo.name,15,"
stringinput(newinfo.phonenum,15,"
stringinput(newinfo.address,15,"
/*在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);
/*利用选择排序法实现数组的按记录编号或姓名的升序排序*/
voidSelectSort(TELEBOOKtemp[],intn)
inti=0,j=0,flag=0,indexmin,select;
charcharflag[10];
TELEBOOKnewinfo;
/*显示排序前的所有记录*/
==>
1SORTBYNUMBER==>
2SORTBYNAME\n"
if(select==1)/*按记录编号排序*/
for(i=0;
n-1;
i++)
flag=32767;
indexmin=0;
for(j=i;
j<
j++)
{if(atoi(temp[j].num)<
flag)
{flag=atoi(temp[j].num);
indexmin=j;
strcpy(newinfo.nu