



付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、課程設(shè)計(jì)的內(nèi)容( 1) 信息維護(hù):要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息( 2) 信息查詢:要求:查詢時(shí)可實(shí)現(xiàn)按姓名查詢、按學(xué)號查詢( 3) 成績統(tǒng)計(jì):要求: A 輸入任意的一個(gè)課程名(如數(shù)學(xué))和一個(gè)分?jǐn)?shù)段(如60-70 ),統(tǒng)計(jì)出在此分?jǐn)?shù)段的學(xué)生情況。( 4) 排序:能對用戶指定的任意課程名,按成績升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果(使用表格的形式顯示排序后的輸出結(jié)果) (使用多種方法排序者, 加分)(二)其它要求:( 1) 只能使用 C/C+語言,源程序要有適當(dāng)?shù)淖⑨?,使程序容易閱讀( 2) 至少采
2、用文本菜單界面(如果能采用圖形菜單界面更好)( 3) 學(xué)生可自動(dòng)增加新功能模塊(視情況可另外加分)( 4)寫出課程設(shè)計(jì)報(bào)告,具體要求見相關(guān)說明文檔二、課程設(shè)計(jì)的要求與數(shù)據(jù)1、進(jìn)一步掌握和利用C 語言進(jìn)行程設(shè)計(jì)的能力;2、進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法;3、初步掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;4、學(xué)會(huì)調(diào)試一個(gè)較長程序的基本方法;5、學(xué)會(huì)利用流程圖或N-S 圖表示算法;6、掌握書寫程序設(shè)計(jì)開發(fā)文檔的能力。三、課程設(shè)計(jì)應(yīng)完成的工作1、編寫完成相應(yīng)題目的程序;2、編寫課程設(shè)計(jì)報(bào)告, 課程設(shè)計(jì)報(bào)告的內(nèi)容應(yīng)包括以下6 個(gè)部分:1) 需求分析:包括設(shè)計(jì)題目、設(shè)計(jì)要求以及系統(tǒng)功能需求分析;2)
3、 總體設(shè)計(jì):包括系統(tǒng)總體設(shè)計(jì)框架和系統(tǒng)功能模塊圖;3) 詳細(xì)設(shè)計(jì):包括主要功能模塊的算法設(shè)計(jì)思路以及對應(yīng)的工作流程圖;4) 調(diào)試分析過程描述:包括測試數(shù)據(jù)、測試輸出結(jié)果,以及對程序調(diào)試過程中存在問題的思考(列出主要問題的出錯(cuò)現(xiàn)象、出錯(cuò)原因、解決方法及效果等,適當(dāng)?shù)陌Y(jié)果截圖);5) 總結(jié):課程設(shè)計(jì)完成了哪些功能,有沒有什么擴(kuò)展功能?還有哪些地方需要改進(jìn)?課程設(shè)計(jì)過程中的學(xué)習(xí)體會(huì)與收獲、對本次課程設(shè)計(jì)的認(rèn)識以及自己的建議等內(nèi)容;6) 附錄:主要源程序代碼,含必要的注釋。3、答辯:在實(shí)驗(yàn)室建立程序運(yùn)行的環(huán)境,并在指導(dǎo)教師的監(jiān)督下,獨(dú)立解決問題、運(yùn)行程序和回答教師提出的問題。目錄1 設(shè)計(jì)目的與要求
4、P42 總體設(shè)計(jì)P43 詳細(xì)設(shè)計(jì)P53.1 功能模塊設(shè)計(jì)P5功能模塊 ( 可選 )P5功能模塊 ( 可選 )P6功能模塊 ( 可選 ) P73.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)P84 調(diào)試分析P94.1結(jié)構(gòu)體P94.2鏈表P115 遇到的問題及解決方法分析P126 總結(jié)P137 源文件P137.1鏈表P137.2結(jié)構(gòu)體P281、目的與要求一 目的:編制一程序?qū)崿F(xiàn)對學(xué)生成績的管理,讓自己既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐,將課本上的理論知識和實(shí)際應(yīng)用問題進(jìn)行有機(jī)結(jié)合,鍛煉自己分析、解決實(shí)際問題的能力,提高自身項(xiàng)目開發(fā)及程序調(diào)試能力。二 要求:1、整個(gè)系統(tǒng)均用 C語言實(shí)現(xiàn);2、利用指針、結(jié)構(gòu)體、鏈表來實(shí)現(xiàn)學(xué)生成績的數(shù)據(jù)結(jié)構(gòu)設(shè)
5、計(jì);3、系統(tǒng)具有輸入、顯示、查詢(查詢時(shí)可實(shí)現(xiàn)按姓名查詢、按學(xué)號查詢)、刪除、排序、插入,保存、讀取基本功能;4、系統(tǒng)的各個(gè)功能模塊都用函數(shù)的形式來實(shí)現(xiàn);5、學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息;6、可以輸入任意的一個(gè)課程名(如數(shù)學(xué))和一個(gè)分?jǐn)?shù)段(如60-70 ),統(tǒng)計(jì)出在此分?jǐn)?shù)段的學(xué)生情況;7、能對用戶指定的任意課程名,按成績升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果;8、可自動(dòng)增加新功能模塊;9、可以將學(xué)生信息從文件中讀取出來。2 總體設(shè)計(jì)1、 主函數(shù) main()利用 if-else,While循環(huán)語句和swit
6、ch()實(shí)現(xiàn)各函數(shù)的調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項(xiàng)來調(diào)用相應(yīng)的函數(shù)。2、 菜單選擇函數(shù)void menu();這是一個(gè)無參函數(shù),主要實(shí)現(xiàn)“功能選擇”的界面,在這個(gè)界面里有顯示系統(tǒng)的13大功能,根據(jù)每個(gè)功能前面的序號進(jìn)行選擇。等執(zhí)行完每一個(gè)函數(shù)功能后,按任0鍵回到主界面也要通過這個(gè)函數(shù)提示來實(shí)現(xiàn)!3、 自定義函數(shù) voidprintstart()、void Wrong() 、void Nofind()、void printc()、void printe(Node *p)用 void Wrong() 來提示輸入錯(cuò)誤, 用 void Nofind() 提示沒有找到學(xué)生資料, 用 voidprintc(
7、)來輸出中文,用void printe(Node *p)來輸出中文。main()voidAdd(Linkl)voidMaths(Linkl)voidQur(Linkl)voidEnglish(Link l)voidDel(Linkl)voidselect(Linkl)voidModify(Linkl)voidSave(Linkl)void Disp(Link l)void menu()void Tongji(Link l)void printc()voidChinese(Linkl)voidprinte(Node *p)3 詳細(xì)設(shè)計(jì)3.1 功能模塊設(shè)計(jì)排序數(shù)學(xué)成績功能模塊函數(shù) void Mat
8、hs(Link l)該函數(shù)用于對數(shù)學(xué)成績進(jìn)行降序,ll=(Link)malloc(sizeof(Node)用于做新的鏈表連接,如果原鏈表為空的話,返回;不為空的話,p=l-next;建立接點(diǎn)用于保存信息,對指定鏈表地址進(jìn)行排序。流程圖如圖所示:Link llll=(Link)malloc(sizeof(Node)用于做新的連表l-next=NULL是否沒有資料可以p=l-next排序while(p)returns=(Node*)malloc(sizeof(Node) rr=llwhile(rr-next!=NULL&rr-next-data.mgrade=p-data.mgrade)是rr-n
9、ext=NULL否rr-next=ss-next=rr-next;rr-next=sp=p-nextl-next=ll-next(排序完成)顯示學(xué)生資料功能模塊函數(shù) void Disp(Link l)該函數(shù)負(fù)責(zé)顯示學(xué)生資料,這是一個(gè)不返回值函數(shù)。算法: 先將 p 結(jié)點(diǎn)的指針指向第一個(gè)結(jié)點(diǎn),將p 結(jié)點(diǎn) ( 即第一個(gè)結(jié)點(diǎn) ) 的數(shù)據(jù)輸出。然后再將 p 結(jié)點(diǎn)的指針指向p 指針的的指針 ( 即下一結(jié)點(diǎn) ) ,將 p 結(jié)點(diǎn) ( 即第一結(jié)點(diǎn) )的數(shù)據(jù)輸出。重復(fù)執(zhí)行此步聚直到p 指針指向 NULL為止。流程圖如圖所示:原來鏈表是否為空是否提示 沒 有p 指 向 下 一 結(jié) 點(diǎn)p=p-next資料可以輸出 p
10、 指向的結(jié)點(diǎn),即學(xué)生信息顯示 returnp指向下一結(jié)點(diǎn) p=p-next刪除資料功能模塊函數(shù) void Del(Link l)該函數(shù)用于有選擇地刪除學(xué)生資料,如果原來的鏈表為空的話,會(huì)返回;不為空的話,選擇用按哪種類型刪除,如果按學(xué)號刪除,就輸入學(xué)號,后判斷是否取得地址,取得就執(zhí)行刪除;按名字刪除就輸入名字,運(yùn)行同學(xué)號一樣。流程圖如圖所示:原鏈表是否為空是否沒有資料1按1學(xué)號還是2按名字?2可以刪除輸入你要?jiǎng)h除的學(xué)號輸入你要?jiǎng)h除的名字P是否取得輸入地址P是否取得輸入地址是否否是Returnr指向下一Nofind()Nofind()r指向下一結(jié)點(diǎn)結(jié)點(diǎn)執(zhí)行free(p)執(zhí)行 free(p)3.2
11、 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) ( 可選 )一個(gè)結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù)(如一個(gè)學(xué)生的學(xué)號、姓名、成績等數(shù)據(jù))。一個(gè)結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段起始地址??梢栽O(shè)一個(gè)指針變量,用來指向一結(jié)構(gòu)體變量,此時(shí)指針變量的值是結(jié)構(gòu)體的起始地址。指針量變也可以用來指向一結(jié)構(gòu)體數(shù)組中的元素。struct studentchar num10;/*學(xué)號*/char name20;char sex4;int cgrade;int mgrade;int egrade;int totle;int ave;char neartime10;/*最近更新時(shí)間*/;typedef struct nodestruct stude
12、nt data;struct node *next;Node,*Link;6 總 結(jié)經(jīng)過一個(gè)多星期的C 語言課程設(shè)計(jì),感覺自己收獲不少!首先是:要達(dá)到這樣的功能,使用鏈表相當(dāng)方便,但不容易理解,所以在這方面我很了很多的時(shí)間看課本,使C 語言的知識強(qiáng)化了不少。其次,在做課程設(shè)計(jì)的過程中,發(fā)現(xiàn)了平時(shí)很多沒有注意到的問題,例如:返回值函數(shù)和不返回值函數(shù)兩者在主函數(shù)中的調(diào)用是不同的更重要的是,這次課程設(shè)計(jì)雖然花了我不少時(shí)間,但正是這些時(shí)間,讓我見識到了C 語言的重要性。這個(gè)學(xué)生成績管理系統(tǒng)都是在自己知識范圍內(nèi)完成的,所以界面清晰簡單,可能不是很好看,但絕對實(shí)用!從這里我也得到一個(gè)體會(huì),做一個(gè)程序,或者
13、開發(fā)一個(gè)軟件,應(yīng)該著重從它的后臺制作入手,不能做出一個(gè)中看不中用的程序或者軟件。相信這次的課程設(shè)計(jì)使我的C 語言知識扎實(shí)了很多。由于這是第一次進(jìn)行設(shè)計(jì),寫文檔,難免會(huì)寫得不好!7 源程序7. 1 鏈表#include stdio.h#include stdlib.h#include string.hint shoudsave=0; /* */struct studentchar num10;/*學(xué)號*/char name20;char sex4;int cgrade;int mgrade;int egrade;int totle;int ave;char neartime10;/*最近更新時(shí)間
14、*/;typedef struct nodestruct student data;struct node *next;Node,*Link;void menu()printf(*);printf(t1登記學(xué)生資料 ttttt2刪除學(xué)生資料 n);printf(t3查詢學(xué)生資料 ttttt4修改學(xué)生資料 n);printf(t5顯示學(xué)生資料 ttttt6統(tǒng)計(jì)學(xué)生資料 n);printf(t7排序語文成績 ttttt8排序數(shù)學(xué)成績 n);printf(t9排序英語成績 ttttt10選出分段分?jǐn)?shù) n);printf(t11保存學(xué)生資料 ttttt12幫助信息 ttn);printf(t0退出系統(tǒng)
15、 tttttttn);printf(*n);void printstart()printf(-n);void Wrong()printf(n=提示 : 輸入錯(cuò)誤 !n);void Nofind()printf(n=提示 : 沒有找到該學(xué)生 !n);void printc() /*本函數(shù)用于輸出中文*/printf(學(xué)號 t姓名 t性別語文成績數(shù)學(xué)成績英語成績總分平均分 n);void printe(Node *p)/*本函數(shù)用于輸出英文*/printf(%-12s%st%st%dt%dt%dt %dt %dn,p-data.num,,p-data.sex,p-data.e
16、grade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave);Node* Locate(Link l,char findmess,char nameornum) /*該函數(shù)用于定位連表中符合要求的接點(diǎn),并返回該指針*/Node *r;if(strcmp(nameornum,num)=0) /*按學(xué)號查詢*/r=l-next;while(r!=NULL)if(strcmp(r-data.num,findmess)=0)return r;r=r-next;else if(strcmp(nameornum,name)=0) /*按姓名查詢*/r
17、=l-next;while(r!=NULL)if(strcmp(,findmess)=0)return r;r=r-next;return 0;void Add(Link l) /*增加學(xué)生*/Node *p,*r,*s;char num10;r=l;s=l-next;while(r-next!=NULL)r=r-next; /*將指針置于最末尾*/while(1)printf(請你輸入學(xué)號 ( 以 0 返回上一級菜單 :);scanf(%s,num);if(strcmp(num,0)=0)break;while(s)if(strcmp(s-data.num,num)=0
18、)printf(=提示 : 學(xué)號為 %s 的學(xué)生已經(jīng)存在, 若要修改請你選擇4修改!n,num);printstart();printc();printe(s);printstart();printf(n);return;s=s-next;p=(Node *)malloc(sizeof(Node);strcpy(p-data.num,num);printf(請你輸入姓名 :);scanf(%s,);getchar();printf(請你輸入性別 :);scanf(%s,p-data.sex);getchar();printf(請你輸入語文成績:);scanf(%d,&p-
19、data.cgrade);getchar();printf(請你輸入數(shù)學(xué)成績:);scanf(%d,&p-data.mgrade);getchar();printf(請你輸入英語成績:);scanf(%d,&p-data.egrade);getchar();p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.totle / 3;/*信息輸入已經(jīng)完成p-next=NULL;r-next=p;r=p;shoudsave=1;*/void Qur(Link l) /*查詢學(xué)生*/int sel;char f
20、indmess20;Node *p;if(!l-next)printf(n=提示 : 沒有資料可以查詢!n);return;printf(n=1按學(xué)號查找 n=2 按姓名查找 n);scanf(%d,&sel);if(sel=1)/*學(xué)號 */printf(請你輸入要查找的學(xué)號:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p)printf(tttt查找結(jié)果 n);printstart();printc();printe(p);printstart();elseNofind();else if(sel=2) /*姓名 */printf(請你輸
21、入要查找的姓名:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p)printf(tttt查找結(jié)果n);printstart();printc();printe(p);printstart();elseNofind();elseWrong();void Del(Link l) /*刪除*/int sel;Node *p,*r;char findmess20;if(!l-next)printf(n=提示 : 沒有資料可以刪除!n);return;printf(n=1按學(xué)號刪除 n=2 按姓名刪除 n);scanf(%d,&sel);if(sel
22、=1)printf(請你輸入要?jiǎng)h除的學(xué)號:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p)r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);printf(n=提示 : 該學(xué)生已經(jīng)成功刪除!n);shoudsave=1;elseNofind();else if(sel=2)printf(請你輸入要?jiǎng)h除的姓名:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p)r=l;while(r-next!=p)r=r-next;r-next=p-nex
23、t;free(p);printf(n=提示 : 該學(xué)生已經(jīng)成功刪除!n);shoudsave=1;elseNofind();elseWrong();void Modify(Link l)Node *p;char findmess20;if(!l-next)printf(n=提示 : 沒有資料可以修改!n);return;printf(請你輸入要修改的學(xué)生學(xué)號:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p)printf(請你輸入新學(xué)號 ( 原來是 %s):,p-data.num);scanf(%s,p-data.num);printf(請你
24、輸入新姓名 ( 原來是 %s):,);scanf(%s,);getchar();printf(請你輸入新性別 ( 原來是 %s):,p-data.sex);scanf(%s,p-data.sex);printf(請你輸入新的語文成績( 原來是 %d分):,p-data.cgrade);scanf(%d,&p-data.cgrade);getchar();printf(請你輸入新的數(shù)學(xué)成績( 原來是 %d分):,p-data.mgrade);scanf(%d,&p-data.mgrade);getchar();printf(請你輸入新的英語成績( 原來
25、是 %d分):,p-data.egrade);scanf(%d,&p-data.egrade);p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.totle/3;printf(n=提示 : 資料修改成功 !n);shoudsave=1;elseNofind();void Disp(Link l)int count=0;Node *p;p=l-next;if(!p)printf(n=提示 :沒有資料可以顯示!n);return;printf(tttt顯示結(jié)果n);printstart();printc
26、();printf(n);while(p)printe(p);p=p-next;printstart();printf(n);void Tongji(Link l)Node *pm,*pe,*pc,*pt,*pa; /*用于指向分?jǐn)?shù)最高的接點(diǎn)*/Node *r=l-next;if(!r)printf(n=提示 : 沒有資料可以統(tǒng)計(jì)!n);return ;pm=pe=pc=pt=pa=r;while(r!=NULL)if(r-data.cgrade=pc-data.cgrade)pc=r;if(r-data.mgrade=pm-data.mgrade)pm=r;if(r-data.egrade=
27、pe-data.egrade)pe=r;if(r-data.totle=pt-data.totle)pt=r;if(r-data.ave=pa-data.ave)pa=r;r=r-next;printf(-統(tǒng)計(jì)結(jié)果-n);printf(總分最高者 :t%s %d 分 n,,pt-data.totle);printf(平均分最高者 :t%s %d分n,,pa-data.ave);printf(英語最高者 :t%s %d 分 n,,pe-data.egrade);printf(數(shù)學(xué)最高者 :t%s %d 分 n,pm-data
28、.name,pm-data.mgrade);printf(語文最高者 :t%s %d 分 n,,pc-data.cgrade);printstart();void Chinese(Link l)Link ll;Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node); /*用于做新的連表*/ll-next=NULL;if(l-next=NULL)printf(n=提示 : 沒有資料可以排序!n);return ;p=l-next;while(p)s=(Node*)malloc(sizeof(Node); /*新建接點(diǎn)用于保存信息*/s-da
29、ta=p-data;s-next=NULL;rr=ll;while(rr-next!=NULL & rr-next-data.egrade=p-data.egrade)rr=rr-next;if(rr-next=NULL)rr-next=s;elses-next=rr-next;rr-next=s;p=p-next;free(l);l-next=ll-next;printf(n=提示 : 排序已經(jīng)完成 !n);void Maths(Link l) /*對數(shù)學(xué)排序 */Link ll;Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node); /*用于做新的連表*/ll-next=NULL;if(l-next=NULL)printf(n=提示 : 沒有資料可以排序!n);return ;p=l-next;while(p)s=(Node*)malloc(sizeof(Node); /*新建接點(diǎn)用于保存信息*/s-data=p-data;s-next=NULL;rr=ll;while(rr-next!=NULL & rr-next-data.mgrade=p-data.mgrade)rr=rr-next;if(rr-next=NULL)rr-next=s;elses-next=rr-next;rr-nex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電商直播行業(yè)主播與品牌合作模式創(chuàng)新趨勢及風(fēng)險(xiǎn)控制策略研究報(bào)告
- 八年級期中考試家長會(huì)課件
- 保育員考試題目及答案
- 安全員b證試題及答案
- 安全試題及答案大題
- 安全生產(chǎn)試題及答案2024
- 生物安全培訓(xùn)課件
- 中國發(fā)展簡史課件
- 中醫(yī)推拿科培訓(xùn)課件
- 中國南方區(qū)課件
- 新產(chǎn)品評審管理辦法
- (參考)菲達(dá)公司國內(nèi)電除塵器業(yè)績表
- 游泳池水質(zhì)檢測記錄表
- 大學(xué)生職業(yè)生涯規(guī)劃與就業(yè)指導(dǎo)教案第5講:興趣探索
- 門店電表記錄表
- 七年級勞技 花卉種植 花卉用途 PPT學(xué)習(xí)教案
- 隧道換拱專項(xiàng)施工方案
- 國際金融托馬斯普格爾復(fù)習(xí)資料整理
- 基于單片機(jī)的報(bào)警器與旋轉(zhuǎn)燈設(shè)計(jì)(共21頁)
- 中國農(nóng)業(yè)銀行房地產(chǎn)押品價(jià)值評估操作模板
- JJG596-2012《電子式交流電能表檢定規(guī)程》
評論
0/150
提交評論