版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 本科生畢業(yè)設(shè)計(論文)</p><p> 新疆農(nóng)業(yè)大學(xué)教務(wù)處制</p><p><b> 目 錄</b></p><p> 摘要 …………………………………………………………………………………1</p><p> 前言 …………………………………………………………………………………2<
2、;/p><p> 1 動態(tài)圖形實現(xiàn)技術(shù)的簡介…………………………………………………………2</p><p> 1.1 PHP簡介………………………………………………………………………2</p><p> 1.2 GD圖形庫簡介 ………………………………………………………………3</p><p> 1.3 JpGraph類庫簡介………………
3、……………………………………………3</p><p> 2 開發(fā)平臺及組件安裝說明………………………………………………………4</p><p> 2.1 開發(fā)平臺………………………………………………………………………4</p><p> 2.2 組件安裝簡介…………………………………………………………………4</p><p> 2.2
4、.1 GD圖形庫安裝簡介…………………………………………………………4</p><p> 2.2.2 JpGraph類庫安裝簡介……………………………………………………4</p><p> 2.2.3 JpGraph類庫文件說明……………………………………………………5</p><p> 3 動態(tài)圖形的實現(xiàn)……………………………………………………………………6
5、</p><p> 3.1 總體設(shè)計思想…………………………………………………………………6</p><p> 3.2 數(shù)據(jù)庫設(shè)計……………………………………………………………………6</p><p> 3.3 利用GD圖形函數(shù)庫繪制動態(tài)圖形…………………………………………7</p><p> 3.4 利用第三方類庫JpGraph繪制
6、動態(tài)圖形……………………………………11</p><p> 3.5 兩個組件實用性總結(jié)對比…………………………………………………14</p><p> 3.5.1 GD圖形函數(shù)庫 ……………………………………………………………14</p><p> 3.5.2 JpGraph類庫………………………………………………………………14</p><
7、;p> 4 結(jié)論 ………………………………………………………………………………16</p><p> 謝辭 …………………………………………………………………………………17</p><p> 參考文獻 ……………………………………………………………………………18</p><p> 附錄 ……………………………………………………………………
8、……………19</p><p> PHP腳本動態(tài)生成圖形的方法研究</p><p> 摘要:本文對Linux服務(wù)器環(huán)境下利用PHP腳本動態(tài)生成圖形的方法進行了一些研究,分別分析了利用GD圖形庫生成動態(tài)圖形的方法,及利用JpGraph類庫生成動態(tài)圖形的方法,實現(xiàn)了通過PHP腳本繪制出柱狀圖、折線圖和餅圖,并給出了實現(xiàn)過程。</p><p> 關(guān)鍵詞:PHP;GD
9、庫;JpGraph</p><p> Research on Dynamically Graph Generation with PHP</p><p> Chen Juan-Juan</p><p> Abstract: This article conducted some research to the method of using the PHP s
10、cript dynamic production graph under the Linux server environment, analyzed the method used the GD graph library production graph of dynamic, and analyzed the method using the JpGraph library production graph of dynamic,
11、 drew up the stick plot, the line chart and the cake chart through the PHP script has been realized, and has given the realization process.</p><p> Key words: PHP;GD library;JpGraph</p><p><
12、b> 前言</b></p><p> 當今社會正處于網(wǎng)絡(luò)時代, 信息化大潮席卷全球, Internet正日益向社會每一個角落延伸。隨著WWW瀏覽器技術(shù)的不斷成熟,利用ASP、PHP、JSP技術(shù)制作的動態(tài)網(wǎng)頁也越來越多,在Internet上,有大量的數(shù)據(jù)信息,尤其是在一些商業(yè)網(wǎng)站上,經(jīng)常會應(yīng)用戶不同要求對有關(guān)數(shù)據(jù)做出統(tǒng)計, 動態(tài)輸出各種統(tǒng)計圖, 用于顯示一些市場的銷售報告、供應(yīng)需求信息或者股票
13、市場的大盤信息。這些圖形蘊含的數(shù)據(jù)庫數(shù)據(jù)是動態(tài)的, 而圖形顯示的結(jié)果是靜態(tài)的,如何實現(xiàn)這些動態(tài)統(tǒng)計圖形在網(wǎng)頁上的顯示,這是現(xiàn)在基于Internet的動態(tài)圖形一個難點問題。</p><p> 目前主要是利用不斷成熟的WWW瀏覽器技術(shù)來開發(fā)動態(tài)網(wǎng)頁,最流行也是比較成熟的有ASP、PHP、JSP技術(shù),它們都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。在ASP、PHP、或JSP環(huán)境下,HTM
14、L代碼主要負責(zé)描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。他們都是利用內(nèi)置或第三方組件對數(shù)據(jù)庫或其它數(shù)據(jù)庫進行訪問,依據(jù)結(jié)果產(chǎn)生動態(tài)網(wǎng)頁,發(fā)送到客戶端,由瀏覽器解釋顯示結(jié)果,顯示結(jié)果一般是表格形式。如果采用統(tǒng)計圖形(柱狀圖、折線圖、餅圖等)方式輸出結(jié)果, 則不能直接生成網(wǎng)頁, 而要把結(jié)果提交給可以輸出圖表的組件, 再由組件完成圖形輸出。</p><p> 由于PHP是一種服務(wù)器端、跨平臺、HTML嵌入式的
15、腳本語言,易學(xué)易用,支持大量的數(shù)據(jù)庫,程序的執(zhí)行效率極高,尤其是對MYSQL數(shù)據(jù)庫的存取非常直接、簡練、沒有額外的開銷。最重要的是完全免費并且提供圖形函數(shù)庫,因而本文主要針對用PHP語言生成動態(tài)圖形的方法進行了一些研究,發(fā)現(xiàn)了幾種圖形繪制的方法。這些方法來自于對兩個組件的使用,一個組件是PHP自帶的GD圖形庫,而另一個是由瑞典人Johan Persson開發(fā)的,能方便繪制各種用于商業(yè)和科學(xué)領(lǐng)域的圖形的第三方組件——JpGraph類庫。本
16、文用幾個常用的圖形的實例來展示了如何利用PHP語言生成動態(tài)統(tǒng)計圖形。</p><p> 1 動態(tài)圖形實現(xiàn)技術(shù)的簡介</p><p><b> 1.1 PHP簡介</b></p><p> PHP的全名為:“Hypertext Preprocessor”,它是一種HTML內(nèi)嵌式的腳本語言,類似于IIS上運行的ASP。PHP將編寫的程序與HT
17、ML源代碼混合在一起,用一些特殊的標識將語句與HTML代碼分開,當用戶對此網(wǎng)頁發(fā)出瀏覽請求時在服務(wù)器端將標識內(nèi)的語句運行完,把運行結(jié)果與HTML代碼合為一體返回給用戶端的瀏覽器,其工作方式如圖1-1所示。</p><p> 圖1-1 PHP工作方式示意圖</p><p> PHP使用了自己獨特的語法,是一種混合了C、Java、Perl以及結(jié)合Web應(yīng)用的獨特性而產(chǎn)生的新語法。這種語法基
18、本是以C的語法模式來書寫,但是沒有C語言那么嚴格,同時和Java一樣是一種解釋性的語言。聽起來很是麻煩,不過只要花一點時間,就會發(fā)現(xiàn)PHP的語法還是易學(xué)易用的。</p><p> PHP語言可以比CGI或是Perl更快地執(zhí)行動態(tài)網(wǎng)頁,原因是PHP將自己編譯進Web服務(wù)器(Apache)內(nèi)部,同時又以靈活的形式存在于其他Web服務(wù)器中。它能夠以傳統(tǒng)的類似Perl的CGI解釋方式執(zhí)行,也能夠以ISAPI方式應(yīng)用于I
19、IS之中,還能以模塊化方式直接與Apache一起編譯,從而達到同Apache一樣的高效和穩(wěn)定。</p><p> 1.2 GD圖形庫簡介</p><p> GD是一個以C語言源碼形式提供的跨平臺免費繪圖軟件包,可以編譯成DOS、Windows、Unix等不同版本,可以在其官方網(wǎng)站進行下載。GD的圖形功能包括在內(nèi)存中建立繪圖對象,設(shè)置繪圖顏色,畫線、畫圓和填充矩形、多邊形區(qū)域等。表1-1
20、中列舉了一些PHP中常用的圖形函數(shù):</p><p> 表1-1 常用的圖形函數(shù)</p><p> 1.3 JpGraph類庫簡介</p><p> JpGraph類庫出現(xiàn)于2002年9月,是由瑞典人Johan Persson開發(fā)的,他是一家瑞典私人公司的CEO和CTO。目前JpGraph的最新版本是發(fā)布于2006年5月26日的JpGraph1.20.4a和J
21、pGraph2.1.2。其實行雙重許可證:QPL 1.0 (Qt Free Licensee):為非商業(yè)用途、開放源代碼及教育用戶免費;JpGraph專業(yè)許可證:為商業(yè)用戶,并且有額外的特色功能。</p><p> JpGraph項目網(wǎng)站這樣描述它:JpGraph是一個為PHP(版本高于PHP4.3.1)面向?qū)ο蟮膱D形創(chuàng)造的類庫,它完全用PHP語言編寫的,可以在所有PHP腳本中使用(PHP的CGI/APXS/C
22、LI兩個版本都支持) 。使用這個庫可以創(chuàng)造許多類型圖形,可以是在線創(chuàng)建或?qū)懺谖募飫?chuàng)建好再調(diào)用。無論是對于只有最少代碼的“以快捷或不恰當方式獲得的圖形”,還是對于需要非常細微控制的復(fù)雜專業(yè)圖形,JpGraph都可以使它們的繪制變得簡單。它同樣適用于科學(xué)和商業(yè)類型的圖形。JpGraph分發(fā)版中包含大量可以根據(jù)特定需求進行定制的示例腳本。將JpGraph用于數(shù)據(jù)研究工具非常簡單,只需找到功能與需求類似的示例腳本,然后對該腳本進行改寫以滿足特
23、定需求即可。</p><p> JpGraph的最大的特點就是易學(xué)易用,它使得作圖變成了一件非常簡單的事情,只需從數(shù)據(jù)庫中取出相關(guān)數(shù)據(jù),定義標題,圖形類型,剩下的事情就交給JpGraph,只需掌握為數(shù)不多的JpGraph內(nèi)置函數(shù),就可以畫出非常炫目的圖形。</p><p> 2 開發(fā)平臺及組件安裝說明</p><p><b> 2.1 開發(fā)平臺<
24、;/b></p><p> 我用的開發(fā)平臺是以LinuxRedHat9.0作為操作系統(tǒng),以Apache2.0為Web服務(wù)器;以MySQL作為后臺數(shù)據(jù)庫,包含GD庫的PHP作為開發(fā)工具。</p><p> 選用Linux操作系統(tǒng)和MySQL數(shù)據(jù)庫主要是因為它們是開放源代碼的操作系統(tǒng)和數(shù)據(jù)庫,Apache是Internet上使用最廣泛的Web服務(wù)器,而且它們都是免費提供的。開放源代碼
25、意味著系統(tǒng)的安全性有更好的保障,軟件的Bug可以很快的被修復(fù),新的特性根據(jù)需要可以很快的被加上。選擇MySQL還是因為它的運行速度很快,而且MySQL還有容易使用、性能較高、安全性好、可控制性好、移植性好、開放式開發(fā)等特點。所以,我選擇了這樣的組合來作為開發(fā)實驗的平臺,它們之間的安裝和調(diào)試我就不多說了,相關(guān)的專業(yè)文章有很多,下面就開始進入實現(xiàn)繪制圖形的部分。</p><p> 2.2 組件安裝簡介</p&
26、gt;<p> 2.2.1 GD圖形庫安裝簡介</p><p> PHP首先要加載GD圖形庫,然后就可以使用圖形處理函數(shù)了。在Linux下,要使這些畫圖函數(shù)能夠工作,需要進行編譯安裝,以下是GD圖形庫在Linux下安裝的大致步驟:</p><p> 先到官方網(wǎng)站下載最新的版本。</p><p> 將所有下載的軟件拷貝到同一目錄中,并按Jpeg6
27、b(GD庫支持gif格式圖像的程序庫)、Zlib(Libpng文件的壓縮引擎)、Libpng(GD庫支持png格式圖像的程序庫)、FreeType2(字體程序庫)、GD2的順序進行安裝,因為在編譯GD庫時會用到前面先安裝的一些文件。</p><p> 用“prefix”命令指定它們的安裝目錄,用“with-目錄名”命令來讓GD同時支持gif和png兩種圖像格式以及字體,并指明安裝目錄。</p>&
28、lt;p> 當安裝完P(guān)HP時,用“with-目錄名”命令來讓PHP加載GD庫,并指明GD的安裝目錄,然后把php.ini文件拷貝到系統(tǒng)文件目錄下。</p><p> 修改Apahce的配制文件httpd.conf,在“AddType application/x-tar.tgz”行下加入以下代碼:</p><p> AddType application/x-httpd-php.
29、php3</p><p> AddType application/x-httpd-php.php</p><p> AddType applicationAddType application/x-httpd-php-source.phps</p><p> AddDefaultCharset GB2312</p><p> 說明:
30、增加.php3和.php是告訴Apahce將.php3和.php后綴作為PHP解析,增加.phps是作為PHP的源文件進行語法高亮顯示,AddDefaultCharset GB2312是讓Apache支持中文字符顯示。</p><p> 注意事項:下載GD庫的安裝文件時要注意它的版本,gd-2.0.26gif.tar.gz支持gif圖像格式,而gd-2.0.27.tar.gz不支持gif圖像格式,最新的版本PH
31、P5又開始支持gif圖像格式了。最后要編譯PHP的系統(tǒng)文件php.ini,將文件中extension=php—gd.dll行前的注釋去掉即可完成整個安裝。</p><p> 2.2.2 JpGraph類庫安裝簡介</p><p> 在安裝PHP后,就可以安裝JpGraph了,要注意的是要保證你的PHP版本最低為4.0.4(最好是4.1.1),并且支持GD庫。必須確保GD庫可以正常運行,
32、可以通過運行phpinfo()來查看GD庫的信息是否存在的方法來判斷。同時要有要求GD庫的版本應(yīng)為2.0,而不是1.0。下面是安裝步驟的簡述:</p><p> 先到JpGraph官方網(wǎng)站(http://www.aditus.nu/jpgraph)下載最新的版本。</p><p> 下載的JpGraph壓縮包解壓到任意文件夾,但最好是放在安裝的PHP文件夾中,讓PHP能順利找到它。&l
33、t;/p><p> 設(shè)置jpgraph.php(jpgraph的主配置文件)。設(shè)置jpgraph的cache(緩存)文件夾,和TTF(字體)文件夾。分別在35行和38行:</p><p> 35 // DEFINE("CACHE_DIR","/tmp/jpgraph_cache/");</p>
34、<p> 38 // DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/TTF/");</p><p> Linux系統(tǒng)改為:</p><p> DEFINE("CACHE_DIR","/tmp/jpgraph_cache/
35、");</p><p> DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/ TTF/");</p><p> 完成上述設(shè)置后就可以使用JpGraph了。</p><p> 2.2.3 JpGraph類庫文件說明</p><p> JpGraph同樣
36、可以跨平臺使用,在Windows和Linux操作系統(tǒng)上都可以用。最新的JpGraph類庫已經(jīng)開發(fā)了兩個版本,一個是針對PHP4的JpGraph1.20.3,只能在PHP4環(huán)境中工作,而在PHP5中將不會工作,而另一個版本就是支持PHP5的工作環(huán)境——JpGraph2.1.1,同理,它在PHP4環(huán)境中也不能使用。安裝前請先確定你使用的操作系統(tǒng)及PHP的版本,正確選擇安裝文件,以便使JpGraph高效的工作,從而生成正確且美觀的圖形。<
37、;/p><p> 因為我使用的是PHP4的環(huán)境,所以我安裝的版本是JpGraph1.20.3,下載的JpGraph類庫中將包含很多文件,其中src文件夾下的文件是類庫的核心程序,下面這張表格介紹了一些主要文件的功用:</p><p> 表2-1 Jpgraph主要文件功能簡介</p><p> 其中,核心文件是jpg-config.inc和jpgraph.php這
38、兩個文件,它們是生成的所有圖形的基礎(chǔ)文件,jpgraph.php其中包含著繪制圖形時主要調(diào)用的類和函數(shù)文件,在畫圖時首先就要根據(jù)需要和環(huán)境對這兩個文件進行配置,就如我在安裝方法中敘述的一樣。其余的文件就是繪制各種圖形的類庫,如:繪制折線圖的類庫——jpgraph_line.php,繪制餅圖的類庫——jpgraph_pie3d.php,等等相關(guān)的一些用于繪制各種不同圖形的類文件。</p><p><b>
39、 3 動態(tài)圖形的實現(xiàn)</b></p><p> 3.1 總體設(shè)計思想</p><p> 實現(xiàn)基于PHP腳本動態(tài)生成圖形的最好方案是在WWW服務(wù)器端使用圖形組件,通過該圖形組件,可以把數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換成一張圖形,再轉(zhuǎn)換為瀏覽器能夠識別的圖像格式,通過網(wǎng)絡(luò)服務(wù)器下載到瀏覽器的客戶端。所以,我將PHP自帶的GD圖形庫和JpGraph類庫都加載到服務(wù)器端,從而使客戶端不用再安裝
40、圖形組件,避免客戶端無法顯示圖形的問題。</p><p> 具體將數(shù)據(jù)庫中的數(shù)據(jù)用圖形的方式表現(xiàn)在Web中我覺得應(yīng)有以下步驟:</p><p><b> 連接數(shù)據(jù)庫;</b></p><p><b> 獲得相應(yīng)數(shù)據(jù);</b></p><p> 利用圖形繪制組件,根據(jù)已獲得的數(shù)據(jù)繪制相應(yīng)圖形;
41、</p><p> 將繪制的圖形嵌入網(wǎng)頁(HTML),并發(fā)送給客戶端(Clients)。</p><p><b> 3.2 數(shù)據(jù)庫設(shè)計</b></p><p> 動態(tài)圖形的數(shù)據(jù)后臺就是數(shù)據(jù)庫,在本開發(fā)實例中使用的是MySQL數(shù)據(jù)庫。和通常生成一張查詢表一樣,數(shù)據(jù)是通過SQL查詢語句來獲取的,只不過通常我們通過查詢語句只看到一些表格,而通過
42、GD圖形庫和JpGraph類庫編譯后就可以把一張張表格變成生動直觀的圖形。數(shù)據(jù)庫不需要特別的設(shè)計,只要數(shù)據(jù)的格式正確,并且SQL查詢語句正確,一般都可以將數(shù)據(jù)導(dǎo)出。下面是在本實例中用到的表格的結(jié)構(gòu):</p><p> 表3-1 產(chǎn)品銷售總額表</p><p> 表3-2 產(chǎn)品銷售對比表</p><p> 表3-3 各類產(chǎn)品銷售總額表</p>&l
43、t;p> 表3-4 四地區(qū)產(chǎn)品銷售對比</p><p> 在本文的實例中實現(xiàn)連接數(shù)據(jù)庫的語句主體都是一樣的,PHP與MySQL之問的交互主要通過一系列的mysql函數(shù),這些函數(shù)包括連接、斷開和查詢數(shù)據(jù)庫,數(shù)據(jù)處理,錯誤處理,總共有32個。而在本文的實例中僅僅只使用了其中的連接、斷開和查詢函數(shù)。具體的實現(xiàn)方法是用“mysql_connect”函數(shù)進行數(shù)據(jù)庫的連接,接著用“mysql_select_db”函
44、數(shù)選擇相應(yīng)的數(shù)據(jù)庫,然后用“mysql_query”函數(shù)獲取表中的數(shù)據(jù),再用while循環(huán)語句將數(shù)據(jù)以數(shù)組的形式傳遞給變量,最后用“mysql_close”斷開數(shù)據(jù)庫連接,具體代碼見附錄。</p><p> 3.3 利用GD圖形函數(shù)庫繪制動態(tài)圖形</p><p> 圖3-1至圖3-3是利用GD圖形函數(shù)生成動態(tài)圖形。</p><p><b> 圖3-1
45、 折線圖</b></p><p><b> 圖3-2 柱狀圖</b></p><p><b> 圖3-3 餅圖</b></p><p> 下面以一個實例具體介紹PHP如何利用GD圖形函數(shù)生成圖形,并輸入到客戶端的瀏覽器中。我將折線圖和柱狀圖編寫在同一個類中,因為這樣可以少定義一些相同的變量。在這個類中一共
46、設(shè)置了12個變量,它們用來傳遞和設(shè)置圖像的大小,背景顏色,字體大小和顏色,圖形類型,數(shù)值等等主要數(shù)據(jù)。自定義函數(shù)有9個,如下表:</p><p> 表3-5 自定義函數(shù)功能簡介表</p><p> 其中函數(shù)printXY(),imageColumnS(),imageLine(),printAll()包含在PrintReport()函數(shù)中,用下面的代碼調(diào)用以上的這些函數(shù)就可以實現(xiàn)圖形的生
47、成,代碼:</p><p> $report=new ImageReport; //創(chuàng)建一個新的圖形</p><p> $report->setImage(550,300,255,255,255,1); //設(shè)置圖形的大小和背景色</p><p> $report->setItem($temparray,2,40); //讀入數(shù)據(jù),指定圖形&l
48、t;/p><p> $report->setFont(3); //設(shè)置字體大小</p><p> $report->PrintReport(); //輸出圖形到瀏覽器</p><p> 利用Switch選擇控制命令就來控制繪制柱狀圖還是折線圖,當在setItem()函數(shù)中寫入1時將會調(diào)用imageColumnS()繪制柱狀圖,寫入2時
49、將會調(diào)用imageLine()繪制折線圖?,F(xiàn)在以柱狀圖為例敘述它的設(shè)計思想。</p><p> 在繪制柱狀圖時,主要是用ImageFilledRectangle()函數(shù)繪制,此函數(shù)的功能就是畫矩形并填充,然后用ImageString()畫字符函數(shù)繪制標注的數(shù)據(jù),再利用for循環(huán)語句取出數(shù)據(jù)最大值,控制折線的高度,用BORDER變量控制每個柱體之間的距離,只要數(shù)據(jù)和坐標沒有問題就可以生成圖形了。在此過程中,我將橫
50、坐標的標記用一個數(shù)組的形式傳給變量“x_text”,然后利用ImageString()畫字符函數(shù)繪制標注的數(shù)據(jù);圖形數(shù)據(jù)是利用上面提到的與數(shù)據(jù)庫交互的語句實現(xiàn)獲取,接著就通過“$item_array=$this->ITEMARRAY”傳給了變量“item_array”;利用“$height=($this->Y-$this->BORDER)-($this->Y-$this->BORDER*2)*($item_
51、array[$i]/$item_max)”控制每個柱體的高度,這句代碼計算出了每個數(shù)據(jù)與最大數(shù)據(jù)的百分比,也就是說以最大的那個數(shù)字作為整個圖形高度的標尺,剩下的數(shù)據(jù)根據(jù)所占的百分比來確定它們每個柱體的高度,柱體的高度和寬度確定后就可以生成所要的圖形了。部分程序如下:</p><p> function imageColumnS(){ </p><p> $item_array=$thi
52、s->ITEMARRAY; //讀入數(shù)據(jù)</p><p> $num=Count($item_array); </p><p> $item_max=0; </p><p> for ($i=0;$i<$num;$i++){ </p><p> $item_max=Max($item_max,$item_array
53、[$i]); //找出最大值</p><p><b> } </b></p><p> $xx=$this->BORDER*2; //設(shè)置間隔距離</p><p><b> //畫柱形圖 </b></p><p> //用for循環(huán)獲得隨機顏色</p><p
54、> for ($i=0;$i<$num;$i++){ </p><p> srand((double)microtime()*1000000); </p><p> if($this->R!=255 && $this->G!=255 && $this->B!=255){ </p><p> $R
55、=Rand($this->R,200); </p><p> $G=Rand($this->G,200); </p><p> $B=Rand($this->B,200); </p><p><b> }else{ </b></p><p> $R=Rand(50,200); <
56、/p><p> $G=Rand(50,200); </p><p> $B=Rand(50,200); </p><p><b> } </b></p><p> $color=ImageColorAllocate($this->IMAGE,$R,$G,$B); //設(shè)置顏色</p>&l
57、t;p><b> //柱形高度 </b></p><p> $height=($this->Y-$this->BORDER)-($this->Y-$this->BORDER*4.5)*($item_array[$i]/$item_max); //取柱體高度</p><p> ImageFilledRectangle($this-
58、>IMAGE,$xx,$height,$xx+$this->BORDER,$this->Y-$this->BORDER,$color); //畫柱體</p><p> ImageString($this->IMAGE,$this->FONTSIZE,$xx-10,$height-$this->BORDER,$item_array[$i],$this->FONTC
59、OLOR); //畫字符</p><p><b> //間隔距離 </b></p><p> $xx=$xx+$this->BORDER*2; </p><p><b> }</b></p><p><b> } </b></p><p
60、> 代碼運行結(jié)果如圖3-2??梢钥吹皆谏蓤D形的時候,用srand()函數(shù)產(chǎn)生隨機數(shù)函數(shù)來指定了每個柱狀體的顏色,如果想讓柱狀體始終以一種顏色生成,則把下這條語句加入:</p><p> $color=ImageColorAllocate($this->IMAGE,0,0,255);</p><p> 柱狀體就會以藍色顯示。</p><p> 要
61、注意的一點是要將標頭發(fā)給瀏覽器,我在公共部分用“header("Content-type: image/gif")”語句定義,讓它知道是一個GIF文件。最后利用上面提到的實現(xiàn)圖形生成的代碼“$report->PrintReport()”就可以繪制出圖形了,具體代碼請參見附錄。</p><p> 3.4 利用第三方類庫JpGraph繪制動態(tài)圖形</p><p>
62、 以下圖3-4至圖3-6是利用JpGraph類庫繪制的圖形。我也以柱狀圖為例進行說明,具體介紹一下PHP如何利用JpGraph類庫繪制圖形,這樣便可以和利用GD函數(shù)庫繪制圖形的方法有個比較。</p><p><b> 圖3-4 折線圖</b></p><p><b> 圖3-5 柱狀圖</b></p><p><
63、b> 圖3-6 餅圖</b></p><p> 繪制柱狀圖的主程序,是JpGraph中自帶的實例中的一個文件,將坐標標記和數(shù)據(jù)進行了一些改動,為了生成動態(tài)的圖形加入了和數(shù)據(jù)庫交互的語句。設(shè)計思想是:在同一個類里同時調(diào)用繪制柱狀圖和折線圖的類,然后把它們再繪制在背景圖片上。折線圖的每個小標記塊都是在主類文件中先定義好的,在調(diào)用類中只需要指定調(diào)用即可。同樣的柱狀圖填充的顏色也是定義好的一個色塊,
64、只要正確導(dǎo)入數(shù)據(jù),就生成了圖2-2的效果。在這個主程序中出現(xiàn)了很多函數(shù)的調(diào)用,可以從程序中看到此代碼段要同時調(diào)用jpgraph.php、jpgraph_line.php和jpgraph_bar.php文件才可以運行。jpgraph.php在前面已經(jīng)提到過,是JpGraph類庫中最核心的文件,控制著整個圖形的生成,jpgraph_line.php是繪制折線圖的類文件,jpgraph_bar.php則是繪制柱狀圖的類,在這三個文件中,我們可
65、以看到這段代碼中調(diào)用的所有的函數(shù),也就是說,開發(fā)人的思想是把公用的函數(shù)集寫在一個主文件里,然后寫出一個用來設(shè)定參數(shù)和實現(xiàn)圖形的前臺文件再來調(diào)用公用的函數(shù)集,既保證了生成圖形的多樣性,又保持了程序的優(yōu)化,所以讓使用它</p><p> 當我們有需要進行對比數(shù)據(jù)時候就可以采用這個圖形,實用且美觀。因為這個圖形是兩個圖形結(jié)合而成的,所以從數(shù)據(jù)庫中也要同時取出兩組數(shù)據(jù),繪制此圖形時注意數(shù)據(jù)庫查詢語句的書寫。代碼中使用的
66、函數(shù)的功能在旁邊進行了注釋。代碼如下:</p><p><b> <?php</b></p><p> include ("jpgraph.php");</p><p> include ("jpgraph_bar.php");</p><p> include (&
67、quot;jpgraph_line.php");</p><p><b> //連接數(shù)據(jù)庫</b></p><p> $connect=mysql_connect("localhost","root","928928");</p><p> mysql_select_d
68、b("dd2",$connect);</p><p> $query=mysql_query("select * from db",$connect);</p><p><b> $i=0;</b></p><p> while ($array=mysql_fetch_array($quer
69、y)) {</p><p> $ydata[$i]=$array[" product1"];</p><p> $ydata2[$i]=$array["product 2"];</p><p><b> $i++;</b></p><p><b> }</
70、b></p><p> mysql_close($connect);</p><p> $labels=array(1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月);</p><p><b> //坐標標簽數(shù)組</b></p><p><b> // 創(chuàng)建圖形 <
71、;/b></p><p> $graph = new Graph(400,300);</p><p> $graph->SetScale("textlin"); //設(shè)置圖形標記(數(shù)據(jù))的類型</p><p> $graph->SetMarginColor(white); //設(shè)置圖形背景的顏色</p>
72、<p> $graph->SetMargin(30,1,20,5); //設(shè)置圖形四周的邊框?qū)挾?lt;/p><p> $graph->SetBox(); //設(shè)置圖形背景</p><p> $graph->SetFrame(false); //設(shè)置圖形四周為無框架</p><p> $graph->tabtitle-
73、>Set(1997年與1998年銷售對比); //標題</p><p> $graph->tabtitle->SetFont(FF_SIMSUN,FS_BOLD,10); //標題字體</p><p> // 設(shè)置X軸和Y軸的標記</p><p> $graph->ygrid->SetFill(true,#DDDDDD@0.5
74、,#BBBBBB@0.5);</p><p> $graph->ygrid->SetLineStyle(dashed);</p><p> $graph->ygrid->SetColor(gray);</p><p> $graph->xgrid->Show();</p><p> $graph-&
75、gt;xgrid->SetLineStyle(dashed);</p><p> $graph->xgrid->SetColor(gray);</p><p> $graph->xaxis->SetTickLabels($labels); //設(shè)置X軸的坐標值</p><p> $graph->xaxis->SetL
76、abelAngle(45); //設(shè)置X軸的坐標值顯示角度為45度</p><p> $graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD,9); //設(shè)置X軸的坐標值字體</p><p> // 畫每一個柱壯體</p><p> $bplot = new BarPlot($ydata);</p>&
77、lt;p> $bplot->SetWidth(0.6);</p><p> $fcol=#440000;</p><p> $tcol=#FF9090;</p><p> $bplot->SetFillGradient($fcol,$tcol,GRAD_LEFT_REFLECTION);</p><p><b&
78、gt; //填充每個柱狀體</b></p><p> $bplot->SetWeight(0); //設(shè)置每個柱狀體的邊框線的寬度為0</p><p> $graph->Add($bplot); //把每個點加入圖形中</p><p> // 繪制填充折線圖</p><p> $lplot = new L
79、inePlot($ydata2);</p><p> $lplot->SetFillColor(skyblue@0.5);</p><p> $lplot->SetColor(navy@0.7);</p><p> $lplot->SetBarCenter();</p><p><b> //小標記塊的繪制
80、</b></p><p> $lplot->mark->SetType(MARK_SQUARE);</p><p> $lplot->mark->SetColor(blue@0.5);</p><p> $lplot->mark->SetFillColor(lightblue);</p><p
81、> $lplot->mark->SetSize(6);</p><p> $graph->Add($lplot); //加入折線圖</p><p> $graph->Stroke(); // 最后把它送回到瀏覽器</p><p><b> ?></b></p><p>
82、 運行程序其結(jié)果如圖3-5所示。</p><p> 以上程序完成了一個稍微有點復(fù)雜的圖形,是折線圖和柱狀圖的相結(jié)合的例子,一些重要的函數(shù)和調(diào)用我已經(jīng)在程序中進行了標注,所有被調(diào)用的函數(shù)的主體都分散在jpgraph.php、jpgraph_line.php和jpgraph_bar.php文件中,由于函數(shù)比較龐大復(fù)雜,本文就不在這里進行詳細解釋了,可以在JpGraph的官方網(wǎng)站參看它的手冊和問題匯總。</p&
83、gt;<p> 3.5 兩個組件實用性總結(jié)對比</p><p> 3.5.1 GD圖形函數(shù)庫</p><p> 總的來說,利用PHP中自帶的GD圖形函數(shù)庫繪制的圖形能在Web上較好的顯示出來,大多數(shù)函數(shù)用起來很方便,并且可以從PHP手冊上了解每一個函數(shù)的用法和功能,所以畫平面圖形還是很不錯的,但是繪制3D圖形或復(fù)合圖形等一些較復(fù)雜的圖形時就有些顯得有些麻煩,代碼會比較多
84、,因為要控制更多的變量和創(chuàng)建自定義函數(shù)。雖然PHP并不是專業(yè)用來做圖的語言,但是它有GD圖形函數(shù)庫支持后,再加上自身原本的靈活性,通過不同的程序編寫便可以生成各種各樣的圖形,PHP和MYSQL數(shù)據(jù)庫之間的數(shù)據(jù)交互比別的組合要方便且速度較快,因而,繪制一些簡單的動態(tài)圖形,比如柱狀圖、折線圖、餅圖等還是比較方便的,能順利的將圖形顯示在Web瀏覽器上。</p><p> 而其中的難點就是對漢字的支持,使用中文字體時會
85、出現(xiàn)亂碼現(xiàn)象,原因一是Linux中對中文字體的支持不多,要重新加載中文字體;原因二是PHP中的GD庫支持中文,但是必須要以UTF-8格式的參數(shù)來進行傳遞。那么我們首先就要下載一些中文字體放在Linux中,或者把Windows下的一些TTF字體拷貝到Linux下的TTF字體庫中。接著就要讓漢字顯示在用PHP繪制的圖形里,一般有兩個方法:方法一,用WORD2000或WINDOW2000下的記事本編輯所要顯示的漢字;把所編輯的文字存成格式為U
86、TF-8格式的文件;用一個16進制的編輯器(如用PCTOOLS的EDIT功能)打開這個文件,這時會看到打開的文件里面有一些16進制的字符。一個漢字占三個字節(jié),所以應(yīng)該選擇編輯漢字個數(shù)乘以3個字節(jié)的內(nèi)容,把此編碼記錄下來以備后用,在寫漢字的時候用UTF-8格式寫,一般就可以正常顯示了,示例代碼:</p><p> //定義字體 $font="/usr/X11R6/lib/X11/fonts/ TTF/s
87、imsun.ttc'; </p><p> //定義輸出字體串 </p><p> $str =chr(0xE8).chr(0xB5).chr(0x9B) ";</p><p> //寫 TTF 文字到圖中 </p><p> imagettftext($pic,20,0,10,20,$white,$font,$st
88、r);</p><p> 方法二,利用iconv函數(shù)進行字符轉(zhuǎn)換,示例代碼:</p><p> $x_text=1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月;</p><p> $font="/usr/X11R6/lib/X11/fonts/ TTF/simsun.ttc"
89、;;</p><p> $str=iconv(GB2312,UTF-8,$x_text);</p><p> ImageTTFtext($this->IMAGE,10,0,$xx-10,$this->Y-$this->BORDER+15,$this->FONTCOLOR,$font,$str);</p><p> 在實現(xiàn)過程中我是將Wi
90、ndows下的simsun.ttc字體(宋體)拷貝到了Linux下的TTF字體庫中,然后利用上面介紹的方法二解決了亂碼問題。</p><p> 因而,利用PHP語言可以繪制出動態(tài)圖形,PHP語言中的繪圖函數(shù)是比較完善的,只要你精通PHP的繪圖語言,并有一定的編寫經(jīng)驗,通過仔細編寫,可以利用PHP繪制出各種各樣的圖形。那么如果對于不太了解PHP語言的人們來說,最好的選擇就是利用第三方的繪圖類庫——JpGraph。
91、</p><p> 3.5.2 JpGraph類庫</p><p> JpGraph類庫是在GD圖形庫的基礎(chǔ)上開發(fā)出來的,要求GD庫的版本應(yīng)為2.0才能發(fā)揮它的功能。它集合了GD圖形庫的原有的繪圖函數(shù),在此基礎(chǔ)上加進了更多的復(fù)合函數(shù),把一個個單獨的函數(shù)編譯在一起,又加進去了許多自定義類和函數(shù),從而生成一個功能比較全面的類,用戶使用的時候只用改動它的調(diào)用文件代碼,也就是生成圖形的主程序,
92、其他的事情都由類庫中的復(fù)合函數(shù)來完成,可以說使用起來比較方便。我們可以在它的Examples文件夾中看到它所能繪制的圖形,有344個圖形例子,美觀且實用,能滿足應(yīng)用在商業(yè)和科學(xué)領(lǐng)域的統(tǒng)計圖形,如果沒有別的特殊要求,通過簡單修改JpGraph類庫的數(shù)據(jù)參數(shù)就可以得到自己想要的漂亮的圖形,可以參考本文實例進行設(shè)置參數(shù)的學(xué)習(xí)。</p><p> 同樣的JpGraph也出現(xiàn)了中文亂碼的問題,雖然最新的版本已經(jīng)能支持中文
93、了,但是好像只支持為數(shù)不多的中文字體,這個問題我也還在研究中。目前,如果您的環(huán)境是使用Big-5編碼,只要修改src/jpg-config.inc中的CHINESE_TTF_FONT設(shè)定即可;Linux環(huán)境的使用者則需要確認/usr/X11R6/lib/X11/fonts/TTF/或其他字體路徑中的中文字體檔案名稱。如果是UTF-8環(huán)境,那么就需要修改一下核心程式,因為 JpGraph 在產(chǎn)生圖形時基本上都是通過UTF-8編碼,而內(nèi)部的
94、中文處理方式會將Big-5轉(zhuǎn)換為UTF-8,這在UTF-8環(huán)境就顯得多余,而且會造成錯誤。因此需要修改src/jpgraph.php這個檔案,找到下面程序代碼:</p><p> elseif( $aFF === FF_CHINESE ) {</p><p> if( !function_exists(iconv) ) {</p><p> JpGraphEr
95、ror::Raise(Usage of FF_CHINESE (FF_BIG5)</p><p> font family requires that your PHP setup has the iconv() function.</p><p> By default this is not compiled into PHP (needs the "--width-ic
96、onv"</p><p> when configured).);</p><p><b> }</b></p><p> return iconv(BIG5,UTF-8,$aTxt);</p><p><b> 將它修改為:</b></p><p> e
97、lseif( $aFF === FF_CHINESE ) {</p><p> return $aTxt;</p><p> 經(jīng)過以上的調(diào)整就可以正常使用了。本文在開發(fā)時沒有用比較特殊的字體,將Windows下的simsun.ttc字體(宋體)和simhei.ttf字體(黑體)拷貝到了Linux下的TTF字體庫中,再利用“SetFont(FF_SIMSUN,FS_BOLD,9)”這條語
98、句就可以正常輸出漢字了,其中“FF_SIMSUN”和“FS_BOLD”是字體名稱,“9”是指字體大小,這個SetFont()函數(shù)是JpGraph中的定義字體和字體大小的函數(shù),可以在jpgraph.php和gb2312.php找到它支持的中文字體,但是有些特殊的中文字體目前還不能支持。</p><p> 總之,JpGraph是一個非常實用的面向PHP制作圖形的類庫,使繪制動態(tài)圖形變的簡單化,推進了PHP語言圖形繪
99、制方面的發(fā)展。</p><p><b> 4 結(jié)論</b></p><p> 隨著數(shù)據(jù)庫技術(shù)的迅速發(fā)展以及數(shù)據(jù)庫管理系統(tǒng)的廣泛應(yīng)用,需要分析統(tǒng)計的數(shù)據(jù)越來越多,人們希望能夠以更加直觀、明確的得到答案,而統(tǒng)計圖形則正好滿足了人們的需求。本文主要介紹了在Linux+Apache+MySQL+PHP環(huán)境下創(chuàng)建動態(tài)圖形顯示的方法。通過利用GD圖形庫或JpGraph類庫繪制
100、動態(tài)圖形的實例,敘述了如何利用PHP語言繪制圖形的一些方法,實現(xiàn)了柱狀圖、折線圖、餅圖這些基本圖形的繪制,且基本解決了中文亂碼的問題,達到了預(yù)期的效果。當然,鑒于本人的知識水平,對PHP腳本生成動態(tài)圖形方法的研究還僅在一定的范圍內(nèi),希望在這個領(lǐng)域中有更多更好的繪圖的軟件出現(xiàn),讓我們能更方便的制作出美觀實用的動態(tài)圖形。</p><p><b> 謝 辭</b></p><
101、;p> 在實習(xí)和做畢業(yè)設(shè)計的近幾個月時間是我學(xué)生生涯中最有價值的一段時光。這里有治學(xué)嚴謹而不失親切的老師,有互相幫助的同學(xué),更有向上、融洽的學(xué)習(xí)生活氛圍。借此論文之際,我想向所有人表示我的謝意。</p><p> 首先感謝 老師。本論文是在張老師的指導(dǎo)下修改完成的。在此,要對他的細心幫助和指導(dǎo)表示由衷的感謝。在這段時間里,我從他身上不僅學(xué)到了許多的專業(yè)知識,更感受到了他工作中的兢兢業(yè)業(yè),生活中
102、的平易近人。此外,他嚴謹?shù)闹螌W(xué)態(tài)度和忘我的工作精神值得我去學(xué)習(xí)。</p><p> 非常感謝王亮亮老師和王斌老師,在我的畢業(yè)設(shè)計中,他們的指導(dǎo)給予了我極大的幫助,使我對整個畢業(yè)設(shè)計的思路有了總體的把握,在整個開發(fā)過程中提出了許多建設(shè)性意見,并耐心的幫我解決了許多實際問題,使我有了很大收獲。</p><p> 還要感謝給與我?guī)椭耐瑢W(xué)和朋友,他們在我的畢業(yè)設(shè)計過程中經(jīng)常給我提出許多關(guān)鍵性
103、的問題,使我受益匪淺。 </p><p> 感謝二年來傳授我知識的老師們,更要感謝我的家人對我學(xué)業(yè)上的支持和鼓勵,感謝所有關(guān)心幫助過我的人。同時感謝大學(xué),感謝計算機與信息工程學(xué)院。</p><p> 總之,在以后的學(xué)習(xí)生活中我將以加倍的努力作為對給予我?guī)椭膶W(xué)校、老師及同學(xué)們的回報。</p><p><b> 參考文獻:</b></
104、p><p> [1] 丁晟春.基于Internet的統(tǒng)計圖表功能實現(xiàn)技術(shù)[J].現(xiàn)代圖書情報技術(shù).2004年.(4):9-10</p><p> [2] 黃冬.Internet的自由語言——PHP.網(wǎng)絡(luò)應(yīng)用技巧[J],2000年.(5):116-117</p><p> [3] 聶剛.基于Web的數(shù)據(jù)庫圖形報表的設(shè)計與實現(xiàn)[J].計算機應(yīng)用. 2001年.21(1
105、1):96-97</p><p> [4] What is Jpgraph,Jpgraph,2005年12月12日,</p><p> [online]:Available:http://www.aditus.nu/jpgraph/(2006.5.16)</p><p> [5] 吳應(yīng)嘉.基于Linux環(huán)境下的Apache、PHP及GD庫的配置實現(xiàn)[J].微計
106、算機應(yīng)用.2005年.26(1):17-19</p><p> [6] 王軍,張曾科.Linux環(huán)境下Web數(shù)據(jù)庫的圖形統(tǒng)計[J].計算機工程與設(shè)計.2001年.22(5):16-17</p><p> [7] PHP中實現(xiàn)大圖自動縮成小圖(及GD庫的安裝),破釜沉舟,2004年5月21日,</p><p> [online]:Available:http:/
107、/www.7880.com/Info/Article-958940.html (2006.5.16)</p><p> [8] JpGraph簡介,All about 502,2005年4月19日,[online]:Available:http://www.wulamusic.com/502/blogview.asp?logID=17 (2006.5.16)</p><p> [9]
108、王永振.PHP與MySQL之間的交互[J].電腦學(xué)習(xí).2001年.(5):34-35</p><p> [10] 在Jpgraph中顯示中文字,Taiwan PHP User Group,2005年12月23日,[online]:Available:http://twpug.net/modules/smartsection/item.php?itemid=38(2006.5.16)</p><
109、;p> [11] 冷鵬.PHP+MySQL在動態(tài)網(wǎng)站設(shè)計中的應(yīng)用[J].陜西師范大學(xué)學(xué)報(自然科學(xué)版).2005年.(33):216-217</p><p><b> 附 錄</b></p><p> 柱狀圖代碼(GD):</p><p><b> <? </b></p><p&g
110、t; Class ImageReport{ </p><p> var $X;//圖片大小X軸 </p><p> var $Y;//圖片大小Y軸 </p><p> var $R;//背影色R值 </p><p> var $G;//...G. </p><p> var $B;//...B. </
111、p><p> var $TRANSPARENT;//是否透明1或0 </p><p> var $IMAGE;//圖片對像 </p><p> //------------------- </p><p> var $ITEMARRAY;//數(shù)值 </p><p> var $REPORTTYPE;//圖表類型,
112、1為豎柱形2為折線形 </p><p> var $BORDER;//距離 </p><p> //------------------- </p><p> var $FONTSIZE;//字體大小 </p><p> var $FONTCOLOR;//字體顏色 </p><p><b> //參
113、數(shù)設(shè)置函數(shù) </b></p><p> function setImage($SizeX,$SizeY,$R,$G,$B,$Transparent){ </p><p> $this->X=$SizeX; </p><p> $this->Y=$SizeY; </p><p> $this->R=$R
114、; </p><p> $this->G=$G; </p><p> $this->B=$B; </p><p> $this->TRANSPARENT=$Transparent; </p><p><b> } </b></p><p> function
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 構(gòu)件測試腳本生成方法研究.pdf
- 無需腳本的動態(tài)字幕生成中的關(guān)鍵技術(shù)研究.pdf
- ns2可視化動態(tài)腳本生成服務(wù)
- 動態(tài)加載js腳本
- php學(xué)生成績查詢
- 腳本生成工具的研究與應(yīng)用.pdf
- 分形圖形生成的方法和表現(xiàn).pdf
- 自然語言腳本生成動畫腳本的關(guān)鍵技術(shù)研究.pdf
- COM組件測試用例及測試腳本自動生成方法研究.pdf
- php動態(tài)網(wǎng)站設(shè)計
- 基于腳本的BIRT圖表生成技術(shù)研究.pdf
- 基于php技術(shù)的網(wǎng)頁自動生成工具
- 激光標刻矢量圖形生成方法的研究.pdf
- 圖形語義生成與平面設(shè)計方法研究.pdf
- php+mysql學(xué)生成績查詢
- CBTC車載腳本數(shù)據(jù)自動生成方法研究及其軟件開發(fā).pdf
- php+mysql學(xué)生成績查詢
- 基于PHP的手機收費腳本服務(wù)系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 高速圖形生成系統(tǒng)及其圖形算法研究.pdf
- 一種生成動態(tài)BOM的優(yōu)化方法的研究.pdf
評論
0/150
提交評論