哈夫曼编码与译码的实现

哈夫曼编码与译码的实现
哈夫曼编码与译码的实现

数据结构课程设计评阅书

2011—2012学年第一学期

专业:信息管理与信息系统学号: 1021024016 姓名:万永馨

课程设计名称:数据结构课程设计

设计题目:哈夫曼编码与译码的实现

完成期限:自 2012 年 2 月 20 日至 2012 年 3 月 2 日共 2 周

设计依据、要求及主要内容(可另加附页):

该设计题目将按以下要求完成:

哈夫曼编码与译码是信息传输中应用的经典算法,运用C或VC++结合数据结构等基础知识,按

以下要求编程实现各种进制的转换。

任务要求:1)阐述设计思想,画出流程图;2)需要对哈夫曼编码/译码的相关原理有所了解,设计数

据结构,建立必要的信息数据文件(最好存储成外部文件),并分析完成用户所需的基本操作功能;3)实现给定信息的编码和译码功能;4)应有较好的界面设计,说明程序测试方法;5)按照格式要

求完成课程设计说明书。

设计要求:

1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?确定问题的输入数据集合。

2)逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的

原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定

义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调

用关系图;

3)详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统

功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基

本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作做出进一步的求精,

写出数据存储结构的类型定义,写出函数形式的算法框架;

4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,

使程序中逻辑概念清楚;

5)程序调试与测试:能够熟练掌握调试工具的各种功能,设计测试数据确保程序正确。调试正

确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;

6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。算

法的时间、空间复杂性分析;

7)编写课程设计报告;

以上要求前三个阶段的任务完成后,将设计说明书的草稿交指导老师面审,审查合格方可进入

后续阶段的工作。设计工作结束,经指导老师验收合格后将设计说明书装订,并答辩。

批准日期:年月日

摘要

在当今信息爆炸时代,如何采取有效的数据压缩技术来节省数据文件的储存空间越来越引起人们的重视。本次课程设计的实验题目为哈夫曼编码与译码的实现。利用哈夫曼树求得的用于通讯的二进制编码称为哈弗曼编码。通常我们将文字转化为二进制称为编码,而将二进制转化为文字称为译码。此次程序就是将一个简单的文件进行编码转化为二进制数存入文件并进行译码进而输出。而将文件转化为二进制编码运用哈夫曼树的相关知识可以有效的节省存储空间与时间。

关键词:哈夫曼树;哈夫曼树的编码;哈夫曼树的译码;哈夫曼树初始化;哈夫曼树的建立

开发工具:visual C++

目录

1.引言 (5)

2.课题描述 (6)

3.程序设计 (7)

3.1实验目的与基本要求 (7)

3.2部分函数介绍 (7)

3.3主要模块程序流程图 (8)

4 系统实现 (12)

4.1 主函数(菜单函数) (12)

4.2 建立HuffmanTree (12)

4.3生成Huffman编码并写入文件 (14)

4.4对文件哈夫曼译码.txt 进行译码译码 (15)

5 系统调试 (16)

附录源程序 (22)

1.引言

在课程设计过程中,我们四个人一组选择一个课题,认真研究,根据课堂讲授内容,借助书本,自己动手实践。这样不但有助于我们消化课堂所讲解的内容,还可以增强我们的独立思考能力和动手能力;通过编写实验代码和调试运行,我们可以逐步积累调试C程序的经验并逐渐培养我们的编程能力、用计算机解决实际问题的能力。

在课程设计过程中,我们不但有自己的独立思考,还借助各种参考文献来帮助我们完成系统。更为重要的是,我们同学之间加强了交流,在对问题的认识方面可以交换不同的意见。同时,师生之间的互动也随之改善,我们可以通过具体的实例来从老师那学到更多的实用的知识。

数据结构课程具有比较强的理论性,同时也具有较强的可应用性和实践性。课程设计是一个重要的教学环节。我们在一般情况下都能够重视实验环节,但是容易忽略实验的总结,忽略实验报告的撰写。通过这次实验让我们明白:作为一名大学生必须严格训练分析总结能力、书面表达能力。需要逐步培养书写科学实验报告以及科技论文的能力。只有这样,我们的综合素质才会有好的提高。

2.课题描述

课题:哈夫曼编码与译码的实现

问题描述:对文件哈夫曼.txt中的字符串进行编译,统计其中的字符种类、个数作为权值。

1. 从D盘的数据结构课程设计文件夹中建立哈夫曼.txt文件里读出文章(必须大写);

2. 运用jsp函数统计这篇文章中的每个字符出现的次数;

3. 以字符出现字数作为权值,构建哈夫曼树,并将哈夫曼树的存储结构的初态和终态进行输出;

4. 对每个字符进行编码并将所编码写入程序,然后对另一文件中的编码编码进行破译。

具体介绍:在本课题中,我们在硬盘D盘中预先建立一个哈夫曼.txt 文档,在里面编辑一篇文章(大写)。然后运行程序,调用fileopen()函数读出该文章,显示在界面;再调用jsq()函数对该文章的字符种类进行统计,并对每个字符的出现次数进行统计,并且在界面上显示;然后以每个字符出现次数作为权值,调用ChuffmanTree()函数构建哈夫曼树;并调用print1()和print2()函数将哈夫曼的存储结构的初态和终态进行输出。然后哈夫曼树进行编码,再对另一文件哈夫曼译码.txt 编码进行译码,再输出至界面。至此,整个工作就完成了。

3.程序设计

3.1实验目的与基本要求

利用赫夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站编写一个赫夫曼码的编/译码系统。

一个完整的系统应具有以下功能:

(1) 初始化(Initialization)。从文件哈夫曼.txt 读入字符集,,统计字母个数作为权值,建立赫夫曼树。

(2) 编码(Encoding)。利用已建好的赫夫曼树(如不在内存,则从文件中读入),对哈夫曼树进行编码,然后将结果存入文件哈夫曼译码.txt中。

(3) 译码(Decoding)。利用已建好的赫夫曼树将文件哈夫曼译码.txt 中的代码进行译码

3.2部分函数介绍

①从硬盘读取字符串

fileopen(参数)

②建立HuffmanTree

通过三个函数来实现:

void select(参数)

说明:在ht[1....k]中选择parent为0且权值最小的两个根结点的算法

int jsq(参数)

说明:统计字符串中各种字母的个数以及字符的种类

void ChuffmanTree()

说明:构造哈夫曼树

③输出哈夫曼树的存储结构的初态和终态

分别调用print1()和print2()来实现

void print1(参数)

说明:输出哈夫曼树的初态

void print2(参数)

说明:输出哈夫曼树的终态

④哈夫曼编码和译码

void HuffmanEncoding(参数)

说明:哈夫曼编码

char*decode(参数)

说明:哈夫曼译码

3.3主要模块程序流程图

①主函数流程图:

图 3.1

流程图注释:

图3.1比较简单,由该图可知主要是调用各个函数模块,首先代开已经存在的文件,然后统计总的字符数以及出现的各个字符和频率。然后才开始建立哈夫曼树,接着在哈夫曼树的基

础上对其进行编码,编码之后才是译码。最后输出结束。

图 3.2

图3.2是表示构造哈夫曼树的过程。首先输入num个叶结点的权值,当i=num是循环结束。然后进行哈夫曼树的构建,当i=2*num-1是循环结束。最后输出所得到的字符统计情况。

③哈夫曼编码:

图 3.3

流程图3.3表示哈夫曼编码情况。首先初始化,Cd[--start]=0,start=num。然后从首地址开始进行比较,找节点的父母地址然后看节点为父母地址的左孩子是的话为’0’,反之为’1’.依次开始上溯。将编码存入H[i].bits。

哈夫曼译码:

图 3.4

流程图3.4表示哈夫曼译码情况。首先讲哈夫曼编码存入的文件打开,将哈夫曼编码导出。然后将文件中读出的字符与哈夫曼编码cd进行比较strcmp(HC[j].bits,cd==0,相等的话开始译出str[k]=HC[j].ch。

4 系统实现

各模块关键代码及算法的解释:

4.1 主函数(菜单函数)

主函数相对简单,只需了解顺序,依次调用即可。

这里不做解释

4.2 建立HuffmanTree

代码解释:该函数为在ht[1....k]中选择parent为0且权值最小的两个根结点的算法,其序号为s1和s2。

void select(HuffmanTree T,int k,int &s1,int &s2)

{

int i,j;

int min1=32767;

for(i=1;i<=k;i++)

if(T[i].weight

{

j=i;min1=T[i].weight;

}

s1=j;min1=32767;

for (i=1;i<=k;i++)

if(T[i].weight

{

j=i;min1=T[i].weight;

}

s2=j;

}

代码解释:下面函数用来统计字符串中各种字母的个数以及字符的种类。当字符在A和z 之间时即被计数,并用str[j]保存字母到数组中,用cnt[j]统计每种字符个数。j返回总

共读取的字符数目。

int jsq(char *s,int cnt[],char str[])

{

int i,j,k;

char *p;

int temp[53];

for(i=1;i<=52;i++)

temp[i]=0;

for(p=s; *p!='\0';p++)

{

{

if(*p>='A'&&*p<='z')

k=*p-64;

temp[k]++;

}

} //统计各种字符的个数

for(i=1,j=0;i<=52;++i)

if(temp[i]!=0 )

{

j++;

str[j]=i+64; //送对应的字母到数组中

cnt[j]=temp[i]; //存入对应字母的权值

}

return j; //j是输入字母总数

}

代码解释:下面函数用来构造哈夫曼树HT。首先初始化哈夫曼树,然后输入前面统计的各结点的权值,用for循环来构造哈夫曼树。

void ChuffmanTree(HuffmanTree HT,HuffmanCode HC,int cnt[],char str[])

{

int i,s1,s2;

for(i=1;i<=2*num-1;i++)//初始化HT,2*num-1是指哈夫曼

//所有的结点数目

{

HT[i].lchild=0;HT[i].rchild=0;

HT[i].parent=0;HT[i].weight=0;

}

for(i=1;i<=num;i++) //输入num个叶结点的权值

HT[i].weight=cnt[i];

for(i=num+1;i<=2*num-1;i++)

{

select(HT,i-1,s1,s2);

HT[s1].parent=i;HT[s2].parent=i;

HT[i].lchild=s1; HT[i].rchild=s2;

HT[i].weight=HT[s1].weight+HT[s2].weight;

}

//在ht[1....k]中选择parent为0且权值最小

//的两个根结点,其序号为s1和s2,i为双亲

for(i=0;i<=num;i++) //输入字符集的中字符

HC[i].ch=str[i]; //字符的种类

i=1;while(i<=num)

printf("字符%c次数:%d\n",HC[i].ch,cnt[i++]);

} //输出统计的情况

4.3 生成Huffman编码并写入文件

代码解释:根据哈夫曼树T求哈夫曼编码H。

void HuffmanEncoding(HuffmanTree T,HuffmanCode H)

{

int c,p,i; //c和p分别指示t中孩子和双亲

char cd[n]; //临时存放编码串

int start; //指示码在cd中的起始位置

cd[num]='\0'; //最后一位(第num个)放上串结束符for(i=1;i<=num;++i)

{

start=num; //初始位置

c=i; //从叶子结点t[i]开始上溯

while((p=T[c].parent)>0) //直至上溯到t[c]是树根为止

{

cd[--start]=(T[p].lchild==c) ? '0' : '1';

c=p;

} //若t[c]是t[p]的左孩子

//则生成0;否则生成底码1

strcpy(H[i].bits,&cd[start]);

H[i].len=num-start;

}

}

void coding(HuffmanCode HC ,char *str)

{ //对str所代表的字符串进行编码并写入文件int i,j;

FILE *fp;

fp=fopen("D:\\数据结构课程设计\\哈夫曼译码.txt","w");

while(*str)

{

for(i=1;i<=num;i++)

{

for(j=0;j

{if(HC[i].ch==*str)

{fputc(HC[i].bits[j],fp);}}//将编码写入文件

}

str++;

}fclose(fp);

}

4.4 对文件哈夫曼译码.txt 进行译码译码

代码解释:代码文件哈夫曼译码.txt的译码,将翻译的二进制码译成原来的字符。char*decode(HuffmanCode HC)

{ FILE *fp;

char str[254]; //假设远文本文件不超过254个字符

char *p;

static char cd[n+1];

int i,j,k=0,cjs;

fp=fopen("D:\\数据结构课程设计\\哈夫曼译码.txt","r");//打开文本文档txt while(!feof(fp)) //feof(fp)判断文件是否真正结束,

//feof(fp)=1时文件结束

{

cjs=0;

for(i=0;i

{

cd[i]=' ';

cd[i+1]='\0';

cd[i]=fgetc(fp); //数组接受从fp指针所指向文件中读

//入的一个字符

for(j=1;j<=num;j++)

if(strcmp(HC[j].bits,cd)==0)

{

str[k]=HC[j].ch;

k++;

cjs=1;break;

} //haffman编码和密码译码相比较

}

}

str[k]='\0';

p=str;

return p;

}

5 系统调试

本次测试是在我的电脑的D盘中建立一个名为哈夫曼.txt的文本文档,其中有大写字母KONGYONGKAISB

运行程序后,我们可以见到一下的运行界面。

首先选择1打开文件哈夫曼.txt

然后选择2初始化并建立哈夫曼树

接下来选择3开始对已经建立的哈夫曼树进行编码并写入文件哈夫曼译码.txt

最后对文件哈夫曼译码.txt进行编译

选择4开始进行译码的运算

输入你想要的子母编码,在最后即可输出。

总结

通过两周的课程设计使我对哈夫曼树以及哈夫曼编码有了更深的认识和理解,也使我更加明白哈夫曼编码译码在信息技术中的重要性和地位。

首先我谈谈我在设计期间我遇到的难点。开始的时候,代码中有许多的错误,其中之一便是部分信息无法有效的传递,不过在后面的改正中我发现的我的错误。还有很多很多,例如,在树的初始化输出中,没有权值的节点却出现乱码,这个问题我最终是换了一种方法输出才成功余兴了,还有就是循环中出现的错误。比如将哈夫曼编码写入文件,就因为多了一个等号以至于哈夫曼译码总是不能成功译出。许多的错误让我明白了一个道理---细心是非常重要的。同时,对于编程者而言,思路清晰是相当重要的。在适当的时候和同学一起交流探讨是一个十分好的学习机会。请教老师也很重要,因为毕竟我们是新手,对于某些问题很难弄清楚。而且,某些错误对于我们来说有时候想半天都弄不来,但老师几下下就搞好了,这样就更加有效地节约了时间。

这次课程设计不但让我学得了一些编程知识,还学会了系统的做一份课程设计报告,明白了做事情只有认真,才能真正做得更好!

哈夫曼树编码译码实验报告(DOC)

数据结构课程设计设计题目:哈夫曼树编码译码

目录 第一章需求分析 (1) 第二章设计要求 (1) 第三章概要设计 (2) (1)其主要流程图如图1-1所示。 (3) (2)设计包含的几个方面 (4) 第四章详细设计 (4) (1)①哈夫曼树的存储结构描述为: (4) (2)哈弗曼编码 (5) (3)哈弗曼译码 (7) (4)主函数 (8) (5)显示部分源程序: (8) 第五章调试结果 (10) 第六章心得体会 (12) 第七章参考文献 (12) 附录: (12)

在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。哈夫曼编码是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。哈弗曼编码使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。哈夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个叶子对应的字符的编码,这就是哈夫曼编码。哈弗曼译码输入字符串可以把它编译成二进制代码,输入二进制代码时可以编译成字符串。 第二章设计要求 对输入的一串电文字符实现哈夫曼编码,再对哈夫曼编码生成的代码串进行译码,输出电文字符串。通常我们把数据压缩的过程称为编码,解压缩的过程称为解码。电报通信是传递文字的二进制码形式的字符串。但在信息传递时,总希望总长度能尽可能短,即采用最短码。假设每种字符在电文中出现的次数为Wi,编码长度为Li,电文中有n种字符,则电文编码总长度为∑WiLi。若将此对应到二叉树上,Wi为叶结点的权,Li为根结点到叶结点的路径长度。那么,∑WiLi 恰好为二叉树上带权路径长度。因此,设计电文总长最短的二进制前缀编码,就是以n种字符出现的频率作权,构造一棵哈夫曼树,此构造过程称为哈夫曼编码。设计实现的功能: (1) 哈夫曼树的建立; (2) 哈夫曼编码的生成; (3) 编码文件的译码。

对讲机毕业设计

目录 摘要.............................................................. I Abstract........................................................... I I 前言.. (1) 第一章对讲机原理概述 (2) 1 工作原理 (2) 1.1原理框图 (2) 1.2工作原理 (2) 2 设计方案 (3) 第二章芯片介绍 (4) 2.1单片窄带调频接收电路——MC3361 (4) 1.混频 (8) 2.鉴频 (8) 2.2调频发射电路——MC2833 (10) 2.3调频接收前置电路——TA7358P (14) 2.4音频功率放大芯片——LM386 (16) 第三章对讲机电路设计 (18) 第一节电路原理框图 (18) 1 发信电路 (18) 2 收信电路 (18) 第二节电路原理图 (20) 1 发信电路 (21) 2 收信电路 (21) 3 天线及双工滤波电路 (22) 4 参数选择 (22) 结束语 (23) 参考文献 (24) 致谢 (25) 附录:整机电路图

前言 古时候的通信方式有蜂火台、飞鸽传书、驿站等等,主要的目地在于传送军事情报,其传输煤介主要是利用人力和物力来达成。直到“电”问世后,才开始寻找通过使用电来通信的可能性。 经过人们的发展,在这两百年内获得重大进步,尤其是配合电子元件的进步,使复杂、便利的通信系统得以实现,并成为日常生活中不可缺少的东西。在整个通信技术发展过程中,有些科学家作出了重要的突破性贡献。例如1864年,马克斯威尔(Maxwell)导出电磁波理论,证明电磁波的存在,而赫兹1887年经由实验证明电磁波存在,这些进步使得无线通信变得可能也逐渐成真。另外,贝尔(Bell)于1875年发明电话,使声音可以直接传递,结合史卓格(Strowger)在1897年发明的自动交换机,使得电话服务得以顺利成长。由于真空管于1904年问世,促使阿姆斯壮于1918年发明超外差无线电接收机,开启无线电广阔的应用大门。 在1930年前的通信发展主要是属于类比通信的成长。在1930年以后,随着数子通信、电脑及人造卫星的产生,整体通信技术也朝向数子通信方向来发展,对人类生活的影响也更为加深。当然,这些进步也都基于电子原件由真空管、电晶体、集成电路(Integrated Circuit, IC)及超大型集成电路(Very Large Scale Integrated Circuit,VLSI)的长足进步,才能使通信系统更具方便性及操控性。随着电脑技术、通信技术与娱乐的结合,大家都希望能够更随心所欲地使用科技,无线通信技术便逐渐获得大家的青睐。大家都希望能够透过无线通信技术,使自己不再局限于有线传输设备,进而摆脱掉上述的种种羁绊。无线通信技术主要就是利用无线电波取代传统的传输线路(例如:铜线,双绞线、光纤等),通过适当的技术,我们可以将低频的信息加在高频的载波之上,这就是我们所谓的调制(Modulation),而相反地,自高频的载波中将信息取出的技术,我们把它称之为解调(Demodulation),而这个可以用来发射的高频载波,便称之为射频 (简称RF)。通过改变载波的波长、振幅、频率,我们就可以利用载波来表示信息。基本上,各种通信系统的资讯传送过程,以从甲地单向地传到乙地为例,其流程大约如下: 1.在甲地将要传送的信息,以电的信号表现出来。 2.将此电信号放大、编码或调制后,依据各种传输煤介特性,将信息传送到乙地。 3.在乙地将电信号收集后,经解码或解调。 4.再依原传送信息性质还原回来,在透过喇叭转换使人能听到。

个性化音乐推荐系统设计与实现

个性化音乐推荐系统设计与实现 摘要 21世纪是信息化时代,随着信息技术和网络技术的发展,信息化已经渗透到人们日常生活的各个方面,与人们的日常生活早已建立了离不开的联系。对网络音乐服务来说,不管是音乐下载服务,或者是网络音乐电台服务,都需要用到优秀的内容推荐系统去辅助整个系统。个性化音乐推荐系统是目前最流行的应用方法之一。同时音乐成为重要的媒介与朋友交流文化,所以很多SNS应用当中将音乐服务添加到里面。 本系统采用SSH框架组合进行设计,基于Java Web技术,系统使用UML建模。本系统的功能模块主要包括:音乐上传、单曲管理、个人信息维护、收集歌曲信息、音乐检索以及系统推荐等。音乐上传利用JavaScript脚本定义了一个函数,单曲管理在action中定义一个方法,系统推荐是利用协同过滤算法来进行的。 整个系统主要实现了从用户注册和登录、检索音乐到收听音乐、评分音乐,个性化推荐的整个音乐系统,管理员可使用系统后台对音乐歌曲信息进行修改、会员信息修改、系统推荐等进行有效的管理。很大程度上提高了对音乐管理的效率,符合了广大用户们的基本需求。 关键词:SSH框架,音乐系统,协同过滤,MVC模式

DESIGN AND INPLEMENTATION OF PERSONALIZED MUSIC RECOMMENDATION SYSTEM Abstract The 21st century is the era of information, with the development of information technology and network technology, it has penetrated into every aspect of daily life, with people in daily life has been inextricably linked to the the Internet music service, whether it is music download service, or network music radio service, all need to use the excellent content recommendation system to support the whole system. Personalized music recommendation system is one of the most popular applications. At the same time music has become an important medium of communication with friends culture, so many SNS applications when the music services added to the inside. The system uses a combination of SSH framework design, based on Java Web technology,system used UML modeling. Site function modules include: Music upload, music management,personal information maintenance, collecting music information, music search and system recommend. The entire site is simple, user-friendly, flexible and practical. The main achievement of the user registration and login, retrieve music to listen to music, the whole comment is called online music listening processes, and system administrators can use the background information on the goods, membership information, message information, and effective management. Greatly improving the efficiency of music management, in line with the needs of customers. Keywords: SSH Framework,Music System,Collaborative Filtering,MVC Pattern

(完整版)操作系统毕业课程设计说明书-基于Linux的模拟文件系统的设计与实现

中北大学 操作系统课程设计 说明书 学院、系:软件学院 专业:软件工程 学生姓名:徐春花学号: 设计题目:基于Linux的模拟文件系统的设计与实现 起迄日 期: 2014年6月14日- 2014年6月26日指导教薛海丽

师: 2014 年 6月 26 日 前言 简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。用户不但可以从Internet上下载Linux及其源代码,而且还可以从Internet上下载许多Linux的应用程序。可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程序的功能。这对Windows NT、Windows98、MS-DOS或OS2

等商品化操作系统来说是无法做到的。 Linux具有:稳定、可靠、安全的优点,并且有强大的网络功能。其中有对读、 写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。在相关软 件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器 使用,利用IPCHAINSIPTABLE网络治理工具可构建NAT及功能全面的防火墙。 Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系 统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑 器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形 用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系 统进行操作。 目录 1需求分析 (3) 1.1 功能介绍 (3) 1.2 目的及意义 (5) 1.2.1 目的 (5) 1.2.2 意义 (6) 1.3 设计成果 (7) 2总体设计 (8) 2.1功能介绍 (8) 2.2模块关联 (9) 3详细设计 (12)

哈夫曼编码与译码的实现

数据结构课程设计评阅书

2011—2012学年第一学期 专业:信息管理与信息系统学号: 1021024016 姓名:万永馨 课程设计名称:数据结构课程设计 设计题目:哈夫曼编码与译码的实现 完成期限:自 2012 年 2 月 20 日至 2012 年 3 月 2 日共 2 周 设计依据、要求及主要内容(可另加附页): 该设计题目将按以下要求完成: 哈夫曼编码与译码是信息传输中应用的经典算法,运用C或VC++结合数据结构等基础知识,按 以下要求编程实现各种进制的转换。 任务要求:1)阐述设计思想,画出流程图;2)需要对哈夫曼编码/译码的相关原理有所了解,设计数 据结构,建立必要的信息数据文件(最好存储成外部文件),并分析完成用户所需的基本操作功能;3)实现给定信息的编码和译码功能;4)应有较好的界面设计,说明程序测试方法;5)按照格式要 求完成课程设计说明书。 设计要求: 1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?确定问题的输入数据集合。 2)逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的 原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定 义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调 用关系图; 3)详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统 功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基 本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作做出进一步的求精, 写出数据存储结构的类型定义,写出函数形式的算法框架; 4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言, 使程序中逻辑概念清楚; 5)程序调试与测试:能够熟练掌握调试工具的各种功能,设计测试数据确保程序正确。调试正 确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果; 6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。算 法的时间、空间复杂性分析; 7)编写课程设计报告; 以上要求前三个阶段的任务完成后,将设计说明书的草稿交指导老师面审,审查合格方可进入 后续阶段的工作。设计工作结束,经指导老师验收合格后将设计说明书装订,并答辩。

有线双工对讲机设计 解光飞

有线双工对讲机 解光飞 刘畅 李群 指导老师:张倩 査长军 摘要:有线双工对讲机主要应用于对音频信号的功率放大,本文介绍了具有弱信号放大能力的有线双工对讲机的基本原理、内容和实现过程。整个电路主要由稳压电源、前置放大器、功率放大器、共三部分构成。稳压电源主要是为前置放大器、功率放大器提供稳定的直流电源;前置放大器主要是电压的放大;功率放大器实现电流、电压的放大;设计的电路结构简洁、实用,充分利用到了集成功放的优良性能。 关键字:集成运放 功率放大 扬声器 一、题目理解与分析 1、设计任务 用中小规模集成芯片设计并制作一对实现甲乙双方异地有线通话的双工对讲机。 2、设计要求 1)用扬声器兼作话筒和喇叭,双向对讲,互不影响; 2)对讲距离30m~50m ; 3)电源电压为9V ,PO ≤0.5W 。 二、系统方案设计 设计有线双工对讲机系统如图2.1所示。主要由弱声音采集,前置放大器、 功率输出放大器、功能切换开关、扬声器、直流稳压供电电路等组成。 图2.1 有线双工对讲机系统框图 其中弱声音采集,弱信号前置放大级完成弱信号的电压放大,功率输出放大级完成弱信号的电压和电流放大,直流稳压电源部分为整个功放电路提供电量。 弱信号前置放大器 功率输出放大 功能切换开关 弱声音采集甲 自制稳 压电源 扬声器甲 功能切换开关 扬声器乙 弱声音采集乙 弱信号前置放大器 功率输出放大

三、模块方案设计 3.1 弱声音采集模块设计 方案一:采用驻极体电容器麦克风(ECM) 工作原理是利用具有永久电荷隔离的聚合材料振动膜。体积小巧,成本低廉,在电话、手机等设备中广泛使用。电容式麦克风因灵敏度较高,常用于高品质的录音。 方案二:采用电动式锥形纸盆扬声器 电动式锥形纸盆扬声器的工作实际上是把一定范围内的音频电功率讯号通过换能方式转变为失真小并具有足够声压级的可听声音。同时该种扬声器可以将声音信号转换为电信号。 综合比较,因设计要求用扬声器兼作话筒和喇叭,方案二的设计效果优于方案一,因此采用方案二。 3.2 前置放大模块设计 方案一:采用集成运算放大器构成前置放大电路 设计前置放大电路的可供选用的集成运算放大器由很多,如National Semiconductor公司的LF347/356/357,Precision Monolithics公司的OP16/37,Signetics公司的NE5532/5534等。具有带宽高,电压增益高,转换速率快,噪声低和电流消耗低等优点。 方案二:采用专用前置放大器IC构成前置放大电路 目前有很多性能优越的专用低频前置放大器IC,如日本夏普公司的IR3R18/16,NEC公司的Μpc1228H,富士通公司的MB3105/06。其频带BW均能达到30Hz—20KHz,增益高,失真系数小。 综合比较,方案二的设计效果优于方案一,但是专用前置放大器IC价格比较贵,而且采购不便,而集成运放价格便宜,性能高,能够满足题目放大要求,因此采用方案一。 3.3 功率放大模块设计 方案一:采用分立元件构成低频功率放大器电路 分立元件构成的低频功率放大器电路可分为输入级、功率激励级和OCL输出级三部分。输入级采用双管差分放大器使电路工作稳定,功率激励级采用互补复合管推挽输出电路来提高线性放大及降低波形失真,而输出级采用直接耦合形式确保电路的低频响应。这种方案的优点在于反馈深度易控制,故放大倍数易控制。且失真度可以做到很小,使音质很纯净。但外围元器件较多,调试要困难很多。 方案二:采用集成运放构成低频功率放大器电路 LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。 特性(Features): * 静态功耗低,约为4mA,可用于电池供电。 * 工作电压范围宽,4-12V or 5-18V。

个性化推荐系统分析与设计

课程设计报告 课程名称系统分析设计与开发方法 课题名称个性化推荐系统的分析与设计 专业信息管理与信息系统 班级1002 学号201003110215 姓名黄天玲 指导教师唐志航 2014年元月4 日

一、设计内容与设计要求 1.设计内容: 见附录 2.设计要求: 1).设计正确,方案合理。 2).界面友好,使用方便。 3).建模语言精炼,结构清晰。 4).设计报告4000字以上,含建模语言说明,用户使用说明,UML建模图。 5).上机演示。 二、进度安排 第十七周星期四下午:课题讲解,查阅资料、系统分析 星期五上午:总体设计、详细设计 第十八周星期一:建模,上机调试、撰写课程设计报告 星期二下午:答辩 附: 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

设计课题:个性化推荐系统的分析与设计 一、问题描述: 对网络购物个性化推荐系统进行分析与设计,对购物流程进行分析,对购物中关键环节进行设计,实现对商品的录入、显示、修改、排序、保存、销售、售后服务以及客户管理等操作实现推荐结果准确性、推荐结果多样性、用户交互度、系统界面设计、系统交互设计、推荐透明度(推荐解释)。 二、功能要求: 1、用UML完成一个小型团购系统的分析、设计。 2、写出系统需求报告,说明系统的功能。 3、通过面向对象的分析和设计建立系统模型。 4、画出完整的用例图、类图、对象图、包图;及时序图、协作图、状态图、活动图;及组件图和配置图) 三、建模提示: 1、使用Enterprise Architect 8.0建模。 2、使用 Ration Rose 或StarUML建模。 四、其它 对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能,特别是售后以及客户关系管理。

哈夫曼树的编码和译码

#include"stdafx.h" #include"stdio.h" #include"conio.h" #include #include #include using namespace std; #define maxbit 100 #define Maxvalue 2000//最大权值整数常量#define Maxleaf 100//最大叶子结点数 #define size 300//0、串数组的长度 static int n;//实际的叶子结点数 struct HNodeType { int weight; int parent; int lchild; int rchild; int ceng;//结点相应的层数 char ch;//各结点对应的字符 }; struct HCodeType { int bit[maxbit];//存放编码的数组 int start;//编码在数组中的开始位置}; static HNodeType *HuffNode;//定义静态指针HNodeType *init()//初始化静态链表 { HuffNode=new HNodeType[2*n-1]; for(int i=0;i<2*n-1;i++) { HuffNode[i].weight=0; HuffNode[i].parent=-1; HuffNode[i].lchild=-1; HuffNode[i].rchild=-1; HuffNode[i].ceng=-1; HuffNode[i].ch='0'; } return HuffNode; }

双工对讲机课设报告

电子装置设计报告双工对讲机 专业: 姓名: 学号: 时间:

目录 一、设计任务与要求-----------------------------------------2 二、设计内容--------------------------------------------------2 三、设计总结--------------------------------------------------11 四、设计参考资料--------------------------------------------12

一.设计任务与要求 元件采用集成运放和集成功放及电阻、电容等,实现甲、乙双方异地有线通话对讲功能; 1)用扬声器兼作话筒和啦叭,双向对讲,互不影响; 2)电源电压选用+9V ,输出功率≥0.5W ,工作可靠,效果良好; 3)设计电路所需的直流稳压电源(即+9V 电源); 二.设计内容 2.方案论证: 2.1设计原理: 本设计主要采用扬声器兼作话筒和喇叭作为人音频信号的采集接受转换装置,集成运放及电阻、电容等构成对微弱声音信号的前置放大电路,对信号进行适当的放大,再由集成功放及电阻、电容等构成功率放大电路对经前置放大的音频信号进行功率放大,然后推动扬声器工作,从而实现异地有线通话。本双工对讲机的设计框图如下: 图2-1 对讲机设计框图 声电转换 电路 功率放大器 前置放大器 功率放大器 直流电源电 路 声电转换 电路 前置放大器 甲 乙

2.2方案选择: 2.2.1方案一: 采用电桥构成测量电路,对由扬声器产生的微弱信号进行测量,然后经过集成运放UA741进行电压放大,然后再经集成运放386D进行功率放大,推动扬声器工作。电路图设计如附录图一所示。 图2-1-1 方案一原理图 该电路的设计虽然考虑到了所有设计要求,电路结构也比较简单,但是此方案有三个缺陷:一是用扬声器兼作话筒和喇叭,在理论上可行,但实际中实现可能性不高,一般的扬声器感应声音信号的灵敏度不是很高,一般达不到比较理想的效果;二是对扬声器中的微弱信号用电桥进行测量要求电桥要达到平衡,这在一般的电路板制作中比较难以实现;三是该电路中两个扬声器在同一回路中,一边的声音信号对另一边都会产生影响,这是该电路的最大缺陷。考虑到上述原因,该方案不适合采用。 2.2.2方案二: 考虑到上述方案的缺陷,决定将用扬声器兼作话筒和喇叭改为用驻极话筒充当话筒,扬声器制作喇叭,通过下面的电路来实现:

操作系统简单文件系统设计及实现

简单文件系统的设计及实现 一、实验目的: 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解 2、要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二、实验内容: 1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 2、程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作 4、算法与框图 ?因系统小,文件目录的检索使用了简单的线性搜索。 ?文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 ?程序中使用的主要设计结构如下:主文件目录和用户文件目录( MFD、UFD); 打开文件目录( AFD)(即运行文件目录) 文件系统算法的流程图如下

三、工具/准备工作: 在开始本实验之前,请回顾教科书的相关内容。并做以下准备: 1) 一台运行Windows 2000 Professional或Windows 2000 Server的操作系统的计算机。 2) 计算机中需安装Visual C++ 6.0专业版或企业版 四、实验要求: (1)按照学校关于实验报告格式的要求,编写实验报告(含流程图); (2)实验时按两人一组进行分组,将本组认为效果较好的程序提交检查。

哈夫曼编码与译码器_数据结构课程设计报告

沈阳航空航天大学 课程设计报告 课程设计名称:数据结构课程设计 课程设计题目:实现哈夫曼编码和译码器 院(系):计算机学院 专业:计算机科学与技术 班级:24010102 学号:2012040101082 姓名:尹伟和 指导教师:徐蕾

此页为任务书

目录 1.题目分析 (1) 1.1.题目重述 (1) 1.1.1.系统功能需求分析 (1) 2.程序设计 (2) 2.1.系统功能模块说明 (2) 2.1.1.系统功能模块结构 (2) 2.1.2.系统模块功能说明 (3) 2.2.数据结构说明 (3) 2.2.1.结构体定义说明 (3) 2.2.2.哈夫曼树 (4) 2.2.3.字符-哈夫曼编码对照表 (4) 2.3.函数说明 (4) 3.算法描述 (6) 3.1.哈夫曼树的构建 (6) 3.2.字符-哈夫曼编码对照表 (6) 3.3.编码 (6) 3.4.译码 (7) 4.程序测试 (9) 4.1.字符集输入 (9) 4.2.编码测试 (10) 4.3.译码测试 (11) 参考文献 (13) 附录(程序清单) (14)

沈阳航空航天大学课程设计报告 1.题目分析 1.1.题目重述 本次课程设计的目标是实现一个哈夫曼编码和译码器。该哈夫曼编码和译码器需要根据用户输入的字符集及相应字符出现的频率,对字符集所包含的字符进行哈夫曼编码。同时,作为编码器需要其对用户提供的明文字符串进行编码,使明文字符串变为二进制密文;作为译码器需要对用户提供的二进制密文进行译码,使二进制密文变为字符明文。 1.1.1.系统功能需求分析 通过对课程设计的题目分析,可以得出哈夫曼编码和译码器的功能需求,需求如下: 1)读取用户输入的字符集和相应字符出现的频率; 2)根据用户输入构建哈夫曼树; 3)根据哈夫曼树构建字符-哈夫曼编码对照表; 4)根据字符-哈夫曼编码对照表对明文字符串进行编码; 5)根据哈夫曼树对二进制密文进行译码。

通信原理课程设计对讲机

1任务书 设计并制作一个无线对讲机,要求采用调频方式工作,至少10米以上通话距离。2设计方案选择 方案一:发射试用调频无线送话器,接收采用集成电路KC538,具有中频放大、鉴频和音频功率放大等功能。KC538中频放大器采用三极管差分放大器,故有增益高和调配抑制比较好的特点。 方案二:采用集成电路D1800,它作为收音机接收专业集成电路,功放部分则用D2822电路具有体积小、外围元件少灵敏度极高、性能稳定等优点。 方案选择:综上电路,接收频率和工作电流都在要求范围之内,具有良好的抗干扰能力,经过比较,方案二更具有简洁性,电路布复杂。因此本系统采用方案二设计。 工作原理 该对讲收音机的原理框图如下图所示,分为接收部分和发射部分,发射部分电路采用本级振荡经调制差频后中频发射。接收部分采用相干解调方式放大输出。

接收部分原理:调频信号由TX接收,经C9耦合到IC1的19脚内的混频电路,IC1第1脚内部为本机振荡电路,1脚为本振信号输入端,L4、R6、C10、C11等元件构成本振的调谐回路。在IC1内部混频后的信号经低通滤波器后得到10.7MHz的中频信号,中频信号由IC1的7、8、9脚内电路进行中频放大、检波,7、8、9脚外接的电容为高频滤波电容,此时,中频信号频率仍然是变化的,经过鉴频后变成变化的电压。10脚外接电容为鉴频电路的滤波电容。这个变化的电压就是音频信号,经过静噪的音频信号从14脚输出耦合至12脚内的功放电路,第一次功率放大后的音频信号从11脚输出,经过R10、C25、RP,耦合至IC2进行第二次功率放大,推动扬声器发出声音。 对讲机接收结构框图如下图所示:

huffman编码译码实现文件的压缩与解压.

数据结构 课程设计 题目名称:huffman编码与解码实现文件的压缩与解压专业年级: 组长: 小组成员: 指导教师: 二〇一二年十二月二十六日

目录 一、目标任务与问题分析 (2) 1.1目标任务 (2) 1.2问题分析 (2) 二、算法分析 (2) 2.1构造huffman树 (2) 2.1.1 字符的统计 (2) 2.1.2 huffman树节点的设计 (2) 2.2构造huffman编码 (3) 2.2.1 huffman编码的设计 (3) 2.3 压缩文件与解压文件的实现 (3) 三、执行效果 (4) 3.1界面 (4) 3.2每个字符的编码 (4) 3.3操作部分 (5) 3.4文件效果 (6) 四、源程序 (7) 五、参考文献 (16)

huffman编码与解码实现文件的压缩与解压 一、目标任务与问题分析 1.1目标任务 采用huffman编码思想实现文件的压缩和解压功能,可以将任意文件压缩,压缩后也可以解压出来。这样即节约了存储空间,也不会破坏文件的完整性。 1.2问题分析 本问题首先应该是利用哈夫曼思想,对需要压缩的文件中的个字符进行频率统计,为了能对任意的文件进行处理,应该所有的文件以二进制的方式进行处理,即对文件(不管包含的是字母还是汉字)采取一个个的字节处理,然后根据统计的频率结果构造哈夫曼树,然后对每个字符进行哈夫曼编码,然后逐一对被压缩的文件的每个字符构建的新的哈夫曼编码存入新的文件中即得到的压缩文件。解压过程则利用相应的哈夫曼树及压缩文件中的二进制码将编码序列译码,对文件进行解压,得到解压文件。 二、算法分析 2.1构造huffman树 要利用哈夫曼编码对文本文件进行压缩,首先必须知道期字符相应的哈夫曼编码。为了得到文件中字符的频率,一般的做法是扫描整个文本进行统计,编写程序统计文件中各个字符出现的频率。由于一个字符的范围在[0-255]之间,即共256个状态,所以可以直接用256个哈夫曼树节点即数组(后面有节点的定义)空间来存储整个文件的信息,节点中包括对应字符信息,其中包括频率。 2.1.1 字符的统计 用结构体huffchar来存放文件字符的信息。其中有文件中不同字符出现的种类Count、字符data。 struct huffchar{ //存放读入字符的类; int Count;//字符出现的个数; char data;//字符; }; 函数实现: bool char_judge(char c)//判断字符出现的函数; void char_add(char c)//添加新出现的字符; void read_file_count() //文件的读取 2.1.2 huffman树节点的设计 用结构体huff_tree来存储结点信息,其中有成员频率weight、父亲节点parent、左儿子节点lchild、右儿子节点rchild。

对讲机设计介绍

TI杯XX省大学生电子设计竞赛 设 计 报 告 单边带调幅对讲机

摘要:本对讲机系统采用单边带调幅(SSB)方式完成语音和数据的传输,通过使同一机器的发射和接收工作在不同频率实现全双工通信。超外差结构使接收机接收灵敏度高并具有自动增益控制(AGC)功能和信号强度指示。使用自制单边带晶体滤波器滤除载波及上边带以产生单边带信号。使用数字锁相环产生混频级本振,使得发射频率可在小范围内调整,实现多频道通信。 关键字:单边带超外差全双工多频道 Abstract:The interphones use Single Side Band (SSB) mode to fullfill the sound and data transmission ,and two different frequencies used by the stransimitter and the receiver respectly to make it possible to achieve the full-duplex communication.The sensitivity of the receiver benifits from the superheterodyne architecture.The Automatic Gain Control(AGC) and the indication of the intensity of the signal are also https://www.360docs.net/doc/0a9772181.html,ing the self-made crystal filter to remove the carrier and USB.The digital PLL used by the mixer make it possible to change the frequency in a small scale and communicate in multi-channel. Keywords:SSB Superheterodyne Full-duplex Multi-channel

图书借阅与推荐系统的设计与实现

郑州轻工业学院 本科毕业设计(论文) 题目图书借阅与推荐系统的设计与实现 学生姓名 专业班级 学号 院(系) 指导教师 完成时间

郑州轻工业学院 毕业设计(论文)任务书 题目图书借阅与推荐系统的设计与实现 专业计算机科学与技术学号540907010109姓名 主要内容: 基于J2EE的图书借阅与推荐系统:模拟图书馆中借书还书的关系;借阅用户的信息管理;图书馆方面书籍信息以及借阅信息的管理。 基本要求: 设计严谨,功能完善;界面流畅,使用方便;扩充性强,易于维护;性能良好,安全可靠。 参考资料: 1.原始资料 [1] 钟鸣.Servlet与JSP权威指南[M].北京:机械工业出版社,2002年.89-93 [2] 周竞涛.Eclipse完全手册-基础[J].进阶.高级.北京:电子工业出版社,2006.44-48 [3] Rima Patel sriganesh.精通EJB3.0[M].北京:电子工业出版社,2007.23-33 [4]张席,戴劲. Java语言程序设计教程[M]. 西安:西安电子科技大学出版社,2003.131-156 2. 技术条件 硬件条件:个人电脑一台 软件配置:系统采用Windows2007,使用office2003系列软件,开发工具采用MyEclipse、数据库支持Oracle、服务器Tomcat6.0以及JDK1.60 完成期限: 指导教师签名: 专业负责人签名:

目录 摘要 ............................................................................................................................ I ABSTRACT .............................................................................................................. I I 1. 绪论.. (1) 1.1课题意义 (1) 1.2目前图书管理系统存在的问题 (2) 1.3本文的主要内容 (2) 2. 相关技术及开发工具 (4) 2.1 相关技术简介 (4) 2.1.1 J2EE平台 (4) 2.1.2 数据库语言 (4) 2.2 开发工具简介 (5) 2.2.1 MyEclipse6.0简介 (5) 2.2.2 数据库简介 (5) 2.2.3 服务器简介 (5) 3. 系统分析 (7) 3.1可行性分析 (7) 3.1.1 技术可行性 (7) 3.1.2.经济可行性 (7) 3.2 图书借阅推荐管理系统需求概述 (7) 3.2.1系统目标 (7) 3.2.2用户类和用户特性 (8) 3.3图书借阅推荐管理系统需求模型 (8)

哈夫曼编码与译码报告

一、设计思想 程序要求: 利用哈夫曼树对字符串进行编码,要求每个字符有自己唯一的编码。将得到的一串字串译成0、1编码后存到一个文件夹中,然后再从这个文件夹中读出这串编码进行解码。 实现方法: 输入一串字符,要求字符的区间为大写的26个英文字母,将获得的串字符用计算权值的函数(jsquanzhi())进行字符统计,统计出现的字符种数以及每种字符出现的次数,将该种字符出现的次数作为它的权值。将出现的字符的权值和该字符依次分别赋给两个结构体HT和HC,利用HT(节点)权值的大小建立哈夫曼树,首先用选择函数select()函数选择两个权值最小的字符作为叶子节点,创建一个新的节点作为这两个叶节点的父节点,被选中的节点给他的HT[i].parent赋值是他下次不再被选中,父节点的权值为,子节点的权值之和。然后将该将父节点放入筛选区中,再进行选择(被选过的不再被使用),直到所有的节点都被使用,这样一个哈夫曼树就被建立了。根据每个字符在哈夫曼书中的位置来编译每个字符的0、1密文代码,从叶节点判断该叶节点是其父节点的左右字左字为‘0’,右子为‘1’,在判断父节点是上级父节点的左右子直至根节点,将生成的0、1字符串按所表示的字符倒序存入HC相应的字符的bins[]数组。 重新一个一个字符的读取输入的字符串,按照字符出现的顺序将它转为0、1代码并存到一个txt文件夹中去。解码时从文件夹中,一个一个字符的读出那串0、1代码赋给一个临时字符串cd[],用该字符串与每个字符的HC[i].bins密文比较,直到与一个字符的密文相同时,译出该字符,将字符存放在临时字符数组tempstr[]中,清空临时字符串继续读取0、1代码进行翻译,直至文件密文结束为止。于是就得到了原先被加密的那串字符串。

最全的对讲机分类

最全的对讲机分类 对讲机分为手持式和车(船、机)载式、固定式、转发式,我们常在小区保安、市容管理人员、交警、公安……看到手里拿的就属于手持式对讲机。其实我们手里的手机也包括在手持式对讲机之内。 无线电对讲机,其涵盖范围较宽。在这里我们将工作在超短波频段(VHF30~300MHZ、UHF300~3000MHZ)的无线电通信设备都统称为无线电对讲机。实际上按国家的有关标准应称为超短波调频无线电话机,人们通常将功率小、体积小的手持式的无线电话机叫做“对讲机”,以前曾有人称它为“步谈机”、“步话机”,而将功率大、体积较大的可装在车(船)等交通工具或固定使用的无线电话机又叫做“电台”,如车载台(车载机)、船用台、固定台、基地台、中转台等。 一、从使用方式上,分为手持、车(船、机)载、固定式、中继。 手持式无线对讲机 这是一种体积小、重量轻、功率小的无线对讲机,适合于手持或袋装,便于个人随身携带,能在行进中进行通信联系,其功率一般VHF频段不超过5W、UHF频段不超过4W。通信距离在无障挡的开阔地带时一般可达到5公里。该机适合近距离的各种场合下流动人员之间的通信联系。在无线电话机的系列中,手持式无线电“对讲机”的应用数量及品种是最多的,约占80%以上。 车(船、机)载无线对讲机 这是一种能安装在车辆、船舶、飞机等交通工具上直接由车辆上的电源供电的,并使用车〈船、机〉上天线的无线对讲机,主要用于交通运输、生产调度、保安指挥等业务。其体积较大,功率不小于10W,一般为25W。最大功率为VHF为56W、UHF为50 W,通信距离可达到20公里以上。 中继台 中继台就是将所接收到的某一频段的信号直接通过自身的发射机在其它频率上转发出去。这两组不同频率信号相互不影响,或者说能够允许两组用户在不同频率上进行通信联系。它具有收发同时工作而又相互不干扰的全双工工作的特点。 二、从通信工作方式上,单工通信工作的单工机和双工通信工作的双工机 单工通信工作的单工无线对讲机 单工通信是指在同一时刻,信息只能单方向进行传输,你说我听,我说你听。这种发射和接收只能交替工作,不能同时工作的无线电对讲机叫做单工机。双工通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能听,边说边听。 三、从技术设计上,模拟对讲机和数字对讲机 无线电对讲机在设计技术方面,可分为采用模拟通信技术设计的模拟对讲机(也称为传统对讲机),以及采用数字技术进行设计的数字对讲机。 四、从设备等级上,业余无线电对讲机和专业无线电对讲机 业余无线电对讲机: 专为满足无线电爱好者使用而设计、生产的无线电对讲机。这类对讲机又可称为“玩机”。针对这种业余的个人无线电业务,各个国家都开辟了专用频段分配给业余无线电运动爱好者使用。我国开辟的频段为144~146MHZ和430~440MHZ,世界各国一般也都是这一频段。2001年10月信息产业部国家无线电管理局发布的《中华人民共和国无线电频率规划》中的对业

相关文档
最新文档