面向對象程序設計語言實訓計劃書.doc
《面向對象程序設計語言實訓計劃書.doc》由會員分享,可在線閱讀,更多相關《面向對象程序設計語言實訓計劃書.doc(19頁珍藏版)》請在裝配圖網上搜索。
南昌理工學院 Nanchang Institute of Technology 課程實訓計劃書 系 部: 計算機信息工程 適應專業(yè): 計算機科學與技術、軟件工程、網絡工程 適應班級: 12級軟件工程1、2班、 實訓課程: 面向對象程序設計語言 計劃制定人:宋慶忠 實訓地點: 實驗樓306 實訓日期: 2013年12月9日~2013年12月20日 計算機信息工程學院 2013年12月 目 錄 一、課程實訓目的 1 二、基本要求 1 三、指導教師安排 1 四、課程實訓環(huán)節(jié)安排 1 五、課程實訓任務 2 (一)課程實訓要求及內容 2 (二)課程實訓考核指標及方法 2 (三)課程實訓題目 3 題目一:計算幾何圖形 3 題目二 :學生的各門成績和專業(yè)成績 4 題目三:用虛函數(shù)求幾何面積 4 題目四:郵寄物品費用 5 題目五:繼承下的幾何面積 6 題目六:雇員工資 6 題目七:日期時間,時鐘類的編制 ( 電子鐘程序 ) 題目八:日期類的編制 (萬年歷程序) 題目九:設計一個點類Point,實現(xiàn)點對象之間的各種運算 ( 平面直角座標系中點的運算) 題目十:設計一個復數(shù)類complex,實現(xiàn)點復數(shù)對象之間的加、減、乘運算 ( 復數(shù)的運算 ) 題目十一:虛基類的使用:(職工管理系統(tǒng)中的類的模型) 題目十二:模板的使用: ( 通用排序程序的實現(xiàn) ) 題目十三:設計字符串類 MyString:(基本類型擴展—字符串類) 題目十四:抽象類與純虛函數(shù)的使用:( 各種圖形的周長及面積計算程序實現(xiàn) ) 題目十五:隊列的實現(xiàn):(隊列的實現(xiàn)) 題目十六:學生成績管理系統(tǒng): 題目十七: 銀行賬戶管理系統(tǒng)(單個賬戶的處理): 題目十八:通信錄(最大記錄1000條): 題目十九:人員信息管理系統(tǒng): 題目二十:鏈表類的實現(xiàn): 題目二十一:棧類的實現(xiàn)(計算器程序): 《面向對象程序設計語言》課程實訓計劃書 一、課程實訓目的 根據(jù)所學C++ “基類”、“派生類”、“虛基類”、“多態(tài)繼承”、“虛函數(shù)”等面向對象程序設計的相關知識和多重繼承關系、繼承權限、賦值兼容的定義與使用規(guī)則,進行相應的程序設計訓練,在實訓編題過程中要盡量把已學的C++知識應用到編程的實際使用中去,熟悉、掌握這些知識在程序中的運行、調用機理和實現(xiàn)方法。通過訓練對如何進行面向對象程序設計的方式方法有一個更深入的理解和認識,進一步鞏固C++程序設計的基本知識和實現(xiàn)方法。 二、基本要求 要求學生認真對待本次課程實訓,積極利用機房、網絡資源,熟練掌握程序設計的方法和C++語言基本技能進行實訓操作,具備一定的程序設計能力。在課程實訓中聽從指導教師的安排,認真完成老師布置的各項任務,并以小組為單位,上交課程實訓報告。 三、指導教師安排 指導教師:宋慶忠 四、課程實訓環(huán)節(jié)安排 班級 時間 指導教師 12軟件工程1班 第15周 宋慶忠 12軟件工程2班 第16周 宋慶忠 五、課程實訓任務 (一)課程實訓要求及內容 設計要求: 1、可自己選定一題目,可以自由搭配,最多4人一組。 2、模塊化程序設計。 3、鋸齒型書寫格式。 4、本次實訓各題都有可能不同程度地使用到虛基類、虛函數(shù)、純虛函數(shù)和抽象類等相關技術。 5、每一種計算和輸出都應分成兩個不同的函數(shù)進行處理(不能因簡單而合成一個函數(shù))。 6、每個題目在設計類的同時,都要設計相應的成員變量、函數(shù)、構造函數(shù)、析構函數(shù)(如有必要)。 7、必須上機調試通過。 報告要求: 1、選題要求與目的 2、算法分析、流程圖模塊功能說明(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調用關系描述等) 3、源程序清單要包括相應的注釋 4、調試結果與調試數(shù)據(jù) 5、程序中遇到的問題及解決方案 (二) 課程實訓時間安排 1.分析設計準備階段 周一:上午:分組,分析題目,查閱資料;地點:教室、圖書館、機房。 下午:需求分析:對給定的問題提出解決的辦法和思路。運用抽象的方法設計類及實現(xiàn)算法。地點:機房。 周二:設計題目:畫出主要模塊流程圖,用UML圖確定類之間的聯(lián)系,用自頂向下的方法創(chuàng)建主程序和子程序,控制對象間的相互作用,編制源程序,形成分析報告。(指導教師將在第一次上機調試時抽查分析報告) (UML類圖的描述參照有關資料,用類圖描述程序中類與類之間的關系,模塊圖以傳統(tǒng)流程圖或NS流程圖形式均可,這是課程實訓報告書中主要內容之一) 2.編程調試階段 周三:上機調試程序,不斷完善程序及分析報告。 課程實訓中,每位同學一臺微機進行上機調試。 學生自備存儲設備 :存儲調試程序,最終調試程序及結果要求打印出來,附在課程實訓報告書相應位置處。 3.總結報告和書寫說明書階段 周四:編寫課程實訓報告(電子文檔) 課程實訓報告書中:課程實訓總結、參考文獻,要獨立一頁。 4.課程實訓報告完成階段 周五:以組為單位上交課程實訓報告,指導教師對每組課程實訓報告給出評語及成績 (三)課程實訓考核指標及方法 考核方法 1、 根據(jù)平時上機考勤;注重平時上機成績,教師要不定期檢查學生進度,學生不得以自己有私人電腦為借口而不來上機。 2、 根據(jù)程序設計界面和運行結果。 3、 根據(jù)《C++語言課程實訓報告》描述和書寫情況。 4、 根據(jù)指導老師的指導情況和意見。 以上四項缺一不可,否則不能到得相應學分。 考核指標: 優(yōu)秀:嚴格遵守上機規(guī)則,獨立完成作業(yè);程序模塊完整,功能齊全,界面新穎獨特;回答問題流利,有見解;上機報告認真、規(guī)范;程序代碼要完整。 良好:遵守上機規(guī)則,獨立完成作業(yè);程序模塊完整,功能齊全;回答問題流利;上機報告認真、規(guī)范;程序代碼要完整。 中等:遵守上機規(guī)則,獨立完成作業(yè);程序模塊完整,運行結果正確;回答問題流利;上機報告認真、規(guī)范;程序代碼要完整。 及格:遵守上機規(guī)則,獨立完成作業(yè);程序結果正確;答辯通過;上機報告認真規(guī)范。 不及格:上機不認真;程序未調試完成或結果不正確;答辯未通過;上機報告不認真。 (四)課程實訓題目 利用學到的編程知識和編程技巧,通過布置具有一定難度的程序設計題目,讓學生自己到圖書館查閱資料或網上咨詢獨立完成程序的編寫,并能運用學過的技巧獨立上機調試完成。 設計題目一: Shape Circle Diamond Square Cylinder 設計一個基類Shape,派生出正方形Squar類,菱形Diamond類和圓形Circle類,再從圓形派生出圓柱體Cylinder類。使用相關編程方法求出各幾何圖形的周長、面積、體積。 題目二 : 設置一個學生成績的基類Scor,該類中有學生的學號num、姓名nam和基礎課數(shù)學math、語文chin成績,并可算出基礎課的最高成績max_sco。 設置一個計算機專業(yè)的派生類Comp,該類中有學生專業(yè)課的程序設計prog、數(shù)據(jù)庫data成績;設置一個建筑專業(yè)的派生類Buil,該類中有學生專業(yè)課的建筑設計desi、材料學mater成績;上述兩個專業(yè)派生類都可算出各門專業(yè)課的成績排序。 設置一個教務派生類Acad,該類中有不少于5人計算機專業(yè)學生的成績和不少于5人建筑專業(yè)學生的成績。 Scor Comp Buil Acad 設置一個專門計算成績的類 要求:輸出每個學生的各門成績,輸出兩個專業(yè)基礎課的最高成績, 輸出兩個專業(yè)各門專業(yè)課的平均成績。 (提示:可用虛基類、友元成員函數(shù)) 題目三: Shape TwoShape ThreeShape Circle Rectangle Ball RecVolume 設計一個抽象圖形類Shape(基類),提供兩個純虛函數(shù); 由Shape類派生出TwoShape二維圖形類,增加了兩個數(shù)據(jù)成員(二維圖形設有體積); 再由Shape類派生出ThreeShape三維圖形類,增加了三個數(shù)據(jù)成員; TwoShape類派生出Circle圓類和Rectangle矩形類; ThreeShape類派生出Ball球類和RecVolume長方體類。 分別求出以上個圖形的面積(或體積)。 題目四: Post Book Jour Auth Cul_pro 1、設置一個郵局的基類Post,該類中有計算所寄印刷品prin的份數(shù)numb和計算所寄印刷品的郵寄費cost。 2、設置一個書籍派生類Book,該類中有書名titl和出版社press, 該類通過郵局寄出書籍2本,輸出郵寄費cost; 同時再設置一個作者派生類Auth,該類中有姓名name和書號isbn,該類作為書籍派生類輔助類。 3、設置一個期刊派生類Jour,該類中有期刊名稱jou_na和期刊月份jou_mon, 該類通過郵局寄出期刊3本,輸出輸出郵寄費cost。 4、設置一個文化品派生類Cul_pro,該類中要郵寄3本書和2本期刊, 在郵寄時要有寄出單位sen_un。 要求:輸出每本書的作者名、書名、書號和出版社信息,輸出每份期刊的名稱和期刊月份信息,輸出兩種印刷品的各自的份數(shù)和郵寄費,輸出兩種印刷品的的總份數(shù)和總郵寄費。 題目五: Shape Circle Ball Taper Cylinder 設計一個基類Shape,派生出圓形Circle類,再分別派生出圓球類Ball,圓錐類Taper、圓柱類Cylinder使用相關編程方法求出圓的面積、其他幾何圖形的表面積和體積。 題目六: employee technician salesman manager salesmanager 設計一個雇員類emplyee(基類),由基類派生出兼職技工類technician,再由基類派生出部門經理類manager、銷售人員類salesman,由后兩個類派生出銷售經理salesmanager。 1、technician的工資=holy(工時費)woho(工時) 2、manager的工資=moly(月固定工資8000) 3、salesman的工資=sales(銷售總額)com(績效率0.04) 4、Salesmanager的工資=moly(5000)+salescom(0.005) 求出各名雇員的工資。 設計題目七: 日期時間,時鐘類的編制 ( 電子鐘程序 ) 設計技術參數(shù) 編寫一個有關日期(年、月、日)和時間(時、分、秒)的程序。該程序建立三個類,其中一個是日期的類Date,一個是時間的類Time,另一個是日期和時間類DateTime,它是前面兩個 類為基類的派生類。 對每個類要分別編寫默認構造函數(shù)與帶有參數(shù)的構造函數(shù)以完成對象的初始化 設計好類中成員的訪問控制屬性 應提供相應函數(shù)能對類中數(shù)據(jù)成員進行設置與讀取 在描述類的派生過程中,注意繼承方式 以下為類的主要結構(學生可以參考): (已知 typedef char string80[80];) Date類:包含數(shù)據(jù)成員 int Year,Month,Day; string80 Datestr ; // 利用年月日成員生成的字符串 函數(shù)成員 string80 & GetStringDate( ) // 取得一個字符串類型的日期 void SetDate(int y,int m,int d) //設置日期函數(shù) Time類:包含數(shù)據(jù)成員 int Hours,Minutes,Seconds; string80 Timestr; 函數(shù)成員 void SetTime(int h,int m,int s) // 設置當前時間 string80 & GetStringTime() // 取得一個字符串類型的時間 日期和時間類DateTime string80 & GetStringDT() // 生成字符串 日期與時間 設計題目八: 日期類的編制 (萬年歷程序) 設計技術參數(shù) 設計一個日期類Date,包括年、月、日等私有數(shù)據(jù)成員。要求實現(xiàn)日期的基本運算,如一日期加上天數(shù)、一日期減去天數(shù)、兩日期相差的天數(shù)等(假定輸入日期數(shù)據(jù)是合法的,考慮閏年的情況)。 在Date類中設計如下重載運算符函數(shù): Date operator+(int days); 返回一日期加一天數(shù)得到的日期 Date operator-(int days); 返回一日期減去天數(shù)得到的日期 int operator-(Date &b); 返回兩日期相差的天數(shù) 在實現(xiàn)這些重載運算符函數(shù)調用以下私有成員函數(shù): leap(int); 判斷指定的年份是否為閏年 dton(Date &); 將指定日期轉換為從0年0月0日起的天數(shù) ntod(int); 將指定的0年0月0日起的天數(shù)轉換為對應的日期 數(shù)據(jù)成員為:int year,month,day; 設計題目九: 設計一個點類Point,實現(xiàn)點對象之間的各種運算 ( 平面直角座標系中點的運算) 設計技術參數(shù) :Point類提供了4個運算符重載函數(shù),以實現(xiàn)相應的運算。 在Point類中設計如下重載運算符函數(shù)及相應成員函數(shù): void offset(int,int); // 提供對點的偏移 void offset(Point); // 重載,偏移量用Point類對象表示 bool operator==(Point); // 運算符重載,判斷兩個對象是否相同 bool operator!=(Point); // 運算符重載,判斷兩個對象是否不相同 void operator+=(Point); // 運算符重載,將兩個點對象相加 void operator-=(Point); // 運算符重載,將兩個點對象相減 int getx(){return x;} // 得到點座標x int gety(){return y;} // 得到點座標y void disp() // 顯示點座標 設計題目十: 設計一個復數(shù)類complex,實現(xiàn)點復數(shù)對象之間的加、減、乘運算 ( 復數(shù)的運算 ) 設計技術參數(shù) :complex類提供了3個運算符重載函數(shù),以實現(xiàn)相應的運算 u complex(double r=0.0,double i=0.0) //構造函數(shù) u complex operator + (complex c2); //運算符+重載成員函數(shù) u complex operator - (complex c2); //運算符-重載成員函數(shù) u complex operator * (complex c2); //運算符*重載成員函數(shù) u void display(); //輸出復數(shù) bool operator != (complex c2); //運算符!=重載成員函數(shù) bool operator == (complex c2); //運算符==重載成員函數(shù) 設計題目十一: 虛基類的使用:(職工管理系統(tǒng)中的類的模型) 設計技術參數(shù) 設計一個虛基類base,包含姓名和年齡私有數(shù)據(jù)成員以及相關的成員函數(shù),由它派生出領導類leader,包含職務和部門私有數(shù)據(jù)成員以及相關的成員函數(shù)。再由base派 生出工程師類engineer,包含職稱和專業(yè)私有數(shù)據(jù)成員以及相關的成員函數(shù)。然后由ledaer和engineer類派生出主任工程師類chairman。采用一些數(shù)據(jù)進行測試。 由于chairman類從leader類和engineer類派生,而leader類和engineer類都是從base類派生的,所以為了使base只存一個副本,必須采用虛擬派生的方法。 設計好類中成員的訪問控制屬性 應提供相應函數(shù)能對類中數(shù)據(jù)成員進行設置與讀取 base 類結構 數(shù)據(jù)成員:char* name;// 姓名 int age; // 年齡 函數(shù)成員:void setname(char na[ ] ) void setage(int a) char* getname( ) int getage() leader 類結構: 數(shù)據(jù)成員: char *job;//職務 char *dep;//部門 函數(shù)成員: void setjob(char jb[ ]) void setdep(char dp[ ]) char *getjob( ) char *getdep( ) engineer 類 與chairman類 學生按要求聲明,類中應有對應成員函數(shù)對數(shù)據(jù)成員進行處理。 設計題目十二: 模板的使用: ( 通用排序程序的實現(xiàn) ) 設計技術參數(shù) 設計一個類模板Sample,包含具有Max個元素的任意類型一維數(shù)組的一維數(shù)組A。 其數(shù)據(jù)成員:T A[Max]; int n; // 數(shù)組A中現(xiàn)有n個元素已有值 設計如下成員函數(shù)完成特定功能 Sample() // 構造函數(shù) ,初始化A數(shù)組元素個數(shù)為0 void disp( ) ; // 輸出A數(shù)組各元素的值 void SelectionSort ( ) ; // 選擇排序算法對A數(shù)組進行降序排序 void InsertionSort() ; // 插入排序算法對A數(shù)組進行升序排序 void getdata( ) ; // 用戶輸入數(shù)組A元素個數(shù),并對各元素初始化 設計題目十三: 設計字符串類 MyString:(基本類型擴展—字符串類) 設計技術參數(shù) 具有構造函數(shù)、析構函數(shù)、拷貝構造函數(shù)。重載運算符+、=、[ ]、+=,盡可能地完善它,使之能滿足各種需要 設計題目十四: 抽象類與純虛函數(shù)的使用:( 各種圖形的周長及面積計算程序實現(xiàn) ) 設計技術參數(shù) shape 為抽象類函數(shù)。 其數(shù)據(jù)成員:double r; 設計如下成員函數(shù)完成特定功能 shape(double x) ; // 構造函數(shù) virtual void area()=0; //純虛函數(shù) ,面積計算函數(shù) virtual void peri()=0;//純虛函數(shù) ,周長計算函數(shù) 要求:由類shape 派生出如下類 circle //聲明一個圓派生類 square //聲明一個正方形派生類 ex_square //聲明一個圓外切正方形派生類 重新定義虛函數(shù)peri( )、area( )在上述三個類的版本,以實現(xiàn)在不同類中計算對應形狀的周長與面積 設計題目十五: 隊列的實現(xiàn):(隊列的實現(xiàn)) 設計技術參數(shù) queue 為隊列類模板。 其數(shù)據(jù)成員: Type size; Type start; Type end; Type *data; 設計如下成員函數(shù)完成特定功能 queue( ); queue(Type n); // 構造函數(shù) ,完成隊列最大長度,初始隊尾與隊首指針,創(chuàng)建隊列的操作 ~queue( ) // 析構函數(shù),完成隊列的清理工作,清理由堆內存分配的數(shù)據(jù) void put(Type value); // 往隊尾加入數(shù)據(jù) Type get( ) ; // 從隊首彈出數(shù)據(jù) void clear(); // 清空隊列 void ShowQueue(); // 顯示隊列中所有數(shù)據(jù) 主函數(shù)的要以菜單形式,完成隊列的各種操作 設計題目十六: 學生成績管理系統(tǒng): 設計一個學生類,完成n個學生三門課成績的錄入,求平均分,及按平均分排序工作 設計技術參數(shù) struct stud // 用于三門課的結構體 { int english ; int computer; int Chinese ; } ; Student 類: 數(shù)據(jù)成員 : stud cj; char name[10]; // 姓名 double average; // 平均分 static int count ; // 用于動態(tài)建立數(shù)組時,標志數(shù)組中元素個數(shù) 函數(shù)成員 : void getdata() ; // 用于當前對象的數(shù)據(jù)信息錄入,并計算平均值 void disp() ; // 用于當前對象數(shù)據(jù)的顯示 static void setcount(int x) { count=x ;} friend void sort( student a[ ]) ; //對于對象數(shù)組進行排序 設計題目十七: 銀行賬戶管理系統(tǒng)(單個賬戶的處理): 設計一個賬戶類,能完成對單個賬戶的管理,包括存入,支取,顯示歷史交易記錄(最多100條) 設計技術參數(shù) 類 Bank 數(shù)據(jù)成員 : int top; // 最后交易記錄指針 char date[Max][13]; // 交易日期 double money[Max]; // 交易金額 double rest[Max]; // 本次交易余額 static double sum; // 最后余額 函數(shù)成員: Bank() // 初始化個人賬戶記錄 top=0 void bankin(char d[],double m) // 對應日期 存入金額 void bankout(char d[],double m) // 對應日期 支取金額 void disp() // 個人賬戶歷史交易記錄 主函數(shù)應以菜單形式完成對一個賬戶的不同操作. 設計題目十八: 通信錄(最大記錄1000條): 設計技術參數(shù) 類 txl 數(shù)據(jù)成員 : int id; // 記錄號 char name[11]; // 姓名 char address[50]; // 住址 char tel[13]; // 電話 char mail[15];// 郵箱 char qq[12] ; // qq 號 函數(shù)成員: txl( ) // 構造函數(shù),初始化各項參數(shù) // 設置各項數(shù)據(jù) void setid( int id1) { id=id1 ;} void setadd( char *add ) {strcpy(address,add) ;} void setname(char *na ) { strcpy (name,na);} void settel(char *tele) {strcpy(tel,tele);} void setmail(char * maill) {strcpy(mail,maill);} void setqqid(char *qqid) { strcpy(qq,qqid);} // 讀取各項數(shù)據(jù) int getid() {return id ;} char * getname( ) {return name ;} char * getaddr( ) { return address ;} char * gettel () { return tel ;} char * getmail() { return mail ; } char * getqq() { return qq ;} int static gettop() { return top ;} // 數(shù)據(jù)輸入函數(shù) friend void input(txl &p) ; // 用于本對象數(shù)據(jù)的輸入 friend void disp(txl &p) ; // 用于本對象數(shù)據(jù)的顯示 主函數(shù)應以菜單形式完成對通信錄的錄入及顯示操作,有能力的同學完善刪除操作,本程序是用對象數(shù)組完成的,所以數(shù)據(jù)不能保存到下一次(如加上文件操作更好,從文件中讀入數(shù)據(jù)至數(shù)組,將數(shù)組中數(shù)據(jù)寫入文件最好) 設計題目十九: 人員信息管理系統(tǒng): 設計技術參數(shù) 設計一個職員類 ,技術人員類,推銷員類、經理類、銷售經理類。 仔細設計各類之間繼承與派生的關系,設計各自的成員函數(shù),注意虛函數(shù)的使用及類多態(tài)性。 設計題目二十: 鏈表類的實現(xiàn): 設計技術參數(shù) 從鍵盤輸入10個整形數(shù)據(jù),用這些數(shù)據(jù)作為結點數(shù)據(jù),生成鏈表,按照順序生成鏈表。然后從鍵盤輸入一個待查詢的值,如找到則刪除該整數(shù)所在的結點(如果出現(xiàn)多次,全部刪除),然后輸出刪除后的鏈表的值。 (注:抽到本題目的學生,結合數(shù)據(jù)結構中關于鏈表的相關知識點,用c++模板建立鏈表類,來完成對鏈表的各種操作,主要工作在于分析程序,了解程序每一部分的含義) 設計題目二十一: 棧類的實現(xiàn)(計算器程序): 設計技術參數(shù) 實現(xiàn)一個簡單的計算器,能夠進行加、減、乘、除及乘方運算。 詳細說明 (注:抽到本題目的學生,結合數(shù)據(jù)結構與C++中關于棧的相關知識點,用c++模板建立棧類,來完成對棧的各種操作,主要工作在于分析程序,了解程序每一部分的含義)- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 面向 對象 程序設計語言 計劃書
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-8812657.html