版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p> 題 目 豎直形儀表認(rèn)讀速度、 </p><p> 誤讀率的程序設(shè)計 </p><p> 專 業(yè) 安全工程 </p><
2、;p> 作者姓名 史珂 </p><p> 學(xué) 號 2012201595 </p><p> 單 位 物理科學(xué)與信息工程學(xué)院 </p><p> 指導(dǎo)教師 孟現(xiàn)柱 </p><p> 2016 年
3、 6 月</p><p><b> 教務(wù)處編</b></p><p><b> 原創(chuàng)性聲明</b></p><p> 本人鄭重聲明:所提交的學(xué)位論文是本人在導(dǎo)師指導(dǎo)下,獨立進行研究取得的成果。除文中已經(jīng)引用的內(nèi)容外,論文中不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得聊城大學(xué)或其他教育機構(gòu)的學(xué)位證書而使用過
4、的材料。對本文的研究作出重要貢獻的個人和集體,均在文中以明確的方式表明。本人承擔(dān)本聲明的相應(yīng)責(zé)任。</p><p> 學(xué)位論文作者簽名: 日期:2016.5.28 </p><p> 指 導(dǎo) 教 師 簽 名: 日期:2016.5.28 </p><p><b> 目 錄</
5、b></p><p><b> 前 言1</b></p><p> 1. 對豎直形儀表的簡介2</p><p> 1.1豎直形儀表的種類2</p><p> 1.2豎直形儀表的重要性4</p><p> 1.3影響儀表認(rèn)讀速度、誤讀率的因素4</p><
6、;p> 1.3.1 刻度盤對認(rèn)讀速度、誤讀率的的影響4</p><p> 1.3.2 刻度對認(rèn)讀速度、誤讀率的影響5</p><p> 2 豎直形儀表認(rèn)讀速度、誤讀率的程序設(shè)計6</p><p> 2.1所用軟件介紹6</p><p> 2.2設(shè)計思路與流程7</p><p> 2.3程序設(shè)
7、計中的模塊設(shè)計8</p><p> 2.4程序測試圖11</p><p> 3. 豎直形指針式儀表設(shè)計代碼15</p><p><b> 4.改進建議22</b></p><p><b> 結(jié) 論23</b></p><p><b> 參考文獻
8、24</b></p><p><b> 致 謝25</b></p><p><b> 摘 要</b></p><p> 本文運用人機工程學(xué)的基本原理和理論,對豎直形儀表進行了全面的分析。第一章對豎直形儀表進行了詳細的介紹,就豎直形儀表的種類、重要性、對儀表設(shè)計的重要性進行了詳細的介紹和分析。第二章分析了
9、豎直形儀表認(rèn)讀速度、誤讀率。詳細介紹了做程序設(shè)計所用的軟件,以及在程序設(shè)計工作中的設(shè)計思路和流程。第三章給出了豎直形儀表程序設(shè)計的源代碼。第四章對豎直形儀表提出了改進建議,這樣在以后的測量中能更加精確快速的測出數(shù)值。本文總體對豎直形儀表進行了認(rèn)讀速度、誤讀率方面的分析和設(shè)計,并有了更好的改進建議,使豎直形儀表能更大作用的貢獻于測量工作之中。</p><p> 關(guān)鍵詞:人機工程學(xué);調(diào)查;分析;豎直形儀表</
10、p><p><b> Abstract</b></p><p> In this paper, the basic principle and theory of ergonomics are used to analyze the vertical instrument. In the first chapter, the vertical instrument i
11、s introduced in detail, and the importance of the vertical shape instrument is introduced and analyzed in detail. In the second chapter, the reading speed and the misreading rate of the vertical instrument are analyzed.
12、The software used in the program design is introduced in detail, as well as the design ideas and process in the program design w</p><p> Key Words:Ergonomics;Investigation;analysis;Vertical instrument</p
13、><p> 豎直形儀表對讀速度、誤讀率 的程序設(shè)計</p><p><b> 前 言</b></p><p> 豎直形指針式儀表結(jié)構(gòu)簡單,維護方便,現(xiàn)在廣泛應(yīng)用于工業(yè)生產(chǎn)以及一些化學(xué)試驗中。由于豎直形指針式儀表能夠隨時顯示測量數(shù)值,而且能夠反映被測量的變化趨勢,在許多特定的場合具有一定的優(yōu)勢。而豎直形儀表的認(rèn)讀速度、誤讀率
14、是其測量的兩個重要指標(biāo)。本文對豎直形儀表認(rèn)讀速度、誤讀率進行了詳細的分析,并設(shè)計程序,意義在于能更使其更精確地進行測量,能夠為儀表設(shè)計提供參考。</p><p> 目前對豎直形儀表認(rèn)讀速度、誤讀率的程序設(shè)計研究的很少。 通過查閱資料和檢索得知:2011年全國虛擬儀器設(shè)計大賽軟件組決賽中曾經(jīng)進行過類似研究,而其他類型的儀表研究相對多一些。目前在儀表的研究方面國內(nèi)相對國外差距比較明顯,研發(fā)力度和產(chǎn)研結(jié)合上面處于劣勢
15、,導(dǎo)致適用范圍和可信程度上大打折扣。但近年來隨著科技發(fā)展和國家支持,豎直形儀表的研究和應(yīng)用也越來越多,總體正向著好的方向發(fā)展。</p><p> 本研究對豎直形儀表認(rèn)讀速度、誤讀率進行的程序設(shè)計采用的是java語言,java語言是一種安卓操作系統(tǒng),它具有面向?qū)ο蟆⑴c平臺無關(guān)、安全、多線程、使用靈活方便、應(yīng)用面廣特點。所用的軟件是Intellij idea,簡稱IDEA。它是JAVA語言開發(fā)的集成環(huán)境,Intel
16、liJ在業(yè)界被公認(rèn)為最好的JAVA開發(fā)工具之一,尤其在只能代碼助手、重構(gòu)、代碼自動提示、J2EE支持、各類版本工具、CVS整合、代碼分析、創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的。</p><p> 通過編寫豎直形儀表的程序設(shè)計,不僅能幫助我們學(xué)習(xí)Java語言程序設(shè)計這門課程,而且使我掌握了編程技巧,鍛煉了我實際操作的能力,增加了我的求知欲望,使我學(xué)習(xí)到了很多知識。</p><p>
17、 本文運用人機工程學(xué)的基本原理和理論,對豎直形儀的程序設(shè)計表進行了的分析。第一章對介紹了豎直形儀表的種類和重要性。第二章對豎直形儀表認(rèn)讀時間、誤讀率的程序設(shè)計進行了分析。第三章給出了豎直形儀表設(shè)計的源代碼。第四章對豎直形儀表提出了改進建議。最后論述了豎直形儀表程序設(shè)計的課程總結(jié)。 </p><p><b> 對豎直形儀表的簡介</b></p><p> 1.1指針
18、式儀表的種類 </p><p> 指針式儀表分為很多很多不同的種類,常見的有圓形儀表、半圓形儀表、豎直形儀表、水平形開窗式儀表。主要常見的形狀如表1所示。</p><p> 表1指針式儀表刻度盤的主要類別</p><p> 各種形狀的刻度盤都有自己的優(yōu)勢。其中在誤讀率方面,開窗型,由于指針不動,刻度盤動,窗中的數(shù)字易讀,其誤讀率最??;相反,圓型,半圓型,由于需
19、在儀表中尋找和確認(rèn)指針的位置,所以在較短的揭示時間內(nèi)比開窗型的誤讀率高;水平型和豎直型由于尋找指針位置最費時間,故誤讀率最高;水平型相比豎直型的誤讀率低,是因為眼球的水平運動快。</p><p> 1.2豎直形儀表的重要性</p><p> 本文要研究是豎直形儀表,豎直形儀表在生產(chǎn)生活和工業(yè)領(lǐng)域有很多應(yīng)用,給我們帶來了極大的方便。豎直形儀表有著認(rèn)讀直觀簡單,能使認(rèn)讀結(jié)果一目了然的優(yōu)點。
20、</p><p> 除了在日常生活中的應(yīng)用外,豎直形儀表還在工廠工業(yè)領(lǐng)域,機械加工領(lǐng)域等,在許多方面有特定的優(yōu)勢,例如,溫度計(如圖1所示)、水位計(如圖2所示)。</p><p><b> 圖1溫度計</b></p><p><b> 圖2水位表</b></p><p> 1.3影響儀表認(rèn)
21、讀速度、誤讀率的因素</p><p> 1.3.1 刻度盤對認(rèn)讀速度、誤讀率的的影響</p><p> 懷特(W·J·white)在視距為75cm的情況下,將直徑為25毫米,44毫米和70毫米的指示儀表,安裝在儀表板上進行可讀性測驗,結(jié)果如表2。</p><p> 表2認(rèn)讀速度和精準(zhǔn)度與直徑大小的關(guān)系(視距750mm)</p>
22、<p> 這是因為當(dāng)增大刻度盤時,刻度、刻度線和指針、字符均可增大,可提高清晰度。但當(dāng)增大刻度盤時,將增加眼睛的掃描路線和儀表占用面積。而縮小刻度盤又會使標(biāo)記密集不清。所以刻度盤大小對認(rèn)讀速度、誤讀率的影響是不可忽視的。</p><p> 刻度盤的大小取決于盤上標(biāo)記的數(shù)量和視距??潭缺P的最佳尺寸應(yīng)根據(jù)觀察者的最佳視角來確定。有關(guān)試驗表明,刻度盤的最佳視角為2.5°~5°;故當(dāng)確
23、定了觀察者與顯示器之間的視距后,即可算出刻度的最佳尺寸。</p><p> 1.3.2 刻度對認(rèn)讀速度、誤讀率的影響</p><p> 儀表上一定要有刻度才能認(rèn)讀,刻度對認(rèn)讀速度、誤讀率也有很大影響。</p><p> 刻度盤上最小刻度線間的距離稱為刻度??潭冗^密易讀錯,過疏會使中間插值估計不準(zhǔn)。刻度的大小可根據(jù)人眼的最小分辨能力和刻度盤的材料性質(zhì)及視距而確定
24、。人眼直接讀識刻度時,刻度的最小尺寸不應(yīng)小于0.6~1mm。當(dāng)刻度小于1mm時,誤讀率急劇增加。故刻度的最小尺寸一般在1~2.5mm之間選取,必要時也可采用4~8mm。采用放大鏡讀數(shù)時,刻度的大小一般取1/X mm(X為放大鏡放大倍數(shù))。</p><p> 刻度有很多類型,常見的有單刻度線、雙刻度線、遞增式刻度線。單刻度線和雙刻度線便于認(rèn)讀和記憶:遞增式刻度線有利于避免反方認(rèn)讀的差錯。</p>
25、<p> 刻度線的粗細對其也有影響??潭染€的寬度即刻度線的粗細 刻度線的寬度取決于刻度的大小,當(dāng)刻度線寬度為刻度的10%左右時,讀數(shù)的誤差最小。故刻度線寬度一般取刻度的5%~15%,普通刻度線通常取0.1±0.02mm;遠距離觀察時,可取0.6~0.8mm,精度高的測量刻度線取0.0015~0.1mm。</p><p> 刻度線的方向?qū)φJ(rèn)讀速度速度、誤讀率同樣有影響,刻度方向須遵循視覺規(guī)
26、律:豎直直線型應(yīng)從下至上,如圖3所示。</p><p> 圖3豎直儀表刻度線遵循方向圖</p><p> 2 豎直形儀表認(rèn)讀速度、誤讀率的程序設(shè)計</p><p><b> 2.1所用軟件介紹</b></p><p> 本文對豎直形儀表認(rèn)讀速度、誤讀率進行程序設(shè)計,其中應(yīng)用的軟件是IntelliJ IDEA,簡稱
27、IDEA。它是JAVA語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的JAVA開發(fā)工具之一,尤其在只能代碼助手、重構(gòu)、代碼自動提示、J2EE支持、各類版本工具、CVS整合、代碼分析、創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的。IDEA是JetBrrains公司的產(chǎn)品,這家公司總部位于捷克共和國的首都布拉格,開發(fā)人員以嚴(yán)謹(jǐn)著稱的東歐程序員為主。它的旗艦版本還支持HTML。免費版本只支持JAVA等極為少數(shù)的語言。</p>
28、<p> 它的特色功能有很多點,下面介紹極為優(yōu)秀的幾點。第一點,智能的選取。在很多時候我們要選取某個方法,或某個循環(huán)或想一步一步從一個變量到整個類慢慢擴充著選取,IDEA就提供這種基于語法的選擇,在默認(rèn)設(shè)置中Ctrl+W,可以實現(xiàn)選取范圍的不斷擴充,這種方式在重構(gòu)的時候尤其顯得方便。第二點,豐富的導(dǎo)航模式。IDEA提供了豐富的導(dǎo)航查看模式,例如Ctrl+E顯示最近打開過的文件,Ctrl+N顯示你希望顯示的類名查找框(該框
29、同樣有智能補充功能,當(dāng)你輸入字母后IDEA將顯示所有候選類名)。在最基本的project視圖中,你還可以選擇多種的視圖方式。第三點,歷史記錄功能。不用通過版本管理服務(wù)器,單純的IDEA就可以查看任何工程中文件的歷史記錄,在版本恢復(fù)時你可以很容易的將其恢復(fù)。第四點,對重構(gòu)的優(yōu)越支持。IDEA是所有IDE中最早支持重構(gòu)的,其優(yōu)秀的重構(gòu)能力一直是其主要賣點之一。第五點,編碼輔助。Java規(guī)范中提倡的toString()、hashCode()、
30、equals()以及所有的get/set方法,你可以不用進行任何的輸入就可以實現(xiàn)代碼的自動生成,從而把你從無聊的基本方法編碼中解放出來。第五點,靈</p><p> 2.2設(shè)計思路與流程</p><p> 豎直形儀表認(rèn)讀速度、誤讀率的程序設(shè)計,要想做出程序,要有思路和流程。首先我們要知道豎直形儀表極為重要的是刻度線和指針豎直形儀表認(rèn)讀與刻度盤有關(guān)。那么就先對刻度模板進行設(shè)計。</
31、p><p> 首先設(shè)計出顯示界面,然后就是功能??傮w上分為這兩大部分。</p><p> 在設(shè)計顯示界面時又分為很多步驟,比如尺度,刻度線,距離等,最重要的便是刻度尺和大致的布局。在功能方面,完成數(shù)據(jù)的記錄,對應(yīng)完成每一個案件的功能,還有輸入框。</p><p> 這兩部分做完后,再進行細節(jié)的調(diào)整,比如讀數(shù)精度的調(diào)整,指針的移動速度的調(diào)整,還有數(shù)字的提示信息的修改
32、等。</p><p> 有了這樣的程序設(shè)計流程,也是在這種清晰的設(shè)計思路下,才逐漸完成了豎直形儀表認(rèn)讀速度、誤讀率的程序設(shè)計。</p><p> 2.3程序設(shè)計中的模塊設(shè)計</p><p> 在對豎直儀表程序模塊設(shè)計時程序分為7個模塊,分別為:顏色設(shè)置、尺寸設(shè)置、測試、輸入數(shù)字、確定、重置、退出。而在這7個模塊中顏色設(shè)置、尺寸設(shè)置尤為重要,在此次豎直形程序設(shè)計
33、中對豎直形儀表盤的顏色、尺寸采用的固定顏色(指針為紅色,刻度線為白色,其他顏色統(tǒng)一設(shè)置成黑色;尺寸為不可變。)下面為豎直形儀表的模塊設(shè)計及示例圖。</p><p> 顏色設(shè)置:在豎直形儀表認(rèn)讀速度、誤讀率的程序設(shè)計中不能隨意更改此次程序的的顏色。所以在本程序設(shè)計中采用的是固定的顏色設(shè)置,既指針為紅色,刻度線為白色,其他顏色統(tǒng)一設(shè)置成黑色。</p><p> ?。?) 尺寸設(shè)置:此次豎直形
34、儀表設(shè)計采用的是固定尺寸。(如 圖4)所示。</p><p><b> 圖4</b></p><p> 測試:用戶點擊豎直形指針式儀表開始測試按鈕,程序開始運行,指針隨機停止。(如 圖5)所示。</p><p><b> 圖5</b></p><p> 輸入數(shù)字:用戶根據(jù)豎直形儀表盤中指針指
35、示的數(shù)字,在輸入框中輸入相應(yīng)的數(shù)字。</p><p> 確認(rèn):用戶點擊確認(rèn)按鈕,程序自動判斷輸入數(shù)字的正否正確,并給出判斷的結(jié)果。(如 圖6)所示。</p><p><b> 圖6</b></p><p> 重置:點擊重置按鈕,豎直形儀表程序重置。</p><p><b> 2.4程序測試圖</b
36、></p><p> 下面為豎直形程序設(shè)計測試實驗結(jié)果圖:(如 圖7),(如 圖87),(如 圖9)所示,</p><p> 通過測試數(shù)據(jù)可以看到,豎直形指針的位置和所指的數(shù)字或多或少的存在一定的偏差,通過肉眼可分辨的有限,在一定程度上造成了誤讀錯誤,提高了程序的誤讀率。測試的數(shù)據(jù)越少誤讀率越高,可以通過多測試幾組數(shù)據(jù)來降低豎直形儀表的誤讀率。從所給圖的數(shù)據(jù)看出測試兩次的誤讀率為
37、50%,測試三次的誤讀率為66%,測試八次的誤讀率為87%,次數(shù)越多越有利于實驗結(jié)果的準(zhǔn)確性。</p><p><b> 圖7</b></p><p><b> 圖8</b></p><p><b> 圖9</b></p><p> 豎直形指針式儀表設(shè)計代碼</p
38、><p> /* */ package cn.beyond.swing;</p><p><b> /* */ </b></p><p> /* */ import java.awt.Color;</p><p><b> /* */ </b></p>&l
39、t;p> /* */ public class Cursor</p><p> /* */ implements Runnable</p><p> /* */ {</p><p> /* 10 */ public static int y = 70;</p><p> /* 11 */ publ
40、ic static float value = 0.0F;</p><p> /* */ public static final int X = 90;</p><p> /* */ public static final int LENGTH = 20;</p><p> /* 14 */ public static int coun
41、t = 0;</p><p> /* 15 */ public static int rightCount = 0;</p><p> /* 16 */ public static Color color = Color.RED;</p><p> /* */ public static long startTime;</p>
42、<p> /* */ public static long endTime;</p><p> /* 22 */ private static boolean suspend = false;</p><p> /* 23 */ private static String control = "";</p><p&g
43、t;<b> /* */ </b></p><p> /* */ public static void continute() {</p><p> /* 26 */ if (!suspend) {</p><p> /* 27 */ synchronized (control) {</p>
44、;<p> /* 28 */ control.notifyAll();</p><p> /* */ }</p><p> /* */ }</p><p> /* 31 */ suspend = true;</p><p> /* */ }</p&
45、gt;<p><b> /* */ </b></p><p> /* */ public static boolean isStart() {</p><p> /* 35 */ return suspend;</p><p> /* */ }</p><p>&l
46、t;b> /* */ </b></p><p> /* */ public static void pause() {</p><p> /* 39 */ suspend = false;</p><p> /* */ }</p><p><b> /* */ &l
47、t;/b></p><p> /* */ public void run()</p><p> /* */ {</p><p> /* 44 */ synchronized (control) {</p><p> /* 45 */ boolean flag = true;</p&g
48、t;<p> /* */ try {</p><p> /* */ while (true) {</p><p> /* 48 */ if (!suspend) {</p><p> /* 49 */ control.wait();</p><
49、;p> /* */ }</p><p> /* 51 */ Thread.sleep(20L);</p><p> /* 52 */ if (y >= 570) {</p><p> /* 53 */ flag = false;</p><
50、;p> /* */ }</p><p> /* 55 */ if (y <= 70) {</p><p> /* 56 */ flag = true;</p><p> /* */ }</p><p> /* 58 */
51、 if (flag)</p><p> /* 59 */ y += 1;</p><p> /* */ else {</p><p> /* 61 */ y -= 1;</p><p> /* */ }</p>
52、<p><b> /* */ </b></p><p> /* 64 */ value = (y - 70) / 5.0F / 10.0F;</p><p> /* */ }</p><p> /* */ } catch (InterruptedExcept
53、ion e) {</p><p> /* 66 */ e.printStackTrace();</p><p> /* */ }</p><p> /* */ }</p><p> /* */ }</p><p> /* */ }</p&g
54、t;<p> /* Location: C:\Users\huangjunwei\Desktop\swing\</p><p> * Qualified Name: cn.beyond.swing.Cursor</p><p> * JD-Core Version: 0.6.0</p><p><b>
55、 */</b></p><p> /* */ package cn.beyond.swing;</p><p><b> /* */ </b></p><p> /* */ import javax.swing.JFrame;</p><p><b> /* */
56、</b></p><p> /* */ public class FrameMain extends JFrame</p><p> /* */ {</p><p> /* */ private MyPanel myPanel;</p><p><b> /* */ </b>
57、;</p><p> /* */ public FrameMain()</p><p> /* */ {</p><p> /* 14 */ this.myPanel = new MyPanel();</p><p> /* 15 */ Thread thread = new Thread(this
58、.myPanel);</p><p> /* 16 */ thread.start();</p><p> /* 17 */ add(this.myPanel);</p><p> /* 18 */ setIconImage(null);</p><p> /* 19 */ setSize(450, 6
59、10);</p><p> /* 20 */ setResizable(false);</p><p> /* 21 */ setLocation(900, 100);</p><p> /* 22 */ setVisible(true);</p><p> /* 23 */ setDefaultClo
60、seOperation(3);</p><p> /* */ }</p><p><b> /* */ </b></p><p> /* */ public static void main(String[] args)</p><p> /* */ {</p>
61、<p> /* 28 */ FrameMain frameMain = new FrameMain();</p><p> /* */ }</p><p> /* */ }</p><p> /* Location: C:\Users\huangjunwei\Desktop\swing\</p>
62、;<p> * Qualified Name: cn.beyond.swing.FrameMain</p><p> * JD-Core Version: 0.6.0</p><p><b> */</b></p><p> /* */ package cn.beyond.swing;</p&g
63、t;<p> /* */ </p><p> /* */ import java.awt.Color;</p><p> /* */ import java.awt.Font;</p><p> /* */ import java.awt.Graphics;</p><p> /*
64、 */ import java.awt.Rectangle;</p><p> /* */ import java.awt.event.ActionEvent;</p><p> /* */ import java.awt.event.ActionListener;</p><p> /* */ import java.awt.eve
65、nt.KeyAdapter;</p><p> /* */ import java.awt.event.KeyEvent;</p><p> /* */ import java.io.PrintStream;</p><p> /* */ import java.math.BigDecimal;</p><p>
66、 /* */ import java.util.Date;</p><p> /* */ import javax.swing.JButton;</p><p> /* */ import javax.swing.JLabel;</p><p> /* */ import javax.swing.JPanel;</p&g
67、t;<p> /* */ import javax.swing.JTextField;</p><p> /* */ </p><p> /* */ public class MyPanel extends JPanel</p><p> /* */ implements Runnable</p>
68、<p> /* */ {</p><p> /* */ public static final int SIZE_X = 200;</p><p> /* */ public static final int SIZE_Y = 650;</p><p> /* */ public static fin
69、al int MIN = 5;</p><p> /* */ public static final int START_X = 60;</p><p> /* */ public static final int START_Y = 70;</p><p> /* */ public static final int CO
70、MP_Y = 160;</p><p> /* 36 */ public static final Cursor curson = new Cursor();</p><p> /* */ </p><p> /* 38 */ private JButton jButton = new JButton("開始測試");&
71、lt;/p><p> /* 39 */ private JButton jButton1 = new JButton("重置測試");</p><p> /* 40 */ private JButton jButton2 = new JButton("確認(rèn)");</p><p> /* 41 */ priv
72、ate JLabel label = new JLabel("請輸入讀數(shù):");</p><p> /* 42 */ private JTextField jTextField1 = new JTextField();</p><p> /* 43 */ private JLabel label1 = new JLabel();</p>&
73、lt;p> /* */ </p><p> /* 45 */ private JLabel label2 = new JLabel();</p><p> /* */ </p><p> /* */ public MyPanel() {</p><p> /* 48 */ new T
74、hread(curson).start();</p><p> /* */ </p><p> /* 50 */ setLayout(null);</p><p> /* */ </p><p> /* 52 */ this.jButton.setBounds(new Rectangle(210,
75、160, 100, 30));</p><p> /* */ </p><p> /* 54 */ add(this.jButton);</p><p> /* 55 */ this.jButton.addActionListener(new ActionListener()</p><p> /*
76、 */ {</p><p> /* */ public void actionPerformed(ActionEvent e) {</p><p> /* 58 */ MyPanel.this.label1.setText(null);</p><p> /* */ </p><p>
77、; /* 60 */ new Thread(new Runnable()</p><p> /* */ {</p><p> /* */ public void run() {</p><p> /* 63 */ MyPanel.this.jButton.setE
78、nabled(false);</p><p> /* 64 */ MyPanel.this.jButton2.setEnabled(false);</p><p> /* 65 */ MyPanel.this.jTextField1.setText(null);</p><p> /* 66 */
79、 Cursor.continute();</p><p> /* */ try {</p><p> /* 68 */ Thread.sleep(()((0.2D + 3.0D * Math.random()) * 1000.0D));</p><p> /* 69 */
80、 Cursor.pause();</p><p> /* 70 */ Cursor.startTime = new Date().getTime();</p><p> /* 71 */ MyPanel.this.jButton2.setEnabled(true);</p><p>
81、/* */ } catch (InterruptedException e1) {</p><p> /* 73 */ e1.printStackTrace();</p><p> /* */ }</p><p> /* */ }</
82、p><p> /* */ }).start();</p><p> /* */ }</p><p> /* */ });</p><p> /* 80 */ this.jButton1.setBounds(new Rectangle(320, 160, 100, 30)
83、);</p><p> /* 81 */ add(this.jButton1);</p><p> /* 82 */ this.jButton1.addActionListener(new ActionListener()</p><p> /* */ {</p><p> /* */
84、 public void actionPerformed(ActionEvent e) {</p><p> /* 85 */ Cursor.pause();</p><p> /* 86 */ MyPanel.this.jButton.setEnabled(true);</p><p> /* 87 */
85、 MyPanel.this.label1.setText(null);</p><p> /* 88 */ Cursor.count = 0;</p><p> /* 89 */ Cursor.rightCount = 0;</p><p> /* 90 */ Cursor.y = 70;</p
86、><p> /* */ }</p><p> /* */ });</p><p> /* 94 */ this.label.setBounds(new Rectangle(210, 210, 100, 30));</p><p> /* 95 */ add(this.label);&
87、lt;/p><p> /* */ </p><p> /* 97 */ this.jTextField1.setBounds(new Rectangle(210, 240, 100, 30));</p><p> /* 98 */ add(this.jTextField1);</p><p> /* 99 *
88、/ this.jTextField1.addKeyListener(new KeyAdapter() {</p><p> /* */ public void keyTyped(KeyEvent e) {</p><p> /* 101 */ int keyChar = e.getKeyChar();</p><p>
89、 /* 102 */ if ((keyChar != 46) && ((keyChar < 48) || (keyChar > 57)))</p><p> /* 103 */ e.consume();</p><p> /* */ }</p><p> /* */
90、 });</p><p> /* 107 */ this.jButton2.setBounds(new Rectangle(320, 240, 80, 30));</p><p> /* 108 */ this.jButton2.setEnabled(false);</p><p> /* 109 */ add(this.jBut
91、ton2);</p><p> /* 110 */ this.jButton2.addActionListener(new ActionListener()</p><p> /* */ {</p><p> /* */ public void actionPerformed(ActionEvent e) {<
92、/p><p> /* 113 */ Cursor.endTime = new Date().getTime();</p><p> /* 114 */ String input = MyPanel.this.jTextField1.getText();</p><p> /* 115 */ if ((input.ma
93、tches("^\\d+(\\.\\d+)?$")) || (input.matches("\\d+"))) {</p><p> /* 116 */ MyPanel.this.jButton2.setEnabled(false);</p><p> /* 117 */ float num = Float.
94、parseFloat(input);</p><p> /* 118 */ System.out.println(input + ", " + Cursor.value);</p><p> /* 119 */ float error = Math.abs(num - Cursor.value);</p><
95、;p> /* 120 */ float rate = error * 100.0F;</p><p> /* 121 */ Cursor.count += 1;</p><p> /* 122 */ if (rate < 5.0F) {</p><p> /* 123 */
96、 Cursor.rightCount += 1;</p><p> /* */ }</p><p> /* 125 */ String countRate = new BigDecimal((Cursor.count - Cursor.rightCount) / Cursor.count * 100.0F).setScale(2
97、, 4).doubleValue() + "";</p><p> /* 126 */ if (rate < 5.0F) {</p><p> /* 127 */ MyPanel.this.label1.setForeground(Color.GREEN.darker());</p><p>
98、 /* 128 */ MyPanel.this.label1.setText("<html>恭喜你,輸入的數(shù)字正確!<br>誤讀率:" + countRate + "%<br>認(rèn)讀時間:" + (Cursor.endTime - Cursor.startTime) + "ms <br> 第" + Curs
99、or.count + "次測試</html>");</p><p> /* */ } else {</p><p> /* 130 */ MyPanel.this.label1.setForeground(Color.BLUE.darker());</p><p> /* 13
100、1 */ MyPanel.this.label1.setText("<html>你輸入的數(shù)字不正確!<br>誤讀率:" + countRate + "%<br>認(rèn)讀時間:" + (Cursor.endTime - Cursor.startTime) + "ms <br> 第" + Cursor.count
101、+ "次測試</html>");</p><p> /* */ }</p><p> /* 133 */ MyPanel.this.jButton.setEnabled(true);</p><p> /* */ } else {</p>&l
102、t;p> /* 135 */ MyPanel.this.label1.setForeground(Color.red);</p><p> /* 136 */ MyPanel.this.label1.setText("請輸入正確格式的數(shù)字!");</p><p> /* */ }</p&g
103、t;<p> /* */ }</p><p> /* */ });</p><p> /* 141 */ this.label1.setBounds(new Rectangle(210, 280, 200, 70));</p><p> /* 142 */ add(this.label1);&
104、lt;/p><p> /* */ </p><p> /* 144 */ this.label2.setText("<html>聊城大學(xué)精品課程(J201605)資助<br>指導(dǎo)老師:孟現(xiàn)柱 編程人員:史珂<br>史珂版權(quán)所有@聊城大學(xué)</html>");</p><p> /*
105、145 */ this.label2.setBounds(new Rectangle(220, 500, 210, 80));</p><p> /* 146 */ add(this.label2);</p><p> /* */ }</p><p> /* */ </p><p> /*
106、*/ public void paint(Graphics g)</p><p> /* */ {</p><p> /* 154 */ super.paint(g);</p><p> /* 155 */ drawBackground(g);</p><p> /* 156 */ drawRu
107、ler(g);</p><p> /* 157 */ drawCursor(g);</p><p> /* */ }</p><p> /* */ </p><p> /* */ private void drawRuler(Graphics g)</p><p> /
108、* */ {</p><p> /* 165 */ g.setColor(Color.WHITE);</p><p> /* 166 */ int last_x = 60;</p><p> /* 167 */ int last_y = 70;</p><p> /* 168 */ for
109、(int i = 0; i <= 100; i++) {</p><p> /* 169 */ if (i != 100)</p><p> /* 170 */ g.drawLine(last_x, last_y, last_x, last_y + 5);</p><p> /* 171 */ if (i % 10
110、 == 0) {</p><p> /* 172 */ g.drawLine(last_x, last_y, last_x + 20, last_y);</p><p> /* 173 */ g.drawString(i / 10 + "", last_x - 20, last_y + 5);</p><p>
111、 /* 174 */ } else if (i % 10 == 5) {</p><p> /* 175 */ g.drawLine(last_x, last_y, last_x + 15, last_y);</p><p> /* */ } else {</p><p> /* 177 */
112、g.drawLine(last_x, last_y, last_x + 10, last_y);</p><p> /* */ }</p><p> /* 179 */ last_y += 5;</p><p> /* */ }</p><p> /* */ }</p&
113、gt;<p> /* */ </p><p> /* */ private void drawCursor(Graphics g) {</p><p> /* 184 */ g.setColor(Cursor.color);</p><p> /* 185 */ g.drawLine(70, Cursor.y
114、, 110, Cursor.y);</p><p> /* 186 */ g.drawLine(110, Cursor.y - 5, 110, Cursor.y + 5);</p><p> /* */ }</p><p> /* */ </p><p> /* */ public void r
115、un()</p><p> /* */ {</p><p> /* */ while (true)</p><p> /* */ {</p><p> /* */ try {</p><p> /* 194 */ Thread.s
116、leep(10L);</p><p> /* */ } catch (InterruptedException e) {</p><p> /* 196 */ e.printStackTrace();</p><p> /* */ }</p><p> /* 198 */
117、 repaint();</p><p> /* */ }</p><p> /* */ }</p><p> /* */ </p><p> /* */ private void drawBackground(Graphics g)</p><p> /*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圓形儀表認(rèn)讀速度、誤讀率的程序設(shè)計-安全工程畢業(yè)論文
- 半圓形儀表認(rèn)讀速度、誤讀率的程序設(shè)計-安全工程畢業(yè)論文
- 水平形儀表對認(rèn)讀速度、誤讀率影響的程序設(shè)計-畢業(yè)論文
- 安全工程畢業(yè)論文
- 畢業(yè)論文(安全工程)
- 畢業(yè)論文(安全工程)
- 安全工程畢業(yè)論文
- c程序設(shè)計畢業(yè)論文
- java程序設(shè)計畢業(yè)論文
- 安全工程本科畢業(yè)論文設(shè)計
- 安全工程本科畢業(yè)論文設(shè)計
- 安全工程專業(yè)畢業(yè)論文
- 測繪工程測量平差程序設(shè)計畢業(yè)論文
- 安全工程專業(yè)安全評價畢業(yè)論文
- 安全工程專業(yè)安全評價畢業(yè)論文
- 農(nóng)村飲水安全工程畢業(yè)論文
- 安全工程專業(yè)畢業(yè)論文譯文
- 農(nóng)村飲水安全工程畢業(yè)論文
- 西洋跳棋智能程序設(shè)計畢業(yè)論文
- 電子時鐘程序設(shè)計畢業(yè)論文
評論
0/150
提交評論