C语言 数据结构实习报告-哈夫曼编码-学生信息管理系统

上传人:飞*** 文档编号:43732797 上传时间:2018-06-07 格式:DOC 页数:28 大小:256KB
返回 下载 相关 举报
C语言 数据结构实习报告-哈夫曼编码-学生信息管理系统_第1页
第1页 / 共28页
C语言 数据结构实习报告-哈夫曼编码-学生信息管理系统_第2页
第2页 / 共28页
C语言 数据结构实习报告-哈夫曼编码-学生信息管理系统_第3页
第3页 / 共28页
C语言 数据结构实习报告-哈夫曼编码-学生信息管理系统_第4页
第4页 / 共28页
C语言 数据结构实习报告-哈夫曼编码-学生信息管理系统_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《C语言 数据结构实习报告-哈夫曼编码-学生信息管理系统》由会员分享,可在线阅读,更多相关《C语言 数据结构实习报告-哈夫曼编码-学生信息管理系统(28页珍藏版)》请在金锄头文库上搜索。

1、1西西 安安 邮邮 电电 大大 学学(计算机学院)(计算机学院)数据结构与算法课程设计报告题题 目:哈夫曼编码目:哈夫曼编码/学生信息管理系统学生信息管理系统专业名称:专业名称: 班班 级:级: 学生姓名:学生姓名: 学号(学号(8 位):位): 指导教师:指导教师: 设计起止时间设计起止时间 2一一. . 设计目的设计目的1.通过设计实现哈夫曼编译码,进一步加深对树的应用与操作能力 2.通过设计一个小型的管理系统,来进一步加深、巩固C 语言程序设计以及数据 结构与算法课程中所学习的基本理论知识,用理论联系实际;进一步培养自身综合分析 问题、解决问题的能力;3.掌握 C 语言程序的基本结构和基

2、本的数据的结构;熟悉 C 语言编辑、编译、调试、运 行的过程;4.了解程序设计的一般方法,结构化程序设计思想;熟悉常用的程序结构与算法,提升 自身实践操作能力2.2. 设计内容设计内容1. 求数据的哈夫曼编码哈夫曼树又叫最优二叉树,可以来构造最优编码,用于信息传输、数据压缩等方面。 本次设计主要是实现哈夫曼树的构造,以及求哈夫曼编码,达到可以根据用户的需求 输入任意个字符及其权值,之后便可以给出各个字符的编码值的要求。2.学生信息管理系统应用C 语言程序设计以及数据结构与算法课程中的结构体、函数、指针、文 件、链表等内容,设计一套完整学生信息管理系统,满足对一个班的或者更多的学生基本 信息进行

3、输入、输出、查询、删除等管理的要求。 本系统设计,主要运用了链表,用链表来完成各项功能,并对文件进行写入于读取操 作,将学生的基本信息全部从一个指定的文件中导出并显示出来,然后运用其它函数模块 依次进行增加、修改、查询、删除,并随时可以保存和显示已有学生的信息。三三设计方案设计方案概要设计概要设计 1求哈夫曼编码设计求哈夫曼编码设计 (l)初始化。从终端读入字符集大小 n,以及 n 个字符和 n 个权值,建立哈夫曼树。 (2)编码。利用已建好的 Huffman 树,从叶子结点开始,沿着结点的双亲追溯到根 节点,追溯过程中,每上升一层,左分支得到0 ,右分支得到1 , 。将得到的编码依 次保存到

4、数组里去,最后把字符及编码输出出来2.学生信息管理系统功能模块图;学生信息管理系统功能模块图;3注册学生信息管理系统从文件导入学 生信息并显示序号 学号 姓名 性别修改学生信 息查询学生信 息删除 学生 信息显示已录 入信息序号查找学号查 找管理员用户注册、登陆3.哈夫曼编码程序各个模块详细的功能描述哈夫曼编码程序各个模块详细的功能描述 选择函数:在数组 ht 的前 i-1 项中选取出双亲为零,且权值最小的两个结点 创建哈夫曼树函数: 通过初始化结点,接受用户录入的信息,构建出哈夫曼树。 求哈夫曼编码函数:通过对结点遍历,及对其双亲的追溯,给出各个数据的哈夫曼编 码4.学生信息管理系统各个模块

5、详细的功能描述学生信息管理系统各个模块详细的功能描述登陆模块:用户可以选择注册、登陆、退出功能。只有注册,并成功登陆后方可进行 学生信息管理。显示模块:可以将已指定的文件中的学生信息、修改后的学生信息全部显示出来。增加模块:可以在此功能中增加任意多个学生信息,并保存 修改模块:可以对你输入要修改的序号的学生信息,进行修改 ,并保存到文件中查询模块:可以对你根据序号、或者学号查询对应同学的相信信息删除模块:可以对你输入要删除的序号的学生信息,进行删除详细设计详细设计1功能函数的调用关系图;功能函数的调用关系图; 哈夫曼编码程序主要函数有:哈夫曼编码程序主要函数有: 选择函数:select(Huf

6、fmanTree ht,int n,int *s1,int *s2) 创建哈夫曼树函数:CrtHuffmanTree(HuffmanTree ht,int n) 求哈夫曼编码函数:CrtHuffmanCodel(HuffmanTree ht,int n)4其调用关系如下学生信息管理系统主要包含以下函数:学生信息管理系统主要包含以下函数: 1.登陆函数:denglu(); 2.注册函数:zhuce(); 3.显示函数:DispList(LinkList L ); 4.增加信息函数:ListInsert(LinkList L);5.修改函数:Modily(LinkList L) ; 6.删除函数:

7、ListDelete(LinkList L) 7.查询函数:GetElem(LinkList L); 它们调用的关系如下图:主 函 数调用 DispList(LinkList L )调用 ListInsert(LinkList L)调用 Modily(LinkList L) 调用 Denglu()调用 ListDelete(LinkList L)调用 zhuce() 调用 denglu()调用 GetElem(LinkList L);主函数创建哈夫曼树 CrtHuffmanTree()求哈夫曼编码: CrtHuffmanCodel()选择函数 select()调用调用调用52哈夫曼编码的流程图

8、哈夫曼编码的流程图开始请输入字符及其权 值是否继续录 入是结束否请输出各字符及其 编码63.学生信息管理系统各功能函数的数据流程图;学生信息管理系统各功能函数的数据流程图;登陆函数:登陆函数:开始是否有该系统 的账号及密码是用户名及密码 是否正确注册否登陆成功进行信息管理登陆是否结束显示函数:显示函数:7开始读文件是否有 学生信息存在是读取文件内容并显示新建学生信息否结束增加学生信息函数:增加学生信息函数:是否继续修改 开始请输入学生 信息是否继续录 入是结束否8删除函数:删除函数:开始输入要删除的 序号存在输出该同学信息结束不存在判断是否存在 该同学是否继续删除确认后进行删除是否9查找函数:

9、查找函数: 开始按序号、学号查 找q-xuhao=p- xuhao q-xuehao=p- xuehao显示该学生全部信息结束否是是否10修改函数:修改函数:开始输入要修改学 号存在输出该同学信息结束不存在判断是否存在 该同学是否继续修改根据选择,进行修改是否114.哈夫曼编码的重点设计及编码哈夫曼编码的重点设计及编码 利用已建好的 Huffman 树,从叶子结点开始,沿着结点的双亲追溯到根节点,追溯过 程中,每上升一层,左分支得到0 ,右分支得到1 。将得到的编码依次保存到数组里 去,最后把字符及编码输出出来。 详细设计见源程序中 CrtHuffmanCodel(HuffmanTree ht

10、,int n)学生信息管理系统的重点设计及编码。学生信息管理系统的重点设计及编码。 1.运用链表操作实现用户注册、登陆功能。首先定义一个包含用户名及密码的结构体, 在内存中申请一段空间将用户的注册的账户名、密码依次保存到对应节点中去,并保存至 文件中去;当用户登录时,通过调取文件中的信息,并依次进行比对,仅有用户名及密码 完全与注册时相同时,才可进入管理系统进行信息管理操作,有效保障了信息的安全性。详细代码见附录源程序中函数 zhuce() ,denglu()4 4测试数据及运行结果测试数据及运行结果1 1哈夫曼编码程序运行结果哈夫曼编码程序运行结果12132.2.学生信息管理系统正常测试数据

11、和运行结果学生信息管理系统正常测试数据和运行结果登陆界面注册界面显示已经导入的学生信息增加学生信息删除学生信息修改学生信息2 2异常测试数据及运行结果异常测试数据及运行结果在求哈夫曼编码中由于输入的字符无法识别导致运算出错14由于没有按照要求输入 Y/N 导致删除函数陷入死循环由于恶意注册的不合法用户信息,导致系统无法正常打开 运行五调试情况,设计技巧及体会五调试情况,设计技巧及体会1 1对哈夫曼编码程序的评价及改进方案对哈夫曼编码程序的评价及改进方案评价:该程序设计较为良好,能根据用户输入的字符及其权值,构造出对应的二叉树,并 求出各个字符对应的哈夫曼编码并打印出来。 不足:只是输出字符的对

12、应的哈夫曼编码,没有形象地打印出用户输入权值对应的最优二 叉树;选择 select()函数应用的是较为低级的两次循环遍历法,方才找出较小的两个元素, 增加了程序的时间复杂度。 改进方案:应用更高级简单的选择算法,降低该程序的时间复杂度;编写输出函数,以便 于打印出较为形象直观的二叉树形式。2 2. .对学生管理系统的评价及改进方案对学生管理系统的评价及改进方案评价:该程序总体设计完好,可以满足用户的注册、登陆、增加、查询、删除、修改 学生信息的使用要求。尤其对登陆界面管理员用户注册、密码功能的设置,有效的保证了 信息的安全性;并且使用链表来进行储存密码、验证密码保证了正确率;从文件中读入学 生

13、信息设计比较好,可以很方便地大批量的增加与删除、修改学生信息;操作简单,方便 用户使用。 不足:页面不够美观,尤其管理界面视觉效果较差;健壮性不够,当用户不按照提示15或者失误的操作后容易导致运行错误甚至,系统崩溃;可输入的学生信息种类不够多,仅 有学号、姓名等;功能不够完善,无法为用户提供排序,分类筛选等功能。 改进方案:调用 C 语言的图形设计中的颜色、图案设计程序,让操作界面美观,提升 用户体验;完善程序中的条件判断种类,以识别错误的操作,及时终止程序,防止运行失 败的出现,增强程序的健壮性、容错性、可操作性;增加程序的功能,进一步设计用学生 序号、学号等排序操作,以更方便用户;增大输入

14、学生信息的信息种类,完善学生的信息, 如增加家庭住址、联系方式等。3.体会体会此次 C 语言数据结构与算法课程实习,是我在老师的指导下第一次完成一个完整系统 的设计,也是第一次用 C 语言写下了超过 500 行的代码;同时这次实习是一次对以往学习 的程序设计知识掌握情况的检验,也是对所学知识的应用、巩固与提高。 实习刚开始由于基础不是太扎实,对算法的掌握不够深入,常常犯一些错误,诸如加 错标点符号;数组的下标越界、混乱,或是指针超出范围等。我在老师的指导下,慢慢地 学会了如何自我调试程序,如何寻找错误的地方,从而提高了学习的效率,学到了很多 通过这次实习,我在一次又一次地对错误的更正中,对设计

15、思路的调整中,以及与老 师、同学交流过程中,进一步掌握了程序设计的思想方法、设计理念,对 C 语言程序设计、 数据结构与算法,尤其对链表、文件的操作与应用有了更深刻的认识。那一次次为“叮叮” 响起的错误报告而抓耳挠腮,一次次为一条语句的设计而争执不下,以及当自己的设计在 屏幕上显示时的喜悦,这些都是实习的收获与进步,更是一段段难忘的记忆。六参考文献六参考文献1 谭浩强著.C 语言设计(第三版).北京:清华大学出版社,2005 2 王曙燕主编.数据结构与算法.北京:人民邮电出版社,2013 3 王曙燕主编.数据结构与算法.北京:人民邮电出版社,2013 4 Ellis Horowitz ,Sar

16、taj Sahni ,Susan Anderson-Freed 著 朱仲涛译.数据结构基础(C 语言版) (第 2 版).北京:清华大学出版社,2009七附录:七附录:1.哈夫曼编码的实现哈夫曼编码的实现 #define N 30 #define M 2*N-1 #include #include #include typedef struct int weight; int Parent,Lchild,Rchild; char ch;16HTNode,HuffmanTreeN+1;void select(HuffmanTree ht,int n,int *s1,int *s2) int i;int m1,m2;m1=m2=32767;for(i=0;i=m1 /学号int xuhao; /班级序号 cha

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

当前位置:首页 > 行业资料 > 其它行业文档

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