




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、小型科學(xué)計算器的設(shè)計與實現(xiàn)院 系計算機(jī)學(xué)院專 業(yè)計算機(jī)科學(xué)與技術(shù)班 級學(xué) 號姓 名指導(dǎo)教師負(fù)責(zé)教師沈陽航空航天大學(xué)2012年6月摘 要隨著計算機(jī)的飛速發(fā)展,人類已經(jīng)進(jìn)入信息化時代。信息技術(shù)發(fā)展日新月異,計算機(jī)已經(jīng)進(jìn)入人們生活的各個領(lǐng)域,在現(xiàn)代生活中不可或缺,大型復(fù)雜的計算是人腦所不能勝任的,而且較易出錯。而以前的計算器只能進(jìn)行十進(jìn)制的四則運算,不能滿足我們的需求。本文針對小型科學(xué)計算器進(jìn)行研究,增加了很多功能,給用戶帶來了很多方便,并且提高了用戶的運算效率。本文從項目背景、需求分析、軟件設(shè)計、系統(tǒng)實現(xiàn)、系統(tǒng)調(diào)試等方面詳細(xì)說明了小型科學(xué)計算器的開發(fā)設(shè)計過程。軟件采用vs2008編寫代碼,Qt d
2、esigner設(shè)計界面來開發(fā)。計算器包含簡單的四則運算、復(fù)雜的數(shù)學(xué)表達(dá)式運算、正弦和余弦運算、進(jìn)制之間的相互轉(zhuǎn)換、按鍵幫助等功能。計算器具有界面可視化,方便用戶操作等特點,并且該計算器的算式提取與存儲功能使得算式計算更加快捷方便,為用戶進(jìn)行大量復(fù)雜科學(xué)計算提供了有效保證。關(guān)鍵詞:科學(xué)計算器;進(jìn)制轉(zhuǎn)換;算式提取; Qt designeAbstract Because of the calculator which is flying quickly, the mankind have already entered into information-based ages. The develop
3、ment of the information technique is changing with each passing day. the calculator has already entered each realm of the peoples life,which is very important in the modern times. the large and complicated calculation which is not competent for persons brain, which is possible to make many mistakes
4、. The calculator only decimal four operations,The calculator can not meet our needs. This paper studied the small scientific calculator,Increased a lot of functions,To give users a lot of convenience, and improves the users operation efficiency. This article through the project background, requireme
5、nt analysis, software design, system realization, system debugging to design calculator. This article through the VS2008 code, Qt designer interface design to develop. The calculator includes a simple four operations, complex mathematical expression operation, sine and cosine computation, hexadecima
6、l conversion between, key help functions, with a visual interface, easy to operate.This paper introduces the functions of the calculator and the effect of operation, the calculator with a visual interface, convenient operation, the calculator can be carried out calculation formula, the calculator co
7、nvenient than before. Also commonly used formula extraction and storage, convenient for users to use. With the help of functional, user can quickly learn to operate.Keyword: Hexadecimal, Demand analysis, extraction, expression目 錄1 緒論11.1 項目背景11.2 項目內(nèi)容和要求2 題目介紹2 題目要求21.3 項目特點及意義32 需求分析42.1 功能需求42.2 功
8、能分析42.3 安全性分析52.4 可行性分析62.5 系統(tǒng)設(shè)計工具62.5.1 Visual studio 2008技術(shù)簡介62.5.2 QSqlite數(shù)據(jù)庫技術(shù)73 軟件設(shè)計103.1 數(shù)據(jù)庫設(shè)計10 實體屬性圖10關(guān)系模型設(shè)計11數(shù)據(jù)庫結(jié)構(gòu)設(shè)計113.2系統(tǒng)功能模擬設(shè)計12普通計算功能12科學(xué)計算功能12時間功能13算式提取功能13清空功能14刪除功能14幫助功能144 系統(tǒng)實現(xiàn)164.1普通計算功能164.2科學(xué)計算功能164.3時間功能174.4算式提取功能184.5幫助功能194.6幫助添加功能205 系統(tǒng)調(diào)試21結(jié)論23參考文獻(xiàn)24致謝251 緒論1.1 項目背景隨著計算機(jī)的飛速
9、發(fā)展,人類已經(jīng)進(jìn)入信息化時代。信息技術(shù)發(fā)展日新月異,計算機(jī)已經(jīng)進(jìn)入人們生活的各個領(lǐng)域,在現(xiàn)代生活中不可或缺,大型復(fù)雜的計算是人腦所不能勝任的,而且較易出錯。以前的計算器只能進(jìn)行簡單的加減乘除四則運算,而且只能進(jìn)行單步運算,如果遇到較長的算式時就得讓用戶一步一步輸入,浪費很多時間,還會可能遺漏數(shù)據(jù)內(nèi)容,讓用戶得多次輸入算式驗證,如果一次錯誤就得驗證多遍,浪費時間效率低下。隨著科技的發(fā)展,人們所學(xué)習(xí)的內(nèi)容越來越多,接觸到的進(jìn)制有二進(jìn)制、八進(jìn)制、十六進(jìn)制等,傳統(tǒng)計算器只能十進(jìn)制運算已經(jīng)不能滿足人們的需求,給人們帶來了不便。本文設(shè)計的計算器比傳統(tǒng)計算器多了許多功能,可以進(jìn)行算式運算,而不同只能兩個數(shù)運
10、算,可以多個數(shù)一起運算,并且增加了大括號、中括號、小括號功能,這樣就可以分清優(yōu)先運算,提高運算效率,并且保證輸入算式的正確,就可以減少因輸錯數(shù)據(jù)而帶來的不便。本文設(shè)計的計算器不再局限于十進(jìn)制運算,可以進(jìn)行二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制的運算,擴(kuò)大了用戶的運算領(lǐng)域。并且考慮到用戶有時常用一些算式,而且這些算式內(nèi)容比較長,輸入麻煩,于是本文設(shè)計了算式的增刪改查功能,用戶就可以把常用的算式輸入窗口并保存起來,在下次用到時在調(diào)用出來進(jìn)行運算,而存儲中不用的算式也可以刪除。提高了用戶的效率,方便了用戶的操作,這是傳統(tǒng)計算器所不具備的。本文還設(shè)計簡單的科學(xué)計算開方、平方、正弦、余弦、角度、弧度的計算,最
11、多可以輸入256字符,操作簡便,為方便用戶,還增加了普通計算窗口和科學(xué)計算窗口,普通計算窗口可以進(jìn)行傳統(tǒng)計算,并增加了各種進(jìn)制的計算。科學(xué)計算窗口可以進(jìn)行算式計算等功能。本文設(shè)計中為方便用戶快速掌握計算器的操作,增加了幫助功能,并且再次功能中可以對所有按鍵進(jìn)行查詢,也可以對單個按鍵進(jìn)行查詢,并根據(jù)用戶的喜好對幫助里的內(nèi)容進(jìn)行修改,知道的按鍵功能刪除,不常用的按鍵功能添加進(jìn)去,這樣提到用戶的查找效率,使用戶更好更快的掌握計算器的操作。本文設(shè)計中主要采用的技術(shù)為Qt designer+vs2008,Qt designer為設(shè)計可視化界面,通過此軟件的設(shè)計可以快速設(shè)計出自己需要的界面,一般通過一周時
12、間的自學(xué)就可以熟練的掌握此軟件的運用。然后再到vs2008中編寫各個按鍵的槽函數(shù)與算法。這里就得自學(xué)Qt,上網(wǎng)查找資料,看書查找例子。1.2 項目內(nèi)容和要求1.2.1 題目介紹設(shè)計一個功能齊備的小型科學(xué)計算器,具有算式編輯計算和普通計算窗口。具體要求如下:算式編輯窗口:可以對算式進(jìn)行編輯、存儲、粘貼、修改、計算。算式長度可達(dá)256個字符。算式內(nèi)可同時出現(xiàn)二、八、十六、十等不同進(jìn)制,并可實現(xiàn)大中小括號和各類不同函數(shù)及位運算。三角函數(shù)可設(shè)置度或弧度。設(shè)計實現(xiàn)文件處理窗口,可實現(xiàn)算式的添加、刪除、存儲和提取。普通計算窗口:支持二、八、十六、十等不同進(jìn)制數(shù)據(jù)的直接輸入、計算和數(shù)制間的相互轉(zhuǎn)換,當(dāng)輸入回
13、車鍵或等號鍵時直接給出當(dāng)前算式的運算結(jié)果,算式計算和編輯可同時交叉進(jìn)行,設(shè)置中間變量,方便運算過程中中間數(shù)據(jù)的存儲或提取插入。1.2.2 題目要求(1) 實現(xiàn)二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制之間的轉(zhuǎn)換;(2) 實現(xiàn)對算式的編輯、存儲、粘貼、修改、計算;(3) 算式長度可達(dá)256個字符;(4) 實現(xiàn)普通計算和科學(xué)計算;(5) 實現(xiàn)大中小括號和各類不同函數(shù)及位運算;(6) 支持二、八、十六、十等不同進(jìn)制數(shù)據(jù)的直接輸入、計算和數(shù)制間的相互轉(zhuǎn)換;(7) 實現(xiàn)對各個按鍵的幫助功能;(8) 顯示當(dāng)前日期時間功能;采用高級程序設(shè)計語言,編碼規(guī)范清晰,關(guān)鍵算法或處理須加注釋說明。1.3 項目特點及意義本文對計
14、算器進(jìn)行設(shè)計,比傳統(tǒng)計算其增加了許多功能,使用更方便,主要有以下幾個特點:(1) 計算速度快,節(jié)省時間、人力(2) 普通窗口可以進(jìn)行各進(jìn)制的加減乘除運算。(3) 科學(xué)計算窗口可以進(jìn)行小括號、中括號、大括號,正弦、余弦,角度,弧度,包括普通窗口的運算。(4) 可對算式進(jìn)行存儲,添加,刪除等功能。 (5) 有幫助功能,可以通過查詢查詢個按鍵的功能,可以對按鍵功能添加、刪除。 (6) 提供良好的人機(jī)交互界面,操作簡單快捷。小型科學(xué)計算器比傳統(tǒng)計算器多了很多功能,可以進(jìn)行普通窗口計算,也可以進(jìn)行科學(xué)窗口計算。普通窗口計算時可以進(jìn)行各種進(jìn)制的四則運算,還可以把數(shù)字通過進(jìn)制轉(zhuǎn)換,得到需要的數(shù)據(jù)。科學(xué)窗口計
15、算時可以把整個算式輸入進(jìn)行計算,這樣避免因輸入的數(shù)據(jù)過多而得多次驗證,只需確保輸入的算式正確就可以得到正確的結(jié)果。可以把常用的算式保存起來,這樣下次再用時用戶可以直接提取算式,避免了因再次輸入算式而浪費時間,提到了效率。科學(xué)計算式還可以進(jìn)行,正弦、余弦、角度、弧度、開方、平方、或與非等運算,并且增加了括號符號,使得算式具有優(yōu)先級。提高運算效率。并增加了幫助功能,使得用戶及時查詢幫助功能,快速學(xué)會使用操作。2 需求分析2.1 功能需求在程序設(shè)計中,通過設(shè)計、編制、調(diào)試一個模擬計算器的程序,加深對語法及語義分析原理的理解,并實現(xiàn)對命令語句的靈活應(yīng)用。在程序設(shè)計中,可以用兩種方法解決問題:一是傳統(tǒng)的
16、結(jié)構(gòu)化程序設(shè)計方法,二是更先進(jìn)的面向?qū)ο蟪绦蛟O(shè)計方法。而在面向?qū)ο蟪绦蛟O(shè)計中關(guān)鍵是如何將問題域中的實體(即日常所見的概念)抽取出來,作為C+程序中的類,而屬性與行為作為類的兩類要素通常是必不可少的,甚至還應(yīng)考慮類必須滿足的約束。我們?nèi)粘I畹拈_支,大額數(shù)字或是多倍小數(shù)的計算都需要計算器的幫助,處理數(shù)字的開方、正余弦都離不開計算器。雖然現(xiàn)在的計算器價格比較低廉,但是功能過于簡單的不能滿足個人需求,功能多的價格較貴,操作不便不說,很多功能根本用不到。所以,我們想到可不可以用自己的所學(xué)為自己設(shè)計開發(fā)一個屬于自己的簡單計算器來完成日常生活的需求。計算器是日常生活中十分便捷有效的工具,能實現(xiàn)加、減、乘、
17、除、開方、求倒數(shù)等簡單運算的工具。要實現(xiàn)計算功能,可以用C+和Qt的知識編寫程序來解決此問題。該計算器大大的降低了數(shù)字計算的難度及提高了計算的準(zhǔn)確度和精確度。該計算器使用非常簡單和方便,對廣大中小學(xué)生的學(xué)習(xí)有巨大幫助作用,也對在職人員的工作有點幫助作用。本文的程序設(shè)計設(shè)計工作環(huán)境為Visual C+2008+Qt designer,在程序設(shè)計中,采用了結(jié)構(gòu)化與面向?qū)ο髢煞N解決問題的方法。2.2 功能分析1).普通窗口計算設(shè)計這一模塊要求進(jìn)行加減乘除運算。支持二、八、十六、十等不同進(jìn)制數(shù)據(jù)的直接輸入、計算和數(shù)制間的相互轉(zhuǎn)換,當(dāng)輸入回車鍵或等號鍵時直接給出當(dāng)前算式的運算結(jié)果,算式計算和編輯可同時交
18、叉進(jìn)行,設(shè)置中間變量,方便運算過程中中間數(shù)據(jù)的存儲或提取插入。2).科學(xué)算式窗口計算設(shè)計(1) 可以對算式進(jìn)行編輯、存儲、粘貼、修改、計算。(2) 算式長度可達(dá)256個字符。(3) 算式內(nèi)可同時出現(xiàn)二、八、十六、十等不同進(jìn)制,并可實現(xiàn)大中小括號和各類不同函數(shù)及位運算。(4) 三角函數(shù)可設(shè)置度或弧度。(5) 設(shè)計實現(xiàn)文件處理窗口,可實現(xiàn)算式的添加、刪除、存儲和提取。3).幫助功能實現(xiàn)設(shè)計(1) 通過幫助鍵可以查找各鍵的功能。(2) 可以對幫助里的功能添加刪除。4).時間功能設(shè)計可以顯示當(dāng)前時間,并且隨著電腦時間的改變而改變。5).算式編輯(1)可以對輸入的算式保存。(2)可以添加算式。(3)可以
19、刪除算式。2.3 安全性分析本軟件可供多用戶使用,這里首先談備份數(shù)據(jù),對一些用戶自有的數(shù)據(jù)是非常重要的,一旦用戶的自有數(shù)據(jù)遭到破壞,將造成不可彌補(bǔ)的損失,如果沒有備份的話,則后果是不堪設(shè)想。建議各級用戶都要及時妥善備份自有的數(shù)據(jù),如:歷年資料、重要方案、管理文獻(xiàn)、重要數(shù)據(jù)等,而且要備份到本機(jī)之外的存儲介質(zhì)上(如光盤、移動硬盤)。而在這里我們使用Qt自帶的QSqlite數(shù)據(jù)庫,進(jìn)行存儲算式,對算式進(jìn)行添加、保存、刪除功能,并且在幫助功能上也使用此數(shù)據(jù)庫,把各個按鍵的功能村如此數(shù)據(jù)庫中。還可以添加和刪除,非常方便。 并且此程序界面使用Qt designer進(jìn)行布局,這樣對各個控件進(jìn)行布局,排版結(jié)構(gòu)
20、時不容易出錯,快速便捷。提高軟件的安全性。2.4 可行性分析計算器是日常生活中非常便捷有效的工具,它具有普通計算和科學(xué)計算,能實現(xiàn)加減乘除等普通功能,還可以實現(xiàn)算是運算,并且可以進(jìn)行進(jìn)制裝換,不再局限于十進(jìn)制,他大大的提高了我們的效率,節(jié)省了時間,可促進(jìn)科技的發(fā)展,還可以用來存儲算式,可以方便下次使用,采用Qt編寫,Qt designer設(shè)計的界面美觀,還可以用拖拽功能進(jìn)行設(shè)計控件的位置、大小、屬性、結(jié)構(gòu)等功能,這樣在編寫代碼時就不用浪費時間對控件進(jìn)行聲明等代碼了。這降低了程序員的難度,提高了程序員的效率,并且上手快,以我實習(xí)的經(jīng)驗來看差多10天就可以學(xué)會一部分了,對于第一次接觸這個軟件的人來
21、說是一個不錯的選擇,具有一定的可行性。技術(shù)經(jīng)濟(jì)分析是研究技術(shù)領(lǐng)域的經(jīng)濟(jì)問題和經(jīng)濟(jì)規(guī)律的科學(xué),是研究一定技術(shù)條件下如何提高經(jīng)濟(jì)效果的科學(xué),是技術(shù)與經(jīng)濟(jì)的交叉。在技術(shù)上,主要是采用Visual Studio 2008,它在Visual Studio 2008的基礎(chǔ)上新增了數(shù)據(jù)庫訪問、各種計算等方面的功能。它可以進(jìn)行復(fù)雜的數(shù)據(jù)庫操作,進(jìn)行算是的增、刪、改、查等功能。Visual Studio 2008中主要是編寫代碼,用Qt編寫,有些類似C+,但大多數(shù)都是Qt封裝好的函數(shù)。在Visual Studio 2008中安裝Qt軟件,配置環(huán)境變量,并安裝Qt插件。從而用Qt designer進(jìn)行制作界面,做
22、出的效果既美觀又快捷方便。經(jīng)濟(jì)上,一臺電腦4000元左右,軟件基本上都是免費的開源的,所以開發(fā)小型科學(xué)計算器的成本較低,而計算器軟件是人們生活學(xué)習(xí)離不開的工具,按照軟件工程的方法進(jìn)行設(shè)計,使用Qt具有良好美觀的界面,必要的信息存儲和和較好的健壯性,使用人員能夠快捷簡單的進(jìn)行操作,可以快捷的獲得計算結(jié)果,給人們帶來方便,對人們的生活有很大的幫助。2.5 系統(tǒng)設(shè)計工具2.5.1 Visual studio 2008技術(shù)簡介Visual Studio 是微軟公司推出的開發(fā)環(huán)境。是目前最流行的 Windows 平臺應(yīng)用開發(fā)環(huán)境。目前已經(jīng)開發(fā)到 9.0 版本,也就是 Visual Studio 2008
23、。 Visual Studio 可以用來創(chuàng)建 Windows 平臺下的 Windows 應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和 Office 插件。 Visual Basic、Visual C+ 都被擴(kuò)展為支持托管代碼機(jī)制的開發(fā)環(huán)境, 使用Visual Studio SDK創(chuàng)建可以擴(kuò)展Visual Studio IDE的工具M(jìn)icrosoft Visual Studio 2008是面向Windows Vista、Office 2007、Web 2.0的下一代開發(fā)工具,代號“Orcas”,是對Visual Studio 2005一次及時、全面的升級。VS2008引入了
24、250多個新特性,整合了對象、關(guān)系型數(shù)據(jù)、XML的訪問方式,語言更加簡潔。使用Visual Studio 2008可以高效開發(fā)Windows應(yīng)用程序。設(shè)計器中可以實時反映變更,XAML中智能感知功能可以提高開發(fā)效率。同時Visual Studio 2008支持項目模板、調(diào)試器和部署程序。Visual Studio 2008可以高效開發(fā)Web應(yīng)用,集成了AJAX 1.0,包含AJAX項目模板,它還可以高效開發(fā)Office應(yīng)用和Mobile應(yīng)用。 Vs2008還可以安裝各種插件,如Delta3d可以制作動畫和游戲,如本軟件的 Qt designer可以進(jìn)行界面制作。可以結(jié)合編寫程序本程序以Qt d
25、esigner和vs2008相連接,由Qt designer設(shè)計計算器界面,添加控件,并修改屬性,再在vs2008中編寫代碼,并連接Qt自帶的數(shù)據(jù)庫QSqlite。2.5.2 QSqlite數(shù)據(jù)庫技術(shù)SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩
26、款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于2000年5月. 至今已經(jīng)有10個年頭,SQLite也迎來了一個版本 SQLite 3已經(jīng)發(fā)布。SQLite雖然很小巧,但是支持的SQL語句不會遜色于其他開源數(shù)據(jù)庫。(1) Qt designer技術(shù)介紹簡單的來說QT Designer是一個GUI的工具。這個工具可以幫助我們來加快寫QT 程序的速度.利用QT Designer可以用一種所見既所得的方式,來產(chǎn)生QT程序的GUI介面的程式碼.通過增加一些功能,就可以完成一個程序了.利用QT Designer可以非常快速的學(xué)會QT,而我們這里說利用QT
27、 Designer來學(xué)習(xí)QT而不是利用QT Designer來寫QT,這里的區(qū)別就在于QT Designer所產(chǎn)生的程序代碼有些繁瑣,運行起來也比較的慢些,我們這里只是利用QT Designer來幫助我們學(xué)習(xí),而不是直接去運行QT Designer生成的程序,在這里把Qt designer與vs2008連接在一起,安裝qt-win-opensource-vs2008.exe,在安裝vs的qt插件,在配置環(huán)境變量:QT = your Qt-root-folder;在 PATH中添加: “;%QT%bin”。然后就可以用Qt designer中的控件進(jìn)行制作程序界面,并且可以直接修改屬性,這樣可以
28、在代碼量上節(jié)省不少時間。(2) Qt技術(shù)介紹QT 是一個跨平臺的 C+ GUI 應(yīng)用構(gòu)架,它提供了豐富的窗口部件集,具有面向?qū)ο蟆⒁子跀U(kuò)展、真正的組件編程等特點,更為引人注目的是目前 Linux 上最為流行的 KDE 桌面環(huán)境就是建立在 QT 庫的基礎(chǔ)之上。QT 支持下列平臺:MS/WINDOWS-95、98、NT 和 2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX、SGI IRIX;EMBEDDED- 支持 framebuffer 的 Linux 平臺。伴隨著 KDE 的快速發(fā)展和普及,QT 很可能成為 Linux 窗口平
29、臺上進(jìn)行軟件開發(fā)時的 GUI 首選。信號和槽機(jī)制是 QT 的核心機(jī)制,要精通 QT 編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應(yīng)用于對象之間的通信,它是 QT 的核心特性,也是 QT 區(qū)別于其它工具包的重要地方。信號和槽是 QT 自行定義的一種通信機(jī)制,它獨立于標(biāo)準(zhǔn)的 C/C+ 語言,因此要正確的處理信號和槽,必須借助一個稱為 moc(Meta Object Compiler)的 QT 工具,該工具是一個 C+ 預(yù)處理程序,它為高層次的事件處理自動生成所需要的附加代碼。在我們所熟知的很多 GUI 工具包中,窗口小部件 (widget) 都有一個回調(diào)函數(shù)用于響應(yīng)它們能觸發(fā)的每個動作,
30、這個回調(diào)函數(shù)通常是一個指向某個函數(shù)的指針。但是,在 QT 中信號和槽取代了這些凌亂的函數(shù)指針,使得我們編寫這些通信程序更為簡潔明了。 信號和槽能攜帶任意數(shù)量和任意類型的參數(shù),他們是類型完全安全的,不會像回調(diào)函數(shù)那樣產(chǎn)生 core dumps。在這里我設(shè)計的主窗口為:QWidget,而在幫助窗口為:QDialog。所有從 QObject 或其子類 ( 例如 Qwidget) 派生的類都能夠包含信號和槽。當(dāng)對象改變其狀態(tài)時,信號就由該對象發(fā)射 (emit) 出去,這就是對象所要做的全部事情,它不知道另一端是誰在接收這個信號。這就是真正的信息封裝,它確保對象被當(dāng)作一個真正的軟件組件來使用。槽用于接收
31、信號,但它們是普通的對象成員函數(shù)。一個槽并不知道是否有任何信號與自己相連接。而且,對象并不了解具體的通信機(jī)制。你可以將很多信號與單個的槽進(jìn)行連接,也可以將單個的信號與很多的槽進(jìn)行連接,甚至于將一個信號與另外一個信號相連接也是可能的,這時無論第一個信號什么時候發(fā)射系統(tǒng)都將立刻發(fā)射第二個信號。總之,信號與槽構(gòu)造了一個強(qiáng)大的部件編程機(jī)制。3 軟件設(shè)計3.1 數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫在一個管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應(yīng)用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)庫的完整性和一致性。同時,合理的數(shù)據(jù)庫結(jié)構(gòu)也將有利于程序的實現(xiàn)。3.1.1
32、實體屬性圖E-R圖是實體之間聯(lián)系的一個簡單表述,下面詳細(xì)介紹各實體的屬性:算式信息算式名字算式編號圖3.1算式實體屬性圖算式實體屬性如圖3.1,包括算式id,算式名字。按鍵信息按鍵功能按鍵名按鍵編號圖3.2按鍵信息實體屬性圖按鍵信息實體屬性如圖3.2,包括按鍵編號,按鍵名,按鍵功能。3.1.2關(guān)系模型設(shè)計本系統(tǒng)中主要的關(guān)系模型設(shè)計如下:算式信息(編號,算式名);按鍵信息(編號,按鍵名,按鍵功能);3.1.3數(shù)據(jù)庫結(jié)構(gòu)設(shè)計每個數(shù)據(jù)文件均有一張定義表。其數(shù)據(jù)庫各表的表頭信息更為詳細(xì)的反映數(shù)據(jù)間的關(guān)系。本系統(tǒng)數(shù)據(jù)庫的內(nèi)容包括算式表、幫主功能表。表的具體設(shè)計如下所示:(1)算式表用來存儲算是編號和算式
33、名,表名:message。本表用來存儲已用戶常用的算式,其中可以對算式進(jìn)行保存、刪除、修改,方便用戶及使用到常用的式子,提高用戶效率。算式表如表3.1所示。3.1算式表字段名稱數(shù)據(jù)類型長度備注編號Int4算是編號(Id)算是名QString16算式(formulanumber)(2)按鍵信息表用來存儲按鍵編號,按鍵名,按鍵功能,表名:helpmessage。本表用來實現(xiàn)幫助功能,存儲幫助功能中按鍵的信息,可以查看所有的按鍵功能,也可以看單個按鍵信息,還可以對案件信息進(jìn)行增加和刪除。按鍵表如表3.2所示。3.2按鍵表字段名稱數(shù)據(jù)類型長度備注編號自動編號長整型為主碼、唯一(id)按鍵名Vchar1
34、按鍵名(helpname)功能Vchar1按鍵功能(explain)3.2系統(tǒng)功能模擬設(shè)計普通計算功能(1) 界面設(shè)計界面設(shè)計我是使用Qt designer進(jìn)行設(shè)計,首先創(chuàng)建一個CounterWidget.Ui,這個界面為QWidget。然后在左側(cè)的Widget Box找相應(yīng)的控件添加到CounterWidget里。首先提出一個lineEdit控件作為算式顯示窗口和結(jié)果顯示窗口,在提取出26個QpushButton為0到F按鍵和加減乘除按鍵、等于按鍵、幫助按鍵。然后再把各個pushButton名字改成相應(yīng)的符號,并且改對應(yīng)pushbutton的屬性,保存后取vs2008編譯CounterWid
35、get.Ui,運行程序就可以顯示相應(yīng)界面。(2) 算法設(shè)計現(xiàn)在.h文件中對各個按鍵在私有槽中進(jìn)行聲明,例如:void on_zeroButton_clicked();,就對0鍵進(jìn)行聲明,然后就可以在.cpp進(jìn)行編寫程序。聲明first,second兩個整形表示第一個輸入和第二個輸入,然后用Qt封裝好的append()函數(shù)進(jìn)行編寫代碼,使其按鍵符號點擊后可以在lineEdit上顯示,在這里用的是信號和槽的機(jī)制。等于好中的算法主要用棧進(jìn)行編寫,在下面科學(xué)計算中再詳細(xì)介紹。科學(xué)計算功能本界面的主要功能是在普通計算上添加一些科學(xué)計算,如平方、開放、取倒數(shù)、正弦、余弦、大括號、中括號、小括號等功能。(1
36、) 界面設(shè)計:在普通窗口的基礎(chǔ)上添加一些QPushButton按鈕,修改其屬性,變成相應(yīng)的功能,再從左面把QRadioButton控件加到界面中,使其分別為普通計算和科學(xué)計算。這個控件的功能為只能有一個被點中,然后再拖拽四個QRadioButton控件到界面,使其分別表示二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制,修改期屬性。再到vs2008中編譯次ui界面,點擊運行時可顯示相應(yīng)的界面,達(dá)到想要的效果。(2) 程序的具體實現(xiàn):首先各個按鈕控件都得在,h文件中聲明,再到,cpp文件中寫相應(yīng)的代碼。在二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制的函數(shù)中把相應(yīng)用不到的按鍵用函數(shù)寫成不顯示,要用的顯示,然后讀取顯示窗口的內(nèi)
37、容,把其轉(zhuǎn)換成相應(yīng)進(jìn)制的數(shù)字,并把此時窗口的狀態(tài)記錄成此時的進(jìn)制,方便其他的運算。在其他科學(xué)運算符的按鍵的函數(shù)編寫代碼,讀取窗口數(shù)據(jù),把其轉(zhuǎn)換成double型,然后進(jìn)行相應(yīng)的運算,再把結(jié)果顯示到窗口。時間功能(1) 界面設(shè)計: 在窗口的右側(cè)添加一個lineEdit控件,修改其屬性,把它作為顯示時間用。再到vs2008中編譯ui界面。(2) 具體功能實現(xiàn):這個功能我要在軟件剛打開就顯示,所以我在構(gòu)造函數(shù)進(jìn)行編寫此功能。在其中聲明一個時間的函數(shù),然后在根據(jù)startTimer(1000)使其每一秒刷新一次,在編寫時間函數(shù),使其顯示時間為電腦上的時間,日期為點到日期,時間為時間,再按照年月日時分秒的
38、順序顯示出來。算式提取功能本模塊是本系統(tǒng)的算式提取、刪除、保存功能。(1) 界面介紹: 這里我要用三個QpushButton控件,他們分別表示提取算式、保存算式、刪除算式,在修改其屬性,在拖拽一個tableView控件,它用來把算式存儲的結(jié)果顯示出來,而且還可以在其上點擊選擇的算式。(2) 程序的具體實現(xiàn):保存算式:首先提取窗口上的算式,然后查詢算式表(message),查找最后一個id的值,然后id加一,再把次id和窗口提取的算式存入數(shù)據(jù)庫算式表(message)中,然后查詢整個message表把表中的內(nèi)容顯示出來。提取算式:先用currentIndex().row()把鼠標(biāo)點中的行選中,提
39、出行數(shù),把它作為id。然后聲明tableView的model,這個是Qt專門為tableview封裝好的model,它的作用為把數(shù)據(jù)顯示到tableView,我再從數(shù)據(jù)庫中查找相應(yīng)的id,把他的算式通過model存儲到一個QString型的變量中,然后就可以把它顯示到窗口。刪除算式:先用currentIndex().row()把鼠標(biāo)點中的行選中。提出行數(shù),聲明model,再用model中封裝好的函數(shù)刪除這一行,在加上警告函數(shù),判斷是否刪除,就可以了。(3)數(shù)據(jù)庫設(shè)計首先創(chuàng)建一個database.h文件,在這個文件中編寫創(chuàng)建message表,用sql語句編寫,這個表包含兩個元素,分別為id和fo
40、rmulanumber,id我設(shè)定為自增長,formulanumber為算式,這里我使用的是QSqlite數(shù)據(jù)庫,它小巧,占內(nèi)存空間小,更快捷,在main主函數(shù)連接數(shù)據(jù)庫就可以了。清空功能此功能為清空顯示窗口,這里用Qt封裝好的函數(shù)clear(),直接把lineEdit給清空,這樣就達(dá)到效果。刪除功能此功能為刪除窗口最后一個字符,具體編寫為:提取窗口的內(nèi)容,把它存到一個QString型變量中,然后用Qt封裝好的函數(shù),把這個變量從左開始把最后一個字符去掉,使其長度減少一,在存放到這個變量中,再把這個變量重新輸入到窗口中,這樣就達(dá)到刪除的功能了。幫助功能本模塊是本系統(tǒng)的幫助功能,它負(fù)責(zé)介紹各個按鍵
41、的功能,他還可以添加按鍵功能,也可以刪除按鍵功能,還可以查詢所有的按鍵功能,也可以通過條件查詢查詢單個按鍵功能。(1) 界面介紹: 因為這是有一個界面,所以我有創(chuàng)建一個界面helpDialog.ui,它是QDialog比QWidget第一個級別。這里我用新號和槽來實現(xiàn)點擊幫助出現(xiàn)這個界面。在QDialog里放一個大的tableView用來顯示幫助按鈕的名字和按鈕信息, 再加一個QLable表示按鍵名,再加一個QLineEdit來輸入按鍵名,還有一個pushButton來表示查詢,這樣就可以查詢用戶要查詢的單獨信息,方便用戶快速查找。再加上四個pushbutton按鈕,用來表示添加、刪除、返回和
42、退出。添加為用戶添加需要的俺家?guī)椭畔ⅲ瑒h除使用戶刪除用戶不需要的幫助信息,這樣方便用戶查詢,節(jié)省空間。返回為查詢?nèi)恚@示所有的案件信息,這樣用戶即可以查詢單個信息,也可以查詢所有的信息。退出為退出這個界面,使用的是信號和槽的機(jī)制。(2) 數(shù)據(jù)庫設(shè)計在以創(chuàng)建的database.h文件中在編寫創(chuàng)建helpmessage表,用sql語句編寫,這個表包含三個元素,分別為id和helpname,explain,id我設(shè)定為自增長,helpname為按鍵名字,explain為按鍵信息注釋, 可以根據(jù)按鍵名在數(shù)據(jù)庫查找相應(yīng)的信息。這里我使用的是QSqlite數(shù)據(jù)庫,它小巧,占內(nèi)存空間小,更快捷,在mai
43、n主函數(shù)連接數(shù)據(jù)庫就可以了。(3) 程序具體實現(xiàn):首先在vs2008中編譯helpDialog.ui界面,然后對各個按鈕進(jìn)行聲明,然后在幫助按鈕的槽函數(shù)中編寫代碼,首先聲明QDialog,在聲明一個model對應(yīng)這個界面的tableView,用setupUi函數(shù)就可以把下一個界面顯示出來,這樣我點擊幫助按鈕就可以顯示幫助界面。根據(jù)新聲明的model調(diào)用數(shù)據(jù)庫,把表helpmessgae顯示出來。在返回按鈕的槽函數(shù)中編寫代碼,使其點擊此按鈕顯示所有的表信息,用剛聲明的model把表中的所有信息顯示出來。在刪除按鈕的槽函數(shù)中編寫代碼,點擊所選中的行,把行數(shù)定位id,然后刪除相應(yīng)的信息。對于推出按鈕
44、直接在幫助按鈕的槽函數(shù)中用信號和槽的機(jī)制把推出的信號(clicked()和槽函數(shù)連接起來,實現(xiàn)點擊退出就關(guān)閉此界面。而添加按鈕功能,設(shè)計時又增加了一部分制作,在下一模塊介紹。4 系統(tǒng)實現(xiàn)從功能上來講,本軟件的功能就是實現(xiàn)各種計算,包括普通計算和科學(xué)計算,普通計算包括加減乘除計算和算式計算,科學(xué)計算包括普通計算和正弦、余弦、二進(jìn)制的或與非運算,并且可以使用小括號、中括號、大括號等功能。該軟件還有算式的提取、保存、刪除功能,對于該軟件可以顯示當(dāng)前時間,方便用戶,還有幫助功能,可以顯示各個案件的信息,還可以自己動手修改,對其進(jìn)行添加和刪除,可以實行下面的功能。4.1普通計算功能該功能實現(xiàn)各種進(jìn)制的四
45、則運算,并實現(xiàn)各進(jìn)制之間的轉(zhuǎn)換。如圖4.1所示。圖4.1普通窗口計算功能界面圖4.2科學(xué)計算功能本界面的主要功能是在普通計算上添加一些科學(xué)計算,如平方、開放、取倒數(shù)、正弦、余弦、大括號、中括號、小括號等功能。具體功能如圖4.2所示。圖4.2科學(xué)計算窗口界面圖4.3時間功能實現(xiàn)時間的顯示,功能如圖4.3所示。圖4.3時間功能界面圖4.4算式提取功能本模塊是本系統(tǒng)的算式提取、刪除、保存功能。具體功能如圖4.4所示。圖4.4算式的提取功能圖4.5幫助功能本模塊是本系統(tǒng)的幫助功能,負(fù)責(zé)介紹各個按鍵的功能,可以添加按鍵功能,也可以刪除按鍵功能,還可以查詢所有的按鍵功能,并可通過條件查詢查詢單個按鍵功能。
46、如圖4.5所示。圖4.5 幫助功能圖4.6幫助添加功能本模塊是急需幫助功能的添加功能,把要添加的信息的按鈕名和按鈕信息加入helpmessage表里。如圖4.6所示。圖4.6 幫助添加功能圖5 系統(tǒng)調(diào)試在系統(tǒng)調(diào)試過程中,遇到了許多問題,具體如下:(1) 中斷問題在運行時,沒有錯誤,編譯時也沒有錯誤,但是在使用時,運行一般就不能運行,對中斷請求的整個處理過程是由硬件和軟件結(jié)合起來而形成的一套中斷機(jī)構(gòu)實施的。發(fā)生中斷時,CPU暫停執(zhí)行當(dāng)前的程序,而轉(zhuǎn)去處理中斷。這個由硬件對中斷請求作出反應(yīng)的過程,稱為中斷響應(yīng)。后來經(jīng)過單步跟蹤,發(fā)現(xiàn)為進(jìn)制狀態(tài)沒有賦值,所以在操作時必須先點擊幾進(jìn)制。(2) 警告問題
47、在編寫警告時,在代碼中寫漢字,但在編譯時出現(xiàn)的警告為亂碼,后來發(fā)現(xiàn)頭文件的加#include ,并寫相應(yīng)的函數(shù),并且在漢字前加QObject:tr。就可以解決問題,實現(xiàn)警告效果。(3) Sin和cos運行錯誤在編寫正弦和余弦的槽函數(shù)時,我把窗口數(shù)據(jù)直接轉(zhuǎn)換為整形,然后直接sin或cos輸入的數(shù)據(jù),但運算出的結(jié)果不是總是正確的,后來查找資料發(fā)現(xiàn)不是這樣寫的,應(yīng)該為n=cos(n/180*PI);其中n為窗口提取的數(shù)據(jù)。(4) 數(shù)據(jù)庫操作錯誤數(shù)據(jù)庫使用的是QSqlite數(shù)據(jù)庫,這個數(shù)據(jù)庫是Qt自帶的數(shù)據(jù)庫,對于此數(shù)據(jù)庫使用不夠熟練,所以容易出一些錯誤,其中我在算式的提取、保存、刪除中建了一個mes
48、sage表,在幫助功能時還要建立一個表,每個表都聲明了一個QSqlQuery變量,用來對數(shù)據(jù)庫進(jìn)行建表和插入內(nèi)容,完事后運行沒有錯誤,但在點擊幫助功能后tableView控件什么也不顯示,通過單步跟蹤,發(fā)現(xiàn)model部分沒有錯誤,編寫的相應(yīng)代碼部分也沒有錯誤,但是什么也顯示不出來,后來經(jīng)過查找資料和自己多次嘗試,發(fā)現(xiàn)自己想多了,只需要聲明一個QSqlQuery變量,接著已建好的表下面寫代碼,就可以建多個表。(5) 信號和槽的問題在幫助添加功能的槽函數(shù)中未寫代碼,寫確定和退出的信號和槽的連接,這語法為connect(按鈕,信號,界面,接收信號槽);在這里因為確定按鈕和退出按鈕在同一個界面,所以認(rèn)為,他們應(yīng)該槽的界面一致,所以最開始用此界面聲明的pDialog,可是確定按鈕不好使添加不了,后來就把這些都
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租賃服務(wù)中的人力資源管理考核試卷
- 2024年貴州金沙醬酒酒業(yè)投資集團(tuán)有限公司招聘考試真題
- 自行車的城市與建筑風(fēng)光考核試卷
- 海水養(yǎng)殖中的養(yǎng)殖經(jīng)驗交流與技術(shù)合作考核試卷
- 電子零售的物流與配送考核試卷
- 村集房屋租賃合同(18篇)
- 紡織原料企業(yè)資源整合與優(yōu)化考核試卷
- 2025銀行競聘演講稿范文(15篇)
- 云南省楚雄彝族自治州2024-2025學(xué)年高二下學(xué)期3月月考地理試題 答案
- 電子封裝的防爆性能設(shè)計考核試卷
- 2025年山東惠民縣農(nóng)業(yè)投資發(fā)展限公司招聘10人歷年高頻重點提升(共500題)附帶答案詳解
- 大學(xué)美育知到智慧樹章節(jié)測試課后答案2024年秋長春工業(yè)大學(xué)
- 《基于嵌入式Linux的農(nóng)業(yè)信息采集系統(tǒng)設(shè)計與研究》
- 外科創(chuàng)傷處理-清創(chuàng)術(shù)(外科課件)
- 小型手推式除雪機(jī)畢業(yè)設(shè)計說明書(有全套CAD圖)
- 《城市級實景三維數(shù)據(jù)規(guī)范》
- 2024年中國酸奶袋市場調(diào)查研究報告
- 合同到期不續(xù)簽的模板
- 搬遷服務(wù)項目 投標(biāo)方案(技術(shù)標(biāo))
- 2005室外給水管道附屬構(gòu)筑物閥門井05S502
- 浙江省寧波市鎮(zhèn)海中學(xué)2025屆高三數(shù)學(xué)下學(xué)期適應(yīng)性考試試題含解析
評論
0/150
提交評論