《C语言通讯录管理系统》.docx

上传人:b****7 文档编号:10438820 上传时间:2023-02-11 格式:DOCX 页数:24 大小:80.06KB
下载 相关 举报
《C语言通讯录管理系统》.docx_第1页
第1页 / 共24页
《C语言通讯录管理系统》.docx_第2页
第2页 / 共24页
《C语言通讯录管理系统》.docx_第3页
第3页 / 共24页
《C语言通讯录管理系统》.docx_第4页
第4页 / 共24页
《C语言通讯录管理系统》.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

《C语言通讯录管理系统》.docx

《《C语言通讯录管理系统》.docx》由会员分享,可在线阅读,更多相关《《C语言通讯录管理系统》.docx(24页珍藏版)》请在冰豆网上搜索。

《C语言通讯录管理系统》.docx

《C语言通讯录管理系统》

《C语言通讯录管理系统》

-1-

通讯录管理系统

学生姓名:

学院:

计算机与通信工程学院班级:

班学号:

摘要本课程设计主要是一个简单的通讯录管理系统。

通过程序中的菜单编号实现对数据的添加、修改、删除等操作。

在本课程设计中,系统开发平台为

Windows2000,程序设计语言为C语言,程序运行平台为Windws98/2000/XP。

在程

序设计中采用了结构体、链表的方法实现对数据的操作。

程序通过调试运行,初步实现了设计目标,不过还需要很多的完善。

关键词程序设计;通讯录;C语言;

1引言

对于日常生活中的人们来说,通讯录管理系统是一个非常重要,并且非常实用的工具。

有了通讯录系统,人们就不用再为记不住熟人们的号码等联系方式而烦恼了,增进了人们之间的联系,让人们更加方便与朋友亲人联系了。

1.1课题背景

通讯管理系统是一个很实用的系统,不仅在人们用的手机中扮演着重要的角色,在各大商业与企业的运作中也起着非常大的作用。

想当初没有电子通讯录系统,人们要花很多时间去记住联系人的联系方式,而且有时候还会弄错,导致一些不必要的尴尬,有了电子通讯录系统自然记不住的问题迎刃而解了。

本系统只是实现了一个简单的通讯管理,通过对数组,结构体,链表,以及各个模块的应用达到一个管理的功能。

1.2课程设计目的

«C语言通讯录管理系统》

-2-C语言现在是一个应用比较广泛的语言,通过对程序的设计让我们能更好的学习和了解它的各个方面的应用,对我们今后的学习有很大的帮助。

同时,在做程序的过程中锻炼了我们对程序的分析与编写能力,更锻炼了我们的实战能力,为我们以后在自己的专业取得更好的成就做了一个好的铺垫。

1.3课程设计内容本课程设计是一个通讯录管理系统,可以实现简单的插入、删除、添加等功能。

信息的输入修改数据

通讯录管理系统

删除数据添加数据

图1-3通讯录管理系统

2设计思路与方案

《C语言通讯录管理系统》

-3-2.1设计思路

该个人通讯录管理系统是一个对数据进行管理修改的简单系统,首先做出一个主菜单界面供用户选择需要的操作,再用各个模块来实现菜单中各单独功能的实现,例如修改数据、插入数据、添加数据等。

最后写一个主函数调用模块和函数实现通讯录菜单中的各功能。

2.2操作流程图

输入界面的相应操作序号

添加通讯录数据

显示新增完成

图2-1操作流程

3详细实现

《C语言通讯录管理系统》

-4-3.1查看联系人进入菜单后选择查看联系人序号,再选择查看联系人的类型,即可列出该类型的所有联系人。

如图3-1所示。

选择查看联系人的序号

选择查看联系人所属类型显示所选类型的所有联系人图3-1查看联系人实现此功能的代码如下:

voidoutput(structphone_info*head){structphone_info*p1=head,*p2;

system("cls");//清屏

if(head==NULL)//如果当前链表头指针为空

{

printf("当前没有任何联系人信息\n\n");

system("pause");

return;//返回

}

printf("电话联系薄(共%£条信息)\n\n",n);

for(;;)

{

p2=p1->next;

printf("姓名:

%s\n",p1->name);

printf("电话:

%s\n",p1->phone);

if(p1->type=='A'||p1->type=='a')printf("类别:

办公类\n");

elseif(p1->type=='B'||p1->type=='b')printf("类别:

个人类\n");

else

printf("类别:

商务类\n");

printf("邮箱:

%s\n",p1->email);

printf("\n");

if(p1->next==NULL)//如果当前指针所指向的结构体中next指向空则链《C语言通讯录管理系统》

-5-

表输出完毕

break;//返回

p1=p2;

}

}

3.2新增联系人进入菜单后选择添加序号按要求依次输入姓名、电话、类别、电子邮箱。

如图3-2所示。

选择新增联系人序号按照提示依次输入要求的内容显示添加联系人成功图3-2新增联系人实现此功能的代码如下:

structphone_info*new_info(structphone_info*head)//

新增{

structphone_info*p1,*p2,*p;

charc;

intflag;

system("cls");//清屏

for(;;)

{

if(n==15)//判断当前联系人数目是否超过系统限制

{

printf("存储空间已满,不能再录入新数据!

\n\n");

system("pause");

returnhead;

}

if(n==0)//判断当前联系人数目是否为0

{

《C语言通讯录管理系统》

-6-

head=p1=p2=(structphone_info*)malloc(sizeof(structphone_info));//新建结构体并将结构体指针赋予链表头指针p1->next=NULL;

}

else

{

p1=head;

新建结

p2=(structphone_info*)malloc(sizeof(structphone_info));//

构体

}

printf("请输入要新增的联系人姓名:

\n(如果输入“0”则停止新增,并返回主菜单)\n");

scanf("%s",p2->name);

if(strcmp(p2->name,"0")==0)//判断输入的姓名是否为“0”

{

free(p2);//为“0”则释放新开辟的空间

returnhead;//返回

}

printf("\n请输入联系人的电话号码:

\n");

scanf("%s",p2->phone);

for(flag=1,p=head;n!

=0&&p!

=NULL;)//判断是否输入了相同的联系人电话

{

if(strcmp(p2->phone,p->phone)==0)

{

printf("\n录入了相同的联系人电话\n\n");

system("pause");

flag=0;//标志位赋“0”

free(p2);

system("cls");

break;//退出循环

p=p->next;

}

if(flag==0)//判断标志位是否为“0”

continue;//如果为“0”则进入下一次循环

printf("\n请输入联系人的类别:

\n(\"A\"为办公类\"B\"为个人类\"C\"为商务类)\n");

scanf("%c",&c);//保存上一次输入的回车键

scanf("%c",&p2->type);

printf("\n请输入联系人的电子邮箱:

\n");

scanf("%s",p2->email);

while(p1->next!

=NULL)

p1=p1->next;//找到链表的尾部

《C语言通讯录管理系统》

-7-

p1->next=p2;//将链表的尾部指向新添加的联系人

p2->next=NULL;//新的链表尾部赋结束标记

system("cls");

printf("新增成功\n\n");

n++;//保存的联系人数目加1

}

returnhead;

}

3.3拨号联系人进入菜单后选择拨号联系人,然后输入要拨号的姓名,会提示拨

号成功,即实现了对联系人的拨号。

选择拨号联系人序号输入要拨号联系人的名字

显示拨号成功

图3-3拨号联系人

实现此功能的代码如下:

voiddiag(structphone_info*head)

{

charname[20];

structphone_info*p1;

system("cls");

for(;;)

{

if(n==0)//判断当前联系人数目是否为0

{

printf("当前没有任何联系人信息\n\n");

system("pause");

return;

}

system("cls");

《C语言通讯录管理系统》

-8-

output(head);//调用输出函数显示当前所有联系人的信息

printf("请输入要拨号的联系人姓名:

\n(如果输入“0”则停止拨号,并返

回主菜单)\n");

scanf("%s",name);

判断输入的姓名是否为0if(strcmp(name,"0")==0)//return;//返回

else

{

p1=head;

for(;;)

{

if(strcmp(name,p1->name)==0)//找到指定联系人所在节点{

printf("\n拨号成功\n\n");

system("pause");

break;

}

找到下一节点p1=p1->next;//

if(p1==NULL)//指针为空

{

%$的联系人不存在!

\n\n",name);printf("\n姓名为

system("pause");

break;

}

}

4运行环境与结果

《C语言通讯录管理系统》

-9-

4.1运行环境

在本课程设计中,系统开发平台为WindowsXP程序设计语言为Visual

C++6.0,程序的运行环境为VisualC++6.0。

VisualC++—般分为三个版本:

学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。

实验中可以使用这三个版本的任意一种,在本课程设计中,以VisualC++6.0为编程环境。

MicrosoftVisualC++6.0是Microsoft公司的MicrosoftVisualStudio

6.0开发工具箱中的一个C+4程序开发包。

VisualC++包中除包括C++编译器外,还包括所有的库、例子和为创建Windows应用程序所需要的文档。

自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。

VisualC++从最早期的1.0版本,发展到最新的7.0版本,VisualC++已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。

最新的7.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。

VisualC++6.0是Microsoft公司推出的目前使用最广泛的基于Windows平台的可视化编程环境。

VisualC++6.0是在以往版本不断更新的基础上形成的,由于其功能强大,灵活性好,完全课扩展以及具有强大的Internet支持,因而在各种C++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。

VisualC++6.0秉承VisualC++以前版本的优异特性,为用户提供了一套良好的可视化开发环境:

主要包括文本编辑器、资源编辑器、工程创建工具、

Debugger调试器等等。

用户可以在集成开发环境中创建工程、打开工程、建立、

打开和编辑文件、编译、链接、运行、调试应用程序

4.2运行结果

主操作界面

在执行程序的时候会看到如下的操作界面,输入相应的序号即可进入下一步操

作。

如图所示:

《C语言通讯录管理系统》

-10-

图4-1主操作界面

(1)查看联系人。

结果如图所示

图4-2查看联系人

⑵增加联系人。

结果如图所示

《C语言通讯录管理系统》

-11-

图4-3增加联系人

(3)拨号联系人。

图4-4拨号联系人

《C语言通讯录管理系统》

-12-

5结束语

这次课程设计是大学入学以来的第一次专业实践性的课程,从此次的实践中让我深深的体会到“从实践中学习”这句话的重要性。

从设计中可以学到很多课本上学不到的东西,尽管这次设计中遇到了很多的阻碍,但是看到自己设计出来的成果还是值得的。

设计的过程不仅复习巩固了学过的知识,同时也接受到了更多的新知识,让自己更加的充实。

从此次设计中让我充分的认识到课本知识必须要有,但仅仅知道课本上的知识不去运用也是枉然。

如今这个飞速发展的社会需要的不是那种理论人才,而是理论能与实践相结合的人,这样才能从中得到更多。

通过本次设计我发现现在对专业知识掌握的还不很好,有很多方面需要进一步的提高,在今后的学习中一定要好好的努力,认真的去体会知识的内涵再正确的加以运用,这样才会达到学习的最佳效果。

《C语言通讯录管理系统》

-13-

参考文献

[1]杨路明.《C语言程序设计教程》.北京:

北京邮电大学出版社,2000.1

[2]谭浩强.《C程序设计》.北京:

北京清华大学出版社,1999.1

[3]向南平.《实用C语言程序设计》.长沙中南工业大学出版社,1994.4

[4]北京金洪恩电脑有限公司.《C/C++程序设计入门》.天津:

天津电子出版社,2003.4

[5]王志雄,田小梅.《数据结构-C语言描述》.北京:

北京工业大学出版社,

2002.3

《C语言通讯录管理系统》

-14-

附录:

源程序代码#include#include#include#include

intn=0;//定义全局变量存储电话联系人个数

structphone_info//定义结构体存储联系人信息{

姓名charname[20];//

charphone[20];//电话

chartype;//分类

邮箱charemail[20];//

structphone_info*next;//指向下一个节点的指针};

/*错误函数*/

//所需参数:

//函数功能:

显示错误信息

//返回参数:

voiderror()

{

printf("代码错误\n\n");

system("pause");}

/*输出函数*/

//所需参数:

链表头指针

//函数功能:

输出链表中的联系人信息

//返回参数:

voidoutput(structphone_info*head)

{

structphone_info*p1=head,*p2;

system("cls");//清屏

if(head==NULL)//如果当前链表头指针为空{

《C语言通讯录管理系统》

-15-

printf("当前没有任何联系人信息\n\n");

system("pause");

return;//返回

}

printf("电话联系薄(共%£条信息)\n\n",n);

for(;;)

{

p2=p1->next;

printf(”姓名:

%s\n",p1->name);

printf(”电话:

%s\n",p1->phone);

if(p1->type=='A'||p1->type=='a')printf("类别:

办公类\n");elseif(p1->type=='B'||p1->type=='b')printf("类别:

个人类\n");else

printf("类别:

商务类\n");

printf("邮箱:

%s\n",p1->email);

printf("\n");

if(p1->next==NULL)//如果当前指针所指向的结构体中表输出完毕break;//返回

p1=p2;

}

}

/*新增函数*/

//所需参数:

链表头指针

//函数功能:

新增联系人信息并自动添加到链表末尾//structphone_info*new_info(structphone_info*head)//structphone_info*p1,*p2,*p;

charc;

intflag;

system("cls");//清屏for(;;)

next指向空则链

返回参数:

链表头指针

新增{

{

if(n==15)//判断当前联系人数目是否超过系统限制

{

printf("存储空间已满,不能再录入新数据!

\n\n");

system("pause");

returnhead;

}

if(n==0)//判断当前联系人数目是否为0

《C语言通讯录管理系统》

-16-

{

head=p1=p2=(structphone_info*)malloc(sizeof(structphone_info));

//

新建结构体并将结构体指针赋予链表头指针

p1->next=NULL;

}

else

{

p1=head;

p2=(structphone_info*)malloc(sizeof(structphone_info));//新建结构体

}

printf("请输入要新增的联系人姓名:

\n(如果输入“0”则停止新增,并返回主菜单)\n");

scanf("%s",p2->name);

if(strcmp(p2->name,"0")==0)//

判断输入的姓名是否为“0”

{

free(p2);//为“0”则释放新开辟的空间

returnhead;//返回

}

printf("\n请输入联系人的电话号码:

\n");scanf("%s",p2->phone);

for(flag=1,p=head;n!

=0&&p!

=NULL;)//判断是否输入了相同的联系人电话

{

if(strcmp(p2->phone,p->phone)==0)

{

printf("\n录入了相同的联系人电话\n\n");

system("pause");

flag=0;//标志位赋“0”free(p2);

system("cls");

break;//退出循环

}p=p->next;

}

if(flag==0)//判断标志位是否为“0”continue;//如果为“0”则进入下一次循环

printf("\n请输入联系人的类别:

\n(\"A\"为办公类\"B\"为个人类\"C\"为商务类)\n");scanf("%c",&c);//保存上一次输入的回车键scanf("%c",&p2->type);

printf("\n请输入联系人的电子邮箱:

\n");scanf("%s",p2->email);

while(p1->next!

=NULL)

《C语言通讯录管理系统》

-17-

p1=p1->next;//找到链表的尾部p1->next=p2;//将链表的尾部指向新添加的联系人p2->next=NULL;//新的链表尾部赋结束标记

system("cls");

printf("新增成功\n\n");

n++;//保存的联系人数目加1

}

returnhead;

}

/*拨号函数*/

//所需参数:

链表头指针

//函数功能:

在链表中查找指定的联系人并模拟拨号效果//返回参数:

无voiddiag(structphone_info*head)

{

charname[20];

structphone_info*p1;system("cls");

for(;;)

{

if(n==0)//判断当前联系人数目是否为0

{

printf("当前没有任何联系人信息\n\n");

system("pause");

return;

}

system("cls");

output(head);//调用输出函数显示当前所有联系人的信息

printf("请输入要拨号的联系人姓名:

\n(如果输入“0”则停止拨号,并返回主菜单)\n");

scanf("%s",name);if(strcmp(name,"0")==0)//判断输入的姓名是否为0return;//返回

else

{

p1=head;

for(;;)

{

if(strcmp(name,p1->name)==0)//找到指定联系人所在节点

{

printf("\n拨号成功\n\n");

system("pause");

break;

《C语言通讯录管理系统》

-18-

}

p1=p1->next;//找到下一节点if(p1==NULL)//指针为空

{

printf("\n姓名为%$的联系人不存在!

\n\n",name);

system("pause");

break;

}

}

}

}

}

/*释放函数*/

//所需参数:

链表头指针

//函数功能:

释放链表存储空间的内容//返回参数:

无voidfreelist(structphone_info*head)

{

structphone_info*p1=head,*p2;

for(;;)

{

if(p1->next==NULL)

free(p1);

break;

}

else

{

p2=p1->next;

free(p1);

p1=p2;

}

}

}

/*查看函数*/

//所需参数:

链表头指针

//函数功能:

显示指定类别的联系人信息//返回参数:

无voidlook(structphone_info*head)

{

structphone_info*p;

《C语言通讯录管理系统》

-19-

intc;

intflag;

chartype;

system("cls");

if(n==0)//判断当前联系人数目是否为0{

printf("当前没有任何联系人信息\n\n");system("pause");

return;//

返回

}

for(;;)

{

system("cls");

printf("1.

查看办公类联系人\n");

printf("2.

查看个人类联系人\n");

printf("3.

查看商务类联系人\n");

printf("0.

返回\n");

printf("\n

请输入操作步骤的代码:

"

scanf("%d",&c);

switch(c)

{

case1:

type='a';break;

case2:

type='b';break;

case3:

type='c';b

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1