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