基于Qt与Android的实验查错系统设计

2017-04-10 12:05戴莉萍
实验室研究与探索 2017年1期
关键词:窗体界面设计控件

戴莉萍

(江西师范大学 软件学院,南昌 330022)

基于Qt与Android的实验查错系统设计

戴莉萍

(江西师范大学 软件学院,南昌 330022)

在高等教育实验过程中,学生通过错误处理来提高相应技能。结合当前学生查阅习惯和Android软件开发技术,以提高大学实验教学效果为目的,设计了一套基于Qt与Android的实验错误查询系统。介绍了该系统的开发平台、结构组成、数据结构以及关键技术。该实验查错系统通过快速有效搜索所出现问题的解决方案,很好地培养了学生的独立性,加快了实验进度,也进一步推动了实验改革。

查错系统; Qt技术; Android; XML操作

0 引 言

现代高等教育非常重视学生实践能力的培养,例如计算机专业课程中实验环节经常占据了整个教学活动的一半。学生在实验过程中难免会遇到各种问题,出现各种错误;这时候往往需要指导教师指出错误所在,提供解决方法。但这其中受到很多因素的限制,例如调错时间长短、实验人数多少、实验难度大小、是否新出现的错误等,一定程度上影响着实验的完成效果。本文中的实验查错系统就是将以往实验过程中出现的错误以及解决方法一一记录下;学生在实现过程中可以自行查找问题的解决方法,既加快了实验进度,又培养独立思考能力,使得实验效果事半功倍。

1 查错系统的设计

该实验查错系统目前是针对嵌入式课程教学实验开发的,这也是由于该门课程实验教学特殊性所决定的。一般基础性计算机课程例如数据结构、C语言程序设计等,实验教材种类较多且齐全;实验环境较为单一,通常一台计算机和一套编译环境足以;错误解决途径比较多,如网络资源非常丰富。而嵌入式实验教学则有着不同的情形,实验教学平台的多样化使得实验教材的选择性非常窄;实验环境较为复杂,例如PC机、嵌入式开发板、各种外设及其驱动等;错误解决途径较少,网络资源少且开发板的技术支持往往滞后。因此这门课程的实验教学需要更实用的计算机辅助教学系统来支持[1]。

系统中的错误信息及其解决方法来自于课程实验指导教师和学生;由指导教师收集并整理,按照一定的数据格式将其入库保存。学生在实验实施过程中遇到问题时,可以根据关键词搜索出相关的处理方法,然后一一阅读,解决问题。图1描述了该系统的结构设计。

图1 系统结构设计

由于PC端的开发环境与查错系统频繁切换,一定程度上会降低效率,而且手机阅读非常普遍,故该实验查错系统增加了Android功能,而Android端功能的描述则是本文的重点。

PC端的功能主要以大量数据处理和存储为主,当然也包含了查询功能;而Android端则主要是查询功能的实现。由于PC端数据格式为关系型数据储存,这里使用SQL Server;而Android端数据格式为层次型数据存储,即XML,因此需要格式转换功能,将关系型数据格式转换为层次型数据格式[2-5]。

本系统的目的主要体现在3个方面:① 加强学生对于错误文档化重要性的认识;② 加强学生独立思考和解决问题的能力;③ 提高单位时间内的实验效果。

2 查错系统的数据结构

XML是指可扩展标记语言,是各种应用程序之间进行数据传输的最常用工具,并且在信息存储和描述领域中变得越来越流行。XML数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法,使数据更可用且更有用,从而可供各种阅读设备使用[6-7]。

本查错系统的Android端数据结构采用了XML层次型数据库,根据系统的需求定义了两个XML文件,1个关键词搜索文件和1个错误解决方案的数据文件。关键词搜索文件papers.xml较为简单,存放了各个错误问题名称,其简化后的结构如下所示:

该关键词搜索文件中各个节点只有属性值,而没有文本值,即XML空元素,这是便于之后的Qt程序中使用XPath技术来实现模糊查询。另一个是存放每个问题的已有解决方法papercontent.xml文件,其内容简化后的结构如下:

对比下PC机上的IP地址设置和实验箱的IP地址设置,是否在同一个地址段,并且看看VS.NET环境下与设备连接的配置是否正确,例如传输方式设置为TCP连接传输

一个内核对应一个SDK,否则无法进行通信和建立交叉编译环境。而且一个PC机上最好安装一个SDK,两个以上可能会存在冲突

当关闭当前的解决方案时,连接会终止。当重新打开一个解决方案时,需要重新进行运行已经拷至实验箱上的用于网络连接的那3个程序

可能是因为开发板箱上的电池没有电,可以换电池

ActiveSync软件未能正确安装,例如与WINCE系统版本不匹配,建议使用实验手册中的工具,不要使用其他软件

实验箱设备配置不正确,按照实验手册中的进行相应设置,必要时可以重新烧写设备光盘中自带内核

关闭PC上的防火墙试一试

与搜索文件相比,正文的XML数据层次多了一层,即para节点,且该节点是文本节点,每个节点将其问题的解决方法一一进行描述。从节点来看,两个文件的关联之处正在于paper节点的topic属性。

大多数与XML相关的API在Android上得到了很好的支持。而且对于Android移动设备而言,由于设备内存有限,文件整体不算太大,因此本系统将采用DOM技术来处理XML文件[8-9]。

3 查错系统的界面设计

本查错系统采用Qt Creator来完成系统在Android上的创建、管理、编译和部署。Qt最大的优势在于跨平台开发,目前的Qt版本已经能较完整地支持Android;在复杂运算上面的效率也非常不错[10-12]。

手机应用开发中的界面设计不同于PC应用开发中的“所见即所得”,其中很重要的一个问题就是如何实现屏幕自适应,即使得程序窗体自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局。Qt提供了布局管理类来负责排列窗体上的控件,本查错系统就充分利用了Qt的显示控件、命令控件和布局控件,结合程序编码灵活地完成Android端的界面设计。

以关键词搜索界面为例来说明界面设计的实现过程。首先将需要使用到的控件拖至窗体上,此时不需要进行任何排列,如图2所示。

图2 界面初始设计

由图2可见,使用了文本框、标签、按钮以及网格布局GridLayout等控件。在该窗体的初始化中添加如下的关键布局代码:

DialogUITest1::DialogUITest1(QWidget *parent) :

QDialog(parent),

ui(new Ui::DialogUITest1)

{

ui->setupUi(this);

ui->namelabel->setText(tr("关键词:"));

ui->searchbtn->setText(tr("查询"));

ui->mainlayout->setSpacing(2);

ui->mainlayout->setMargin(2); ui->mainlayout->addWidget(ui->namelabel,0,0,1,1,Qt::AlignCenter); //行号,列号,行宽,列宽。

ui->mainlayout->addWidget(ui->namelinet,0,1,1,3);

ui->mainlayout->addWidget(ui->searchbtn,1,0,1,4);

ui->mainlayout->addWidget(ui->resultlstw,2,0,5,4);

setLayout(ui->mainlayout);

}

此外,调用该窗体时不需要计算屏幕的分辨率,直接显示为全屏即可。运行效果如图3所示。

使用布局控件的好处在于当程序在不同平台上运行时,能够自动调节窗体里所有控件的大小和尺寸。因此在Android环境下,可不用修改布局源码,而直接使用。在实现过程中如果没有使用到UI类,则可以在源文件中自定义各个控件,在使用时实例化并且按照一定的布局进行排版,这样也可得到同样的运行效果,这也体现出Qt开发环境的强大。

图3 初始界面运行效果

4 查错系统的功能实现

Android端的查错系统主要有关键词搜索和结果显示两个子功能,其操作对象就是之前的XML数据文件。在Qt中提供了Qt XML模块实现了对XML数据的处理,主要是服务于两种操作XML文档的方法:DOM和SAX。其中DOM将XML文档转换成应用程序可以遍历的树形结构,可以随机访问其中的节点,且语句简单易懂,本系统采用的就是DOM方法[13-15]。

Android端子系统对于数据的操作主要在于查询和读取,而XML数据的查询则需要用到XPath技术。XPath用于XML文档中通过元素和属性进行导航,并使用谓词表达式查找某个特定的节点或包含某个指定值的节点。下面这段关键代码描述了如何根据关键词对XML文件进行模糊查询,即“查询”按钮点击事件:

QFile file(":/xml/papers.xml");

query.setFocus(&file); query.setQuery("papers/paper[contains(@topic,'"+ui->namelinet->text()+"')]");

query.evaluateTo(&sResult);

xmlstr="";

xmlstr=xmlstr+"";

xmlstr=xmlstr+sResult;

xmlstr=xmlstr+"";

xmldoc.setContent(xmlstr);

varNodes = xmldoc.elementsByTagName("paper");

for (int i = 0; i < varNodes.count(); i++)

{

node = varNodes.at(i);

topicstr = node.toElement().attribute("topic");

ui->resultlstw->addItem(topicstr);

}

代码中使用了XPath的路径表达式来进行节点定位,并使用了contains关键词来进行属性topic的模糊匹配;将查询出来的sResult字符串通过头尾字符连接形成1个完整的XML数据片段,通过循环遍历将属性值一一读取并显示出来,运行效果如图4所示。

图4 关键词搜索运行效果图

从运行效果可见,原XML文件有6个节点,而最终结果只显示了2个节点,这是由于进行了条件过滤。点击任一条记录,则会出现另一个窗口,列出了该问题的可能解决方案。这里涉及到Qt窗体之间的消息传递,可以通过信号与槽机制,也可以通过全局变量的设置;由于两个窗体之间传递的值是单个,故系统中采用了后者。结果显示窗体的代码与关键词搜索代码比较类似,其关键代码如下所示:

QFile file(":/xml/papercontent.xml");

query.setFocus(&file); query.setQuery("papers/paper [@topic='"+searchdata+"']");

...

for (int i = 0; i < varNodes.count(); i++)

{

node = varNodes.at(i);

topicstr = topicstr+QString::number(i+1)+":"+node.toElement().text()+" ";

ui->contentptxte->setPlainText(topicstr);

}

代码中使用了XPath的精确查询,并且由于界面设计使用的是文本框,而不是列表框,故无法一行一行显示,因此,在内容显示增加了数字符号和换行符。其运行效果如图5所示。

图5 显示解决方案

图5中列出了解决该问题的可能方案。由于学生在实验过程中还可能会出现未发现的问题,因此xml数据文件的更新在PC端完成,此时Android端需要重新部署并下载。另一方面,由于Qt的可移植性,该套系统稍加修改就可运行在嵌入式实验平台上,从而成为一个较好的实验案例。

5 结 语

本文通过对实验教学现状的分析,设计了基于Qt的实验查错系统;详细描述了该系统Android端的实现过程与重点技术。该系统能够很好地成为教师实验指导中的助手,并且学生不仅可以通过该系统快速得到各种问题的解决方法,而且通过该系统也可以很好地了解Qt在Android上开发APP的相关知识。与此同时,该查错系统为实验教学提供了新的思路和方法,在未来的应用过程中仍有可改善的空间。

[1] 戴莉萍,黄龙军,胡国雄. 浅析嵌入式实验中错误的文档化[J].实验科学与技术, 2014,12(5):49-51,82.

[2] 熊照雷,闫慧泽,孙 立,等. 基于Android平台的实验数据综合处理系统的设计和实现[J]. 实验室研究与探索, 2014,33(12):121-125.

[3] 倪红军. 基于Android平台的消息推送研究与实现[J]. 实验室研究与探索, 2014,33(5):96-100.

[4] 李东炜,刘镇章. 基于Android智能手机的实验室预约系统设计[J]. 实验技术与管理, 2012,29(12):196-198,202:

[5] 唐 璐,田传耕,祖茂衡,等. 基于Android的实验设备远程控制系统设计[J]. 实验技术与管理, 2015,32(5):150-153.

[6] 丁跃潮,张 涛. XML实用教程[M]. 北京:北京大学出版社,2006.

[7] 孙更新,李伟超,李玉玲.XML编程与应用教程(2版)[M].北京:清华大学出版社,2014.

[8] 李瑞花, 基于Android的XML解析技术的分析[J]. 计算机时代, 2010(12):31-33.

[9] 栾咏红. 基于Android的XML解析器的分析与比较[J]. 南京晓庄学院学报, 2011(6):98-100.

[10] 殷立峰,祁淑霞,房志峰.Qt C++跨平台图形界面程序设计基础[M].北京:清华大学出版社,2014.

[11] 刘汇丹,芮建武,姚延栋,等. 基于Qt的国际化图形用户界面设计与实现[J]. 中文信息学报, 2006,20(4):94-99.

[12] 安 峰. Qt平台上的动态可定制界面设计[J]. 单片机与嵌入式系统应用, 2014(3):24-25,28.

[13] 魏 楠,张沛朋.基于XML技术的数据库查询设计的讨论[J].高等函授学报(自然科学版),2012,25(4):81-82.

[14] 王静婷,王艳丽,王振辉.半结构化数据装载到数据仓库的设计与实现[J].计算机与数字工程,2014,42(11):2198-2201.

[15] 郭东峰.基于DOM的Web数据抽取研究[J].科技创新与应用,2013(18):77.

Design of Query System for Experimental Errors Based on Qt and Android

DAILi-ping

(School of Software, Jiangxi Normal University, Nanchang 330022, China)

During the experiment, students improve their skill by overcome all kinds of errors. Considering their current reading habits and Android development technologies, a query system for experimental errors has been designed and implemented to benefit the experimental procedure. This paper introduces the developing platform, modules, data structure and key technologies. This query system can search the corresponding solutions effectively. The system could train students' independence and fasten the experimental procedure, and promote experiment teaching reform.

error query; Qt technology; Android; XML manipulation

2016-04-28

嵌入式实验课程错误管理系统的研究与实现(JXJG-14-2-20)

戴莉萍(1979-),女,江西南昌人,讲师,主研领域:软件工程、数据库技术。E-mail: march_dai@163.com

TP 311.1

A

1006-7167(2017)01-0132-04

猜你喜欢
窗体界面设计控件
中医养生APP界面设计
“共享员工”平台界面设计
中国传统元素在界面设计中的应用
面向智能手机的UI界面设计
试谈Access 2007数据库在林业档案管理中的应用
关于.net控件数组的探讨
ASP.NET服务器端验证控件的使用
巧设WPS窗体控件让表格填写更规范
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
WinCE.net下图形用户界面的开发