数据结构课程设计(通讯录制作).docx

上传人:王** 文档编号:1040510 上传时间:2024-03-16 格式:DOCX 页数:34 大小:218.93KB
下载 相关 举报
数据结构课程设计(通讯录制作).docx_第1页
第1页 / 共34页
数据结构课程设计(通讯录制作).docx_第2页
第2页 / 共34页
数据结构课程设计(通讯录制作).docx_第3页
第3页 / 共34页
数据结构课程设计(通讯录制作).docx_第4页
第4页 / 共34页
数据结构课程设计(通讯录制作).docx_第5页
第5页 / 共34页
数据结构课程设计(通讯录制作).docx_第6页
第6页 / 共34页
数据结构课程设计(通讯录制作).docx_第7页
第7页 / 共34页
数据结构课程设计(通讯录制作).docx_第8页
第8页 / 共34页
数据结构课程设计(通讯录制作).docx_第9页
第9页 / 共34页
数据结构课程设计(通讯录制作).docx_第10页
第10页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构课程设计(通讯录制作).docx》由会员分享,可在线阅读,更多相关《数据结构课程设计(通讯录制作).docx(34页珍藏版)》请在优知文库上搜索。

1、设计内容通讯录本系统应完成一下几方面的功能:1)输入信息enter();2)显示信息display();3)查找以姓名作为关键字search();4)删除信息delete();5)存盘save();6)装入load();设计要求:1)每条信息至包含:姓名(NAME)街道(STREET)城市(ClTY)(EIP)国家(STATE)几项2)作为一个完整的系统,应具有友好的界面和较强的容错能力二.设计思路通过visualc+6.0(用的是C语言)编写一个dos界面的控制台程序,该程序通过链表的操作,文件存储来实现通讯录的根本功能structaddress*定义结构*/charname10;*姓名*/

2、charstreet50;*街道*/charcity10;/*城市*/charstate15;/*国家*/chareip7;/*/struct address *next;*后继指针*/*前驱指针*/structaddress*prior;链表的插入,删除来实现通讯录里的内容的插入删除当操作完成通过文件件来存储链表的信息,下次翻开程序时,读取文件里的内容到内存中,放在链表,然后又可以对链表进行操作;在这里面,文件内容不可以在外部更改,只能通过读取到内存链表中,通过程序进行更改,然后再写入到文件,写入过程会覆盖上次的内容。structaddress*start;structaddress*las

3、t;structaddress*find(char*)*首结点*/*尾结点*/;*声明查找函数*/voidenter();/*函数声明*/voidsearch();/*查找,查找过程中调用find函数*/voidsave();/*存盘,将链表信息保存到文件中*/voidIoadO;/*导入,将文件内容导入到内存链表中*/voidlist();/*显示当前链表中信息*/voidddelete(structaddress*,structaddress*);voidinsert(structaddress*i,structaddress*start,structaddress*last);voidi

4、nputs(char*,char*,int);voiddisplay(structaddress*);intmenu_select(void);三.详细设计1.主界面设计通过SWitCh语句调用各种函数,实现各种操作。然后把SWitCh嵌套到无限的for循环(for(;)中,使完成每一步操作都回到到选择操作的主界面函数之间的相互调用E:学习课程设计Debug谑讯录.exe,I:欢迎使用Dom通祖录系统人兴兴XX兴*兴兴XW*i青在做其它操作前先导入*xx*xx*xMMMMMMMMMMMMMMMMXMMM MMMM MMM MMX MMMM MMK MMMMK1 .输入信息2 .删除信息3 .显

5、示信息4 .查找5 .存盘6 .导入7 .退出MMXMXMM MMMM KMM MMMM XM MMMXMM KMKMMMMMMKMMKMMMMMMPleaseenteryourchoice:voidmain()start=last=NULL;for(;)*无限循环*/(switch(menu-select()*调用主界面的选择函数,带回返回值*/(case 1: renter();continue;case 2: ddeletestart,&last);continue;case 3: list();continue;case 4: search();continue;case 5: sav

6、e();continue;case 6: load();continue;case7:exit(0);)*主目录*/intmenu_select(void)(chars80;printfC欢送使用DOS通讯录系统nzz);printf(*请在做其它操作前先导入*n)Printf(*1Printf(*2Printf(*3Printf(*4Printf(*5Printf(*6Printf(*7输入信息*n)删除信息*n)显示信息*n)查找*n)存盘*n)导入*n)退出*n)do(printf(zz11Plaseenteryourchoice:nzz);gets(s);c-atoi(s);*将获取的

7、字符串转换成整型*/while(c7);return c;/*返回输入值*/2.输入信息函数Pleaseenteryourchoice:1输入空姓名结束:请输入 请输入 请输入 请输入 请输入姓名:刘显安街道:江西德安城市:德安国家:中国邮编:123456输入空姓名结束:请输入姓名::欢迎使用DOy通史录系统八MMMMMKMMMMXMMMMMMK息息息MMMMMXKKKKMMKMMMKMMMMMXMMMMMXMMMMXMX共兴XXXXXXXXXi青在做其它操作前先导入共头XXxXX共XXXXXMmxmxmxxmxmmxmmxmmxmxxxmxmxmxxxmxxmxmmmmmxmxxmm输入函数

8、:structaddress*info;/*定义当前结点*/for(;)(info=(structaddress*)malIoc(sizeof(structaddress);*为当前结点分配空间*/if(!info)(printf(z,nOutofmemory);exit(0);*如果分配空间失败,退出程序*/)Printf(输入空姓名结束:n);inputs(请输入姓名:,info-name,10);if(!info-name0)break;*如果输入姓名为空,结束循环*/inputs(请输入街道:,info-street,50);inputs(请输入城市:,info-city,15);in

9、puts(请输入国家:,info-state,15);inputs(请输入:,info-eip,7);insert(info,&start,&last);*调用结点插入函数*/)输入函数调用到另外两个函数,inputs和insert其中inputs中还用到fgets(str,n,fp),把键盘的输入信息传到字符串中charp255;do(printf(prompt);fgets(p,254,stdin);*stdin,标准输入缓存,获取键盘输入信息*/if(strlen(p)count)printf(xznTooLongn);whiIe(strIen(p)count);pstrlen(p)-l

10、-0;strcpy(s,p);insert是关键函数,每当输入完一条信息都会调用到insert函数,将信息插入到链表中if(*last=NULL)/*如果尾结点为空,意味着当前链表为空*/*那么将该结点赋给头尾结点*/i-next=NULL;i-prior=NULL;*last=i;*start=;return;else*如果链表不为空,那么将信息插入到链表尾,作为尾结点*/(*last)-next=i;i-prior=*last;i-next=NULL;*last-(*last)-next;easeenteryourcnoce邮编43830023456712356123456家国国国国国中中

11、中中市城庄阳安城麻枣阜德城庄阳安 麻枣阜德 道北东徽西 街湖山安江强坡安 名志尚林显 姓吴杨王刘 插入信息会显示在链表最后enter yourchoice强坡安林 名志尚林显建 3姓吴杨王刘黄城庄阳安州 麻枣阜德抚 道北东徽西西 街湖山安江江市城庄阳安州城麻枣阜德抚家国国国国国 Elcb( Cb邮编4383 234567 1234561234563456233.删除查找显示函数删除函数调用find函数,通过姓名,查找到该节点,然后删除该节点信息,这其中涉及到头尾节点,及其变化;先判断是否为头结点,如果为头结点,那么把原头结点的后继作为新的头结点如果不为头结点,那么该节点的前驱的next指向该节

12、点的后继如果该节点为尾结点,那么让该节点的前驱作为新的尾结点structaddress*info;chars80;inputs(请输入姓名:”,s,10);info=find(s);if(info)(printf(z,Deletingn);if(*start=info)*start=info-next;if(*start)(*start)-prior=NULL;elseinfo-prior-next=info-next;if(info!=*last)info-next-prior=info-prior;else*last=info-prior;free(info);printf(zz-0k,删除成功!n);)与删除相比,查找就简单的多,只需要调用find的函数,找到该节点记录

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

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!