基于日志分析的Android測試方法的研究與實現(xiàn)_第1頁
基于日志分析的Android測試方法的研究與實現(xiàn)_第2頁
基于日志分析的Android測試方法的研究與實現(xiàn)_第3頁
基于日志分析的Android測試方法的研究與實現(xiàn)_第4頁
基于日志分析的Android測試方法的研究與實現(xiàn)_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGEPAGE65摘要隨著科技發(fā)展,Andriod操作系統(tǒng)在手機市場的占有率越發(fā)突出,但用戶在享受Andriod操作系統(tǒng)所提供的便利的同時,往往會因為應(yīng)用的功能、性能等方面的缺陷而不滿。因此測試是不可或缺的,在一次又一次地測試中發(fā)現(xiàn)并解決問題,是每一個好產(chǎn)品的必經(jīng)之路。身為為測試人員,不光要懂得找到bug,還應(yīng)該及時的將bug的錯誤信息準確地反饋給開發(fā)?;诖吮疚膶⑨槍ndroid的日志系統(tǒng)進行設(shè)計并實現(xiàn),使得測試更加系統(tǒng)化,效率變得更高。該系統(tǒng)是為Windows環(huán)境中基于Python語言和Android調(diào)試橋(adb)的Android日志系統(tǒng),實現(xiàn)了對設(shè)備日志的及時存儲并加入了開啟自動化測試工具的功能。本文的研究的目的是為了讓用戶通過該軟件使日志讀取更加方便,并且方便用戶分析和定位錯誤,希望能通過該系統(tǒng),讓測試人員可以及時的保留現(xiàn)場,從而達到提高Andriod設(shè)備測試效率的最終目的。關(guān)鍵詞:Andriod;python;日志分析;測試

ResearchandimplementationofAndroidtestmethodbasedonloganalysisAbstractWiththecontinuousadvanceofInternettechnologyandthepopularityofmobiledevice,Androidoperatingsystemisbecomingmoreandmoresignificantinthemobilephonemarket.However,whileenjoyingtheconvenienceprovidedbyAndroidoperatingsystem,usersareoftendissatisfiedwiththefunctionandperformanceoftheapplication.Therefore,examinationisindispensable.Thisistheonlywayforallgoodproductstofindandsolveproblemsinmultipletests.Asatester,wemustknowhowtofindtheerrorandgivethedevelopertheerrorinformationintime.Onthisbasis,thispaperdesignsandimplementstheAndroidlogsystemtomakethetestmoresystematicandefficient.Underthewindowsenvironment,basedonPythonlanguageandAndroiddebugbridge(ADB),Androidlogsystemaddsthefunctionoftimelystorageofdevicelogsandopeningautomatictesttools.Thepurposeofthispaperistomakeitmoreconvenientforuserstoreadlogsthroughthesoftware,andtofacilitateuserstoanalyzeandretrieveerrors.Ihopethatthroughthissystem,testerscankeepthesceneintimeandachievetheultimategoalofimprovingthetestingefficiencyofAndroiddevices..Keywords:Android;Python;loganalysis;

目錄TOC\o"1-4"\h\z\u103141引言 7161041.1背景內(nèi)容 7164901.2論文研究目的 8691.3論文結(jié)構(gòu) 8302732系統(tǒng)相關(guān)技術(shù) 9111582.1logging模塊 9240462.2Andriodanr模塊 13182572.3PythonTkinter模塊 15254962.4Pyinstaller庫 16144352.5ADBdevices模塊 18256812.6Andriodanr模塊 19112712.7subprocess模塊 21212682.8pathlib模塊 23293432.9sys模塊 25143573總體設(shè)計 27131173.1需求分析 27225543.2系統(tǒng)設(shè)計 28316723.3系統(tǒng)軟件結(jié)構(gòu)設(shè)計 2868293.4Windows系統(tǒng)通過adb獲取Android日志 2879523.5Monkeytext 30128233.6Andriodlog類型 3132364功能模塊設(shè)計 3296054.1日志獲取功能模塊設(shè)計 32304524.2截圖模塊設(shè)計 32116164.3Monkey模塊設(shè)計 32197505測試 3369475.1界面測試 3315195.2功能測試 33280605.3測試用例及執(zhí)行結(jié)果 3731973參考文獻 4129449謝辭 428018附錄源代碼 431引言隨著科技發(fā)展,Andriod操作系統(tǒng)在手機市場的占有率越發(fā)突出,人們在享受Andriod系統(tǒng)帶來的便利的同時,往往會因為應(yīng)用的功能、性能等方面的缺陷而不滿。因此應(yīng)用的測試是不可或缺的,在測試中發(fā)現(xiàn)并解決問題,是每一個好產(chǎn)品的必經(jīng)之路。同時身為為測試人員,不光要發(fā)現(xiàn)bug,更應(yīng)該及時的將bug的錯誤信息準確地反饋給開發(fā)?;诖吮疚膶⑨槍ndroid的日志系統(tǒng)進行設(shè)計并實現(xiàn),使得測試更加系統(tǒng)化,效率變得更高。該系統(tǒng)是為Windows環(huán)境中基于Python語言和Android調(diào)試橋(adb)的Android日志系統(tǒng)開發(fā)的。目的是通過該軟件使日志讀取更加方便,并且方便用戶分析和定位錯誤。1.1背景內(nèi)容隨著Andriod系統(tǒng)的廣泛普及,根據(jù)IDC新報告:Android系統(tǒng)市場占比最高,為77.14%,高居榜首,iOS操作系統(tǒng)的市場占比為22.83%,位居第二。而其他移動操作系統(tǒng)的比例僅為0.04%。但隨著Android系統(tǒng)的普及,也漸漸出現(xiàn)了一系列的問題,首當其沖的就是應(yīng)用方面的性能與穩(wěn)定性。Andriod操作系統(tǒng)能占據(jù)全球手機市場榜首的原因有以下幾點:1.平臺的開放性:Andriod操作系統(tǒng)的開放性允許任何手機開發(fā)人員參與Andriod應(yīng)用程序的開發(fā),得益于此,大量的開發(fā)團隊使Andriod系統(tǒng)日漸成熟,應(yīng)用軟件也無比豐富。2.系統(tǒng)開源:Andriod給予開發(fā)一個自由的環(huán)境,不會受到各種規(guī)則的束縛,擁有高自由度,也因此誕生了許多新奇的應(yīng)用。3.豐富的硬件支持:Andriod產(chǎn)品早已不單單局限于手機,我們?nèi)粘I钪性S多常見的產(chǎn)品也都是Andriod操作系統(tǒng)。Andriod系統(tǒng)的高自由度與豐富的應(yīng)用程序吸引了大量的新用戶。由于Android平臺具有開源和易于發(fā)布的功能,因此Android應(yīng)用每天都在增長。作為用戶和開發(fā)人員的共同需求,第三方應(yīng)用程序市場發(fā)展迅速,但因無法規(guī)范管理,對第三方應(yīng)用程序市場的審查并不完善,導(dǎo)致許多第三方應(yīng)用市場上的app往往存在著安全漏洞或嚴重bug,類如兼容性差,易卡死、黑屏等問題,極大地影響了Android用戶的體驗?,F(xiàn)今,人們對智能手機的依賴越發(fā)嚴重,同時許多無法保證功能及性能的應(yīng)用讓用戶深惡痛絕,也往往因此嚇退了許多潛在用戶。故而保證Andriod系統(tǒng)的應(yīng)用質(zhì)量已成為許多公司眼中至關(guān)重要的一環(huán)。1.2論文研究目的軟件測試的目的在于提高產(chǎn)品的質(zhì)量,保障用戶使用期間產(chǎn)品的穩(wěn)定性,并規(guī)避由于各種邊際操作和不規(guī)則使用導(dǎo)致的產(chǎn)品缺陷。用戶希望看到的是通過各種操作路徑檢測到的產(chǎn)品。產(chǎn)品需在質(zhì)量上通過行業(yè)標準測試和規(guī)格測試,并且在產(chǎn)品穩(wěn)定性和功能性方面通過行業(yè)標準測試級別。開發(fā)人員希望進行測試,以檢測由于開發(fā)過程中考慮不足和結(jié)構(gòu)錯誤而導(dǎo)致的產(chǎn)品缺陷。并通過修改和重新測試的過程不斷修復(fù)這些漏洞,最終達到可以滿足用戶需求的目的。而測試人員希望通過自己的測試,使產(chǎn)品在特定的操作路徑下暴露其缺陷,進而發(fā)現(xiàn)產(chǎn)品中的不足。如果嘗試成功,則表明該產(chǎn)品在此操作路徑下存在缺陷。同時,可以預(yù)見的是,用戶可能具有與此操作路徑相同的過程,從而遇到相同的產(chǎn)品缺陷,影響使用的體驗。這可能會引起用戶的不滿,最終導(dǎo)致大量客戶的流失,這將影響到產(chǎn)品的后續(xù)推廣,并極大地損害產(chǎn)品和公司的聲譽。因此,測試人員在這里要預(yù)先模擬這樣的操作,發(fā)現(xiàn)缺陷的存在并防止由此類問題而導(dǎo)致的客戶流失。想要對所有的測試路徑進行測試是不大現(xiàn)實的,因為通過排列組合可知測試路徑是無窮無盡的,而且在大量的缺陷將會在用戶經(jīng)過長期的使用之后才會暴露出來,故而測試的過程不可能完全排除所有問題,檢測出所有的設(shè)計缺陷,因此提高測試的效率是必然的。測試不僅是要體驗產(chǎn)品并以用戶身份使用產(chǎn)品,更重要的是要發(fā)現(xiàn)產(chǎn)品中的缺陷并查找bug。作為應(yīng)用的測試人員,總會因為無法發(fā)現(xiàn)bug以及定位問題所在而煩惱,特別是在于穩(wěn)定性測試方面,需要投入較長的測試時間,從而測試人員的工作難度也因此提升。作為測試,有時無法找到必現(xiàn)的路徑來復(fù)現(xiàn)bug,只能通過保留現(xiàn)場或者加大測試壓力去再次復(fù)現(xiàn),但更重要的是如何幫助開發(fā)去發(fā)現(xiàn)問題所在,如何提供相應(yīng)的log信息給開發(fā)分析。我們可以使用一種AndroidSDK工具:AndroidDebugBridge來調(diào)試Android,其中包括管理生成的Android日志。本文的目的就是使用python語言設(shè)計一個基于Android的日志分析工具,幫助開發(fā)人員及時有效的獲取bug所產(chǎn)生的日志,并保存測試日志,便于分析長時測試所出現(xiàn)的偶現(xiàn)bug,提高解決問題的效率。1.3論文結(jié)構(gòu)本文一開始介紹了當時的背景內(nèi)容、以及設(shè)計系統(tǒng)的目的與意義。然后再接著介紹本系統(tǒng)使用到的技術(shù),接著介紹系統(tǒng)的總體設(shè)計。會按模塊詳細的介紹,然后會附上測試案例,以及自己本次過程的總結(jié),最后會附上自己參考過的文獻以及致謝內(nèi)容。2系統(tǒng)相關(guān)技術(shù)2.1logging模塊Python中有一個專門負責輸出運行日志的模塊,它的名字叫l(wèi)ogging。通過它,您可以設(shè)置日志輸出級別,管理日志的路徑等。與直接打印相比,它有以下優(yōu)點:您可以設(shè)置不同的日志級別,讓日志模塊只輸出重要信息,而不顯示大量調(diào)試信息。若將所有信息打印到標準輸出,這會嚴重影響了開發(fā)人員從標準輸出中查看其他數(shù)據(jù);開發(fā)人員可以決定在哪里以及如何輸出日志記錄。。logging模塊主要由3部分組成:1.Logger日志記錄器Logger提供了一個可由應(yīng)用程序代碼直接使用的接口。從不會直接實例化它。它通常是通過記錄模塊級別的函數(shù)logging.getLogger(名稱)獲得的,如果未提供名稱,則使用root。名稱以點名(a.b.c)命名。以相同名稱多次調(diào)用logging.getLogger()將返回相同的logger對象。在這種命名方法中,后記錄器是前記錄器的子記錄器,并自動繼承父記錄器的日志信息。因此,只要配置了頂級記錄器,就無需一次配置應(yīng)用程序的所有記錄器,然后子記錄器將根據(jù)需要繼承。logging模塊中的Logger對象主要有以下幾種作用:首先,它向應(yīng)用程序公開了幾種方法,以便應(yīng)用程序可以在運行時寫入日志。其次,Logger對象根據(jù)日志信息的嚴重性或過濾器對象(默認過濾功能)決定如何處理日志信息。.最后,logger還負責將日志信息傳輸?shù)较嚓P(guān)的handlers。2.Handler日志處理器簡而言之,Handler是日志記錄模塊中最常用的類。它確定您的LogRecord最終出現(xiàn)的位置。3.Formatter格式化器,控制日志輸出的格式,指明了最終輸出中日志記錄的布局Formatter屬性如下:表2-1Formatter屬性屬性名稱格式說明name%(name)s日志的名稱asctime%(asctime)s可讀時間,默認格式‘2003-07-0816:49:45,896’,逗號之后是毫秒filename%(filename)s文件名,pathname的一部分pathname%(pathname)s文件的全路徑名稱funcName%(funcName)s調(diào)用日志多對應(yīng)的方法名levelname%(levelname)s日志的等級levelno%(levelno)s數(shù)字化的日志等級lineno%(lineno)d被記錄日志在源碼中的行數(shù)module%(module)s模塊名msecs%(msecs)d時間中的毫秒部分process%(process)d進程的IDprocessName%(processName)s進程的名稱thread%(thread)d線程的IDthreadName%(threadName)s線程的名稱relativeCreated%(relativeCreated)d日志被創(chuàng)建的相對時間,以毫秒為單位典型的日志記錄的步驟是這樣的:1.創(chuàng)建logger2.創(chuàng)建handler3.定義formatter4.給handler添加formatter5.給logger添加handler用代碼簡單實現(xiàn)則是:importlogging#1、創(chuàng)建一個loggerlogger=logging.getLogger('mylogger')logger.setLevel(logging.DEBUG)#2、創(chuàng)建一個handler,用它進行日志文件寫入fh=logging.FileHandler('test.log')fh.setLevel(logging.DEBUG)#3、再創(chuàng)建一個handler,用于輸出到控制臺ch=logging.StreamHandler()ch.setLevel(logging.DEBUG)#4、定義處理器的輸出格式(formatter)formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')#5、給處理器添加formatterfh.setFormatter(formatter)ch.setFormatter(formatter)#6、給logger添加handlerlogger.addHandler(fh)logger.addHandler(ch)具體實現(xiàn)代碼如下圖:2.2Andriodanr模塊ANR:應(yīng)用程序沒有響應(yīng),也就是說,應(yīng)用程序沒有響應(yīng)。在安卓系統(tǒng)上,如果你的應(yīng)用程序暫時沒有響應(yīng),系統(tǒng)會出現(xiàn)一個對話框,提示用戶對當前狀態(tài)進行操作,用戶可以選擇等待程序繼續(xù)運行,或者強制關(guān)閉程序,這便稱為ANR。因此,在一個流暢、合理的應(yīng)用程序中不會顯示anr,影響用戶的體驗。默認情況下,在安卓系統(tǒng)中,Activity的最大等待時間是5秒,而通常若是發(fā)生了ANR,用戶往往需要等待8s以上。最后,讓我們看一下Google官方文檔中有關(guān)ANR的解釋如圖2-2:圖2-2anr模塊解釋簡而言之,ANR是谷歌引入的一套機制,目的是讓應(yīng)用程序能夠足夠快地響應(yīng)用戶的請求。一般anr問題的日志在/data/anr/目錄中。我們可以通過adb導(dǎo)出日志:adbpull/data/anr/traces.txtd:/此命令將手機內(nèi)存中的anr目錄下的相關(guān)文件復(fù)制到計算機上的D盤,但有時會導(dǎo)致錯誤,于是我們可以通過這條命令:adbshellls/data/anr/來查看手機內(nèi)anr目錄下的文件,經(jīng)過實際操作,可發(fā)現(xiàn)anr目錄下的trace文件并不只有一個,所以無法指定的推出某一個trace文件,具體情況如下圖3-2-1:圖3-2-1查看anr文件夾因此在導(dǎo)出文件時,我選擇將anr目錄完整導(dǎo)出,導(dǎo)出及打開后效果如下圖3-2、3-3: 圖3-2-2anr導(dǎo)出目錄圖3-2-3追蹤文件打開2.3PythonTkinter模塊Tkinter是一個使用Python設(shè)計窗口的模塊。在python語言中,我們可以使用Tkinter模塊來實現(xiàn)GUI界面的設(shè)計與生成。例如,如果我們要開發(fā)一個計算器,那么計算器這個功能只是一個程序的輸入及輸出。若無GUI界面,用戶對于這個功能的體驗將十分糟糕。使用Tkiner模塊為程序制作一個GUI界面是十分有必要的。Python擁有許多的GUI庫。為什么選擇Tkinter呢,首先它是最簡潔且易上手的。第二個原因在于它是python的內(nèi)置庫,它不需要針對他去進行下載和安裝,可以隨時使用。第三是從開發(fā)角度出發(fā)。Python是一種腳本語言。如果您想使用python來開發(fā)特別復(fù)雜龐大的桌面應(yīng)用,那么使用它并不容易。Python就像一種靈活的小配件,一般不用作主要的開發(fā)語言。在我們的工作中,如果我們需要制作一個小工具,我們肯定需要向這個工具添加一個GUI界面。一個好的GUI界面不僅能讓自己使用的更順手,還能分享給其他非專業(yè)人員使用,讓用戶與系統(tǒng)的交互變得更加的容易。Tkinter模塊就像是涂料。我們都看過美術(shù)系學(xué)生的素描場景。首先,畫畫的前期準備工作需要先將一個畫架支起來,然后將畫板放于畫架上,再將畫布放置再畫板上,構(gòu)思內(nèi)容,用鉛筆繪制草圖,使用調(diào)色板調(diào)色,最后使用畫筆進行繪畫??偨Y(jié)以下在本系統(tǒng)中用到的Tkinter模塊里的參數(shù)1.Label:顯示文字或圖像。2.Button:按鈕,可以執(zhí)行我們?yōu)樗孪荣x予的操作3.Text:文本顯示,同時可插入圖像4.Frame:容器小部件??蚣芸梢杂羞吙蚝捅尘?。舉一個Tkinter模塊的簡單實例來介紹:#1.導(dǎo)入Tkinterimporttkinterastk#2.建立一個新的窗口,實例化Tkinterobject=tk.Tk()#3.設(shè)置一個標題object.title('MyWindow')#4.手動設(shè)置窗口的長寬object.geometry('500x300')#5.創(chuàng)建一個展示用的標簽Root=tk.Label(window,text='Hello!WelcometoZHBIT',bg='blue',font=('Arial',20),width=15,height=18)#6.使用標簽Root.pack()#7.令標簽在界面上循環(huán)展示object.mainloop()在系統(tǒng)中具體實現(xiàn)代碼如下圖2-3:圖2-3tkinter模塊2.4Pyinstaller庫PyInstaller是python里一個非常好用的第三方庫,可以在Windows及其他操作系統(tǒng)下,將Python源文件打包為可執(zhí)行文件。加入我們將Python源程序打包為可執(zhí)行文件,那么這個Python程序即使在未裝Python的環(huán)境中的電腦下也可正常運行,同時也易于傳輸和管理。PyInstaller不是python內(nèi)置的模塊,它屬于第三方庫,因此我們需要手動來安裝它。安裝PyInstaller模塊也十分簡單,對于安裝PyInstaller模塊,通常有兩種安裝方法,一種是直接去官網(wǎng)下載對應(yīng)的庫,然后再手動安裝,另一種也是我更推薦的,我們可以直接通過pip進行在線的安裝,只需要輸入簡單的指令,系統(tǒng)便會幫我們安裝完畢,省去一切麻煩。安裝指令如下:pipinstallpyinstaller-i/simple--trusted-host成功安裝后,可看到如圖2-4-1:圖2-4-1pyinstaller安裝pyinstaller模塊要如何使用呢,它的基本流程一般都是這樣的:1.在要打包的python文件的目錄中執(zhí)行以下命令:pyinstaller-F你的python文件名.py2.其中res文件夾為項目的資源目錄,整個exe用到的圖片均放置在里面,其中若要為程序設(shè)置一個好看的圖標,只需要在命令中加入-i圖標名稱。同時圖標也將保存至res目錄下。3.執(zhí)行打包好的可執(zhí)行文件,測試系統(tǒng)功能是否能正常運行。Pyinstaller模塊常見的參數(shù)如下圖2-4-2:圖2-4-2pyinstaller常見參數(shù)2.5ADB模塊在測試時,我們絕對需要檢查設(shè)備連接是否成功以及是否可以獲取設(shè)備信息??梢詫崿F(xiàn)adb設(shè)備,直接在命令行控制臺中輸入“adb設(shè)備”,可以看到下圖2-5-1:圖2-5-1adbdevices輸出在實際使用中,我們需要考慮多個設(shè)備的連接,因為設(shè)備的序列號是不同的,因此我們需要分別獲取它們的序列號并將其存儲在列表中,然后才能在后續(xù)的adb調(diào)試中使用。多個設(shè)備。我們通過調(diào)用subprocess模塊,可在Python中生成一個新進程,連接到相應(yīng)的輸出管道。在對應(yīng)的輸出管道中,subprocess可以獲取相應(yīng)的返回值。subprocess模塊中有一個重要且常用的類:popen,我們可以通過它來實現(xiàn)模塊與進程之間的交互,舉個例子,我們通過stdin獲取標準輸入值。在操作過程中,根據(jù)返回值popen可以進行判斷,若判斷返回的列表為空,則輸出提醒用戶連接未正確連接。如果返回值為1,則直接執(zhí)行下一步功能操作;如果列表中的數(shù)字大于1,則提示用戶輸入設(shè)備的序列號。需要進行該操作的設(shè)備,確認后進行日志采集,同時連接時發(fā)生沖突或影響其他設(shè)備的正常運行。具體代碼如下圖2-5-2:圖2-5-2系統(tǒng)代碼2.6Andriodanr模塊ANR:即應(yīng)用程序沒響應(yīng)。在Android中,如果你的應(yīng)用程序長時間無響應(yīng),系統(tǒng)會顯示一個對話框,用戶可以選擇,繼續(xù)等待或關(guān)閉,在一些卡頓的應(yīng)用程序中,用戶常常會遇到類似的情況,因此,程序響應(yīng)性能的設(shè)計非常重要,這樣系統(tǒng)就不會頻繁的出現(xiàn)該問題,在默認情況下,一個進程在Android中的最長執(zhí)行時間為4秒,而當ANR發(fā)生時,往往用戶需要等待超過8s,這是非常嚴重的問題。最后,讓我們看一下Google官方文檔中有關(guān)ANR的解釋,如圖2-6-1:圖2-6-1anr模塊解釋通常ANR問題的日志都存放在一個固定的目錄下,因此我們可以通過adb導(dǎo)出相關(guān)日志文件:adbpull/data/anr/traces.txtd:/此命令的目的是將anr目錄里的跟蹤文件,發(fā)送到我們指定的目錄下,但有時會有錯誤提示,無法找到相關(guān)的文件,具體原因我們可以使用以下命令來查看:adbshellls/data/anr/通過該命令,可以查看手機內(nèi)anr目錄下的文件,經(jīng)過實際操作,可發(fā)現(xiàn)anr目錄下的trace文件并不只有一個,所以無法指定的推出某一個trace文件,具體情況如下圖2-6-2:圖2-6-2查看anr文件夾因此在導(dǎo)出文件時,我選擇將anr目錄完整導(dǎo)出,導(dǎo)出及打開后效果如下圖2-6-3:圖2-6-3anr導(dǎo)出目錄2.7subprocess模塊Python中的subprocess模塊是一個非常方便且實用的模塊,在進行有關(guān)進程創(chuàng)建的項目時,我們可以通過模塊內(nèi)的相應(yīng)函數(shù)連接至進程的輸入和輸出管道,并獲得通道內(nèi)的字符。2-7-1subprocess模塊常見函數(shù)subprocess模塊中最常使用到的類也是本系統(tǒng)所使用到的類:Popen,使用subprocess模塊的popen類,我們可以輕松的完成進程的管理亦或是新建一個進程等類似操作,我們可以通過popen類所封裝的如表2-7-1內(nèi)的函數(shù),方便的實現(xiàn)一些常見的需求。想要了解更多有關(guān)popen類的用法,則還需要掌握它的部分常見參數(shù),如下表2-7-2表2-7-2popen類的常見參數(shù)使用subprocess模塊的簡單實例:importsubprocesscmd='replaceconfig.exe-amerge-m"{}"-pgame_config'.format(data)res=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)res.stdout.read()在系統(tǒng)中具體實現(xiàn)代碼如下圖2-7:圖2-7subprocess模塊使用2.8pathlib模塊根據(jù)官方解釋,這個模塊可以適用于不同的操作系統(tǒng),它主要負責文件系統(tǒng)路徑。路徑類分為來自純路徑的特定路徑及計算操作的純路徑和,如果從未使用過此模塊,或者不確定項目中的哪個類是正確的,則pathlib始終是您所需要的。它被用作運行代碼的平臺上的特定路徑。Pathlib模塊包含6個類,具體如下圖2-8圖2-8pathlib的6個類經(jīng)過系統(tǒng)的學(xué)習(xí),我總結(jié)了一些pathlib模塊的常見使用場景,下面我簡單舉例介紹此模塊的具體用法:#導(dǎo)入模塊frompathlibimportPath#1.獲取當前文件路徑p1=Path(__file__)#2.獲取當前文件的目錄p2=Path.cwd()#3.獲取當前文件目錄的父目錄p3=Path.cwd().parent#4.路徑拼接p=Path.cwd().joinpath(‘a(chǎn)a‘)#5.獲取當前文件的信息st=Path(__file__).stat()#6.獲取p1的父路徑p=p1.parentz=p1.parents#7.判斷pp是否為文件a=pp.is_file()#8.判斷pp是否目錄a=pp.is_dir()#9.判斷p2是否是絕對路徑a=p2.is_absolute()#10.判斷p2是否符合某一個模式a=p2.match(‘d:\*‘)在系統(tǒng)中部分代碼如下圖2-8:圖2-8pathlib的使用2.9sys模塊Sys模塊是Python中常用的模塊之一。它包含許多復(fù)雜的操作方法和變量,用于處理Python運行時的配置和資源,因此它與系統(tǒng)環(huán)境的交互不同于當前程序。sys其實是系統(tǒng)的縮寫,它可以用于獲取操作系統(tǒng)的信息與系統(tǒng)的配置。例如,獲取系統(tǒng)版本、確定文件和文件夾是否存在,創(chuàng)建文件夾等等。sys模塊常用的參數(shù)如下表2-9:sys模塊的常見使用操作有以下幾種:1.獲得python版本的信息importsyssys.version2.獲取當前操作系統(tǒng)的信息importsyssys.platform3.sys模塊的輸入、輸出importsyssys.stdoutsys.stdinsys.stderr在系統(tǒng)中部分代碼如下圖2-9:圖2-9sys模塊使用3總體設(shè)計3.1需求分析需求分析是指對用戶需求和業(yè)務(wù)流程的全面,準確的分析與調(diào)查。用戶需求被轉(zhuǎn)換為對系統(tǒng)功能的設(shè)計,以實現(xiàn)系統(tǒng)必須達到的目標,可以實現(xiàn)的目標以及過程的實現(xiàn)方式。需求分析的原則:(1)應(yīng)將需求分類歸納,逐一拆分,再尋找需求與需求之間的關(guān)系,構(gòu)建需求間的層次結(jié)構(gòu)。復(fù)雜的問題應(yīng)該基于性能、特定功能等,層層細化后進行分解和個別分析。(2)確定分析模型,該模型包括代表研究對象特征的幾個重要表示。邏輯視圖可以顯示目標函數(shù)與信息處理之間的關(guān)系,物理視圖由系統(tǒng)操作和處理環(huán)境決定,以確定數(shù)據(jù)結(jié)構(gòu)和功能。綜合以上原則,將分為兩個方面進行需求分析1.功能性需求首先系統(tǒng)最重要的功能在于日志獲取至本地,日志保存目錄則默認設(shè)為程序所在文件夾。其次作為測試常常會有需記錄手機當前狀態(tài)的需求,因此應(yīng)為用戶添加一鍵截圖并保存至本地的功能。最后系統(tǒng)應(yīng)有退出程序的選項,保證系統(tǒng)的操作易上手。日志獲取日志獲取截圖Monkey圖2-5客戶用例圖2.非功能需求分析在分析系統(tǒng)需求時,功能需求是非常重要的,它關(guān)系到用戶需求。但同時非功能需求也是需求分析重要的一部分,它直接關(guān)系到用戶在系統(tǒng)中的體驗,反映了系統(tǒng)的穩(wěn)定性。本系統(tǒng)主要從以下幾個方面進行分析:1.)系統(tǒng)的響應(yīng)時間:用戶使用功能,系統(tǒng)響應(yīng)、加載所需要的時間。2.)可靠性需求:出現(xiàn)非常規(guī)操作是否會能正常運行。3.)易用性需求:易用性及系統(tǒng)用戶界面的美觀3.2系統(tǒng)設(shè)計本系統(tǒng)的設(shè)計遵循以下原則:單一模塊原則:每個類應(yīng)具有單一功能,并且這一功能由此類完全封裝。實用性原則:GUI界面應(yīng)簡潔實用,易于使用且便于使用??煽啃栽瓌t:系統(tǒng)應(yīng)是穩(wěn)定可靠的,完成后應(yīng)進行相關(guān)測試,驗證系統(tǒng)的穩(wěn)定性。3.3系統(tǒng)軟件結(jié)構(gòu)設(shè)計為了系統(tǒng)的實用性,使用Tkinter模塊為系統(tǒng)設(shè)計了GUI界面,加強了用戶與系統(tǒng)的交互,讓系統(tǒng)變得更加的簡單與易上上手。同時將python的py文件使用pyinstaller打包為可執(zhí)行文件,增強了系統(tǒng)的泛用性,即使在沒有安裝python環(huán)境或者第三方庫的電腦環(huán)境下,也可正常的運行該系統(tǒng)。當使用者不是相關(guān)的技術(shù)人員,可執(zhí)行文件對于用戶來說,更加熟悉與親切。3.4Windows系統(tǒng)通過adb獲取Android日志1.通過官網(wǎng)下載Andriod-sdk-windows,下載并解壓完成后,可得到如下圖2-7-1:圖2-7-1adb目錄2.配置adb在“系統(tǒng)屬性”→“高級系統(tǒng)設(shè)置”→“環(huán)境變量”;如圖2-7-2:圖2-7-2系統(tǒng)屬性在系統(tǒng)變量里尋找Path,雙擊進入后,在右側(cè)菜單選擇新建路徑,如圖2-7-3:圖2-7-3配置環(huán)境變量在terminal窗口中輸入命令adb,若打印如下圖2-7-4,則配置成功圖2-7-4配置成功通過數(shù)據(jù)線把手機連接至電腦,同時在terminal窗口中輸入adblogcat,即可成功輸出當前手機log信息,具體信息可見下圖2-7-5:圖2-7-5獲取log信息以上是在Windows系統(tǒng)環(huán)境下安裝并使用adb獲取Androidlog的基本流程。3.5MonkeytextMonkey是安卓的內(nèi)置模塊,Monkey測試的原理是套接字通信用于模擬按鍵輸入、觸摸屏輸入等操作,檢查設(shè)備在計劃時間內(nèi)是否因長時間的模擬操作而出現(xiàn)異常。Monkey一般的使用步驟:確認設(shè)備是否連接成功,通常使用adbdevices即可確認待測應(yīng)用的包名,查看已安裝應(yīng)用的包名,命令為:adbshellpmlistpackages-3執(zhí)行monkey測試的命令:adbshellmonkey-p所需要測試的應(yīng)用包名-v所需要測試的次數(shù)monkeyMonkey測試的優(yōu)缺點也很突出,個人總結(jié)下它的優(yōu)點在于:功能強大,主要用于壓力和穩(wěn)定性測試。缺點:本身不提供截屏功能,本身無法完成錄制、回放,無法幫助開發(fā)人員回溯現(xiàn)場,因此Monkeytest與本文研究的日志系統(tǒng)正是相輔相成的,通過Monkey進行長時間的穩(wěn)定性測試,發(fā)現(xiàn)應(yīng)用中的缺陷,再由日志系統(tǒng)去定位bug,可以很有效的提高測試的效率。圖3-5Monkey執(zhí)行結(jié)果3.6Andriodlog類型了解Andriodlog的分類,可以幫助我們根據(jù)日志的類型獲取所需的信息。Android日志類型可簡單分為兩種,用于打印的是所有應(yīng)用里面的信息的日志為logcat以及用于記錄內(nèi)核信息的kernel。其中l(wèi)ogcat再往下細分還包括如下表五種。表2-8Anddriodlog類型ID說明Main_logMainlog是最大的一個日志緩沖區(qū),用于記錄應(yīng)用程序及系統(tǒng)產(chǎn)生的打印日志,例如應(yīng)用的程序的運行情況、信號信息等等。Events_logEventslog主要記錄事件操作日志,例如觸摸屏操作、按鍵操作等等信息。Radio_logRadio_log主要記錄來自RIL層的日志,這類型日志主要來源于通信等相關(guān)模塊Crash_logCrach_log主要用來記錄崩潰日志,這類型日志大部分來自于手機應(yīng)用。System_logSystem_log主要用于記錄系統(tǒng)組件的日志,是緩沖區(qū)的主要部分。4功能模塊設(shè)計本系統(tǒng)按需求分析,劃分了兩個主要的功能模塊。接下來,我將具體的介紹這兩個相應(yīng)的功能模塊設(shè)計。4.1日志獲取功能模塊設(shè)計用戶通過可執(zhí)行文件打開系統(tǒng)后,若是有多臺設(shè)備,將會提示用戶輸入相應(yīng)的產(chǎn)品設(shè)備號。若無設(shè)備連接,將提示用戶連接設(shè)備。之后會彈出一個簡單的GUI界面,在界面上,點擊日志獲取的按鈕,便可一鍵獲取已連接到電腦的設(shè)備日志。若僅有一臺設(shè)備連接至電腦,將直接執(zhí)行日志獲取的功能。日志保存路徑將在該系統(tǒng)所在目錄下的log文件夾。日志獲取將按照實現(xiàn)所歸納的分類進行保存,日志保存完成后,會有相應(yīng)的打印提示用戶日志獲取完畢。4.2截圖模塊設(shè)計用戶通過可執(zhí)行文件打開系統(tǒng)后,若是有多臺設(shè)備,將會提示用戶輸入相應(yīng)的產(chǎn)品設(shè)備號。若無設(shè)備連接,將提示用戶連接設(shè)備。之后將彈出一個簡潔的GUI界面,在界面上,點擊截圖按鈕,便可一鍵獲取已連接到電腦的設(shè)備當前屏幕截圖。4.3Monkey模塊設(shè)計用戶通過可執(zhí)行文件打開系統(tǒng)后,若是有多臺設(shè)備,將會提示用戶輸入相應(yīng)的產(chǎn)品設(shè)備號。若無設(shè)備連接,將提示用戶連接設(shè)備。之后會彈出一個簡潔的GUI界面,在界面上,點擊Monkey按鈕,會出現(xiàn)相應(yīng)提示,詢問用戶需要執(zhí)行測試的次數(shù),輸入相應(yīng)次數(shù)后,將開始進行相應(yīng)次數(shù)的Monkeytest。5測試測試主要分為兩個部分:界面測試和功能測試。5.1界面測試界面測試在測試過程中是不可缺失的一環(huán),測試時首先關(guān)注界面的一致性,是否出現(xiàn)個別頁面板塊脫離整體,顏色是否適當、字體是否統(tǒng)一等。從細節(jié)來說,則是關(guān)注到具體每一個板塊是否有錯別字、是否出現(xiàn)語病和歧義以及圖文不一致,不對齊等問題。在測試過程中從整體到個體,由框架流程到每一個板塊的每一個功能,都要細心檢查,記錄出現(xiàn)的問題,方便以后改善。測試結(jié)果如下:系統(tǒng)字體統(tǒng)一,無錯別字,功能模塊對齊,無歧義及語病,如圖5-1。圖5-1界面測試5.2功能測試功能測試是對針對產(chǎn)品功能方面進行的測試,并根據(jù)測試方案與測試用例,逐一測試功能是否達到開發(fā)的預(yù)期,滿足用戶的需求。功能測試的原則:1)測試宜早不宜遲2)不要一味做窮盡測試,要抓住測試的重點,提高測試的效率3)合格的測試用例一定包括兩個部分,測試場景與預(yù)期結(jié)果4)設(shè)計測試用例時,應(yīng)多多考慮邊緣操作、非常規(guī)操作,把自己作為用戶,考慮到每一個細節(jié)。5)測試計劃與用例每一條都要嚴格的執(zhí)行,落實到位,保證測試的準確性,嚴謹性以下是功能測試時的截圖:圖5-2-1截圖圖5-2-2日志保存圖5-2-3輸入monkey執(zhí)行次數(shù)圖5-2-4monkey執(zhí)行完畢圖5-2-5無設(shè)備連接5.3測試用例及執(zhí)行結(jié)果表5-3-1屏幕截圖用例用例ID00001用例名稱 屏幕截圖用例描述用戶在系統(tǒng)中使用截圖功能用例入口系統(tǒng)UI界面測試用例ID場景測試步驟預(yù)期結(jié)果Test001屏幕截圖1.用戶選擇屏幕截圖2.在電腦中檢查圖片是否正確保存至預(yù)期位置3.檢查圖片是否與手機當前顯示狀態(tài)一致1.在terminal中顯示截圖已發(fā)至電腦2.圖片正確保存至在電腦中預(yù)期位置3.圖片是否與手機當前顯示狀態(tài)一致表5-3-2Monkey用例用例ID00002用例名稱 Monkey用例描述用戶在系統(tǒng)中選擇Monkey用例入口系統(tǒng)UI界面測試用例ID場景測試步驟預(yù)期結(jié)果Test002Monkey測試1.用戶選擇Monkey測試2.根據(jù)提示輸入測試次數(shù)3.觀察設(shè)備是否如預(yù)期執(zhí)行Monkey測試1.提示用戶輸入需要測試的次數(shù)2.根據(jù)用戶輸入次數(shù)開始執(zhí)行Monkey測試表5-3-3獲取日志用例用例ID00003用例名稱 獲取日志用例描述用戶在系統(tǒng)中選擇獲取日志用例入口系統(tǒng)UI界面測試用例ID場景測試步驟預(yù)期結(jié)果Test003獲取日志1.在系統(tǒng)中選擇獲取日志2.在對應(yīng)文件夾中檢查是否如預(yù)期產(chǎn)生相應(yīng)系統(tǒng)日志3.檢查日志文件命名是否正確4.檢查是否存在格式損壞或空文件1.對應(yīng)文件夾中產(chǎn)生相應(yīng)系統(tǒng)日志2.提示日志保存完成,并顯示保存路徑3.日志文件命名正確4.不存在格式損壞或空文件表5-3-4連接多臺設(shè)備用例用例ID00004用例名稱 連接多臺設(shè)備用例描述連接多臺設(shè)備,執(zhí)行日志獲取功能用例入口系統(tǒng)UI界面測試用例ID場景測試步驟預(yù)期結(jié)果Test004連接多臺設(shè)備,獲取日志1.在系統(tǒng)中選擇獲取日志2.根據(jù)提示輸入對應(yīng)設(shè)備號3.在對應(yīng)文件夾中檢查是否如預(yù)期產(chǎn)生相應(yīng)系統(tǒng)日志4.檢查日志文件命名是否正確5.檢查是否存在格式損壞或空文件1.輸入對應(yīng)設(shè)備號后,開始執(zhí)行日志獲取2.對應(yīng)文件夾中產(chǎn)生相應(yīng)系統(tǒng)日志3.保存完成后提示日志保存完成,并顯示保存路徑4.日志文件命名正確5.不存在格式損壞或空文件表5-3-5無設(shè)備連接測試用例用例ID00005用例名稱 無設(shè)備連接用例描述無設(shè)備連接,測試系統(tǒng)用例入口系統(tǒng)UI界面測試用例ID場景測試步驟預(yù)期結(jié)果Test005無設(shè)備連接,運行系統(tǒng)1.打開系統(tǒng),觀察輸出1.打印提示無設(shè)備連接表5-3-6多個設(shè)備連接測試用例用例ID00006用例名稱 多個設(shè)備連接用例描述多設(shè)備連接,測試系統(tǒng)用例入口系統(tǒng)UI界面測試用例ID場景測試步驟預(yù)期結(jié)果Test005多設(shè)備連接,運行系統(tǒng)1.打開系統(tǒng),觀察輸出2.根據(jù)提示輸入設(shè)備號3.測試功能1.打印提示輸入設(shè)備號2.輸入設(shè)備號后可正常運行三個功能表5-3-7兼容性測試用例用例ID00007用例名稱 兼容性測試用例描述分別測試不同品牌的手機,查看系統(tǒng)運行狀態(tài)用例入口系統(tǒng)UI界面測試用例ID場景測試步驟預(yù)期結(jié)果Test005使用不同品牌的手機測試系統(tǒng)1.分別連接不同品牌的手機2.打開系統(tǒng),觀察輸出3.測試功能1.系統(tǒng)在不同品牌手機可正常運行參考文獻[1]岳浩.Linux操作系統(tǒng)教程[M].機械工業(yè)出版社.2005.4[2]Kenny橘.2019-06-10PythonAndroid自動化1/10-ADB介紹[J/OL].(2019-06-10)[2020-04-16]./p/3df2af726f85[3]Ahilll.PythonGUI之tkinter窗口視窗教程大集合(看這篇就夠了)[J/OL].(2018-08-09)[2020-04-16]./ahilll/article/details/81531587[4]百度MTC.ANR檢查定位分析工具-baidu_mtc的博客-CSDN博客[J/OL].(2015-12-24)[2020-04-16]./baidu_mtc/article/details/50396143[5]Magic_ww.Pythonlogger模塊_Python_Magic_ww的博客-CSDN博客[J/OL].(2019-12-29)[2020-04-16]./Magic_ww/article/details/103757447[6]Spring.ANR檢查定位分析工具|百度QA[J/OL].(2016-02-29)[2020-04-16]./academy/detail/article/6[7]余英杰.Android手機自動測試日志系統(tǒng)的設(shè)計和實現(xiàn):[D].上海.上海交通大學(xué),2014:6-16[8]孫沫涵.Android系統(tǒng)的持續(xù)集成自動化測試框架的研究與實踐:[D].天津.天津大學(xué),2014:6-16[9]康計良.Python語言的可視化編程環(huán)境的設(shè)計與實現(xiàn):[D].西安.西安電子科技大學(xué),2012:6-16[10]馬開睿.基于Android的應(yīng)用軟件逆向分析及安全保護:[D].成都.西南交通大學(xué),2015:6-16謝辭終于畢業(yè)設(shè)計算是告一段落了,心里反而有點空蕩蕩的,感覺自己馬上就要告別校園去開始人生的下一個階段。在北京理工大學(xué)珠海學(xué)院的四年是充實而難忘的,無論是學(xué)習(xí)上還是生活上,都與四年前的自己有了脫胎換骨般的變化。非常感謝老師、同學(xué)們這四年的照顧,我們共同度過了人生中最美好的一段時間。一分耕耘一分收獲,在學(xué)校的悉心栽培與老師的辛勤教誨下,我才能一步步走向成熟。老師們不光是我們知識的領(lǐng)路人,他們用自己豐富的學(xué)識,嚴謹?shù)闹螌W(xué),無私的奉獻,用自己日常的一言一行鼓勵著我們不斷向前。此外我還要特別的感謝我的指導(dǎo)老師-袁沐春老師。有幸在大三時結(jié)識了這位優(yōu)秀的老師,導(dǎo)師嚴謹細致、一絲不茍的作風(fēng)一向是我工作、學(xué)習(xí)中的榜樣。無論是在過去的課堂還是在論文的攥寫上,袁老師都是全心全意的在幫助我們。老師在做畢設(shè)的期間,給予我們很大的自由度,但是也時時刻刻地盯著我們,關(guān)注著我們的論文。在我們遇到問題時,也都會非常及時的給予我們解答。這次完成論文,無論是格式規(guī)范還是文章結(jié)構(gòu),袁老師都不厭其煩的給予了我很大的幫助,讓我能順利的完成這篇論文。我十分敬愛這位熱愛生活,有品位,有能力而且樂于幫助學(xué)生的導(dǎo)師,能選到她是我的幸運。在此我真誠的感激袁老師,老師您幸苦了。此外我還要感謝我的舍友們,是他們開朗的性格與寬闊的胸襟,讓我大學(xué)四年過的無憂無慮。同時舍友們的勤學(xué)上進,一直是激勵我不斷前進的動力。雖然大家都快要各自追逐各自的前程了,但青山不改綠水長流,我將永遠記得這段精彩的大學(xué)時光,希望我們以后有機會再歡聚一堂,也祝你們今后前程似錦!最后,我還要感謝評閱本文的老師,教授和專家,也感謝您抽出寶貴的時間閱讀本文。由于個人水平有限,論文存在的種種瑕疵還望不吝指教。

ExcelXP的八則快速輸入技巧如果我們在用ExcelXP處理龐大的數(shù)據(jù)信息時,不注意講究技巧和方法的話,很可能會花費很大的精力。因此如何巧用ExcelXP,來快速輸入信息就成為各個ExcelXP用戶非常關(guān)心的話題,筆者向大家介紹幾則這方面的小技巧。1、快速輸入大量含小數(shù)點的數(shù)字如果我們需要在ExcelXP工作表中輸入大量的帶有小數(shù)位的數(shù)字時,按照普通的輸入方法,我們可能按照數(shù)字原樣大小直接輸入,例如現(xiàn)在要在單元格中輸入0.05這個數(shù)字時,我們會把“0.05”原樣輸入到表格中。不過如果需要輸入若干個帶有小數(shù)點的數(shù)字時,我們再按照上面的方法輸入的話,每次輸入數(shù)字時都需要重復(fù)輸入小數(shù)點,這樣工作量會變大,輸入效率會降低。其實,我們可以使用ExcelXP中的小數(shù)點自動定位功能,讓所有數(shù)字的小數(shù)點自動定位,從而快速提高輸入速度。在使用小數(shù)點自動定位功能時,我們可以先在ExcelXP的編輯界面中,用鼠標依次單擊“工具”/“選項”/“編輯”標簽,在彈出的對話框中選中“自動設(shè)置小數(shù)點”復(fù)選框,然后在“位數(shù)”微調(diào)編輯框中鍵入需要顯示在小數(shù)點右面的位數(shù)就可以了。以后我們再輸入帶有小數(shù)點的數(shù)字時,直接輸入數(shù)字,而小數(shù)點將在回車鍵后自動進行定位。例如,我們要在某單元格中鍵入0.06的話,可以在上面的設(shè)置中,讓“位數(shù)”選項為2,然后直接在指定單元格中輸入6,回車以后,該單元格的數(shù)字自動變?yōu)椤?.06”,怎么樣簡單吧?2、快速錄入文本文件中的內(nèi)容現(xiàn)在您手邊假如有一些以純文本格式儲存的文件,如果此時您需要將這些數(shù)據(jù)制作成ExcelXP的工作表,那該怎么辦呢?重新輸入一遍,大概只有頭腦有毛病的人才會這樣做;將菜單上的數(shù)據(jù)一個個復(fù)制/粘貼到工作表中,也需花很多時間。沒關(guān)系!您只要在ExcelXP中巧妙使用其中的文本文件導(dǎo)入功能,就可以大大減輕需要重新輸入或者需要不斷復(fù)制、粘貼的巨大工作量了。使用該功能時,您只要在ExcelXP編輯區(qū)中,依次用鼠標單擊菜單欄中的“數(shù)據(jù)/獲取外部數(shù)據(jù)/導(dǎo)入文本文件”命令,然后在導(dǎo)入文本會話窗口選擇要導(dǎo)入的文本文件,再按下“導(dǎo)入”鈕以后,程序會彈出一個文本導(dǎo)入向?qū)υ捒?,您只要按照向?qū)У奶崾具M行操作,就可以把以文本格式的數(shù)據(jù)轉(zhuǎn)換成工作表的格式了。3、快速輸入大量相同數(shù)據(jù)如果你希望在不同的單元格中輸入大量相同的數(shù)據(jù)信息,那么你不必逐個單元格一個一個地輸入,那樣需要花費好長時間,而且還比較容易出錯。你可以通過下面的操作方法在多個相鄰或不相鄰的單元格中快速填充同一個數(shù)據(jù),具體方法為:首先同時選中需要填充數(shù)據(jù)的單元格。若某些單元格不相鄰,可在按住Ctrl鍵的同時,點擊鼠標左鍵,逐個選中;其次輸入要填充的某個數(shù)據(jù)。按住Ctrl鍵的同時,按回車鍵,則剛才選中的所有單元格同時填入該數(shù)據(jù)。4、快速進行中英文輸入法切換一張工作表常常會既包含有數(shù)字信息,又包含有文字信息,要錄入這樣一種工作表就需要我們不斷地在中英文之間反復(fù)切換輸入法,非常麻煩,為了方便操作,我們可以用以下方法實現(xiàn)自動切換:首先用鼠標選中需要輸入中文的單元格區(qū)域,然后在輸入法菜單中選擇一個合適的中文輸入法;接著打開“有效數(shù)據(jù)”對話框,選中“IME模式”標簽,在“模式”框中選擇打開,單擊“確定”按鈕;然后再選中輸入數(shù)字的單元格區(qū)域,在“有效數(shù)據(jù)”對話框中,單擊“IME模式”選項卡,在“模式”框中選擇關(guān)閉(英文模式);最后單擊“確定”按鈕,這樣用鼠標分別在剛才設(shè)定的兩列中選中單元格,五筆和英文輸入方式就可以相互切換了。5、快速刪除工作表中空行刪除ExcelXP工作表中的空行,一般的方法是需要將空行都找出來,然后逐行刪除,但這樣做操作量非常大,很不方便。那么如何才能減輕刪除工作表中空行的工作量呢?您可以使用下面的操作方法來進行刪除:首先打開要刪除空行的工作表,在打開的工作表中用鼠標單擊菜單欄中的“插入”菜單項,并從下拉菜單中選擇“列”,從而插入一新的列X,在X列中順序填入整數(shù);然后根據(jù)其他任何一列將表中的行排序,使所有空行都集中到表的底部。刪去所有空行中X列的數(shù)據(jù),以X列重新排序,然后刪去X列。按照這樣的刪除方法,無論工作表中包含多少空行,您就可以很快地刪除了。6、快速對不同單元格中字號進行調(diào)整在使用ExcelXP編輯文件時,常常需要將某一列的寬度固定,但由于該列各單元格中的字符數(shù)目不等,致使有的單元格中的內(nèi)容不能完全顯示在屏幕上,為了讓這些單元格中的數(shù)據(jù)都顯示在屏幕上,就不得不對這些單元格重新定義較小的字號。如果依次對這些單元格中的字號調(diào)整的話,工作量將會變得很大。其實,您可以采用下面的方法來減輕字號調(diào)整的工作量:首先新建或打開一個工作簿,并選中需要ExcelXP根據(jù)單元格的寬度調(diào)整字號的單元格區(qū)域;其次單擊用鼠標依次單擊菜單欄中的“格式”/“單元格”/“對齊”標簽,在“文本控制”下選中“縮小字體填充”復(fù)選框,并單擊“確定”按鈕;此后,當你在這些單元格中輸入數(shù)據(jù)時,如果輸入的數(shù)據(jù)長度超過了單元格的寬度,ExcelXP能夠自動縮小字符的大小把數(shù)據(jù)調(diào)整到與列寬一致,以使數(shù)據(jù)全部顯示在單元格中。如果你對這些單元格的列寬進行了更改,則字符可自動增大或縮小字號,以適應(yīng)新的單元格列寬,但是對這些單元格原設(shè)置的字體字號大小則保持不變。7、快速輸入多個重復(fù)數(shù)據(jù)在使用ExcelXP工作表的過程中,我們經(jīng)常要輸入大量重復(fù)的數(shù)據(jù),如果依次輸入,無疑工作量是巨大的?,F(xiàn)在我們可以借助ExcelXP的“宏”功能,來記錄首次輸入需要重復(fù)輸入的數(shù)據(jù)的命令和過程,然后將這些命令和過程賦值到一個組合鍵或工具欄的按鈕上,當按下組合鍵時,計算機就會重復(fù)所記錄的操作。使用宏功能時,我們可以按照以下步驟進行操作:首先打開工作表,在工作表中選中要進行操作的單元格;接著再用鼠標單擊菜單欄中的“工具”菜單項,并從彈出的下拉菜單中選擇“宏”子菜單項,并從隨后彈出的下級菜單中選擇“錄制新宏”命令;設(shè)定好宏后,我們就可以對指定的單元格,進行各種操作,程序?qū)⒆詣訉λM行的各方面操作記錄復(fù)制。8、快速處理多個工作表有時我們需要在ExcelXP中打開多個工作表來進行編輯,但無論打開多少工作表,在某一時刻我們只能對一個工作表進行編輯,編輯好了以后再依次編輯下一個工作表,如果真是這樣操作的話,我們倒沒有這個必要同時打開多個工作表了,因為我們同時打開多個工作表的目的就是要減輕處理多個工作表的工作量的,那么我們該如何實現(xiàn)這樣的操作呢?您可采用以下方法:首先按住“Shift"鍵或“Ctrl"鍵并配以鼠標操作,在工作簿底部選擇多個彼此相鄰或不相鄰的工作表標簽,然后就可以對其實行多方面的批量處理;接著在選中的工作表標簽上按右鍵彈出快捷菜單,進行插入和刪除多個工作表的操作;然后在“文件”菜單中選擇“頁面設(shè)置……”,將選中的多個工作表設(shè)成相同的頁面模式;再通過“編輯”菜單中的有關(guān)選項,在多個工作表范圍內(nèi)進行查找、替換、定位操作;通過“格式”菜單中的有關(guān)選項,將選中的多個工作表的行、列、單元格設(shè)成相同的樣式以及進行一次性全部隱藏操作;接著在“工具”菜單中選擇“選項……”,在彈出的菜單中選擇“視窗”和“編輯”按鈕,將選中的工作表設(shè)成相同的視窗樣式和單元格編輯屬性;最后選中上述工作表集合中任何一個工作表,并在其上完成我們所需要的表格,則其它工作表在相同的位置也同時生成了格式完全相同的表格。高效辦公Excel排序方法"集中營"排序是數(shù)據(jù)處理中的經(jīng)常性工作,Excel排序有序數(shù)計算(類似成績統(tǒng)計中的名次)和數(shù)據(jù)重排兩類。本文以幾個車間的產(chǎn)值和名稱為例,介紹Excel2000/XP的數(shù)據(jù)排序方法。一、數(shù)值排序1.RANK函數(shù)RANK函數(shù)是Excel計算序數(shù)的主要工具,它的語法為:RANK(number,ref,order),其中number為參與計算的數(shù)字或含有數(shù)字的單元格,ref是對參與計算的數(shù)字單元格區(qū)域的絕對引用,order是用來說明排序方式的數(shù)字(如果order為零或省略,則以降序方式給出結(jié)果,反之按升序方式)。例如圖1中E2、E3、E4單元格存放一季度的總產(chǎn)值,計算各車間產(chǎn)值排名的方法是:在F2單元格內(nèi)輸入公式“=RANK(E2,$E$2:$E$4)”,敲回車即可計算出鑄造車間的產(chǎn)值排名是2。再將F2中的公式復(fù)制到剪貼板,選中F3、F4單元格按Ctrl+V,就能計算出其余兩個車間的產(chǎn)值排名為3和1。如果B1單元格中輸入的公式為“=RANK(E2,$E$2:$E$4,1)”,則計算出的序數(shù)按升序方式排列,即2、1和3。需要注意的是:相同數(shù)值用RANK函數(shù)計算得到的序數(shù)(名次)相同,但會導(dǎo)致后續(xù)數(shù)字的序數(shù)空缺。假如上例中F2單元格存放的數(shù)值與F3相同,則按本法計算出的排名分別是3、3和1(降序時)。2.COUNTIF函數(shù)COUNTIF函數(shù)可以統(tǒng)計某一區(qū)域中符合條件的單元格數(shù)目,它的語法為COUNTIF(range,criteria)。其中range為參與統(tǒng)計的單元格區(qū)域,criteria是以數(shù)字、表達式或文本形式定義的條件。其中數(shù)字可以直接寫入,表達式和文本必須加引號。仍以圖1為例,F(xiàn)2單元格內(nèi)輸入的公式為“=COUNTIF($E$2:$E$4,">"&E2)+1”。計算各車間產(chǎn)值排名的方法同上,結(jié)果也完全相同,2、1和3。此公式的計算過程是這樣的:首先根據(jù)E2單元格內(nèi)的數(shù)值,在連接符&的作用下產(chǎn)生一個邏輯表達式,即“>176.7”、“>167.3”等。COUNTIF函數(shù)計算出引用區(qū)域內(nèi)符合條件的單元格數(shù)量,該結(jié)果加一即可得到該數(shù)值的名次。很顯然,利用上述方法得到的是降序排列的名次,對重復(fù)數(shù)據(jù)計算得到的結(jié)果與RANK3.IF函數(shù)Excel自身帶有排序功能,可使數(shù)據(jù)以降序或升序方式重新排列。如果將它與IF函數(shù)結(jié)合,可以計算出沒有空缺的排名。以圖1中E2、E3、E4單元格的產(chǎn)值排序為例,具體做法是:選中E2單元格,根據(jù)排序需要,單擊Excel工具欄中的“降序排序”或“升序排序”按鈕,即可使工作表中的所有數(shù)據(jù)按要求重新排列。假如數(shù)據(jù)是按產(chǎn)值由大到?。ń敌颍┡帕械?,而您又想賦予每個車間從1到n(n為自然數(shù))的排名??梢栽贕2單元格中輸入1,然后在G3單元格中輸入公式“=IF(E3=E2,G3,G3+1)”,只要將公式復(fù)制到G4等單元格,就可以計算出其他車間的產(chǎn)值排名。二、文本排序選舉等場合需要按姓氏筆劃為文本排序,Excel提供了比較好的解決辦法。如果您要將圖1數(shù)據(jù)表按車間名稱的筆劃排序,可以使用以下方法:選中排序關(guān)鍵字所在列(或行)的首個單元格(如圖1中的A1),單擊Excel“數(shù)據(jù)”菜單下的“排序”命令,再單擊其中的“選項”按鈕。選中“排序選項”對話框“方法”下的“筆畫排序”,再根據(jù)數(shù)據(jù)排列方向選擇“按行排序”或“按列排序”,“確定”后回到“排序”對話框(圖2)。如果您的數(shù)據(jù)帶有標題行(如圖1中的“單位”之類),則應(yīng)選中“有標題行”(反之不選),然后打開“主要關(guān)鍵字”下拉列表,選擇其中的“單位”,選中排序方式(“升序”或“降序”)后“確定”,表中的所有數(shù)據(jù)就會據(jù)此重新排列。此法稍加變通即可用于“第一名”、“第二名”等文本排序,請讀者自行摸索。三、自定義排序如果您要求Excel按照“金工車間”、“鑄造車間”和“維修車間”的特定順序重排工作表數(shù)據(jù),前面介紹的幾種方法就無能為力了。這類問題可以用定義排序規(guī)則的方法解決:首先單擊Excel“工具”菜單下的“選項”命令,打開“選項”對話框中的“自定義序列”選項卡(圖3)。選中左邊“自定義序列”下的“新序列”,光標就會在右邊的“輸入序列”框內(nèi)閃動,您就可以輸入“金工車間”、“鑄造車間”等自定義序列了,輸入的每個序列之間要用英文逗號分隔,或者每輸入一個序列就敲回車。如果序列已經(jīng)存在于工作表中,可以選中序列所在的單元格區(qū)域單擊“導(dǎo)入”,這些序列就會被自動加入“輸入序列”框。無論采用以上哪種方法,單擊“添加”按鈕即可將序列放入“自定義序列”中備用(圖3)。使用排序規(guī)則排序的具體方法與筆劃排序很相似,只是您要打開“排序選項”對話框中的“自定義排序次序”下拉列表,選中前面定義的排序規(guī)則,其他選項保持不動。回到“排序”對話框后根據(jù)需要選擇“升序”或“降序”,“確定”后即可完成數(shù)據(jù)的自定義排序。需要說明的是:顯示在“自定義序列”選項卡中的序列(如一、二、三等),均可按以上方法參與排序,請讀者注意Excel提供的自定義序列類型。談?wù)凟xcel輸入的技巧在Excel工作表的單元格中,可以使用兩種最基本的數(shù)據(jù)格式:常數(shù)和公式。常數(shù)是指文字、數(shù)字、日期和時間等數(shù)據(jù),還可以包括邏輯值和錯誤值,每種數(shù)據(jù)都有它特定的格式和輸入方法,為了使用戶對輸入數(shù)據(jù)有一個明確的認識,有必要來介紹一下在Excel中輸入各種類型數(shù)據(jù)的方法和技巧。一、輸入文本Excel單元格中的文本包括任何中西文文字或字母以及數(shù)字、空格和非數(shù)字字符的組合,每個單元格中最多可容納32000個字符數(shù)。雖然在Excel中輸入文本和在其它應(yīng)用程序中沒有什么本質(zhì)區(qū)別,但是還是有一些差異,比如我們在Word、PowerPoint的表格中,當在單元格中輸入文本后,按回車鍵表示一個段落的結(jié)束,光標會自動移到本單元格中下一段落的開頭,在Excel的單元格中輸入文本時,按一下回車鍵卻表示結(jié)束當前單元格的輸入,光標會自動移到當前單元格的下一個單元格,出現(xiàn)這種情況時,如果你是想在單元格中分行,則必須在單元格中輸入硬回車,即按住Alt鍵的同時按回車鍵。二、輸入分數(shù)幾乎在所有的文檔中,分數(shù)格式通常用一道斜杠來分界分子與分母,其格式為“分子/分母”,在Excel中日期的輸入方法也是用斜杠來區(qū)分年月日的,比如在單元格中輸入“1/2”,按回車鍵則顯示“1月2日”,為了避免將輸入的分數(shù)與日期混淆,我們在單元格中輸入分數(shù)時,要在分數(shù)前輸入“0”(零)以示區(qū)別,并且在“0”和分子之間要有一個空格隔開,比如我們在輸入1/2時,則應(yīng)該輸入“01/2”。如果在單元格中輸入“81/2”,則在單元格中顯示“81/2”,而在編輯欄中顯示“三、輸入負數(shù)在單元格中輸入負數(shù)時,可在負數(shù)前輸入“-”作標識,也可將數(shù)字置在()括號內(nèi)來標識,比如在單元格中輸入“(88)”,按一下回車鍵,則會自動顯示為“-88”。四、輸入小數(shù)在輸入小數(shù)時,用戶可以向平常一樣使用小數(shù)點,還可以利用逗號分隔千位、百萬位等,當輸入帶有逗號的數(shù)字時,在編輯欄并不顯示出來,而只在單元格中顯示。當你需要輸入大量帶有固定小數(shù)位的數(shù)字或帶有固定位數(shù)的以“0”字符串結(jié)尾的數(shù)字時,可以采用下面的方法:選擇“工具”、“選項”命令,打開“選項”對話框,單擊“編輯”標簽,選中“自動設(shè)置小數(shù)點”復(fù)選框,并在“位數(shù)”微調(diào)框中輸入或選擇要顯示在小數(shù)點右面的位數(shù),如果要在輸入比較大的數(shù)字后自動添零,可指定一個負數(shù)值作為要添加的零的個數(shù),比如要在單元格中輸入“88”后自動添加3個零,變成“88000”,就在“位數(shù)”微調(diào)框中輸入“-3”,相反,如果要在輸入“88”后自動添加3位小數(shù),變成“0.088”,則要在“位數(shù)”微調(diào)框中輸入“3”。另外,在完成輸入帶有小數(shù)位或結(jié)尾零字符串的數(shù)字后,應(yīng)清除對“自動設(shè)置小數(shù)點”符選框的選定,以免影響后邊的輸入;如果只是要暫時取消在“自動設(shè)置小數(shù)點”中設(shè)置的選項,可以在輸入數(shù)據(jù)時自帶小數(shù)點。五、輸入貨幣值Excel幾乎支持所有的貨幣值,如人民幣(¥)、英鎊(£)等。歐元出臺以后,Excel2000完全支持顯示、輸入和打印歐元貨幣符號。用戶可以很方便地在單元格中輸入各種貨幣值,Excel會自動套用貨幣格式,在單元格中顯示出來,如果用要輸入人民幣符號,可以按住Alt鍵,然后再數(shù)字小鍵盤上按“0165”即可。六、輸入日期Excel是將日期和時間視為數(shù)字處理的,它能夠識別出大部分用普通表示方法輸入的日期和時間格式。用戶可以用多種格式來輸入一個日期,可以用斜杠“/”或者“-”來分隔日期中的年、月、日部分。比如要輸入“2001年12月1日”,可以在單元各種輸入“2001/12/1”或者“2001-12-1七、輸入時間在Excel中輸入時間時,用戶可以按24小時制輸入,也可以按12小時制輸入,這兩種輸入的表示方法是不同的,比如要輸入下午2時30分38秒,用24小時制輸入格式為:2:30:38,而用12小時制輸入時間格式為:2:30:38p,注意字母“p”和時間之間有一個空格。如果要在單元格中插入當前時間,則按Ctrl+Shift+;鍵。了解Excel公式的錯誤值經(jīng)常用Excel的朋友可能都會遇到一些莫名奇妙的錯誤值信息:#N/A!、#VALUE!、#DIV/O!等等,出現(xiàn)這些錯誤的原因有很多種,如果公式不能計算正確結(jié)果,Excel將顯示一個錯誤值,例如,在需要數(shù)字的公式中使用文本、刪除了被公式引用的單元格,或者使用了寬度不足以顯示結(jié)果的單元格。以下是幾種常見的錯誤及其解決方法。1.#####!原因:如果單元格所含的數(shù)字、日期或時間比單元格寬,或者單元格的日期時間公式產(chǎn)生了一個負值,就會產(chǎn)生#####!錯誤。解決方法:如果單元格所含的數(shù)字、日期或時間比單元格寬,可以通過拖動列表之間的寬度來修改列寬。如果使用的是1900年的日期系統(tǒng),那么Excel中的日期和時間必須為正值,用較早的日期或者時間值減去較晚的日期或者時間值就會導(dǎo)致#####!錯誤。如果公式正確,也可以將單元格的格式改為非日期和時間型來顯示該值。2.#VALUE!當使用錯誤的參數(shù)或運算對象類型時,或者當公式自動更正功能不能更正公式時,將產(chǎn)生錯誤值#VALUE!。原因一:在需要數(shù)字或邏輯值時輸入了文本,Excel不能將文本轉(zhuǎn)換為正確的數(shù)據(jù)類型。解決方法:確認公式或函數(shù)所需的運算符或參數(shù)正確,并且公式引用的單元格中包含有效的數(shù)值。例如:如果單元格A1包含一個數(shù)字,單元格A2包含文本"學(xué)籍",則公式"=A1+A2"將返回錯誤值#VALUE!??梢杂肧UM工作表函數(shù)將這兩個值相加(SUM函數(shù)忽略文本):=SUM(A1:A2)。原因二:將單元格引用、公式或函數(shù)作為數(shù)組常量輸入。解決方法:確認數(shù)組常量不是單元格引用、公式或函數(shù)。原因三:賦予需要單一數(shù)值的運算符或函數(shù)一個數(shù)值區(qū)域。解決方法:將數(shù)值區(qū)域改為單一數(shù)值。修改數(shù)值區(qū)域,使其包含公式所在的數(shù)據(jù)行或列。3.#DIV/O!當公式被零除時,將會產(chǎn)生錯誤值#DIV/O!。原因一:在公式中,除數(shù)使用了指向空單元格或包含零值單元格的單元格引用(在Excel中如果運算對象是空白單元格,Excel將此空值當作零值)。解決方法:修改單元格引用,或者在用作除數(shù)的單元格中輸入不為零的值。原因二:輸入的公式中包含明顯的除數(shù)零,例如:=5/0。解決方法:將零改為非零值。4.#NAME?在公式中使用了Excel不能識別的文本時將產(chǎn)生錯誤值#NAME?。原因一:刪除了公式中使用的名稱,或者使用了不存在的名稱。解決方法:確認使用的名稱確實存在。選擇菜單"插入"|"名稱"|"定義"命令,如果所需名稱沒有被列出,請使用"定義"命令添加相應(yīng)的名稱。原因二:名稱的拼寫錯誤。解決方法:修改拼寫錯誤的名稱。原因三:在公式中使用標志。解決方法:選擇菜單中"工具"|"選項"命令,打開"選項"對話框,然后單擊"重新計算"標簽,在"工作薄選項"下,選中"接受公式標志"復(fù)選框。原因四:在公式中輸入文本時沒有使用雙引號。解決方法:Excel將其解釋為名稱,而不理會用戶準備將其用作文本的想法,將公式中的文本括在雙引號中。例如:下面的公式將一段文本"總計:"和單元格B50中的數(shù)值合并在一起:="總計:"&B50原因五:在區(qū)域的引用中缺少冒號。解決方法:確認公式中,使用的所有區(qū)域引用都使用冒號。例如:SUM(A2:B34)。5.#N/A原因:當在函數(shù)或公式中沒有可用數(shù)值時,將產(chǎn)生錯誤值#N/A。解決方法:如果工作表中某些單元格暫時沒有數(shù)值,請在這些單元格中輸入"#N/A",公式在引用這些單元格時,將不進行數(shù)值計算,而是返回#N/A。6.#REF!當單元格引用無效時將產(chǎn)生錯誤值#REF!。原因:刪除了由其他公式引用的單元格,或?qū)⒁苿訂卧裾迟N到由其他公式引用的單元格中。解決方法:更改公式或者在刪除或粘貼單元格之后,立即單擊"撤消"按鈕,以恢復(fù)工作表中的單元格。7.#NUM!當公式或函數(shù)中某個數(shù)字有問題時將產(chǎn)生錯誤值#NUM!。原因一:在需要數(shù)字參數(shù)的函數(shù)中使用了不能接受的參數(shù)。解決方法:確認函數(shù)中使用的參數(shù)類型正確無誤。原因二:使用了迭代計算的工作表函數(shù),例如:IRR或RATE,并且函數(shù)不能產(chǎn)生有效的結(jié)果。解決方法:為工作表函數(shù)使用不同的初始值。原因三:由公式產(chǎn)生的數(shù)字太大或太小,Excel不能表示。解決方法:修改公式,使其結(jié)果在有效數(shù)字范圍之間。8.#NULL!當試圖為兩個并不相交的區(qū)域指定交叉點時將產(chǎn)生錯誤值#NULL!。原因:使用了不正確的區(qū)域運算符或不正確的單元格引用。解決方法:如果要引用兩個不相交的區(qū)域,請使用聯(lián)合運算符逗號(,)。公式要對兩個區(qū)域求和,請確認在引用這兩個區(qū)域時,使用逗號。如:SUM(A1:A13,D12:D23)。如果沒有使用逗號,Excel將試圖對同時屬于兩個區(qū)域的單元格求和,但是由于A1:A13和D12:D23并不相交,所以他們沒有共同的單元格。在Excel中快速查看所有工作表公式只需一次簡單的鍵盤點擊,即可可以顯示出工作表中的所有公式,包括Excel用來存放日期的序列值。要想在顯示單元格值或單元格公式之間來回切換,只需按下CTRL+`(位于TAB鍵上方)。EXCEL2000使用技巧十招1、Excel文件的加密與隱藏如果你不愿意自己的Excel文件被別人查看,那么你可以給它設(shè)置密碼保護,采用在保存文件時用加密的方法就可以實現(xiàn)保護目的,在這里要特別注意的是,自己設(shè)定的密碼一定要記住,否則自己也將被視為非法入侵者而遭拒絕進入。給文件加密的具體方法為:A、單擊“文件”菜單欄中的“保存或者(另存為)”命令后,在彈出的“保存或者(另存為)”的對話框中輸入文件名;B、再單擊這個對話框中“工具”欄下的“常規(guī)選項”按鈕,在彈出的“保存選項”的對話框中輸入自己的密碼;這里要注意,它提供了兩層保護,如果你也設(shè)置了修改權(quán)限密碼的話,那么即使文件被打開也還需要輸入修改權(quán)限的密碼才能修改。C、單擊“確定”按鈕,在彈出的密碼確認窗口中重新輸入一遍密碼,再點擊“確認”,最后點“保存”完成文件的加密工作。當重新打開文件時就要求輸入密碼,如果密碼不正確,文件將不能打開。2、對單元格進行讀寫保護單元格是Excel執(zhí)行其強大的計算功能最基本的元素,對單元格的讀寫保護是Excel對數(shù)據(jù)進行安全管理的基礎(chǔ)。對單元格的保護分為寫保護和讀保護兩類,所謂寫保護就是對單元格中輸入信息加以限制,讀保護是對單元格中已經(jīng)存有信息的瀏覽和查看加以限制。對單元格的寫保護有兩種方法:A、對單元格的輸入信息進行有效性檢測。首先選定要進行有效性檢測的單元格或單

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論