/HuffmanDesign-and-curriculumDesign

数据结构课程设计:哈夫曼编码与解码,图书馆图书管理系统

Primary LanguageC

HuffmanDesign-and-curriculumDesign

README中只介绍基本功能,具体详细的实现过程参见“设计报告”

图书管理系统的功能

  • 1) 添加图书信息 输入图书的一些信息:书号、书名、作者、存量、总量,将图书添加进书库,若有相同书号的图书则增加其存量和总量,
    否则直接添加,并以txt文件形式保存。
  • 2) 添加学生信息 输入学生的一些信息:学号(借书证号)、学号、性别、院系,默认为未借书,将学生信息添加进学生信息库,并以txt文件形式保存。
  • 3) 查询图书信息 以书号、书名、作者三种方法查询书籍,查询到后显示该书籍。
  • 4) 显示学生信息 输入学生的学号,显示该学生的全部信息,
    若无该学生则显示“查无此人”。
  • 5) 借阅书籍 输入学生借书证号以及书籍的书号,在学生的借书信息中增加该书号,该书的存量减一,
    若无该学生或该图书则显示错误。
  • 6) 归还书籍 输入学生借书证号以及书籍的书号,在学生的借书信息中删去该书号,该书的存量加一,
    若无该学生或该图书则显示错误。
  • 7) 退出 退出图书管理系统并保存学生和图书信息。

哈夫曼编码的功能

  • 1)计算字符的权值 读取已存储的文本文件,计算出其中各字符的权值(频次),并用一个txt文件保存。
  • 2)初始化哈夫曼树 对每个结点赋字符的值和权值,并计算字符个数。
  • 3)构造哈夫曼树 每次将最小权值的两个结点合并,新节点的权值为两个结点权值之和,形成一颗哈夫曼树。
  • 4)哈夫曼编码 从根节点出发,左子节点为“0”,右子节点为“1”,直到叶子结点,对每个字符进行编码。
  • 5)哈夫曼译码 从根节点开始搜索编码,到叶子结点停止输出字符,直到编码全部读取。
  • 6)用户输入字符 提供一个输入字符的界面,对用户输入的字符进行哈夫曼编码并输出。
  • 7) 用户输入编码 提供一个输入编码的界面,对用户输入的字符进行哈夫曼译码并输出。
  • 8) 计算压缩比 计算从文本文件读入的文本所形成的编码文件大小m,文本文件未编码前大小为n,以公式(n-m)/n来计算压缩比。