



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、課程設(shè)計(jì)目的通過這次的設(shè)計(jì), 主要是做出一個(gè)小型的管理系統(tǒng),來加強(qiáng)對 JAVA 所學(xué)知識(shí)的鞏固和融會(huì)貫通,可以說是對一個(gè)學(xué)期所學(xué)知識(shí)的一個(gè)小結(jié),加深對JAVA 數(shù)據(jù)庫的理解。二、需求分析功能需求分析:該系統(tǒng)具備管理學(xué)生信息、課程信息、 選課信息的功能: 用戶通過輸入賬號和密碼進(jìn)下該系統(tǒng)后,可以進(jìn)行一些基礎(chǔ)維護(hù)(學(xué)生信息維護(hù)、課程信息維護(hù)、選課信息維護(hù))。全部都可以進(jìn)行增加、修改、刪除、模糊查詢。三、數(shù)據(jù)項(xiàng) :1 表 admin(用戶表)FieldTypeNullKeyCommentUsernamechar(10)PRI用戶名passwordchar(10)密碼NameChar(10)用戶昵
2、稱2 表 S(學(xué)生信息表)FieldTypeNullKeyCommentSnonvarchar(50)PRI學(xué)號Snamenvarchar(50)姓名Sxnvarchar(50)系別3 表 C(課程信息表)FieldTypeNullKeyCommentCnonvarchar(50)PRI課號Cnamenvarchar(50)課名4 表 SC(學(xué)生信息表)FieldTypeNullKeyCommentCnonvarchar(50)PRI課號Snonvarchar(50)PRI學(xué)號Cnvarchar(50)成績四、系統(tǒng)功能描述該小型系統(tǒng)主要是用于管理學(xué)生及課程的基本信息,主要功能包括四方面的:1.
3、管理學(xué)生信息,其中包括添加,刪除,修改等操作。2.管理課程信息,其中包括添加,刪除,修改等操作。3.管理選課信息,其中包括添加,刪除,修改等操作。4.查詢信息,其中包括查詢學(xué)生信息,查詢課程信息,查詢選課信息等操作。學(xué)生信息管理系統(tǒng)學(xué)課選查生程課詢管管管管理理理理添修刪添修刪添修刪學(xué)課選加改除加改除加改除生程課信信信信信信信信信信信信息息息息息息息息息息息息五、代碼分析連接數(shù)據(jù)庫方法:這是 java 連接數(shù)據(jù)庫的驅(qū)動(dòng),有關(guān)數(shù)據(jù)庫的操作都要用到他。publicstaticConnection CONN()String driverName ="" ;import.*;publ
4、ic class Menu extends JFrame implements ActionListenerAddstu 增加學(xué)生界面;Updatastu 修改學(xué)生界面;Delstu 刪除學(xué)生界面;AddC增加課程界面 ;DelC 刪除課程界面 ;UpdateC 修改課程界面;AddSC 增加選課界面 ;DelSC 刪除選課界面;UpdateSC 修改選課界面 ;Selstu 學(xué)生查詢界面;JPanel pCenter;CardLayout card=null;JLabel label=null;JMenuBar mb=new JMenuBar();ddActionListener(this)
5、;card=new CardLayout();pCenter=new JPanel();(card);增加學(xué)生界面 =new Addstu();修改學(xué)生界面 =new Updatastu();刪除學(xué)生界面 =new Delstu();增加課程界面 =new AddC();刪除課程界面 =new DelC();修改課程界面 =new UpdateC();增加選課界面 =new AddSC();刪除選課界面 =new DelSC();修改選課界面 =new UpdateSC();學(xué)生查詢界面 =new Selstu();(" 歡迎界面 ",label);(" 增加學(xué)生
6、界面",增加學(xué)生界面);(" 修改學(xué)生界面",修改學(xué)生界面);(" 刪除學(xué)生界面",刪除學(xué)生界面);(" 增加課程界面",增加課程界面);(" 刪除課程界面",刪除課程界面);(" 修改課程界面",修改課程界面);(" 增加選課界面",增加選課界面);(" 刪除選課界面",刪除選課界面);(" 修改選課界面",修改選課界面);(" 學(xué)生查詢界面", 學(xué)生查詢界面);add(pCenter,;validate
7、();setVisible(true);setBounds(400,150,400,280);setDefaultCloseOperation;addWindowListener(newWindowAdapter();import.*;import.*;importclassJTextFieldJButtonAddC課號 ,錄入 ;extends 課名 ;JPanelimplementsActionListenerpublicAddC()try();catch(Exception e)課號 =new JTextField(12);課名 =new JTextField(12);錄入 =new J
8、Button(" 錄入 " );錄入 .addActionListener(this);" 不能設(shè)置外觀:"+e);Box box1=();import.*;import.*;publicclassUpdateCextendsJPanelimplementsActionListenerStringsave =null;JTextField課號1, 課號, 課名;JButton修改, 查找;publicUpdateC()try();catch (Exception e)" 不能設(shè)置外觀 : "+e);課號 1= new JTextFie
9、ld(12);課號 =new JTextField(12);課名 =new JTextField(12);修改 =newJButton("修改");查找 =newJButton("查找");Box box1=();ddActionListener(this);查找 .addActionListener(this);Box boxH=();import.*;import.*;publicclassDelCextendsJPanelStringsave =null;JTextField課號1, 課號, 課名;JButton刪除, 查找;publicDelC(
10、)try();catch(Exception e)implements" 不能設(shè)置外觀ActionListener:"+e);課號 1= new JTextField(12);課號 =new JTextField(12);課名 =new JTextField(12);刪除 =new JButton("刪除");查找 =new JButton("查找");Box box1=();ddActionListener(this );查找 .addActionListener(this);JPanel picPanel=new JPanel()
11、;JPanel messPanel=new JPanel();(box5);(boxH);setLayout(new BorderLayout();JSplitPane splitV=newJSplitPane,messPanel,picPanel);import.*;import.*;publicclassSelstuextends JPanelimplementsActionListenerJTextField學(xué)號 , 姓名 , 系別 ;JButton查找 ;JTextField課號 , 課名 ;JButton查找1;JTextField課號1, 學(xué)號1, 成績;JButton查找2;pu
12、blicSelstu ()學(xué)號 = new JTextField(12);姓名 = new JTextField(12);系別 = new JTextField(12);課號 = new JTextField(12);課名 = new JTextField(12);課號 1 =new JTextField(12);學(xué)號 1 =new JTextField(12);成績 = new JTextField(12);查找 = new JButton(" 查找學(xué)生信息 " );查找 1 =new JButton(" 查找課程信息 " );查找 2 =new JB
13、utton(" 查找選課信息 " );Box box1=();ddActionListener(this );查找 ( this);查找 ( this);JPanel messPanel=new JPanel();JPanel picPanel=new JPanel();JPanel threePanel=new JPanel();(boxH1);(boxH2);(boxH3);setLayout(new BorderLayout();JSplitPane splitV=newJSplitPane,messPanel,picPanel);import .*;import .
14、*;importclass AddC extends JPanel implements ActionListenerJTextField 課號 ,課名 ;JButton 錄入 ;public AddC()try ();catch(Exception e)" 不能設(shè)置外觀 :"+e);課號 =new JTextField(12);課名 =new JTextField(12);錄入 =new JButton(" 錄入 ");錄入 .addActionListener(this);Box box1=();etText().equals(""
15、;)| 課名 .getText().equals("")(this," 學(xué)生信息請?zhí)顫M再錄入!" );Statement stmt=null;ResultSet rs=null,rs1=null;String sql,sql1;sql1="select * from C where Cno='"+課號 .getText()+"'"sql="insert into C values('"+ 課號 .getText()+"','"+ 課名
16、.getText()+"')"tryConnection dbConn1=CONN();stmt=(Statement),;rs1=(sql1);if()(this," 該課號以存在,無法添加else(sql);(this," 添加成功 ");();");();catch(SQLException e)"SQL Exceptionis:"+();import .*;import .*;import .*;importimport.*;class AddSC extends JPanel implements
17、 ActionListenerJTextField 課號 ,學(xué)號 ,成績 ;JButton 錄入 ;public AddSC()try ();catch(Exception e)" 不能設(shè)置外觀 :"+e);課號 =new JTextField(12);學(xué)號 =new JTextField(12);成績 =new JTextField(12);錄入 =new JButton(" 錄入 ");錄入 .addActionListener(this);Box box1=();etText().equals("")| 學(xué)號 .getText(
18、).equals("")(this," 填寫課號與學(xué)號才能錄入!" );elseStatement stmt=null;ResultSet rs=null,rs1=null,rsC=null,rsS=null;String sql,sql1,sqlS,sqlC;sqlC="select * from C where Cno='"+課號 .getText()+"'"sqlS="select * from S where Sno='"+ 學(xué)號 .getText()+"
19、;'"sql1="select * from SC where Cno='"+課號 .getText()+"' and Sno='"+學(xué)號.getText()+"'"sql="insert into SC values('"+ 課號 .getText()+"','"+ 學(xué)號 .getText()+"','"+ 成績.getText()+"')"tryConne
20、ction dbConn1=CONN();stmt=(Statement),;rsC=(sqlC);if()rsS=(sqlS);if()rs1=(sql1);if()(this," 該學(xué)生以選該課程號,無法添加");else(sql);(this," 添加成功 ");();else(this," 該學(xué)生不存在,無法添加");();else(this," 該課程不存在,無法添加");();();catch(SQLException e)"SQL Exceptionis:"+();import .
21、*;import .*;importclass Addstu extends JPanel implements ActionListener JTextField 學(xué)號 ,姓名 ,系別 ;JButton 錄入 ;public Addstu()try ();catch(Exception e)" 不能設(shè)置外觀:"+e);學(xué)號 =new JTextField(12);姓名 =new JTextField(12);系別 =new JTextField(12);錄入 =new JButton(" 錄入 ");錄入 .addActionListener(this
22、);Boxbox1=();etText().equals("")|姓 名 .getText().equals("")| 系別.getText().equals("")(this," 學(xué)生信息請?zhí)顫M再錄入!" );Statement stmt=null;ResultSet rs1=null;String sql,sql1;sql1="select * from S where Sno='"+ 學(xué)號 .getText()+"'"sql="insertin
23、toSvalues('"+ 學(xué) 號 .getText()+"','"+姓名.getText()+"','"+ 系別 .getText()+"')" tryConnection dbConn1=CONN();stmt=(Statement),;rs1=(sql1);if()(this," 該學(xué)號以存在,無法添加");else(sql);(this," 添加成功 ");();();catch(SQLException e)"SQL
24、Exceptionis:"+();import.*;import .*;public class DelC extends JPanel implements ActionListenerString save=null;JTextField 課號 1,課號 ,課名 ;JButton 刪除 ,查找 ;public DelC()try ();catch(Exception e)" 不能設(shè)置外觀:"+e);課號 1=new JTextField(12);課號 =new JTextField(12);課名 =new JTextField(12);刪除 =new JBut
25、ton(" 刪除 ");查找 =new JButton(" 查找 ");Box box1=();ddActionListener(this); 查找 .addActionListener(this);JPanel picPanel=new JPanel();JPanel messPanel=new JPanel();(box5);(boxH);setLayout(new BorderLayout();JSplitPanesplitV=newJSplitPane,messPanel,picPanel);quals("")(this,&q
26、uot; 請?zhí)顚懖樵兊恼n號! " ); elsesql1="select * from C where Cno='"+課號 ()+"'"tryConnection dbConn1=CONN();stmt=(Statement),;rs1=(sql1);if() 課號 .setText("Cno").trim();課名 .setText("Cname").trim();save=課號 ().trim();else(this," 沒有這個(gè)課號的課程" );();();cat
27、ch(SQLException e1)"SQL Exceptionis:"+();elseif(obj= 刪除 )if(save=null)(this,"還沒查找需要修改的課程" );elsesql="delete from C where Cno='"+save+"'"sqlSC="delete from SC where Cno='"+save+"'"tryConnection dbConn1=CONN();stmt=(Statement)
28、,;(sql);(sqlSC);save=null;(this," 刪除完成 " );課號 .setText("");課名 .setText("");();catch(SQLException e1)"SQL Exceptionis:"+();import.*;import .*;public class DelSC extends JPanel implements ActionListener String saveC=null;String saveS=null;JTextField 課號 1,學(xué)號 1,學(xué)號
29、 ,課號 ,成績 ;JButton 刪除 ,查找 ;public DelSC()try ();catch(Exception e)"不能設(shè)置外觀:"+e);學(xué)號 1=new JTextField(12);課號 1=new JTextField(12);課號 =new JTextField(12);學(xué)號 =new JTextField(12);成績 =new JTextField(12);刪除 =new JButton(" 刪除 ");查找 =new JButton(" 查找 ");Box box1=();ddActionListene
30、r(this);查找 .addActionListener(this);JPanel picPanel=new JPanel();JPanel messPanel=new JPanel();(box5);(boxH);setLayout(new BorderLayout();JSplitPane splitV=newJSplitPane,messPanel,picPanel);quals("")| 學(xué)號 ().equals("")(this,"請?zhí)顚懲瓿刹樵兊男畔ⅲ?quot; );elsesql1="select * from SC
31、 where Cno='"+課號 ()+"' and Sno='"+學(xué)號 ()+"'"tryConnection dbConn1=CONN();stmt=(Statement),;rs1=(sql1);if()課號 .setText("Cno").trim();學(xué)號 .setText("Sno").trim();成績 .setText("C").trim();saveC=課號 ().trim();saveS=學(xué)號 ().trim();else(this,
32、" 沒有這個(gè)課號的學(xué)生();();catch(SQLException e1)" );"SQL Exceptionis:"+();elseif(obj= 刪除 )if(saveC=null|saveS=null)(this,"還沒查找需要修改的學(xué)生/課程 " );elsesql="delete from SC where Cno='"+saveC+"' and Sno='"+saveS+"'" tryConnection dbConn1=CON
33、N();stmt=(Statement),;(sql);saveC=null;saveS=null;(this," 刪除完成 " );課號 .setText("");學(xué)號 .setText("");成績 .setText("");();catch(SQLException e1)"SQL Exceptionis:"+();import.*;import .*;public class Delstu extends JPanel implements ActionListener String s
34、ave=null;JTextField 學(xué)號 1,學(xué)號 ,姓名 ,系別 ;JButton 刪除 ,查找 ;public Delstu()try ();catch(Exception e)" 不能設(shè)置外觀:"+e);學(xué)號 1=new JTextField(12);學(xué)號 =new JTextField(12);姓名 =new JTextField(12);系別 =new JTextField(12);刪除 =new JButton(" 刪除 ");查找 =new JButton(" 查找 ");Box box1=();ddActionLi
35、stener(this);查找 .addActionListener(this);JPanel picPanel=new JPanel();JPanel messPanel=new JPanel();(box5);(boxH);setLayout(new BorderLayout();JSplitPane splitV=new JSplitPane,messPanel,picPanel);quals("")(this," 請?zhí)顚懖樵兊膶W(xué)號! " ); elsesql1="select * from S where Sno='"
36、+ 學(xué)號 ()+"'"tryConnection dbConn1=CONN();stmt=(Statement),;rs1=(sql1);if() 學(xué)號 .setText("Sno").trim();姓名 .setText("Sname").trim();系別 .setText("Sx").trim();save=學(xué)號 ().trim();else(this," 沒有這個(gè)學(xué)號的學(xué)生" );();();catch(SQLException e1)"SQL Exceptionis:
37、"+();elseif(obj= 刪除 )if(save=null)(this," 還沒查找需要修改的學(xué)生 " ); elsesql="delete from S where Sno='"+save+"'"sqlSC="delete from SC where Sno='"+save+"'"tryConnection dbConn1=CONN();stmt=(Statement),;(sql);(sqlSC);save=null;(this,"
38、 刪除完成 " );學(xué)號 .setText("");姓名 .setText("");系別 .setText("");();catch(SQLException e1)"SQL Exceptionis:"+();import.*;public class Menu extends JFrame implements ActionListener Addstu 增加學(xué)生界面 ;Updatastu 修改學(xué)生界面;Delstu 刪除學(xué)生界面 ;AddC增加課程界面;DelC 刪除課程界面 ;UpdateC 修改課
39、程界面;AddSC 增加選課界面;DelSC 刪除選課界面 ;UpdateSC 修改選課界面 ;Selstu 學(xué)生查詢界面;JPanel pCenter;CardLayout card=null;JLabel label=null;JMenuBar mb=new JMenuBar();ddActionListener(this);card=new CardLayout();pCenter=new JPanel();(card);增加學(xué)生界面 =new Addstu();修改學(xué)生界面 =new Updatastu();刪除學(xué)生界面 =new Delstu();增加課程界面 =new AddC()
40、;刪除課程界面 =new DelC();修改課程界面 =new UpdateC();增加選課界面 =new AddSC();刪除選課界面 =new DelSC();修改選課界面 =new UpdateSC();學(xué)生查詢界面 =new Selstu();(" 歡迎界面 ",label);(" 增加學(xué)生界面 (" 修改學(xué)生界面 (" 刪除學(xué)生界面 (" 增加課程界面 (" 刪除課程界面 (" 修改課程界面 (" 增加選課界面 (" 刪除選課界面 (" 修改選課界面 (" 學(xué)生查詢
41、界面",增加學(xué)生界面);",修改學(xué)生界面);",刪除學(xué)生界面);",增加課程界面);",刪除課程界面);",修改課程界面);",增加選課界面);",刪除選課界面);",修改選課界面);", 學(xué)生查詢界面);add(pCenter,;validate();setVisible(true);setBounds(400,150,600,380);setDefaultCloseOperation;addWindowListener(new WindowAdapter();import .*;import
42、.*;import .*;public class SelC extends JFrame Vector rowData, columnNames;Statement stmt=null;String sql=null;JTable jt = null;JScrollPane jsp = null;PreparedStatement ps=null;ResultSet rs=null;public SelC(String sql1)columnNames = new Vector();import .*;import .*;public class SelSC extends JFrame V
43、ector rowData, columnNames;Statement stmt=null;String sql=null;JTable jt = null;JScrollPane jsp = null;PreparedStatement ps=null;ResultSet rs=null;public SelSC(String sql1)columnNames = new Vector();import.*;import .*;public class Selstu extends JPanel implements ActionListener JTextField 學(xué)號 ,姓名 ,系別
44、 ;JButton 查找 ;JTextField 課號 ,課名 ;JButton 查找 1;JTextField 課號 1,學(xué)號 1,成績 ;JButton 查找 2;public Selstu ()學(xué)號 =new JTextField(12);姓名 =new JTextField(12);系別 =new JTextField(12);課號 =new JTextField(12);課名 =new JTextField(12);課號 1=new JTextField(12);學(xué)號 1=new JTextField(12);成績 =new JTextField(12);查找 =new JButto
45、n(" 查找學(xué)生信息");查找 1=new JButton(" 查找課程信息 ");查找 2=new JButton(" 查找選課信息 ");Box box1=();ddActionListener(this);查找 (this);查找 (this);JPanel messPanel=new JPanel();JPanel picPanel=new JPanel();JPanel threePanel=new JPanel();(boxH1);(boxH2);(boxH3);setLayout(new BorderLayout();J
46、SplitPanesplitV=newJSplitPane,messPanel,picPanel);etText().equals("")&&姓名.getText().equals("")&& 系別 .getText().equals("")sql="select * from S ""000");etText().equals("")if( 姓名 .getText().equals("")sql="select*
47、fromSwhereSxlike'%"+系別.getText()+"%'""001");elseif( 系別 .getText().equals("")sql="select* fromS where Snamelike'%"+姓名 .getText()+"%'""010");elsesql="select*fromSwhereSnamelike'%"+姓名.getText()+"%'an
48、d Sx like'%"+系別 .getText()+"%'""011");elseif( 姓名 .getText().equals("")if( 系別 .getText().equals("")sql="select* fromS where Snolike'%"+ 學(xué)號 .getText()+"%'""100");elsesql="select * from S where Sno like'
49、%"+學(xué)號 .getText()+"%'and Sx like'%"+ 系別 .getText()+"%'""101");elseif( 系別 .getText().equals("")sql="select*fromS wherelike'%"+ 學(xué)號 .getText()+"%' and Sname like'%"+ 姓名 .getText()+"%'""110");
50、elsesql="select*fromSwhereSnolike'%"+號.getText()+"%'andSnamelike'%"+姓名.getText()+"%'andSxlike'%"+別.getText()+"%'""111");Sno學(xué)系K=new Students(sql);elseif(obj=查找1)if( 課號 .getText().equals("")&&課名 .getText().equa
51、ls("")sql="select * from C ""00");etText().equals("")sql="select * from C whereCname like'%"+課名 .getText()+"%'""01");elseif( 系別 .getText().equals("")sql="select* from C where Cno like'%"+課號 .getText()+"%'""10");elsesql="select * from C whereCno like'%"+ 課號 .getText()+"%' andCname like'%"+ 姓名 .getText()+"%'""11");K1=new SelC(sql);elseif(o
溫馨提示
- 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 仿制藥一致性評價(jià)對2025年醫(yī)藥市場醫(yī)藥企業(yè)醫(yī)藥行業(yè)創(chuàng)新藥物研發(fā)優(yōu)化策略報(bào)告
- 2025年私募股權(quán)投資基金行業(yè)熱點(diǎn)投資領(lǐng)域分析報(bào)告:投資熱點(diǎn)與退出策略創(chuàng)新路徑
- 2025年航空業(yè)節(jié)能減排技術(shù)應(yīng)用與創(chuàng)新報(bào)告
- 2025年土壤污染修復(fù)技術(shù)在土壤污染修復(fù)行業(yè)投資中的應(yīng)用效果與成本效益研究報(bào)告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺(tái)霧計(jì)算協(xié)同機(jī)制與人工智能技術(shù)融合報(bào)告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺(tái)安全多方計(jì)算在智能物流管理中的應(yīng)用研究報(bào)告
- 2025年綠色建筑材料市場推廣策略與政策扶持深度分析報(bào)告
- 2025年物流行業(yè)智能化倉儲(chǔ)解決方案報(bào)告
- 2025年中國梭織女式短袖市場現(xiàn)狀分析及前景預(yù)測報(bào)告
- 2025年中國數(shù)控加工拉伸件市場現(xiàn)狀分析及前景預(yù)測報(bào)告
- 2025年全國學(xué)生愛眼護(hù)眼、預(yù)防近視知識(shí)考試題與答案
- 2025年四川省德陽市中考模擬地理試題四套附參考答案
- 特種設(shè)備崗位試題及答案
- 2025年北京市東城區(qū)九年級初三一模英語試卷(含答案)
- 支教培訓(xùn)考試題及答案
- 國開2024年秋《機(jī)械制圖》形考作業(yè)1-4答案
- 個(gè)人工勞務(wù)分包合同
- MOOC 創(chuàng)業(yè)管理-江蘇大學(xué) 中國大學(xué)慕課答案
- 2024年四川省自然資源投資集團(tuán)有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
- IATF16949過程審核檢查表模版
- 單相半橋逆變電路
評論
0/150
提交評論