C语言课程设计 通讯录Word文档下载推荐.docx
《C语言课程设计 通讯录Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 通讯录Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。
![C语言课程设计 通讯录Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/518db394-0ff9-4d73-9cb1-5336ca689b87/518db394-0ff9-4d73-9cb1-5336ca689b871.gif)
【总体设计】
图1
系统功能模块图
【详细设计】
主函数
主函数设计要求简洁,只提供部分提示语和函数的调用
【程序】
图2.
主函数流程图
附录:
源代码
#include"
stdio.h"
stdlib.h"
string.h"
conio.h"
#definenull0
structrecord
{
charname[20];
charphone[20];
charadress[40];
charpostcode[10];
chare_mail[30];
}student[500];
structLinkList
structrecordUS;
structLinkList*next;
}a;
structLinkList*head=null;
intnum=0;
FILE*fp;
intmenu_select();
intadduser();
intlist();
intsearch();
intdisplay();
intadd();
intlistbyname();
intdele();
intsave();
intexit();
voidmain()
system("
cls"
);
for(;
;
)
switch(menu_select())
{
case0:
adduser();
break;
case1:
list();
case2:
search();
case3:
display();
case4:
add();
case5:
listbyname();
case6:
dele();
case7:
save();
case8:
exit(0);
}
}
menu_select()
chars[80];
inta;
printf("
*_*pressanykeyentermenu!
*_*\n"
getch();
\t\t********************MENU*********************\n\n"
\t\t
0.输入记录\n"
1.显示记录
\n"
2.按姓名查找\n"
3.按电话号码查找\n"
4.插入记录\n"
5.按姓名排序\n"
6.删除记录\n"
7.记录保存文件\n"
8.Quit\n"
\t\t***********************************************\n"
do{
printf("
\n
Enteryouchoice(0~11):
"
scanf("
%s"
s);
a=atoi(s);
while(a<
0||a>
11);
returna;
adduser()
\n\t\t****************请输入用户信息****************\n"
\n\t\t输入姓名:
scanf("
&
student[num].name);
\n\t\t输入电话号码:
student[num].phone);
\n\t\t输入地址:
student[num].adress);
\n\t\t输入邮编:
student[num].postcode);
\n\t\t输入e-mail:
student[num].e_mail);
num++;
\n\t\t是否继续添加?
(Y/N):
if(getch()=='
y'
return(0);
list()
inti;
if(num!
=0)
\n\t\t***************以下为通讯录所有信息************"
for(i=0;
i<
num;
i++)
{
\n\t\t姓名:
%s"
student[i].name);
\n\t\t电话:
student[i].phone);
\n\t\t地址:
student[i].adress);
\n\t\t邮编:
student[i].postcode);
\n\t\te-mail:
student[i].e_mail);
\t\t"
if(i+1<
num)
\n\t\t__________________________"
system("
pause"
\n\t\t************************************************"
else
\n\t\t通讯录中无任何纪录"
\n\t\t按任意键返回主菜单:
getch();
return(0);
search()
intmark=0;
inta=0;
\n\t\t*****************按姓名查找*******************"
\n\t\t请输入姓名:
name);
for(i=a;
if(strcmp(student[i].name,name)==0)
\n\t\t*************以下是您查找的用户信息***********"
mark++;
if((i+1)<
\n\t\t是否继续查找相同名字的用户信息:
(y/n)"
if(getch()=='
a=i;
continue;
else
\n\t\t按任意键返回主菜单"
if(mark!
\n\t\t没有相同姓名的用户纪录"
display()
\n\t\t******************按电话查找******************"
charphone[10];
\n\t\t请输入电话号码:
phone);
for(i=0;
if(strcmp(student[i].phone,phone)==0)
\n\t\t**************以下是您查找的用户信息**********"
if(mark==0)
\n\t\t没有改用户的信息"
add()
if((fp=fopen("
student.bin"
"
wb"
))==NULL)
\n\t\t文件打开失败"
for(i=0;
if(fwrite(&
student[i],sizeof(structrecord),1,fp)!
=1)
\n\t\t写入文件错误!
\n"
num++;
adduser();
fclose(fp);
\n\t\t通讯录文件已保存"
\n\t\t按任意键退出程序\n\t\t"
exit(0);
voiddeletebyphone()
inti,j;
intdeletemark=0;
\n\t\t请输入要删除用户电话号码:
if(num==0)
\n\t\t对不起,文件中无任何纪录"
return;
if(strcmp(student[i].phone,phone)==NULL)
\n\t\t以下是您要删除的用户纪录:
\n\t\t是否删除?
for(j=i;
j<
num-1;
j++)
student[j]=student[j+1];
num--;
deletemark++;
\n\t\t删除成功"
\n\t\t是否继续删除?
deletebyphone();
return;
continue;
if(deletemark==0)
\n\t\t没有该用户的纪录"
voiddeletebyname()
intfindmark=0;
intj;
\n\t\t请输入要删除用户姓名:
for(i=a;
if(strcmp(student[i].name,name)==NULL)
findmark++;
\n\t\t________________________________"
j++)
if((i+1)<
\n\t\t是否继续删除相同姓名的用户信息?
deletebyname();
if((deletemark==0)&
&
(findmark==0))
elseif(findmark!
\n\t\t没有重名信息"
dele()
charchoic;
\n\t\t1-按电话号码删除2-按姓名删除"
\n\t\t请选择:
choic=getch();
switch(choic)
case'
1'
:
deletebyphone();
2'
deletebyname();
listbyname()
structrecordtmp;
for(i=1;
if(strcmp(student[i].name,student[i-1].name)<
0)
tmp=student[i];
j=i-1;
do
student[j+1]=student[j];
j--;
}while((strcmp(tmp.name,student[j].name)<
0&
j>
=0));
student[j+1]=tmp;
\n\t\t排序成功,是否显示?
list();
save()
FILE*fp;
fp=fopen("
student.txt"
w"
if(fp==NULL)
can'
topenthefile."
if(num!
for(j=0;
fwrite(student,sizeof(student),1,fp);
保存成功!
fclose(fp);
}
【设计体会】
通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。
它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。
同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。
因为我们学习知识就是为了实践。
而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
运用《C语言》中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理系统。
通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用