借助Matlab GUI / SQL Server开发的实验室数据集管理软件
2015-10-15孙钦蕾李爱华范江玮韩小刚
孙钦蕾 李爱华 范江玮 韩小刚
军械工程学院 河北石家庄 050003
实验室作为理论联系实际的教学平台在教育教学中发挥着至关重要的作用。信息化时代的到来,催生了海量、庞杂的实验数据,冲击着传统的人工录入、人工整理、人工存储等实验室工作,人工操作已显得力不从心。如何运用科学管理的原理,选择正确的管理方法,采取先进的管理手段逐步实现实验室管理的规范化、现代化和科学化,以最大功效实现实验室在学校教育教学中的目标,是摆在我们面前的一个重要的科研课题。因此,我们需要一个专门的数据集软件管理数据,它能对数据进行加密管理,保障数据的安全性,能对其进行有序存储,以便随时调用、处理,如此方可事半功倍,大大提高工作效率。为了实现这一目标和进一步加强计算机管理手段在实验室管理过程中的应用,我们开发了一款基于Matlab GUI/SQL Server的集实验数据的录入、整理及保存为一体的实验室数据集管理软件, 它充分利用Matlab强大的数据处理能力[1-4]和SQL Server数据库的海量数据管理能力[5-9],将项目的实验信息整理入库,数据库中所有实验数据都可以随时调出,并可以“原始数据”“时域波形”或“频域波谱”的形式进行查看,在实际应用中起到了良好的作用和效果。
1 实验室数据集管理软件的特点
1.1 友好的实验记录输入界面
在一个具体的项目实验中,实验人员需要将实验名称、实验目的、实验原理、实验数据、实验结果等记录下来,对于有图形分析的实验还需画图分析。这就要求开发的软件内容简单明了、操作简便快捷,本文开发的实验室数据集管理软件,它具有友好的实验记录输入界面,很方便实验室管理人员及实验人员操作。
1.2 方便有序的存储、管理实验数据
对于杂乱无章的数据,手工存储不但工作量大,而且容易混淆、丢失数据。做一个实验花费了许多财力与精力,要是在实验数据的处理、分析等管理工作上出现错误,就会前功尽弃,一切等于零。因此用户需要一个友好、高效、安全的实验数据管理机制,在保证实验数据完备的同时提高工作效率。
根据用户需求,使用Matlab GUI环境编写实验数据集软件主框架,在友好的人机界面的基础上,充分利用Matlab强大的数值计算能力和丰富的绘图功能,对数据进行处理、分析以及展示[4];同时用Matlab自带的数据库工具箱,使Matlab与Microsoft SQL Sever 2000创建的数据库进行数据交流,将实验数据安全的存储在数据库中,并通过调用、查询、修改等方式管理实验数据,这样可以满足用户记录、管理海量实验数据的需求。[2]
2 软件开发流程
2.1 需求分析
为了设计出合理的实验室管理软件,需要了解实验管理员、实验教师以及实验学员不同人群的需求,通过对上述人员的调查分析,笔者了解到实验室管理软件需要具备三大模块(如图1所示)。第一,实验项目的管理。能够实现便捷的选择、编辑、实验项目,通过智能选择,无须实验教师讲解,学员能便捷清楚了解实验的目的。第二,实验客观条件选择。为便于实验室管理员的实验室管理,对实验信息统计、存储,需要设计本环节,主要记录时间、地点、人物以及设备信息,当出现问题时便于追查。第三,实验内容记录。学员通过实验,记录相应的实验过程、实验结果、实验结论及实验数据,并能够随时调用数据观察数据波形,最后生成实验报告。
图1 软件三大模块
2.2 开发流程
根据需求分析,设计者基本上掌握了软件要素,形成了总体方案、需求分析、模块化设计、代码编写、软件测试、软件试用、推广应用六部分的设计思想。管理软件开发流程如图2所示。
图2 实验室数据集管理软件开发流程
3 软件设计
3.1 模块设计
3.1.1 实验项目模块设计
实验项目包括实验列表编辑及实验项目生成两部分,模块情况如图3所示。实验列表编辑中有列表框1个,按钮4个;实验项目生成中有文本编辑框2个。实验项目模块主要借助Matlab语言利用GUI界面编程实现实验基本文字信息的处理,包括实验项目的调入、显示、选择、保存、新建、删除等功能。
图3 实验项目设计
3.1.2 客观条件模块设计
客观条件模块包含时间、地点、人物、设备几大要素,模块情况如图4所示。
图4 客观条件模块设计
在编程过程中主要关注以下几点。
第一,实验日期。实验日期包括开始日期和结束日期,每个时间点设置年、月、日3个下拉框,编程方法类似,在CALLBACK函数程序代码中主要调用set(handles.popupmenu_××,'Value',get(hObject,'Value'))命令完成(“××”分别用年、月、日替代)。注意实验结束时间一定要大于等于开始时间,因此需要在程序中附加条件语句。
第二,实验地点、责任人。需要手工输入,因此调用静态文本编辑框。
第三,实验人员、实验设备。在学期内实验学员基本不变,因此便于操作学期初将实验人员信息录入,本软件设计成可选择形式。具体方法是:在GUI界面设置两个“listbox”,其中左侧“listbox”包含所有学员姓名,当实验人员记录本实验小组姓名时,只需要调用相应班级中的学员名单,通过程序控制选择班级学员中本组名单到右侧“listbox”,此时左侧“listbox”剔除此名单。为防止出现误操作或者临时实验小组成员调整情况,需要将选择设置成双向,即可以将学员从左侧移除到右侧,也可以将右侧实验名单移除到左侧,此操作通过编程设计点击中间的移动箭头实现,实验人员GUI界面如图5所示。实验设备在一定的时期内也存在固定性,因此采取了和实验人员类似的程序处理方法,实验设备GUI界面如图6所示。
图5 实验人员GUI界面
图6 实验设备GUI界面
3.1.3 内容记录模块设计
内容记录模块包含实验描述、实验结果以及实验数据处理几部分(如图7所示)。
图7 内容记录模块
(1)实验描述包含两种情况:第一,理想情况下实验反应的现象,一般由实验教师提前存储到数据库中,当学员进行完实验,可以调用相应的文件直接打开查看或者将文件导入到文本框中显示。学员根据实验描述检验实验进展是否正常。第二,学员对自己实验出现的其他现象进行描述,学员在数据库文件中自行填写实验描述,如果查看本组学员实验描述情况,在GUI界面中通过查看实验描述文件或者导入实验描述文件两种方式实现,其过程实质是“导入实验描述文件”按钮是将导入的文件全路径保存在一个全局变量中,“查看实验描述文件”按钮通过此链接打开这个文件。(2)实验结果包括实验报告的撰写以及实验报告的查看、导入处理。设计思路类似于实验描述。(3)数据处理。数据处理完成数据导入、查看、删除以及实时查看波形功能。
3.2 数据库设计
3.2.1 数据库表的设计
在SQL Server的企业管理器中新建一个数据库data。根据用户需求以及软件界面特征,在新建的数据库中建立4个表存储实验记录,分别是基础表(basic)、人员表(person)、设备表(equipment)及数据表(database)。基础表中每一个记录都表示一个实验实体,记录实验名称为主键,它与表中其他字段都有唯一的对应关系。然而,在软件界面可以看到,使用3个列表框的实验信息(人员、设备、数据),与实验名称是一对多的关系。因此,使用另外3个表(人员表、设备表及数据表)对这些信息进行记录。数据库表关系图如图8所示。
图8 4个表的约束关系图
基础表中的主键(mingcheng)与其他3个表中的“mingcheng”外键进行关联,用来删除关联记录。当基础表中的某实验记录删除后,其他3个表的与之“mingcheng”字段相同的记录均被删除。
把一次实验名称、实验目的、实验日期、实验地点、实验人员、实验设备都相同的实验记录定义为一个实验实体。在软件中需要对实验实体进行新建、打开、保存操作时,需要根据当前实验实体的保存状态进行不同的操作。因此需要定义一个全局变量来监控当前实验实体的保存状态。
用全局变量SAVE_STATUS(见表1)监控当前实验实体的保存状态。
表1 SAVE_STATUS值表
“打开”和“新建”实验实体的流程图可以表示为图9所示。
图9 打开(新建)保存界面状态流程图
一个实验实体对应数据库表中的一个记录。本数据集软件以实验实体为单位进行记录并存储。保存时用SQL的insert语句把实验记录插入到数据库表中。读取时用SQL的select语句把数据库表中的记录读入软件,并显示在界面中。
3.2.2 ODBC的设置
ODBC是一种编程接口,使应用程序访问以结构化查询语言(SQL)作为数据访问标准的数据库管理系统。所谓数据源,就是要操作的数据库。要找到数据库,必须给出数据库所在的目录、磁盘和服务器。在数据库建立完成的基础上,用以下步骤完成ODBC设置,实现Matlab对数据库的访问。
(1)控制面板→管理工具→ODBC数据源→用户DNS(如图10所示)。
图10 数据源管理器
(2)点击“添加”后选择“SQL Server”,点击完成,进入如图11所示页面。
图11 数据源DSN配置
数据源名称可以根据程序要求任意命名,可以与数据库名相同,也可以不相同,这里为“data”,与数据库名相同。
服务器必须是SQL Server已经打开的服务器名称,在SQL Server的“服务管理器”中可以查询(如图12所示)。
图12 服务管理器
(3)将默认的数据库设为新建的“data”(如图13所示)。
(4)测试数据源的连接,成功(如图14所示)。
3.2.3 数据库调用
根据用户需求,只有实验记录的保存、载入和删除部分的代码涉及数据库的操作。并且保存和载入代码可能会在多个控件的回调函数中调用,因此把这两部分的代码写成单独的函数供控件回调函数的调用。图15给出了保存函数程序主流程。
4 数据集软件应用实例
4.1 实例GUI界面
在数据集软件界面上以双缝干涉实验及牛顿第二定律为例进行数据录入、处理及画图实验(如图16所示),并将实验数据存入了数据库中,实现了数据的安全存储,并通过Matlab对其调用、修改等管理,实现了此数据集软件的功能。
图16 软件应用实例界面图
数据库表如图17所示。
4.2 建立数据库表
图17 数据库表
4.3 实验数据
实验中使用示波器TEK-DPO4104或TEK-DPO-7254c采集及存储数据,保存下来固定格式的csv数据文件。在本程序中,实验数据部分就可将这些数据文件导入到程序中,以方便使用者随时以原始数据、时域谱或频谱的形式查看。
点击实验界面中的“导入数据”按钮,在打开文件对话框中选择要导入的数据文件,点击“确定”完成操作。导入实验数据成功后,右侧列表框中显示出已经导入的数据文件(如图18所示)。
图18 实验数据界面
在列表框中双击任意数据文件,可以查看此文件的时域和频域谱图,并可以使用Matlab自带工具对谱图进行操作[10](如图19所示)。
图19 数据处理图
5 结束语
通过分析传统实验室管理的特点,指出传统实验室管理中信息的复杂性、数据处理的庞杂性以及实验要素的多样性,从而导致实验室工作人员任务重、工作量大,学员实验规范性差、难于管理,数据存储安全性差。基于此,本文开发了一套基于Matlab GUI/SQL Server的实验室数据集管理软件,它通过Matlab实现对数据的调用、修改等管理,软件开发界面友好,方便易用。实践表明,实验室数据集管理软件解决了传统实验室中存在的问题,实现了实验室数据管理的科学化、规范化、现代化,大大减轻了实验室工作人员及学员的工作量,保障了数据存储的安全性,具有一定的推广价值。
[1]董振海.精通MATLAB7编程与数据库应用[M].北京:电子工业出版社,2007.
[2]苏晓生.掌握MATLAB 6.0及其工程应用[M].北京:科学出版社,2001.
[3]罗华飞.MATLAB GUI设计学习手记[M].北京:北京航空航天大学出版社 2011.
[4]胡晓冬,董辰辉.MATLAB从入门到精通[M].北京:人民邮电出版社,2010.
[5]马桂婷,武洪萍,袁淑玲.数据库原理及应用(SQL Sever 2008版)[M].北京:北京大学出版社,2010.
[6]高金兰,章锋.数据库原理与SQL Sever应用[M].武汉:武汉大学出版社,2007.
[7]陈明.数据库系统及应用: SQL Sever 2000[M].北京:清华大学出版社,2007.
[8]杨章伟.精通SQL语言与数据库管理[M].北京:人民邮电出版社,2008.
[9]李伟红.SQL Sever 2000数据库及应用[M].北京:水利水电出版社,2007.
[10]吴大正.信号与线性系统分析[M].北京:高等教育出版社,2006.