課程設(shè)計---簡單的計算器_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論