夏健明 陳鵬 孫詩(shī)文
摘 要 平面桿系結(jié)構(gòu)計(jì)算程序是基于Android系統(tǒng)的矩陣位移法計(jì)算程序,可在智能手機(jī)等移動(dòng)平臺(tái)上運(yùn)行。簡(jiǎn)單介紹Android應(yīng)用程序的開(kāi)發(fā)環(huán)境,描述了平面桿系結(jié)構(gòu)計(jì)算程序的界面設(shè)計(jì)、數(shù)據(jù)輸入、數(shù)據(jù)輸出和矩陣位移法計(jì)算等編程關(guān)鍵技術(shù)。平面桿系結(jié)構(gòu)計(jì)算程序能夠在智能手機(jī)上運(yùn)行,讓學(xué)生在任何地點(diǎn)、任何時(shí)間進(jìn)行力學(xué)計(jì)算,提高學(xué)生學(xué)習(xí)力學(xué)課程的興趣和積極性。
關(guān)鍵詞 矩陣位移法 Android系統(tǒng) 智能手機(jī)
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.16400/j.cnki.kjdkx.2017.09.019
Implementing Matrix Displacement Method on Android Operation System
XIA Jianming, CHEN Peng, SUN Shiwen
(Dept. of Civil Engineering, Guangdong Technical College of Water Resource and Electric Engineering, Guangzhou, Guangdong 510635)
Abstract The planar bar structures computation program is a matrix displacement method based on Android operation system, which can be run on mobile platforms such as smart phone. The Android application environment is introduced. The interface for the planar bar structures computation program and the key technology for data input, data output and matrix displacement method computation using Java language are described. The planar bar structures computation program on a smart phone makes it possible to compute structures internal forces in any where, on any time. It makes mechanics learning more interesting and lets students learn mechanics actively.
Keywords matrix displacement method; Android operation system; smart phone
0 引言
近年,隨著互聯(lián)網(wǎng)與智能手機(jī)技術(shù)的迅猛發(fā)展,手機(jī)應(yīng)用程序(Application, App)對(duì)人們的生活、學(xué)習(xí)和工作產(chǎn)生了巨大的影響。截至2014年底,移動(dòng)電話的普及率達(dá)94.5%,我國(guó)手機(jī)用戶數(shù)量已達(dá)到5.57億,同比增加5672萬(wàn)人,網(wǎng)民中使用手機(jī)上網(wǎng)的人數(shù)比例達(dá)到85.8%。[1]基于智能手機(jī)的移動(dòng)學(xué)習(xí)也在逐漸改變?nèi)藗兊膶W(xué)習(xí)方式,學(xué)習(xí)不再局限于傳統(tǒng)課堂上,任何人可以在任何時(shí)間、任何地點(diǎn)學(xué)習(xí)。[2]
Android是一種基于Linux的開(kāi)放源代碼的操作系統(tǒng),由谷歌公司和84家硬件制造商、軟件開(kāi)發(fā)商和電信營(yíng)運(yùn)商組建開(kāi)放手機(jī)聯(lián)盟,共同開(kāi)發(fā)改良Android系統(tǒng)。2013年的第4季度,Android平臺(tái)手機(jī)的全球市場(chǎng)份額已達(dá)到78.1%,采用該系統(tǒng)的設(shè)備數(shù)量達(dá)到10億臺(tái)。[3]
本文編寫(xiě)Android應(yīng)用程序(App),在智能手機(jī)上實(shí)現(xiàn)矩陣位移法,稱“平面桿系結(jié)構(gòu)計(jì)算程序”,可在智能手機(jī)上計(jì)算平面桿系結(jié)構(gòu)的內(nèi)力,為“結(jié)構(gòu)力學(xué)”、“鋼筋混凝土結(jié)構(gòu)”和“鋼結(jié)構(gòu)”等課程服務(wù)。使學(xué)生在任何時(shí)間,任何地點(diǎn)進(jìn)行結(jié)構(gòu)的力學(xué)計(jì)算成為可能。
1 Android應(yīng)用程序的開(kāi)發(fā)環(huán)境
Android應(yīng)用程序的源代碼采用Java語(yǔ)言編寫(xiě),首先要下載安裝Java語(yǔ)言軟件開(kāi)發(fā)工具包(Java Development Kit, JDK),然后下載安裝Android SDK(Software Development Kit)。本文采用Android的集成開(kāi)發(fā)環(huán)境Eclipse進(jìn)行Android應(yīng)用程序開(kāi)發(fā),所以要下載安裝Eclipse集成開(kāi)發(fā)環(huán)境(IDE),并下載安裝Android開(kāi)發(fā)工具(Android Development Toolkit, ADT)。上述軟件都可以在相關(guān)網(wǎng)站上免費(fèi)下載。
Android應(yīng)用程序由四類核心組件構(gòu)成,即Activity, Service, BroadcastReceiver和ContentProvider,各組件之間的消息傳遞通過(guò)Intent完成。[4]
Android應(yīng)用程序開(kāi)發(fā)環(huán)境如圖1所示。
2 矩陣位移法在Android系統(tǒng)的實(shí)現(xiàn)
本文在Android系統(tǒng)上應(yīng)用程序,實(shí)現(xiàn)矩陣位移法計(jì)算,稱“平面桿系結(jié)構(gòu)計(jì)算程序”,生成應(yīng)用程序安裝包(Apk),可安裝在智能手機(jī)上,在智能手機(jī)上實(shí)現(xiàn)矩陣位移法計(jì)算。平面桿系結(jié)構(gòu)計(jì)算程序由三個(gè)模塊構(gòu)成,即(1)數(shù)據(jù)輸入;(2)矩陣位移法計(jì)算;(3)數(shù)據(jù)輸出。
2.1 界面設(shè)計(jì)
考慮到手機(jī)的屏幕尺寸有限,平面桿系結(jié)構(gòu)計(jì)算程序應(yīng)采用簡(jiǎn)潔明了的界面。本文采用線性布局界面,在屏幕的上部設(shè)置三個(gè)水平排列的按鈕(Button),即“數(shù)據(jù)輸入”、“計(jì)算”和“查看結(jié)果”按鈕,分別完成原始數(shù)據(jù)輸入、矩陣位移法計(jì)算和查看計(jì)算結(jié)果功能。在水平按鈕下設(shè)置一個(gè)編輯框(EditText)用于輸入數(shù)據(jù),一個(gè)文本框(TextView)用于現(xiàn)實(shí)計(jì)算結(jié)果,如圖2所示。endprint
由于手機(jī)的屏幕狹小,在數(shù)據(jù)輸入時(shí)只顯示輸入編輯框,而現(xiàn)實(shí)計(jì)算結(jié)果時(shí)只顯示文本框。點(diǎn)擊按鈕“數(shù)據(jù)輸入”時(shí),文本框的可見(jiàn)性設(shè)置為“不可見(jiàn)”,編輯框的可見(jiàn)性設(shè)置為“可見(jiàn)”,屏幕只顯示用于數(shù)據(jù)輸入的編輯框。可通過(guò)以下代碼實(shí)現(xiàn)。
textview.setVisibility(View.GONE);
edittext.setVisibility(View.VISIBLE);
點(diǎn)擊按鈕“查看結(jié)果”時(shí),文本框的可見(jiàn)性設(shè)置為“可見(jiàn)”,編輯框的可見(jiàn)性設(shè)置為“不可見(jiàn)”,屏幕上只顯示用于現(xiàn)實(shí)計(jì)算結(jié)果的編輯框。通過(guò)以下代碼實(shí)現(xiàn)。
textview.setVisibility(View. VISIBLE);
edittext.setVisibility(View. GONE);
2.2 數(shù)據(jù)輸入和輸出
所有的原始數(shù)據(jù)都從編輯框中輸入,數(shù)據(jù)以空格作分隔。程序用一個(gè)字符串存儲(chǔ)編輯框中輸入的數(shù)據(jù),需要把該字符串所包含的數(shù)據(jù)分解出來(lái),賦值給相應(yīng)的變量,通過(guò)字符串的split方法實(shí)現(xiàn)。Split可把字符串按分隔父分解成若干個(gè)子字符串,存儲(chǔ)在字符串?dāng)?shù)組中,見(jiàn)以下代碼。
String[ ] tokens=text.split( ,//n);
上述代碼把字符串text按分隔符(空格,換行)分解成若干個(gè)子字符串,存儲(chǔ)在字符串?dāng)?shù)組tokens中,只要把tokens中的各個(gè)數(shù)據(jù)去處即可得各輸入數(shù)據(jù)。輸入數(shù)據(jù)中有整型數(shù)據(jù)和實(shí)型數(shù)據(jù),需要把字符串轉(zhuǎn)換成整型和雙精度實(shí)型,可通過(guò)整型數(shù)值的Integer.parseInt()方法和雙精度實(shí)型是的數(shù)值Double.parseDouble()方法轉(zhuǎn)換。
程序計(jì)算后把結(jié)點(diǎn)位移與單元內(nèi)力寫(xiě)到一個(gè)多行字符串上,然后在文本框中顯示。本文通過(guò)StringBuffer類實(shí)現(xiàn),StringBuffer類是一個(gè)靈活的字符串類,其對(duì)象可以添加、插入或追加字符串。在StringBuffer對(duì)象上添加各結(jié)點(diǎn)位移值和各單元內(nèi)力值,可獲得計(jì)算結(jié)果字符串。通過(guò)以下代碼實(shí)現(xiàn)。
StringBuffer outputStr=new StringBuffer();
String s1;
S1=”結(jié)點(diǎn)位移\n”;
outputStr.append(s1);
……
S1=”單元內(nèi)力\n”;
outputStr.append(s1);
……
Textview.setText(outputStr);
當(dāng)輸出數(shù)據(jù)較多時(shí),文本框可能不能完全顯示所有的輸出數(shù)據(jù),需要給文本框加一個(gè)滾動(dòng)條,使用戶可看到所有的輸出數(shù)據(jù)。本文通過(guò)以下方法實(shí)現(xiàn)
首先在MainActivity.java 文件引入包文件
import android.text.method.ScrollingMovementMethod;
在“查看結(jié)果”按鈕的單擊事件方法中添加以下語(yǔ)句
textview.setMovementMethod(ScrollingMovementMethod.getInstance());
2.3 矩陣位移法計(jì)算
點(diǎn)擊“計(jì)算”按鈕,程序進(jìn)行語(yǔ)言矩陣位移法計(jì)算,計(jì)算程序用Java語(yǔ)言,由以下模塊組成。[5]
(1)InputData(),數(shù)據(jù)輸入;
(2)SetJID(),形成結(jié)點(diǎn)定位向量;
(3)SetKKD(),計(jì)算一維地址碼;
(4)SetLKS(),形成總剛度矩陣;
(5)SetLPS(),形成荷載向量;
(6)Gauss(),高斯消元法解方程;
(7)IntePF(),計(jì)算單元內(nèi)力。
3 算例
單跨二層剛架結(jié)構(gòu),材料的彈性模量E=2.6×107KN/m2,梁和柱界面為矩形,其尺寸分別為0.3m×0.5m和0.3m×0.6m,受到均布荷載和集中力的作用,如圖3(a)所示。
平面桿系結(jié)構(gòu)計(jì)算程序的輸入數(shù)據(jù)是
點(diǎn)擊手機(jī)上的“平面桿系結(jié)構(gòu)計(jì)算程序”圖標(biāo),則可在手機(jī)上運(yùn)行平面桿系結(jié)構(gòu)計(jì)算程序。在編輯框輸入以上數(shù)據(jù),數(shù)據(jù)間以空格作間隔,如圖4所示。
輸入以上數(shù)據(jù)后,點(diǎn)擊按鈕“計(jì)算”,完成矩陣位移法計(jì)算。點(diǎn)擊按鈕“查看結(jié)果”,則在手機(jī)上顯示結(jié)點(diǎn)位移和單元內(nèi)力,如圖5所示。
4 結(jié)語(yǔ)
平面桿系結(jié)構(gòu)計(jì)算程序是基于Android系統(tǒng)的矩陣位移法計(jì)算程序,可在智能手機(jī)等移動(dòng)平臺(tái)上運(yùn)行。本文簡(jiǎn)單地介紹了Android應(yīng)用程序的開(kāi)發(fā)環(huán)境和開(kāi)發(fā)方法,描述了平面桿系結(jié)構(gòu)計(jì)算程序的界面設(shè)計(jì)、數(shù)據(jù)輸入和數(shù)據(jù)輸出的關(guān)鍵技術(shù)。由于平面桿系結(jié)構(gòu)計(jì)算程序可以在智能手機(jī)上運(yùn)行,使學(xué)生可在任何地點(diǎn)、任何時(shí)間進(jìn)行力學(xué)計(jì)算,可提高學(xué)生學(xué)習(xí)力學(xué)課程的興趣和積極性。
參考文獻(xiàn)
[1] 三川.CNNIC發(fā)布第35次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》.中國(guó)遠(yuǎn)程教育,2015(2):31-31.
[2] 趙晴晴.2011-2015年我國(guó)用Android學(xué)習(xí)軟件開(kāi)發(fā)和研究綜述.軟件導(dǎo)刊(教育技術(shù)),2016.15(8):70-72.
[3] 王勇,李程俊,吳杰.手機(jī)應(yīng)用程序開(kāi)發(fā)課程教學(xué)初探.計(jì)算機(jī)教育,2016(1):109-111.
[4] 李波,史江萍,王祥鳳.Android 4.X從入門(mén)到精通.北京:清華大學(xué)出版社,2012:30-38.
[5] 王勇,黃炎生.結(jié)構(gòu)分析的計(jì)算機(jī)方法.廣州:華南理工大學(xué)出版社,2001:145-153.endprint