C++畫圖軟件課程設(shè)計實驗報告_第1頁
C++畫圖軟件課程設(shè)計實驗報告_第2頁
C++畫圖軟件課程設(shè)計實驗報告_第3頁
C++畫圖軟件課程設(shè)計實驗報告_第4頁
C++畫圖軟件課程設(shè)計實驗報告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

C++畫圖軟件課程設(shè)計實驗報告第一篇:C++畫圖軟件課程設(shè)計實驗報告C++實驗報告面向?qū)ο蟪绦蛟O(shè)計實驗報告課程:學(xué)院:班級:姓名:學(xué)號:課題名稱:起止時間:教師:面向?qū)ο蟪绦蛟O(shè)計電子信息學(xué)院計算機科學(xué)與技術(shù)畫圖軟件2018.5.3~2018.6.1C++實驗報告1.程序功能介紹:通過多種成員函數(shù)的定義和函數(shù)的重載與不同類的靈活應(yīng)用,實現(xiàn)畫圖操作,如:具有鼠標(biāo)拖動畫圖功能,左鍵按下開始畫圖,移動鼠標(biāo)改變圖形,右鍵按下取消繪制圖形,且單獨右鍵按下繪制背景色圓以擦去圖形,左鍵抬起結(jié)束畫圖;具有設(shè)置不同線寬功能;具有設(shè)置不同顏色功能;至少實現(xiàn)矩形、圓、橢圓、直線這幾種圖形的功能;具有繪制實心和空心圖形的功能;要求采用抽象類作為所有圖形類的基等,所有功能已經(jīng)通過驗證。2.課程設(shè)計要求(1)具有鼠標(biāo)拖動畫圖功能,左鍵按下開始畫圖,移動鼠標(biāo)改變圖形,右鍵按下取消繪制圖形,左鍵抬起結(jié)束畫圖;(2)具有設(shè)置不同線寬功能;(3)具有設(shè)置不同顏色功能;(4)至少實現(xiàn)矩形、圓、橢圓、直線這幾種圖形的功能;(4)具有繪制實心和空心圖形的功能;(5)要求采用抽象類作為所有圖形類的基3.對課程題目的分析與注釋1.建矩形類,圓類,橢圓類,直線類;2.用不同的flag分別用作:表示形狀,判斷鼠標(biāo)位置,顏色。4.程序設(shè)計思路和說明5.課程設(shè)計中遇到的問題及解決方法(1)畫出圖形有重影;原因:flag識別鼠標(biāo)左鍵按下狀態(tài),在程序中持續(xù)默認(rèn)左鍵按下狀態(tài);修改前鼠標(biāo)程序:caseWM_LBUTTONDOWN://左鍵按下;e.x0=m.x;1C++實驗報告e.y0=m.y;e.flag=!e.flag;//開始畫圖或者停止畫圖break;解決方法:(2).向右畫圓總會進入左側(cè)項目區(qū)域原因:鼠標(biāo)進入圖標(biāo)框區(qū)域flag記為零,向右拖動不會識別為零解決方案:講畫圓函數(shù)設(shè)置半徑的if函數(shù),一旦識別到左側(cè)進入圖標(biāo)框即flag為0;1.課程設(shè)計結(jié)果(最終運行程序截圖)2.還存在的不足之處3.對課程設(shè)計的感想和心得體會在題目剛發(fā)下來時,我覺得題目很難,自己絕對不會做的,可是后來在書上找了對應(yīng)的內(nèi)容看了看,發(fā)現(xiàn)程序這座堡壘其實不是多么的不可攻破,只要愿意花時間,這些都不是問題。還有一點,一個好的編程習(xí)慣會對你的改錯和檢查有很大的幫助,比如在某些行后面加上注釋,這樣有利于自己一一對應(yīng)的找。做數(shù)學(xué)題目時是一環(huán)一環(huán)相扣的,其邏輯性就是一條線,而編c++時,其邏輯就像一個神經(jīng)細胞,而每一個細胞有好多主突觸(函數(shù))和細胞(主函數(shù))相連,每一個主突觸又可以連很多其他突觸,形成一個大枝節(jié),而每個大支節(jié)又可以連接很多突觸。所以每個程序就是通過主函數(shù)連接在一起的整體。程序就是有函數(shù)構(gòu)成的。第二篇:C++課程設(shè)計實驗報告(范文)C++課程設(shè)計報告設(shè)計題目:學(xué)院:專業(yè)班級:學(xué)生姓名:學(xué)生學(xué)號:指導(dǎo)教師:計算機技術(shù)與科學(xué)3班樊冠男40912140馬軍亮提交時間:2011/1/12成績:目錄C++課程設(shè)計報告第一章引言C++課程設(shè)計報告第二章概要設(shè)計C++課程設(shè)計報告第三章軟件實現(xiàn)C++課程設(shè)計報告第四章結(jié)果與討論第三篇:C++實驗報告姓名:XX學(xué)院:XXX班級:XXX學(xué)號:XXXi++;}while(i<=10);cout<#includeusingnamespacestd;voidmain(){inti(1),sum(0);for(i;i<=10,i++){sum+=i;}cout<usingnamespacestd;constfloatpi=3.1416;voidmain(){intitype;cout<usingnamespacestd;structriqi{intyear;intmon;intday;inthour;intminut;intsecond;};voidmain(){riqia;cout<>a.year;cout<實驗三、函數(shù)的應(yīng)用(2學(xué)時)1、實驗?zāi)康模赫莆蘸瘮?shù)的定義和調(diào)用方法。練習(xí)重載函數(shù)使用。練習(xí)函數(shù)模板的使用練習(xí)使用系統(tǒng)函數(shù)。在main()函數(shù)中提示輸入兩個整數(shù)x,y,使用cin語句得到x,y的值,調(diào)用pow(x,y)函數(shù)計算x的y次冪的結(jié)果,再顯示出來。程序名:lab3_4.cpp。編寫遞歸函數(shù)intfib(intn),在主程序中輸入n的值,調(diào)用fib函數(shù)計算Fibonacci級數(shù)。公式為fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1。使用if語句判斷函數(shù)的出口,在程序中用cout語句輸出提示信息。程序名:lab3_5.cpp。7)調(diào)試操作步驟如下:選擇菜單命令Build|StartDebug|StepIn,系統(tǒng)進入單步執(zhí)行狀態(tài),程序開始運行,并出現(xiàn)一個DOS窗口,此時光標(biāo)停在main()函數(shù)的入口處。把光標(biāo)移到語句answer=fib(n)前,從Debug菜單單擊RunToCursor,在程序運行的DOS窗口中按提示輸入數(shù)字10,這時回到可視界面中,光標(biāo)停在第11行,觀察一下n的值。從Debug菜單中單擊StepInto,程序進入fib函數(shù),觀察一下n的值,把光標(biāo)移到語句return(fib(n-2)+fib(n-1))前,從Debug菜單單擊RuntoCursor,再單擊StepInto,程序遞歸調(diào)用fib函數(shù),又進入fib函數(shù),觀察n的值。繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對函數(shù)調(diào)用和遞歸調(diào)用的理解。再試試Debug菜單欄中的別的菜單項,熟悉Debug的各種方法。4、實驗原理C++中函數(shù)的重載使得同樣的函數(shù)名下,只要參數(shù)類型、數(shù)目不同時,即可根據(jù)輸入的數(shù)據(jù)進行相應(yīng)的函數(shù)調(diào)用,使用起來簡單方便。5、思考與體會C++中,函數(shù)的運用與之前學(xué)過的C語言既有相同之處,也有著不同的地方。相同的地方在于格式、用法等框架上的不變。但是C語言中對于同樣的函數(shù)名是只能夠申明一種函數(shù)的,倘若有相同的函數(shù)名出現(xiàn)系統(tǒng)即會報錯,所以用起來有時是極為不便0//參數(shù)為兩個雙精度浮點形的函數(shù)intmax1(doublea,doubleb){a=a>b?a:b;returna;}//參數(shù)為三個雙精度浮點形的函數(shù)intmax1(doublea,doubleb,doublec){a=a>b?a:b;a=a>c?a:c;returna;}voidmain(void){inta;doubleb;a=max1(1,2);cout<Lab3_3:#includeusingnamespacestd;intmax1(inta,intb){a=a>b?a:b;returna;}intmax1(inta,intb,intc){a=a>b?a:b;a=a>c?a:c;returna;}intmain(){inti,j,k;cout<”<2131415public:Rankrank;intfrequency;floatvoltage;CPU(Rankr,intf,floatv){//構(gòu)造函數(shù)cout<rank=r;frequency=f;voltage=v;}voidrun(){cout<}voidstop(){cout<cout<cout<cout<};intmain(){CPUcpu(p5,500,2000);cpu.run();cpu.show();cpu.stop();return0;}Lab4_2#includeusingnamespacestd;enumRank{p1=1,p2,p3,p4,p5,p6,p7};//CPU類classCPU{public://析構(gòu)函數(shù)-17computer(Rankr,intf,floatv){CPUcpu(r,f,v);//定義CPU對象RAMram(1);//定義RAM對象CDROMcdrom(1);//定義CDROM對象cpu.run();cpu.show();cpu.stop();}};intmain(){computercom(p4,300,3000);return0;}實驗七、繼承與派生(一、二)4學(xué)時1、實驗?zāi)康模簩W(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類。熟悉不同繼承方式下對基類成員的訪問控制。學(xué)習(xí)利用虛基類解決二義性問題2、實驗任務(wù)a)定義一個基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(intn)中直接給age賦值,看看會有什么問題,把age改為公有成員變量,還會有問題嗎?編程試試看。b)定義一個基類BaseClass,有整型成員變量Number,構(gòu)造其派生類DerivedClass,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。c)定義一個車(vehicle)基類,具有MaxSpeed、Weight等成員變量,Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類。自行車類有高度(height)等屬性,汽車類有座位數(shù)(SeatNum)等屬性。從bicycle和motorcar派生出摩托車(motorcycle)類,在繼承過程中,注意把vehicle設(shè)置為虛基類。如果不把vehicle設(shè)置為虛基類,會有什么問題?編程試試看。3、實驗步驟編寫程序定義基類Animal,成員變量age定義為私有的。構(gòu)造派生類dog,在其成員函數(shù)SetAge(intn)中直接對age賦值時,會出現(xiàn)類似以下的錯誤提示:errorC2248:’age’:cannotaccessprivatememberdeclaredinclass‘Animal’errorC2248:’age’:cannotaccessprivatememberdeclaredinclass‘Animal’把age改為公有成員變量后重新編譯就可以了。程序名為:lab7_1.cpp0確方便我們編程。6、部分參考代碼Lab7_1#includeusingnamespacestd;classAnimal{public:intage;};classdog:publicAnimal{public:intSetAge(intn){age=n;returnage;}};voidmain(void){intage;dogd;age=d.SetAge(3);cout<Lab7_2#includeusingnamespacestd;classBaseClass{public:intNumber;BaseClass(){cout<cout<//Motorcycle繼承bicycle和motorcar類classmotorcycle:publicbicycle,publicmotorcar{public:motorcycle(intseat,doubleH,doubleMS,doubleW){SeatNum=seat;height=H;MaxSpeed=MS;Weight=W;}voidshow(){cout<cout<cout<cout<intmain(){motorcycleche(3,30.33,90.84,500);che.show();return0;}實驗八、多態(tài)性2學(xué)時1、實驗?zāi)康模赫莆者\算符重載的方法習(xí)使用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性。2、實驗任務(wù)a)定義Point類,有坐標(biāo)x,y兩個成員變量;對Point類重載“++”、“--”運算符,實現(xiàn)對坐標(biāo)值的改變。定義一個車(vehicle)基類,有Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類,從bicycle和motorcar派生出摩托車(motorcycle)類,它們都有Run、Stop等成員函數(shù)。觀察虛函的作用。3、實驗步驟編寫程序定義Point類,在類中定義整型的私有成員變量x,y,定義成員函數(shù)Point&operator++();Pointoperator++(int);以實現(xiàn)對Point類重載“++”運算符,定義成函數(shù)Point&operator–();Pointoperator也就是函數(shù)的重載。6、部分參考代碼Lab8_1#includeusingnamespacestd;classPoint{public:Point(doublex=0.0,doubley=0.0):xray(x),yray(y){}Pointoperator++(int);Pointoperator--(int);voidshow();private:doublexray;doubleyray;};PointPoint::operator++(int){returnPoint(xray++,yray++);}PointPoint::operator--(int){returnPoint(xray--,yray--);}voidPoint::show(){cout<intmain(){Pointp(4.5,6.5);cout<show(&v);return0;}第四篇:c++課程設(shè)計總結(jié)課程設(shè)計總結(jié)經(jīng)過一個學(xué)期對《C++程序設(shè)計》的學(xué)習(xí),我學(xué)習(xí)到了基本的理論知識,了解到了C++語言程序設(shè)計的思想,這些知識都為我的課程實踐和進一步的學(xué)習(xí)打下了堅實的基礎(chǔ)。在為期近兩周的C++課程設(shè)計中,我體會頗多,學(xué)到了很多東西。我加強了對C++程序設(shè)計這門課程的認(rèn)識,并且復(fù)習(xí)了自己以前學(xué)習(xí)到的知識。這些都使得我對計算機語言的學(xué)習(xí)有了更深入的認(rèn)識!總之,通過這次課程設(shè)計,我收獲頗豐,相信會為自己以后的學(xué)習(xí)和工作帶來很大的好處。像職工信息表這樣的程序設(shè)計,經(jīng)歷了平時在課堂和考試中不會出現(xiàn)的問題和考驗。而這些問題,這并不是我們平時只靠課本,就可以輕易解決的。所以,鍛煉了我們挑戰(zhàn)難題,學(xué)會用已掌握的知識去解決具體問題的能力,進一步培養(yǎng)了獨立思考問題和解決問題的能力。特別是學(xué)會了在VisualC++中如何調(diào)試程序的方法。當(dāng)然,老師的指導(dǎo)和同學(xué)的幫助也是不可忽視的,他們給了我許多提示和幫助,教會了我編譯復(fù)雜程序的方法。在老師和同學(xué)的幫助下,通過自己的努力,終于完成了這次職工信息表的簡單課程設(shè)計。我經(jīng)過這段時間的編程,對其中的艱辛,我是深有體會。從剛開始的選擇程序、理解程序到后來的調(diào)試程序以及改進程序這個過程中,我遇到了各種各樣的困難和挫折。但是我堅定信念,對自己充滿了信心,想盡一切辦法克服重重困難。通過課程設(shè)計的訓(xùn)練,我進一步學(xué)習(xí)和掌握了對程序的設(shè)計和編寫,從中體會到了面向?qū)ο蟪绦蛟O(shè)計的方便和巧妙。懂得了在進行編寫一個程序之前,要有明確的目標(biāo)和整體的設(shè)計思想。另外某些具體的細節(jié)內(nèi)容也是相當(dāng)?shù)闹匾?。這些寶貴的編程思想和從中摸索到的經(jīng)驗都是在編程的過程中獲得的寶貴財富。這些經(jīng)驗對我以后的編程會有很大的幫助的,我要好好利用。雖然這次課程設(shè)計是在參考程序的基礎(chǔ)之上進行的,但是我覺得對自己是一個挑戰(zhàn)和鍛煉。我很欣慰自己能在程序中加入自己的想法和有關(guān)程序內(nèi)容,也就是對它的程序改進了一番改進,并有創(chuàng)新。但是我感覺自己的創(chuàng)新還不夠典型,總之還不是很滿意。另外由于時間的緊迫和對知識的了解不夠廣泛,造成了系統(tǒng)中還存在許多不足,功能上還不夠完善。以后我會繼續(xù)努力,大膽創(chuàng)新,爭取能編寫出透射著自己思想的程序。這次課程設(shè)計讓我充分認(rèn)識到了自己的不足,認(rèn)識到了動手能力的重要性。我會在以后的學(xué)習(xí)中更加努力鍛煉自己,提高自己,讓自己寫出更好更完善的程序,為以后的編程打好基礎(chǔ)!總而言之,這次C++程序設(shè)計實踐讓我收獲很大。計算機科學(xué)與技術(shù)13-2班2010年7月4日第五篇:c++課程設(shè)計心得體會課程設(shè)計心得體會學(xué)生成績管理是高等學(xué)校教務(wù)管理的重要組成部分,其內(nèi)容較多,要完成能夠?qū)崿F(xiàn)人員的信息錄入、查詢、修改、刪除、統(tǒng)計、保存、顯示等操作。系統(tǒng)具體實現(xiàn)的功能如下:1.添加新的聯(lián)系人2.刪除所有聯(lián)系人3.刪除某個聯(lián)系人4.查詢某個聯(lián)系人5.查詢所有聯(lián)系人6.將電話本導(dǎo)出到文件7.從文件導(dǎo)入電話本8.查詢并編輯某個聯(lián)系人9.全班同學(xué)的平均分大概的算法分析學(xué)生成績管理軟件的數(shù)據(jù)結(jié)構(gòu)學(xué)生成績一般都是以每個成員為單位進行管理的,一個學(xué)生學(xué)號用一個結(jié)點來表示??紤]到添加、查詢和刪除的方便,這些以學(xué)號為單位的結(jié)點用鏈表方式組成一個主目錄。每個結(jié)點有四個域:(1)學(xué)生代號;(2)課程情況;(3)成績信息管理情況;各函數(shù)的功能和實現(xiàn)(學(xué)生成績管理的相關(guān)功能由對應(yīng)的函數(shù)來實現(xiàn))(1)添加新的聯(lián)系人用代碼實現(xiàn)輸入及輸出添加新的聯(lián)系人的學(xué)號,姓名,性別,生日、語文成績,數(shù)學(xué)成績;完成添加工作。(2)刪除某個聯(lián)系人首先輸入要刪除的姓名,然后要在系統(tǒng)中查看是否有此記錄,再用分支結(jié)構(gòu)實現(xiàn)刪除鏈表中此員工結(jié)點并修改學(xué)校員工鏈表及未找到這條記錄;因為可能系統(tǒng)中不存在此記錄。(3)刪除所有聯(lián)系人此功能要逐條刪除聯(lián)系人,則我們采用分支、循環(huán)結(jié)構(gòu)實現(xiàn)首先遍歷是否有給記錄,輸出讀取記錄或沒有該記錄;再到文件是否讀完,若沒讀完則要循環(huán)繼續(xù)讀取,否則已刪除了所有記

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論