1、 数据结构课程设计数据结构课程设计 【问题描述】问题描述】 1、有 2 个主文件: (参考格式) Friend.txt 中的部分内容: 编号 姓名 性别 生日 电话 1 电话 2 电话 3 所在地 分组 001 李勇 男 1991 18912345678 15398745612 68891234 湖北武汉 1 002 刘晨 女 1992-04-01 15301391234 北京 2 003 王敏 女 1980 13838197777 18603712222 河南郑州 3 005 张立 男 15612346598 呼和浩特 2 006 小四川 18088888888 87878777 武汉 6
2、Group.txt 中的部分内容: 编号 组名 1 大学同学 2 高中同学 3 家人 4 朋友 5 老师 6 订餐 2、设计合适的数据结构存储朋友、分组信息,将以上文件内容导入其中(如果你觉得以上 文件中的信息不合适,可以自行处理,删除某列、增加属性、规范化数据均可,如果你认为 有必要,甚至去掉“编号”都可以) 。 3、进行插入、删除、修改和查询操作。 考查点: 删除时一要防止误操作,二要考虑分组信息的删除,如何处理? 修改时同样要考虑各数据项的性质。 查询操作包括按姓名查找、按拼音查找、按电话查找等。 4、最后把系统中的数据(包括主文件和索引表等)保存回相应的文件中。 【解题思路】 定义结构
3、体存储朋友的信息,用链表的方式组织数据。将 txt 文件内容导入其中。整体 程序分为主程序和其他程序两大块。 主函数中包括系统的主要操作界面, 以及各个功能的菜单。 通过选择可以实现不同功能 的应用, 包括对通讯录的添加、 删除 (包括对联系人的删除, 也包括对分组的删除) 、 显示、 查找、修改等功能。 其他函数主要包括添加函数,删除函数,查找函数,修改函数等。 【算法描述】 1.主函数 开始 2 显示分组函数 按分组显示联系人的,分别显示在不同的组别下联系人的信息; 3.插入联系人函数 插入函数分为插入分组函数和插入联系人信息的函数。 插入分组依次输入组号和组名即 可。插入联系人的函数可以
4、添加通讯录记录,依次输入编号、姓名、性别、电话号码、通讯 地址、 分组等信息, 然后会提示是否继续添加。 如果不继续添加, 会退出函数, 返回主函数, 并将添加的信息自动保存到文件中。 4.查找函数 查找函数中包括按编号,按姓名,按电话号码,按分组查找 4 种查找方法,选择其中的一 种,查找联系人的信息。 5.删除联系人函数 首先会调用查找函数, 找到你想要删除的联系人的信息, 然后输入你要删除的联系人的编 号,联系人的信息会自动从文件中删除。 6.输出函数 将文件中的信息读到结构体中,然后输出文件中的所有联系人的信息。 7.修改联系人的函数 输入你想要修改的联系人的姓名,然后会输出此联系人的
5、所有信息,然后根据提示修改 你所想要修改的信息。 【程序设计】 1. 结构体的定义: struct people /*定义通讯录类型*/ char num5; /*编号*/ char name9; /*姓名*/ 按任意键进 入主菜单 显示主菜单 1 7 6 5 4 3 2 显示分 组 修改 输出 删除 查找 添加 退出 char sex10; /*性别*/ char phone20; /*电话*/ char addr31; /*所在地*/ char groupnum10; /*分组*/ struct people *next; per70; struct group /定义分组的结构体 cha
6、r group_num10; /组号 char group_name19; /组名 / struct classification *next; ; 2. struct people *readContact();将文件中的联系人读取到结构体中; int n; FILE *fp=fopen(“txl.txt“,“r“); struct people *head; struct people *p1,*p2; p1=(struct people*)malloc(LEN); p2=(struct people*)malloc(LEN); head=NULL; n=0; if(!fp) return head; while(!feof(fp) fscanf(