ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:153.57KB ,
资源ID:6406851      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6406851.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(通讯录管理系统设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

通讯录管理系统设计报告.docx

1、通讯录管理系统设计报告通讯录管理系统学生姓名: 学院:计算机与通信工程学院 班级:班 学号: 摘 要 本课程设计主要是一个简单的通讯录管理系统。通过程序中的菜单编号实现对数据的添加、修改、删除等操作。在本课程设计中,系统开发平台为Windows2000,程序设计语言为C语言,程序运行平台为Windws 98/2000/XP。在程序设计中采用了结构体、链表的方法实现对数据的操作。程序通过调试运行,初步实现了设计目标,不过还需要很多的完善。关键词 程序设计; 通讯录; C语言;1 引 言对于日常生活中的人们来说,通讯录管理系统是一个非常重要,并且非常实用的工具。有了通讯录系统,人们就不用再为记不住

2、熟人们的号码等联系方式而烦恼了,增进了人们之间的联系,让人们更加方便与朋友亲人联系了。1.1课题背景通讯管理系统是一个很实用的系统,不仅在人们用的手机中扮演着重要的角色,在各大商业与企业的运作中也起着非常大的作用。想当初没有电子通讯录系统,人们要花很多时间去记住联系人的联系方式,而且有时候还会弄错,导致一些不必要的尴尬,有了电子通讯录系统自然记不住的问题迎刃而解了。本系统只是实现了一个简单的通讯管理,通过对数组,结构体,链表,以及各个模块的应用达到一个管理的功能。1.2课程设计目的C语言现在是一个应用比较广泛的语言,通过对程序的设计让我们能更好的学习和了解它的各个方面的应用,对我们今后的学习有

3、很大的帮助。同时,在做程序的过程中锻炼了我们对程序的分析与编写能力,更锻炼了我们的实战能力,为我们以后在自己的专业取得更好的成就做了一个好的铺垫。1.3课程设计内容本课程设计是一个通讯录管理系统,可以实现简单的插入、删除、添加等功能。 图1-3通讯录管理系统2 设计思路与方案2.1设计思路该个人通讯录管理系统是一个对数据进行管理修改的简单系统,首先做出一个主菜单界面供用户选择需要的操作,再用各个模块来实现菜单中各单独功能的实现,例如修改数据、插入数据、添加数据等。最后写一个主函数调用模块和函数实现通讯录菜单中的各功能。 2.2操作流程图 图2-1操作流程 3 详细实现3.1查看联系人进入菜单后

4、选择查看联系人序号,再选择查看联系人的类型,即可列出该类型的所有联系人。如图3-1所示。图3-1查看联系人实现此功能的代码如下:void output(struct phone_info *head) struct phone_info *p1=head,*p2; system(cls); /清屏 if(head=NULL) /如果当前链表头指针为空 printf(当前没有任何联系人信息nn); system( pause ); return; /返回 printf(电话联系薄(共%d条信息)nn,n); for(;) p2=p1-next; printf(姓名:%sn,p1-name); p

5、rintf(电话:%sn,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(邮箱:%sn,p1-email); printf(n); if(p1-next=NULL) /如果当前指针所指向的结构体中next指向空则链表输出完毕 break; /返回 p1=p2; 3.2新增联系人 进入菜单后选择添加序号按要求依次输入姓名、电话、类别、电子邮箱。如图3-2所示。图3-2新增联系人 实现此功能的代

6、码如下: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(存储空间已满,不能再录入新数据!nn); system( pause); return head; if(n=0) /判断当前联系人数目是否为0 head=p1=p2=(struct phone_info *)malloc(sizeof(struct phone_i

7、nfo); /新建结构体 并将结构体指针赋予链表头指针 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,

8、p2-phone); for(flag=1,p=head;n!=0&p!=NULL;) /判断是否输入了相同的联系人电话 if(strcmp(p2-phone,p-phone)=0) printf(n录入了相同的联系人电话nn); 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)

9、; /保存上一次输入的回车键 scanf(%c,&p2-type); printf(n请输入联系人的电子邮箱:n); scanf(%s,p2-email); while(p1-next!=NULL) p1=p1-next; /找到链表的尾部 p1-next=p2; /将链表的尾部指向新添加的联系人 p2-next=NULL; /新的链表尾部赋结束标记 system(cls); printf(新增成功nn); n+; /保存的联系人数目加1 return head;3.3拨号联系人 进入菜单后选择拨号联系人,然后输入要拨号的姓名,会提示拨号成功,即实现了对联系人的拨号。图3-3拨号联系人实现此功

10、能的代码如下:void diag(struct phone_info *head) char name20; struct phone_info *p1; system(cls); for(;) if(n=0) /判断当前联系人数目是否为0 printf(当前没有任何联系人信息nn); system(pause); return; system(cls); output(head); /调用输出函数 显示当前所有联系人的信息 printf(请输入要拨号的联系人姓名:n(如果输入“0”则停止拨号,并返回主菜单)n); scanf(%s,name); if(strcmp(name,0)=0) /判

11、断输入的姓名是否为0 return; /返回 else p1=head; for(;) if(strcmp(name,p1-name)=0) /找到指定联系人所在节点 printf(n拨号成功nn); system(pause); break; p1=p1-next; /找到下一节点 if(p1=NULL) /指针为空 printf(n姓名为%s的联系人不存在!nn,name); system(pause); break; 4 运行环境与结果4.1运行环境在本课程设计中,系统开发平台为WindowsXP,程序设计语言为Visual C+6.0,程序的运行环境为Visual C+ 6.0。Vis

12、ual C+一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种,在本课程设计中,以Visual C+ 6.0为编程环境。Microsoft Visual C+ 6.0是Microsoft公司的Microsoft Visual Studio 6.0开发工具箱中的一个C+程序开发包。Visual C+包中除包括C+编译器外,还包括所有的库、例子和为创建Windows应用程序所需要的文档。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。 V

13、isual C+从最早期的1.0版本,发展到最新的7.0版本,Visual C+已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的7.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。Visual C+ 6.0是Microsoft公司推出的目前使用最广泛的基于Windows平台的可视化编程环境。Visual C+ 6.0是在以往版本不断更新的基础上形成的,由于其功能强大,灵活性好,完全课扩展以及具有强大的Internet支持,因而在各种C+语言开发工具中脱颖而出,成为目前最为流行的C+语言集成开发环境。Visual C+ 6.0秉承Visual

14、 C+以前版本的优异特性,为用户提供了一套良好的可视化开发环境:主要包括文本编辑器、资源编辑器、工程创建工具、Debugger调试器等等。用户可以在集成开发环境中创建工程、打开工程、建立、打开和编辑文件、编译、链接、运行、调试应用程序。4.2运行结果主操作界面 在执行程序的时候会看到如下的操作界面,输入相应的序号即可进入下一步操作。如图所示: 图4-1主操作界面(1) 查看联系人。结果如图所示:图4-2查看联系人(2) 增加联系人。结果如图所示:图4-3增加联系人(3) 拨号联系人。 图4-4拨号联系人5结束语这次课程设计是大学入学以来的第一次专业实践性的课程,从此次的实践中让我深深的体会到“

15、从实践中学习”这句话的重要性。从设计中可以学到很多课本上学不到的东西,尽管这次设计中遇到了很多的阻碍,但是看到自己设计出来的成果还是值得的。设计的过程不仅复习巩固了学过的知识,同时也接受到了更多的新知识,让自己更加的充实。从此次设计中让我充分的认识到课本知识必须要有,但仅仅知道课本上的知识不去运用也是枉然。如今这个飞速发展的社会需要的不是那种理论人才,而是理论能与实践相结合的人,这样才能从中得到更多。通过本次设计我发现现在对专业知识掌握的还不很好,有很多方面需要进一步的提高,在今后的学习中一定要好好的努力,认真的去体会知识的内涵再正确的加以运用,这样才会达到学习的最佳效果。参考文献1杨路明.C

16、语言程序设计教程.北京:北京邮电大学出版社,2000.12谭浩强.C程序设计.北京:北京清华大学出版社,1999.13向南平.实用C语言程序设计.长沙中南工业大学出版社,1994.44北京金洪恩电脑有限公司.C/C+程序设计入门.天津:天津电子出版社,2003.45王志雄,田小梅.数据结构-C语言描述.北京:北京工业大学出版社,2002.3 附录:源程序代码#include #include #include #include int n=0; /定义全局变量 存储电话联系人个数 struct phone_info /定义结构体 存储联系人信息 char name20; /姓名 char ph

17、one20; /电话 char type; /分类 char email20; /邮箱 struct phone_info *next; /指向下一个节点的指针; /*-错误函数-*/所需参数:无/函数功能:显示错误信息/返回参数:无void error() printf(代码错误nn); system( pause ); /*-输出函数-*/所需参数:链表头指针/函数功能:输出链表中的联系人信息/返回参数:无void output(struct phone_info *head) struct phone_info *p1=head,*p2; system(cls); /清屏 if(head

18、=NULL) /如果当前链表头指针为空 printf(当前没有任何联系人信息nn); system( pause ); return; /返回 printf(电话联系薄(共%d条信息)nn,n); for(;) p2=p1-next; printf(姓名:%sn,p1-name); printf(电话:%sn,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(邮箱:%sn,p1-email);

19、 printf(n); if(p1-next=NULL) /如果当前指针所指向的结构体中next指向空则链表输出完毕 break; /返回 p1=p2; /*-新增函数-*/所需参数:链表头指针/函数功能:新增联系人信息 并自动添加到链表末尾/返回参数:链表头指针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(存储空间已

20、满,不能再录入新数据!nn); 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

21、(%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录入了相同的联系人电话nn); system( pause ); flag=0; /标志位赋“0” free(p2); system(cls);

22、 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; /找到链表的尾部 p1-next=p2; /将链表的尾部指向新添加的联系人 p2-next=NULL; /新的链表尾部赋

23、结束标记 system(cls); printf(新增成功nn); n+; /保存的联系人数目加1 return head; /*-拨号函数-*/所需参数:链表头指针/函数功能:在链表中查找指定的联系人 并模拟拨号效果/返回参数:无void diag(struct phone_info *head) char name20; struct phone_info *p1; system(cls); for(;) if(n=0) /判断当前联系人数目是否为0 printf(当前没有任何联系人信息nn); system(pause); return; system(cls); output(head

24、); /调用输出函数 显示当前所有联系人的信息 printf(请输入要拨号的联系人姓名:n(如果输入“0”则停止拨号,并返回主菜单)n); scanf(%s,name); if(strcmp(name,0)=0) /判断输入的姓名是否为0 return; /返回 else p1=head; for(;) if(strcmp(name,p1-name)=0) /找到指定联系人所在节点 printf(n拨号成功nn); system(pause); break; p1=p1-next; /找到下一节点 if(p1=NULL) /指针为空 printf(n姓名为%s的联系人不存在!nn,name);

25、 system(pause); break; /*-释放函数-*/所需参数:链表头指针/函数功能:释放链表存储空间的内容/返回参数:无void freelist(struct phone_info *head) struct phone_info *p1=head,*p2; for(;) if(p1-next=NULL) free(p1); break; else p2=p1-next; free(p1); p1=p2; /*-查看函数-*/所需参数:链表头指针/函数功能:显示指定类别的联系人信息/返回参数:无void look(struct phone_info *head) struct

26、phone_info *p; int c; int flag; char type; system(cls); if(n=0) /判断当前联系人数目是否为0 printf(当前没有任何联系人信息nn); 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) case 1:type=a;break; case 2:type=b;break; case 3:type=c;break; case 0:return; default:error(); flag=0; /标志位赋予0 p=head;

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

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