C++课程设计《通讯录的制作》 .doc

上传人:laozhun 文档编号:2384433 上传时间:2023-02-17 格式:DOC 页数:39 大小:1.13MB
返回 下载 相关 举报
C++课程设计《通讯录的制作》 .doc_第1页
第1页 / 共39页
C++课程设计《通讯录的制作》 .doc_第2页
第2页 / 共39页
C++课程设计《通讯录的制作》 .doc_第3页
第3页 / 共39页
C++课程设计《通讯录的制作》 .doc_第4页
第4页 / 共39页
C++课程设计《通讯录的制作》 .doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《C++课程设计《通讯录的制作》 .doc》由会员分享,可在线阅读,更多相关《C++课程设计《通讯录的制作》 .doc(39页珍藏版)》请在三一办公上搜索。

1、河南城建学院课程设计报告书专 业:计算机科学与技术 课程设计名称:数据结构课程设计题 目:通讯录的制作班 级: 0814102班学号: 081410203姓名: 郝静琳同 组 人 员: 王芳指 导 老 师:张延红 张芳芳 杨斌完 成 时 间:2012年2月17日摘要 通讯录是现在社会中最常用到的东西,在信息社会,对通讯录的电子化已经是很平常的事了。本文主要叙述了一个使用VC制作一个通讯录的过程。系统主要是为了满足个人用户对联系人的管理和查询而设计。实现了用户对联系人信息的添加、查询、浏览、删除和对基本用户的管理,并且联系人的信息必须包括姓名、街道、城市、邮编、国家这些信息选项。系统使用visu

2、al c+作为编程语言数据结构。系统设计突出、人性化的特点。界面美观,友好。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言。关键词:VC、通讯录、数据目录目录1第一章开发环境和开发工具11.1C语言简介11.2 开发背景11.3 开发环境1第二章 算法思想52.1 系统需求分析52.2 系统总体设计52.2.1 系统设计目标52.2.2 开发设计思想52.2.3 系统

3、功能模块设计62.3 算法思想描述6第三章算法实现83.1 数据结构83.2 程序模块83.3 各模块之间的调用关系233.4 源程序代码23第四章测试与分析294.1 测试数据选择294.2 测试结果分析29总 结34心得体会35参考文献36第一章 开发环境和开发工具1.1 C/ C +语言简介也可以让各种组件方便的转变为基于Web的应用,并且能够通过Internet被各种系统或是其他开发语言所开发的应用调用。1.2 开发背景 随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行通讯录管理已成为衡量企业

4、管理科学化和现代化的重要标志,而通讯录管理的全面自动化则是其中重要的组成部分。因此,本文所研究的通讯录管理系统具有一定的使用价值和现实意义。1.3 开发环境本文所采用的开发环境主要是基于vc6.0。编程语言经过编译或解析成为机器语言,才能别计算机理解并执行。高级语言按照翻译方式可以分为两类:编译性和解释性。C+是一种编译性的高级语言,其过程严格按照6个步骤进行:语法分析、词法分析、语义分析、中间代码生成、优化代码和目标代码生成。Vc6.0是当今主流的c/c+集成开发环境,除集编辑、编译和运行与一体外,还提供了丰富的控件、菜单和类定义自动处理功能。 语言 编译 程序员 - - - - - - 集

5、成开发工具 计算机 程序员 Vc6 exe(0101001) VC6.0的全称是:Visual c+6.0; 它是美国Microsoft公司研发的基于Windows操作系统的C+集成开发环境。高级语言的编程的学习,主要分为两个方面:语言理论和开发工具。VC6.0作为一个集成开发环境,是学习的重点。开始/所用程序Microsoft Visual Studio6.0Microsoft Visual C+6/0启动VC6.0开发环境,也可以通过找到安装VC6.0的子目录启动MSDEV.EXE执行文件来启动VC6.0开发环境。用向导来创建一个软件项目。在软件开发过程中,人们认识到应用程序的创建有相似性

6、和重复性,如果能有一种功能,即自动化创建一类程序,则可以大大提高软件开发效率和软件编程的入门门槛。因此应用程序向导应运而生。 C/C+编译器 C和C+都是高级语言。 C语言主要是用于面向对象的程序设计,而C+是C的超集,即C是C+的子集。C+包含了原有的C的语法规则,同时增加了面向对象和泛型编程的思想,支持了类的定义,对象的创建和通用算法的使用。 高级语言要被计算机理解并执行,都要经过一个“翻译的过程”。在编译语言中,这种“翻译过程”有两种:编译性和解释性。变异性缘是将该语言一次性编译成另外一种语言或机器语言,如C/C+;解释性语言是在运行时逐行或逐段解释成其他语言或机器语言,如HTML.连接

7、器和调试器VC6.0集成开发环境提供了很方便的功能之一;编辑、连接、编译和运行的一体化。原来连接器要做的工作就是将C/C+编译器产生OBJ文件和资源编译器生成的RES文件连接起来。而现在这个步骤在VC6.0中队橙学院来说是透明的。调试器是VC6.0中查找程序错误的工具,该工具个语法分析过程的语法错误提示不同。首先应该理解程序从开发到使用种可能发生两种错误:语法错误和逻辑错误。第二章 算法思想 随着计算机技术的飞速发展,电子计算机和通信技术的发展,人类已经逐渐地进入信息化社会。人们对信息和数据的利用与处理也已进入自动化、网络化的阶段,因此,开发相关的通讯录管理系统已经成为各行各业的必要了。2.1

8、 系统需求分析目前,各类企业所管理的人数不断增加,依靠传统的方式来管理人员通讯录信息已经不能满足各类企业对人员的了解,在这种情况下,通讯录管理系统应运而生。一套合格的通讯录管理系统必须具备以下特点:能够对给类人员通讯信息进行集中管理。能够大大提高用户的工作效率。能够对人员信息实现增,删,改,查功能。通讯录管理系统最重要的功能包括以下几个方面:人员信息的添加、删除、查询、修改。2.2 系统总体设计2.2.1 系统设计目标本文研究开发的通讯录管理系统用于支持企业完成对人员进行通讯管理工作,有如下三个方面的目标:支持企业实现规范化的管理。支持企业高效率完成人事通讯管理的日常业务,包括新员工加入时人事

9、通讯录档案的建立、老员工转出、辞职、退休等。2.2.2 开发设计思想 基于以上系统设计目标,本文在开发人事管理信息系统时遵循了以下开发设计思想: 采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。尽量达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。系统应具备基本功能,及时根据用户需求进行数据的添加、删除、修改、等操作。2.2.3 系统功能模块设计 本系统分为四个模块:添加信息模块,查看信息,查找信息,删除信息。得到如图3-1所示的系统功能模

10、块图。通讯录管理系统添加个人信息查看个人信息查找个人信息删除个人信息 图2-1系统功能模块图2.3 算法思想描述本程序的算法根基程序要实现功能进行算法说明。1 建立通讯录 建立通讯录是在函数person*create(int)中实现的。本质上是一个链表的建立。 首先我们需要两个指针TEL*head,*rear =NILL.,进行链表数据的保存,建立表头对指针head分配内存,head=newTEL。对分配内存是否成功,j进行数据输入。否则分配不成功,结束程序!然后进行表体的建立,因为要输入多次,而且次数是清楚的,所以用while做循环,进行表体的建立及朋友信息的录入。2. 查看通讯录 查看通讯

11、录的实质是对链表的遍历,循环次数不确定,选择用if循环对数据进行输出,当不为空的时候,一直循环,当(head=NULL)时,跳出循环体。这样实现了查看的功能。3. 查找联系人 本功能的实质就是传入一个关键之,姓名,然后在链表中进行查找,找到后对该节点进行输出。具体算法:for(p=head;p!=NULL;p=p-next)if(strcmp(p-name,findname)=0)/比较字符串s1和s2。 printf(%-16s%-16s%-16s%-16s%-16sn,p-name,p-street,p-city,p-eip,p-state);+count; if(count=0)prin

12、tf(查无此人n);getchar();4. 删除联系人删除联系人,查找到该联系人,链表调整,删除指定节点!删除联系人的姓名和表头,用while循环对链表惊醒条件遍历,当前节点的姓名等于传入姓名,跳出循环体。然后对当前节点和前节点进行判断,如果当前节点为空。五次朋友的信息。如果前节点为空。删除表头。其他情况删除为表体。第三章 算法实现3.1 数据结构资料信息系统是一个数据库应用系统,个人相关的所有信息都保存在数据库中。 3.2 程序模块1.文件引用 在通讯录管理系统中应用一些头文件,这些头文件可以帮助程序更好的运行。头文件引用时通过#include命令来实现的,下面为本程序所引用的头文件。#i

13、nclude /定义输入/输出函数#include /字符串处理#include /定义杂项函数及内存分配函数2.声名结构体 在本系统中定义了一个结构体 telephone,用来表示个人信息,其中包括个人信息的名字、街道、城市、邮编和国家等信息。定义了一个名为TEL的telephone类型的结构体变量。 struct Telephone char name20; char street20; char city20; char eip20; char state 20; struct Telephone *next,*front;typedef struct Telephone TEL;3.函

14、数声明 在本程序中使用了几个自定义的函数,这些函数的功能及声名格式如下。 void showmenu( );/菜单void enter( );/输入条目void display ( );/输出条目void search( );/查找条目(按姓名)void delet ( );/删除信息4.主函数主函数是程序的入口。本程序数的时间的功能是:调用showmenu函数显示主菜单功能;然后等待用户输入所选功能的编号,吉尔调用相应的功能;最后再次调用showmenu,显示主菜单功能。 程序代码如下: void main ( ) char ch; color(); for( ; ; ) while (1)

15、 showmenu ( );/显示菜单 scanf (%c, &ch); getchar(); switch (ch) case1:enter( );/添加条目 break; case 2:display ( );/输出条目 break; case 3:search( );/查找条目1.按姓名 break; case 4:delet( );/删除信息 display( );/输出删除后的结果 break; case 0: exit(0);/退出 break; default: printf(选择错误!); break; 5.自定义菜单功能 函数showmenu将程序中的基本功能列了出来。当输入

16、相应的数字后,程序会根据该数字调用不同的函数。具体数字表示的功能如下所示: 1.添加条目 2.查看条目 3.按姓名查找 4.删除条目 5退出 程序代码如下: void showmenu( ) printf(n*通讯录管理系统*n); printf ( t1.添加条目n); printf ( t2.查看条目n); printf ( t3.按姓名查找n); printf ( t4.删除条目n); printf ( t0.退出!n); printf ( *n); printf ( t请选择:n);6.添加条目在功能界面中输入1,即可进入到个人信息录入状态看,如果没有数据会显示相应的信息,并询问用户时

17、候要输入,如图所示。在功能界面中输入1,即可进入到个人信息录入状态看.会给输入提示。输入程序结果如下: 再输入一个新的信息完成后,程序会提示并询问用户是否输入,如果输入0,程序返回到功能选界面,如果选择任意键,则继续输入一个新的信息。源程序代码:void enter ( ) int a; TEL*p1=NULL,*p2=NULL; p1=(TEL *)malloc(sizeof(TEL); if(rear=NULL) p2=p1; else p2=rear; p2-next=p1; p1-front=p2; do printf ( 输入姓名:n); scanf(%s,p1-name); pri

18、ntf(输入街道:n); scanf(%s,p1-street); printf (输入城市:n); scanf ( %s, p1-city); printf (输入邮编:n); scanf ( %s, p1-eip); printf ( 输入国家:n); scanf ( %s, p1-state); printf(此信息已添加!); printf(是否继续录入? 输入0退出,输入其他数字继续n); scanf(%d,&a); getchar(); if(head=NULL) head=p1; if(a!=0) p1=(TEL *)malloc(sizeof(TEL); p2-next=p1;

19、 p1-front=p2; p2=p1; p1-next=NULL; rear=p1; while(a!=0);时间复杂度为:T(n)=O(n)7.查看条目个人所有信息显示只需要输入编号,便可以查看所有信息。在功能选择界面中输入2,既可以显示多有个人信息,程序会提示用户输入要查询的编号,如图所示: 源程序代码:void display( ) TEL*p=NULL; if ( head=NULL) printf ( 此通讯录中无记录,请输入记录后再使用本功能!n); return; printf ( *通讯录管理系统*n);/输出信息 printf (姓名 t街道 t城市 t邮编 t国家n);

20、for ( p=head;p!=NULL;p=p-next) printf ( %-16s%-16s%-16s%-16s%-16sn,p-name,p-street,p-city,p-eip,p-state); putchar(n); putchar(n);时间复杂度为:T(n)=O(n)8.按姓名查找 个人所有信息查询只需要输入个人的名字,便可以进行查询,在功能界面中输入3,既可以查找记录功能模块中的信息。程序会提示用户输入要查询的名字,如图所示: 源程序代码: void search( ) TEL*p; int count=0; char findname 20; printf ( 请输入

21、要查找的姓名:n); scanf (%s,findname); printf ( *通讯录系统*n); printf (姓名 t街道 t城市 t邮编 t国家n); for ( p=head;p!=NULL;p=p-next) if(strcmp(p-name, findname)=0)/比较字符串s1和s2。 printf(%-16s%-16s%-16s%-16s%-16sn,p-name,p-street,p-city,p-eip,p-state); +count; if(count=0) printf(查无此人n); getchar();时间复杂度为:T(n)=O(n)9.删除条目 删除个

22、人信息只需要输入相关信息,便可以删去,程序会提示用户要删除的人名。如图所示: 输入要删去的人名,即可删去,如图所示: 源程序代码: void delet( ) char findname 20;/先查找后删除 TEL*p=head,*pr=head; int count=0; printf( 请输入要删除的姓名:n); scanf(%s,findname); getchar(); if(p!=NULL) while(p!=NULL) if(strcmp(findname,p-name)=0)/输出删除信息 +count; printf (姓名 t街道 t城市 t邮编 t国家n); printf

23、 (%-16s%-16s%-16s%-16s%-16s n,p-name,p-street,p-city,p-eip,p-state); if(p=head) if(p-next=NULL) head=NULL; else head=p-next; head-front=NULL; free(p); p=head; else pr-next=p-next; free(p); p=pr-next; printf( 此信息已删除!n); else pr=p; p=p-next; if(count=0) printf(查无此人 无法删除n); 时间复杂度为:T(n)=O(n)10.背景颜色 程序代码

24、如下: int color() system(color 47;/调用system(color ab),改变dos框背景及字体颜色; return 0; 3.3 各模块之间的调用关系通讯录管理系统添加个人信息查看个人信息查找个人信息删除个人信息按姓名查找图3-1各模块之间关系调用图3.4 源程序代码#include /定义输入/输出函数#include /字符串处理#include /定义杂项函数及内存分配函数struct Telephone char name20; /姓名 char street20; /街道 char city20; /城市 char eip20; /邮编 char st

25、ate 20; /国家 struct Telephone *next,*front;/注意最后的分号不能省略typedef struct Telephone TEL;/定义一个通讯录信息结构体/其中Telephone为该结构体的名称,花括号里面的内容是结构体的成员名,这是声明结构体的一般形式。也可以在声明结构体的同时对它进行初始化。TEL *head = NULL,*rear=NULL;/初始化void showmenu( );/菜单void enter( );/输入条目void display ( );/输出条目void search( );/查找条目(按姓名)void delet ( );

26、/删除信息void main ( ) char ch;color();for( ; ) while (1) showmenu ( );/显示菜单 scanf (%c, &ch); getchar(); switch (ch)/选择 case1:enter( );/添加条目 break; case 2:display ( );/输出条目 break; case 3:search( );/查找条目1.按姓名 break; case 4:delet( );/删除信息 display( );/输出删除后的结果 break; case 0: exit(0);/退出 break; default: pri

27、ntf(选择错误!); break; /菜单void showmenu( ) printf(n*通讯录管理系统*n); printf ( t1.添加条目n); printf ( t2.查看条目n); printf ( t3.按姓名查找n); printf ( t4.删除条目n); printf ( t0.退出!n); printf ( *n); printf ( t请选择:n);/添加条目void enter ( ) int a; TEL*p1=NULL,*p2=NULL;/初始化 p1=(TEL *)malloc(sizeof(TEL); /给p1分配空间 if(rear=NULL) p2=

28、p1; /p1是建立一个双链表的结点/p2是指向p1前面结点的尾指针 else/添加结点 p2=rear; p2-next=p1; p1-front=p2; do printf ( 输入姓名:n); scanf(%s,p1-name); printf(输入街道:n); scanf(%s,p1-street); printf (输入城市:n); scanf ( %s, p1-city); printf (输入邮编:n); scanf ( %s, p1-eip); printf ( 输入国家:n); scanf ( %s, p1-state); printf(此信息已添加!); printf(是否

29、继续录入? 输入0退出,输入其他数字继续n); scanf(%d,&a); getchar(); if(head=NULL) /当头指针为空时 head=p1; if(a!=0) /判断是否输入继续输入个人信息 p1=(TEL *)malloc(sizeof(TEL);/给p1分配空间 p2-next=p1; p1-front=p2; p2=p1; p1-next=NULL; rear=p1; while(a!=0);/输出学生信息void display( ) TEL*p=NULL; if ( head=NULL) printf ( 此通讯录中无记录,请输入记录后再使用本功能!n); ret

30、urn; printf ( *通讯录管理系统*n);/输出信息 printf (姓名 t街道 t城市 t邮编 t国家n); for ( p=head;p!=NULL;p=p-next) printf ( %-16s%-16s%-16s%-16s%-16sn,p-name,p-street,p-city,p-eip,p-state); putchar(n); putchar(n);/查找姓名1.按姓名void search( ) TEL*p; int count=0; char findname 20; printf ( 请输入要查找的姓名:n); scanf (%s,findname); pr

31、intf ( *通讯录系统*n); printf (姓名 t街道 t城市 t邮编 t国家n); for ( p=head;p!=NULL;p=p-next) if(strcmp(p-name, findname)=0)/比较字符串s1和s2。 printf(%-16s%-16s%-16s%-16s%-16sn,p-name,p-street,p-city,p-eip,p-state); +count; if(count=0) printf(查无此人n); getchar();/删除信息void delet( ) char findname 20;/先查找后删除 TEL*p=head,*pr=h

32、ead; int count=0; printf( 请输入要删除的姓名:n); scanf(%s,findname); getchar(); if(p!=NULL) while(p!=NULL) if(strcmp(findname,p-name)=0)/输出删除信息 +count; printf (姓名 t街道 t城市 t邮编 t国家n); printf (%-16s%-16s%-16s%-16s%-16s n,p-name,p-street,p-city,p-eip,p-state); if(p=head) if(p-next=NULL) head=NULL; else head=p-ne

33、xt; head-front=NULL; free(p); p=head; else pr-next=p-next; free(p); p=pr-next; printf( 此信息已删除!n); else pr=p; p=p-next; if(count=0) printf(查无此人 无法删除n); int color() system(color 47);/调用system(color ab),改变dos框背景及字体颜色; return 0;第四章 测试与分析4.1 测试数据选择 姓名 街道 城市 邮编 国家Wangfang xinhulu zhengzhou 118304 zhongguo

34、Haojinlin mingruelu luoyang 118305 zhongguo 4.2 测试结果分析测试的过程中,成果的实现了个人信息的录入.显示、查找、删除等操作。而且,提示令人满意,让人能够正确的操作这个系统。基本上实现了原本设计这个系统的目标。在系统的设计中考虑到线性的时间复杂度为O(n).故本系统链表的时间复杂度也为O(n) 结果: 板块颜色: 添加条目: 查看条目:按姓名查找:删除条目: 退出总 结 在今后的工作、学习中我将认真总结经验教训,努力使自己成为一名技术过硬、工作严谨、思维活跃的工程人员,为提高人们的生活质量做出更大的贡献。通讯录系统对人们日常生活带来很大的方便。便于交流,记录比较系统化。本通讯录系统的优点是:

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号