通讯录管理系统.docx
《通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统.docx(12页珍藏版)》请在冰豆网上搜索。
通讯录管理系统
C语言集中上机报告
通讯录管理系统
院系:
通信与信息工程学院
班级:
0101112班
姓名:
桑操
指导教师:
段小林
2011年12月21日
目录
一.概述6
二.总体方案设计7
三.详细设计8
四.程序的调试与运行结果说明9
五.课程设计总结10
六.后记11
七.附录12
参考文献13
一概述
1.课程设计的目的
巩固C语言中的循环、数组、函数和链表等基本知识点,培养综合程序的设计能力。
熟悉软件开发过程中问题的分析、解决方案的设计、编码实现等各个环节,提高解决实际问题的能力,掌握软件开发的基本技能。
2.课程设计的要求
(1)设一个通信录由以下几项数据信息构成:
数据项类型
姓名字符串
地址字符串
邮政编码字符串
电话号码字符串
试为通信录数据定义类型和定义通信录变量,实现功能:
存取、显示、删除记录、查询记录等功能。
(2)要求:
界面友好,易于操作
3.课程设计的主要设计思想
(1)能够完成基本的数据输入增加、删除、修改。
(2)能够对通讯录中的数据进行查询。
(3)通过函数实现其各部分的功能。
二总体方案设计
为了存储和表示通讯录中的数据,可以定义一个结构体数据类型,包含姓名、地址、邮编、电话号码。
整个数据可以用链表存储。
定义如下:
typedefstruct
{
charname[20];/*姓名*/
charnum[15];/*电话*/
charadds[20];/*住址*/
charpost[10];/*邮编*/
}Person;/*重命名*/
想好要有什么功能,根据需要的功能来编写各个函数。
如需要输入联系人:
intInput(Personp[],intn)/*输入联系人函数*/
{
inti=0;
charm;
while(m!
='n'&&m!
='N')
{
printf("\t姓名:
");
scanf("\t%s",p[n+i].name);
printf("\t电话号码:
");
scanf("\t%s",p[n+i].num);
printf("\t地址:
");
scanf("\t%s",p[n+i].adds);
printf("\t邮编:
");
scanf("\t%s",p[n+i].post);
printf("\n\t是否继续添加?
\n输入N结束,其他键继续:
");
scanf("\t%c",&m);
i++;
}
return(n+i);
}
等等…
三详细设计
所完成的具体功能及用到的算法:
为实现程序的功能,按照模块的划分,利用各个函数来实现其功能。
本程序中涉及到了如下函数:
intInput(Personp[],intn);//输入联系人
voidOutput(Personp[],intn);//输出联系人
intDel_a_record(Personp[],intn);//删除记录
intchange_a_record(Personp[],intn);//改变联系人
voidsearch_a_record(Personp[],intn);//查找联系人
四程序的调试与运行结果说明
1.运行程序,进入主菜单。
2.选择需要进行的操作,如1.输入联系人。
界面会提示用户依次输入姓名、电话、地址、和邮编。
3.在提示下继续进行操作,可根据提示,分别实现显示、删除、查询和改变联系人信息的功能。
4.最后0退出该程序。
五课程设计总结
在这次课程设计中,我自己把完整的程序代码写完了,并且能够实现题目所要求的功能,细细想来,编写这个程序并不像原来想像的那么难,关键是自己多去掌握函数的调用关系,和函数参数的问题。
写得出功能函数,还得会用,
自己慢慢写,得到的知识要比,老师上课讲的有收获的多。
写程序不要怕,要在许多次的失败之后在成功才显得有趣、、
六后记
(1)在开始编写程序前,要在心里先构思一遍,画出一张图。
想想需要什么,怎么用。
(2)在写每个函数时,也是先写流程图,然后再在纸上写下程序。
我发现这样可以令我在编程时保持清醒的头脑,在遇到错误时对照流程图也可以很快改正。
(3)写完了要自己先走一次流程,看看有没有不对的地方。
(4)经过这次综合程序设计,我体会到了调试程序的辛苦及乐趣,一个小小的逻辑错误,可能花一个晚上才能调试出来。
但当发现错误并改正后,得到的成就感是无法言语的。
七附录
程序代码如下:
#include
#include
#include
typedefstruct
{
charname[20];/*姓名*/
charnum[15];/*电话*/
charadds[20];/*住址*/
charpost[10];/*邮编*/
}Person;
intInput(Personp[],intn);
voidOutput(Personp[],intn);
intDel_a_record(Personp[],intn);
intchange_a_record(Personp[],intn);
voidsearch_a_record(Personp[],intn);
intInput(Personp[],intn)/*输入联系人函数*/
{
inti=0;
charm;
while(m!
='n'&&m!
='N')
{
printf("\t姓名:
");
scanf("\t%s",p[n+i].name);
printf("\t电话号码:
");
scanf("\t%s",p[n+i].num);
printf("\t地址:
");
scanf("\t%s",p[n+i].adds);
printf("\t邮编:
");
scanf("\t%s",p[n+i].post);
printf("\n\t是否继续添加?
\n输入N结束,其他键继续:
");
scanf("\t%c",&m);
i++;
}
return(n+i);
}
voidOutput(Personp[],intn)/*输出联系人函数*/
{
inti;
printf("\t***************************************************************\n");
printf("\t姓名\t\t电话号码\t\t地址\t\t邮编\n");
for(i=1;i{
printf("\t%s\t\t%s\t\t%s\t\t%s\n",p[i-1].name,p[i-1].num,p[i-1].adds,p[i-1].post);
}
printf("\t***************************************************************\n");
}
intDel_a_record(Personp[],intn)/*删除联系人函数*/
{
chars[20];
inti=0,j;
printf("\t请输入想删除联系人的名字:
");
scanf("%s",s);
while(strcmp(p[i].name,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return(n);
}
for(j=i;j{
strcpy(p[j].num,p[j+1].num);
strcpy(p[j].name,p[j+1].name);
strcpy(p[j].adds,p[j+1].adds);
strcpy(p[j].post,p[j+1].post);
}
printf("\t\t\t删除成功!
\n");
return(n-1);
}
intchange_a_record(Personp[],intn)/*更换联系人函数*/
{
chars[20];
inti=0;
printf("请输入你想改变的联系人姓名:
");
scanf("%s",s);
while(strcmp(p[i].name,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return(n);
}
else
{
printf("\t姓名:
");
scanf("\t%s",s);
strcpy(p[i].name,s);
printf("\t电话号码:
");
scanf("\t%s",s);
strcpy(p[i].num,s);
printf("\t地址:
");
scanf("\t%s",s);
strcpy(p[i].adds,s);
printf("\t邮编:
");
scanf("\t%s",s);
strcpy(p[i].post,s);
return(n);
}
}
voidsearch_a_record(Personp[],intn)/*查找函数*/
{
chars[20];
inti=0;
printf("\t请输入你想查询的联系人姓名:
");
scanf("\t%s",s);
while(strcmp(p[i].name,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return;
}
else
printf("\t姓名\t\t电话号码\t\t地址\t\t邮编\n");
printf("\t%s\t\t%s\t\t%s\t\t%s\n",p[i].name,p[i].num,p[i].adds,p[i].post);
}
voidmain()/*主函数*/
{
intn=0;
Personp[100];
intc;
printf("\t***************************************************************\n");
printf("通讯录管理系统\n");
printf("1新增联系人\n"
"2查看通讯录\n"
"3删除联系人\n"
"4查找联系人\n"
"5更改联系人\n"
"0退出\n");
printf("\t***************************************************************\n");
printf("\t\t请选择(0-5):
");
scanf("%d",&c);
while
(1)
{
switch(c)
{
case1:
n=Input(p,n);
break;
case2:
Output(p,n);
break;
case3:
n=Del_a_record(p,n);
break;
case4:
search_a_record(p,n);
break;
case5:
change_a_record(p,n);
break;
case0:
exit(0);
}
printf("\t***************************************************************\n");
printf("通讯录管理系统\n");
printf("1新增联系人\n"
"2查看通讯录\n"
"3删除联系人\n"
"4查找联系人\n"
"5更改联系人\n"
"0退出\n");
printf("\t***************************************************************\n");
printf("\t\t请选择(0-4):
");
scanf("%d",&c);
}
}
运行出来如下:
等等…..
参考文献
[1]谭浩强,C程序设计题解与上机指导(第二版),北京,清华大学出版社,2000年9月。
[2]纪凉浩李琳皓段小林兰文富,C语言程序设计与进阶实验指导,北京,中国水利水电出版社,2010年10月。