283编号118数据结构课程设计(通讯录制作)

上传人:玩*** 文档编号:145280414 上传时间:2020-09-18 格式:PDF 页数:28 大小:270.81KB
返回 下载 相关 举报
283编号118数据结构课程设计(通讯录制作)_第1页
第1页 / 共28页
283编号118数据结构课程设计(通讯录制作)_第2页
第2页 / 共28页
283编号118数据结构课程设计(通讯录制作)_第3页
第3页 / 共28页
283编号118数据结构课程设计(通讯录制作)_第4页
第4页 / 共28页
283编号118数据结构课程设计(通讯录制作)_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《283编号118数据结构课程设计(通讯录制作)》由会员分享,可在线阅读,更多相关《283编号118数据结构课程设计(通讯录制作)(28页珍藏版)》请在金锄头文库上搜索。

1、东华理工大学数据结构(通讯录制作) 一 设计内容(通讯录)一 设计内容(通讯录) 本系统应完成一下几方面的功能: 1) 输入信息enter(); 2) 显示信息display( ); 3) 查找以姓名作为关键字 search( ); 4) 删除信息delete( ); 5) 存盘save ( ); 6) 装入load( ) ; 设计要求: 1) 每条信息至包含 :姓名(NAME )街道(STREET)城市(CITY) 邮编(EIP)国家(STATE)几项 2) 作为一个完整的系统,应具有友好的界面和较强的容错能力 二设计思路二设计思路 通过 visual c+6.0(用的是 C 语言)编写一个

2、 dos 界面的控 制台程序,该程序通过链表的操作,文件存储来实现通讯录的基本 功能 通过 visual c+6.0(用的是 C 语言)编写一个 dos 界面的控 制台程序,该程序通过链表的操作,文件存储来实现通讯录的基本 功能 struct address /*定义结构*/ char name10; /*姓名*/ char street50; /*街道*/ char city10; /*城市*/ char state15; /*国家*/ 东华理工大学数据结构(通讯录制作) char eip7; /*邮编*/ struct address *next; /*后继指针*/ struct addr

3、ess *prior; /*前驱指针*/ 链表的插入,删除来实现通讯录里的内容的插入删除链表的插入,删除来实现通讯录里的内容的插入删除 当操作完成通过文件件来存储链表的信息,下次打开程序时, 读取文件里的内容到内存中,放在链表,然后又可以对链表进行操 作; 当操作完成通过文件件来存储链表的信息,下次打开程序时, 读取文件里的内容到内存中,放在链表,然后又可以对链表进行操 作; 在这里面,文件内容不可以在外部更改,只能通过读取到内存 链表中,通过程序进行更改,然后再写入到文件,写入过程会覆盖 上次的内容。 在这里面,文件内容不可以在外部更改,只能通过读取到内存 链表中,通过程序进行更改,然后再写

4、入到文件,写入过程会覆盖 上次的内容。 struct address *start; /*首结点*/ struct address *last; /*尾结点*/ struct address *find(char *); /*声明查找函数*/ void enter(); /*函数声明*/ void search(); /*查找,查找过程中调用 find 函数*/ void save(); /*存盘,将链表信息保存到文件中*/ void load(); /*导入,将文件内容导入到内存链表中*/ 插入插入查找查找删除删除 内存链表内存链表文件文件 存储存储 导入导入 东华理工大学数据结构(通讯录制

5、作) void list(); /*显示当前链表中信息*/ void ddelete(struct address *,struct address *); void insert(struct address *i,struct address *start, struct address *last); void inputs(char *,char *,int); void display(struct address *); int menu_select(void); 三详细设计三详细设计 1.主界面设计1.主界面设计 通过 switch 语句调用各种函数,实现各种操作。然后把 sw

6、itch 嵌套到无限的 for 循环(for(;))中,使完成每一步操作 都回到到选择操作的主界面 通过 switch 语句调用各种函数,实现各种操作。然后把 switch 嵌套到无限的 for 循环(for(;))中,使完成每一步操作 都回到到选择操作的主界面 东华理工大学数据结构(通讯录制作) mainmain menu_selectmenu_select enter ddelete list search save save load exit inputs insert find display 文 件 函数之间的相互调用 void main() 东华理工大学数据结构(通讯录制作) s

7、tart = last = NULL; for(;) /*无限循环*/*无限循环*/ switch(menu_select() /*调用主界面的选择函数,带回返回值*/*调用主界面的选择函数,带回返回值*/ case 1:enter(); continue; case 2:ddelete( 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) /*主目

8、录*/ char s80; int c; 东华理工大学数据结构(通讯录制作) printf(欢迎使用 DOS 通讯录系统n); printf(*请在做其它操作前先导入*n); printf(*n); printf(* 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);

9、c = atoi(s); /*将获取的字符串转换成整型*/*将获取的字符串转换成整型*/ while(c7); return c; /*返回输入值*/*返回输入值*/ 2.输入信息函数2.输入信息函数 东华理工大学数据结构(通讯录制作) 输入函数: struct address *info; /*定义当前结点*/ for(;) info=(struct address *)malloc(sizeof(struct address); /*为 当前结点分配空间*/ if(!info) printf(n Out of memory); exit(0); /* 如果分配空间失败,退出程序*/ pri

10、ntf(输入空姓名结束:n); inputs(请输入 姓名:,info-name,10); 东华理工大学数据结构(通讯录制作) if(!info-name0)break; /*如 果输入姓名为空,结束循环*/ inputs(请输入 街道:,info-street,50); inputs(请输入 城市:,info-city,15); inputs(请输入 国家:,info-state,15); inputs(请输入 邮编:,info-eip,7); insert(info, /*调用结点插入函数*/ 输入函数调用到另外两个函数,inputs 和 insert输入函数调用到另外两个函数,input

11、s 和 insert 其中 inputs 中还用到 fgets(str,n,fp),把键盘的输入信息传到其中 inputs 中还用到 fgets(str,n,fp),把键盘的输入信息传到 字符串中字符串中 char p255; do printf(prompt); fgets(p,254,stdin);/*stdin,标准输入缓存,获取键盘输入 信息*/ /*stdin,标准输入缓存,获取键盘输入 信息*/ if(strlen(p)count) printf(nToo Longn); while(strlen(p)count); pstrlen(p)-1=0; strcpy(s,p); ins

12、ert 是关键函数,每当输入完一条信息都会调用到 insert 函数, 将信息插入到链表中 insert 是关键函数,每当输入完一条信息都会调用到 insert 函数, 将信息插入到链表中 if(*last=NULL) /*如果尾结点为空,意味着当前链表为空*/*如果尾结点为空,意味着当前链表为空*/ /*则将该结点赋给头尾结点*/*则将该结点赋给头尾结点*/ 东华理工大学数据结构(通讯录制作) i-next=NULL; i-prior=NULL; *last=i; *start=i; return; else /*如果链表不为空,则将信息插入到链表尾,作为尾结点*/*如果链表不为空,则将信息

13、插入到链表尾,作为尾结点*/ (*last)-next=i; i-prior=*last; i-next=NULL; *last=(*last)-next; NULL NULL 插入信息会显示在链表最后 *last (*last)-next i i-next 东华理工大学数据结构(通讯录制作) 3.删除查找显示函数3.删除查找显示函数 删除函数调用 find 函数,通过姓名,查找到该节点,然后删除 该节点信息,这其中涉及到头尾节点,及其变化; 删除函数调用 find 函数,通过姓名,查找到该节点,然后删除 该节点信息,这其中涉及到头尾节点,及其变化; 先判断是否为头结点,如果为头结点,则把原头结点的后继作 为新的头结点 先判断是否为头结点,如果为头结点,则把原头结点的后继作 为新的头结点 如果不为头结点,则该节点的前驱的 next 指向该节点的后继如果不为头结点,则该节点的前驱的

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

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

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