靈感範文站

位置:首頁 > 個人文件 > 實習報告

程式設計實習心得

第一篇:程式設計實習心得

程式設計實習心得

來公司實習已一個多月了,在這段時間裡,我主要學習evc下的mfc程式設計,下面主要談談學習的經驗以及心得體會

在程式設計過程中遇到了較多的問題,解決問題的過程是漫長而艱苦的,然而在問題得到解決的一剎那是很快樂的。在此舉出數個例子與大家分享:

1. 音樂播放—>滾動條的繪製

在開始繪製滾動條的時候,為了簡便以及縮短開發時間,我打算直接從vc預設的標準滾動條cscrollbar派生,然後對其進行所有者自繪(owrner draw),將圖片貼上去,然而cscrollbar並不如cbutton般好繪製,在經過近一天的嘗試後始終無果,很是煩躁,後來在聽從陳曦老師的建議後,決定還是從cstatic派生自繪,然後再加上一些滑鼠、鍵盤的相應訊息響應處理函式以實現滾動條的功能。

在確定這一思路後,我便開始著手程式碼的實現:首先實現了一個圖片繪製函式loadbitmaptoscroll(),用於將滾動條的滑塊、上下箭頭以及滾動條底色畫到確定的區域。由於滑塊的位置會不斷的發生變化,因此將不能簡單地將滾動條底色先畫好,然後將滑塊放到某一固定位置,因此我定義了一個類成員變數nthumbtop用於確定滑塊頂部到滾動條頂部的距離並截取了一小塊滾動條底色將其填充到滑塊到兩側箭頭的所有區域以實現滾動條的變化。然後捕獲wm_paint訊息呼叫loadbitmaptoscroll()使對視窗進行重繪時將滾動條顯示出來。這樣當建立一個滾動條物件的時候,便能夠將其簡單地顯示出來了。

要響應使用者的外部輸入,則只需要捕獲訊息即可,比如wm_lbuttondown便可以判斷是否有滑鼠左鍵按下並可通過滑鼠位置判斷點選的是向上的箭頭、向下的箭頭還是滑塊。另外由於滾動條是不獨立存在的,它一般會與一個視窗做伴,比如列表以控制其顯示內容或區域。因此,我在滾動條類中定義了一個plist指標變數指向滾動條要控制的視窗物件,在滑鼠點選滾動條的上下箭頭時,通過向plist指向的物件傳送wm_vscroll訊息以控制視窗區域的上翻或下翻。

如此,一個具有美觀介面及基本功能的滾動條大體上已經實現了。整個滾動條的繪製耗費了將近兩天時間,儘管時間較長,但還是受益匪淺,整個繪製過程讓我明白了:“一切皆有可能”,沒有什麼是不能實現的,只要它在現實生活中存在,很多東西表面上看起來很複雜,就象這個自定義的滾動條,只要將其功能進行分解然後一步步實現便可以了。

2. 透明文字的實現

由於嵌入式系統的特殊性,evc並不具備vc的所有功能,透明文字的輸出就是其中一例。vc下只要簡單地通過setbkmode(transparent),然後在控制元件視窗區域內獲取裝置上下文dc,通過該dc呼叫drawtext()即可將想要顯示的文字在給定位置顯示,然而evc在cstatic、clistbox等一般控制元件下設定背景為透明色是不可行的,在糾纏了數個小時後,發現evc雖然不能簡單地設定背景模式為透明,卻可以設定背景顏色為一給定的顏色,最後還是採用“先擷取背景顏色,然後繪製文字,最後以原背景色設定為背景色”的方式解決。即:

kcolor( colorref ); //設定背景顏色

extcolor(colorref ); //設定字型顏色

text( … ); // 繪製文字

3. 模組功能的設計

在軟體設計的過程中,我深刻地體會到:一個模組對擴充套件是開放的,對修改是關閉的。在剛開始程式設計的時候,只是簡單地將一些應該實現的功能予以實現,以致於後來在得知ui有所變化時又得重新編寫程式碼浪費了較多時間,因此在進行軟體設計的時候必須考慮到軟體需求是一直在變更的。同時應當優先使用聚合,而不是繼承,否則就會出現類層次很深的問題,從而造成所謂的類爆炸。比如:在我進行各類自定義控制元件的設計過程中,將一些類剝離開來,在使用的時候直接定義各個類物件便可,從而避免了類層次過深的現象。

總而言之,來公司的這個月,是我最充實的一個月,在這裡學會的不僅僅是evc的mfc程式設計技能,更重要的是我學會了如何學習,體會到了一個產品應有的嚴謹(介面美觀、功能強大以及差錯率較小等)以及產品開發過程中問題考慮的周到充分。

在這裡我要感謝大家一個月對我無微不至的關懷與幫助!再次感謝!

第二篇:程式設計心得

由於大學的時候是網路方向的,沒大接觸程式設計,來到這個學校就開始自學c++,但是感覺不知道具體該做什麼。聽人說只學習c++的理論知識是不可能做出什麼實際的東西的,而且vc和c++不是一回事,“vc只是一個開發環境,mfc才是它的精華”,我就是一隻無頭蒼蠅,根本找不到學習程式設計的方向,因為導師沒有專案,我不知道從何做起,同學告訴我從具體的小例項開始做,可以用mfc視窗介面程式設計。於是我就在圖書館借了本這方面的書(mfc windows應用程式設計)。這種c++的高階應用,mfc跟以前的控制檯程式設計有比較大的差異,實現了部分視覺化程式設計。對我來說真的很難很難,這本書上面好多小例子都是可以實現的,我就按照上面的程式碼進行模仿著寫,實現之後感覺挺有成就感的,可是mfc的符號確實是很長很難記。但是我覺得如果按照大學裡學習c語言這門初級語言的方法來學習的話是很可怕的,就像我們學了十幾年的英語一樣,單詞背了幾千個,會做題,會寫作文,但是一碰到老外的時候,卻像啞巴和聾子,說不出聽不懂,我們最初學習c語言時就是搞懂每一個細節,在課本上糾錯,記住語法規則卻很少上機實踐,不解決實際問題,等到真正程式設計的時候,就不知如何下手了。

我個人感覺在學習mfc時msdn幫助文件特別重要,那些難記住的類,方法都可以檢視msdn library,很多程式碼可以直接複製貼上。

我是看孫鑫老師的教程學習的,但是感覺這個教程好難懂,好多東西都是理論知識,對實踐應用不是很大。

繪製視窗時會出現嚴重的刷屏問題,

問了解決這一問題,

通過改變背景點陣圖來替代過多的部分的重繪達到更好效果。

一個滿載的二維、三維陣列都可以用一個足夠長的一維陣列來裝下。 mfc基礎細節學習:學習了點陣圖的使用,cbrush類,cdc類,cdialog

類的基本使用,對於選單的設定初步瞭解了。

3、mfc程式設計的初步理解:通過自學瞭解到mfc程式設計的實現是通過建立訊息對映表來實現各個函式的呼叫。

(1)通過declare_message_map宣告訊息對映;

(2)通過begin_message_map和巨集end_message_map來包含訊息對映巨集, 建立訊息對映列表;

(3)為訊息處理函式新增程式碼,實現需要的響應。通過以上三大步實現訊息對映。每種對話方塊的操作要通過先建立相應的cdialog類來具體進行。

mfc程式設計只是一種工具,而程式設計的核心還是程式碼的實現。我們在使用mfc程式設計時要想學得更好就要不斷練習,更具體的瞭解其中的各種類、函式,各種工具,mfc是一個巨大的工具箱,但是如果不知道工具箱裡面的工具怎麼用,那在好的工具也無用武之地。所以,我認為此次程式設計小實習主要是讓我初步接觸了mfc如何實現視覺化程式設計。未來要想真正掌握mfc程式設計還要不斷的深入瞭解各種mfc工具,真正的與程式碼結合起來實現高效實用的程式設計效果. 最令我痛苦的是,學了一段時間回過頭來看,感覺好像什麼都沒學到。

api函式是windows提供給應用程式的程式設計介面, 任何使用者應用程式必須執行在api函式之上. 直接使用api程式設計是瞭解作業系統執行細節的最佳方式, 而且熟知api函式也是對程式開發者的一個最基本的要求. 這課程以api函式作為起點介紹windows程式設計, 使我撇開c++的特性專心熟悉win32程式設計思路和訊息驅動機制.

雖然mfc僅僅是對api函式的簡單封裝, 由於我之前對c++語言的瞭解不夠, 不清楚框架程式的工作機制, 即便是有經驗的程式設計師在mfc複雜的結構面前也顯得非常困惑. 他們會"用"mfc, 卻不知道為什麼這麼"用", 在執行程式出錯時這種現象帶來的問題就很明顯, 他們不會改.

其實,系統的學起來mfc還是比較清晰的,mfc工程程式肯定有兩個類,一個是cwnd類,另一個就是應用程式類cwinapp類。也就是必須有應用程式類,和視窗類。

在編寫mfc程式的過程中我也著實體驗到了mfc編寫程式的侷限性。mfc雖然給開發者提供了一個現成的框架,著實便利的開發者的開發。但同樣也造成了一個巨大的問題,開發者很難開發出具有個人特色的軟體,想要重新改寫程式整體的外觀就比較困難,並且c++在編寫程式時需要開發者自己定義變數的空間開闢和回收,這點上沒有java開發時來的方便,尤其是c++當中的指標機制,一不注意還是很容易造成程式錯誤的。

雖然mfc中的方法比較難寫,尤其是訊息對映函式,慶幸的是好多都不需要自己去寫,我們可以通過classwinzard類嚮導來指引我們進行選擇,想新增什麼訊息對映只需滑鼠操作即可。

通過mfc windows應用程式設計的學習,我掌握了一些知識: 應用程式類,框架視窗類,檢視類,文件類構成了mfc應用程式框架,框架的功能是通過各類之間的協調工作實現的類。

mfc採用文件/試圖結構來實現資料和資料表現的分離,文件試圖的分離有利於資料和資料表現的單獨改變。

mfc用類資訊儲存了動態建立類物件時所需要的訊息。

經過這門課程的學習不但使我掌握了windows應用程式設計的基本方法,還可以使我進一步深刻,全面地理解面向物件程式設計的思想,從而把握程式設計方法的發展方向。

第三篇:程式設計心得

農業決策支援系統交流演示心得體會

通過學習vb和農業資訊科技的有關知識,我們在老師的要求下編寫了有關農業決策支援系統的程式。vb是一門計算機程式語言,知識含量較高。vb中有基本控制元件、對話方塊、圖形、選單、檔案、程式設計綜合應用等設計方法,多文件介面、工具欄、狀態列的程式設計方法,資料庫、物件的連結和嵌入、多媒體控制元件以及常用的activex控制元件的應用。因為以前並沒有接觸vb這方面的知識,所以在整個操作過程中還是出現了不少的麻煩。有很多東西都需要翻閱書籍和詢問在行的人來完成,很慶幸最後的結果在我自己看來還是比較滿意的。

老師花了三四節的時間讓我們一個個演示,每個人都有自己的特色。雖然有的人做的比較簡單,但是大體框架還是挺不錯的,窗體達到個數,決策系統也符合標準,使用者介面也各有特色,既有可愛路線,又有深沉風格,邏輯性強。因為技術有限,所以大部分人的作品還是比較類似的。當然,也有技術含量比較高的作品,資料庫連結,視訊音樂,地圖放大鏡等等都包含其中。我心中的敬佩之情油然而生。我也深切感受到同學之間的差距,其中的少數幾個作品一展示出來,下面就驚歎聲四起,很多功能都是我們力所不能及,整個介面的繁雜性,條理性和層次性都需要很大的耐心。也存在一兩個作品,即使在我面前展示出來,我的理解能力還是有所欠缺。而在設計的背後,可能有些人只花了一兩天甚至還沒有這麼長時間就能做出比較有價值的高技術產品,而有些花了比別人多一倍甚至更長的時間都沒有達到這樣的效果,總結來說,砍柴需要磨刀工。當我還處於茫然階段的時期,我就開始操作,沒過多久我就止步不前。於是,我停下腳步,借閱了vb精彩程式設計百例。這對我程式設計的進一步擴充套件起到了比較重要的作用。於是,我的決策支援系統中也出現了播放器、打字效果、標題間隔出現等內容。可能我的設計離班級中比較牛的人來說還差一大截,但是對於我自己來講已經是一個比較大的突破。做程式一定要規範。我做的時候就想如果別人看,能不能懂。看懂了就算成功的。所以好的程式設計習慣和約定一定要學好。

通過這次的學習操作,武裝了我的腦袋,程式設計經驗及技巧也掌握了一些。整個過程讓我感覺到程式設計可不是一項輕鬆的活,尤其是一個人開發製作軟體時,工作量就多了。沒有一定的坐功、細心程度及耐性那是絕對做不到的。有時,把程式做完了需要除錯執行,但是就是不能達到自己設計的效果和目的,也許因為一個程式,你就得花上個十幾分鍾或者幾個小時。但是,越是這樣越不要灰心,應該放鬆心態,一點一滴的去查詢,往好的方面想十分鍛鍊我們的意志。相信以後回到社會這個大熔爐裡後也會派上用場的,說不定還能作為我們的收入呢!

第四篇:程式設計心得

1. 對於液晶點陣,做任何圖形的子函式,一定要注意,必須為整數,即畫素必須為整數,

否則將出現錯誤,比如劃三角形,必須讓三角形的斜率為直線,不然不能得到預期的結果。

2. 對於變數的定義,如果在條件語句裡面必須放在語句最前面,如果在整個函式的裡面,

必須放在整個函式的最前面。

3. gdb來除錯已經生成的可執行程式hello.命令如下:gdbhello ,引數-d指示原始碼所

在的目錄去搜尋。一旦出現gdb的命令提示符(gdb),就表明gdb已經準備好接收來自使用者的各種除錯命令了。如果想在除錯環境下執行這個程式,可以使用gdb提供的“run”命令,而程式在正常執行時所需的各種引數可以作為“run”命令的引數傳入,或者使用單獨的“set args”命令進行設定。如果在執行“run”命令時沒有給出任何引數,gdb將使用上一次“run”或“set args”命令指定的引數。如果想取消上次設定的引數,可以執行不帶任何引數的“set args”命令。

gdb是一個原始碼級的偵錯程式,使用“list”命令可以檢視當前除錯物件的原始碼。該命令的通用格式為“list [m,n]”,表示顯示從m行開始到n行結束的程式碼段,而不帶任何引數的“list”命令將顯示最近10行原始碼。

要根據行號設定斷點,可以使用“ break linenum”命令。要根據函式名設定斷點,則應該使用“break funcname”命令。

條件斷點允許當一定條件滿足時暫時停止程式的執行。它對於除錯來講非常有用。設定條件斷點的正確語法如下:

break linenum if expr

break funcname if expr

使用“continue”命令繼續執行程式,直到遇到下一個斷點。如果在除錯時設定了很多斷點,可以隨時使用“info breakpoints”命令來檢視設定的斷點。此外,開發人員還可以使用“delete”命令刪除斷點,或者使用“disable”命令來使設定的斷點暫時無效。被設定為無效的斷點在需要的時候可以用“enable”命令使其重新生效。

為了單步跟蹤程式碼,可以使用單步跟蹤命令“step”,它每次執行原始碼中的一行。

4、程式除錯過程中,如果出現segment,一般來說是指標沒有賦值,找不到原型。比如執行緒裡面如果要呼叫screen_mm,那麼必須傳遞引數screen_mm,而且需要線上程裡面定義引數。

5、如果執行緒裡面用到串列埠的操作,則最好把串列埠初始化程式放到執行緒裡面進行。也可以把初始化作成模組,這樣不會影響串列埠的收發資料。如果將串列埠初始化放到主程式裡面,則最後將初始化程式放線上程的屬性定義和建立執行緒之前,否則其他地方可能導致串列埠收發資料產生問題。還有對於串列埠操作的定義最好放在所有變數定義的最前面。

6、對於段錯誤這種問題。可以分析以下原因:

(1):指標非法,比如使用沒有初始化的指標(沒有為此指標指向的物件分配空間),或著free掉之後再次使用。

(2):陣列訪問越界,訪問的元素下標超過陣列圍長

(3):快取溢位,對於這種while(1) {do}的程式,這個問題最容易發生,多此sprintf或著strcat有可能將某個

buff填滿,溢位,所以每次使用前,最好memset一下,不過要是一開始就是段錯誤,而不是運行了一會兒出現的,(3)的可能性就比較小。

第五篇:程式設計實習說明書要求

內容要求:

1 問題描述

1.1 設計任務及要求

1.2 問題理解和分析:寫需求分析

1.3 開發環境介紹

2 題目設計及實現

2.1 總體設計:模組劃分,有功能模組圖

2.2資料庫設計:資料庫的表結構,最好帶e-r 圖

2.3詳細設計(每個模組的功能、介面和演算法,不能只寫程式碼) 3系統測試(自己系統的測試,寫明測試用例和測試截圖,不能都是測試的概念)

4設計總結(關於系統的總結 ,不能和任務書上的一樣) 5參考文獻(十本書)

排版要求:

一級題目:宋體小三加粗

二級題目:宋體四號加粗

三級題目:宋體小四加粗

正文:宋體小四

表名、表內容、圖例和參考文獻宋體五號字

全文行距固定值20磅,每一章另起一頁

參考文獻例子

[1] 劉彬彬,馬文強.eclipse應用開發完全手冊.北京:人民郵電出版社,2014年9月.

字數要求:一萬字

標籤:程式設計 實習