




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、仰恩大學c+課程設計課程設計題目設計簡易計算器班 級 090901專 業(yè) 計算機科學與技術學 號 110920090120學生姓名 指導教師 完成日期 2011 年 01 月 13 日摘 要課程設計語言類課程的指導思想:使學生通過學習高級編程語言的知識、編程技術和基本算法,掌握課程設計的思想和方法,具備利用計算機求解實際問題的能力,能靈活運用高級語言進行程序設計。其實認真學習一門語言并不難,關鍵是所追求的學習方法和途徑。通過c語言程序設計,可以使我們掌握軟件開發(fā)過程的難題分析、系統(tǒng)設計、程序編碼、測試程序等基本方法和技能。同時,還能加強我們的時間管理意識,鍛煉對難題的發(fā)現(xiàn)、分析和處理能力。我認
2、為遇到難題并不可怕,可怕的是你不去解決,這可能是c語言課程設計的主要目的之一。現(xiàn)時學習生活中,常會遇到一些數(shù)目較大數(shù)據(jù)繁雜的數(shù)值運算,徒手運算起來很困難,這時候我們就必須用到計算器。人們對計算的要求不斷提高,普通的功能簡單的僅能進行四則運算的計算工具已經(jīng)不能滿足需要,需要一種能進行多種計算?,F(xiàn)在已經(jīng)有一些功能較為強大、涵蓋面較廣的計算軟件,而且各種平臺的小工具仍不斷出現(xiàn)。這些大大方便了我們的生活給我們更多的選擇和實現(xiàn)方式。本程序的編寫基礎是mfc漢化版,它在mfc的原有基礎上實現(xiàn)了多漢字的支持方便了我們的使用。生成的程序可移植性強兼容性好穩(wěn)定!本程序實現(xiàn)了加、減、乘、除、求冪、求模,求平方根,
3、求sin,求cos,求log10,求階乘,取整,求正切,以及進制之間的相互轉換。它可以直接輸入數(shù)學表達式,不需要任何轉換,就可以直接輸出數(shù)學四則運算的結果。但是,每次只能運算一個表達式,按 ce清空后再計算下一組式子。本程序在進制轉換方面有一些漏洞,但一般的進制轉換結果還是準確的。第1章 選題的意義1.1自我介紹我的名字是涂國祥,就讀于仰恩大學,計算機090901班,計算機與信息學院。1.2選題1. 我選的題目是:簡單計算器的設計2. 我選這道題的原因如下: 計算器對我們每一的學生都很熟悉,從初中到高中再到大學。但是我們只知道按下幾個按鈕計算器便會顯示出結果,很少有學生分析過計算器究竟是如何運
4、行的。c語言課程設計便是一個很好的機會,讓我去親自寫計算器的運行代碼,盡管是簡單計算器的設計,但其背后的知識那是相當多的,對我是個挑戰(zhàn),我接受!3. 運用的數(shù)據(jù)結構和知識點mfc 繪圖知識 數(shù)學函數(shù) 選擇結構 循環(huán)結構 數(shù)組 指針 順序結構 進制間的轉換 時間學生任務地點教師任務備注12月17日課程設計任務的認識,初步選題;對所選題目用到的知識點上機實驗。澤釧樓講述課程設計要求,使用的知識點;登記考勤。學生查找資料、確定選題。12月24日1.初步完成課程設計報告中“選題意義”部分的內(nèi)容,并上傳服務器;2.根據(jù)課程設計任務書要求,進行系統(tǒng)功能需求分析和設計;3.設計初始代碼框架。澤釧樓整理學生選
5、題;課程設計指導;登記考勤。12月29日系統(tǒng)功能需求分析,系統(tǒng)設計;初步完成課程設計報告“系統(tǒng)功能需求分析”,“系統(tǒng)設計”部分的內(nèi)容,并上傳服務器。澤釧樓批閱選題報告;課程設計指導;登記考勤。12月31日完善課程設計報告“系統(tǒng)功能需求分析”,“系統(tǒng)設計”部分的內(nèi)容,并上傳服務器;設計初始代碼,部分功能實現(xiàn)。澤釧樓評閱系統(tǒng)功能需求分析、系統(tǒng)設計;課程設計指導;登記考勤。第2章 系統(tǒng)功能需求分析2.1系統(tǒng)的基本要求1. 算術運算功能。能夠實現(xiàn)+、-、*、/、mod、int運算。2. 函數(shù)運算功能。能夠實現(xiàn)exp、ln、sin、xy、log、cos、x3、n!、tan、x2、1/x等運算。3. 進制
6、之間的轉換功能。能夠實現(xiàn)十六、十、二、八進制數(shù)據(jù)之間的轉換。4.通過鍵盤控制字符和數(shù)字的輸入。2.2數(shù)據(jù)結構設計及用法說明此程序調(diào)用的函數(shù)主要有 /*數(shù)學函數(shù)的定義*/ /*屏幕操作函數(shù)*/ /*i/o函數(shù)*/ /*庫函數(shù)*/ / /*字符操作函數(shù)*/?;臼褂?用控制鼠標圖形移動,當*變量長度參數(shù)表*/ /*圖形函數(shù)*/ /*字符串函數(shù)*移動到相應得按鈕時按回車鍵輸入當前數(shù)字或執(zhí)行對應的函數(shù)。加法:輸入一個被加數(shù)數(shù),按“+”,輸入被加數(shù),按“=”,輸出結果。乘法: 輸入一個數(shù),按“*”,輸入另個數(shù),按“=”,輸出結果。除法: 輸入一個被除數(shù),按“+”,輸入另個除數(shù),按“=”,輸出結果。求余:
7、輸入一個數(shù),按“mod”,按“=”,輸出結果。取整:輸入一個數(shù),按“int”,按“=”,輸出結果。八進制轉十進制:輸入一個八進制數(shù),按“10-8”,按“=”,輸出十進制結果。十六進制轉十進制:輸入一個十六進制數(shù),按下“jz”+“16- 10” 按“=”,輸出十進制結果2.3 功能模塊鍵盤控制模塊:通過int specialkey(void)和鍵盤來實現(xiàn)輸入數(shù)據(jù),操作方式的控制。計算模塊:通過調(diào)用math.h中的數(shù)學函數(shù),如:+、-、*、/、sin、cos、mod等來實現(xiàn)對result的賦值。輸出模塊:在指定位置輸出計算模塊中result的值,在指定位置輸出鍵盤控制模塊中對參量所賦的值以及在指定
8、位置輸出鍵盤控制模塊中得到的運算符。第3章 系統(tǒng)設計3.1流程圖流程圖開始輸入第一個數(shù)x輸入第二個數(shù)y+、-、*、/、xy、log、等顯示結果結束mod、x3、ln、exp、tan、cos、x2、1/x、n!、sin、以及進制轉換按“esc”退出按“ce”清零3.2數(shù)據(jù)結構用到了if判斷語句,for循環(huán)語句,while語句,且主要通過while語句實現(xiàn)對鍵盤、光標的操作和數(shù)據(jù)、運算符的輸入,還用到了switch語句,switch語句的主要作用是實現(xiàn)對所輸入的數(shù)據(jù)的運算操作,然后將運算結果賦值給result,最后輸出。第4章 系統(tǒng)實現(xiàn)本系統(tǒng)采用 c語言開發(fā),生成可執(zhí)行文件在任何系統(tǒng)下都可以執(zhí)行,
9、具有很好的數(shù)據(jù)處理能力和穩(wěn)定性。并且使用mfc漢化版。生成的程序可移植性強、兼容性好。它可以直接輸入數(shù)學表達式,不需要任何轉換,就可以直接輸出數(shù)學四則運算的結果。運行畫面本程序通過調(diào)用int specialkey(void) 和#include 來實現(xiàn)對屏幕的操作,通過調(diào)用int arrow()函數(shù),int specialkey(void) 和#include 來實現(xiàn)對光標的操作。計算器圖形采用turbo c 2.0繪圖程序制作,大致運行畫面如下。光標起始位置在“a”上,通過鍵盤來控制光標的運動,如進行雙目運算1+2時,移動光標,將其指在“1”上,按“enter”,在屏幕上會輸出“1”,再移動
10、光標,將其指在“2”上,按“enter”,在屏幕上會在指定位置輸出“2”,再移動光標,將其指在“=”上,按“enter”,結果便會在指定位置輸出。按下“ce”可以清零,重新進行下一組運算。按“esc”可以退出系統(tǒng)。第5章 總結經(jīng)過了三個星期的課程設計,在設計中我們遇到了很多編程問題,最后我努力攻克一個個難關,我做得是計算器的設計。測試階段中發(fā)現(xiàn)了幾處錯誤導致程序不能編譯,去上網(wǎng)查找相關的資料, 又同學一起討論。通過耐心的分析源代碼終于編好了一個完整無誤的程序。在這次的c語言程序設計實習中遇到了現(xiàn)實編程中必然見到的問題通過這些問題的解決積累了編程的實踐經(jīng)驗。在實際的編程操作中發(fā)現(xiàn)自己c語言知識的
11、不足,加深了對c語言的理解。在學習之余體驗到收獲的感覺.善于總結,也是學習能力的一種體現(xiàn),每次完成一個編程任務,完成一段代碼,都應當有目的的跟蹤該程序的應用狀況,隨時總結,找到自己的不足,這樣所編寫的程序才能逐步提高.課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新月異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握計算機開發(fā)技術是十分重要的。自從拿到題目到完成整個編程,從理論到實踐,在整整半個學期的日子里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過
12、的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我們懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相我們把前面所學過的知識又重新溫故了一遍。通過這次課程設計,我拓寬了知識面,鍛煉了能力,綜合素質得到較大提高。安排課程設計的基本目的,在于通過理論與實際的結合、人與人的溝通,進一步提高思想覺悟。尤其是觀察、分析和解決問題的實際工作能力,以便培養(yǎng)成為能夠主動適應社會主義現(xiàn)代化建設需要的高素質的復合型人才。作為整個學習體系的有機組成部分,課程設計雖然安排在一周進行,但并不具有絕對獨立的意義。它的一個重要功能,在于運用學習成果,檢驗學習成果。運
13、用學習成果,把課堂上學到的系統(tǒng)化的理論知識,嘗試性地應用于實際設計工作,并從理論的高度對設計工作的現(xiàn)代化提出一些有針對性的建議和設想。檢驗學習成果,看一看課堂學習與實際工作到底有多大距離,并通過綜合分析,找出學習中存在的不足,以便為完善學習計劃,改變學習內(nèi)容與方法提供實踐依據(jù)。而這種實際能力的培養(yǎng)單靠課堂教學是遠遠不夠的,必須從課堂走向實踐。通過課程設計,讓我們找出自身狀況與實際需要的差距,并在以后的學習期間及時補充相關知識,為求職與正式工作做好充分的知識、能力準備,從而縮短從校園走向社會的心理轉型期。課程設計促進了我系人才培養(yǎng)計劃的完善和課程設置的調(diào)整。近年來,我系為適應學生的實踐需要陸續(xù)增
14、設與調(diào)整了一系列課程,受到同學的歡迎,其中這次的設計很受同學們的喜歡。課程設計達到了專業(yè)學習的預期目的。在一個星期的課程設計之后,我感到不僅實際動手能力有所提高,更重要的是通過對c語言的了解,進一步激發(fā)了我對c語言的興趣。5.1致謝詞致謝詞感謝張老師三周來的辛勤指導,每當我們遇到難題時您都能隨時幫我們很好的解決,并且告訴我們?yōu)槭裁催@樣改,指導得很詳細,很認真。您使我們知道了c語言程序設計 的趣味性。5.2主要參考文獻:c+語言程序設計與實踐張思民5.3中心算法;設計一個類ccaldlg,類里包含主要數(shù)據(jù)成員number1和number2,主要成員函數(shù)cal,在該函數(shù)內(nèi)利用case語句實現(xiàn)各種基
15、本計算。利用mfc實現(xiàn)人機交互。增加了清零求導,開根號等功能。5.4程序代碼;/ jsqdlg.cpp : 實現(xiàn)文件#include stdafx.h#include jsq.h#include jsqdlg.h#include cmath#ifdef _debug#define new debug_new#endifdouble a1; /保存計算中的第一個數(shù)double a2; /保存計算中的第二個數(shù)double a3;int m_sign; /用來表示運算符號,為“+”,為“-”,為“*”,為“/”int add=0; /用來判斷是否已經(jīng)存在別的數(shù),若沒有,則令add=0;若有,則令ad
16、d=1int point=0; /表示小數(shù)點,初始化無小數(shù)點為int num=0; /表示小數(shù)點后的位數(shù)double i=0;int m=0;/ 用于應用程序“關于”菜單項的caboutdlg 對話框class caboutdlg : public cdialogpublic:caboutdlg();/ 對話框數(shù)據(jù)enum idd = idd_aboutbox ;protected:virtual void dodataexchange(cdataexchange* pdx); / ddx/ddv 支持/ 實現(xiàn)protected:declare_message_map();caboutdlg:
17、caboutdlg() : cdialog(caboutdlg:idd)void caboutdlg:dodataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);begin_message_map(caboutdlg, cdialog)end_message_map()/ cjsqdlg 對話框cjsqdlg:cjsqdlg(cwnd* pparent /*=null*/): cdialog(cjsqdlg:idd, pparent), m_edit(0)m_hicon = afxgetapp()-loadicon(idr_mai
18、nframe);void cjsqdlg:dodataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);ddx_text(pdx, idc_edit1, m_edit);begin_message_map(cjsqdlg, cdialog)on_wm_syscommand()on_wm_paint()on_wm_querydragicon()/afx_msg_mapon_bn_clicked(idc_button10, &cjsqdlg:onbnclickedbutton10)on_bn_clicked(idc_button1, &
19、cjsqdlg:onbnclickedbutton1)on_bn_clicked(idc_button2, &cjsqdlg:onbnclickedbutton2)on_bn_clicked(idc_button3, &cjsqdlg:onbnclickedbutton3)on_bn_clicked(idc_button4, &cjsqdlg:onbnclickedbutton4)on_bn_clicked(idc_button5, &cjsqdlg:onbnclickedbutton5)on_bn_clicked(idc_button6, &cjsqdlg:onbnclickedbutton
20、6)on_bn_clicked(idc_button7, &cjsqdlg:onbnclickedbutton7)on_bn_clicked(idc_button8, &cjsqdlg:onbnclickedbutton8)on_bn_clicked(idc_button9, &cjsqdlg:onbnclickedbutton9)on_bn_clicked(idc_button11, &cjsqdlg:onbnclickedbutton11)on_bn_clicked(idc_button12, &cjsqdlg:onbnclickedbutton12)on_bn_clicked(idc_b
21、utton13, &cjsqdlg:onbnclickedbutton13)on_bn_clicked(idc_button14, &cjsqdlg:onbnclickedbutton14)on_bn_clicked(idc_button15, &cjsqdlg:onbnclickedbutton15)on_bn_clicked(idc_button16, &cjsqdlg:onbnclickedbutton16)on_bn_clicked(idc_button18, &cjsqdlg:onbnclickedbutton18)on_bn_clicked(idc_button17, &cjsqd
22、lg:onbnclickedbutton17)on_bn_clicked(idc_button19, &cjsqdlg:onbnclickedbutton19)on_bn_clicked(idc_button20, &cjsqdlg:onbnclickedbutton20)on_bn_clicked(idc_button22, &cjsqdlg:onbnclickedbutton22)on_bn_clicked(idc_button21, &cjsqdlg:onbnclickedbutton21)on_bn_clicked(idc_button26, &cjsqdlg:onbnclickedb
23、utton26)on_bn_clicked(idc_button23, &cjsqdlg:onbnclickedbutton23)end_message_map()/ cjsqdlg 消息處理程序bool cjsqdlg:oninitdialog()cdialog:oninitdialog();/ 將“關于.”菜單項添加到系統(tǒng)菜單中。/ idm_aboutbox 必須在系統(tǒng)命令范圍內(nèi)。assert(idm_aboutbox & 0xfff0) = idm_aboutbox);assert(idm_aboutbox appendmenu(mf_separator);psysmenu-append
24、menu(mf_string, idm_aboutbox, straboutmenu);/ 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動/ 執(zhí)行此操作seticon(m_hicon, true);/ 設置大圖標seticon(m_hicon, false);/ 設置小圖標/ todo: 在此添加額外的初始化代碼return true; / 除非將焦點設置到控件,否則返回truevoid cjsqdlg:onsyscommand(uint nid, lparam lparam)if (nid & 0xfff0) = idm_aboutbox)caboutdlg dlgabout;
25、dlgabout.domodal();elsecdialog:onsyscommand(nid, lparam);/ 如果向對話框添加最小化按鈕,則需要下面的代碼/ 來繪制該圖標。對于使用文檔/視圖模型的mfc 應用程序,/ 這將由框架自動完成。void cjsqdlg:onpaint()/當用戶拖動最小化窗口時系統(tǒng)調(diào)用此函數(shù)取得光標顯示。/hcursor cjsqdlg:onquerydragicon()return static_cast(m_hicon);void cjsqdlg:onbnclickedbutton10()/按鈕0/ todo: 在此添加控件通知處理程序代碼if(poin
26、t=0)if(add=0)m_edit=0;elsem_edit=m_edit*10;elsenum+;add=1;updatedata(false);updatedata(false);void cjsqdlg:onbnclickedbutton1()/按鈕1/ todo: 在此添加控件通知處理程序代碼if(point=0)if(add=0)m_edit=1;elseif(m_edit=0) /判斷所輸入的是幾位數(shù);m_edit=m_edit*10+1;elsem_edit=m_edit*10-1;elsenum+;if(m_edit=0) /判斷所輸入的是否是小數(shù);即整數(shù)+小數(shù);m_edi
27、t=m_edit+(double)1/pow(double)10,num);elsem_edit=m_edit-(double)1/pow(double)10,num);add=1;updatedata(false);按鈕2,3,4,5,6,7,8,9與此相同;void cjsqdlg:onbnclickedbutton11()/按鈕2x號 / 所輸入的數(shù)的兩倍;/ todo: 在此添加控件通知處理程序代碼updatedata(true);i=m_edit;a1=i+a1;m_edit=a1;/updatedata(false); / 即加上了與輸入的數(shù)相同;m_sign=0; point=0
28、; add=0; num=0;onbnclickedbutton15();void cjsqdlg:onbnclickedbutton12()/按鈕-號/ todo: 在此添加控件通知處理程序代碼updatedata(true);if(m=0)a1=m_edit;m_edit=a1;m=1;elsei=m_edit;a1=a1-i;m_edit=a1;m=1;updatedata(false);m_sign=1;point=0;add=0;num=0;void cjsqdlg:onbnclickedbutton13()/按鈕*號/ todo: 在此添加控件通知處理程序代碼updatedata(
29、true);if(m=0)a1=m_edit;m_edit=a1;m=1;elsei=m_edit;a1=a1*i;m_edit=a1;m=1;updatedata(false);m_sign=2;point=0;add=0;num=0;void cjsqdlg:onbnclickedbutton14()/按鈕/號/ todo: 在此添加控件通知處理程序代碼if(m=0)updatedata(true);a1=m_edit;m_edit=a1;updatedata(false);m=1;elsei=m_edit;if(i=0)messagebox(_t(除數(shù)不能為!);onbnclickedbutton16();elsea1=a1/i;m_edit=a1;updatedata(false);m=1;m_sign=3;point=0;add=0;num=0;void cjsqdlg:onbnclickedbutton15()/按鈕=號/ todo: 在此添加控件通知處理程序代碼updatedata(true);a2=m_edit;switch(m_sign)case 0:a3=a1+a2;m_edit=a3;updatedata(false);break;case 1:a3=a1-a2;m_edit=a3;updatedata(false);bre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/IEC 14888-4:2024 EN Information security - Digital signatures with appendix - Part 4: Stateful hash-based mechanisms
- 2025年充電樁充電設備生產(chǎn)許可證申請與審批合同
- 2025年度新能源汽車充電樁建設與運營服務合同-@-3
- 2024 年度中國汽車行業(yè)爭議解決報告
- 2025年度小時工維修養(yǎng)護服務合同范本
- 2025年度知識產(chǎn)權保險產(chǎn)品代理與服務合同
- 2025年心電遙測監(jiān)護儀項目合作計劃書
- 英語-黑龍江省大慶市實驗中學2024-2025學年高一上學期階段考試
- 2025年瀝青試驗儀器項目合作計劃書
- 2025年度走讀生戶外活動安全責任承諾協(xié)議范本
- 顱內(nèi)動脈瘤介入治療課件
- 馬蹄焰玻璃窯爐設計技術培訓-課件
- 2023年主治醫(yī)師(中級)-眼科學(中級)代碼:334考試歷年真題集錦附答案
- 種植林業(yè)可行性研究報告
- 測試文檔-可能-歌詞1
- 金和物業(yè)公司簡介
- 電力安全工作規(guī)程-(電網(wǎng)建設部分)
- 廣東省五年一貫制考試英語真題
- 項目部崗位廉潔風險情景教育案例
- 小學英語-What a dream教學設計學情分析教材分析課后反思
- 數(shù)據(jù)分析系統(tǒng)Hive培訓課件
評論
0/150
提交評論