c语言课程设计例子电话本Word文档下载推荐.docx
- 文档编号:21968342
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:19.94KB
c语言课程设计例子电话本Word文档下载推荐.docx
《c语言课程设计例子电话本Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言课程设计例子电话本Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
voidMakeNewHead_f(Node*);
voidAddToEnd_f(Node*);
voidMoveToEnd_f();
voidDisplayList_f();
voidDeleteRecord_f();
voidDelHead_f();
voidDelEnd_f(Node*);
voidDelMid_f(Node*);
intVerifyDel_f();
voidDelNode_f(Node*);
voidDelList_f();
voidSearchByName_f();
voidWriteFile_f();
voidLoadFile_f();
voidHelp_f();
intmain()
intnChoice;
printf("
WelcometoPhoneBook1.0fordosandfreedos\n"
);
PressEnterToContinue\n"
system("
pause"
cls"
/*执行系统命令:
cls—清屏*/
strpHead=NULL;
/*InitializeheadpointertoNULL*/
LoadFile_f();
/*Loaddatafromthediskfileintolinkedlist.*/
do
{/*Displaymenu.--主菜单显示*/
1-Addrecord\n"
2-Displayallrecords\n"
3-Searchforfriendbyname\n"
4-Deleterecord\n"
5-Help\n"
6-Exitprogram\n"
Enterchoice:
"
scanf("
%d"
&
nChoice);
HandleChoice_f(nChoice);
/*Callfunctiontodirectflowbasedonchoice.*/
}while(nChoice!
=6);
/*Repeatmenuuntiluserchoosestoexit.*/
return0;
}/*endofmainfunction*/
/*Functiontodirectprogramflowbasedonuser'
schoice.*/
voidHandleChoice_f(intnChoice)/*根据用户选择(choice)调用对应处函数*/
switch(nChoice)/*choiceispassedintothefunctionbyvalue.*/
{
case1:
/*Ifchoicewastoaddarecordtothedatabase,*/
AddRecord_f();
/*callfunctiontoaddarecordtothelinkedlist.*/
break;
case2:
/*Ifchoicewastodisplayallrecordsinthedatabase,*/
DisplayList_f();
/*callfunctiontodisplayallrecordsin*/
/*thelinkedlist.*/
case3:
/*Ifchoicewastosearchforarecordinthedatabase,*/
SearchByName_f();
/*callfunctiontosearchforrecordby*/
/*lastname.*/
case4:
/*Ifchoicewastodeletearecordinthedatabase,*/
DeleteRecord_f();
/*callafunctionthatsearchedforrecord*/
/*bylastnameanddeletesit.*/
case5:
/*Ifchoiceisforhelp*/
Help_f();
case6:
/*Ifchoicewastoexit,*/
WriteFile_f();
/*savedatabasetoafileand*/
if(strpHead!
=NULL)/*deletethelistfrommemory.*/
DelList_f();
}
default:
/*Ifanyother(invalid)choicewasentered,*/
printf("
Invalidchoice\n"
/*displayerrormessage.*/
}/*endoffunctionHandleChoice_f*/
/*Functiontoaddrecordtothelinkedlist.*/
voidAddRecord_f()/*在链表中增加一个记录*/
Node*strpNew;
/*Declaretemporarypointerforthenewnode.*/
strpNew=(Node*)malloc(sizeof(Node));
/*Allocatememoryforanewnodeand*/
/*initializepointertopointtoit.*/
/*Getnameandphonenumberfromtheuser.*/
getchar();
Name:
gets(strpNew->
szName);
PhoneNumber:
szPhoneNum);
InsertNode_f(strpNew);
}/*endoffunctionAddRecord_f*/
/*Functiontoinsertnewnodeintocorrectpositioninlist.*/
voidInsertNode_f(Node*strpNew)/*将一个由strpNew指向的新节点插入链表中*/
Node*strpFront;
Node*strpBack;
if(strpHead==NULL)
{/*Ifnonodesexist,makethenode*/
strpNew->
next=NULL;
/*thehead.*/
strpHead=strpNew;
else
if(strcmp(strpNew->
szName,strpHead->
szName)<
0)
{/*Ifnewrecordcomesbeforehead,*/
MakeNewHead_f(strpNew);
/*makeitthenewhead.*/
else/*Else,determinewherethenewnode*/
{/*shouldbeinserted.*/
strpCurrent=InsertPoint_f(strpNew->
strpFront=strpCurrent;
/*Usepointerstokeeptrackofnodes*/
strpBack=strpCurrent->
next;
/*oneachsideoftheinsertionpoint.*/
if(strpBack==NULL)/*IfstrpBackisNULL,thenodeneedstobe*/
{/*addedtotheendofthelist.*/
AddToEnd_f(strpNew);
else/*Elseaddthenodebetweenthenodespointedto*/
{/*bystrpFrontandstrpBack.*/
strpFront->
next=strpNew;
next=strpBack;
}/*endoffunctionInsertNode_f*/
/*FunctionthatpositionsstrpCurrentatthenodebeforetheposition*/
/*wherethenewnodeshouldbeinserted.*/
Node*InsertPoint_f(char*szName)
{/*根据姓氏,返回其在链表中的正确位置。
新节点即将插入此点*/
charszTempName[20];
Node*strpTemp;
intnTemp;
if(strpHead->
next!
=NULL)/*Ifmorethanonenodeexists,searchthe*/
{/*listforthecorrectinsertionpoint.*/
strpCurrent=strpHead;
strpTemp=strpCurrent->
strcpy(szTempName,strpTemp->
/*Loopuntiltheproperinsertionpointislocated.*/
nTemp=strcmp(szName,szTempName);
while((nTemp>
0)&
&
(strpCurrent->
=NULL))
strpCurrent=strpTemp;
/*checktoseeifthecurrentnodeisthelastnode*/
if(strpCurrent->
=NULL)
else/*Ifonlyonenodeexistsinthelist,strpCurrentisthesame*/
{/*asstrpHead.Newnodewillbeaddedtotheendofthelist.*/
return(strpCurrent);
/*FunctionthatmakesthenodepointedtobystrpNewthenew*/
/*headofthelinkedlist.Ithandlesthespecialcaseofinsertingat*/
/*thefrontofthelist.*/
voidMakeNewHead_f(Node*strpNew)
/*temporarypointertokeeptrackofthehead*/
strpTemp=strpHead;
/*SetstrpTemptopointatthecurrenthead.*/
next=strpTemp;
/*Makenewnodesnextpointerpointto*/
/*currentheadandmakenewnodethehead.*/
}/*endoffunctionMakeNewHead_f*/
/*Functionthataddsanodetotheendofthelinkedlist.Ithandles*/
/*thespecialcaseofinsertingattheendofthelist.*/
voidAddToEnd_f(Node*strpNew)
/*SetnextnodepointerofnewnodetoNULL.*/
MoveToEnd_f();
/*MakesurestrpCurrentisatendoflist.*/
strpCurrent->
/*Placenewnodeattheendofthelist.*/
}/*endoffunctionAddToEnd_f*/
/*FunctionthatmovesstrpCurrenttoendofthelinkedlist.*/
voidMoveToEnd_f()
/*MovestrpTemptoheadofthelist.*/
while(strpCurrent->
{/*TraverselistuntilNULLisreached.*/
strpCurrent=strpCurrent->
}/*endoffunctionMoveToEnd_f*/
/*Functionthatdisplaysentirelinkedlist.*/
voidDisplayList_f()
charszName[36];
/*usedtocombinenamesintoonearray*/
/*MovestrpCurrenttoheadoflist.*/
if(strpCurrent!
\n"
NamePhoneNumber\n"
-----------------------------------------------\n"
%10s"
strpCurrent->
%20s\n"
szPhoneNum);
/*SetstrpCurrenttonextnode.*/
}while(strpCurrent!
=NULL);
/*Loopuntilendoflist.*/
PressEntertocontinue\n"
else/*Iflistisempty,displaymessage.*/
\nNORECORDSTODISPLAY\n"
}/*endoffunctionDisplayList_f*/
/*Functionthatsearcheslinkedlistforthefirstoccurrenceofagiven*/
/*lastnameanddisplaystherecordtothescreen.*/
voidSearchByName_f()/*利用姓名进行查询*/
charszSearch[20];
/*Characterarrayforlastnametosearchfor.*/
/*MovestrpCurrenttoheadoflist*/
/*tobeginsearch.*/
\nEnterthenameforwhichyouwanttosearch:
gets(szSearch);
/*LoopuntilszSearchisfoundorendoflistisreached.*/
while((strpCurrent!
=NULL)&
(strcmp(strpCurrent->
szName,szSearch)!
=0))
=NULL)/*IfstrpCurrentisnotNULL,thenmatchwas*/
{/*found.*/
\nRECORDFOUND\n"
%s\n"
szName);
strpCurrent->
NOMATCHFOUND\n"
PressEntertoContiune\n"
}/*endoffunctionSearchByName_f*/
/*Functionthatdeletesindividualnodesfromthelinkedlist.*/
voidDeleteRecord_f()/*删除一个记录*/
strpFront=NULL;
/*InitializestrpFronttoNULL.*/
\nEnterthenameofthefriendyouwanttodelete:
/*Looptofindmatchingrecord.*/
/*Apointermustbemaintainedthat*/
/*pointstothenodebeforethenode*/
}/*tobedeleted.*/
=NULL)/*IfstrpCurrentisnotNULL,thenmatchwasfound*/
if(VerifyDel_f())/*Askuserifhe/shewantstodeletetherecord.*/
{/*Ifuserwantstodeletetherecord,*/
DelNode_f(strpFront);
/*deletethenodethatfollowsthe*/
\nRECORDDELETED\n"
/*onepointedtobystrpFront.*/
else/*Otherwise,donothing.*/
\nRECORDNOTDELETED\n"
else/*Ifnomatchfortherecordfound,displaymessage.*/
\nNOMATCHFOUND.NORECORDDELETED.\n"
}/*endoffunct
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 例子 电话本