通讯录管理系统设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通讯录管理系统

学生姓名:学院:计算机与通信工程学院班级:班学号:

摘要本课程设计主要是一个简单的通讯录管理系统。通过程序中的菜单编号实现对数据的添加、修改、删除等操作。在本课程设计中,系统开发平台为Windows2000,程序设计语言为C语言,程序运行平台为Windws 98/2000/XP。在程序设计中采用了结构体、链表的方法实现对数据的操作。程序通过调试运行,初步实现了设计目标,不过还需要很多的完善。

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

1 引言

对于日常生活中的人们来说,通讯录管理系统是一个非常重要,并且非常实用的工具。有了通讯录系统,人们就不用再为记不住熟人们的号码等联系方式而烦恼了,增进了人们之间的联系,让人们更加方便与朋友亲人联系了。

1.1课题背景

通讯管理系统是一个很实用的系统,不仅在人们用的手机中扮演着重要的角色,在各大商业与企业的运作中也起着非常大的作用。想当初没有电子通讯录系统,人们要花很多时间去记住联系人的联系方式,而且有时候还会弄错,导致一些不必要的尴尬,有了电子通讯录系统自然记不住的问题迎刃而解了。本系统只是实现了一个简单的通讯管理,通过对数组,结构体,链表,以及各个模块的应用达到一个管理的功能。

1.2课程设计目的

C语言现在是一个应用比较广泛的语言,通过对程序的设计让我们能更好的学习和了解它的各个方面的应用,对我们今后的学习有很大的帮助。同时,在做程序的过程中锻炼了我们对程序的分析与编写能力,更锻炼了我们的实战能力,为我们以后在自己的专业取得更好的成就做了一个好的铺垫。

1.3课程设计内容

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

图1-3通讯录管理系统

2 设计思路与方案

2.1设计思路

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

2.2操作流程图

图2-1操作流程

3 详细实现

3.1查看联系人

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

图3-1查看联系人

实现此功能的代码如下:

void output(struct phone_info *head)

{

struct phone_info *p1=head,*p2;

system("cls"); //清屏

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

{

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

system( "pause ");

return; //返回

}

printf("电话联系薄(共%d 条信息)\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");

else if(p1->type=='B'||p1->type=='b')

printf("类别:个人类\n");

else

printf("类别:商务类\n");

printf("邮箱

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

printf("\n");

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

break; //返回

p1=p2;

}

}

3.2新增联系人

进入菜单后选择添加序号按要求依次输入姓名、电话、类别、电子邮箱。如图3-2所示。

图3-2新增联系人

实现此功能的代码如下:

struct phone_info *new_info(struct phone_info *head)//新增

{

struct phone_info *p1,*p2,*p;

char c;

int flag;

system("cls"); //清屏

for(;;)

{

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

{

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

system( "pause");

return head;

}

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

{

head=p1=p2=(struct phone_info *)malloc(sizeof(struct phone_info)); //新建结构体并将结构体指针赋予链表头指针

p1->next=NULL;

}

else

{

p1=head;

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

}

printf("请输入要新增的联系人姓名:\n(如果输入“0”则停止新增,并返回主菜单)\n");

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

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

{

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

return head; //返回

}

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)

相关文档
最新文档