电导法测定乙酸解离常数实验数据处理软件设计
扫描二维码
随时随地手机看文章
引言
高校实验是传授知识和技能、训练科学思维和方法、培 养科学精神和品德、全面实施高等教育的重要环节,在高等 教育中起着无法替代的作用。物理化学实验是一门独立的基 础实验课程。随着电子技术、计算机技术在高等教育中的应用, 高校的物理化学研究已经渗透到自然科学的各个领域,并派 生了许多与物理化学相关的交叉学科,因此,物理化学实验 是通往现代科学研究的桥梁。物理化学实验的主要目的是使 学生初步了解物理化学的研究方法与技能,学会重要的物理化 学性能测定,熟悉物理化学实验现象的观察和记录、实验条 件的判断和选择、实验数据的测量和处理、实验结果的分析 和归纳等一整套实验方法,加深对物理化学基本理论的理解, 培养学生严谨认真、实事求是的科学态度和作风以及解决实 际化学问题的能力。
为此,本文给出了如何用Visual FoxPro 6.0软件来编写 电导法测定乙酸解离常数的具体方法。
1弱电解质电离常数的测定
1.1测定原理
一般情况下,当AB型弱电解质在溶液中的电离达到平 衡时,电离平衡常数Kc与原始浓度C和电离度a有以下关系:
(1)
由于在一定温度下,Kc是常数,因此,可以通过测定AB 型弱电解质在不同浓度时的a值来通过式(1)求出Kc。
醋酸溶液的电离度可用电导法来测定。一般情况下,将 电解质溶液注入电导池内,溶液电导G的大小与两电极之间 的距离/成反比,与电极的面积A成正比:
G=kA/1(2)
式中,A〃为电导池常数,以Ke”表示;为电导率。其物理意 义表示在两平行且相距1 m,面积均为1 m2的两电极间,电 解质溶液的电导,其单位以S • m-1表示。
由于电极的/和A不易精确测量,因此,实验中可用一 种已知电导率值的溶液,先求出电导池常数Kce,„然后把待测 溶液注入该电导池,测出其电导值,再根据式Q)求出其电导率。
溶液的摩尔电导率是把含有1Q电解质的溶液置于相距 为1 m的两平行板电极之间的电导。通常以&表示,单位为 S • m2 • mol-1^摩尔电导率与电导率的关系为:
TOC \o "1-5" \h \z
/Km
以CAm对1/Am作图,其直线的斜率为(K3)2Kc。这样, 若已知Km值,就可求得Kc。
1.2实验步骤
基于上述原理,所确定的实验步骤如下:
调整恒温槽温度为25.0笆±0.3 °C。
用洗净、烘干的叉形管1支,加入20 mL的0.1 mol/ L醋酸溶液,测其电导率。
⑶用吸取醋酸的移液管从电导池中吸出10 mL溶液弃去, 用另一支液管取10 mL电导水注入电导池,混合均匀,等温 度恒定后,测其电导率。如此操作,共稀释四次。
(4)倒去醋酸,洗净电导池,然后用电导水淋洗。最后注 入20 mL电导水,测其电导率。
2软件设计
2.1软件开发工具的选择
本软件使用 Visual FoxPro 6.0 开发制作。Visual FoxPro
6.0是一个强大的Windows平台开发工具,具有面向对象编 程的特点和可视化的编程方法,Visual FoxPro 6.0可提供对象 和事件处理模式,并可利用面向对象编程(OOP)的特点,使用 户不用加入太多代码,就可方便地写出具有模拟操作系统功能 的、标准的Windows程序。Visual FoxPro 6.0是以关系模型 为基础的、功能强大的数据库管理系统(DBMS),它能够迅 速而简单地建立用户的数据库,从而方便地使用和管理数据。
Visual FoxPro 6.0是自含型数据库管理系统,是解释型和编译 型混合的系统,可以解释方式定义并操纵数据库,也可以将 操作过程编写为程序进行编译,然后脱离系统直接运行,由 它生成的软件,小巧灵活,使用方便,占用内存小[6]。
2.2系统功能
本系统主要具有以下几方面的功能:
2.2.1实验选项信息的输入、修改与保存
本系统可以随时方便地输入、修改实验选项信息。由于 实验结果会受到环境的影响,因此,需要客观准确地保存室温、 大气压、实验时间、所用仪器编号等实验选项信息,以方便 以后的数据分析。
2.2.2实验数据的输入、计算、保存与显示
本系统可以方便地输入测定的实验数据,并精确地计算 和明确地显示。本文的实验过程需要测定乙酸的电导率、水 的电导率等数据,由于这些数据通常都以科学计数法表示, 输入比较困难,同时,这些数据都比较小(在10-5左右),而 计算的结果可能会达到10-10左右,这就给数据的输入、计算、 保存、显示都提出了很高的要求。
2.2.3实验数据的输出与读取
本系统对于测定的实验数据可随时方便地保存与读取。 此实验需要测定的数据较多,实验用时较长,对实验数据方 便的保存与读取将会让实验过程变得简单、轻松,减少不必 要的重复,同时也保证了数据的准确性。
2.2.4实验结果的显示
通过本系统可以快速计算出实验结果并显示。通过结果 的显示,有利于发现误差较大的数据,并及时修改。
2.2.5实验报告单的输出
本系统可以方便、快速地生成专业的实验报告单。记录 实验者、实验温度、室温、实验时间、所用仪器,实验结果 等与实验相关的所有信息,并对实验数据进行统计处理。
2.3关键程序设计及说明
根据以上实验需求,本系统可由实验选项信息输入、实 验数据输入、实验结果显示、实验报告单输出等四大模块组成。 2.3.1实验数据的输入与计算程序
由于实验中测定的数据是以科学计数法表示的,为了方 便、快速输入,本设计采用文本框加微调按钮的方式输入。 而对于显示,由于在计算机中用科学计数法表示的数字将保 留15位有效数字,不利于查看,因此,本系统将计算的结果 四舍五入保留4位有效数字后转化成文本类型,以便于观察。 具体代码如下:
**以下是输入数据验证程序
if thisform.spinner1.value>100 or thisform.spinner1.
value<0
messagebox(" 您输入的 温度 数值不正确,请检查
更改!",0+16," 错误提示 ")
thisform.spinner1.setfocus
return 0
endif
if thisform.text3.value<=0
messagebox(" 您输入的 乙酸溶液浓度 数值不正确,
请检查更改!",0+16," 错误提示 ")
thisform.text3.setfocus
return 0
endif
if thisform.text2.value<0
messagebox(" 您输入的 电导水电导率 数值不正确,
请检查更改!",0+16," 错误提示 ")
thisform.text2.setfocus
return 0
endif
if thisform.text2.value=0
P=messagebox(" 您输入的 电导水电导率为 0 ,是否
继续?",4+32+256," 提示信息 ")
if p=7
thisform.text2.setfocus
return 0
endif
endif
if thisform.text1.value<0
messagebox(" 您输入的 原溶液电导率 数值不正确,
请检查更改!",0+16," 错误提示 ")
thisform.text1.setfocus
return 0
endif
if thisform.text1.value=0
p=messagebox(" 您输入的 原 溶液电导率为 0 ,是
否继续?",4+32+256," 提示信息 ")
if p=7
thisform.text1.setfocus
return 0
endif
endif
if thisform.text4.value<0
messagebox(" 您输入的 第 一 次稀释溶液电导率 数
值不正确,请检查更改!",0+16," 错误提示 ")
thisform.text4.setfocus
return 0
endif
if thisform.text4.value=0
p=messagebox(" 您输入的 第 一 次稀释溶液电导率
为 0 ,是否继续?",4+32+256," 提示信息 ")
if p=7
thisform.text4.setfocus
return 0
endif
endif
if thisform.text5.value<0
messagebox(" 您输入的 第 二 次稀释溶液电导率 数
值不正确,请检查更改!",0+16," 错误提示 ")
thisform.text5.setfocus
return 0
endif
if thisform.text5.value=0
p=messagebox(" 您输入的 第 二 次稀释溶液电导率
为 0 ,是否继续?",4+32+256," 提示信息 ")
if p=7
thisform.text5.setfocus
return 0
endif
endif
if thisform.text6.value<0
messagebox(" 您输入的 第 三 次稀释溶液电导率 数
值不正确,请检查更改!",0+16," 错误提示 ")
thisform.text6.setfocus
return 0
endif
if thisform.text6.value=0
p=messagebox(" 您输入的 第 三 次稀释溶液电导率
为 0 ,是否继续?",4+32+256," 提示信息 ")
if p=7
thisform.text6.setfocus
return 0
endif
endif
if thisform.text7.value<0
messagebox(" 您输入的 第 四 次稀释溶液电导率 数
值不正确,请检查更改!",0+16," 错误提示 ")
thisform.text7.setfocus
return 0
endif
if thisform.text7.value=0
p=messagebox(" 您输入的 第 四 次稀释溶液电导率
为 0 ,是否继续?",4+32+256," 提示信息 ")
if p=7
thisform.text7.setfocus
return 0
endif
endif
if thisform.text1.value=0 and thisform.text4.value=0 and
thisform.text5.value=0 and thisform.text5.value=0 and thisform.
text7.value=0
messagebox(" 您没有输入任何电导率数据,请重新
输入!",0+16," 错误提示 ")
thisform.text1.setfocus
return 0
endif
2.3.2 实验数据输出程序
为了方便随时保存实验数据,本设计制作了实验数据
保存表单,可将实验数据保存到任意路径。具体代码如下:
“输出数据”按钮的单击事件代码如下:
** 以下检测试验数据有效性
do case
case thisform.spinner1.value>100 or thisform.spinner1.
value<0
messagebox(" 您输入的 温度 数值不正确,请检查
更改!",0+16," 错误提示 ")
thisform.spinner1.setfocus
return 0
case thisform.text3.value<=0
messagebox(" 您输入的 乙酸溶液浓度 数值不正
确,请检查更改!",0+16," 错误提示 ")
thisform.text3.setfocus
return 0
case thisform.text2.value<0
messagebox(" 您输入的 电导水电导率 数值不正
确,请检查更改!",0+16," 错误提示 ")
thisform.text2.setfocus
return 0
case thisform.text1.value<0
messagebox(" 您输入的 原溶液电导率 数值不正
确,请检查更改!",0+16," 错误提示 ")
thisform.text1.setfocus
return 0
case thisform.text4.value<0
messagebox(" 您输入的 第一次稀释溶液电导率 数
值不正确,请检查更改!",0+16," 错误提示 ")
thisform.text4.setfocus
return 0
case thisform.text5.value<0
messagebox(" 您输入的 第二次稀释溶液电导率 数
值不正确,请检查更改!",0+16," 错误提示 ")
thisform.text5.setfocus
return 0
case thisform.text6.value<0
messagebox(" 您输入的 第三次稀释溶液电导率 数
值不正确,请检查更改!",0+16," 错误提示 ")
thisform.text6.setfocus
return 0
case thisform.text7.value<0
messagebox(" 您输入的 第四次稀释溶液电导率 数
值不正确,请检查更改!",0+16," 错误提示 ")
thisform.text7.setfocus
return 0
case thisform.text1.value=0 and thisform.text4.value=0
and thisform.text5.value=0 and thisform.text5.value=0 and
thisform.text7.value=0
messagebox(" 您没有输入任何电导率数据,请重新
输入!",0+16," 错误提示 ")
thisform.text1.setfocus
return 0
OTHERWISE
&& 以下是文件路径选择和命名
do form save
&& 以下是用输入的名称在制定的路径生成数据文件
if not empty(wjlj)
creat dbf ("&wjlj") ; && 此处的 " " 不可省略
(SPINNER1 n(4,2),;
TEXT3 n(8,4),;
TEXT2 N (5,4),;
SPINNER3 i,;
text1 n(8,4),;
spinner2 i,;
text4 n(8,4),;
spinner4 i,;
text5 n(8,4),;
spinner5 i,;
text6 n(8,4),;
spinner6 i,;
text7 n(8,4),;
spinner7 i )
&& 以下是数据保存
insert into "&wjlj" values (thisform.spinner1.value,; &&
此处的“”不可省略
thisform.text3.value,;
thisform.text2.value,;
thisform.spinner3.value,;
thisform.text1.value,;
thisform.spinner2.value,;
thisform.text4.value,;
thisform.spinner4.value,;
thisform.text5.value,;
thisform.spinner5.value,;
thisform.text6.value,;
thisform.spinner6.value,;
thisform.text7.value,;
thisform.spinner7.value)
use
messagebox(" 数据保存成功 ! ",0+64," 提示信息 ")
else
messagebox(" 您的数据尚未保存! ",0+48," 提示信息 ")
endif
endcase
“数据保存”表单的“路径选择”按钮单击事件代码如下:
cdir=getdir()
if empty(cdir)
thisform.text2.value="mainp"+"\DATA\"
else
thisform.text2.value=cdir
endif
thisform.command3.setfocus
thisform.refresh
“数据保存”表单的“保存”按钮单击事件代码 [7] 如下:
if empty(alltrim(thisform.text1.value))
messagebox(" 请输入文件名称!",0+16," 错误提示 ")
thisform.text1.setfocus
return 0
endif
cdir=thisform.text2.value
cdirfile="cdir+alltrim(thisform.text1.value)"
public wjlj
wjlj=(&cdirfile)
thisform.release
2.3.3 实验数据读取程序
为了方便数据输入,本设计还制作了实验数据读取表
单,以随时方便地从任意位置读取以前保存的试验数据。具
体代码 [8] 如下:
“读取数据”按钮的单击事件代码如下:
do form read
** 以下是数据查询
if empty(dqlj)
messagebox(" 没有可读取的数据! ",0+48," 提示信
息 ")
else
** 定义数组 temp1
dimension temp1(1)
SELECT *;
FROM "&dqlj"; && 此处的 "" 不可省略
inTO array temp1
if alen(temp1)<>14
messagebox(" 您选取的数据文件错误! ",0+16," 错
误提示 ")
else
** 以下是数据显示
thisform.spinner1.value=temp1(1)
thisform.text3.value=temp1(2)
thisform.text2.value=temp1(3)
thisform.spinner3.value=temp1(4)
thisform.text1.value=temp1(5)
thisform.spinner2.value=temp1(6)
thisform.text4.value=temp1(7)
thisform.spinner4.value=temp1(8)
thisform.text5.value=temp1(9)
thisform.spinner5.value=temp1(10)
thisform.text6.value=temp1(11)
thisform.spinner6.value=temp1(12)
thisform.text7.value=temp1(13)
thisform.spinner7.value=temp1(14)
THISFORM.refresh
messagebox(" 数据读取成功! ",0+64," 提示信息")
endif
endif
“读取数据”表单的“路径选择”按钮单击事件代码如下:
if curdir()<>"mainp"+"\DATA\"
CD &MAINP.+"\DATA\"
endif
cdir=getfile(" 数据文件 :dbf"," 数据文件名 :","",0," 选择文
件 ")
if empty(cdir)
thisform.command3.enabled=.f.
thisform.command2.setfocus
else
thisform.text1.value=cdir
thisform.command3.enabled=.t.
thisform.command3.setfocus
endif
cd ..
thisform.refresh
2.4系统界面设计与使用方法
为了更好地记录实验进行的过程,系统中也设计了实验 选项表单,可以进行实验者、室温、气压等信息的输入,这 样有助于后边生成详细的实验报告单。在以上工作都完成后, 即可通过“打印结果”按钮打印出实验报告单。
3结语
本系统是为物化实验“电导法测定乙酸解离度”量身定 做的,可与实验过程紧密配合,并可对实验数据进行快捷精 确处理,而且能迅速生成专业化的实验报告单,不用人工进 行任何工作就可直接得到实验结果。
实验过程中所得数据大多为科学计数法表示的数字,难 以输入,而本系统采用底数、指数分别输入的方式,因而使得 数据的输入变得简单有趣。
利用本系统,在整个实验过程中,只需要输入实验中测 定的电导率数据,就可以得到最终的实验结果并生成实验报 告单,整个处理过程不需要任何人工干预,简单快捷。实验 完成后,可快速得到专业详尽的实验报告单,实验报告单包含 实验时间、气压、所用仪器编号、实验人员等信息,同时省略 了对实验数据的处理。
20210916_6142cbd91a354__电导法测定乙酸解离常数实验数据处理软件设计