1、 数 据 结 构 课 程 设 计 设计题目: 栈的应用(数据加密) 目目 录录 课题设计 目的与 设计意义 1、课题设计目的: (1)掌握栈的建立,置空,进栈,出栈,了解栈的特性:栈是一种特 殊的线性表。其特殊性在于限定插入和删除数据元素只能在线性表 的一端进行。进行插入和删除的一端是浮动端,通常被称为栈顶, 并用一个栈顶指针指示;而另一端是固定端,通常被称为栈底。 (2)通过栈的特殊性,实现进制的转换 (3)通过对储存在计算机的数据的 ASCII 码值进行特定的数值转换, 从而实现数据的加密 (4)对加密后的密文按照特定的密钥进行进制转换,转换成明文 2、课题设计意义:ASCII 码标准的单
2、字节字符编码方案,用于基于 文本的数据。ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。 标准 ASCII 码使用 7 位二进制数来表示所有的大写 和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字 符。通过对文本的 ASCII 码按照一定的规则(通过密钥来指定)进行数值转 换,转换为密文,需要解密时,输入密文和密钥,将密文按照规则(通过密 钥指定)转换为明文。通过对文本的加密,使得未授权的用户即使获得了已 加密的信息,但因不知解密的方法,仍然无法了解信息的内容。 指导教师:余云 2012 年 12 月 9 日 第一章 栈的
3、基本概述. 1 1.1 栈的定义 1 1.1.1 栈的操作 1 1.1.2 进栈出栈 1 1.2 栈的存储 1 1.3 栈的在程序的运行中的作用 1 第二章 需求分析. 2 2.1 加密 . 2 2.2 输入密钥 2 2.3 解密 . 2 第三章 概要设计. 2 3.1 程序的设计思想 3 3.1.1 密钥的生成 3 3.1.2 加密 . 3 3.1.3 解密 . 3 3.4 具体实现流程图 4 第四章 详细设计. 5 4.1 程序设计思想 . 5 4.1.1 进栈 . 5 4.1.2 出栈 . 5 4.1.3 输入明文 5 4.1.4 输入密钥 6 4.1.5 进制转换(十进制转为其他进制)
4、 . 6 4.1.6 加密(将明文的 ASCII 转换为密文) 7 4.1.7 解密(将密文转换为明文) 7 .界面友好化设计 . 8 .3 测试 9 431 输入明文 9 432 输入密钥 .10 433 加密,生成密文 .10 434 解密,输入密文 . 11 435 解密,输入密钥 . 11 436 解密,生成明文 .12 第五章 总结 .12 .栈的特点 .12 .加解密 12 5.3 程序思想 .13 参考文献.13 附录 1 程序代码 .13 1 第一章第一章 栈栈的基本概述的基本概述 栈和队列是一种常见的数据结构,是两种非常重要的线性结构,也都是线性 表,它们是操作受限的的线性表
5、,有顺序栈、链式栈、链式队列和循环队列等形 式。它们广泛应用在各种软件系统中。本题就是要用这些线性结构先完成基本的 应用(数据的进制转换)再编写一个简易的文本加密系统,完成对文本的加密解 密。 1.1 栈的定义 1.1.1 栈的操作 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性 表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在 栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来) 。 栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 1.1.2 进栈出栈 栈是允许在同一端进行插入和删除操作的特殊线性表。 允许进行插入和删除
6、 操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈 中元素个数为零时称为空栈。插入一般称为进栈(PUSH) ,删除则称为退栈 (POP) 。栈也称为后进先出表。 1.2 栈的存储 在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数 据压入栈中,也可以将数据从栈顶弹出。在 i386 机器中,栈顶由称为 esp 的寄 存器进行定位。压栈的操作使得栈顶的地址增大,弹出的操作使得栈顶的地址减 小。 1.3 栈的在程序的运行中的作用 栈在程序的运行中有着举足轻重的作用。 最重要的是栈保存了一个函数调用 时所需要的维护信息,这常常称之为堆栈帧或者活动记录。堆栈帧一般包含如下 几方面的信息: (1) 函数的返回地址和参数 (2)临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临 时变量。 2 第二章第二章 需求分析需求分析 2.1 加密 将文本转换为 ASCII 码,并对这些 ASCII 按照一定的规则做进制转换 2.2 输入密钥 输入密钥,将密钥取平均