第一篇:測繪程序設(shè)計與C++編程課程設(shè)計心得體會
測繪程序設(shè)計與C++編程課程設(shè)計
心得體會
學(xué)院: 班級: 學(xué)號:
姓名:
課程設(shè)計心得體會
時間過的真快,一晃眼的功夫,C++實(shí)習(xí)就要結(jié)束了,雖然只是短短的10天,但帶給我的卻很多。
首先,我先簡單回顧一下自己在這一段時間的經(jīng)歷。實(shí)習(xí)是從31號開始的,經(jīng)過短短的一上午的輔導(dǎo),我就開始了自己的任務(wù),每個人必做的第一題最優(yōu)直線平差、自己選的第六題秩虧網(wǎng)平差和一個臨時加的水準(zhǔn)路線與三角高程相對定權(quán)問題的處理。說實(shí)話,雖說自己利用空閑的時間看了一本C++的教程,對書本上的知識有所補(bǔ)充,對一些知識點(diǎn)相對理解加深了一些,但是如果真正上機(jī)編程的話,還是有點(diǎn)小心虛。俗話說:熟能生巧;在老師的激勵下,我對自己的本次實(shí)習(xí)充滿信心與期待。
我的實(shí)習(xí)的真正開始算是第二天吧,也就是元旦放假第一天,因為天氣比較冷所以就呆在宿舍在自己的電腦上先小試身手,不管做什么東西,都要有一個好的基礎(chǔ),MAT類和adj類算是測繪程序設(shè)計的一個非常重要的輔助工具吧,幾乎每個程序都要涉及,于是我就用了一天的時間將“MAT.h”頭文件讀了一遍,盡管求逆inverse()函數(shù)和求矩陣的秩R()函數(shù)沒有看懂,但其具體在什么地方用,和其他的一些程序算是有一定的掌握,然后就分析題目,慢慢做吧。
萬事開頭難,古人真是睿智。最優(yōu)直線的問題,題目看了好幾遍,相關(guān)的一些老師的程序也讀了幾次,感覺還是沒法下手,也許感覺這東西不靠譜,它有時候會擋住你前進(jìn)的路,而你只能靠著這種感覺原地踏步,重要的是摒棄它,踏出你的第一步。算了,硬著頭皮踏出猶豫的第一步,先建個Myline的類,然后把能想到的數(shù)據(jù)成員與成員函數(shù)加進(jìn)去,然后在做定義。就這樣磕磕絆絆地、邊寫邊參考老師的程序,我的程序算是有了幾個大塊了,file_in_Myline(char *),file_out_Myline(char *),Myline_adj(),為了實(shí)現(xiàn)文件能夠成功的調(diào)用,我又嘗試著加入了Creat_Myline_file(char *)函數(shù),通過屏幕上提示創(chuàng)建自己的文件,然后有直接調(diào)用file_in_Myline(char *)函數(shù)直接應(yīng)用,為了盡量減少在main()函數(shù)中的處理,最后有加入了聯(lián)系file_in_Myline(char *)和file_out_Myline(char *)的file_Myline(char *,char*)函數(shù),然后其他數(shù)據(jù)成員根據(jù)需要往類中添加。就這些東西,我做了一天,還沒有去調(diào)試,沒有建立其函數(shù)之間的傳遞,效率真夠低的,然后2號晚上開始調(diào)試,好多錯誤,看的懂的,看不懂的,我極力調(diào)試著,但我的腦子也越來越混亂,煩躁開始侵蝕我的理智。。算了,休息會吧,再跟其他同學(xué)交流一下,宿舍小憩了一會,然后請來了編程不錯的一個同學(xué),他因為對這方面感興趣,就提前好幾天開始編程了,他給我指導(dǎo)了一些問題,期間,我們也交流了好多關(guān)于課題任務(wù)的一些知識點(diǎn)、注意點(diǎn),晚上,11點(diǎn)左右,我的最優(yōu)直線算是孕育而生了,程序的運(yùn)行結(jié)果跟預(yù)期結(jié)果一樣,真的,在結(jié)果顯示在屏幕上的那一刻,我真的感覺好友成就感,今天就到這吧,有些累了,雖然程序在整體上看起來有點(diǎn)混亂、有的粗糙,但我可以安逸的睡了,明天再做整體修正吧,總體來說,這個開頭在有心人面前算是開的有點(diǎn)崎嶇但還算順利。
然后第二天修改了下我的最優(yōu)直線,再考慮了下我的第六題,那天晚上也算是曲折的做了出來,第十題老師說是很簡單,而且就光當(dāng)時的講解講了好幾遍,所以有目的的去看定權(quán)的那一部分程序,沒花多長時間就把它搞定了,元旦三天時間,別人玩的時候,我做了我的程序,有好多同學(xué)的程序還沒有開始呢,哈哈,我感覺好幸福!
4號算是實(shí)習(xí)的第二天,但我的任務(wù)可以接近尾聲了,但前提是我這樣想的話。因為我知道班里的一些同學(xué)也同樣做完了自己的任務(wù),都開始涉及其他的課題,大家都極力的充實(shí)自己,我怎么可能落下呢?所以我不會就此停下,我要好好利用本次實(shí)習(xí),讓它充實(shí)而有意義。
在接下來的幾天里,我積極的接觸其他課題,在自己的努力和老師的幫助下,效果很理想!
本次實(shí)習(xí),我做了7個課題,第九個平面網(wǎng)最小二乘法的實(shí)現(xiàn),因為涉及的程序太多,一時半會做不完,所有以后有時間再去考慮它吧,總體來說還是達(dá)到了自己的期望,。從某種程度上來說我是超額完成自己的任務(wù),但是我知道,這個結(jié)果除了自己的努力外還有其他幾方面非常重要的原因,而這幾方面也讓我成長了不少。
實(shí)踐出真知,實(shí)習(xí)前,我的C++知識只是停留在理論水平,而且就算理論水平,也存在很多漏洞。有時,在做課題的時候,理論的漏洞冒了出來,我就只能在看著課本慢慢的再學(xué)習(xí)一遍,像做導(dǎo)線程序有涉及到數(shù)字測圖的知識,還有好多數(shù)據(jù)處理都涉及到平差原理的知識,因為當(dāng)時有些東西就沒有搞懂,所以現(xiàn)在就又翻出課本,看著課本編程,也算是將舊的東西復(fù)習(xí)了一遍。同時,有的理論在實(shí)習(xí)操作過程中印象更加深刻。有趣的是,做完導(dǎo)線程序,用課本上的數(shù)據(jù)演算了一遍,結(jié)果發(fā)現(xiàn)課本上有一個數(shù)據(jù)是錯誤的(可能是吧),其他有做導(dǎo)線的同學(xué)也有相同的反應(yīng),總之,感覺挺好,不錯!
成功=勤奮+合作。我暫且將我的實(shí)習(xí)成果用成功來代替,雖然離成功差的還很遠(yuǎn)。在實(shí)習(xí)接近尾聲的時候,有的同學(xué)跟我聊得時候,說我怎么交這次實(shí)習(xí)的成果,我說做了的課題都交啊。同學(xué)有些羨慕的恭喜我,我挺愉快的,但我也知道,我付出了,回報跟付出是成正比的,我從31號起就開始了自己的實(shí)習(xí),我也放棄了好多休息的時間,我笨拙的讀著老師給的相關(guān)的程序,發(fā)現(xiàn)有什么不懂得,先是一個人自主的思考,實(shí)在解決不了的就和其他同學(xué)討論,有時別的同學(xué)會很清晰的給我說明一些課題的思路,但大多數(shù),其他同學(xué)也不懂、或者也在這方面存在疑問,于是,大家發(fā)表各自的看法、思路,然后就討論了起來,最后,在大家的共同努力之下,問題的答案逐漸浮出水面,大家為了慶祝一下,有時還去外面吃一頓。交流與合作在實(shí)習(xí)過程中給我很大的幫助,我得到了很多,每次看到解決一道問題后大家的愉悅,我想大家應(yīng)該與我一樣收獲很大吧。說真的,我挺喜歡這種討論的氛圍,它也讓實(shí)習(xí)過程變得趣味橫生,不再只是呆滯的盯著屏幕寫程序。
我是班長,我有義務(wù)去幫助其他同學(xué),而實(shí)習(xí)給了我一次很好的機(jī)會,也讓我成長了好多。在這幾天的上機(jī)過程中,有同學(xué)問我問題,我積極的對待每一個問題,我會的,耐心的為他講解,每一次講解,也是我的知識鞏固的一個過程,所以我也樂此不疲,每次給別的同學(xué)講完后,我挺有成就感的,這種成就感不會讓我沾沾自喜,而會成為我不斷向上的動力;畢竟我也算是新手,有一些問題自己也是無能為力,我們或是討論,或是問老師,老師耐心講解讓我們甚是感動,有時候被老師那種責(zé)任心所折服,大家都說有這樣的老師真好!好的,我也要向老師學(xué)習(xí),對同學(xué)負(fù)責(zé),做好我的角色,真正做到為了同學(xué)的利益而犧牲自己的時間。
本次實(shí)習(xí)的缺陷,對我來說就是,所有程序的原始數(shù)據(jù)都來自老師給的數(shù)據(jù)或者是測量平差和數(shù)字測圖書上的例題數(shù)據(jù),跟其他同學(xué)會有所重復(fù),但所有的程序都是自己獨(dú)立完成。
這次實(shí)習(xí)總體來說,每天我的過的挺累,但累是值得的,這個值得不僅僅是課題成果上,更重要的讓我成長好多,也許這就是我在這短短的十天左右的時間里最好的回報吧。
最后,真心感激跟我一起完成課題的同學(xué)們和耐心指導(dǎo)我們的楊老師,我會在以后的路上牢記這次美好的回憶!
第二篇:c++課程設(shè)計心得體會
課程設(shè)計心得體會
學(xué)生成績管理是高等學(xué)校教務(wù)管理的重要組成部分,其內(nèi)容較多,要完成能夠?qū)崿F(xiàn)人員的信息錄入、查詢、修改、刪除、統(tǒng)計、保存、顯示等操作。系統(tǒng)具體實(shí)現(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é)生成績一般都是以每個成員為單位進(jìn)行管理的,一個學(xué)生學(xué)號用一個結(jié)點(diǎn)來表示??紤]到添加、查詢和刪除的方便,這些以學(xué)號為單位的結(jié)點(diǎn)用鏈表方式組成一個主目錄。每個結(jié)點(diǎn)有四個域:
(1)學(xué)生代號;
(2)課程情況;
(3)成績信息管理情況;
各函數(shù)的功能和實(shí)現(xiàn)(學(xué)生成績管理的相關(guān)功能由對應(yīng)的函數(shù)來實(shí)現(xiàn))(1)添加新的聯(lián)系人
用代碼實(shí)現(xiàn)輸入及輸出添加新的聯(lián)系人的學(xué)號,姓名,性別,生日、語文成績,數(shù)學(xué)成績;完成添加工作。
(2)刪除某個聯(lián)系人
首先輸入要刪除的姓名,然后要在系統(tǒng)中查看是否有此記錄,再用分支結(jié)構(gòu)實(shí)現(xiàn)刪除鏈表中此員工結(jié)點(diǎn)并修改學(xué)校員工鏈表及未找到這條記錄;因為可能系統(tǒng)中不存在此記錄。
(3)刪除所有聯(lián)系人
此功能要逐條刪除聯(lián)系人,則我們采用分支、循環(huán)結(jié)構(gòu)實(shí)現(xiàn)首先遍歷是否有給記錄,輸出讀取記錄或沒有該記錄;再到文件是否讀完,若沒讀完則要循環(huán)繼續(xù)讀取,否則已刪除了所有記錄。
(4)查詢某個聯(lián)系人
因此功能會出現(xiàn)還沒有任何記錄、未找到這條記、輸出該聯(lián)系人信息三種情況,我們則選用簡單的三分支結(jié)構(gòu);首先要請輸入要查詢聯(lián)系人的姓名,輸出有記錄或還沒有任何記錄,有記錄則遍歷所有人,最后是未找到這條記錄,輸出該聯(lián)系人信息。
(7)從電話本導(dǎo)入文件的流程圖
首先查看是否有記錄,輸出沒有任何記錄或打開“Manager.txt”,歷遍鏈表,將人員結(jié)點(diǎn)信息寫入文件Manager.txt、關(guān)閉文件,最后成功保存到Manager.txt。
其余的函數(shù)功能實(shí)現(xiàn)相似則不重復(fù)。
心得體會
剛放假不久,我們組的積極分子們就張羅著要開始編寫程序了,編寫這個程序我們經(jīng)歷了討論選題,編寫代碼,調(diào)試,寫設(shè)計報告等。在這期間我們查閱了很多相關(guān)的資料,曾盯著課本發(fā)呆過,我們成員之間也曾進(jìn)行過激烈的口舌論戰(zhàn)。經(jīng)過這個暑假來的實(shí)踐學(xué)習(xí),使我們對C++語言有了更進(jìn)一步的認(rèn)識和了解,要想學(xué)好它,則重在實(shí)踐,要通過不斷的上機(jī)操作及實(shí)例運(yùn)用才能更好地深入體會它,當(dāng)然通過實(shí)踐,我們也發(fā)現(xiàn)我們的好多不足之處。就比如我們對C++語言的一些標(biāo)準(zhǔn)庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,一些經(jīng)常出現(xiàn)的錯誤也不能很好地處理。我們編寫這個程序使用的是比較簡單的函數(shù)及結(jié)構(gòu),由于我們的水平有限,還不能很好的使用一些效率高的方式來編寫,所以也沒有突出的創(chuàng)新點(diǎn)。在做題的時候我們都是分工合作。分工完成結(jié)構(gòu)體、函數(shù)設(shè)計、算法分析等,這些過程中總是有很多錯誤出現(xiàn),有好多的小問題都是我們粗心大意造成的,所以設(shè)計程序一定要仔細(xì),不容一點(diǎn)的馬虎。當(dāng)然也有大問題,關(guān)于文件的操作,類的使用等等這些使用我們都琢磨了很久,在解決錯誤時我們有時幾乎焦頭爛額了。但是我們與隊友之間都會不斷的相互鼓勵、支持,彼此都努力維護(hù)著將作業(yè)寫完。雖然這設(shè)計有點(diǎn)枯燥無味,但是當(dāng)最后我們大功告成時,回味起來還是美滋滋的??偟膩碚f我們真的是在設(shè)計的過程中受益匪淺。
第三篇:C++編程心得
緊張忙碌的一周過去了,在這個星期里我們小組勝利地將我們選定的課題研究出來,我為我的小組驕傲,也為自己驕傲。
我們的題目是銀行定期存款管理系統(tǒng),在編程過程中,我預(yù)訂的任務(wù)是學(xué)習(xí)并掌握MFC,并將其運(yùn)用到我們的程序中。學(xué)習(xí)MFC的過程是我認(rèn)為非常痛苦的事,因為完全都是自學(xué),并且因為圖書館中的相關(guān)書籍全部被借閱出去,所以沒有太多的自學(xué)資料,因此雖然費(fèi)了很大的精力,但仍是無果。經(jīng)過了很多的小組討論和自己的心理斗爭后最終決定放棄MFC而將自己能力以內(nèi)的程序盡可能地優(yōu)化,就這樣,我開始在半路階段加入了程序優(yōu)化的工作,一遍遍的調(diào)試程序,遇到某個攻堅問題,幾個人一起在網(wǎng)上查詢,一起想解決的辦法,就這樣,我們團(tuán)結(jié)地將我們現(xiàn)在認(rèn)為將近完美的程序呈現(xiàn)給老師和同學(xué)。
一開始學(xué)習(xí)MFC時,我總是不能很好的轉(zhuǎn)換思維,不能將自己以前的編程思想和以前的一些不良編程習(xí)慣甩掉,因此很多的程序都聯(lián)系不起來,反而是自己學(xué)會了好多的零碎的片面卻無法將程序大樓豎起來。在困惑很久后,我選擇了詢問老師,老師耐心地將MFC的思維方式講給了我聽,這讓我受益匪淺,雖然我最后沒能將MFC成功的做出來,但我認(rèn)為我從MFC中才直接地感受到了C++中面向?qū)ο缶幊痰姆庋b性。以前用C++編程時總是將類中的變量隨便規(guī)定屬性,甚至在編程的過程中突然需要加一個變量,為了省事直接將其放于public中,在學(xué)習(xí)了解MFC后,深刻地感受到自己以前的編程習(xí)慣是多么的不科學(xué),而那些習(xí)慣又是多么的重要。
我們這一次是以團(tuán)隊的形式來做這個項目,并且作為這個小組的組長,我感覺自己的壓力很大,因為團(tuán)隊合作不僅講求整體的團(tuán)結(jié)而且為了團(tuán)隊工作的高效又要有明確的分工。在我們的小組工作中每個人都一刻不放松自己手里的工作,而一些時候我們又配合地很密切,尤其是當(dāng)我們遇到程序的瓶頸時,我們都是在宿舍里你一句我一句地出謀劃策,在遇到一個提取時間的程序時,大家紛紛查詢各種輔導(dǎo)書,上網(wǎng)查各種資料,在遇到定期存款支取問題時甚至打電話給家長,尋求“場外支持”,種種的配合都給我們這個部門協(xié)調(diào)的運(yùn)作提供了動力。我感謝我的團(tuán)隊,他們讓我有一種很舒服的做事情的感覺。
最終決定放棄MFC,我承認(rèn)自己有一種如釋重負(fù)的感覺,但是也有一絲慚愧,無論老師要求與否,既然自己決定了就應(yīng)該走下去,但是我最后退卻了,感覺很遺憾也很羞愧,因為我認(rèn)為對自己降低要求就是放縱自己墮落。
短學(xué)期實(shí)習(xí),我著實(shí)收獲了很多,不僅僅是知識上,而且是思考事情方法,我感激這次的實(shí)習(xí),也感謝給予我們很多幫助的老師,更感謝我團(tuán)結(jié)的團(tuán)隊。
第四篇:C++程序設(shè)計總結(jié)
第一章面向?qū)ο缶幊淘?/p>
?近五十年間,軟件技術(shù)經(jīng)歷了多個階段的發(fā)展演變 ? 目前為止最流行的技術(shù)還是面向過程編程(POP)
? 面向過程編程采用了自頂向下的設(shè)計方案,問題被看做多個執(zhí)行任務(wù)的序列。為完成這些任務(wù),須實(shí)現(xiàn)一些函數(shù)。
? 面向過程有兩大不足,即:(1)數(shù)據(jù)可在程序內(nèi)自由遷移,程序內(nèi)任何函數(shù)都會引起數(shù)據(jù)的更改,增加了數(shù)據(jù)的脆弱性。(2)它并不能很好地建?,F(xiàn)實(shí)世界。
? 為了克服面向過程編程中的不足,人們發(fā)明了面向?qū)ο缶幊蹋∣OP)。它采用自底向上的編程方案,在程序開發(fā)中,把數(shù)據(jù)視為重要元素,不允許數(shù)據(jù)在系統(tǒng)內(nèi)自由遷移。它還將數(shù)據(jù)和函數(shù)緊密綁定于成為類的數(shù)據(jù)結(jié)構(gòu)中,函數(shù)可操作類中的數(shù)據(jù)。此特性稱為數(shù)據(jù)封裝。
? 在面向?qū)ο缶幊讨校瑔栴}被視為一系列稱為對象的實(shí)體的集合。對象是類的實(shí)例; ? 將數(shù)據(jù)與程序的直接訪問隔絕,這稱為數(shù)據(jù)隱藏。
? 數(shù)據(jù)抽象指的是,將各種必要特性合并,而不引入背景細(xì)節(jié)。? 繼承是這樣的一個過程,即某類的對象得到另一類對象的屬性。
? 多態(tài)指的是,一個名稱,多種形態(tài)。在程序中,我們可以借此定義多個同名函數(shù)。此特性亦可重載運(yùn)算符,這樣一來,同一個運(yùn)算符在不同的實(shí)例下,會有不同的行為。? 動態(tài)綁定指的是,給定過程的代碼,直到運(yùn)行期被調(diào)用時才確定。? 消息傳遞涉及對象名,函數(shù)(消息)名以及發(fā)送的信息。
? 與傳統(tǒng)的編程技術(shù)相比,面向?qū)ο蠹夹g(shù)具有諸多優(yōu)勢——最顯著的當(dāng)屬重用技術(shù)。? 在實(shí)時系統(tǒng)等幾乎所有的計算機(jī)領(lǐng)域,面向?qū)ο缶幊痰膽?yīng)用程序都已受到重視。? 不少語言都支持面向?qū)ο缶幊?,流行的語言包括C++、Smalltalk和Java。
第二章C++入門
? C++是C語言的超級
? C++在C語言的基礎(chǔ)上,添加了一些面向?qū)ο蟮奶匦?,諸如對象、繼承、函數(shù)重載和運(yùn)算符重載。這些特性加強(qiáng)了程序的清晰性,可擴(kuò)展性,使程序容易維護(hù)。
? C++可用于開發(fā)各種系統(tǒng),諸如編輯器、編譯器、數(shù)據(jù)庫、通信系統(tǒng)以及其他更多復(fù)雜的實(shí)際系統(tǒng)。
? C++支持交互式輸入輸出,并引入了新的注釋符號//,可用于注釋單句。它也支持C語言的注釋風(fēng)格。
? 和C程序一樣,所有C++程序的執(zhí)行入口都是main()函數(shù),并以return()語句作為結(jié)束。頭文件iostream應(yīng)包含于所有使用輸入輸出操作的程序開頭。? 所有標(biāo)準(zhǔn)C++程序都要包含using namespace std指令
? 典型的C++程序包括四個基本部分:也就是頭文件包含部分、類聲明部分、成員函數(shù)部分和主程序部分
? 和C程序一樣,C++程序可用于任何文本編輯器創(chuàng)建
? 大多數(shù)編譯器提供了集成開發(fā)運(yùn)行環(huán)境。流行的編譯器系統(tǒng)有UNIX AT&T C++、Turbo C++和微軟公司的Visual C++
第三章符號、表達(dá)式和控制結(jié)構(gòu)
? C++有不同的符號,包括關(guān)鍵字、標(biāo)識符、常量、字符串和操作符 ? 標(biāo)識符指的是變量名、函數(shù)名、數(shù)組名、類名等 ? C++中增加了void的一個用途,可用于聲明通用指針
? C++中枚舉數(shù)據(jù)類型略有不同,枚舉類型名稱為新的類型名。這樣我們就可以聲明枚舉類型的變量
? 在C++中,字符數(shù)組的大小應(yīng)比字符串的實(shí)際長度大1 ? C++增加了指針常量和常量指針的概念,對于前者我們不能修改賦予它的地址值,對于后者,我們不能修改它指向的內(nèi)容。
? 在C++的內(nèi)存管理和多態(tài)實(shí)現(xiàn)中,指針被廣泛地使用。
? C++中提供了const修飾符,用于聲明常量,常量也是變量,只是其值不可變更。const修飾符默認(rèn)修飾整型。
? C++的變量類型檢查非常嚴(yán)格,它不允許不同類型變量之間的賦值。類型轉(zhuǎn)換是打破此規(guī)的唯一辦法。
? C++允許我們在程序中隨處聲明變量,而且可以利用聲明處的表達(dá)式,在運(yùn)行期完成初始化。
? 引用變量給之前定義的變量提供了一個別名。它們都指向內(nèi)存中的同一個數(shù)據(jù)對象。所以,改變其中一個的值,另一邊量的值也會隨之改變。
? 引用變量必須在聲明時初始化,這建立了它和要引用的變量之間的對應(yīng)關(guān)系。? 作用于解析操作符(::)的主要用于類,以識別成員函數(shù)所屬的類
? 除了malloc()、calloc()、free()函數(shù)外,C++提供了兩個一元操作符,即new和delete,以更好和更方便地分配和釋放內(nèi)存
? C++也提供了操縱器,來格式化輸出數(shù)據(jù)。最常用的操縱器為endl和setw ? C++支持七種表達(dá)式類型。表達(dá)式中數(shù)據(jù)類型混用時,C++使用特定規(guī)則,自動地進(jìn)行類型轉(zhuǎn)換。
? 使用類型轉(zhuǎn)換操作符,C++也可顯示地進(jìn)行變量和表達(dá)式的類型轉(zhuǎn)換
? 和C語言一樣,C++也支持三種基本的控制結(jié)構(gòu),也就是順序結(jié)構(gòu),分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),并使用各種控制語句實(shí)現(xiàn)它們,比如if、if…else、switch、do…while、while以及for。
第四章C++中的函數(shù)
? 在程序的不同處,調(diào)用函數(shù)可減少程序的大小。
? 在C++中,main()函數(shù)向操作系統(tǒng)返回一個整型值。因為函數(shù)的返回值類型默認(rèn)是整型,所以main()函數(shù)中的關(guān)鍵字int是可選的。而如果沒有返回語句,大部分C++編譯器會提示一個警告。
? 函數(shù)原型向編譯器提供了函數(shù)的細(xì)節(jié),比如參數(shù)的數(shù)目和類型,以及返回值的類型。? C++的引用變量使我們可以傳引用參數(shù)給函數(shù)。函數(shù)也可以返回引用變量。
? 當(dāng)函數(shù)聲明為內(nèi)聯(lián)時,編譯器用相應(yīng)的函數(shù)代碼替換了函數(shù)調(diào)用。一般情況下,小函數(shù)才使用內(nèi)聯(lián)。
? 編譯器可能會忽略函數(shù)的內(nèi)聯(lián)聲明,如果函數(shù)聲明太長或過于復(fù)雜,編譯器將按常規(guī)函數(shù)編譯它。
? 當(dāng)函數(shù)聲明時,C++允許我們把默認(rèn)值賦給函數(shù)參數(shù)。這種情況下,我們可以無需指明所有參數(shù),便可調(diào)用函數(shù)。默認(rèn)參數(shù)總是由右到左添加。? C++中,函數(shù)的參數(shù)可聲明為常量,表示函數(shù)不可更改此變量。
? C++允許函數(shù)重載,也就是說,我們可以定義多個同名函數(shù)。通過檢查參數(shù)數(shù)目和類型編譯器會準(zhǔn)確地匹配函數(shù)調(diào)用和函數(shù)代碼。
? C++支持兩種新的函數(shù)類型,亦即友元函數(shù)和虛函數(shù)。
? C++標(biāo)準(zhǔn)庫支持很多數(shù)學(xué)庫函數(shù),使用它們可以完成許多數(shù)學(xué)計算。
第五章 類和對象
? 類是結(jié)構(gòu)體數(shù)據(jù)類型的擴(kuò)展,一個類有多個成員變量和成員函數(shù)。? 默認(rèn)情況下,類的成員是私有的,而結(jié)構(gòu)體的成員是公用的。
? 只有成員函數(shù)可以訪問私有數(shù)據(jù)成員和私有函數(shù)。但是類外可以訪問公用成員。? 在C++中,類變量稱為對象。利用對象并使用點(diǎn)操作符,我們可以訪問類的公用成員。? 我們可以在類內(nèi)或類外定義成員函數(shù)。成員函數(shù)和常規(guī)函數(shù)的區(qū)別在于,成員函數(shù)的頭
部有一個隸屬標(biāo)識符,以表明所屬類。
? 對象聲明時,內(nèi)存空間才會分配。每一對象的成員變量空間單獨(dú)分配,而成員函數(shù)的空間則統(tǒng)一分配。
? 類的一個成員變量可聲明為靜態(tài)成員,一般用于維護(hù)整個類的通用值。? 靜態(tài)成員變量必須定義于類外。
? 靜態(tài)成員函數(shù)可訪問聲明在同類的靜態(tài)成員,調(diào)用靜態(tài)成員函數(shù)時需要用到類名。? C++允許我們使用對象數(shù)組。? 對象可用作函數(shù)自變量。
? 友元函數(shù)不在友元聲明類的作用域類,它可以訪問累的所有私有數(shù)據(jù)。? 函數(shù)可以返回對象。
? 如果成員函數(shù)不改變類內(nèi)的任何數(shù)據(jù),我們可以將其聲明為常量成員函數(shù),只要在函數(shù)原型中加上關(guān)鍵詞const(聲明和定義都要加)。
? 我們也可以在函數(shù)內(nèi)定義和使用類。這種類稱為局部類。
第六章構(gòu)造函數(shù)和析構(gòu)函數(shù)
? C++提供了一種稱為構(gòu)造函數(shù)的特殊成員函數(shù),它能幫助對象在創(chuàng)建時完成初始化。這一過程被稱為對象的自動初始化。? 構(gòu)造函數(shù)名和類名一致。
? 構(gòu)造函數(shù)通常用來初始化變量,以及分配內(nèi)存。? 和常規(guī)函數(shù)一樣,構(gòu)造函數(shù)也可以被重載。
? 當(dāng)對象同時被創(chuàng)建和初始化時,復(fù)制構(gòu)造函數(shù)被調(diào)用。? 我們可以聲明一個常量對象,其數(shù)據(jù)值不能改變。
? C++還提供另一種成員函數(shù),稱為析構(gòu)函數(shù)。當(dāng)對象不再需要時,會調(diào)用這種函數(shù)來銷毀對象。
第七章運(yùn)算符重載和類型轉(zhuǎn)換
? 運(yùn)算符重載是C++的重要特性之一。又被稱為編譯時多態(tài)性。
? 使用重載特性,我們可以對兩個用戶自定義數(shù)據(jù)類型,比如說對象,執(zhí)行相加的操作,使用的語法就和基本數(shù)據(jù)類型一樣。
? 我們可以重載幾乎所有C++的運(yùn)算符,下面幾個是例外:
? 類成員訪問符(.,.*)。? 作用域解析符(::)。
? 大小運(yùn)算符(sizeof)。? 條件運(yùn)算符(?:)。
? 運(yùn)算符重載是通過一種稱為運(yùn)算符函數(shù)的特殊函數(shù)完成的,該函數(shù)定義了運(yùn)算符的特定任務(wù)。
? 運(yùn)算符重載時有一些限制。運(yùn)算符函數(shù)必須是非靜態(tài)的成員函數(shù)或者友元函數(shù)。重載的運(yùn)算符必須有至少一個用戶自定義類型的操作數(shù)。
? 編譯器不支持用戶自定義數(shù)據(jù)類型的自動類型轉(zhuǎn)換,我們可以使用自定義的轉(zhuǎn)換運(yùn)算符函數(shù),以實(shí)現(xiàn)自定義數(shù)據(jù)類型的自動類型轉(zhuǎn)換。? 轉(zhuǎn)換運(yùn)算符函數(shù)應(yīng)符合下列條件:
? 必須是類成員。? 必須不指定返回值。? 必須沒有參數(shù)。
第八章繼承:類的擴(kuò)展
? 從舊類派生一個新類的機(jī)制被稱為繼承。繼承提供了可重用性的概念。通過繼承,C++的類可以被重用。
? 派生類繼承了基類的一部分或所有特性。? 只有一個基類的派生類被稱為單繼承。? 可從多個類繼承,這被稱為多繼承。? 可從另一派生類繼承類,這被稱為多級繼承。
? 當(dāng)某類的屬性被多于一個類繼承時,這被稱為層次繼承。? 不管是在公用模式還是私有模式,類的私有成員都不可被繼承。
? 以公用模式繼承的保護(hù)成員仍為派生類的保護(hù)成員,而以私有模式繼承的保護(hù)成員,則變成派生類的私有成員。
? 友元函數(shù)和友元類的成員函數(shù)可直接訪問私有和保護(hù)數(shù)據(jù)。
? 派生類的成員函數(shù)只能直接訪問保護(hù)和公用數(shù)據(jù)。不過他們可通過基類的成員函數(shù)訪問私有數(shù)據(jù)。
? 多路繼承可能引起祖父基類的繼承成員的重復(fù)。通過將共同的基類設(shè)為虛基類,我們可以避免祖父基類成員的重復(fù)。
? 在多繼承中,基類的創(chuàng)建次序與他們在派生類中的聲明次序一致。? 類可包含其他類的對象。這被稱為包含關(guān)系或嵌套。
第五篇:C++程序設(shè)計課程設(shè)計人口戶籍信息管理系統(tǒng)源程序
九、源程序代碼
#include
class population { private: int maxnum;//人口戶籍編號最大值r int sno;//編號 char name[20];char sex[2];int age;char birth[10];//出生日期 char folk[2];//民族
char mianmao[10];//政治面貌 char department[10];//村組名 char speciality[10];//家庭門牌號
char address[30];//人口家庭詳細(xì)地址 public: population();~population();void enter();//戶籍信息錄入函數(shù) void display();//戶籍信息輸出函數(shù) void setsno(int temp);int getsno();char *getname();char *getspeciality();void read();void write();void change();};population::population(){}
population::~population(){}
int population::getsno(){return sno;}
char *population::getspeciality()
齊齊哈爾大學(xué)C++程序設(shè)計課程設(shè)計用紙
{return speciality;}
void population::setsno(int temp){sno=temp;} char *population::getname(){return name;}
void population::display(){
cout< char ch; cout<<“ 請輸入要修改人員的信息”< cout<<“*******************************************************”< cout<<“姓名是不是要改寫(Y/N)”< cin>>ch; if(ch=='Y'||ch=='y') { cout<<“請輸入新姓名:”< cin>>name; } cout<<“輸入性別(男(n),女(m)):”< cin>>sex; if(strcmp(sex,“n”)!=0&&strcmp(sex,“m”)!=0) { cout<<“錯誤請重新輸入!:”< cin>>sex; } cout<<“輸入年齡:”< cin>>age; while(age<1||age>=110) { cout<<“錯誤請重新輸入!”< cin>>age; } cout<<“輸入出生日期:”< cin>>birth; cout<<“輸入民族:”< cin>>folk; 齊齊哈爾大學(xué)C++程序設(shè)計課程設(shè)計用紙 cout<<“出生日期:”< cin>>birth; cout<<“年齡:”< cin>>age; while(age<1||age>=110) { cout<<“錯誤請重新輸入!”< cin>>age; } cout<<“政治面貌類別(黨員(a),非黨員(b)):”< cin>>mianmao; while(strcmp(mianmao,“a”)!=0&&strcmp(mianmao,“b”)!=0) { cout<<“錯誤請重新輸入!”< cin>>mianmao; } cout<<“民族:”< cin>>folk; cout<<“村組名:”< cin>>department; cout<<“家庭門牌號:”< cin>>speciality; cout<<“家庭詳細(xì)地址:”< cin>>address;} //主程序部分: #include void read(){ ifstream afile(“population.txt”,ios::nocreate); afile.read((char*)&pop,sizeof pop);} void write(){ ofstream bfile(“population.txt”,ios::app); bfile.write((char*)&pop,sizeof pop); 齊齊哈爾大學(xué)C++程序設(shè)計課程設(shè)計用紙 if(i==pop.getsno()||strcmp(pop.getname(),ch1)==0|| strcmp(pop.getspeciality(),ch2)==0) { cout<<“你要查找的人員信息如下:”< cout< “年齡”< setw(8)<<“村組名”< pop.display(); i=0; k=0; m=1; return; } } if(m!=1)cout<<“沒有找到這名人員的信息!”< } void omit()//刪除函數(shù) { int ch; cout<<“請輸入要刪除的人員的編號:”< cin>>ch; ifstream in(“population.txt”,ios::nocreate);//打開文件1,讀數(shù)據(jù) ofstream out(“population1.txt”,ios::trunc);//打開文件寫數(shù)據(jù)到文件2 while(in)//循環(huán)讀數(shù)據(jù) { if(in.read((char*)&pop,sizeof pop))//讀后存在pop變量里,讀pop這么大小 if(ch!=pop.getsno())// 如果讀出來的數(shù)據(jù)的pop取sno不等于剛才輸入的學(xué)號,將這組數(shù)據(jù)寫入文件 { out.write((char*)&pop,sizeof pop); } else cout<<“人員已成功刪除!”< } in.close();//關(guān)閉文件 out.close(); ifstream ifile(“population1.txt”,ios::nocreate);//將文件2的內(nèi)容弄到文件1上 ofstream hfile(“population.txt”,ios::trunc); while(ifile) { if(ifile.read((char*)&pop,sizeof pop)) 齊齊哈爾大學(xué)C++程序設(shè)計課程設(shè)計用紙 } void menu(){ cout<<“ * 人口戶籍信息管理系統(tǒng) *”< 0.退出管理系統(tǒng) ”< cout<<“ 1.人員信息錄入 ”< cout<<“ 2.人員信息查詢 ”< cout<<“ 3.人員信息刪除 ”< cout<<“ 4.人員信息修改 ”< cout<<“ 5.人員信息輸出 ”< cout<<“ 請選擇以上操作(0=======5)”< int ch; while(1) { cin>>ch; switch(ch) { case 0:exit(0);menu();break; case 1:input();menu();break; case 2:search();menu();break; case 3:omit();menu();break;case 4:change();menu();break; case 5:output();menu();break; default:menu();cout<<“輸入無效請重新輸入(0========5)”< } } } int main(){ int count=0;char password[5]; //密碼 char name[11]; //用戶名 齊齊哈爾大學(xué)C++程序設(shè)計課程設(shè)計用紙 cout<<“ 謝謝使用-----人口戶籍信息管理系統(tǒng)!! ”< 再見! ”< cout<<“*******************************************************************************”<