欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    数据结构课程设计学生通讯录管理系统设计与实现.doc

    • 资源ID:10080389       资源大小:200.50KB        全文页数:16页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计学生通讯录管理系统设计与实现.doc

    数据结构数据结构 课程设计课程设计 题目题目:学生通讯录管理系统学生通讯录管理系统 设计与实现设计与实现 院、院、 系:系: 计算机信息与技术系计算机信息与技术系 学科专业:学科专业: 软件工程软件工程 学学 号:号: B09060237B09060237 学生姓名:学生姓名: 指导教师:指导教师: 目录目录 第一章第一章 设计要求设计要求.2 1.1 问题描述.2 1.2 需求分析.2 第二章第二章 概要设计概要设计.2 2.1 主界面设计.2 2.2 存储结构设计.3 2.3 系统功能设计.3 第三章第三章 模块设计模块设计.3 3.1 系统子程序及功能设计.3 3.2 系统功能图.4 第四章第四章 详细设计详细设计.4 4.1 数据类型定义.4 4.2 系统主要子程序详细设计.5 第五章第五章 测试分析测试分析.7 第六章第六章 原程序清单原程序清单.9 第七章第七章 工作总结工作总结.15 第八章第八章 参考文献参考文献.15 第一章第一章 设计要求设计要求 1.1 问题描述问题描述 纸质通讯录已经不能满足大家的要求,容易丢失、查找困难等问题是纸质通讯录所有 能克服的缺点。 “学生通讯录管理系统”是为了帮助老师、同学等管理和分析的一种应用程 序。 1.2 需求分析需求分析 1输入数据建立通讯录 2查询通讯录中满足要求的信息 3插入新的通讯录信息 4删除不需要的通讯录信息 5查看所有通讯录信息 第二章第二章 概要设计概要设计 2.1 主界面设计主界面设计 2.2 存储结构设计存储结构设计 typedef struct /通讯录结点类型 char num6; /学号 char name10; /姓名 char sex3; /性别 char class14; /班级 char phone11; /电话 char addr32; /住址 DataType; 2.3 系统功能设计系统功能设计 (1)通讯录链表的建立:建立通讯录,输入多个学生的信息,包括学号、姓名、性别、电 话、地址。 (1)通讯者结点的插入:添加新的学生信息,包括学号、姓名、性别、电话、地址。 (2)通讯者结点的删除:选择输入欲删除学生的学号或者姓名,即删除该学生的有关信息。 (3)通讯者结点的查询:分为按学号查询和按姓名查询两种,选择其一会显示该学生的相 关信息。 (4)通讯录的输出:选择输出的序号就会出现所有学生的有关信息。 (5)退出系统:选择“0” ,退出通讯录管理系统。 第三章第三章 模块设计模块设计 3.1 系统子程序及功能设计系统子程序及功能设计 函数名功能 LinkList CreateList(void)建立链表 void InserNode(LinkList head ,ListNode *p)插入 ListNode *ListFind(LinkList head)查询 void DelNode(LinkList head)删除 void PrintList(LinkList head)输出 void main( )主函数 3.2 系统功能图系统功能图 学生通讯录管理系统 通 讯 者 结 点 的 插 入 通 讯 者 结 点 的 查 询 通 讯 者 结 点 的 删 除 通 讯 录 的 输 出 退 出 系 统 学 号 查 询 姓 名 查 询 通 讯 录 链 表 的 建 立 学 号 查 询 姓 名 查 询 第四章第四章 详细设计详细设计 4.1 数据类型定义数据类型定义 char num6; /学号 char name10; /姓名 char sex3; /性别 char class14; /班级 char phone11; /电话 char addr32; /住址 DataType data; struct node *next; 4.2 系统主要子程序详细设计系统主要子程序详细设计 4.2.1 通讯录链表的建立:通讯录链表的建立: LinkList CreateList() /尾插法建立带头结点的通讯录链表算法 LinkList head=(ListNode *)malloc(sizeof(ListNode); /申请头结点 ListNode *p,*rear; int flag=0; /结束标志置 0 rear=head; /尾指针初始指向头结点 while (flag=0) p=(ListNode *)malloc(sizeof(ListNode); /申请新结点 n+; rear-next=p; /新结点连接到尾结点之后 rear=p; /尾指针指向新结点 rear-next=NULL; /终端结点指针域置空 return head; /返回链表头指针 4.2.1 通讯者结点的插入:通讯者结点的插入: void InsertNode( LinkList head, ListNode *p ) ListNode *p1,*p2; p1=head; p2=p1-next; while(p2!=NULL /p2 指向表的下一个结点 p1-next=p; /插入 p 所指向的结点 n+; p-next=p2; /连接表中剩余部分 4.2.2 通讯者结点的删除:通讯者结点的删除: void DelNode(LinkList head) char jx;int u; ListNode *p,*q; do p=ListFind(head); /调用查找函数 if (p=NULL) getchar(); getchar(); u=1; if (jx=y|jx=Y) q=head; while (q!=NULL q-next=p-next; /删除结点 free(p); n-; u=0; else u=1; while(u=1); getchar(); getchar(); 4.2.3 通讯者结点的查询:通讯者结点的查询: ListNode *ListFind(LinkList head) /有序通讯录链表上的查找 ListNode *p; char num6; char name10; int xz; p=head-next; /假定通讯录表带头结点 scanf(%d, if (xz=1) while (p if (p=NULL|strcmp(p-data.num,num)0) p=NULL; /没有查到要查找的通讯 者 else if (xz=2) while (p return p; 4.2.4 通讯录的输出:通讯录的输出: void PrintList(LinkList head) ListNode *p; p=head-next; while (p!=NULL) p=p-next; /后移一个结点 getchar(); getchar(); 4.2.5 退出通讯录管理系统:退出通讯录管理系统: case 0: printf(t 再 见 n); return; 第五章第五章 测试分析测试分析 5.1 各功能的运行结果:各功能的运行结果: (1)建立链表:选择序号“1” ,输第一个学生的信息:“学号”:001,“姓名”:lzg ,“性别”:gg,“班级”:02, “电话”:456, “地址”:shanxi。信息显示如下: (2)添加信息:选择序号“2” ,输入要添加信息:“学号”:001,“姓名”:mm ,“性别” :mm,“班级”:02“电话”:123, “地址”:shanxi;,信息显示如下: (3)查询信息:选择序号“4” ,再选择“1” ,输入“学号”:001 进行查询,查询结果如 下: (4)删除信息:选择序号“3” ,再选择“1” ,输入“学号”:001 进行删除,结果如下: (5)输出所有学生的信息:选择序号“5” ,输出所有学生的信息,结果如下: (6)退出系统:选择序号“0” ,退出系统,显示如下: 第六章第六章 原程序清单原程序清单 #include #include #include typedef struct /通讯录结点类型 char num6; /学号 char name10; /姓名 char sex3; /性别 char class14; /班级 char phone11; /电话 char addr32; /住址 DataType; typedef struct node /结点类型定义 DataType data; struct node *next; ListNode; typedef ListNode *LinkList; LinkList head; ListNode *p; int n=0; int person10; /函数说明 int menu_select( ); LinkList CreateList(void); void InsertNode(LinkList head,ListNode *p); ListNode *ListFind(LinkList head); void DelNode(LinkList head); void PrintList(LinkList head); void Bubblesort(LinkList head); /主函数 void main( ) for ( ; ; ) switch (menu_select( ) case 1: system(cls); printf(*n); printf(* 通 讯 录 链 表 的 建 立 *n); printf(*n); head=CreateList( ); break; case 2: system(cls); printf(*n); printf(* 通 讯 录 信 息 的 添 加 *n); printf(*n); printf(学号(6)姓名(10)性别(3)班级(4)电话(11)住址(32)n); printf(*n); p=(ListNode *)malloc(sizeof(ListNode); /申请新结点 scanf(%s %s %s %s %s %s,p-data.num,p-data.name,p-data.sex,p-data.class1,p- data.phone,p-data.addr); InsertNode(head,p); break; case 3: system(cls); printf(*n); printf(* 通 讯 录 信 息 的 删 除 *n); printf(*n); DelNode(head); /删除结点 break; case 4: system(cls); printf(*n); printf(* 通 讯 录 信 息 的 查 询 *n); printf(*n); p=ListFind(head); if (p!=NULL) printf(学号 姓名 性别 班级 电话 住址n); printf(-n); printf(%s, %s, %s, %s, %s, %sn,p-data.num,p-data.name,p-data.sex,p- data.class1,p-data.phone,p-data.addr); printf(-n); else printf(没查到要查询的通讯者!n); getchar(); getchar(); break; case 5: system(cls); printf(*n); printf(* 通 讯 录 链 表 的 输 出 *n); printf(*n); PrintList(head); break; case 0: printf(t 再 见 n); return; /*/ /* 菜单选择函数程序 */ /*/ int menu_select( ) int sn,w1; do system(cls); printf( 学生通讯录管理系统n); printf(=n); printf( 1. 通讯录链表的建立n); printf( 2. 通讯者结点的插入n); printf( 3. 通讯者结点的删除n); printf( 4. 通讯者结点的查询n); printf( 5. 通讯录的输出n); printf( 0. 退出通讯录管理系统n); printf(=n); printf( 请选择 0-5:); fflush(stdin); scanf(%d, if(sn5) w1=1; printf(nt 输入错误,请按任意键重选); getchar(); else w1=0; while(w1=1); return sn; /*/ /* 用尾插法建立通讯录链表函数 */ /*/ LinkList CreateList() /尾插法建立带头结点的通讯录链表算法 LinkList head=(ListNode *)malloc(sizeof(ListNode); /申请头结点 ListNode *p,*rear; int flag=0; /结束标志置 0 rear=head; /尾指针初始指向头结点 while (flag=0) p=(ListNode *)malloc(sizeof(ListNode); /申请新结点 printf(学号(6)姓名(10)性别(3)班级(4)电话(11)住址(32)n); printf(-n); scanf(%s %s %s %s %s %s,p-data.num,p-data.name,p-data.sex,p-data.class1,p- data.phone,p-data.addr); n+; rear-next=p; /新结点连接到尾结点之后 rear=p; /尾指针指向新结点 printf(结束建表吗?(1 结束/0 不结束) :); scanf(%d, /读入一个标志数据 rear-next=NULL; /终端结点指针域置空 return head; /返回链表头指针 /*/ /* 在通讯录链表 head 中插入结点 */ /*/ void InsertNode( LinkList head, ListNode *p ) ListNode *p1,*p2; p1=head; p2=p1-next; while(p2!=NULL /p2 指向表的下一个结点 p1-next=p; /插入 p 所指向的结点 n+; p-next=p2; /连接表中剩余部分 /*/ /* 通讯录链表上结点的删除 */ /*/ void DelNode(LinkList head) char jx;int u; ListNode *p,*q; do p=ListFind(head); /调用查找函数 if (p=NULL) printf(没有查到要删除的通讯者!n); getchar(); getchar(); u=1; printf(学号 姓名 性别 班级 电话 住址n); printf(-n); printf(%s, %s, %s, %s, %s, %sn,p-data.num,p-data.name,p-data.sex,p-data.class1,p- data.phone,p-data.addr); printf(-n); printf(真的要删除该结点吗?(y/n):); fflush(stdin); scanf(%c, if (jx=y|jx=Y) q=head; while (q!=NULL q-next=p-next; /删除结点 free(p); n-; printf(通讯者已经被删除!n); u=0; else u=1; while(u=1); getchar(); getchar(); /*/ /* 有序通讯录链表上的查找 */ /*/ ListNode *ListFind(LinkList head) /有序通讯录链表上的查找 ListNode *p; char num6; char name10; int xz; printf(=n); printf( 1. 按学号查询 n); printf( 2. 按姓名查询 n); printf(=n); printf( 请选择 1-2: ); p=head-next; /假定通讯录表带头结点 scanf(%d, if (xz=1) printf(请输入要查找者的学号:); scanf(%s,num); while (p if (p=NULL|strcmp(p-data.num,num)0) p=NULL; /没有查到要查找的通讯 者 else if (xz=2) printf(请输入要查找者的姓名:); scanf(%s,name); while (p return p; /*/ /* 通讯录链表的输出函数 */ /*/ void PrintList(LinkList head) ListNode *p; p=head-next; printf(学号 姓名 性别 班级 电话 住址n); printf(-n); while (p!=NULL) printf(%s, %s, %s, %s, %s, %sn,p-data.num,p-data.name,p-data.sex,p-data.class1,p- data.phone,p-data.addr); printf(-n); p=p-next; /后移一个结点 getchar(); getchar(); 第七章第七章 工作总结工作总结 经过一周的课程设计,让我认识到自己的知识漏洞,更加深了对数据结构基本概念和 基本知识的理解,巩固了课堂上所学的知识,掌握了数据结构的一些基本方法,深刻理解 了算法,锻炼了自己独立分析问题解决问题的能力。也使我更加认识到理论与实践相结合 的重要性,只有理论知识是远远不够的,只有把理论与实践相结合,从理论中得出结论, 才能真正为己所用,从而提高自己的实际动手能力和独立思考的能力。 第八章第八章 参考文献参考文献 1数据结构(C 语言版) 严蔚敏 吴伟民 编著 清华大学出版社 2C 语言程序设计(第三版) 谭浩强 著 清华大学出版社

    注意事项

    本文(数据结构课程设计学生通讯录管理系统设计与实现.doc)为本站会员(土8路)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开