通讯录管理系统课程设计报告.docx
- 文档编号:17399287
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:13
- 大小:110.60KB
通讯录管理系统课程设计报告.docx
《通讯录管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统课程设计报告.docx(13页珍藏版)》请在冰点文库上搜索。
通讯录管理系统课程设计报告
前言
题目
通讯录管理系统
目的
1、加深对《C语言程序设计》课程知识的理解,掌握程序的开发方法。
2、进一步掌握和利用C语言进行程序设计的能力。
3、进一步理解和运用结构化程序设计的能力。
4、初步掌握开发一个小型实用系统的基本方法。
5、学会调适一个较长程序的基本方法。
6、学会利用流程图,N-S图表示算法。
7、掌握书写较长设计开发文档的能力。
目录
*前言
一、课程设计的目的和意义
二、需求分析
1、功能要求
2、技术要求
三、设计
1、主要功能模块
2、菜单管理
四、源代码
五、测试
六、课程设计总结
一、课程设计的目的和意义
通过对这个通讯录系统的程序设计能够全面的对我们所学的c语言程序设计的基本内容进行全面的巩固和加强,增强我们对c语言的综合运用能力,从而能够很好的掌握c语言这门计算机语言。
从该系统中我们可以在添加、输入、排序数据,文件的读写等等方面来对c语言进行运用。
更重要的是能够建立起我们对程序设计的总体思想。
不论是从概念上还是从实际的操作上都能够得到很大的提高。
通过这个系统的设计让我们更加正确地掌握c语言中的语法和各种数据的运用同时锻炼我们的逻辑思维能力。
因为一个系统是靠一个一个的函数来构造的而函数则需要很好的逻辑才能够将每个函数的功能实现,这就是往往在程序设计的过程中我们会遇到一个程序没有检查出有语法的错误而不能够运行,这就是我们的逻辑方面了问题。
因此,通过程序的设计是能够很好的训练我们在c语言中的逻辑思维能力!
在该程序设计中我们可以看到c语言的程序的构造是由一个一个的模块化的功能函数组合的。
我们还可以熟悉掌握用while语句,do-while语句和for语句实现循环的方法。
注意三者之间的不同、以及相互代替的条件,还有对链表的添加、删除、链接等等。
在这一些语法的运用的过程中还涉及到了指针、数据的定义和使用等等。
二、需求分析
1、功能要求
(1)能通过键盘输入数据。
要求随时都能使用该功能实现记录输入,一次可以输入一条记录,也可以输入多条记录。
所谓一条记录,是指通讯录中一个人员的完整信息。
每个通讯记录包括如下数据:
序号、姓名、电话、工作单位。
(2)能按照“姓名”排序顺序显示通讯录存储的记录信息。
(3)能对通讯录存储的信息进行编辑修改。
2、技术要求
(1)通讯录信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定。
(2)对于通讯录功能中的数据输入、显示、编辑修改等功能,要求编写功能独立的函数予以实现,其所属的各项功能尽量由独立的函数实现。
(3)以菜单方式实现功能选择控制。
(4)通讯录管理结束后,能够正常退出通讯录管理程序。
(5)本通讯录管理程序能实现200条记录的管理。
三、设计
1、主要功能模块
(1)新建联系人
(2)输出所有联系人
(3)查找联系人
(4)删除联系人
(5)退出管理系统
2、菜单管理
四、源程序代码
#include"stdio.h"
#include
#include
structphone
{
intxuhao;
charname[20];
charnum[20];
charcity[20];
structphone*next;
};
structphone*head;
voidxinjian(inti)//新建联系人
{
structphone*p,*q,*w;
p=(structphone*)malloc(sizeof(structphone));
p->xuhao=i;
printf("姓名:
");
scanf("%s",p->name);
printf("电话:
");
scanf("%s",p->num);
printf("城市:
");
scanf("%s",p->city);
p->next=NULL;
if(head==NULL)
{
head=(structphone*)malloc(sizeof(structphone));
head=p;
}
else
{
if(strcmp(head->city,p->city)>0)
{
w=head;head=p;p=w;head->next=p;
}
for(q=head;q->next!
=NULL&&strcmp(q->city,p->city)<0;q=q->next);
w=q->next;
q->next=p;
p->next=w;
}
printf("添加成功!
\n");
}
voidshuchu()//输出联系人
{
structphone*p;
if(head==NULL)
printf("通讯录中没有记录,请添加后再使用。
\n");
else
for(p=head;p!
=NULL;p=p->next)
printf("序号:
%d\t姓名:
%s\t城市:
%s\t电话:
%s\n",p->xuhao,p->name,p->city,p->num);
}
voidchazhao()//查找联系人
{
structphone*p=head,*q;
charfname[20];
printf("请输入要查找的人:
");
scanf("%s",fname);
if(head==NULL)
printf("查无此人\n");
while((strcmp(p->name,fname)!
=0)&&p->next!
=NULL)
{
q=p;p=p->next;
}
if(strcmp(p->name,fname)==0)
printf("序号:
%d\t姓名:
%s\t电话:
%s\t城市:
%s\n",p->xuhao,p->name,p->num,p->city);
else
printf("查无此人\n");
}
voidshanchu()//删除联系人
{
charsname[20];
structphone*q=head,*p;
printf("请输入要删除的联系人:
");
scanf("%s",sname);
while(q!
=NULL&&strcmp(q->name,sname)!
=0)
q=q->next;
if(strcmp(head->name,sname)==0)
{head=head->next;
printf("删除成功!
\n");
return;}
if(q==NULL)
printf("查无此人\n");
else
{
p=q;
q=q->next;
p=q->next;
printf("删除成功!
");
}
}
intmain()
{
charch;
inti,n=0;
structphone*head=NULL;
for(i=0;i<80;i++)
printf("*");
printf("*欢迎使用通讯管理系统*");
for(i=0;i<80;i++)
printf("*");
while
(1)
{
for(i=0;i<80;i++)
printf("-");
printf("\t\t\t1.新建联系人\n");
printf("\t\t\t2.输出所有联系人\n");
printf("\t\t\t3.查找联系人\n");
printf("\t\t\t4.删除联系人\n");
printf("\t\t\t0.退出管理系统\n");
for(i=0;i<80;i++)
printf("-");
printf("输入您的选择:
");
scanf("%c",&ch);
switch(ch)
{
case'1':
n++;
xinjian(n);
break;
case'2':
shuchu(head);
break;
case'3':
chazhao();
break;
case'4':
shanchu();
break;
case'0':
exit(0);
break;
default:
printf("选择错误请重新输入\n");
break;
}
getchar();
}
}
五、测试
六、课程设计总结
回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题最后在老师的辛勤指导下,终于得到解决。
最后感谢老师和同学的支持和帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统 课程设计 报告