版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 題 目: 簡單的計算器 </p><p> 院 (系): 數(shù)學(xué)與計算機學(xué)院 </p><p> 年級專業(yè): 軟件工程 </p><p> 姓 名: </p><p> 學(xué) 號:
2、 </p><p> 指導(dǎo)教師: </p><p> 2014年6月27日</p><p><b> 課程設(shè)計任務(wù)書</b></p><p> 注:任務(wù)書由指導(dǎo)教師填寫。</p><p><b> 摘要</b><
3、;/p><p> 本課程設(shè)計將實現(xiàn)一個簡單計算器。其類似于Windows附件中自帶的計算器。這個計算器不僅實現(xiàn)了簡單的四則運算功能,還實現(xiàn)了高級的科學(xué)計算功能,而且具有簡潔大方的圖文外觀。它的設(shè)計按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面、必要的交互信息使用人員能快捷簡單地進(jìn)行操作。即時準(zhǔn)確地獲得需要的計算的結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助。在課程設(shè)計中,系統(tǒng)開發(fā)平臺為Window
4、s 7,程序設(shè)計設(shè)計語言采用Visual C++,在程序設(shè)計中,采用了結(jié)構(gòu)化與面向?qū)ο髢煞N解決問題的方法。</p><p> 關(guān)鍵詞: 程序設(shè)計,計算器,MFC,按鈕控件。</p><p><b> 1需求分析</b></p><p><b> 1.1 需求概述</b></p><p> 本
5、軟件主要用于計算機windows 2000/XP以上版本的用戶的使用,這次課程設(shè)計一般是實現(xiàn)簡單計算器的功能。要程序能實現(xiàn):加,減,乘,除,開方,乘方,sin,cos等運算功能;還要實現(xiàn)數(shù)據(jù)的輸入,輸出,計算,顯示及程序退出等功能。另外還可以實現(xiàn)多種科學(xué)計算的功能,如:三角函數(shù)的計算,弧度與角度間的轉(zhuǎn)換,對數(shù)指數(shù)的計算等等。</p><p><b> 1.2 需求環(huán)境</b></p&
6、gt;<p> 本課程設(shè)計需要的設(shè)備為硬件要求和軟件配置要求具體要求如下:</p><p> ?、儆布螅阂慌_計算機。</p><p> ?、谲浖渲茫篧INDOWS、C/VC++6.0。</p><p><b> 2 設(shè)計分析</b></p><p><b> 2.1從要求分析:<
7、;/b></p><p> ?。?)界面類似于windows系統(tǒng)中提供的計算器界面;</p><p> ?。?)能實現(xiàn)加、減、乘、除、乘方、開方等功能。</p><p> 界面類似于windows系統(tǒng)中提供的計算器界面,則數(shù)字的輸入和功能的執(zhí)行都通過按鍵來實現(xiàn),并且能夠在顯示區(qū)域里及時的顯示出數(shù)據(jù),所用本程序使用VC++提供的高度可視化的應(yīng)用程序開發(fā)工具M(jìn)F
8、C來實現(xiàn)。</p><p> 要實現(xiàn)加、減、乘、除、乘方、開方等功能,則在程序中包含"math.h"庫函數(shù)文件,通過引用相應(yīng)的函數(shù)來實現(xiàn)乘方、開方等功能。在輸入第一個計算參數(shù)以后,點擊需要執(zhí)行的計算方式,然后輸入第二個計算參數(shù),點擊“=”按鈕,則會在顯示區(qū)顯示出正確的結(jié)果。</p><p> 本程序從設(shè)計上來講,主要分為兩個重點部分,一個是數(shù)字的輸入,即逐個點擊單個
9、數(shù)字(包括小數(shù)點)之后,這些數(shù)據(jù)能夠在顯示區(qū)正確的顯示。第二個是數(shù)據(jù)的計算,先輸入第一個計算參數(shù),然后選擇計算方式,再輸入第二個計算參數(shù),最后點擊“=”按鈕,計算結(jié)果。</p><p><b> 2.2 程序流程圖</b></p><p> 圖2.2 程序流程圖</p><p> 3各模塊的功能及程序說明</p><
10、p> 按照程序的設(shè)計,可以分為數(shù)據(jù)顯示模塊、數(shù)據(jù)輸入模塊、計算方式選擇模塊、結(jié)果計算模塊,以下逐個說明各模塊的功能及程序說明。</p><p> 1、數(shù)據(jù)顯示模塊。數(shù)據(jù)顯示模塊顯示用戶輸入的數(shù)字和計算器計算的結(jié)果,主要由一個編輯框組成。數(shù)字顯示框是一個編輯框控件,屬性設(shè)置為只讀模式,不能由用戶編輯。在MFC的類向?qū)е校o數(shù)字顯示框添加一個變量m_num,用來記錄數(shù)字的變化,當(dāng)每次操作以后,都會把數(shù)字更新
11、到界面上,顯示給用戶。</p><p> 2、數(shù)據(jù)輸入模塊。數(shù)據(jù)輸入模塊用來輸入1、2、3、4、5、6、7、8、9、0等十個數(shù)字和一個“.”小數(shù)。有一個變量m_dian來標(biāo)識小數(shù)點是否已經(jīng)輸入,如果變量等于1,則在同一個數(shù)據(jù)的輸入小數(shù)位,小數(shù)點標(biāo)識只在第一次點擊時有效。每一個按鍵的操作都由一個函數(shù)單獨完成,避免相互影響。每一次數(shù)據(jù)輸入,都會更新數(shù)據(jù)框的顯示,達(dá)到實時性。</p><p>
12、 3、計算方式選擇模塊。計算方式選擇用來選擇加、減、乘、除、乘方、開方,sin,cos等8個操作,每個計算方式都有一個單獨的按鈕,每個按鈕都有一個單獨的函數(shù)來執(zhí)行。用一個int類型的變量m_fuhao來標(biāo)識計算方式的選擇。執(zhí)行計算方式選擇以后,把原先數(shù)據(jù)框中顯示的數(shù)據(jù)賦值給第一個計算參數(shù)m_canshu1,并且對于系統(tǒng)標(biāo)識變量進(jìn)行相應(yīng)的處理。因為對于六個函數(shù)來說,這些系統(tǒng)標(biāo)識變量的相應(yīng)處理都是相同的,所以把這些系統(tǒng)標(biāo)識變量整理為一個函
13、數(shù)void TagFuc()初始化m_dian等部分?jǐn)?shù)據(jù),以利于代碼的重復(fù)利用。</p><p> 4、結(jié)果計算模塊。結(jié)果計算模塊是點擊了“=”按鍵以后,執(zhí)行相應(yīng)的計算,并且輸出結(jié)果。在其他的模塊已經(jīng)以此執(zhí)行輸入了第一個操作數(shù)據(jù)、計算方式、第二個操作數(shù)據(jù),然后在這里根據(jù)這些數(shù)據(jù)進(jìn)行計算。在這個模塊中,使用switch語句,分別根據(jù)計算方式的不同執(zhí)行相應(yīng)的操作。執(zhí)行完計算以后,將結(jié)果顯示在顯示框中,并且對系統(tǒng)標(biāo)識
14、變量進(jìn)行一些相應(yīng)的處理。</p><p> 5、數(shù)據(jù)初始化,開始按鍵下一程序來實現(xiàn)初始化。</p><p><b> 4源程序</b></p><p> 根據(jù)程序模塊的劃分,下面根據(jù)模塊依次來對其他模塊的源程序進(jìn)行說明。</p><p> 4.1初始化數(shù)據(jù)模塊:</p><p> voi
15、d CMyDlg::OnButton21() //開始初始化,清零按鍵</p><p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> m_canshu1=0;</p><p> m_can
16、shu2=0;</p><p><b> m_1=0;</b></p><p><b> m_dian=0;</b></p><p> m_dianshu=1;</p><p> m_fuhao=0;</p><p><b> m_num=0;</b
17、></p><p> UpdateData(false);</p><p><b> }</b></p><p> void CMyDlg::TagFuc()//局部初始化,當(dāng)我們按了加減等符號后,可以再次輸入</p><p> { 作為類成員,沒有按鈕,調(diào)用啟動<
18、/p><p><b> m_num=0;</b></p><p><b> m_dian=0;</b></p><p> m_dianshu=1;</p><p><b> m_1=0;</b></p><p> UpdateData(false)
19、;</p><p><b> }</b></p><p> 4.2數(shù)據(jù)輸入模塊:</p><p> void CMyDlg::OnButton1() //按鍵1</p><p><b> {</b></p><p> if(m_1==1)//顯示框中原來的數(shù)據(jù)是否繼
20、續(xù)使用。剛點擊過加減乘除乘方開方或者等于按鍵,則原來的數(shù)據(jù)不繼續(xù)使用</p><p><b> {</b></p><p><b> m_num=0;</b></p><p> m_1=0; //0代表沒有點過過加減乘除乘方開方或者等于按鍵,則原來的數(shù)據(jù)繼續(xù)使用</p><p><b
21、> }</b></p><p><b> {</b></p><p> if(m_dian==0)//是否已經(jīng)輸入小數(shù)點,0代表沒按過</p><p><b> {</b></p><p> m_num=10*m_num+1; //整數(shù),則把新數(shù)據(jù)加在原來數(shù)據(jù)之后<
22、;/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> double jishu=1;</p><p> for(int i=0;i<m_dianshu;i+
23、+)jishu=jishu/10;</p><p> m_num=m_num+jishu;</p><p> m_dianshu=m_dianshu+1;//小數(shù)點后的位數(shù)再加1</p><p><b> }</b></p><p><b> }</b></p><p&g
24、t; UpdateData(false);</p><p><b> }</b></p><p> 4.3計算方式選擇模塊:</p><p> void CMyDlg::OnButton13() //加法按鍵</p><p> {// TODO: Add your control notification h
25、andler code here</p><p> m_fuhao=1;</p><p> m_canshu1=m_num;</p><p><b> TagFuc();</b></p><p><b> m_1=0;</b></p><p><b> }
26、</b></p><p> void CMyDlg::OnButton17() //減法按鍵</p><p> {// TODO: Add your control notification handler code here</p><p> m_fuhao=2;</p><p> m_canshu1=m_num;&l
27、t;/p><p><b> TagFuc();</b></p><p><b> m_1=0;</b></p><p><b> }</b></p><p> void CMyDlg::OnButton14() //乘法按鍵</p><p> {
28、// TODO: Add your control notification handler code here</p><p> m_fuhao=3;</p><p> m_canshu1=m_num;</p><p><b> TagFuc();</b></p><p><b> m_1=0;<
29、;/b></p><p><b> }</b></p><p> void CMyDlg::OnButton18() //除法按鍵</p><p> {// TODO: Add your control notification handler code here</p><p> m_fuhao=4;&
30、lt;/p><p> m_canshu1=m_num;</p><p><b> TagFuc();</b></p><p><b> m_1=0;</b></p><p><b> }</b></p><p> void CMyDlg::OnBu
31、tton15() //sin按鍵</p><p> {// TODO: Add your control notification handler code here</p><p> m_fuhao=7;</p><p> m_canshu1=m_num;</p><p><b> TagFuc();</b>
32、</p><p><b> m_1=0;</b></p><p><b> }</b></p><p> void CMyDlg::OnButton19() //cos按鍵</p><p> {// TODO: Add your control notification handler c
33、ode here</p><p> m_fuhao=8;</p><p> m_canshu1=m_num;</p><p><b> TagFuc();</b></p><p><b> m_1=0;</b></p><p><b> }</b&g
34、t;</p><p> void CMyDlg::OnButton16() //乘方按鍵</p><p> {// TODO: Add your control notification handler code here</p><p> m_fuhao=5;</p><p> m_canshu1=m_num;</p>
35、<p><b> TagFuc();</b></p><p><b> m_1=0;</b></p><p><b> }</b></p><p> void CMyDlg::OnButton20() //開方按鍵</p><p> {// TODO:
36、 Add your control notification handler code here</p><p> m_fuhao=6;</p><p> m_canshu1=m_num;</p><p><b> TagFuc();</b></p><p><b> m_1=0;</b>&
37、lt;/p><p><b> }</b></p><p><b> 4.4結(jié)果計算模塊</b></p><p> void CMyDlg::OnButton12() //=按鍵</p><p><b> {</b></p><p> //
38、TODO: Add your control notification handler code here</p><p> if(m_1==0)//這個判斷是為了處理用戶點擊完"=",沒有點擊其他按鍵再點擊"=",這種情況下,不更新第二個計算參數(shù)。</p><p><b> {</b></p><p&g
39、t; m_canshu2=m_num;</p><p><b> }</b></p><p> //if(m_tag==true)m_canshu1=m_num;</p><p> // CString sTemp;</p><p> //sTemp.Format("m_canshu1= %f
40、 ;m_canshu2= %f \n", m_canshu1,m_canshu2);</p><p> //MessageBox(sTemp);</p><p> switch(m_fuhao)//選擇符號</p><p><b> {case 1:</b></p><p> m_num=m_can
41、shu1+m_canshu2; //加</p><p> UpdateData(false);</p><p><b> break;</b></p><p><b> case 2:</b></p><p> m_num=m_canshu1-m_canshu2; //減<
42、;/p><p> UpdateData(false);</p><p><b> break;</b></p><p><b> case 3:</b></p><p> m_num=m_canshu1*m_canshu2; //乘</p><p> Update
43、Data(false);</p><p><b> break;</b></p><p><b> case 4:</b></p><p> m_num=m_canshu1/m_canshu2; //除</p><p> UpdateData(false);</p>&l
44、t;p><b> break;</b></p><p><b> case 5:</b></p><p> m_num=pow(m_canshu1,m_canshu2); //乘方</p><p> UpdateData(false);</p><p><b> brea
45、k;</b></p><p><b> case 6:</b></p><p> m_num=sqrt(m_canshu1); //開方</p><p> UpdateData(false);</p><p><b> break;</b></p><
46、p><b> case 7:</b></p><p> m_num=sin(m_canshu1); //sin</p><p> UpdateData(false);</p><p><b> break;</b></p><p><b> case 8:</
47、b></p><p> m_num=cos(m_canshu1); //cos</p><p> UpdateData(false);</p><p><b> break;</b></p><p><b> default:</b></p><p>
48、<b> break;</b></p><p><b> }</b></p><p> m_canshu1=m_num;</p><p><b> m_1=1;</b></p><p><b> }</b></p><p>
49、;<b> 5操作方法</b></p><p> 1、輸入第一個計算參數(shù),比如:2642、246.78、-578、-2.6;</p><p> 2、點擊選擇計算方式,比如:加、減、乘、除、乘方、開方;</p><p> 3、輸入第二個計算參數(shù)(注:開方計算只需要一個計算參數(shù),不需要輸入第二個計算參數(shù)。);</p><
50、p> 4、點擊“=”按鍵,輸入計算結(jié)果;</p><p> 5、由于程序做過處理,可以實現(xiàn)連等操作,多次點擊“=”按鍵計算;</p><p><b> 6實驗結(jié)果</b></p><p> 1、按開始,輸入15627.0956,結(jié)果如下圖顯示:</p><p> 2、按開始,輸入300+500=,結(jié)果如下
51、圖顯示:</p><p> 3、按開始,輸入300*100=,結(jié)果如下圖顯示:</p><p> 4、按開始,輸入36開方=,結(jié)果如下圖顯示:</p><p> 經(jīng)過測試程序運行正常,實現(xiàn)了要求內(nèi)容。 </p><p><b> 7設(shè)計體會</b></p><p> 在這
52、段時間的課程設(shè)計中, 與其說是完成設(shè)計,我更覺得這是一個學(xué)習(xí)的過程。在設(shè)計過程中,我有很多的知識不懂或者已經(jīng)淡忘了,但是通過求教于老師和同學(xué),并勤于查閱資料,我又學(xué)到了很多的知識。也學(xué)到了學(xué)習(xí)方法,善于查找資料提高自己的資料查詢能力,要善于利用網(wǎng)絡(luò)來獲得知識,獲得幫助。開始著手程序設(shè)計時,有些功能感覺無從下手,都不知道要干什么。這些問題只要找到相關(guān)的資料就會得到提示從而理解所要解決問題的大致方向。有了明確的目的,就可以發(fā)揮自己的頭腦來完
53、成它了,本人真切地感受到此次課程設(shè)計帶給我的學(xué)習(xí)動力與興趣.我相信有了這些,將會對我以后的專業(yè)知識學(xué)習(xí)更加有利.</p><p> 經(jīng)過1個星期,在老師和同學(xué)的共同幫助下,終于順利完成該課程設(shè)計。正所謂“紙上談兵終覺淺,覺知此事要躬行?!彼栽诒緦W(xué)期課程設(shè)計是很及時、很必要的。這樣不僅能加深我們對c++程序設(shè)計的掌握,而且還及時、真正的做到了學(xué)以致用。</p><p> 此次課程設(shè)計的
54、順利完成,還歸功于老師殷切的指導(dǎo)和無私的幫助。在此,我向老師們表示衷心地感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 譚浩強.c++程序設(shè)計-2版 .北京大學(xué)出版社</p><p><b> [2] </b></p><p> [3] 譚浩強.c程序設(shè)計第四版
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 簡單計算器課程設(shè)計
- 簡單的計算器課程設(shè)計
- 課程設(shè)計---簡單的計算器
- 簡單的計算器課程設(shè)計
- 課程設(shè)計--簡單的計算器設(shè)計
- 課程設(shè)計--簡單計算器的設(shè)計
- 課程設(shè)計--簡單計算器的設(shè)計
- 簡單計算器課程設(shè)計報告
- vb課程設(shè)計--簡單計算器
- 簡單計算器課程設(shè)計報告
- c++課程設(shè)計--簡單計算器
- c++課程設(shè)計--簡單計算器
- vc++課程設(shè)計---簡單計算器的設(shè)計
- c++簡單計算器課程設(shè)計報告
- c++課程設(shè)計報告--簡單計算器
- c語言簡單計算器的編寫課程設(shè)計
- 匯編語言課程設(shè)計--簡單計算器設(shè)計
- 課程設(shè)計實驗報告--簡單的計算器設(shè)計
- 單片機課程設(shè)計——簡單計算器的設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--簡單計算器
評論
0/150
提交評論