基于QT的密码生成器设计文档格式.docx

上传人:b****3 文档编号:6660483 上传时间:2023-05-07 格式:DOCX 页数:17 大小:148.58KB
下载 相关 举报
基于QT的密码生成器设计文档格式.docx_第1页
第1页 / 共17页
基于QT的密码生成器设计文档格式.docx_第2页
第2页 / 共17页
基于QT的密码生成器设计文档格式.docx_第3页
第3页 / 共17页
基于QT的密码生成器设计文档格式.docx_第4页
第4页 / 共17页
基于QT的密码生成器设计文档格式.docx_第5页
第5页 / 共17页
基于QT的密码生成器设计文档格式.docx_第6页
第6页 / 共17页
基于QT的密码生成器设计文档格式.docx_第7页
第7页 / 共17页
基于QT的密码生成器设计文档格式.docx_第8页
第8页 / 共17页
基于QT的密码生成器设计文档格式.docx_第9页
第9页 / 共17页
基于QT的密码生成器设计文档格式.docx_第10页
第10页 / 共17页
基于QT的密码生成器设计文档格式.docx_第11页
第11页 / 共17页
基于QT的密码生成器设计文档格式.docx_第12页
第12页 / 共17页
基于QT的密码生成器设计文档格式.docx_第13页
第13页 / 共17页
基于QT的密码生成器设计文档格式.docx_第14页
第14页 / 共17页
基于QT的密码生成器设计文档格式.docx_第15页
第15页 / 共17页
基于QT的密码生成器设计文档格式.docx_第16页
第16页 / 共17页
基于QT的密码生成器设计文档格式.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于QT的密码生成器设计文档格式.docx

《基于QT的密码生成器设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于QT的密码生成器设计文档格式.docx(17页珍藏版)》请在冰点文库上搜索。

基于QT的密码生成器设计文档格式.docx

参考文献11

附录12

第1章系统分析

1.1需求分析

利用嵌入式Linux和Qt,设计出一个密码生成器软件:

(1)密码包括数字,小写字母,大写字母;

(2)密码必须是随机生成;

(3)界面可以设置密码生成的长度以及密码的数量;

(4)可以在界面上对生成的密码进行浏览;

(5)利用嵌入式Linux和Qt,在ARM9上实现。

对上面的课设内容进行分析可知以下三点:

(1)必须要有两个输入控件输入密码的个数和密码的长度信息;

(2)还要有一个输出控件可以输出生成的密码并在界面上显示出来;

(3)对于随机生成功能,则可以借用系统的产生随机数的函数,密码当中的数字,小写字母,大写字母可以用一个字符数组把他们存放在一起,产生的随机整数作为数组的下标,把对应的数组下标内容取出来就完成了随机生成这一个功能。

1.2硬件分析

烧写开发板及程序的步骤大体如下:

(一) 

烧写vivi 

(1)把并口线插到pc机的并口,并把并口与JTAG相连,JTAG与开发板的14针JTAT口相连,打开S-2410。

(2) 

把整个GIVEIO目录拷贝到C:

/WINDOWS下,并把该目录下的giveio.sys文件拷贝到c:

/windows/system32/drivers下。

(3) 

在控制面板里,选添加硬件>

下一步>

选-是我已经连接了此硬件>

选中-添加新的硬件设备>

选中安装我手动从列表选择的硬件>

选择-显示所有设备>

选择-从磁盘安装-浏览,指定驱动为C:

\WINDOWS\GIVEIO\giveio.inf 

文件,点击确定,安装好驱动。

(4)在d 

盘新建一目录bootloader,把sjf2410和要烧写的vivi 

拷贝到该目录下,在命令提示符 

下,进入该目录,运行sjf2410命令如下:

sjf2410.exe 

/f:

vivi在此后出现的三次要求输入参数,第一次是让选择Flash,选0;

第二次是选择jtag 

对flash的两种功能,也选0;

第三次是让选择起始地址,选0 

此后就等待大约3-5 

分钟的烧写时间,当VIVI 

烧写完毕后选择参数2,退出烧写。

(5) 

烧录后关闭,拔掉JTAG 

与开发板的连线,并用串口线连接pc 

和2410。

(6) 

打开超级终端,启动S-2410,启动Vivi分区后,进行分区。

(7)这时已格式化flash,千万不要重启2410,vivi>

load 

flash 

vivi 

回车。

(二) 

烧写内核ZImage 

vivi>

kernel 

点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件zImage,Enter,协议为Xmodem,点击“发送”,4 

分钟左右zImage 

烧写完毕。

(三) 

烧写根文件系统 

vivi>

root 

回车,点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件root.cramfs,协议为Xmodem,点击“发送"

10分钟左右root.cramfs 

1.2.1实验环境

1)博创UP-Star2410

2)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)扩展插座,引出所有总线信号(经过驱动芯片)和未占用资源。

6)LCD和触摸屏接口,外接专配液晶屏/触摸屏板。

7) 

电源、复位等基本资源和接口,支持博创UP-LINK和J-LINK仿真器。

8)设置了IO控制的LED和可产生硬中断的5位导航按键等简单调试资源。

1.3软件分析

这次课设用的是Linux下的Ubuntu系统。

对于程序的编写和运行用的是Qt软件。

Ubuntu是完全基于Linux操作系统的,源码也是完全开放的,对于我们初学者进行程序的开发,是特别方便以及实用的。

Qt是一个跨平台的C++图形用户界面库,它可以支持很多的平台,在Windows下编写的程序在Linux下用Qt也可以完美运行,而图形化用户界面以及面向对象更使得它用起来得心应手,以下我会简单介绍Ubuntu操作系统以及Qt软件。

1.3.1操作系统简介

Ubuntu 

完全基于 

Linux 

操作系统, 

可以免费得到社区及专业机构的支持。

庞大的社区是它成长的沃土,请向这片动人的热忱敞开心扉。

具有Ubuntu精神的人心胸开阔,乐于助人,见贤思齐而不忌妒贤能,因为他/她拥有适度的自信。

而这源自如下认识:

“自己乃是属于一个更大的整体,当他人受到伤害或死去时,当他人受到折磨或压迫时,这个整体就会消失。

社区恪守 

理念:

自由!

软件应是自由的,应尊重人类的自由意志,它与人类之间不应有任何隔膜。

本地语种,功能限制,自主改进的权利„„都不应成为使用的障碍或负担。

自由,让 

与传统的私有软件从根本上不同:

免费不能用来遮羞,您有权修正它,直到满意为止。

适合桌面和服务器。

PC 

(Intel 

x86), 

64-bit 

(AMD64) 

和PowerPC 

(Apple 

iBook 

和 

Powerbook, 

G4 

G5) 

架构。

包涵了超过 

16,000 

种软件, 

核心的桌面系统却只有一张光盘, 

覆盖了所有的桌面应用程序, 

从文字处理,电子表格到 

web 

服务器和开发设计环境一应俱全。

1.3.2开发技术简介

Qt是一个跨平台的C++图形用户界面库,由挪威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支持

第2章系统设计

2.1操作系统移植

首先在计算机上安装一个Vmware 

Workstation11软件,新建一个虚拟机,然后设置好语言、时间、内存大小、硬盘大小、用户名和密码等等以后就可以使用了,从网上下载好的Ubuntu镜像,进行安装就可以运行Ubuntu系统了。

2.2系统模块设计

图2.1系统模块图

2.3函数设计

(1)输入选择模块的设计:

采用2个Qt中InputWidgets提供的SpinBox,1个输入密码的个数,一个输入密码的长度,改变选择框的值,然后用Qt关于SpinBox的函数intvalue()const就可以获得当前的输入值。

(2)随机生成模块的设计:

第一步:

将0~9、a~z、A~Z一共62个字符存在一个一维字符数组当中;

第二步:

用Qt的产生随机数函数intqrand()产生0~61的随机整数,利用产生的随机数作为数组的下标,并把其对应的内容读取出来;

第三步:

利用一个二维数组和双重循环,二维数组按行存取一条密码。

(3)显示模块的设计:

利用Qt中ItemWidgets提供的ListWidget,用它的添加条目函数voidQListWidget:

:

​addItem(QListWidgetItem*item),把二维数组按行添加进去就完成显示。

2.4关键流程

2.4.1系统主流程

系统的主要流程如图2.2所示。

N

Y

图2.2系统主流程图

说明:

从系统的主流程图可以知道,软件首先判断输入密码长度numValue和密码长度longValue这两个值是否都大于0,如果满足条件点击生成按钮,就继续向下执行,否则就提示错误信息。

2.4.2生成流程图

生成流程图如图2.3所示:

图2.3生成流程图

说明:

根据numValue和longValue的值控制双重循环,根据longValue控制随机选择字符的次数,根据numValue控制字符串的条数。

第3章系统调试及运行

3.1调试分析

问题:

这个程序之前有一个错误,就是随机生成的字符串有乱码,有时是正常的,有时又是错误的,出现的几率还比较大。

解决方案:

在每一条密码之后加上‘\0’之后就不在出现乱码了,原因是用‘\0’来标识一个字符串的结束。

3.2结果分析

软件初始化界面如图3.1所示。

图3.1初始化界面图

软件创建界面如图3.2所示。

图3.2创建界面图

点击击显示按钮后,显示结果如图3.2所示。

图3.3显示结果的界面图

参考文献

[1]刘峥嵘等.嵌入式Linux应用开发详解[M].北京:

机械工业出版社,2004

[2]蔡志明等.精通Qt4编程(第2版)[M].北京:

电子工业出版社,2011

[3] 

霍亚飞. 

Qt 

Creater快速入门[M]. 

北京:

北京航空航天大学出版社,2012 

[4] 

丁林松等. 

Qt4图形设计与嵌入式开发[M]. 

人民邮电出版社,2009

[5]霍亚飞. 

Qt及Qt 

Quick开发实战[M]. 

北京航空航天大学出版社,2012

[6]博创公司.UP-Star2410实验指导v4.0.北京博创兴盛科技有限公司

附录

//mainwindow.h头文件

#ifndefMAINWINDOW_H

#defineMAINWINDOW_H

#include<

QMainWindow>

#defineMAXNUM100

namespaceUi{

classMainWindow;

}

classMainWindow:

publicQMainWindow

{

Q_OBJECT

public:

charpsdarray[MAXNUM][MAXNUM];

//定义一个存放字符串的数组

explicitMainWindow(QWidget*parent=0);

~MainWindow();

signals:

voidcreate();

voiddis();

publicslots:

voidhaddle_create();

voidhaddle_dis();

privateslots:

voidon_pushButton_create_clicked();

voidon_pushButton_dis_clicked();

voidon_pushButton_clear_clicked();

private:

Ui:

MainWindow*ui;

};

#endif//MAINWINDOW_H

//mainwindow.cpp文件

#include"

mainwindow.h"

#include"

ui_mainwindow.h"

QMessageBox>

#include<

QDate>

QString>

QWidget>

QAbstractSpinBox>

QDebug>

QListWidgetItem>

MainWindow:

MainWindow(QWidget*parent):

QMainWindow(parent),

ui(newUi:

MainWindow)

ui->

setupUi(this);

connect(this,SIGNAL(create()),this,SLOT(haddle_create()));

//

connect(this,SIGNAL(dis()),this,SLOT(haddle_dis()));

~MainWindow()

Deleteui;

voidMainWindow:

haddle_create()

ChardateBase[]="

0123456789abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZ"

;

intnumValue=ui->

spinBox_num->

value();

intlongValue=ui->

spinBox_long->

inti;

intj;

for(i=0;

i<

numValue;

i++)

{

for(j=0;

j<

longValue;

j++)

intrandomValue=qrand()%62;

psdarray[i][j]=dateBase[randomValue];

}

psdarray[i][j]='

\0'

//字符串的末尾加'

,表示一个字符串结束

for(inti=0;

qDebug()<

<

psdarray[i]<

endl;

if((numValue!

=0)&

&

(longValue!

=0))

QMessageBox:

information(this,"

提醒"

"

创建成功"

);

Else

创建失败"

haddle_dis()//显示密码

listWidget->

addItem(psdarray[i]);

on_pushButton_create_clicked()

emitcreate();

on_pushButton_dis_clicked()//发射显示信号

emitdis();

on_pushButton_clear_clicked()

clear();

课程设计总结:

这个课设是用基于Linux下的Qt做的,由于Qt的通用性和跨平台开发的优点,我用Windows下的Qt做也可以的。

这个课设总体上不难,Qt当中已经包含了很多类,让我们编程变得十分方便,可以直接调用已经存在的类,减少了不少的工作。

我第一次做的来的时候显示有乱码,经过周老师指点后,发现是字符串没有‘\0’,不能知道这个字符串是否结束了,导致了乱码。

这个知识在学习的过程当中已经知道,但是只有自己真正的遇到问题之后才能明白知识点,“纸上学来终觉浅,绝知此事须躬行”,就是这个道理。

只有自己去实践,才能真真正正的掌握一门技术,程序员的能力是干出来的,不是做什么理论研究就可以得到了,虽然是大学的最后一年,但是我还是要抓紧时间弥补自己过去虚度的时光,把自己的编程能力再提高一个台阶。

最后,衷心感谢周振辉老师的指导和提醒。

指导教师评语:

指导教师(签字):

      年月日

课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2