《《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》實(shí)驗(yàn)教學(xué)大綱》由會(huì)員分享,可在線閱讀,更多相關(guān)《《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》實(shí)驗(yàn)教學(xué)大綱(5頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、
《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》實(shí)驗(yàn)教學(xué)大綱
課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
(Object-oriented Programming Pratice)
課程代碼:1021588006
學(xué)分/總學(xué)時(shí):3 / 48
開課單位:物理與電子信息工程學(xué)院
面向?qū)I(yè):計(jì)算機(jī)科學(xué)與技術(shù)
一、課程的性質(zhì)、目的和任務(wù)
本課程是《面向?qū)ο蟪绦蛟O(shè)計(jì)A(C++)》的配套課程,屬獨(dú)立設(shè)課的實(shí)踐性課程。通過本課程的學(xué)習(xí),使學(xué)生能深刻理解面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,熟練運(yùn)用C++的集成開發(fā)環(huán)境設(shè)計(jì)C++應(yīng)用軟件。
本課程的內(nèi)容分基本課程設(shè)計(jì)和擴(kuò)展課程設(shè)計(jì)兩塊。基本課程設(shè)計(jì)部分為必修內(nèi)容,教學(xué)目標(biāo)是讓
2、學(xué)生對(duì)封裝、繼承、多態(tài)等程序設(shè)計(jì)思想實(shí)質(zhì)有一個(gè)深刻的領(lǐng)會(huì),對(duì)應(yīng)用軟件的設(shè)計(jì)過程和方法有一個(gè)基本的了解。擴(kuò)展設(shè)計(jì)部分為選修內(nèi)容,教學(xué)目標(biāo)是通過應(yīng)用軟件的設(shè)計(jì),全面建立面向?qū)ο蟪绦蛟O(shè)計(jì)思維,牢固掌握應(yīng)用軟件的設(shè)計(jì)思想、方法和技術(shù)。
二、學(xué)習(xí)本課程學(xué)生應(yīng)掌握的前設(shè)課程知識(shí)
計(jì)算機(jī)組成原理,C語言程序設(shè)計(jì)。
三、項(xiàng)目及學(xué)時(shí)分配
序號(hào)
項(xiàng)目名稱
時(shí)數(shù)
項(xiàng)目類別
項(xiàng)目類型
要求
每組
人數(shù)
課內(nèi)
課外
1
基本課程設(shè)計(jì)
20
10
專業(yè)基礎(chǔ)
設(shè)計(jì)研究
必做
1
2
擴(kuò)展課程設(shè)計(jì)
28
20
專業(yè)基礎(chǔ)
設(shè)計(jì)研究
必做
1
填表說明:
(1)“項(xiàng)目
3、類別”項(xiàng)請(qǐng)?zhí)顚懀孩倩A(chǔ);②專業(yè);③專業(yè)基礎(chǔ);
(2)“項(xiàng)目類型”項(xiàng)填寫要求:
“實(shí)驗(yàn)課程”請(qǐng)?zhí)顚懀孩?驗(yàn)證性;②?綜合性;③?設(shè)計(jì)研究;④其他;
“課程設(shè)計(jì)”請(qǐng)?zhí)顚懀孩?驗(yàn)證性;②?綜合性;③?設(shè)計(jì)研究;④其他;
“實(shí)訓(xùn)課程”請(qǐng)?zhí)顚懀孩?基本實(shí)訓(xùn);②?綜合實(shí)訓(xùn);③?設(shè)計(jì)開發(fā);
(3)“要求”項(xiàng)請(qǐng)?zhí)顚懀孩俦刈?;②選做;
四、教學(xué)方法
根據(jù)理論課程的算法、方法學(xué)和語法知識(shí),在指定的集成開發(fā)環(huán)境上完成實(shí)課程設(shè)計(jì)要求的軟件開發(fā)。如果學(xué)生遇到問題,教師給予指導(dǎo)。
實(shí)驗(yàn)課程中間穿插幾次操作抽查和運(yùn)行效果抽查,并及時(shí)反饋給學(xué)生。對(duì)學(xué)生課程設(shè)計(jì)普遍存在的問題,給予統(tǒng)一的講解。
對(duì)課程設(shè)計(jì)中需
4、要用到的基本技能,通過實(shí)驗(yàn)教程加以簡(jiǎn)單講解的方式,布置給學(xué)生自由安排時(shí)間進(jìn)行,并抽查訓(xùn)練效果。
五、教學(xué)內(nèi)容及要求
實(shí)驗(yàn)一 基本課程設(shè)計(jì)
教學(xué)目的:
1、(IDE層)熟練掌握Windows會(huì)話界面和對(duì)話框的設(shè)計(jì);運(yùn)用類向?qū)гO(shè)計(jì)類;運(yùn)用調(diào)試跟蹤器調(diào)試代碼。
2、(語法層)綜合運(yùn)用C/C++的純虛函數(shù)、抽象類、多態(tài)、靜態(tài)成員、動(dòng)態(tài)內(nèi)存分配等語法知識(shí)編寫C++代碼。
3、(方法學(xué)層)運(yùn)用類的封裝、派生和多態(tài)等面向?qū)ο蟮某绦蛟O(shè)計(jì)思想進(jìn)行應(yīng)用系統(tǒng)的設(shè)計(jì)。
4、(算法層)了解有關(guān)指針數(shù)組的算法。
教學(xué)要求:
1、開發(fā)一個(gè)基于對(duì)話框的Windows應(yīng)用程序,進(jìn)行大學(xué)人的建立、名單
5、顯示和卡片輸出。
2、大學(xué)人的類型有教師、學(xué)生、行政人員和工人。
3、卡片的輸入用模式對(duì)話框,卡片的輸出用非模式對(duì)話框。
高級(jí)要求:
1、卡片的刪除。
2、卡片的修改。
3、卡片的文件保存與打開。
教學(xué)時(shí)數(shù):20
主要設(shè)備:
1、微機(jī)一臺(tái)
2、Visual C++集成開發(fā)環(huán)境
實(shí)驗(yàn)內(nèi)容:
1、建立一個(gè)基于對(duì)話框的應(yīng)用程序。
1.1 創(chuàng)建一個(gè)Project,類型為“MFC AppWizard (exe)”,Location選E盤,Project name取名PolyUniversity。
1.2 應(yīng)用程序框架類型選“Dialog based”,即創(chuàng)建一個(gè)基于對(duì)話框的應(yīng)
6、用程序。
1.3 打開Workspace的資源(Resource)頁,選對(duì)話框IDD_POLYUNIVERSITY_DIALOG,右擊,選Properties,將標(biāo)題改成學(xué)號(hào)和姓名。
2、通過控件面板,設(shè)計(jì)界面,有輸入按鈕、列表框顯示名單按鈕、總?cè)藬?shù)文本框、卡片顯示按鈕。
3、設(shè)計(jì)一個(gè)大學(xué)人類University及其派生類Teacher,Administrator,Student和Worker。University是抽象類。University類有靜態(tài)數(shù)據(jù)成員count,用于對(duì)象的計(jì)數(shù)。
3.1 通過ClassView向?qū)У摹癗ew class…”創(chuàng)建University類。
3.2
7、 給University類添加如下數(shù)據(jù)成員.
3.3 添加University類的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)和析構(gòu)函數(shù),實(shí)現(xiàn)時(shí)都要對(duì)m_nCount進(jìn)行適當(dāng)?shù)?+或—運(yùn)算,以保證對(duì)象的正確計(jì)數(shù)。
3.4 添加University類的靜態(tài)成員函數(shù)和純虛函數(shù).
3.5 由University類派生出Teacher、Administrator、Student和Worker四個(gè)派生類。
3.6 Teacher、Administrator、Student和Worker四個(gè)派生類都新增適當(dāng)?shù)臄?shù)據(jù)成員。
3.7 Teacher、Administrator、Student和Worker四個(gè)派生類都新增構(gòu)
8、造函數(shù)、重載的虛函數(shù)CString Print() const函數(shù)。
4、在對(duì)話框類的聲明文件PolyUniversityDlg.h中創(chuàng)建私有的數(shù)據(jù)成員:University指針數(shù)組和總?cè)藬?shù)。
5、在對(duì)話框類的構(gòu)造函數(shù)中創(chuàng)建三個(gè)大學(xué)人對(duì)象:一個(gè)Student,兩個(gè)Worker。
6、通過ClassWizard給控件IDC_LIST_UNIVERSITY添加Control型數(shù)據(jù)成員m_listUniversity,給控件IDC_STATIC_COUNT添加Control型數(shù)據(jù)成員m_staticCount。
7、實(shí)現(xiàn)輸入按鈕,增加一個(gè)大學(xué)人。以教師類為例,步驟如下。
7.1 創(chuàng)建輸入教
9、師的對(duì)話框IDD_ADDTEACHER,標(biāo)題為“添加教師”,類名為CDlgAddTeacher。添加靜態(tài)文本框“姓名”、“年齡”、“職稱”和編輯框IDC_EDIT_NAME, IDC_EDIT_AGE, IDC_EDIT_FELLOWSHIP。
7.2 添加Value型的數(shù)據(jù)成員m_strName, m_nAge, m_strFellowship,用于對(duì)話框數(shù)據(jù)交換。
7.3 實(shí)現(xiàn)OnOK()代碼,保存教師數(shù)據(jù)。即在CDialog::OnOK()前面加UpdateData函數(shù):
7.4 在主對(duì)話框PolyUniversityDlg中創(chuàng)建“添加教師”的單擊消息響應(yīng)函數(shù)OnButtonAdd
10、teacher()。
8、創(chuàng)建對(duì)話框資源IDD_CARD,用于顯示大學(xué)人卡片。
8.1 打開Workspace的ResourceView頁,右擊Dialog,選“Insert Dialog”。
8.2 右擊對(duì)話框,選“Properties”,將ID改為IDD_CARD,標(biāo)題為“大學(xué)人卡片”。
8.3 刪掉“OK”和“Cancel”兩個(gè)按鈕,加靜態(tài)文本框控件IDC_STATIC_CARDCONTENT。將靜態(tài)文本框控件尺寸改成最大,占滿整個(gè)對(duì)話框。
9、實(shí)現(xiàn)“顯示卡片”功能,用非模式對(duì)話框輸出所有大學(xué)人卡片。
9.1 在主對(duì)話框類的聲明文件UniversityDlg.h中創(chuàng)建對(duì)話框的
11、指針或數(shù)組。
9.2 在主對(duì)話框類的“輸出卡片”的消息響應(yīng)函數(shù)中建立非模式對(duì)話框并顯示卡片內(nèi)容。
10、實(shí)現(xiàn)“關(guān)閉卡片”功能,關(guān)閉并刪除所有非模式對(duì)話框。
實(shí)驗(yàn)2 擴(kuò)展課程設(shè)計(jì)
教學(xué)目的:
1、(IDE層)熟練掌握Windows會(huì)話界面和對(duì)話框的設(shè)計(jì);運(yùn)用類向?qū)гO(shè)計(jì)類;運(yùn)用調(diào)試跟蹤器調(diào)試代碼。
2、(語法層)綜合運(yùn)用C/C++的純虛函數(shù)、抽象類、常數(shù)據(jù)成員、動(dòng)態(tài)內(nèi)存分配等語法知識(shí)編寫C++代碼。
3、(方法學(xué)層)運(yùn)用類的封裝、派生等面向?qū)ο蟮某绦蛟O(shè)計(jì)思想進(jìn)行應(yīng)用系統(tǒng)的設(shè)計(jì)。
4、(算法層)對(duì)象狀態(tài)的維護(hù)算法。
教學(xué)要求:
1、開發(fā)一個(gè)單文檔/視圖的Windows應(yīng)
12、用程序,開始狀態(tài)為一個(gè)極大化的窗口。
2、具有動(dòng)畫游戲功能,將最大化窗口分成若干個(gè)小塊,一開始“貪吃蟲”位于中心位置,靜止不動(dòng)。按下任意一個(gè)箭頭鍵后開始朝指定方向爬動(dòng),繼續(xù)按箭頭鍵可以改變爬動(dòng)方向。
高級(jí)要求:
1、運(yùn)動(dòng)速度可變。
2、碰避時(shí)游戲停止,自咬時(shí)游戲停止。
3、隨機(jī)出現(xiàn)食物,蟲子吃進(jìn)一個(gè)食物時(shí)變長(zhǎng)。
4、游戲可保存、可繼續(xù)。
5、能計(jì)分。
教學(xué)時(shí)數(shù):28
主要設(shè)備:
1、微機(jī)一臺(tái)
2、Visual C++集成開發(fā)環(huán)境
實(shí)驗(yàn)內(nèi)容:
1、建立一個(gè)單文檔/視圖的的應(yīng)用程序。
1.1 創(chuàng)建一個(gè)Project,類型為“MFC AppWizard (exe)”,Lo
13、cation選E盤,Project name取名GreedyWorm。
1.2 應(yīng)用程序類型選“Single document”。再點(diǎn)擊Finish完成創(chuàng)建。
2 界面參數(shù)設(shè)置。
2.1 打開視圖類的GreedyWormView.h頭文件,以保護(hù)成員添加一個(gè)表示小格子尺寸的常數(shù)據(jù)成員。
2.2 再在GreedyWormView.h頭文件,以保護(hù)成員添加必要的界面相關(guān)數(shù)據(jù)。
2.3 再在GreedyWormView.h頭文件,以保護(hù)成員添加一個(gè)表示游戲是否啟動(dòng)的標(biāo)志。
2.4 在GreedyWormView的構(gòu)造函數(shù)中初始化上述數(shù)據(jù)。
3 界面初始圖。
3.1 打開應(yīng)用程序類的G
14、reedyWorm.cpp源文件,將CGreedyWormApp::InitInstance()中的代碼修改為m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED)。
3.2 打開視圖類的OnDraw函數(shù),計(jì)算總塊數(shù)和初始?jí)K位置。
3.3 定義畫筆、畫刷等。
3.4 進(jìn)行初始畫圖。
3.5 最后在OnDraw中形成執(zhí)行代碼(必須在m_bStart為假時(shí)執(zhí)行這些代碼)。
4 鍵盤控制與動(dòng)畫。
4.1 給視圖類定義定時(shí)器消息WM_TIMER的消息響應(yīng)函數(shù)OnTimer()。
4.2 再點(diǎn)“Edit Code”,編輯OnTimer()的實(shí)現(xiàn)代碼,使程序每過一定
15、的時(shí)間間隔,清除原位置的塊,按當(dāng)前方向移動(dòng)一個(gè)位置,再在新位置重畫一個(gè)塊,從而產(chǎn)生動(dòng)畫效果。
4.3 通過ClassWizard給視圖類添加鍵盤消息的消息響應(yīng)函數(shù)OnKeyDown(),捕獲當(dāng)前按下的方向鍵。
5 功能完善。
5.1 按箭頭后,蟲子開始爬動(dòng),但發(fā)現(xiàn)留有痕跡,通過在OnTimer()函數(shù)中添加代碼清楚痕跡。
5.2 其它功能的完善(如碰壁檢測(cè)、自咬檢測(cè)、食物出現(xiàn)、吃食變長(zhǎng)、變快)。
六、主要教材(指導(dǎo)書)及參考用書
1、教材:《C++實(shí)驗(yàn)教程》,胡明曉(自編教材)。
2、參考書目:
[1]《C++語言程序設(shè)計(jì)(第4版)》,鄭莉、董淵、何江舟編著,北京:清華
16、大學(xué)出版社,2010
[2]《Visual C++簡(jiǎn)明教程》,鄧力編著,北京:海洋出版社,2001
[3][美]Harvey M. Deitel, Paul James Deitel著,邱仲潘等譯,《C++大學(xué)教程(第二版)》,北京:電子工業(yè)出版社,2001
3、其他參考資料:
[1] (MSDN在線幫助)
七、考核與成績(jī)?cè)u(píng)定
考核方式:實(shí)驗(yàn)態(tài)度+實(shí)驗(yàn)預(yù)習(xí)+實(shí)驗(yàn)報(bào)告+實(shí)驗(yàn)抽查和考試。
成績(jī)?cè)u(píng)定方法:實(shí)驗(yàn)態(tài)度10%,實(shí)驗(yàn)預(yù)習(xí)10%,實(shí)驗(yàn)報(bào)告30%,實(shí)驗(yàn)抽查和考試50%。
八、其他說明
九、編制與審核
編制人: 胡明曉 審核人:
2012年12月22日 年 月 日
5