C綜合應(yīng)用實例學(xué)習(xí)教案_第1頁
C綜合應(yīng)用實例學(xué)習(xí)教案_第2頁
C綜合應(yīng)用實例學(xué)習(xí)教案_第3頁
C綜合應(yīng)用實例學(xué)習(xí)教案_第4頁
C綜合應(yīng)用實例學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩92頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、會計學(xué)1C綜合應(yīng)用實例綜合應(yīng)用實例第1頁/共97頁第2頁/共97頁第3頁/共97頁第4頁/共97頁第5頁/共97頁第6頁/共97頁第7頁/共97頁第8頁/共97頁第9頁/共97頁第10頁/共97頁第11頁/共97頁第12頁/共97頁分析:分析: 由于成績管理是由多名學(xué)生構(gòu)成的,所以需要定義由于成績管理是由多名學(xué)生構(gòu)成的,所以需要定義學(xué)生類學(xué)生類; 另外,由多個學(xué)生,形成一個班或年級,所以還需要定義一個另外,由多個學(xué)生,形成一個班或年級,所以還需要定義一個班級(年級)類班級(年級)類第13頁/共97頁第14頁/共97頁第15頁/共97頁第16頁/共97頁第17頁/共97頁第18頁/共97頁第19

2、頁/共97頁第20頁/共97頁第21頁/共97頁3 采用面向?qū)ο蟮某绦蛟O(shè)計方法,采用面向?qū)ο蟮某绦蛟O(shè)計方法,用用鏈表鏈表(定義(定義鏈表鏈表類),類),DOS界面界面第22頁/共97頁data next頭指針指向下一個節(jié)點的指針附加頭結(jié)點結(jié)點尾指針第23頁/共97頁data next問題問題(有關(guān)鏈表的操作有關(guān)鏈表的操作):n 如何定義如何定義(申明申明)一個鏈表呢一個鏈表呢?n 如何形成一個鏈表呢如何形成一個鏈表呢?n 在鏈表中指定的位置處在鏈表中指定的位置處,如何插入一個節(jié)點呢如何插入一個節(jié)點呢?n 在鏈表中如何刪除一個節(jié)點呢在鏈表中如何刪除一個節(jié)點呢?n 一個鏈表中一個鏈表中,有幾個數(shù)據(jù)

3、元素呢有幾個數(shù)據(jù)元素呢?第24頁/共97頁定義鏈表: struct ListNode *first 該鏈表所有的操作,全部是從該鏈表所有的操作,全部是從“first”開始,開始, 并且,該指針并且,該指針永遠(yuǎn)永遠(yuǎn)指向第一個位置指向第一個位置。第25頁/共97頁First(2)在空鏈表的基礎(chǔ)上不斷的插入節(jié)點,從而形成鏈表。)在空鏈表的基礎(chǔ)上不斷的插入節(jié)點,從而形成鏈表。 一般分為:在前插入、在后插入兩種一般分為:在前插入、在后插入兩種(1)首先形成一個空鏈表:)首先形成一個空鏈表:NULL(0)第26頁/共97頁first(a) 建空表建空表第27頁/共97頁建立單鏈表建立單鏈表頭插法建立單鏈表

4、圖示頭插法建立單鏈表圖示 first(a) 建空表建空表c1ss 指向新申請的結(jié)點指向新申請的結(jié)點sdatac1(b) 申請新結(jié)點并賦值申請新結(jié)點并賦值firstlast(c) 插入第一個結(jié)點插入第一個結(jié)點 last=slast=sc1執(zhí)行的語句組為執(zhí)行的語句組為:snextfirstnext;firstnexts;ci1firstc2c1cis(d) 插入第插入第i個元素個元素頭插法頭插法第28頁/共97頁尾插法建表尾插法建表 尾插法建表圖示尾插法建表圖示 c1ss 指向新申請的結(jié)點空間指向新申請的結(jié)點空間sdatac1(b) 申請新結(jié)點并賦值申請新結(jié)點并賦值firstL(a ) 建空表建空

5、表lastfs(c) 插入第一個結(jié)點插入第一個結(jié)點c1lastlasts;last指向鏈表的結(jié)尾指向鏈表的結(jié)尾c1firstc2last nexts;(d) 插入第二個結(jié)點插入第二個結(jié)點sr將新建的節(jié)點插入到鏈表的最后將新建的節(jié)點插入到鏈表的最后尾指針尾指針第29頁/共97頁執(zhí)行的語句組為執(zhí)行的語句組為:snextfirstnext;firstnexts;ci1firstc2c1cis 插入第插入第i個元素個元素第30頁/共97頁第31頁/共97頁第32頁/共97頁La1ai1aianpre(a) 尋找第尋找第 i1 個結(jié)點個結(jié)點es(b) 申請新的結(jié)點申請新的結(jié)點preLa1ai1aiane

6、s 與與ai連鏈連鏈: :snextprenextai-1與與ai斷斷鏈鏈, ,插入插入 e:prenexts;(c) 插入插入第33頁/共97頁pLa1ai1aianeq 與與ai連鏈連鏈: :snextprenextai-1與與ai斷斷鏈鏈, ,插入插入 e:prenexts;(c) 插入插入第34頁/共97頁第35頁/共97頁La0ai1aian( ) p第36頁/共97頁分析分析1數(shù)據(jù)成員數(shù)據(jù)成員: 兩個指向結(jié)點的指針兩個指向結(jié)點的指針:頭指針和尾指針頭指針和尾指針 2成員函數(shù)成員函數(shù): (1) 構(gòu)造函數(shù)構(gòu)造函數(shù) /創(chuàng)建并形成一個初始鏈表創(chuàng)建并形成一個初始鏈表 (2)析構(gòu)函數(shù)析構(gòu)函數(shù)

7、/刪除構(gòu)造函數(shù)所創(chuàng)建的鏈表刪除構(gòu)造函數(shù)所創(chuàng)建的鏈表 (3)插入元素函數(shù)插入元素函數(shù) /在表的第在表的第i 個位置處個位置處,插入數(shù)據(jù)或在表尾插入元素插入數(shù)據(jù)或在表尾插入元素 (4)刪除元素函數(shù)刪除元素函數(shù) /刪除表中數(shù)值為刪除表中數(shù)值為x的元素的元素 (5)查找元素查找元素 /在表中查找數(shù)據(jù)為在表中查找數(shù)據(jù)為x的元素在表中的位置的元素在表中的位置 (6)輸出鏈表輸出鏈表 /從頭到尾輸出表中的所有的元素從頭到尾輸出表中的所有的元素 (7)判定鏈表是否為空判定鏈表是否為空 /為了進行刪除進行的一種判定為了進行刪除進行的一種判定 (8) 將鏈表設(shè)置為一個空表將鏈表設(shè)置為一個空表 / (9)計算鏈表的

8、長度計算鏈表的長度 /統(tǒng)計鏈表中元素個數(shù)統(tǒng)計鏈表中元素個數(shù) (10) 將鏈表元素值寫到文件中將鏈表元素值寫到文件中 (11) 將文件中的數(shù)據(jù)讀到鏈表中將文件中的數(shù)據(jù)讀到鏈表中 第37頁/共97頁class LinkList /鏈表類鏈表類 private: ListNode *first,*last; /鏈表的表頭指針和尾指針鏈表的表頭指針和尾指針 public: LinkList ( ) LinkList ( ) ; /析構(gòu)函數(shù)析構(gòu)函數(shù) ListNode *Insert ( int value, int i ); Listnode *insert(intvalue) int Remove (

9、int value ); ListNode *FindIndex ( int value ); void PrintList( ); /遍歷單鏈表遍歷單鏈表 void MakeEmpty ( ); /將鏈表置為空表將鏈表置為空表 int Length ( ) const; /計算鏈表的長度計算鏈表的長度 int NotNull ( ) ; /判斷是否是空表判斷是否是空表 void create();單鏈表的類定義單鏈表的類定義第38頁/共97頁第39頁/共97頁第40頁/共97頁(一一)數(shù)據(jù)定義數(shù)據(jù)定義(類的數(shù)據(jù)成員說明類的數(shù)據(jù)成員說明): 一個指向?qū)W生結(jié)構(gòu)的頭指針一個指向?qū)W生結(jié)構(gòu)的頭指針;

10、(注意注意:該指針就是鏈表的頭該指針就是鏈表的頭)struct node int Class; /班級 int num; /學(xué)號 char name8; /姓名 float kc6; /各課程成績(6門) float ave; /平均成績 int order; /名次 node *next; /指針;class cj private: struct node *head; public: 待定義的各功能函數(shù)待定義的各功能函數(shù) 結(jié)點定結(jié)點定義義類定義類定義第41頁/共97頁第42頁/共97頁第43頁/共97頁第44頁/共97頁第45頁/共97頁第46頁/共97頁class cj private:

11、 struct node *head; public: cj(); /1:構(gòu)造函數(shù)構(gòu)造函數(shù),建立一個只有建立一個只有附加頭結(jié)點附加頭結(jié)點的的空鏈表空鏈表 input(); / 2:向鏈表中添加學(xué)生的信息向鏈表中添加學(xué)生的信息(在表的在表的尾上追加尾上追加) appen(node *p); /3.追加結(jié)點追加結(jié)點: 在鏈表尾上鏈上一個結(jié)點在鏈表尾上鏈上一個結(jié)點(p所指的結(jié)點所指的結(jié)點) void rf(char *f); /4.讀文件,形成鏈表讀文件,形成鏈表 node *post(int num); /5.定位定位: 提供學(xué)號提供學(xué)號, 返回指向該結(jié)點的一個指針返回指向該結(jié)點的一個指針) vo

12、id lookup(int num); / 6.查詢查詢 提供學(xué)號提供學(xué)號, 查找學(xué)生并輸出學(xué)生的信息查找學(xué)生并輸出學(xué)生的信息 void Delete(int num); /7.刪除刪除: 提供學(xué)號提供學(xué)號, 刪除學(xué)號是該值的學(xué)生刪除學(xué)號是該值的學(xué)生 void modify(int num); /8.修改成績修改成績: 提供學(xué)號提供學(xué)號, 修改修改(重新輸入重新輸入)學(xué)生信息學(xué)生信息 void statistic() ; /9.統(tǒng)計函數(shù)統(tǒng)計函數(shù),統(tǒng)計平均成績統(tǒng)計平均成績 void sort(cj &h); /10.排序排序(降序降序): 按平均成績排序按平均成績排序,形成排序的鏈表形成

13、排序的鏈表h void Insert(cj &h,node *p); /在有序表在有序表h中結(jié)點后仍有序中結(jié)點后仍有序(排序的一個輔助函數(shù)排序的一個輔助函數(shù): void output(); /11: 輸出鏈表中各結(jié)點值輸出鏈表中各結(jié)點值 void wf(char *f); /12. 由鏈表由鏈表,形成文件形成文件 cj(); / 13(1):析構(gòu)函數(shù)析構(gòu)函數(shù),程序運行結(jié)束時程序運行結(jié)束時,刪除鏈表中的各結(jié)點刪除鏈表中的各結(jié)點, void print1(); /13(2): 輸出一個同學(xué)的成績輸出一個同學(xué)的成績(標(biāo)題標(biāo)題) void print2(node *p); /13(3) 輸出一

14、個同學(xué)的成績輸出一個同學(xué)的成績 node *gethead()return head; /13(4)獲取頭指針獲取頭指針 int Length ( ) const; /13(5) 計算鏈表的長度計算鏈表的長度;第47頁/共97頁第48頁/共97頁第49頁/共97頁第50頁/共97頁第51頁/共97頁第52頁/共97頁第53頁/共97頁第54頁/共97頁第55頁/共97頁第56頁/共97頁第57頁/共97頁第58頁/共97頁第59頁/共97頁第60頁/共97頁第61頁/共97頁第62頁/共97頁第63頁/共97頁第64頁/共97頁 case 5:A.output();break; case 6:

15、A.statistic();break; case 7: cout學(xué)生人數(shù)為學(xué)生人數(shù)為:()endl; break; case 8:A.sort(B); B.output();break; case 9:A.rf(abc);break; case 10:A.wf(abc);break; default:break; ;cout按任意鍵繼續(xù)操作按任意鍵繼續(xù)操作!endl;getchar();end:; cout謝謝您使用本系統(tǒng)謝謝您使用本系統(tǒng)!endl; 第65頁/共97頁第66頁/共97頁例如:如下的問題例如:如下的問題 已知一個正三角形已知一個正三角形ABC,其內(nèi)分點,其內(nèi)分點A1、B1、C

16、1,使得,使得2AC1=C1B、2BA1=A1C、2CB1=B1A,連接,連接CC1、BB1、AA1,三條直線分別相交于,三條直線分別相交于A2、B2、C2(見圖(見圖1)。)。要求編寫程序驗證要求編寫程序驗證 : 三角形三角形A2B2C2面積是三角形面積是三角形 ABC面積的七分之一面積的七分之一. A C1 B2 B1 A2 C2 B A1 C 第67頁/共97頁運用邏輯思維分析程序設(shè)計:運用邏輯思維分析程序設(shè)計: 設(shè)正三角形設(shè)正三角形ABC的邊長為的邊長為a,則本題目就是求兩個三角形的面積,已知,則本題目就是求兩個三角形的面積,已知三角形的邊長求面積,對于三角形三角形的邊長求面積,對于三

17、角形ABC是很容易的,但對于三角形是很容易的,但對于三角形A2B2C2的面積的求解卻比較麻煩。的面積的求解卻比較麻煩。(如何求呢如何求呢?)對于該問題的邏輯思維及其分析過程:對于該問題的邏輯思維及其分析過程:(1) 三角形三角形A2B2C2的面積的面積(2)求邊長(求邊長(A2B2、B2C2、C2A2)(3)求交點坐標(biāo)(求交點坐標(biāo)(A2、B2、C2)(4)求直線方程(求直線方程(AA1、BB1、CC1)(5)求內(nèi)分點坐標(biāo)(求內(nèi)分點坐標(biāo)(A1、B1、C1)(6)已知邊長已知邊長a,確定三角形,確定三角形ABC的頂點坐標(biāo)(的頂點坐標(biāo)(A、B、C) A C1 B2 B1 A2 C2 B A1 C 分

18、析分析實實現(xiàn)現(xiàn)第68頁/共97頁第69頁/共97頁第70頁/共97頁1、已知一個三角形、已知一個三角形t,求面積求面積mj;2、已知兩頂點、已知兩頂點a,b, 求內(nèi)分點求內(nèi)分點 (在這里兩段的比值為在這里兩段的比值為1:2);3、已知兩頂點、已知兩頂點p1,p2,求直線方程求直線方程line4、已知兩直線、已知兩直線l1,l2,求交點坐標(biāo),求交點坐標(biāo)5、已知兩點、已知兩點P1,P2,求距離,求距離第71頁/共97頁三角形結(jié)構(gòu)(三邊形成三角形)三角形結(jié)構(gòu)(三邊形成三角形)(a,b,c)struc T double a; double b; double c;直線方程結(jié)構(gòu)直線方程結(jié)構(gòu):ax+by+

19、c=0struc L double a; double b; double c;點結(jié)構(gòu)點結(jié)構(gòu):(x,y) struc P double x; double y; ;直線方程結(jié)構(gòu)直線方程結(jié)構(gòu):y=kx+bstruc L double k; double b;或者或者第72頁/共97頁第73頁/共97頁第74頁/共97頁第75頁/共97頁第76頁/共97頁第77頁/共97頁 A C1 B2 B1 A2 C2 B A1 C 第78頁/共97頁第79頁/共97頁注意:注意:每個類有什么數(shù)據(jù)成員;每個類有什么數(shù)據(jù)成員;每個類有什么成員函數(shù),都具有什么功能?每個類有什么成員函數(shù),都具有什么功能? 第80頁/共97頁 class P private: double x; double y; public: / 構(gòu)造函數(shù),用構(gòu)造函數(shù),用a,b提供值,形成點提供值,形成點 P(double a,double b); /構(gòu)造函數(shù),由兩直線構(gòu)造函數(shù),由兩直線a,b形成交點形成交點 P(line a,line b); /構(gòu)造函數(shù),由兩頂點構(gòu)造函

溫馨提示

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

評論

0/150

提交評論