




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畫圖板的設(shè)計(jì)與實(shí)現(xiàn)方案摘 要本文的主要內(nèi)容是記述同題課程設(shè)計(jì)中的一些關(guān)鍵技術(shù)和輔助文檔。本文的目標(biāo)是設(shè)計(jì)一款基于Qt編程語言的簡(jiǎn)易畫圖板,使其具有涂鴉,繪制基本圖形等功能。本程序具有一定的實(shí)用意義和價(jià)值。功能分裝良好可以方便的根據(jù)需求進(jìn)行擴(kuò)充。本文運(yùn)用材料綜述的方法,首先記述了編程環(huán)境的搭建,介紹了Qt的優(yōu)點(diǎn),Qt編碼規(guī)范和Qt的雙緩沖機(jī)制在繪圖中的運(yùn)用。著重分析了Qt在軟件開發(fā)中的編程機(jī)制,并根據(jù)應(yīng)用特點(diǎn)進(jìn)行了設(shè)計(jì)的構(gòu)件與算法的需求分析。其次在需求分析中給出是可行性分析,然后放入功能分析圖和流程圖幫助梳理設(shè)計(jì)思路。最后在詳細(xì)設(shè)計(jì)階段完成編碼,實(shí)現(xiàn)程序功能,得到一個(gè)功能健全的畫圖板應(yīng)用程序。在
2、本文中將設(shè)計(jì)并實(shí)現(xiàn)畫圖板的一些基本功能,例如:新建,打開,保存,清空,放大,縮小,還原,基本圖形繪制,轉(zhuǎn)換畫筆顏色等功能。最后運(yùn)行結(jié)果符合設(shè)計(jì)要求,方案可行。經(jīng)過測(cè)試后程序功能實(shí)現(xiàn)良好。關(guān)鍵詞 嵌入式Linux QT;圖形用戶界面;電子畫板;雙緩沖機(jī)制i The Realization of Drawing Board Function Abstract The main content of this paper is described with the course in the design of some key technologies and supporting documen
3、ts.The goal of this article is to design a simple drawing board based on Qt programming language, make its have graffiti, draw up the basic graph, and other functions.This program has a certain practical significance and value.Function according to the requirements of good packaging can easily expan
4、ded. This article applies the method of material review, the construction of the first describes the programming environment, this paper introduces the advantages of Qt Qt code conventions and Qt double-buffering mechanism used in the drawing.Qt programming in the software development mechanism is a
5、nalyzed emphatically, and the design based on the application of artifacts and requirements analysis of the algorithm.Second is feasibility analysis is given in the requirements analysis, and then into the comb function analysis diagram and flowchart to help design thinking.Program is realized by en
6、coding the detailed design phase is complete, the function, get a functioning drawing board application. Designed and implemented in this paper some basic function of drawing board, for example: the new, open, save, empty, enlarge, shrink, reduction, basic graphics rendering, convert the brush color
7、, and other functions.Finally run results conform to the requirements of the design, the scheme is feasible.Program function is good.Key words Linux QT ; graphical user interface (GUI); electronic drawing board; double buffering mechanismii目 錄摘 要iAbstractii1 引言11.1 研究背景11.2 研究的目的和意義21.3 程序設(shè)計(jì)的環(huán)境選擇22
8、畫圖板設(shè)計(jì)的技術(shù)背景32.1 Qt的主要特征32.2 QT creator簡(jiǎn)介32.3 Qt creator環(huán)境搭建42.4 QT編程機(jī)制信號(hào)與槽機(jī)制簡(jiǎn)介52.5 Qt編碼規(guī)范72.6 GDI繪圖理論基礎(chǔ)92.7 雙緩沖機(jī)制92.8 雙緩沖技術(shù)繪圖103 畫圖板項(xiàng)目需求分析123.1 可行性研究123.1.1 經(jīng)濟(jì)可行性123.1.2 技術(shù)可行性123.1.3 運(yùn)行可行性123.1.4 時(shí)間可行性123.1.5 法律可行性123.2 功能分析133.3 系統(tǒng)用例分133.4 性能需求133.4.1 應(yīng)用需求分析143.4.2 運(yùn)行需求分析143.4.3 其他需求分析144 畫圖板概要設(shè)計(jì)154
9、.1 畫圖板功能模塊關(guān)系與劃分154.2 畫圖板總體設(shè)計(jì)流程圖165 畫圖板詳細(xì)設(shè)計(jì)175.1 畫圖板界面設(shè)計(jì)185.1.1 畫圖板的界面元素聲明185.1.2 圖板界面布局實(shí)現(xiàn)195.2 畫圖板功能詳細(xì)設(shè)計(jì)205.2.1 畫圖板的文件編輯功能實(shí)現(xiàn)205.2.2 畫圖板的圖片編輯功能實(shí)現(xiàn)235.3 畫圖板繪圖功能實(shí)現(xiàn)265.3.1 繪圖板的基本圖形繪制功能實(shí)現(xiàn)265.3.2 繪圖板自由繪圖功能實(shí)現(xiàn)305.3.3 畫圖板畫圖輔助選項(xiàng)實(shí)現(xiàn)336 畫圖板程序測(cè)試356.1 測(cè)試的重要性及目的356.2 測(cè)試的方法366.3 測(cè)試用例366.4 測(cè)試結(jié)果36結(jié) 論38參考文獻(xiàn)39外文原文41中文翻譯4
10、91 引言隨著操作系統(tǒng)不斷的更新?lián)Q代,其自帶的畫圖板界面及功能也是不斷變化著,像是xp、vista、win7,它們的畫圖板的界面布局風(fēng)格以及功能都有所不同。 這表明盡管是簡(jiǎn)簡(jiǎn)單單的一個(gè)操作系統(tǒng)自帶畫圖板,系統(tǒng)設(shè)計(jì)人員也沒有停止對(duì)它的不斷研與探索, 他們?cè)诓粩鄬ふ抑诵曰?、更能滿足大眾需求的改變。 隨著社會(huì)的不管發(fā)展以及計(jì)算機(jī)的不斷普及,人們對(duì)畫畫的要求越高,對(duì)繪圖系統(tǒng)也提出了更高更全面的要求。許多用戶由于自身的畫圖習(xí)慣或者是視覺效果不同,對(duì)傳統(tǒng)的畫圖工具可能感覺不是特別滿意。就像孩子總是喜歡畫可愛型,而成人則畫實(shí)用的。不同年齡不同身份的人,需求不同。綜合上述,為了盡量讓所
11、有人滿意,在此我設(shè)計(jì)一個(gè)大概的程序模型,讓別人來試試我的繪圖系統(tǒng)。對(duì)自從上世紀(jì)計(jì)算機(jī)系統(tǒng)向繪畫界的延伸以來,繪圖技術(shù)已成為計(jì)算機(jī)系統(tǒng)不可分割的一部分。而圖形編輯器又是圖形編輯軟件的基礎(chǔ),幾乎所有的圖形編輯軟件,都是在擁有基本圖形編輯功能的基礎(chǔ)上實(shí)現(xiàn)更復(fù)雜功能的。故在圖形應(yīng)用非常廣泛的今天,研究開發(fā)繪圖系統(tǒng)是非常有意義的。在繪圖方面實(shí)現(xiàn)繪制直線、矩形、圓形等基本功能,在界面設(shè)計(jì)方面實(shí)現(xiàn)了對(duì)圖形的操作,從而從底層對(duì)繪圖系統(tǒng)進(jìn)行簡(jiǎn)單的實(shí)現(xiàn)。 與此同時(shí),簡(jiǎn)單小巧的繪圖記事功能軟件的發(fā)展也在蓬勃向前。本軟件功能與Windows下附件中的畫圖軟件有類似功能。繪制方面的實(shí)現(xiàn)功能包括圖
12、片的打開新建保存,畫布的放大縮小,畫筆功能實(shí)現(xiàn),基本圖形的繪制,繪圖時(shí)可以選擇各種顏色,各種線寬。軟件支持保存和讀取jpg格式的圖形。本軟件運(yùn)用的是面向?qū)ο蟪绦蛟O(shè)計(jì)的思想。相對(duì)于面向過程的設(shè)計(jì)理念,面向?qū)ο蟮脑O(shè)計(jì)方法更適用于畫圖板的設(shè)計(jì),它使畫圖板所涉及的各部分功能模塊實(shí)現(xiàn)更好的封裝。它的特色是。一方法的唯一性,即方法是對(duì)軟件開發(fā)過程全過程進(jìn)行綜合考慮得到的。二是高度的獨(dú)立性,對(duì)象是程序的基本元素,它將數(shù)據(jù)和操作緊密地連結(jié)在一起,并保護(hù)數(shù)據(jù)不會(huì)被外界的函數(shù)意外地改變。三是良好的可擴(kuò)展性,相對(duì)獨(dú)立的功能模塊使得程序可以根據(jù)需要進(jìn)行相印的擴(kuò)充或是縮減。 1.1 研究背景 計(jì)算機(jī)繪圖是相對(duì)
13、于手工繪圖而言的一種高效率、高質(zhì)量的繪圖技術(shù)。手工繪圖使用三角板、丁字尺、圓 規(guī)等簡(jiǎn)單工具,是一項(xiàng)細(xì)致、復(fù)雜和冗長(zhǎng)的勞動(dòng)。不但效率低、質(zhì)量差,而且周期長(zhǎng),不易于修改。計(jì)算機(jī)繪圖的發(fā)展更加趨向于用戶需求導(dǎo)向,在一些專業(yè)領(lǐng)域中計(jì)算機(jī)繪圖發(fā)展迅猛,例如Photoshop、Adobe image 、AutoCAD等。多個(gè)程序的匯集,組成功能齊全、能夠繪制基本地圖圖形和各類常用地圖的程序組,稱為繪圖軟件系統(tǒng),或稱為繪圖軟件包。繪圖軟件通常用高級(jí)算法語言編寫,以子程序的方式表示,每個(gè)子程序具有某種獨(dú)立的繪圖功能。繪圖軟件包是繪圖子程序的匯集,可包括幾十個(gè)至幾百個(gè)子程序。用戶根據(jù)需要,調(diào)用其中一部分子程序,
14、繪制某種圖形或一幅地圖。1.2 研究的目的和意義日常生活中,有很多方面都會(huì)用到畫圖來解決闡述一些問題,這就需要借助計(jì)算機(jī)來進(jìn)行簡(jiǎn)單的畫圖工作,此時(shí)就需要一個(gè)能簡(jiǎn)單解決這些問題的畫圖軟件。本選題是設(shè)計(jì)一個(gè)簡(jiǎn)單的基于Qt creator的畫圖軟件,能夠完成一些簡(jiǎn)單的畫圖需求?,F(xiàn)在比較經(jīng)常使用的是windows系統(tǒng)下附帶的畫圖軟件,它基本上可以滿足一些簡(jiǎn)單的畫圖需求。本設(shè)計(jì)就是按照這個(gè)畫圖軟件的思想設(shè)計(jì)的,使畫圖軟件能達(dá)到滿足日常畫圖需求,便于存儲(chǔ)編輯和展示,且要求功耗小且界面人性化,功能易擴(kuò)展。1.3 程序設(shè)計(jì)的環(huán)境選擇Qt類庫大致可以分為三個(gè)部分:控件,框架和工具??丶糠职ōh(huán)境控件、主窗口控
15、件、標(biāo)準(zhǔn)對(duì)話框、基本的G U I 控件、擴(kuò)展 G U I控件 、G UI 組織控件以及幫助系統(tǒng)控件 ??蚣懿糠职ǖ氖且恍┏橄蟮念?,通常不可見,如對(duì)象模型、抽象控件、繪圖、拖放、控件外觀。工具部分包括時(shí)間日期和鏈表樹等數(shù)據(jù)結(jié)構(gòu),它們和 GUI無關(guān)普通工具包括鏈表、堆棧 、隊(duì)列 、樹等常見數(shù)據(jù)結(jié)構(gòu),如QArray。圖形處理工具控制圖像的編碼解碼算法。如 QImagelO 。IO 控制工具處理 I,0 的一些類,如 QFile。時(shí)間和日期工具類處理時(shí)間和日期,如 QDate,QTime。在用 Qt 開發(fā)程序時(shí),對(duì)于 G U I 的設(shè)計(jì)有兩種方法,一種是通過自己寫代碼來界面進(jìn)行布局 ,但這就需要對(duì)
16、Ol有一定的熟練程度;另一種是通過 QtDesigner來設(shè)計(jì)界面,只需在ui文件來拖控件來布局就行了。對(duì)只需要用 Qt進(jìn)行開發(fā)的程序員來說,后者顯然比前者來的快。以下結(jié)合一個(gè)實(shí)例來介紹用 QtD esigner 來開發(fā)程序的 G U I,主窗口類從 Q W idget類派生,這樣我們能方便地使用 Qt的 QM enubar類來添加菜單,并使用 Qt的控件類來擺放面板控件 ,整個(gè)程序以事件為驅(qū)動(dòng),通過 Qt的 signalslot機(jī)制與終端用戶交互。設(shè)計(jì)好界面后,在程序編譯后會(huì)生成一個(gè) ui一 h 的頭文件里面是一個(gè)U i一類,封裝了一些所拖放控件的變量名和一個(gè)比較重要的setupUI函數(shù) ,
17、是一些布局的代碼。要用到這個(gè)界面是只需繼承這個(gè)類就可以了,或者是包含這個(gè) ui h 的頭文件。設(shè)計(jì)類的主要思想是把所有的信號(hào)和槽放在構(gòu)造函數(shù)里,程序是以事件為驅(qū)動(dòng),當(dāng)產(chǎn)生一個(gè)信號(hào)時(shí),會(huì)去調(diào)用相應(yīng)的函數(shù)。2 畫圖板設(shè)計(jì)的技術(shù)背景2.1 Qt的主要特征Qt是Trolltech公司的產(chǎn)品,Trolltech是挪威的一家軟件公司,主要開發(fā)兩種產(chǎn)品:一種是跨平臺(tái)應(yīng)用程序界面框架;另外一種就是提供給做嵌入式Linux開發(fā)的應(yīng)用程序平臺(tái),能夠應(yīng)用到PDA和各種移動(dòng)設(shè)備,Trolltech公司網(wǎng)址: Qt是一個(gè)多平臺(tái)的C+圖形用戶界面應(yīng)用程序框架,它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的
18、所用功能。Qt是完全面向?qū)ο螅苋菀走M(jìn)行擴(kuò)展,并且允許真正的組件編程。1996年開始,Qt正式進(jìn)入商業(yè)領(lǐng)域,它成為了全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。Qt同時(shí)也是流行的Linux桌面環(huán)境KDE 的基礎(chǔ),注:KDE是所有主要的Linux發(fā)行版的一個(gè)標(biāo)準(zhǔn)組件。 它具有以下優(yōu)點(diǎn): 1)優(yōu)良的跨平臺(tái)特性Qt支持下列操作系統(tǒng): Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO
19、, AIX, OS390,QNX 等等。2)面向?qū)ο驫t 的良好封裝機(jī)制使得 Qt 的模塊化程度非常高,可重用性較好,對(duì)于用戶開發(fā)來說是非常方便的。Qt提供了一種稱為信號(hào)與槽( signals/slots) 的安全類型來替代 callback,通過一個(gè)對(duì)象信號(hào)的發(fā)射,另一個(gè)槽函數(shù)的響應(yīng),使各個(gè)對(duì)象之間的通信安全而且高效,這使得各個(gè)元件之間的協(xié)同工作變得十分簡(jiǎn)單。并且 QT是直接基于 Xlib的,不依賴Motif工具包,所以它的執(zhí)行效率比一般的基于平臺(tái)的代碼的執(zhí)行效率要高。3)豐富的 APIQt包括多達(dá)250個(gè)以上的 C+ 類,還提供基于模板的 collections、serialization
20、、 file、I/O device、 directory management、 date/time 類。甚至還包括正則表達(dá)式的處理功能。4)支持 2D/3D 圖形渲染,支持 OpenGL5)大量的開發(fā)文檔6)XML 支持2.2 QT creator簡(jiǎn)介Qt Creator是跨平臺(tái)的 Qt 集成開發(fā)環(huán)境, Qt Creator 是 Qt 被 Nokia 收購后推出的一款新的輕量級(jí)集成開發(fā)環(huán)境(IDE)。此 IDE 具有良好的跨平臺(tái)運(yùn)行能力,支持的操作系統(tǒng)包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。Qt Creator 的設(shè)計(jì)目標(biāo)是使開發(fā)人員能夠利用 Qt
21、這個(gè)應(yīng)用程序框架更加快速及輕易的完成開發(fā)任務(wù)Qt Creator 可以幫助 Qt 用戶更加快速便利的運(yùn)行項(xiàng)目,還可以提高有經(jīng)驗(yàn)的 Qt 開發(fā)人員的工作效率,提高代碼的可讀性。其中使用強(qiáng)大的 C+ 代碼編輯器可實(shí)現(xiàn)快速編寫代碼。語法標(biāo)識(shí)和代碼完成功能輸入時(shí)進(jìn)行靜態(tài)代碼檢驗(yàn)以及提示樣式上下文相關(guān)的幫助代碼折疊括號(hào)匹配和括號(hào)選擇模式高級(jí)編輯功能。使用瀏覽工具管理源代碼。集成了領(lǐng)先的版本控制軟件,包括 Git、Perforce 和 Subversion開放式文件,無須知曉確切的名稱或位置搜索類和文件跨不同位置或文件沿用符號(hào)在頭文件和源文件,或在聲明和定義之間切換。為 Qt跨平臺(tái)開發(fā)人員的需求而量身定制
22、。集成了特定于 Qt 的功能,如信號(hào)與槽 (Signals & Slots)圖示調(diào)試器, 對(duì) Qt 類結(jié)構(gòu)可一目了然集成了 Qt Designer 可視化布局和格式構(gòu)建器只需單擊一下就可生成和運(yùn)行 Qt 項(xiàng)目。2.3 Qt creator環(huán)境搭建 下載Qt源碼包到本機(jī),然后解壓縮: 下載qt-x11-free-3.2.1.tar.gz和qt-x11-opensource-src.tar.gz二進(jìn)制包。 2.在終端切換至qt-x11-free-3.2.1.tar.gz所在目錄下,執(zhí)行:tar zxvf qt-x11-free-3.2.1.tar.g
23、z -C /usr/local 已同樣的方法將qt-x11-opensource-src-.tar.gz源碼包解壓縮 到/usr/local目錄 PS:(推薦解壓縮至/usr/local目錄,目錄可以根據(jù)名稱自己創(chuàng)建) 進(jìn)入用戶主目錄編輯該目錄下的.bash_profile文件,并設(shè)置Qt環(huán)境變量,在這里我們以root用戶以例。 #vi /root/.bash_profile /打開root用戶.bash_profile文件 在root用戶.bash_profile文件中
24、設(shè)置環(huán)境變量,在此文件里面添加如下內(nèi)容: QTDIR=/usr/local/qt-x11-free-3.2.1 PATH=$QTDIR/bin:$PATH MANPATH=$QTDIR/doc/man:$MANPATH LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export QTDIR PATH MANPATHLD_LIBRARY_PATH 添加完上面信息后按ESC鍵,“Shife+:”組合鍵回到vi編輯器命令行狀態(tài),輸入wq!(強(qiáng)制保存退出)
25、160;添加完環(huán)境變量后,使環(huán)境變量立即生效:#source /root/.bash_profile 四、進(jìn)入Qt解壓縮的目錄 #cd $QTDIR或#cd /usr/local/qt-x11-free-3.2.1都可以,因?yàn)樵?root/.bash_profile文件已經(jīng)定義了環(huán)境變量QTDIR=/usr/local/qt-x11-free-3.2.1和export QTDIR 。 使用configure工具來構(gòu)建Qt庫和它提供的工具:./configure(./configure -help
26、;配置選擇的列表。例:-thread選項(xiàng)來創(chuàng)建這個(gè)庫的一個(gè)多純種版本。) 最后一步就要進(jìn)入漫長(zhǎng)的Qt安裝編譯時(shí)間了,有事的就出去辦事吧,安裝編譯時(shí)間大約需要兩個(gè)小時(shí)。 編譯命令:make 安裝命令:make install 。首先我們進(jìn)入Linux的圖形界面,打開一個(gè)控制終端(在桌面空間處單擊鼠標(biāo)右鍵,在彈出的單菜中選擇“新建控制終端”。),在控制終端里面新建一個(gè).cpp文件,并編寫程序,如下: #vi HelloWorld.cpp /建立一個(gè)HelloWorld.cpp文件
27、160; #include<qapplication.h> #include<qlabel.h> int main(int argc,char *argv) QApplication app(argc,argv); QLabel *label=new QLabel("Hello World!",0); app.setMainWidget(label); label->show(); r
28、eturn app.exec(); 寫完上面的代碼后保存退出(wq)vi編輯器。 #qmake -project /把.cpp文件編譯成.pro文件 #qmake /通過.pro文件自動(dòng)創(chuàng)建Makefile文件 #make /編譯,生成HelloWorld執(zhí)行文件 圖2-1 Qt creator程序構(gòu)件截圖 2.4 QT編程機(jī)制信號(hào)與槽機(jī)制簡(jiǎn)介 信號(hào)/槽機(jī)制是QT區(qū)別于其它工具包的最有顯著特征的部分。在GUI編程中,當(dāng)一個(gè)widget改變,我們經(jīng)常希望另外的widget
29、被告知。更普遍地,我們希望任何的對(duì)象都可以互相通信。比如,如果用戶點(diǎn)擊close按鈕,我們大多希望調(diào)用窗口的close()方法。以前的工具集通過callback來實(shí)現(xiàn)這種通信。callback是指向函數(shù)的指針,因此,若果你想讓處理函數(shù)通知你某些事件,你可以傳遞給另一個(gè)函數(shù)一個(gè)指針來處理函數(shù)。處理函數(shù)在適當(dāng)?shù)臅r(shí)候調(diào)用callback。Callbacks有兩種根本的缺陷:第一,它們不是類型安全的,我們無法確定處理程序會(huì)調(diào)用正確參數(shù)的回調(diào)函數(shù)(callback)。第二,回調(diào)函數(shù)耦合于處理函數(shù),因?yàn)樘幚砗瘮?shù)必須知道去調(diào)用哪個(gè)回調(diào)函數(shù)。Qt提供了回調(diào)的替代技術(shù):信號(hào)和槽。當(dāng)特定事件發(fā)生時(shí)引發(fā)相應(yīng)的信號(hào)。
30、Qt的widget有許多預(yù)定義的信號(hào),同時(shí)我們也可以為widget子類添加我們自定義的信號(hào)。槽是回應(yīng)特定的信號(hào)時(shí)所調(diào)用的方法。Qt的窗口部件有許多預(yù)定義的槽,但是我們也可以為窗口部件的子類田間我們自定義的槽,以處理我們所感興趣的信號(hào)。信號(hào)槽機(jī)制是類型安全的:信號(hào)的簽名必須跟接受的槽的簽名相匹配(事實(shí)上,槽的簽名可以比信號(hào)的簽名短,因?yàn)樗梢院雎灶~外的字段)。因?yàn)楹灻窍嗳莸?,編譯器就可以幫我們檢測(cè)類型的不匹配。信號(hào)和槽是松耦合的:一個(gè)類產(chǎn)生一個(gè)信號(hào),并不知道而且不關(guān)心那個(gè)槽接受該信號(hào)。Qt的信號(hào)槽機(jī)制保證,如果你連接了一對(duì)信號(hào)槽,槽會(huì)在適當(dāng)?shù)臅r(shí)間帶著信號(hào)的參數(shù)被調(diào)用。信號(hào)和槽可以附帶任何類型任
31、何數(shù)量的參數(shù)。信號(hào)和槽是完全類型安全的。槽可以用來接受信號(hào),不過槽也是普通的成員函數(shù)。類似于對(duì)象不知道誰接受它的信號(hào),槽也不知道是否有信號(hào)連接自己。這保證了Qt可以創(chuàng)建完全獨(dú)立的組件。一個(gè)信號(hào)可以連接無數(shù)的槽,并且一個(gè)槽可以連接你想要連接的信號(hào)。甚至可以直接連接兩個(gè)信號(hào)(當(dāng)?shù)谝粋€(gè)信號(hào)產(chǎn)生,立即產(chǎn)生第二個(gè)信號(hào))。信號(hào)和槽一起形成了一種強(qiáng)大的組件編程機(jī)制。QT的信號(hào)和槽的機(jī)制可以保證如果你把一個(gè)信號(hào)和一個(gè)槽連接起來,槽會(huì)在正確的時(shí)間使用信號(hào)的參數(shù)而被調(diào)用。信號(hào)和槽可以使用任何數(shù)量、任何類型的參數(shù)。它們是完全類型安全的:不會(huì)再有回調(diào)核心轉(zhuǎn)儲(chǔ)(core dump)??梢园言S多信號(hào)和你所希望的單一槽相連
32、,并且一個(gè)信號(hào)也可以和所期望的許多槽相連。把一個(gè)信號(hào)和另一個(gè)信號(hào)直接相連也是可以的??傮w來看,信號(hào)和槽構(gòu)成了一個(gè)強(qiáng)有力的組件編程機(jī)制。如果一個(gè)類要使用信號(hào)與槽機(jī)制,它就必須是從QObject或QObject的子類繼承,而且類的定義必須加上Q_OBJECT宏。signals、slots和emit是QT特有的關(guān)鍵字,分別用來表示信號(hào)、槽、和發(fā)送信號(hào),移除這些關(guān)鍵字和預(yù)處理程序,就可以使用“標(biāo)準(zhǔn)的C+編譯器”678。槽同其他函數(shù)一樣也具有訪問權(quán)限,只是槽的訪問權(quán)限決定了誰可以和它相連,如一個(gè)public slots:包含了任何信號(hào)都可以相連的槽。一個(gè)protected slots:包含了只有這個(gè)類和
33、它的子類的信號(hào)才能連接的槽。這就是說這些槽只是類的實(shí)現(xiàn)的一部分,而不是它和外界的接口。 一個(gè)private slots:包含了只有這個(gè)類本身的信號(hào)可以連接的槽,甚至它的子類都沒有獲得連接的權(quán)利。 圖2-2信號(hào)與槽機(jī)制示意圖2.5 Qt編碼規(guī)范第一條:盡量不要直接引用 QT 示例(或其它符合 GPL 協(xié)議的程序源代碼)中源代碼如果引用了Qt示例程序,請(qǐng)?jiān)噲D在內(nèi)部使用不同的代碼行來組織它。如果直接使用了Qt的源代碼文件,請(qǐng)保留位于文件首部的版權(quán)聲明。如果您使用了別人編寫的源代碼,則需要取得相關(guān)的使用許可文書。但是如果你從建議中獲得的僅僅是一些想法,而不是你實(shí)際上使用的代碼,你也不需要文書。盡量不要
34、對(duì)Qt的源代碼進(jìn)行修改,如果為了某重要需求而一定要對(duì)Qt源代碼進(jìn)行修改,那么一定要在源代碼中修改的位置做詳細(xì)的說明,并署名。另外還要書寫詳細(xì)的修改文檔。 第二條:工程文件命名遵循的原則工程文件(.pro)命名采用:工程名.pro的方式.ptro文件中 HEARDERS 和 SOURCE行中如果有多個(gè)文件名(一般都會(huì)有的),則使用“”將他們隔開,并且使每一個(gè)文件名單獨(dú)占一行。原則上文件名的先后順序沒有限制,但是一般的慣例是將依賴性最小的文件寫在最前面,工程的主程序(一般是 main.cpp)往往出現(xiàn)在 source的最后。一般將 TARGET行寫在 HEARDERS 和 SOURCE的下面。下面
35、是范例:HEADERS=HELLO.HSOURCE=HELLO.CPPmain.cppTARGET=hello工程中所有文件和目錄命名中的字母一律使用小寫,以保持在windows環(huán)境下的兼容性。第三條:函數(shù)注釋三部分,功能、參數(shù)和返回值每個(gè)程序都應(yīng)該以一段簡(jiǎn)短地、說明其功能的注釋開頭。請(qǐng)為每個(gè)函數(shù)書寫注釋以說明函數(shù)做了些什么。如果有參數(shù)和返回值,也需要對(duì)其進(jìn)行解釋。第四條:變量、定義等注釋對(duì)于每個(gè)靜態(tài)變量和全局變量,請(qǐng)?zhí)砑酉鄳?yīng)的注釋語句。對(duì)于重要的變量、定義等進(jìn)行注釋。第五條:變量和函數(shù)的命名原則變量名或函數(shù)名中使用大寫字符來區(qū)分各個(gè)部分,以便于記憶和閱讀。全局(包括類中的)變量用長(zhǎng)名字,局部
36、變量用短名字。類成員變量前應(yīng)加上 m_,全局變量加上 g_,僅與本模塊有關(guān)的變量加上 l_。如果定義Qt類庫中某種類型的變量,采用將類名中大寫字母提取出并合并成小寫的縮寫字符串的方法(去掉第一個(gè) Q),如:QLineEdit *m_leInputNum;QString *m_sName; 如果程序中出現(xiàn)了兩個(gè)類名縮寫一樣的問題,如:QToolBar 和 QToolButton的縮寫都是tb,這時(shí)應(yīng)將其中一個(gè)類的縮寫進(jìn)行變動(dòng),變動(dòng)的準(zhǔn)則以能夠避免沖突,同時(shí)縮寫能夠表達(dá)類名為準(zhǔn)。如這里可以將 QToolBar 的縮寫為 tbar,QToolButton仍用 ,這樣就可以避免命名沖突。聲明自定義對(duì)象
37、類型的變量采用同樣的方法。局部變量應(yīng)盡量易懂簡(jiǎn)潔,使用常見的變量,如Num,nCount,i,j,k,n,len,pos,offset,nReadNum,index,nRet,ret,string,filename臨時(shí)變量,如 ltmp,ftmp,tmpStr,tempStr自定義信號(hào)以 sig_開頭,自定義槽以slt_開頭。Sig_和 slt_后面第一個(gè)單詞(或其縮寫)要以小寫字母開頭,第二個(gè)以后的單詞(或縮寫)要以大寫字母開頭。如:sig_ mouseClicked(),slt_getMouseEvent()。另外,信號(hào)和槽的參數(shù)必須完全對(duì)應(yīng)。在用connect 進(jìn)行連接的時(shí)候,信號(hào)和槽中
38、的參數(shù)可以只寫參數(shù)類型。基本結(jié)構(gòu)是數(shù)個(gè)以大寫字母開頭的單詞。返回自定義private變量值的函數(shù)命名建議以get開頭,如getLength()可以表示取回成員變量 m_nlength() 等;設(shè)置自定義private變量的函數(shù)命名建議以 set開頭,如SetLength()可以表示設(shè)置成員變量 m_nlength()等。這樣做是為了避免與Qt類中的函數(shù)名發(fā)生沖突。全局函數(shù)命名請(qǐng)以小寫g開頭。第六條:自定義類的命名原則自定義類一般有兩個(gè)文件,一個(gè)頭文件,一 個(gè)實(shí)現(xiàn)體cpp。文件名采用被封裝的類名,但是一律小寫。如果一些結(jié)構(gòu)或宏僅與本類有關(guān),可在類頭文件中定義。任何自定義類命名不要以Q開頭,以免與
39、 Qt 類庫中的類混淆。(對(duì)自定義的類命名建議以大寫字母 開頭(MMCP),表達(dá)一定版權(quán)信息,并且在文件列表時(shí)自定義類會(huì)依次排在列表的前部)。如果需要自定義一個(gè)基類,請(qǐng)確保該基類的類名以base結(jié)束。工程的界面類一般從 QwigdetQMainWindowQDialog類繼承,工程主界面類的命名采用“工程名MainWindow”方式,如:AChartMainWindow即表示Chart工程的主界面類。主界面類往往在程序的開頭(main函數(shù))處構(gòu)造,建議將構(gòu)造主界面類的語句(main函數(shù))放在 main.cpp中。對(duì)于一般的窗體,請(qǐng)?jiān)陬惷淖詈篌w現(xiàn)窗體的類型,一般的方法是如果從Qwidget 繼
40、承而來,則以Widget結(jié)尾,如果從QMainWindow繼承而來則以Window結(jié)尾,從QDialog繼承而來,則以Dialog結(jié)尾。如果在自定義類中(從Qt某個(gè)類繼承),如果覆蓋了父類中某個(gè)函數(shù),請(qǐng)?jiān)谠摵瘮?shù)的聲明旁邊注明。第七條:類聲明體中的編排在類的聲明體中,請(qǐng)按照:Q_OBJECT、public:signals:、slots:、protected:private:,的順序?qū)⒊蓡T變量和函數(shù)進(jìn)行排列。如果需要在這個(gè)類(class)中聲明某種數(shù)據(jù)類型(結(jié)構(gòu)、枚舉等),請(qǐng)將這個(gè)聲明放在所有成員變量和成員函數(shù)的前面。如果在一種類型的聲明中,即有成員變量,又有函數(shù)聲明,請(qǐng)使用兩個(gè)相同的類型聲明將它
41、們隔開,如:Private:Void function();Private:Int m_number;對(duì)一般的界面類,如果使用了信號(hào)槽,則 class聲明的第一行必須是 Q_Object建議避免使用protected類型的成員函數(shù)或者成員變量,因?yàn)樵赒t中,大量的事件處理函數(shù)(槽)均是以protected類型出現(xiàn)的。第九條:工程中目錄的使用工程中的圖片(建議以JPEG.PNG格式(避免使用gif),統(tǒng)一保存在“./pics”目錄中。工程使用的漢化相關(guān)文件(.po和.qm)放在“./i18/”目錄中。工程的臨時(shí)交換目錄請(qǐng)以宏的形式定義(建議使用“./temp/”),不要使用固定目錄。另外,請(qǐng)不要
42、使用“./temp/”目錄名(這個(gè)目錄名在Qt for windows的版本中有特殊意義)。第九條:界面布局原則制作 Qt界面的時(shí)候,請(qǐng)盡量使用布局管理器(QLayout)進(jìn)行布局管理,避免使用絕對(duì)坐標(biāo),除非你能夠絕對(duì)肯定這個(gè)界面的尺寸是完全不會(huì)變換的。如果某個(gè)區(qū)域出現(xiàn)了很多控件,在保證不會(huì)影響程序控制結(jié)構(gòu)的前提下,請(qǐng)將這些控件放在一個(gè)可以包含其它窗口控件的盒子(如QWidget,QFrame,QGroupBox)中,然后再讓這個(gè)盒子出現(xiàn)在界面上(即這些控件以整體形式出現(xiàn))。書寫界面上的英文長(zhǎng)度的時(shí)候,請(qǐng)與對(duì)應(yīng)的中文進(jìn)行比較,確保漢化后中文能夠被完全顯示。代碼中如果出現(xiàn)了需要在界面上出現(xiàn)的文字
43、,必須用英文表示,并且使用tr函數(shù)將其包含。如:tr(“message!”)不能在程序中將這些文字直接用中文替換。2.6 GDI繪圖理論基礎(chǔ) 任何圖形程序的輸出,都離不開圖形設(shè)備接口GDI(Graphic Device Interface),它是管理Windows應(yīng)用程序在窗口內(nèi)的繪圖操作和與此相關(guān)的許多其它信息。如圖形設(shè)備(打印機(jī)、顯示器)的信息、繪圖的坐標(biāo)系統(tǒng)和映射模式、繪圖工具的當(dāng)前狀態(tài)(什么樣的畫筆、畫刷、文本的前景色與背景色、文本所使用的字體)7。
44、; Windows的GDI繪制的各種圖形(點(diǎn)、線、圓、多邊形、矩形等)是與設(shè)備無關(guān)的,即在屏幕的窗口內(nèi)繪圖與在打印機(jī)上繪圖是相似的。 GDI是一個(gè)可執(zhí)行程序,它接收Windows應(yīng)用程序的繪圖請(qǐng)求(表現(xiàn)為GDI調(diào)用),并將它們傳送給相應(yīng)的設(shè)備驅(qū)動(dòng)程序,再由設(shè)備驅(qū)動(dòng)程序驅(qū)動(dòng)相應(yīng)的硬件設(shè)備,如打印機(jī)或顯示器輸出。 應(yīng)用程序使用GDI可以對(duì)三種類型的圖形進(jìn)行操作:文本操作、矢量圖形操作和光柵圖形操作(圖像操作)。 (1)文本操作是以邏輯坐標(biāo)為
45、單位來計(jì)算文本的輸出位置,用戶可以通過各種GDI函數(shù)來作出具有各種效果的文本。 (2)矢量圖形指的是利用畫點(diǎn)、直線、曲線(折線、貝塞爾曲線等)、多邊形、扇形、矩形等函數(shù)所繪制的圖形。 (3)光柵圖形操作是指以光柵圖形函數(shù)對(duì)以位圖形式存儲(chǔ)的數(shù)據(jù)進(jìn)行操作,它包括各種位圖和圖標(biāo)的輸出,其在屏幕上表現(xiàn)為對(duì)若干個(gè)行和列的像素操作。光柵圖形操作是直接從內(nèi)存到顯存的拷貝操作,其缺點(diǎn)是需要額外的內(nèi)存空間,優(yōu)點(diǎn)是操作速度快。2.7 雙緩沖機(jī)制所謂“雙緩沖區(qū)”,故名思義就是要有倆緩沖區(qū)(簡(jiǎn)稱A和B)。這倆緩沖區(qū),總是一個(gè)用于生產(chǎn)者進(jìn)行輸入緩存,另一個(gè)用于消費(fèi)者進(jìn)行輸出讀取。當(dāng)倆緩沖區(qū)都操作完,
46、再進(jìn)行一次交替切換(先前被生產(chǎn)者寫入的轉(zhuǎn)為消費(fèi)者讀出,先前消費(fèi)者讀取的轉(zhuǎn)為生產(chǎn)者寫入)。以此實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者不會(huì)同時(shí)操作在同一個(gè)緩沖區(qū),就避免了發(fā)生沖突,因此也不需要在讀寫每一個(gè)數(shù)據(jù)單元時(shí)都進(jìn)行同步/互斥操作。雙緩沖展現(xiàn)了空間換時(shí)間的優(yōu)化思路。為了解決雙緩沖問題,我們需要定義兩個(gè)互斥鎖(簡(jiǎn)稱La和Lb),分別對(duì)應(yīng)倆緩沖區(qū)。生產(chǎn)者或消費(fèi)者如果要操作某個(gè)緩沖區(qū),必須先擁有對(duì)應(yīng)的互斥鎖。Qt的雙緩沖技術(shù)(double buffering)是Qt繪畫機(jī)制的一部分,是一種在Qt4中被全面采用的技術(shù)。其核心是:把一個(gè)窗口部件渲染到一個(gè)脫屏pixmap(off- screen pixmap)中,然后再把這
47、個(gè)pixmap復(fù)制到顯示屏幕上。這樣做的目的是用于消除屏幕的閃爍并且因而界面會(huì)顯得更漂亮。Qt4中,Qt會(huì)自動(dòng)處理這些情況,所以在普通的繪畫中,我們不必要關(guān)注這些內(nèi)容。在更詳細(xì)的說明這一技術(shù)前,簡(jiǎn)單介紹一下Qt的繪畫機(jī)制。Qt的繪畫機(jī)制本質(zhì)上是提供了2個(gè)工具:QPainter和 QPaintDevice,分別代表人類世界的畫筆和畫板。Gemfield要完成一次繪畫,就必須有個(gè)畫筆(QPainter),另外,還得解決畫筆畫在哪兒(畫板,QPaintDevice)的問題。Qt中的畫板是QPaintDevice,當(dāng)然,gemfield用到的都是它的子類,也就是具體哪種畫板:它們是:QWidget、
48、QImage、QPicture、 QPixmap等,也就是每一個(gè)可見的控件(QWidget的子類)都是畫板(在其paintEvent()里繪畫)。2.8 雙緩沖技術(shù)繪圖當(dāng)要繪制屏幕時(shí),我們只要調(diào)用paint函數(shù)即可。其中我們可以使用繪圖方法來繪制任何文字圖形圖像??墒钱?dāng)我們繪制的東西多了之后,你就會(huì)發(fā)現(xiàn)又是屏幕上的顯示根本不是我們要的結(jié)果,很雜亂。我們知道,如果窗體在響應(yīng)繪圖消息的時(shí)候要進(jìn)行復(fù)雜的圖形處理,那么窗體在重繪時(shí)由于過頻的刷新而引起閃爍現(xiàn)象。解決這一問題的有效方法就是雙緩沖技術(shù)。因?yàn)榇绑w在刷新時(shí),總要有一個(gè)擦除原本圖象的過程,此時(shí)程序會(huì)利用背景色填充窗體繪圖區(qū),然后再調(diào)用新的繪圖代碼
49、進(jìn)行重繪,這樣一擦一寫造成了圖象顏色的反差。當(dāng)WM_PAINT的響應(yīng)很頻繁的時(shí)候,這種反差也就越發(fā)明顯。于是我們就看到了閃爍現(xiàn)象。因此,雙緩沖區(qū)就提供了一個(gè)完美的解決方案。我們可以在緩沖區(qū)2中繪制圖像,而是用緩沖區(qū)1來輸出到屏幕。這樣我們就可以控制繪制和現(xiàn)實(shí)的過程,從而避免上面的現(xiàn)象。雙緩沖即在內(nèi)存中創(chuàng)建一個(gè)與屏幕繪圖區(qū)域一致的對(duì)象,先將圖形繪制到內(nèi)存中的這個(gè)對(duì)象上,再一次性將這個(gè)對(duì)象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度。雙緩沖實(shí)現(xiàn)過程如下:(1)在內(nèi)存中創(chuàng)建與畫布一致的緩沖區(qū)(2)在緩沖區(qū)畫圖 (3)將緩沖區(qū)位圖拷貝到當(dāng)前畫布上 (4)釋放內(nèi)存緩沖區(qū)其實(shí),在這樣一個(gè)簡(jiǎn)單的繪圖工作中
50、,這樣的技術(shù)大可不必。而且隨著半導(dǎo)體技術(shù)的進(jìn)步,雙緩沖所能發(fā)揮出的功能相對(duì)減少。另外一個(gè)不容忽視的問題是,使用雙緩沖技術(shù)會(huì)增加系統(tǒng)的負(fù)載。因?yàn)橄啾绕胀ǖ睦L制,它多出了一些工作。比如在SYSZUXpad上運(yùn)行 GemfieldFuwaArrow程序時(shí),雙緩沖時(shí)cpu的利用率是50%,而沒有采用雙緩沖時(shí),cpu的利用率是37%。雙緩沖和直接繪制的區(qū)別示意圖如下: 圖2-1雙緩沖繪圖原理圖3 畫圖板項(xiàng)目需求分析3.1 可行性研究該階段通過對(duì)系統(tǒng)目標(biāo)的初步調(diào)研和分析,提出可行性方案并進(jìn)行論證。我們?cè)谶@里主要從技術(shù)可行性、經(jīng)濟(jì)可行性和操作可行性等方面進(jìn)行分析。3.1.1 經(jīng)濟(jì)可行性開發(fā)該系統(tǒng)所需的相關(guān)資
51、料可以通過對(duì)現(xiàn)已存在的相關(guān)系統(tǒng)進(jìn)行調(diào)查采集,所需的應(yīng)用軟件、硬件系統(tǒng)也易于獲得,因此開發(fā)成本較低。而引進(jìn)使用本系統(tǒng)后,與傳統(tǒng)方式相比,具有高效率、低成本、高質(zhì)量的特點(diǎn),可以節(jié)省不少人力、物力及財(cái)力。所以,從經(jīng)濟(jì)的角度來看,該系統(tǒng)可行。3.1.2 技術(shù)可行性技術(shù)可行性要考慮現(xiàn)有的技術(shù)條件是否能夠順利完成開發(fā)工作,軟硬件配置是否能夠滿足開發(fā)需求等等。本系統(tǒng)使用JSP開發(fā)語言,調(diào)試相對(duì)簡(jiǎn)單,當(dāng)前的計(jì)算機(jī)硬件配置也完全能夠滿足開發(fā)的需求,因此在技術(shù)上是絕對(duì)可行的。軟件方面,由于目前單機(jī)模式相對(duì)發(fā)展成熟,故軟件的開發(fā)平臺(tái)成熟可行,它們速度快、容量大、可靠性能高、價(jià)格低,完全能滿足系統(tǒng)的需求。本系統(tǒng)的開發(fā)
52、,是典型的面向?qū)ο笙到y(tǒng),采用Qt編程語言,已無技術(shù)上的問題。3.1.3 運(yùn)行可行性運(yùn)行可行性是對(duì)組織結(jié)構(gòu)的影響、現(xiàn)有人員、機(jī)構(gòu)和環(huán)境對(duì)系統(tǒng)的適應(yīng)性以及人員培訓(xùn)補(bǔ)充計(jì)劃的可行性。當(dāng)前信息化技術(shù)已經(jīng)相當(dāng)普及,各類操作人員水平都有相當(dāng)?shù)母叨?,所以在運(yùn)行上是可行的。3.1.4 時(shí)間可行性從時(shí)間上看,在兩個(gè)月的時(shí)間里補(bǔ)充相關(guān)知識(shí)并完成系統(tǒng)的開發(fā),雖然有些緊張,但卻并非不可實(shí)現(xiàn)。通過這兩個(gè)多月的不懈努力,系統(tǒng)功能已基本實(shí)現(xiàn)。3.1.5 法律可行性1所有技術(shù)資料都為合法。2開發(fā)過程中不存在知識(shí)產(chǎn)權(quán)問題。3未抄襲任何系統(tǒng),不存在侵犯版權(quán)問題。4開發(fā)過程中未涉及任何法律責(zé)任。綜上所述,本系統(tǒng)的開發(fā)從技術(shù)上、經(jīng)濟(jì)
53、上、法律上都是完全可靠的。 需求分析是一個(gè)軟件的基礎(chǔ)。如果沒有正確的需求分析就不能做出滿意的軟件。所以可以說,需求分析是一個(gè)軟件設(shè)計(jì)的靈魂。所以在任何系統(tǒng)開發(fā)之前,都用該進(jìn)行相應(yīng)的需求分析。需求分析的精準(zhǔn)度越高,開發(fā)出來的程序穩(wěn)靠行就越高,所需費(fèi)用就會(huì)降低。反之,做出來的程序安全系數(shù)不高,還會(huì)增加開發(fā)費(fèi)用,造成人力物力資源的嚴(yán)重浪費(fèi)。3.2 功能分析我作的是Qt creator下的畫圖板。在設(shè)計(jì)時(shí)需要考慮用戶的需求和畫圖的習(xí)慣。例如習(xí)慣上的工具面板應(yīng)該是豎排放置,而編輯菜單應(yīng)該放置在橫排。在進(jìn)行具體的軟件實(shí)際設(shè)計(jì)之前,應(yīng)先對(duì)使用過程中用戶可能需要并在本程序中應(yīng)當(dāng)實(shí)現(xiàn)的功能等進(jìn)行整理,并列一個(gè)簡(jiǎn)
54、要的提綱,如下:(1)畫板新建功能:新建初始畫板。(2)畫板保存、另存為功能:在對(duì)畫板進(jìn)行編輯之后,可以選擇保存或者另存為。(3)畫板的打開功能:可以打開原來編輯并保存過的畫板。(4)畫板放大功能:圖片可逐級(jí)放大尺寸。(5)畫板縮小功能:圖片可逐級(jí)縮小尺寸。(6)畫板還原功能:畫板通過不同尺寸的放大和縮小后,能夠還原到初始新建的尺寸大小。(7)畫板清空功能:畫板可以在當(dāng)前任何狀態(tài)下進(jìn)行對(duì)當(dāng)前狀態(tài)的清空,回到初始新建畫板狀態(tài)。(8)畫板畫圖工具功能:畫板可以實(shí)現(xiàn)選擇圖形、畫筆線寬、畫筆顏色等功能。(9)畫板的圖形選擇功能:畫直線、圓形、矩形、圓角矩形。(10)圖片打開、編輯、保存功能:可以打開一
55、些格式的圖片,如png、bmp等,并且可以作為畫板背景,在其做編輯并且保存Diagram。3.3 系統(tǒng)用例分打開保存新建清屏文件操作界面操作縮放用戶自由繪圖繪制基本圖形顏色選擇 繪圖線寬選擇圖4-1顯示了畫圖板使用人操作的功能模塊。包括了新建打開保存,畫圖板的縮放,清屏,繪制基本圖形,畫筆刷子橡皮,改變顏色,改變線寬圖3-1 功能分析用例圖3.4 性能需求為了保證系統(tǒng)能夠長(zhǎng)期、穩(wěn)定、安全、可靠、高效地運(yùn)行,系統(tǒng)處理的準(zhǔn)確性和及時(shí)性是系統(tǒng)的必要性能。作為系統(tǒng)中很多數(shù)據(jù)的來源,本系統(tǒng)的添加功能對(duì)于整個(gè)系統(tǒng)的功能及性能舉足輕重,其準(zhǔn)確性和及時(shí)性很大程度上決定了系統(tǒng)的成敗,因此在開發(fā)過程中,必須采用一
56、定的方法保證系統(tǒng)的準(zhǔn)確性和及時(shí)性。3.4.1 應(yīng)用需求分析系統(tǒng)的性能要求通常是對(duì)系統(tǒng)需要的存儲(chǔ)容量以及后援存儲(chǔ)、重新啟動(dòng)和安全性、運(yùn)行效率等方面的考慮。 軟件方面:通過虛擬機(jī)軟件,你可以在一臺(tái)物理計(jì)算機(jī)上模擬出另一臺(tái)或多臺(tái)虛擬的計(jì)算機(jī),這些虛擬機(jī)完全就像真正的計(jì)算機(jī)那樣進(jìn)行工作,例如你可以安裝操作系統(tǒng)、安裝應(yīng)用程序、訪問網(wǎng)絡(luò)資源等等。對(duì)于你而言,它只是運(yùn)行在你物理計(jì)算機(jī)上的一個(gè)應(yīng)用程序,但是對(duì)于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,它就是一臺(tái)真正計(jì)算機(jī)。因此,當(dāng)你在虛擬機(jī)中進(jìn)行軟件評(píng)測(cè)時(shí),可能系統(tǒng)一樣會(huì)崩潰;但是,崩潰的只是虛擬機(jī)上的操作系統(tǒng),而不是物理計(jì)算機(jī)上的操作系統(tǒng),并且,使用虛擬機(jī)的“Undo
57、”1(恢復(fù))功能,你可以馬上恢復(fù)虛擬機(jī)到安裝軟件之前的狀態(tài)。虛擬系統(tǒng)通過生成現(xiàn)有操作系統(tǒng)的全新虛擬鏡像,它具有真實(shí)windows系統(tǒng)完全一樣的功能,進(jìn)入虛擬系統(tǒng)后,所有操作都是在這個(gè)全新的獨(dú)立的虛擬系統(tǒng)里面進(jìn)行,可以獨(dú)立安裝運(yùn)行軟件,保存數(shù)據(jù),擁有自己的獨(dú)立桌面,不會(huì)對(duì)真正的系統(tǒng)產(chǎn)生任何影響 ,而且具有能夠在現(xiàn)有系統(tǒng)與虛擬鏡像之間靈活切換的一類操作系統(tǒng)。虛擬系統(tǒng)和傳統(tǒng)的虛擬機(jī)(Vmware,VirtualBox,Virtual pc)不同在于:虛擬系統(tǒng)不會(huì)降低電腦的性能,啟動(dòng)虛擬系統(tǒng)不需要像啟動(dòng)windows系統(tǒng)那樣耗費(fèi)時(shí)間,運(yùn)行程序更加方便快捷;虛擬系統(tǒng)只能模擬和現(xiàn)有操作系統(tǒng)相同的環(huán)境,而虛擬機(jī)則可以模擬出其他種類的操作系統(tǒng);而且虛擬機(jī)需要模擬底層的硬件指令,所以在應(yīng)用程序運(yùn)行速度上比虛擬系統(tǒng)慢得多。流行的虛擬機(jī)軟件有VMware(VMWare ACE)、Virtual Box和Virtual PC,它們都能在Windows系統(tǒng)上虛擬出多個(gè)計(jì)算機(jī)。3.4.2 運(yùn)行需求分析硬件條件:酷睿2 CPU、1G RAM、10 G以上硬盤的PC機(jī)。軟件條件:裝載ubantu虛擬機(jī),Qt creator。3.4.3 其他需求分析本系統(tǒng)具有較好的可維護(hù)性、可靠性、可理解性以及運(yùn)行效率
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 10《老人與海(節(jié)選)》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版高中語文選擇性必修上冊(cè)
- 人教版初中歷史與社會(huì)八年級(jí)上冊(cè) 1.1.3 亞非大河文明-古代印度 教學(xué)設(shè)計(jì)
- 傳感器沉降監(jiān)測(cè)施工方案
- 攀枝花戶外木棧道施工方案
- Unit 4 Lesson 4 We are friends(教學(xué)設(shè)計(jì))-2024-2025學(xué)年冀教版(三起)(2024)英語三年級(jí)上冊(cè)
- 句容暖氣片明裝施工方案
- 江門籃球彈性地板施工方案
- Unit 5 Launching Your Career Reading and Thinking 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高中英語人教版(2019)選擇性必修第四冊(cè)
- 小學(xué)四年級(jí)數(shù)學(xué)三位數(shù)乘兩位數(shù)競(jìng)賽測(cè)試模擬題
- 幾百幾十加減幾百幾十單元考核訓(xùn)練題大全附答案
- 中醫(yī)防感冒健康知識(shí)講座
- 熱線電話管理制度
- 中建八局分包入場(chǎng)安全指導(dǎo)手冊(cè)v2.0111
- AutoCAD 2020中文版從入門到精通(標(biāo)準(zhǔn)版)
- 紡絲原液制造工(中級(jí))理論考試復(fù)習(xí)題庫(含答案)
- 《土壤與土壤改良》課件
- 大梅沙河道河道流量水位
- ISO9001ISO14001ISO45001外部審核資料清單
- 張岱年:《中國(guó)文化概論》
- 緊固件常用標(biāo)準(zhǔn)件匯總圖
- 人教版初二英語八年級(jí)上冊(cè)全冊(cè)英語單詞表
評(píng)論
0/150
提交評(píng)論