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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构课程设计报告通讯录的制作.docx

1、数据结构课程设计报告通讯录的制作 山东理工大学计算机学院课 程 设 计(数据结构)班 级姓 名学 号 指导教师二一一年一月二十日课程设计任务书及成绩评定课题名称 数据结构、题目的目的和要求: 1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。2、设计题目要求: 通讯录的制作设计目的:用数据结构中的双向链表作数据结构,结合C/C+语言基本知识。编写一个通讯录

2、管理系统。以把所学数据结构知识应用到实际软件开发中去。设计内容:本系统应完成一下几方面的功能:输入信息enter();显示信息display( );查找以姓名作为关键字 search( );删除信息delete( );存盘save ( );装入load( ) ;设计要求:1) 每条信息至包含 :姓名(NAME )街道(STREET)城市(CITY)邮编(ZIP)国家(STATE)几项。2) 作为一个完整的系统,应具有友好的界面和较强的容错能力。3) 上机能正常运行,并写出课程设计报告。、设计进度及完成情况日 期内 容1.10-1.11选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。1

3、.121.14创建相关数据结构,录入源程序。1.171.19调试程序并记录调试中的问题,初步完成课程设计报告。1.201.21上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。、主要参考文献及资料1 严蔚敏 数据结构(C语言版)清华大学出版社 19992 严蔚敏 数据结构题集(C语言版)清华大学出版社 19993 谭浩强 C语言程序设计 清华大学出版社4 与所用编程环境相配套的C语言或C+相关的资料、成绩评定:设计成绩: (教师填写)指导老师: (签字)二一一 年 一 月 二 十一 日目

4、录第一章 概述1第二章 系统分析2第三章 概要设计2第四章 详细设计5第五章 运行与测试16第六章 总结与心得 22参考文献24第一章 概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系

5、统和严格的训练。通过设计通讯录的制作,进一步熟悉数据结构的概念、基本知识和技能,掌握程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的程序设计问题。逐步熟悉程序设计的方法,并养成良好的编程习惯。在这次的课程设计中我选择的题目是通讯录的制作,我觉得这是我们日常生活中用到最多的一方面,也是对我们比较重要的一种东西。虽然它好像是一个被遗忘的问题,但是它往往能起到巨大的作用。通讯录的存在主要是主要是方便人们的生活,传统通讯录采用纸张印刷,然后装订成册,显示每个人的联系方法,地址等,比较笨重不方便。随着现代社会科技的发展你可以在个人电脑、掌上电脑、移动电话等任何联网设备上录入你的联系人的手机

6、电话号码、Email、QQ、MSN、通信地址等通讯录信息,或对以前的信息进行分组、管理和更新,这就是我想所做的。我想做出一个更加的方便,迅捷,减少很多劳动量的通讯录。使人们能轻松的管理自己的信息。第二章 系统分析1 设计内容:本系统应完成一下几方面的功能: 输入信息(Enter()): 调用此函数用以输入数据到内存中,此过程包括建立相应的链表或相应的数组,便于读取。显示信息(Display()):用以显示输入的数据,包括从内存中读出和从磁盘中读。查找(Search()):以姓名作为关键字查找要找的信息。删除信息(Delete()):用以删除选定的输入信息(姓名作为关键字)。存盘(Save())

7、:调用此函数将内存中的数据保存至磁盘中。装入(Load()):调用此函数用以将之前保存在磁盘的内容读入到内存中或显示到屏幕上。通讯录的基本活动包括:对一个人的采编、删除、查找和显示等等。由于上述四项基本活动都是通过人名(即关键字)进行的。作为通讯录,就需要一个模块来完成对别人的登记和记录情况,本程序使用文件来完成上述操作。2 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言是转化。3 程序执行时的命令:本程序为了使用时的方便,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入选者即可。当然也要注意输入时格式,否者可能会引起一些错误。5.测

8、试数据。要根据我们自己的需要进行测试,不能凭空的进行数据测试。第三章 概要设计3.1 主要数据结构主要利用线性表的链式存储结构,来存储数据和信息。3.2设计方法及原理 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。因此,为了表示每个数据元素与其后继元素之间的逻辑关系,对于数据元素来说,除了存储数据本身信息之外,还需要存储一个指示其后继的信息。这两部分组成数据的存储映像,称为结点。3.3 流程图7exit()退出3.4设计结构体及基本数据成员类型:(1) 结构体:(构造一个结构体来存储和使用数据)struct address /*定义结构*/ char name30; /

9、姓名 char street100; /街道 char city30; /城市 char state30; /国家 char zip11; /邮政编码 struct address *next; /*后继指针*/ struct address *prior; /*前导指针*/;struct address *start; /*首结点*/struct address *last; /*尾结点*/struct address *find(char *); /*声明查找函数*/(2)包含被调用函数: 功能void enter(); /输入信息 /*函数声明*/void search(); /查找信息

10、void save(); /存盘 void load(); /装入void list(); /显示信息void mldelete(struct address *,struct address *); /删除信息void dls_store(struct address *i,struct address *start, struct address *last);void inputs(char *,char *,int);void display(struct address *);int menu_select(void);(3)实现主程序与各模块的调用关系:主函数通过调用各个函数来连接

11、各个函数,从而实现程序功能的实现。int main(void) start = last = NULL; for(;) switch(menu_select() case 1:enter(); continue; case 2:mldelete(&start,&last); continue; case 3:list(); continue; case 4:search(); continue; case 5:save(); continue; case 6:load(); continue; case 7:exit(0); 第四章 详细设计(1)头函数#include#include#inc

12、lude(2)被调用函数 1.添加学生信息: void enter() /*输入函数,本函数循环输入资料,当输入姓名为空时退出*/ struct address *info; /*定义当前结点*/ for(;) info=(struct address *)malloc(sizeof(struct address); /*为当前结点分配空间*/ if(!info) printf(n Out of memory); exit(0); /*如果分配空间失败,退出程序*/ printf(输入空姓名结束:n); inputs(Enter name:,info-name,30); if(!info-na

13、me0) break; /*如果输入姓名为空,结束循环*/ inputs(Enter street:,info-street,100); inputs(Enter city:,info-city,30); inputs(Enter state:,info-state,30); inputs(Enter zip:,info-zip,11); dls_store(info,&start,&last); /*调用结点插入函数*/ 2删除联系人信息:void mldelete(struct address *start,struct address *last) /*删除函数*/ struct add

14、ress *info; char s80; inputs(Enter name:,s,30); /*输入欲删除结点的name域内容*/ info=find(s); /*查找该内容*/ if(info) /*如果找到*/ printf(Deleting.n); if(*start=info) /*如果该结点为首结点,把该结点的下驱作为新的首结点(入口)*/ *start=info-next; if(*start) (*start)-prior=NULL; /*如果新入口不为空,把入口的前驱置空*/ else *last=NULL; /*如果新入口为空,把尾结点置空,链表为空*/ else /*如

15、果欲删除的结点不是首结点*/ info-prior-next=info-next; /*令该结点的前驱的next指针指向该结点的后驱, *又令该结点的后驱的prior指点指向该结点的前驱*/ if(info!=*last) /*如果该结点是尾结点,则令该结点的前驱为尾结点*/ info-next-prior=info-prior; else *last=info-prior; free(info); /*释放该结点所占用的内存*/ printf(-Ok,deleted successfully!n); 3显示所有联系人;void list(void)struct address *info;

16、info=start; if(info=NULL) printf(NO information!); while(info) display(info); info=info-next; printf(nn);void display(struct address *info) /*输出传入结点函数*/ printf(%sn,info-name); printf(%sn,info-street); printf(%sn,info-city); printf(%sn,info-state); printf(%sn,info-zip); printf(nn);4查找联系人信息;void searc

17、h(void) /*查找函数*/ char name40; struct address *info; printf(Enter name to find:); /*输入欲查找的姓名*/ gets(name); info=find(name); if(!info) printf(Not foundn); /*如果没找到,显示Not found*/ else display(info); /*如果找到,显示该结点资料*/5装入void load() /*调用预存文件函数*/ register int t, size; struct address *info,*temp=0; char *p;

18、FILE *fp; /*打开文件*/ if(fp=fopen(mlist,r)=NULL) printf(Cannot open file!n); exit(0); printf(nnLoading.n); /*调用文件*/ size=sizeof(struct address); /*为结点分配内存*/ start=malloc(size); if(!start) /*如果读取失败,返回*/ printf(Out of memory!n); exit(0); info=start; p=(char*)info; while(*p+=getc(fp)!=EOF) for(t=0;tnext=m

19、alloc(size); if(!info-next) printf(Out of memory!n); return; info-prior=temp; temp=info; info=info-next; p=(char*)info; temp-next=0; last=temp; start-prior=0; fclose(fp); /*关闭文件,释放内存*/ printf(-OK!n); 6目录函数;int menu_select(void) /*主目录*/ char s80; int c; printf(O(_)O欢迎使用亮亮通讯录系统O(_)On); printf(*n); pri

20、ntf(* 1.输入信息 *n); printf(* 2.删除信息 *n); printf(* 3.显示信息 *n); printf(* 4.查找 *n); printf(* 5.存盘 *n); printf(* 6.装入 *n); printf(* 7.退出 *n); printf(*n); do printf(nPlease enter your choice:n); gets(s); c = atoi(s); while(c7); /*超出选项范围时,提示重新输入*/ return c; /*返回输入值*/(3)最终程序代码#include#include#includestruct a

21、ddress /*定义结构*/ char name30; char street100; char city30; char state30; char zip11; struct address *next; /*后继指针*/ struct address *prior; /*前导指针*/;struct address *start; /*首结点*/struct address *last; /*尾结点*/struct address *find(char *); /*声明查找函数*/void enter(); /*函数声明*/void search();void save(); void

22、load();void list();void mldelete(struct address *,struct address *);void dls_store(struct address *i,struct address *start, struct address *last);void inputs(char *,char *,int);void display(struct address *);int menu_select(void);int main(void) start = last = NULL; for(;) switch(menu_select() case 1

23、:enter(); continue; case 2:mldelete(&start,&last); continue; case 3:list(); continue; case 4:search(); continue; case 5:save(); continue; case 6:load(); continue; case 7:exit(0); int menu_select(void) /*主目录*/ char s80; int c; printf(O(_)O欢迎使用迷你通讯录系统O(_)On); printf(*n); printf(* 1.输入信息 *n); printf(*

24、2.删除信息 *n); printf(* 3.显示信息 *n); printf(* 4.查找 *n); printf(* 5.存盘 *n); printf(* 6.装入 *n); printf(* 7.退出 *n); printf(*n); do printf(nPlease enter your choice:n); gets(s); c = atoi(s); while(c7); /*超出选项范围时,提示重新输入*/ return c; /*返回输入值*/void enter() /*输入函数,本函数循环输入资料,当输入姓名为空时退出*/ struct address *info; /*定

25、义当前结点*/ for(;) info=(struct address *)malloc(sizeof(struct address); /*为当前结点分配空间*/ if(!info) printf(n Out of memory); exit(0); /*如果分配空间失败,退出程序*/ printf(输入空姓名结束:n); inputs(Enter name:,info-name,30); if(!info-name0) break; /*如果输入姓名为空,结束循环*/ inputs(Enter street:,info-street,100); inputs(Enter city:,inf

26、o-city,30); inputs(Enter state:,info-state,30); inputs(Enter zip:,info-zip,11); dls_store(info,&start,&last); /*调用结点插入函数*/ void inputs(char *prompt,char *s,int count) /*输入函数,有越界检测功能*/ char p255; do printf(prompt); fgets(p,254,stdin); if(strlen(p)count) printf(nToo Longn); while(strlen(p)count); pstrlen(p)-1=0;

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

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