1、通讯录管理系统数据结构C语言版链表实现实验报告通讯录管理系统数据结构C语言版链表实现实验报告LT第一部分 课程设计报告第1章 课程设计目的课程设计是实践教学中的重要环节,它以某一门课程为基础,涉及和课程相关的各方面知识,是一门独立于课程外的特殊课程。课程设计就是让所有同学对课程更全面的应用。本次实验项目“通讯录管理”就是针对数据结构的一门应用较为广泛的系统管理方法。1. 实现意义本次实验应用性能很好,结构清楚,能随时添加、删除、查找、修改、输出联系人;并且可以用姓名、编号两种方式;而且其中增加了排序功能,使得插入之后排序为接下来的操作提供便利,操作更精确,以人性化的方式展现出来,效果十分突出。
2、2. 系统分析编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出、计算男女人数等功能。每个记录包含编号、姓名、性别、电话号码个人基本信息。 用数据结构中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。本程序相对简单,使用方便,几乎不用特殊的命令,只需按提示输入即可。对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,尤其在算法方面,链表及结点的联系,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。第2章 课程设计内容和要求2.1问题描述:设计并实现一个通讯录信息系统 建立通讯录信息,信息包含编号、姓名、性别、电话;能够提供添加、删除和修改
3、通讯录信息的功能;能够提供查询的功能;能够提供性别统计的功能;能够输出通讯录信息。2.2设计要求:要求设计程序输出如下:用链表实现学生信息管理系统,完成链表建立(至少包括50个节点),以及链表中信息(节点)的插入、查找、删除、修改、输出等操作,具体的模块要求如下(用“文本文件”按照自定义格式存储数据记录集)。 第一个模块主函数main()实现功能:根据菜单的选项调用各函数,并完成相应的功能。 第二个模块Menu()实现功能:显示提示菜单。 第三个模块Quit()实现功能:退出菜单。 第四个模块Create()实现功能:创建新的学生信息记录。第五个模块Add()实现功能:增加新的学生信息记录,并
4、返回菜单。 第六个模块Find()实现功能:按要求查询相关的信息,如果找到则显示该学生信息,如果未找到则提示文件中没有该信息,并返回菜单。 第七个模块Alter()实现功能:修改某条学生记录的信息,如果未找到要修改的学生记录,则提示系统中无此学生记录,并返回菜单。 第八个模块Delete()实现功能:删除某条学生记录,如果未找到要删除的学生记录,则提示该学生记录集中没有,并返回菜单。 第九个模块List()实现功能:能够分页显示数据记录集中的所有学生的记录。第十个模块Searchbysex()实现功能:统计通讯录中男性人数及女性人数第3章 课程设计总体方案及分析3.1 问题分析:该程序是要将几
5、个不同功能的函数用链表串联起来,来组成一个通讯录信息系统。因为链表能让数据既有独立性又便于数据之间的相互联系,也便于数据的添加和删除。用模块化程序设计的理念,对几个不同功能的函数,分块处理,这样有利于后期的调试及今后对功能的完善。菜单中的每一个选项对应着一个子程序,这个系统就由这些子程序建立起来。下面是这个程序的设计流程图: 图3.1 设计流程图 3.2 概要设计1.构建一个结构体用于建立一个链表。链表里面包括了要储存学生的信息的代号。屏幕上显示出菜单。 2.本程序包含8个函数: (1)主函数 main()(2)创建函数 LinkList CreateList() (3)增加通讯录人员函数vo
6、id AddNode(LinkList head,ListNode *p)(4)删除某个学生信息的函数 void DeleteNode(LinkList head)(5)查询通讯录人员的函数ListNode *ListFind(LinkList head)(6)修改通讯录人员的函数 void AlterNode(LinkList head)(7)性别统计的函数void Seachbysex(LinkList head) (8)通讯录输出函数 void PrintList(LinkList head)(9)退出系统函数3.3 详细设计实现概要设计中定义的所有数据类型及操作的伪代码算法1.节点类型
7、和指针类型结构体里面的数据类型:typedef struct /通讯录数据类型 char number3; /编号 char name9; /姓名 char sex10; /性别 char telephone11; /电话 DataType 主函数void main() int k,j=1; ListNode *l; while(j) printf(ttt 熊信萌 通 讯 录 课 程 设 计 n); printf(ttt*); printf(nttt 1通 讯 录 的 建 立 ); printf(nttt 2通 讯 者 的 插 入 ); printf(nttt 3通 讯 者 的 查 询 );
8、printf(nttt 4通 讯 者 的 删 除 ); printf(nttt 5通 讯 者 的 修 改 ); printf(nttt 6通 讯 录 的 输 出 ); printf(nttt 7男 生 女 生 的 人 数 ); printf(nttt 0退出通讯录管理系统 ); printf(nttt*); printf(n请选择菜单号(0-6):); scanf(%d,&k); getchar(); switch(k) case 1: printf(n 1.通 讯 录 的 建 立 n ); head=CreateList( ); flag1=1; break; case 2: if(flag
9、1!=1) printf(请先建立表!); getchar(); else printf(n 2.通 讯 者 信 息 的 插 入 n); printf(n编号 姓名 性别 电话 n); printf(-n); p=(ListNode *)malloc(sizeof(ListNode); /*申请新结点*/ printf(输入编号:n); scanf(%s,p-data.number); printf(输入姓名:n); scanf(%s,p-data.name); printf(输入性别:n); scanf(%s,p-data.sex); printf(输入电话:n); scanf(%s,p-d
10、ata.telephone); AddNode(head,p); printf(排序:n); OrderList(l); /调用通讯录排序函数此处放在插入模块下面 break; case 3: if(flag1!=1) printf(请先建立表!); getchar(); system(cls); else printf(n 3.通 讯 录 信 息 的 查 询 n); p=ListFind(head); if (p!=NULL) printf(编号 姓 名 性别 联系电话 n); printf(-n); printf(编号:%sn姓名:%sn性别:%sn联系电话:%sn, p-data.num
11、ber,p-data.name,p-data.sex,p-data.telephone); printf(-n); else printf(没有查到要查询的通讯者!n); break; case 4: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 4.通 讯 录 信 息 的 删 除 n); DeleteNode(head); /*删除结点*/ break; case 5: if(flag1!=1) printf(请先建立表!); getchar(); system(cls); else printf(n 5.通 讯 录 信 息 的
12、修 改 n); AlterNode(head); break; case 6: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 6.通 讯 录 链 表 的 输 出 n); PrintList(head); break; case 7: if(flag1!=1) printf(请先建立表!); getchar(); system(cls); else printf(n 7.通讯录中男生女生的人数 n); Seachbysex(head); break; case 0: printf(是否退出(y/n)?); k=getchar(); if(k=y|k=Y)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1