APP下载

基于WPF心理检测系统的设计与实现

2020-04-15张利利李仁义惠铎铎

计算机技术与发展 2020年2期
关键词:测试人员数据管理密钥

张利利,李仁义,惠铎铎,马 进

(1.空军军医大学 航空航天医学教育部重点实验室,陕西 西安 710032;2.西安热工研究院有限公司,陕西 西安 710054)

0 引 言

健康是人力资源的重要组成部分,是人类社会发展的永恒追求[1]。然而,目前中国公民的心理健康状况却不容乐观。据世界卫生组织统计,中国目前拥有重症精神疾患病人高达1 600万人;70%左右的人处于精神“亚健康”状态,有1.9亿人需要在一生之中接受专业的心理咨询或心理治疗;在年满20岁的成年人中,有心理障碍的患者每年递增11.3%;大约有3 000万左右的17岁以下未成年人有各类学习、情绪和行为障碍,在大学生中16%~25.4%的人有心理障碍[2-3]。因此,国家明确提出了“要注重人文关怀和心理疏导”,即心理健康研究与教育要以提高国民心理健康水平,使人们过上幸福而有尊严的生活,提高中华民族的人口素质为根本目标。

1 WPF简介

WPF是微软提供的一款基于.NET Framework 3.0的图形化桌面应用设计软件[4-6]。与之前出现的其他技术相比,WPF发生了根本性的变化,WPF是基于DirectX引擎的,它支持GPU硬件的加速。高级别的线程进行绘制,提高使用者的体验。另外,它还对矢量图有超强的支持,兼容支持2D和3D绘图。微软还提供了专门的可扩展应用程序标记语言XAML,对整个界面布局进行合理的调整,而且简化了用户界面的开发过程,使用XAML来实现WPF有以下优点[7-9]:

(1)代码编写相对简单、易读性较高;

(2)可以使用拖放工具的方式生成XAML文件;

(3)提供了一种语言用来定义与程序逻辑代码分离的用户界面[10],XAML使得界面开发和功能开发代码分离,有利于开发团队的合理分工,提高开发效率。

2 系统设计

2.1 数据库设计

本系统有两个数据库,后台数据管理端采用MySql作为数据库管理工具。MySql数据库是当今使用比较多的WEB数据库系统,它支持绝大多数较流行的操作系统平台,其次由于它的体积小、多用户、多线程,可以处理大量的数据并且处理速度要比一些商业数据库快2~3倍[11]。SQL Server 2008因其具有系统集成方便、可靠性和安全性以及性能比高等优点[12]而被选为心理检测服务端数据库管理工具。

两种数据库的结构基本相同,分别建有主试人员信息表、测试人员信息表、测试计划表、测试项目表、能力和人格得分表以及原始数据表。

2.2 XAML与数据绑定

XAML的引用使得WPF下用户界面设计代码与程序逻辑代码的分离得以实现[13]。对于结构化、规范化的心理测试数据,采用XAML绑定可以显著提高存储及管理效率。数据绑定实质上是绑定目标与绑定源之间的桥梁,它实现了数据源及绑定目标的双向绑定,数据源变化时绑定目标也自动跟随数据源一起发生变化;反之,绑定目标的变化同样也会使得绑定源发生相应的变化。其绑定模型如图1所示。

每个绑定都必须具备4个组件:绑定源、绑定目标对象、目标属性和绑定源中值的路径。目标属性必须为依赖项属性,绑定源对象并不限于自定义的CLR对象,WPF数据绑定支持CLR对象和XML形式的数据。具体实现代码片段如下:

图1 数据绑定模型

……

……

Public Class PeopleInfo:INotifyPropertyChanged:

{

Private string strName;

Public string StrName

{

get{return strName;}

set{

strName=value;

OnPropertyChanged(new PropertyChangedEventArgs(“StrName”));

}

}

}

页面初始化时需要添加的代码如下:

pinfo.DataContext=((App) Application.Current).peopleinfo;

2.3 系统功能设计

该系统包括3部分内容:后台数据管理端、心理检测服务端和客户端。

(1)后台数据管理端是对各个测试站点的数据进行汇总,供高级管理员使用,具有新建主试人员、新建和修改测试计划、修订常模文件并对上传的数据进行查询、分析和打印等功能。

(2)心理检测服务端供主试人员使用,完成与后台数据管理端的数据同步、测试任务管理和统计查询。

数据同步是指将本机数据与后台数据管理端数据保持同步的功能,它包含数据的上传和下载。其中下载分为常模文件的下载、主试人员信息的下载、测试计划的下载和测试人员的下载;上传是将本站点当天做完的所有测试数据上传至后台数据管理端。此功能必须在互联网连接正常的情况下进行。

测试任务管理是对测试任务进行管理,包括设定测试人员,数据处理和结果打印。设定测试人员是将数据同步模块下载的测试计划分配给需要进行测试的人员;数据处理是对已完成测试的项目进行数据处理并给出相应的报表;结果打印有单个打印和批量打印。

统计查询是对数据库中存取的数据进行查询、分析,并给出总体报告。它包括原始数据的查询、Excel导出和总体报告的生成。原始数据的查询是查询某个人某项测试项目的数据,如答案和反应时间等;Excel导出是导出测试项目的结果数据;总体报告是生成某时间段内的总体报告以及测试合格与否的报告。

(3)客户端。

客户端是基于Android开发的,完成测试人员的注册和测试(文中不做详细介绍)。

2.4 系统的测试流程

采用B/S模式实现心理检测系统和后台数据管理端的数据同步,对于心理检测系统与客户端平板之间则是通过局域网实现通信的。

供高级管理员使用的后台数据管理端建立好主试人员信息和测试计划,其中每个主试人员都有相应的权限。心理检测系统服务端在保证互联网连接正常的情况下,下载本次的测试计划以及完成测验的所有的测试人员信息,下载完毕后,就可以断开互联网,然后通过局域网和客户端连接,等待客户端的注册信息。如果有新注册的测试人员信息,则根据其是否要求被重测或者是新用户的标识为其分配测试任务,分配完成之后,再次等待客户端对测试任务进行作答,作答完毕之后,数据会自动上传到数据库,主试人员也可以同时看到哪些测试人员已经完成任务,便可直接对其进行数据处理,给出测试结论。至此所有测试结束,然后再次在保证互联网连接正常的情况下,将已给出测试结论的人员信息再次上传至后台管理端数据库。其流程如图2所示。

图2 流 程

3 关键技术

对于本系统而言,数据需要在广域网上进行频繁的传输,那么其安全性和完整性就显得非常重要。为了实现其安全性,必须将数据经过加密之后再传输。

目前,比较流行的加密方式有两种,即对称加密算法和非对称加密算法。对称加密算法是指加密和解密所用的密钥相同,此种加密方式的加密速度非常快,适合频繁发送数据的系统。非对称加密算法即加密和解密的密钥是不同的,这种加密解密的速度非常慢,适合偶尔发送数据的系统。

本系统中的数据传输比较频繁,所以通过高级加密标准AES的对称加密算法对数据进行加密之后在网络上进行传输,从而保证了数据的安全性。

其加密流程如图3所示。

图3 加密流程

明文P:没有经过加密的数据。

密钥K:用来加密明文的密码。它是接收方和发送方协商而产生的,但不可以在网络上传输,否则会导致密钥泄露。

AES加密函数:把明文P和密钥K作为加密函数的参数输入,则加密函数会输出密文C。

密文C:经加密函数处理后的数据。

本系统使用Rfc2898DeriveBytes(pwd,salt)类,即通过使用密码、salt值派生密钥。其中pwd为派生密钥的密码,salt为用于派生密钥的密钥,其大小必须等于或大于8字节。

实现如下:

AesManaged aes=new AesManaged();

byte[] salt=new byte[8];

……

Rfc2898DeriveBytes k1=new Rfc2898DeriveBytes(pwd,salt);

aes.key=k1.GetBytes(aes.Keysize/8)

MemoryStream ms=new MemoryStream();

cs=new CryptoStream(ms , aes.CreateEncryptor(), CryptoStreamMode.Write);

retrun ms.toArray(); //返回加密后的数据流

数据的完整性是通过事务来实现的,它是一个操作的集合,这些操作要么执行成功,要么执行失败,回滚到最初的状态,从而保证了数据的完整性。其操作流程如图4所示。

图4 事务的操作流程

经常用到的方法有以下三种[14]:

(1)直接将数据操作的语句写入到sql中。

在存储过程中使用BEGIN TRANS,COMMIT TRANS,ROLLBACK TRANS实现。

优点:一个单独的操作就可以包含所有的事务逻辑;运行事务的性能最好;独立于应用程序。

缺点:仅在数据库调用中使用事务的上下文;数据库代码和数据库系统的自身有关。

(2)使用ADO.Net实现。

使用ADO.Net实现,这种方式的优点是既可以选择在中间层也可以选择在数据层来实现事务的管理。

优点:简单性;数据库代码与数据库系统无关。

缺点:事务不能在多个数据库连接中调用。

(3)COM+事务。

使用DTC作为事务管理器和事务协调器在分布式环境中运行事务。

本系统选用ADO.Net实现事务,具体代码如下:

Try()

{

SqlConnection sqlconn=new SqlConnection (strcon);

//建立连接

SqlCommand cmd=new SqlCommand();

cmd.Connection=sqlconn;

SqlTransaction sqltran; //创建事务

sqlconn.Open();

sqltran=sqlconn.BeginTransaction(); //开始事务

cmd.Transaction=sqltran;

操作1 //一系列操作

操作2

……

Sqltran.Commit(); //提交事务

}

Catch()

{

Sqltran.Rollback(); //事务回滚

}

4 应用效果

首先,本系统的功能模块之间的耦合度低,分工明确,使用简单,用户经过简单的学习就能很快掌握系统的使用。其次,心理检测的主要依据是数据,本系统服务端在与后台数据库进行数据同步以及分配测试任务时,当数据库中的数据超过上万条时,系统的运行效率就会很低,通过使用事务可以大大提高系统的运行效率,大概时间会缩短到不采用事务时的68%。

5 结束语

着重论述了在Windows环境中基于WPF的心理检测系统的设计和实现,介绍了通过XAML技术实现界面与逻辑代码完全分离,既可以使用少量的代码实现复杂和美观的界面布局,还可根据显示器的大小自动调节界面的呈现。结果表明,基于WPF的心理检测系统运行稳定、界面美观、功能强大,对其他项目的研发具有一定的指导意义[15]。

猜你喜欢

测试人员数据管理密钥
企业级BOM数据管理概要
定制化汽车制造的数据管理分析
幻中邂逅之金色密钥
幻中邂逅之金色密钥
航发叶片工艺文件数据管理技术研究
保证渗透测试成功实施的方法分析
Android密钥库简析
数据挖掘在学生成绩数据管理中的应用研究
数据挖掘在学生成绩数据管理中的应用研究
浅析软件测试中的心理学应用