基于QT的密码生成器设计_第1页
基于QT的密码生成器设计_第2页
基于QT的密码生成器设计_第3页
基于QT的密码生成器设计_第4页
基于QT的密码生成器设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳航空航天大学课课 程程 设设 计计 报报 告告课程设计名称:嵌入式系统综合课程设计嵌入式系统综合课程设计课程设计题目:基于嵌入式基于嵌入式 Linux 的密码生成器的密码生成器院(系):计算机学院专 业:计算机科学与技术(嵌入式系统方向)班 级:学 号:姓 名:指导教师:周振辉完成日期:2015年1月16日沈阳航空航天大学课程设计报告 -目目 录录第第 1 章章 系统分析系统分析.11.1 需求分析.11.2 硬件分析.11.2.1 实验环境.21.2.2 实验具体硬件.21.3 软件分析.31.3.1 操作系统简介.31.3.2 开发技术简介.4第第 2 章章 系统设计系统设计.52.1

2、 操作系统移植.52.2 系统模块设计.52.3 函数设计.52.4 关键流程.62.4.1 系统主流程.62.4.2 生成流程图.7第第 3 章章 系统调试及运行系统调试及运行.93.1 调试分析.93.2 结果分析.9参考文献参考文献.11附附 录录.12沈阳航空航天大学课程设计报告 第 1 章 系统分析-0-第 1 章 系统分析1.1 需求分析需求分析利用嵌入式 Linux 和 Qt,设计出一个密码生成器软件:(1)密码包括数字,小写字母,大写字母;(2)密码必须是随机生成;(3)界面可以设置密码生成的长度以及密码的数量;(4)可以在界面上对生成的密码进行浏览;(5)利用嵌入式 Linu

3、x 和 Qt,在 ARM 9 上实现。对上面的课设内容进行分析可知以下三点: (1)必须要有两个输入控件输入密码的个数和密码的长度信息;(2)还要有一个输出控件可以输出生成的密码并在界面上显示出来;(3)对于随机生成功能,则可以借用系统的产生随机数的函数,密码当中的数字,小写字母,大写字母可以用一个字符数组把他们存放在一起,产生的随机整数作为数组的下标,把对应的数组下标内容取出来就完成了随机生成这一个功能。1.2 硬件分析硬件分析烧写开发板及程序的步骤大体如下: (一) 烧写 vivi (1)把并口线插到 pc 机的并口,并把并口与 JTAG 相连,JTAG 与开发板的14 针 JTAT 口相

4、连,打开 S-2410。 (2) 把整个 GIVEIO 目录拷贝到 C:/WINDOWS 下,并把该目录下的giveio.sys 文件拷贝到 c:/windows/system32/drivers 下。 (3) 在控制面板里,选添加硬件下一步选是我已经连接了此硬件下一步选中添加新的硬件设备下一步选中安装我手动从列表选择的硬件下一步选择显示所有设备选择从磁盘安装-浏览,指定驱动为C:WINDOWSGIVEIOgiveio.inf 文件,点击确定,安装好驱动。 沈阳航空航天大学课程设计报告 第 1 章 系统分析-1-(4)在 d 盘新建一目录 bootloader,把 sjf2410 和要烧写的

5、vivi 拷贝到该目录下,在命令提示符 下,进入该目录,运行 sjf2410 命令如下:sjf2410.exe /f:vivi 在此后出现的三次要求输入参数,第一次是让选择 Flash,选 0;第二次是选择 jtag 对 flash 的两种功能,也选 0;第三次是让选择起始地址,选 0 此后就等待大约35 分钟的烧写时间,当 VIVI 烧写完毕后选择参数 2,退出烧写。 (5) 烧录后关闭,拔掉 JTAG 与开发板的连线,并用串口线连接 pc 和2410。(6) 打开超级终端,启动 S-2410,启动 Vivi 分区后,进行分区。 (7)这时已格式化 flash,千万不要重启 2410,viv

6、iload flash vivi x 回车。 (二) 烧写内核 ZImage viviload flash kernel x 回车。点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件 zImage,Enter,协议为 Xmodem,点击“发送”,4 分钟左右 zImage 烧写完毕。 (三) 烧写根文件系统 viviload flash root x 回车,点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件 root.cramfs,协议为 Xmodem,点击“发送 ,10 分钟左右 root.cramfs 烧写完毕。1.2.1 实验环境实验环境1)博创 UP

7、-Star24102)Ubuntu 操作系统3)Qt 软件 1.2.2 实验具体硬件实验具体硬件1) 核心资源 S3C2410 ARM CPU、32M SDRAM、64M NAND FLASH。 2) 100M 网卡,DM9000AE。 3) 一个 USB 主口,一个 USB 从口。 4) 一个 RS232 串口 DB9 接口。一路 RS232 和 TTL 串口从扩展插座上引出。 5)扩展插座,引出所有总线信号(经过驱动芯片)和未占用资源。 沈阳航空航天大学课程设计报告 第 1 章 系统分析-2-6)LCD 和触摸屏接口,外接专配液晶屏/触摸屏板。 7) 电源、复位等基本资源和接口,支持博创

8、UP-LINK 和 J-LINK 仿真器。 8)设置了 IO 控制的 LED 和可产生硬中断的 5 位导航按键等简单调试资源。1.3 软件分析软件分析这次课设用的是 Linux 下的 Ubuntu 系统。对于程序的编写和运行用的是 Qt软件。Ubuntu 是完全基于 Linux 操作系统的,源码也是完全开放的,对于我们初学者进行程序的开发,是特别方便以及实用的。Qt 是一个跨平台的 C+图形用户界面库,它可以支持很多的平台,在 Windows 下编写的程序在 Linux 下用 Qt 也可以完美运行,而图形化用户界面以及面向对象更使得它用起来得心应手,以下我会简单介绍 Ubuntu 操作系统以及

9、 Qt 软件。1.3.1 操作系统简介操作系统简介Ubuntu 完全基于 Linux 操作系统, 可以免费得到社区及专业机构的支持。庞大的社区是它成长的沃土,请向这片动人的热忱敞开心扉。具有 Ubuntu 精神的人心胸开阔,乐于助人,见贤思齐而不忌妒贤能,因为他/她拥有适度的自信。而这源自如下认识:“自己乃是属于一个更大的整体,当他人受到伤害或死去时,当他人受到折磨或压迫时,这个整体就会消失。”Ubuntu 社区恪守 Ubuntu 理念:自由!软件应是自由的,应尊重人类的自由意志,它与人类之间不应有任何隔膜。本地语种,功能限制,自主改进的权利都不应成为使用的障碍或负担。自由,让 Ubuntu

10、与传统的私有软件从根本上不同: 免费不能用来遮羞,您有权修正它,直到满意为止。 Ubuntu 适合桌面和服务器。Ubuntu PC (Intel x86), 64-bit PC (AMD64) 和PowerPC (Apple iBook 和 Powerbook, G4 和 G5) 架构。 Ubuntu 包涵了超过 16,000 种软件, 核心的桌面系统却只有一张光盘, Ubuntu 覆盖了所有的桌面应用程序, 从文字处理,电子表格到 web 服务器和开发设计环境一应俱全。 沈阳航空航天大学课程设计报告 第 1 章 系统分析-3-1.3.2 开发技术简介开发技术简介Qt 是一个跨平台的 C+图形

11、用户界面库,由挪威 TrollTech 公司出品,目前包括 Qt、基于 FrameBuffer 的 Qtopia Core、Qt Designer 和国际化工具Qt Linguist 等部分。Qt 支持所有的 UNIX 系统,当然也包括 Linux 系统, 基本上 Qt 同 X-Window 上的 Motif、Openwin、GTK 等图形界面库和Windows 平台上的 MFC、OWL、VCL、ATL 是同类型的。不过 Qt 还具有下列一些优点: (1)优良的跨平台特性。 (2)面向对象 (3)支持 2D/3D 图形渲染,支持 OpenGL (4)大量的开发文档 (5)XML 支持沈阳航空航

12、天大学课程设计报告 第 2 章 系统设计-4-第 2 章 系统设计2.1 操作系统移植操作系统移植首先在计算机上安装一个 Vmware Workstation 11 软件,新建一个虚拟机,然后设置好语言、时间、内存大小、硬盘大小、用户名和密码等等以后就可以使用了,从网上下载好的 Ubuntu 镜像,进行安装就可以运行 Ubuntu 系统了。2.2 系统模块设计系统模块设计 图图 2.1 系统模块图系统模块图2.3 函数设计函数设计(1)输入选择模块的设计:采用 2 个 Qt 中 Input Widgets 提供的 Spin Box,1 个输入密码的个数,一个输入密码的长度,改变选择框的值,然后

13、用 Qt 关于 Spin Box 的函数 intvalue() const 就可以获得当前的输入值。(2)随机生成模块的设计: 第一步:将 09、az、AZ 一共 62 个字符存在一个一维字符数组当中; 第二步:用 Qt 的产生随机数函数 int qrand()产生 061 的随机整数,利用产随机生成模块显示模块主模块输入选择模块沈阳航空航天大学课程设计报告 第 2 章 系统设计-5-生的随机数作为数组的下标,并把其对应的内容读取出来; 第三步:利用一个二维数组和双重循环,二维数组按行存取一条密码。(3)显示模块的设计:利用 Qt 中 Item Widgets 提供的 List Widget,

14、用它的添加条目函数 void QListWidget:addItem(QListWidgetItem * item),把二维数组按行添加进去就完成显示。2.4 关键流程关键流程2.4.1 系统主流程系统主流程系统的主要流程如图 2.2 所示。 N Y N 图图 2.2 系统主流程图系统主流程图Y开始输入密码个数 numValue与长度 longValue提示出错numValue0&longValue0随机生成 numValue 个longValue 长的密码是否显示显示生成的密码沈阳航空航天大学课程设计报告 第 2 章 系统设计-6- 说明:从系统的主流程图可以知道,软件首先判断输入密码长度

15、numValue 和密码长度 longValue 这两个值是否都大于 0,如果满足条件点击生成按钮,就继续向下执行,否则就提示错误信息。2.4.2 生成流程图生成流程图生成流程图如图 2.3 所示: N 图图 2.3 生成流程图生成流程图NYY从一维字符数组选取一个字符获取numValue、longValue 的值numValue=0longValue=0将字符存入二维数组psdarrayMAXNUMMAXNUM开始结束沈阳航空航天大学课程设计报告 第 2 章 系统设计-7-说明:根据 numValue 和 longValue 的值控制双重循环,根据 longValue 控制随机选择字符的次数

16、,根据 numValue 控制字符串的条数。沈阳航空航天大学课程设计报告 第 2 章 系统设计-8-第 3 章 系统调试及运行3.1 调试分析调试分析问题:这个程序之前有一个错误,就是随机生成的字符串有乱码,有时是正常的,有时又是错误的,出现的几率还比较大。解决方案:在每一条密码之后加上0之后就不在出现乱码了,原因是用0来标识一个字符串的结束。3.2 结果分析结果分析软件初始化界面如图 3.1 所示。 图图 3.13.1 初始化界面图初始化界面图沈阳航空航天大学课程设计报告 第 2 章 系统设计-9-软件创建界面如图 3.2 所示。图图 3.23.2 创建界面图创建界面图点击击显示按钮后,显示

17、结果如图 3.2 所示。 图图 3.33.3 显示结果的界面图显示结果的界面图沈阳航空航天大学课程设计报告 参考文献-10-参考文献1 刘峥嵘等. 嵌入式 Linux 应用开发详解M. 北京:机械工业出版社,20042 蔡志明等. 精通 Qt4 编程(第 2 版)M. 北京:电子工业出版社,20113 霍亚飞. Qt Creater 快速入门M. 北京:北京航空航天大学出版社,2012 4 丁林松等. Qt4 图形设计与嵌入式开发M. 北京:人民邮电出版社,20095 霍亚飞. Qt 及 Qt Quick 开发实战M. 北京:北京航空航天大学出版社,20126 博创公司.UP-Star2410

18、 实验指导 v4.0. 北京博创兴盛科技有限公司沈阳航空航天大学课程设计报告 附 录-11-附 录/mainwindow.h 头文件#ifndefMAINWINDOW_H#define MAINWINDOW_H#include #define MAXNUM 100namespace Ui class MainWindow;class MainWindow: public QMainWindow Q_OBJECTpublic: char psdarrayMAXNUMMAXNUM;/定义一个存放字符串的数组 explicitMainWindow(QWidget *parent = 0); Main

19、Window();signals: void create(); void dis();public slots: void haddle_create(); void haddle_dis();沈阳航空航天大学课程设计报告 附 录-12-privateslots: void on_pushButton_create_clicked(); void on_pushButton_dis_clicked(); void on_pushButton_clear_clicked();private: Ui:MainWindow *ui;#endif / MAINWINDOW_H/mainwindow.

20、cpp 文件#includemainwindow.h#include ui_mainwindow.h#include #include#include #include#include#include #includeMainWindow:MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui:MainWindow) ui-setupUi(this);沈阳航空航天大学课程设计报告 附 录-13- connect(this,SIGNAL(create(),this,SLOT(haddle_create();/ connect(th

21、is,SIGNAL(dis(),this,SLOT(haddle_dis();/MainWindow:MainWindow() Delete ui;void MainWindow:haddle_create() Char dateBase=0123456789abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ; int numValue=ui-spinBox_num-value(); int longValue=ui-spinBox_long-value(); int i; int j; for(i=0;inumValue;i+) for(j=0;jlongValue;j+) int randomValue=qrand()%62; psdarrayij=dateBaserandomValue; psdarrayij=0;/字符串的末尾加0,表示一个字符串结束 for(int i=0;inumValue;i+)沈阳航空航天

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论