通讯录的制作(数据结构C语言版)

上传人:xmg****18 文档编号:120108421 上传时间:2020-02-03 格式:DOC 页数:13 大小:115KB
返回 下载 相关 举报
通讯录的制作(数据结构C语言版)_第1页
第1页 / 共13页
通讯录的制作(数据结构C语言版)_第2页
第2页 / 共13页
通讯录的制作(数据结构C语言版)_第3页
第3页 / 共13页
通讯录的制作(数据结构C语言版)_第4页
第4页 / 共13页
通讯录的制作(数据结构C语言版)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《通讯录的制作(数据结构C语言版)》由会员分享,可在线阅读,更多相关《通讯录的制作(数据结构C语言版)(13页珍藏版)》请在金锄头文库上搜索。

1、.word格式,通讯录的设计一、设计思路:经过一个学期的程序设计学习,我逐渐了解了计算机的基本原理和c语言的基本常识,并可以逐渐自己来实现一些简单的程序任务。此次程序设计我选择了通讯录设计,通过函数、结构体的定义以及一些基本操作运用,经过一个多月的编写、调试、测试,最终完成了该程序的设计。以下为我的设计思路:首先,确定通讯录的功能,我初步设计了六项功能:输入(程序中对应 enter() )、删除(程序中对应delete() )、显示通讯录(程序中对应list() )、搜索(程序中对应search() )、保存(程序中对应save() )、装载(程序中对应 load() )。其次,对于存储的数据

2、结构,我则主要选择了一下几个方面的信息:姓名、性别年龄、籍贯、手机、下一个指针(用于链表的操作与实现)、当前指针(用于链表的操作与实现)。二、程序源代码:, 专业.专注 .#include struct address/*创建一个address结构*/char name10;/*姓名*/char sex2;/*性别*/char age2;/*年龄*/char native10;/*籍贯*/char telephone12; /*手机*/struct address *next; /*下一个入口的指针 */struct address *prior; /*当前记录的指针*/ list_entry

3、;struct address *start; /*指向列表中第一个入口*/struct address *last; /*指向列表中最后一个入口*/void enter(),display(),search(),save(),load();menu_select(),list(),delet(),inputs();main()char s20,choice;struct address *info;start=last=NULL; /*列表长度清零*/for(;) /*列循环的一个用法*/switch(menu_select()case 1: enter();/*输入1,进入enter()程

4、序,是输入通讯录*/break;case 2:delet();/*输入2,进入delete()程序,是删除一个记录*/break;case 3:list();/*输入3,进入list()程序,是列表显示通信录*/break;case 4:search();/*输入4,进入search()程序,搜索一个街道*/break;case 5:save();/*输入5,保存列表到磁盘文件*/break;case 6:load();/*输入6,从磁盘文件读入列表*/break;case 7:return(0); /*选择一个选项*/menu_select()char s20;int c;printf(1.

5、输入一个名字(直接回车则退出)n);printf(2.删除一个名字n);printf(3.列表显示n);printf(4.搜索查询n);printf(5.保存文件n);printf(6.装入文件n);printf(7.退出n);doprintf(n输入您的选择:);gets(s);c=atoi(s);while (c7);return c;/*输入名字和地址*/void enter()struct address *info,*dls_store();for(;)info=(struct address *) malloc(sizeof(list_entry);if (!info) print

6、f(n内存溢出);return;inputs(输入姓名:,info-name,10);if (!info-name0) break;/*名字长度为0,停止输入*/inputs(输入性别:,info-sex,2);inputs(输入年龄:,info-age,2);inputs(输入籍贯:,info-native,10);inputs(输入电话:,info-telephone,12);start=dls_store(info,start);/*保存在第一个记录里*/*输入循环*/inputs(prompt,s,count) /*这个函数用于输入长度为count的一个字符串,用于防止字符串长度超过它

7、的空间,并提出警告*/char *prompt;char *s;int count;char p255;doprintf(prompt);/*显示这个函数的字符串*/gets(p);/*从键盘获得255个输入*/if(strlen(p)count) printf(n字符串超过长度!);/*如果数组P中的长度超过调用函数中的参数count,提示*/while (strlen(p)count);/*如果输入的字符串长度超过count,循环重新输入,否则退出,返回调用者*/strcpy(s,p);/*s是目标字符串,输出时字符串在s中*/return(0);/*产生一个又链接表,当一个新元素插入到列

8、表的开始时,一个指向第一个元素的指针被返回*/struct address *dls_store(i,top)/*存贮顺序*/struct address *i;/*新的元素*/struct address *top;/*列表中的第一个元素*/struct address *old,*p;if(last=NULL) /*列表中的第一个元素*/i-next=NULL;i-prior=NULL;last=i;return i;p=top;/*从列表的顶部开始*/old=NULL;while(p)if(strcmp(p-name,i-name)next;elseif (p-prior) p-prio

9、r-next=i;i-next=p;i-prior=p-prior;p-prior=i;return top;i-next=p;/*新的第一个元素*/i-prior=NULL;p-prior=i;return i;old-next=i;/*设置未尾*/i-next=NULL;i-prior=old;last=i;return start;/*从列表中删除一个元素*/delet()struct address *info,*find();char s10;printf(输入姓名:);gets(s);info=find(s);if(info)if (start=info)start=info-ne

10、xt;if(start) start-prior=NULL;else last=NULL;else info-prior-next=info-next;if (info!=last)info-next-prior=info-prior;elselast=info-prior;free(info);/*释放空间*/return(0);struct address *find(name)/*一个查找姓名的结构*/char *name;struct address *info;info=start;while(info)if(!strcmp(name,info-name) return info;i

11、nfo=info-next;/*获得下一个地址*/printf(姓名没有发现!n);return NULL;/*没有发现姓名*/list()/*列表*/register int t;struct address *info;info=start;while(info)display(info);info=info-next;/*获得下一个地址*/printf(nn);return(0);void display(info)/*显示通信录*/struct address *info;printf(%sn,info-name);printf(%sn,info-sex);printf(%sn,inf

12、o-age);printf(%sn,info-native);printf(%sn,info-telephone);printf(nn);void search()/*搜索一个名字*/char name10;struct address *info,*find();printf(输入查找的名字!);gets(name);if(!(info=find(name) printf(没有找到!n);else display(info);void save()/*保存通信录*/register int t;struct address *info;FILE *fp;if(fp=fopen(mlist,wb)=NULL) /*打开文件名mlist如果错误*/printf(没有找到文件.n);exit(1);printf(n正在保存文件.n);info=start;while(info)fwrite(info,sizeof(struct address),1,fp);info=info-next;/*获得下一个地址*/fclose(fp);void load()/*打开一个文件*/register int t;struct address *info,*temp=NULL;FILE *f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号