李翠翠,周 楓,楊 亭,楊 震,曹 水
(貴州省大氣探測(cè)技術(shù)與保障中心,貴州 貴陽(yáng) 550081)
?
基于Web的溫度表檢定系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
李翠翠,周 楓,楊 亭,楊 震,曹 水
(貴州省大氣探測(cè)技術(shù)與保障中心,貴州 貴陽(yáng) 550081)
針對(duì)貴州省溫度表檢定工作的實(shí)際需求,開(kāi)發(fā)和建立了基于Web的溫度表檢定系統(tǒng)。系統(tǒng)界面美觀,操作簡(jiǎn)便,能批量、高效、準(zhǔn)確地處理溫度表檢定數(shù)據(jù),自動(dòng)生成檢定記錄表及檢定證書(shū),并具有局部打印功能。通過(guò)使用該系統(tǒng),計(jì)量管理人員可對(duì)溫度表未檢、已檢、到檢信息進(jìn)行查詢與合格率統(tǒng)計(jì)。自投入業(yè)務(wù)運(yùn)行以來(lái),有效提高了貴州省溫度表檢定工作現(xiàn)代化水平,實(shí)現(xiàn)了對(duì)標(biāo)準(zhǔn)溫度表、送檢溫度表、檢定工作量考核的統(tǒng)一化管理。
Web;溫度表;檢定系統(tǒng);PHP;數(shù)據(jù)庫(kù)
隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)的快速發(fā)展,氣象業(yè)務(wù)服務(wù)平臺(tái)的建設(shè)越來(lái)越趨于網(wǎng)絡(luò)化,軟件結(jié)構(gòu)逐步由C/S模式轉(zhuǎn)向B/S模式。B/S架構(gòu)主要具備以下優(yōu)點(diǎn):在客戶端無(wú)需安裝任何軟件或程序,易于操作,維護(hù)成本低,可擴(kuò)展性強(qiáng)。
多年來(lái),貴州省溫度表檢定數(shù)據(jù)的處理、證書(shū)的打印一直采用Excel辦公軟件完成,使用Excel軟件對(duì)溫度表檢定數(shù)據(jù)進(jìn)行處理時(shí),不僅操作繁瑣,而且容易產(chǎn)生錯(cuò)誤,需要人工再次進(jìn)行判斷,檢定人員工作效率明顯較低。為了解決溫度表檢定工作中存在的實(shí)際問(wèn)題,提高溫度表檢定工作效率和工作質(zhì)量,及時(shí)開(kāi)發(fā)了一個(gè)基于Web的溫度表檢定系統(tǒng)。系統(tǒng)采用B/S軟件架構(gòu),不僅實(shí)現(xiàn)對(duì)溫度表檢定數(shù)據(jù)批量、高效、準(zhǔn)確的自動(dòng)處理,還實(shí)現(xiàn)對(duì)溫度表信息的錄入、查詢、統(tǒng)計(jì)與打印等功能。
以Windows 2007操作系統(tǒng)為開(kāi)發(fā)平臺(tái),采用Dreamweaver CC 2014、phpStudy等開(kāi)發(fā)工具,以及HTML、CSS、PHP、JavaScript等開(kāi)發(fā)語(yǔ)言。同時(shí),由于MySQL數(shù)據(jù)庫(kù)具有成本低、執(zhí)行速度快、安裝和使用簡(jiǎn)單、可信賴等優(yōu)點(diǎn),本系統(tǒng)采用MySQL數(shù)據(jù)庫(kù)。
PHP有多個(gè)開(kāi)發(fā)工具,單獨(dú)安裝Apache、PHP、MySQL 3個(gè)軟件后配置比較復(fù)雜,而phpStudy是PHP的一種集成開(kāi)發(fā)環(huán)境,該開(kāi)發(fā)工具集成了phpMyAdmin、PHP、Apache和MySQL 4個(gè)軟件,可一次性進(jìn)行安裝,完成PHP復(fù)雜的開(kāi)發(fā)環(huán)境配置[1],本系統(tǒng)采用phpStudy集成開(kāi)發(fā)工具。
3.1 系統(tǒng)模塊劃分
系統(tǒng)主要由溫度表收發(fā)、溫度表檢定、查詢統(tǒng)計(jì)、用戶管理等4個(gè)模塊構(gòu)成。其中溫度表收發(fā)模塊分為標(biāo)準(zhǔn)溫度表收發(fā)、送檢溫度表收發(fā)、已檢溫度表領(lǐng)取等3個(gè)部分,溫度表檢定模塊分為檢定、核驗(yàn)及批準(zhǔn)等2個(gè)部分,查詢統(tǒng)計(jì)模塊分為未檢、已檢、到檢溫度表的查詢和合格率統(tǒng)計(jì)等4個(gè)部分。其總體結(jié)構(gòu)如圖1所示。
3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
根據(jù)系統(tǒng)規(guī)劃,采用的MySQL數(shù)據(jù)庫(kù)一共建立4張數(shù)據(jù)表,分別是:用戶信息表、送檢溫度表、標(biāo)準(zhǔn)溫度表、已檢溫度表。其中,用戶信息表包含“姓名、密碼、權(quán)限”等字段;送檢溫度表包含“送檢單位名稱、送檢人姓名、送檢人電話、送檢日期、溫度表名稱、型號(hào)、最大允許誤差、證書(shū)編號(hào)、使用范圍”等字段;標(biāo)準(zhǔn)溫度表包含“標(biāo)準(zhǔn)溫度表名稱、型號(hào)、修正值”等字段;已檢溫度表包含“溫度表名稱、型號(hào)、證書(shū)編號(hào)、檢定規(guī)程、標(biāo)準(zhǔn)溫度表名稱、檢定設(shè)備、檢定人姓名、核驗(yàn)人姓名、批準(zhǔn)人姓名、檢定數(shù)據(jù)、檢定結(jié)論、檢定日期、到檢日期”等字段。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
3.3 部分界面簡(jiǎn)介
系統(tǒng)主要包括首頁(yè)、溫度表收發(fā)、已檢溫度表領(lǐng)取、已領(lǐng)取溫度顯示、檢定讀數(shù)填寫(xiě)、批次檢定溫度表顯示、記錄表、檢定證書(shū)、溫度表核驗(yàn)及批準(zhǔn)、溫度表查詢(未檢、已檢、到檢)、溫度表合格率統(tǒng)計(jì)、用戶管理等多個(gè)界面。由于篇幅有限,這里僅介紹系統(tǒng)首頁(yè)及檢定結(jié)果界面。
3.3.1 首頁(yè)界面 系統(tǒng)首頁(yè)采取用戶密碼驗(yàn)證登錄,登錄成功后,首頁(yè)自動(dòng)顯示待檢儀器動(dòng)態(tài)信息和已檢儀器動(dòng)態(tài)信息。待檢儀器動(dòng)態(tài)信息包括檢定員、證書(shū)編號(hào)、儀器名稱、檢定方式、送檢時(shí)間等,已檢儀器動(dòng)態(tài)信息包括送檢單位、儀器名稱、送檢日期、檢定員、數(shù)量等。首頁(yè)界面如圖2所示:
圖2 首頁(yè)界面
3.3.2 檢定結(jié)果界面 檢定證書(shū)包括溫度表基本信息和檢定結(jié)果,其中溫度表基本信息包括送檢單位、名稱、型號(hào)、出廠編號(hào)、檢定結(jié)論、檢定人、核驗(yàn)員、批準(zhǔn)員、檢定日期、到檢日期等。檢定證書(shū)模塊在設(shè)計(jì)上采用了CSS局部打印功能,打印檢定證書(shū)時(shí),自動(dòng)將溫度表基本信息與檢定結(jié)果分成兩頁(yè)。系統(tǒng)自動(dòng)根據(jù)被檢溫度表名稱、偏差讀數(shù)、最大允許誤差、相鄰最大允許差等信息進(jìn)行判斷和計(jì)算,動(dòng)態(tài)生成以表格顯示的檢定結(jié)果。檢定結(jié)果界面如圖3所示:
圖3 檢定結(jié)果界面
4.1 平均值、修正值、修約值的算法
氣象用玻璃液體溫度表簡(jiǎn)稱為溫度表,其種類較多,主要有通風(fēng)干濕球溫度表、干濕球溫度表、直管地中溫度表、最高溫度表、曲管地中溫度表、地面溫度表、最低溫度表等,溫度表的最小分度值分為0.2℃和0.5℃兩種。
溫度表的每個(gè)檢定點(diǎn)均由2對(duì)偏差讀數(shù)構(gòu)成,平均值是2對(duì)偏差讀數(shù)和的平均,當(dāng)平均值的百分位為5時(shí),如果十分位為奇數(shù)則進(jìn),為偶數(shù)則舍。修正值的計(jì)算方法,是首先將標(biāo)準(zhǔn)溫度表的偏差讀數(shù)平均值與標(biāo)準(zhǔn)溫度表的修正值相加,然后再減去溫度表偏差讀數(shù)平均值,最后計(jì)算出來(lái)的值即為修正值,其應(yīng)保留2位小數(shù)。修約值是對(duì)修正值進(jìn)行處理的結(jié)果,對(duì)于最小分度值為0.2℃的溫度表,修正值就是修約值;對(duì)于最小分度值為0.5℃的溫度表,修正值應(yīng)修約到1位小數(shù),即為修約值[2]。這3種算法相對(duì)簡(jiǎn)單,流程圖及代碼略。
4.2 檢定結(jié)論判斷算法
溫度表在被檢定過(guò)程中,如果有一個(gè)檢定點(diǎn)的偏差讀數(shù)出現(xiàn)明顯異常,則該溫度表后續(xù)檢定點(diǎn)的偏差讀數(shù)用“/”表示。系統(tǒng)在自動(dòng)判定檢定結(jié)論時(shí),先判斷偏差讀數(shù)是否為“/”,若不是“/”,偏差讀數(shù)再與最大允許誤差進(jìn)行比較,若偏差讀數(shù)在最大允許誤差范圍內(nèi),檢定結(jié)論變量被賦為合格,否則被賦為不合格。如果所有的偏差讀數(shù)均在最大允許誤差范圍內(nèi),相鄰檢定點(diǎn)的讀數(shù)差再與相鄰最大允許差進(jìn)行比較,若相鄰檢定點(diǎn)的讀數(shù)差也均在相鄰最大允許差范圍內(nèi),則檢定結(jié)論為合格,否則為不合格。
檢定結(jié)論判斷算法流程如圖4所示。
圖4 檢定結(jié)論判斷算法流程
部分代碼如下:
function veri_con($zqd,$bj)
{
$jdjl='';$i=0;$j=0; //初始化變量
$zqd_arr=explode('/',$zqd);//分離溫度表各檢定點(diǎn)的最大允許誤差
$sz_arr=explode(',',$bj); //分離被檢溫度表偏差讀數(shù)
$count=count($sz_arr); //計(jì)算溫度表檢定點(diǎn)的個(gè)數(shù)
//循環(huán)判斷各檢定點(diǎn)的偏差讀數(shù)是否在最大允許誤差范圍內(nèi)
for($i=0;$i<$count;$i++){
if($sz_arr[$i]!='/'){
$sz_arr[$i]=((float)$sz_arr[$i])/100; //將偏差讀數(shù)的數(shù)據(jù)類型轉(zhuǎn)換成浮點(diǎn)型 if(((float)$sz_arr[$i])>((float)$zqd_arr[0])||((float)$sz_arr[$i])<((float)(-$zqd_arr[0]))){
$jdjl="不合格";
break; //如果檢定結(jié)論變量被賦為不合格跳出整個(gè)循環(huán)
}
……
}
if($jdjl=="合格"){ //如果所有偏差讀數(shù)均在最大允許范圍內(nèi),需進(jìn)行下一步判斷
//循環(huán)判斷相鄰檢定點(diǎn)的讀數(shù)差是否在相鄰最大允許差范圍內(nèi)
for($j=0;$j<$count-4;$j++){
……
}
}
return $jdjl;
}
4.3 比例內(nèi)插分段算法
為了便于使用修正值,需要對(duì)溫度表的修正值進(jìn)行分段,分段算法有多種,本系統(tǒng)采用線性比例內(nèi)插算法,其算法關(guān)鍵步驟如下:
①定義一個(gè)數(shù)組y,用于存儲(chǔ)示值區(qū)間終點(diǎn)修正值的所有可能的取值,這些值是根據(jù)各類溫度表檢定點(diǎn)的最大允許誤差來(lái)取的,它們之間的間隔為0.1℃,且第2位小數(shù)均為5。
②相鄰檢定點(diǎn)的修正值是否相等,若相等,則終點(diǎn)示值不能用線性比例公式進(jìn)行計(jì)算。
③檢定點(diǎn)是否為第一個(gè)檢定點(diǎn),若為第一個(gè)檢定點(diǎn),則分段的初始示值就是該檢定點(diǎn)的示值,下一個(gè)分段的初始值等于上一個(gè)分段的終點(diǎn)示值加上0.1。
④檢定點(diǎn)修正值的第2位小數(shù)是否為5,若為5,該點(diǎn)的修正值應(yīng)向高點(diǎn)或低點(diǎn)的修正值方向舍或入[2]。
⑤相鄰分段區(qū)間的修正值可能會(huì)相等,若相等,則合并為一個(gè)區(qū)間。
⑥將所有分段的起始示值和修正值連接成字符串,檢定結(jié)果頁(yè)面在調(diào)用該算法時(shí),再對(duì)該字符串處理,得到各區(qū)間的起始示值、修正值及終點(diǎn)示值。
線性比例內(nèi)插分段算法流程如圖5所示:
圖5 線性比例內(nèi)插分段算法流程
關(guān)鍵代碼如下:
function in_prop($xy_str,$jdfw)
{
//各類溫度表示值區(qū)間終點(diǎn)修正值所有可能的取值,它們之間間隔0.1,第2位小數(shù)位為5。
$y=array(-0.55,-0.45,-0.35,-0.25,-0.15,-0.05,0.05,0.15,0.25,0.35,0.45,0.55); $arr_t=explode(';',$jdfw); //獲取被檢溫度表的檢定范圍
$arr_y=explode(';',$xy_str); // 獲取溫度表檢各定點(diǎn)對(duì)應(yīng)的修正值
$count=count($arr_t); // 計(jì)算檢定點(diǎn)的個(gè)數(shù)
$str='';$t_start=0;$y_start=0;$t_end=0;$y_end=0;$xz=0;//初始化變量
for($i=0;$i<$count-1;$i++){
$j=$i+1;
if($arr_y[$i]-$arr_y[$j]!=0){ //判斷相鄰兩個(gè)檢定點(diǎn)的修正值是否相等
if($i==0){ //判斷是否是第1個(gè)檢定點(diǎn)
$t_start=$arr_t[$i]; //第1個(gè)檢定點(diǎn)的值就是第1個(gè)區(qū)間的起始示值
$y_start=$arr_y[$i];
$new_y=new_y($arr_y[$i],$arr_y[$j]); //對(duì)兩個(gè)修正值進(jìn)行判斷,舍去數(shù)組y中不需要帶入線性比例內(nèi)插法公式進(jìn)行計(jì)算的數(shù)值,并返回新的數(shù)組$new_y(函數(shù)new_y()略)
$num=count($new_y);//計(jì)算新數(shù)組的長(zhǎng)度
if($num==0){
$t_end=$arr_t[$j];
$y_end=$arr_y[$j];
$xz=xzz($y_start,$y_end); //對(duì)示值起點(diǎn)和示值終點(diǎn)的2個(gè)修正值進(jìn)行判斷,得出該區(qū)間的修正值(函數(shù)xzz()略)
$str=$str.$t_start.','.$xz.';'; //將各個(gè)區(qū)間的起始示值和修正值鏈接成字符串
$t_start=$t_end+0.1; //下一個(gè)區(qū)間的起始示值
$y_start=$y_end;
}
else{
for($n=0;$n<$num;$n++){
//根據(jù)線性比例內(nèi)插法求出區(qū)間的終點(diǎn)示值,并保留1位小數(shù) $t_end=number_format(($new_y[$n]-$arr_y[$j])*($arr_t[$i]-$arr_t[$j])/($arr_y[$i]-$arr_y[$j])+$arr_t[$j],1,'.','');
……
}
……
return $str;
}
用戶可對(duì)系統(tǒng)進(jìn)行的操作主要有:錄入送檢溫度表和標(biāo)準(zhǔn)溫度表信息,對(duì)溫度表進(jìn)行檢定(包括選擇檢定條件、錄入檢定數(shù)據(jù)、自動(dòng)生成記錄表),打印檢定證書(shū),對(duì)溫度表未檢、已檢、到檢信息進(jìn)行查詢及合格率統(tǒng)計(jì),修改用戶信息等,其中溫度表檢定的操作過(guò)程相對(duì)較為復(fù)雜,其具體操作流程如圖6所示。檢定員在開(kāi)始使用系統(tǒng)之前,應(yīng)確保事先錄入已檢定的溫度表信息和已使用的標(biāo)準(zhǔn)溫度表信息。
圖6 溫度表檢定操作流程
系統(tǒng)界面友好,安全可靠,運(yùn)行穩(wěn)定,處理數(shù)據(jù)準(zhǔn)確高效,及時(shí)解決了貴州省溫度表檢定工作中存在的實(shí)際問(wèn)題,使其工作質(zhì)量和工作效率得到明顯提高,實(shí)現(xiàn)了溫度表規(guī)范化、標(biāo)準(zhǔn)化、統(tǒng)一化管理模式,有效提高了貴州省氣象計(jì)量檢定工作現(xiàn)代化水平。
計(jì)量檢定儀器除了各類溫度表外,還有溫度傳感器、濕度傳感器、氣壓計(jì)、溫濕表、風(fēng)速儀、雨量?jī)x等設(shè)備,本系統(tǒng)實(shí)現(xiàn)了對(duì)溫度表的自動(dòng)檢定,在此基礎(chǔ)上還可不斷進(jìn)行完善,擴(kuò)展系統(tǒng)功能,實(shí)現(xiàn)對(duì)所有計(jì)量檢定儀器和檢定人員工作量考核的統(tǒng)一規(guī)范化管理。
[1] 張兵義,等.PHP+MySQL+Dreamweaver動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)實(shí)例教程[M].北京:機(jī)械工業(yè)出版社,2012.
[2] 秦嶺.氣象用玻璃棒液體溫度表檢定規(guī)程[M].北京:國(guó)家氣象局計(jì)量所,1992.
2014-09-28
李翠翠(1984-),女,助工,主要從事雷達(dá)運(yùn)行保障與軟件開(kāi)發(fā)工作。
省級(jí)氣象計(jì)量檢定管理系統(tǒng)(黔氣科合【2014】QN07號(hào))。
1003-6598(2015)03-0051-05
TP311
B