版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課程名稱: 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)</p><p> 課程設(shè)計(jì)題目: 家族關(guān)系查詢系統(tǒng)</p><p><b> 目 錄 </b></p><p> 1 課程設(shè)計(jì)的目的…………………………</p><p> 2 需求分析…………………………………</p><p> 3
2、 課程設(shè)計(jì)報(bào)告內(nèi)容………………………</p><p> 3.1概要設(shè)計(jì)…………………………………</p><p> 3.2詳細(xì)設(shè)計(jì)…………………………………</p><p> 3.3調(diào)試分析…………………………………</p><p> 3.4用戶手冊(cè)………………………………</p><p> 3.5測(cè)試結(jié)果…
3、………………………………</p><p> 3.6程序清單………………………………</p><p> 4 小結(jié) ………………………………………</p><p> 5 參考文獻(xiàn) …………………………………</p><p><b> 1.課程設(shè)計(jì)的目的</b></p><p> (1) 熟練
4、使用 C 語(yǔ)言編寫程序,解決實(shí)際問題;</p><p> (2) 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;</p><p> (3) 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;</p><p> (4) 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;</p><p>
5、<b> 2.需求分析</b></p><p> 隨著社會(huì)發(fā)展,人們使用紙質(zhì)的家譜已經(jīng)非常不方便而且不利于在家譜里進(jìn)行添加和修改。而用算法設(shè)計(jì)一個(gè)家族關(guān)系查詢系統(tǒng)則可以解決這個(gè)問題。數(shù)據(jù)結(jié)構(gòu)的二叉樹剛好滿足家譜的基本結(jié)構(gòu)。首先建立一個(gè)文件作為家譜,然后在文件中輸入字符串,實(shí)現(xiàn)了在文件中按照數(shù)據(jù)的邏輯關(guān)系進(jìn)進(jìn)輸入便可建立相應(yīng)的三叉鏈表。然后就是進(jìn)行數(shù)據(jù)的存儲(chǔ)、刪除及查找工作。</p&
6、gt;<p><b> 算法分析</b></p><p> 本次設(shè)計(jì)研究的是建立家族關(guān)系,實(shí)現(xiàn)對(duì)家族成員關(guān)系相關(guān)查詢的問題。在設(shè)計(jì)中使用的數(shù)據(jù)結(jié)構(gòu)為樹狀結(jié)構(gòu),樹狀結(jié)構(gòu)采用三叉鏈表實(shí)現(xiàn)。我們?cè)诮⒑眉易尻P(guān)系后將其存儲(chǔ)在文件中,在文件中家族關(guān)系是以樹的形式存儲(chǔ),運(yùn)用樹的操作使家族關(guān)系得以準(zhǔn)確建立。 家族關(guān)系查詢系統(tǒng)可分為六大模塊,分別是創(chuàng)建、修改、查詢、保存、退出等。建立家族關(guān)
7、系模塊,建立家族關(guān)系并存入文件。建立時(shí)首先輸入家族關(guān)系的名稱,以此名稱為名建立文本文件。接下來按層輸入成員姓名,輸入一個(gè)在文件中寫入一個(gè)字符串,以回車鍵結(jié)束。打開一個(gè)家族關(guān)系。在界面輸入選項(xiàng)名,以家族關(guān)系名為文件名打開文件,如果家族關(guān)系不存在,返回空;如果存在,打開文件,讀取文件。向家族中添加一個(gè)新成員,添加的新成員要根據(jù)其父親確定其在家族中的位置。首先判斷該父親是否在此家族關(guān)系中,若存在,則查找其父親,將新節(jié)點(diǎn)插入其父親的最后一個(gè)孩子
8、之后;若沒有孩子,直接作為左孩子插入。以寫入的方式打開文件,更新數(shù)組中的信息,然后將數(shù)組中的信息寫入文件保存,關(guān)閉文件。查找功能模塊,查找一個(gè)成員的所有祖先及其兄弟,查找一個(gè)成員的所有祖先路徑,需要從它的父親一直向上查找?guī)ЦY(jié)點(diǎn)。查找一個(gè)成員的</p><p><b> 源程序</b></p><p> #include <stdio.h> </
9、p><p> #include <stdlib.h> </p><p> #include <string.h> </p><p> #include<conio.h> </p><p> typedef char TElemType; </p><p> typedef in
10、t status; </p><p> typedef struct BiTPNode{ </p><p> TElemType data[10]; </p><p> struct BiTPNode *parent,*lchild,*rchild; //父親及左右孩子指針</p><p> }BiTPNode,*BiPTree; &
11、lt;/p><p> BiPTree P; </p><p> BiPTree T; </p><p><b> //家譜的創(chuàng)建</b></p><p> int Cre() </p><p><b> { </b></p><p> syst
12、em("cls"); </p><p> FILE *fp; //聲明指向文件的指針</p><p> char filename[40],str[10]; </p><p> printf("請(qǐng)輸入家譜名稱:"); </p><p> getchar(); </p><p&
13、gt; gets(filename); //輸入家譜名稱</p><p> while(filename[0]==NULL) </p><p><b> { </b></p><p> printf("家譜名不能為空,請(qǐng)重新輸入:"); </p><p> gets(filename); &
14、lt;/p><p><b> } </b></p><p> if((fp=fopen(filename,"w"))==NULL) </p><p><b> { </b></p><p> printf("%s家譜創(chuàng)建失敗!\n",filename);
15、</p><p> return 0; </p><p><b> } </b></p><p> printf("請(qǐng)輸入家譜內(nèi)容:\n"); </p><p> while (strlen(gets(str))>0) </p><p><b> {
16、</b></p><p> fputs(str,fp); //向文件寫入字符串</p><p> putc('\n',fp); </p><p><b> } </b></p><p> fclose(fp); //關(guān)閉文件</p><p> printf(&
17、quot;按任一鍵繼續(xù)!"); </p><p><b> getch(); </b></p><p> return 1; </p><p><b> } </b></p><p> status loc(BiPTree T,BiPTree &P,TElemType na
18、me[10]){ </p><p><b> if(T)</b></p><p><b> {</b></p><p><b> P=T; </b></p><p><b> //字符串的比較</b></p><p> i
19、f(!strcmp(name,T->data)) return 1; </p><p> if(loc(T->lchild,P,name)) return 1; </p><p> if(loc(T->rchild,P,name)) return 1;</p><p><b> } </b></p><
20、;p><b> else </b></p><p> return 0; </p><p><b> } </b></p><p><b> //構(gòu)造二叉樹</b></p><p> status inittree(BiPTree &T){ </p
21、><p> T=(BiTPNode *)malloc(sizeof(BiTPNode)); </p><p><b> if(T) </b></p><p> return 0; </p><p> T->lchild=NULL; </p><p> T->rchild=NULL
22、; </p><p> T->parent=NULL; </p><p> return 1; </p><p><b> } </b></p><p><b> //載入家譜</b></p><p> status Crt(BiPTree &T){
23、</p><p> FILE *fp; </p><p> BiPTree Q,R,M,N; </p><p> char filename[40],name[10]; </p><p> system("cls"); //清屏</p><p> R=(BiTPNode *)malloc(
24、sizeof(BiTPNode)); //分配存儲(chǔ)空間</p><p> M=(BiTPNode *)malloc(sizeof(BiTPNode)); </p><p> N=(BiTPNode *)malloc(sizeof(BiTPNode)); </p><p> printf("請(qǐng)輸入家譜名:"); </p><
25、;p> getchar(); </p><p> gets(filename); </p><p> while(filename[0]==NULL) </p><p><b> { </b></p><p> printf("家譜名不能為空,請(qǐng)重新輸入:"); </p>
26、<p> gets(filename); </p><p><b> } </b></p><p> if((fp=fopen(filename,"r"))==NULL) </p><p><b> { </b></p><p> printf("
27、%s家譜打開失敗!\n",filename); </p><p> return 0; </p><p><b> } </b></p><p> inittree(T); </p><p> fscanf(fp,"%s",name); //從文件讀入姓名</p>&l
28、t;p> strcpy(T->data,name); </p><p> T->lchild=NULL; </p><p> T->rchild=NULL; </p><p> T->parent=NULL; </p><p> fclose(fp); </p><p> if
29、((fp=fopen(filename,"r"))==NULL) </p><p><b> { </b></p><p> printf("%家譜打開失敗!\n",filename); </p><p> return 0; </p><p><b> } &l
30、t;/b></p><p> fscanf(fp,"%s",name); </p><p> while(!feof(fp)){ </p><p> if(loc(T,P,name)){ </p><p> fscanf(fp,"%s",name); </p><p&g
31、t; Q=(BiTPNode *)malloc(sizeof(BiTPNode)); </p><p> strcpy(Q->data,name); </p><p> P->lchild=Q; //構(gòu)建孩子</p><p> Q->parent=P; </p><p> Q->lchild=NULL; &l
32、t;/p><p> Q->rchild=NULL; </p><p><b> N=P; </b></p><p><b> } </b></p><p> else if(!loc(T,P,name)){ </p><p> Q=(BiTPNode *)mall
33、oc(sizeof(BiTPNode)); </p><p><b> R=N; </b></p><p> R=R->lchild; </p><p> while(R){ </p><p><b> M=R; </b></p><p> R=R->r
34、child;} </p><p> strcpy(Q->data,name); </p><p> M->rchild=Q; </p><p> Q->parent=M; </p><p> Q->lchild=NULL; </p><p> Q->rchild=NULL;} &
35、lt;/p><p> fscanf(fp,"%s",name); </p><p><b> } </b></p><p> printf("信息載入成功,按任一鍵繼續(xù)!"); </p><p><b> getch(); </b></p>
36、<p> return 1; </p><p><b> } </b></p><p><b> //添加成員</b></p><p> status in(BiPTree &T){ </p><p> char father[10],name[10]; </p&g
37、t;<p> BiPTree Q,M; </p><p> system("cls"); </p><p> printf("請(qǐng)輸入要添加到該家譜中的人的父親姓名:"); </p><p> getchar(); </p><p> gets(father); </p>
38、;<p> while(!loc(T,P,father)){ </p><p> printf("%s不在該家譜中!請(qǐng)重新輸入:",father); </p><p> gets(father);} </p><p> printf("請(qǐng)輸入要添加到該家譜中的人的姓名:"); </p>&l
39、t;p> gets(name); </p><p> Q=(BiTPNode *)malloc(sizeof(BiTPNode)); </p><p> M=(BiTPNode *)malloc(sizeof(BiTPNode)); </p><p> strcpy(Q->data,name); </p><p> Q-
40、>lchild=NULL; </p><p> Q->rchild=NULL; </p><p> if(!P->lchild){ </p><p> P->lchild=Q; </p><p> Q->parent=P;} </p><p><b> else { &
41、lt;/b></p><p> P=P->lchild; </p><p> while(P){ </p><p><b> M=P; </b></p><p> P=P->rchild;} </p><p> M->rchild=Q; </p>&
42、lt;p> Q->parent=M; </p><p><b> } </b></p><p> printf("成員添加成功,按任一鍵繼續(xù)!"); </p><p><b> getch(); </b></p><p> return 1; </p&
43、gt;<p><b> } </b></p><p><b> //刪除成員</b></p><p> status de(BiPTree &T){ </p><p> char name[10]; </p><p> system("cls");
44、 </p><p> printf("請(qǐng)輸入要?jiǎng)h除的人的姓名:"); </p><p> getchar(); </p><p> gets(name); </p><p> while(!loc(T,P,name)){ </p><p> printf("%s不在該家譜中!請(qǐng)重
45、新輸入:",name); </p><p> gets(name);} </p><p> if(!P->rchild){ </p><p> if(P->parent->lchild==P) </p><p> P->parent->lchild=NULL; </p><p
46、><b> else </b></p><p> P->parent->rchild=NULL; </p><p> free(P);} </p><p> else if(P->rchild){ </p><p> if(P->parent->lchild==P) <
47、/p><p> P->parent->lchild=P->rchild; </p><p><b> else </b></p><p> P->parent->rchild=P->rchild; </p><p> free(P);} </p><p>
48、 printf("成員刪除成功,按任一鍵繼續(xù)!"); </p><p><b> getch(); </b></p><p> return 1; </p><p><b> }</b></p><p> status Show(TElemType e[10]){ <
49、;/p><p> printf("%s ",e); </p><p> return 1; </p><p><b> } </b></p><p><b> //二叉樹的遍歷</b></p><p> status pre(BiPTree T,s
50、tatus(*visit)(TElemType[10])){ </p><p><b> if(T) { </b></p><p> if ((*visit)(T->data)) </p><p> if (pre(T->lchild,visit)) </p><p> if (pre(T->r
51、child,visit)) return 1; </p><p> return 0; </p><p><b> } </b></p><p> else return 1; </p><p><b> } </b></p><p><b> //家族成
52、員查詢</b></p><p> status Sea(BiPTree T){ </p><p> char name[10]; </p><p> BiPTree N; </p><p> N=(BiTPNode *)malloc(sizeof(BiTPNode)); </p><p> sys
53、tem("cls"); </p><p> printf("請(qǐng)輸入要查尋的人的姓名:"); </p><p> getchar(); </p><p> gets(name); </p><p> while(!loc(T,P,name)){ </p><p> pri
54、ntf("%s不在該家譜中!請(qǐng)重新輸入:",name); </p><p> gets(name);} </p><p><b> N=P; </b></p><p><b> if(P==T) </b></p><p> printf("%s的父親在該家譜中沒
55、有記載!\n",P->data); </p><p><b> else { </b></p><p> while(N->parent->rchild==N) </p><p> N=N->parent; </p><p> printf("%s的父親是:%s\n&q
56、uot;,P->data,N->parent->data);} </p><p><b> N=P; </b></p><p><b> if(P==T) </b></p><p> printf("%s沒有兄弟!\n",P->data); </p><
57、p> else if(!P->rchild&&P->parent->rchild!=P) </p><p> printf("%s沒有兄弟!\n",P->data); </p><p><b> else { </b></p><p> printf("%s的兄
58、弟有:\n",name); </p><p> while(N->rchild){ </p><p> printf("%s ",N->rchild->data); </p><p> N=N->rchild;} </p><p><b> N=P; </b>
59、</p><p> while(N->parent->rchild==N){ </p><p> printf("%s ",N->parent->data); </p><p> N=N->parent;} </p><p> printf("\n"); </
60、p><p><b> } </b></p><p><b> if(P==T) </b></p><p> printf("%s的祖先在該家譜中沒有記載!\n",name); </p><p><b> else </b></p><
61、p> printf("%s的祖先是:%s\n",name,T->data); </p><p><b> N=P; </b></p><p> if(!P->lchild){ </p><p> printf("%s沒有孩子!\n",name); </p><
62、p> printf("%s沒有后代\n",name);} </p><p><b> else { </b></p><p> printf("%s的孩子有:\n",name); </p><p> printf("%s ",P->lchild->data);
63、 </p><p> N=N->lchild; </p><p> while(N->rchild){ </p><p> printf("%s ",N->rchild->data); </p><p> N=N->rchild;} </p><p> pri
64、ntf("\n"); </p><p> printf("%s的后代有:\n",name); </p><p> pre(P->lchild,Show); </p><p> printf("\n"); </p><p><b> } </b>&l
65、t;/p><p> printf("按任一鍵繼續(xù)!"); </p><p><b> getch(); </b></p><p> return 1; </p><p><b> } </b></p><p><b> //文件的創(chuàng)建<
66、;/b></p><p> status write(BiPTree T,char filename[40]){ </p><p> FILE *fp; </p><p> if((fp=fopen(filename,"a+"))==NULL) </p><p><b> { </b>&
67、lt;/p><p> printf("%s文件創(chuàng)建失敗!\n",filename); </p><p> return 0; </p><p><b> } </b></p><p> fprintf(fp,"%s ",T->data); </p><
68、p> T=T->lchild; </p><p> while(T){ </p><p> fprintf(fp,"%s ",T->data); </p><p> T=T->rchild;} </p><p> fprintf(fp,"\n"); //輸出</p
69、><p> fclose(fp); </p><p> return 1; </p><p><b> } </b></p><p> status prewrite(BiPTree T,status(*visit)(BiPTree,char[40]),char filename[40]){ </p>
70、<p><b> if(T) { </b></p><p> if (T->lchild) </p><p> (*visit)(T,filename); </p><p> prewrite(T->lchild,visit,filename); </p><p> prewrite(T-
71、>rchild,visit,filename); </p><p> return 1;} </p><p> else return 1; </p><p><b> }</b></p><p> status wrong() </p><p><b> { </
72、b></p><p><b> char a; </b></p><p> scanf("%c",&a); </p><p> printf("無(wú)此選項(xiàng),請(qǐng)重新選擇!(按任一鍵繼續(xù)!)"); </p><p><b> getch(); </b
73、></p><p> return 1; </p><p><b> } </b></p><p><b> //家譜的存儲(chǔ)</b></p><p> status Sav(BiPTree T){ </p><p> FILE *fp; </p>
74、<p> char filename[40]; </p><p> system("cls"); </p><p> printf("請(qǐng)輸入新的文件名:"); </p><p> getchar(); </p><p> gets(filename); </p>&l
75、t;p> while(filename[0]==NULL) </p><p><b> { </b></p><p> printf("家譜名不能為空,請(qǐng)重新輸入:"); </p><p> gets(filename); </p><p><b> } </b>
76、</p><p> prewrite(T,write,filename); </p><p> printf("%s家譜保存成功,按任一鍵繼續(xù)!",filename); </p><p><b> getch(); </b></p><p> return 1; </p><
77、;p><b> } </b></p><p><b> //修改家譜</b></p><p> status Upd(){ </p><p> system("cls"); </p><p><b> int xz; </b></p&g
78、t;<p><b> while(1) </b></p><p><b> { </b></p><p> system("cls"); </p><p> printf("\n\n\n\n");</p><p> printf(&qu
79、ot; 家族成員的添加與刪除操作 \n");</p><p> printf(" 請(qǐng)選擇 \n");</p><p> printf(" 1.添加成員. \n"); </p><p> printf(" 2.刪除成員. \n&
80、quot;); </p><p> printf(" 3.返回上一級(jí). \n"); </p><p> printf(" 請(qǐng)選擇:"); </p><p> scanf("%d",&xz); </p><p> switch(xz) <
81、;/p><p><b> { </b></p><p> case 1 : in(T);break; </p><p> case 2 : de(T);break; </p><p> case 3 : return 0; </p><p><b> default :</b
82、></p><p><b> wrong();</b></p><p><b> break; </b></p><p><b> } </b></p><p><b> } </b></p><p><b>
83、; }</b></p><p><b> main() </b></p><p><b> { </b></p><p> P=(BiTPNode *)malloc(sizeof(BiTPNode)); </p><p><b> int xz; </b>
84、</p><p><b> while(1) </b></p><p><b> { </b></p><p> system("cls"); </p><p> printf("\n\n\n\n"); </p><p> p
85、rintf(" 家族關(guān)系查詢系統(tǒng) \n"); </p><p> printf(" 具體操作如下 \n"); </p><p> printf(" 1.創(chuàng)建家譜. \n"); </p><p> printf(" 2.
86、載入家譜. \n"); </p><p> printf(" 3.修改家譜. \n"); </p><p> printf(" 4.查尋成員. \n"); </p><p> printf(" 5.保存家譜.
87、 \n"); </p><p> printf(" 6.退出程序. \n"); </p><p> printf(" 請(qǐng)選擇操作:"); </p><p> scanf("%d",&xz); </p><p> switc
88、h(xz) </p><p><b> { </b></p><p><b> case 1 : </b></p><p><b> Cre();</b></p><p><b> break; </b></p><p>&
89、lt;b> case 2 : </b></p><p><b> Crt(T);</b></p><p><b> break; </b></p><p><b> case 3 : </b></p><p><b> Upd();<
90、/b></p><p><b> break; </b></p><p><b> case 4 : </b></p><p><b> Sea(T);</b></p><p><b> break; </b></p><
91、p><b> case 5 : </b></p><p><b> Sav(T);</b></p><p><b> break; </b></p><p><b> case 6 : </b></p><p> return 0; <
92、;/p><p><b> default :</b></p><p><b> wrong();</b></p><p><b> break; </b></p><p><b> } </b></p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--家族關(guān)系查詢系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 家族關(guān)系查詢系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)查詢系統(tǒng)
- 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》航班查詢系統(tǒng)實(shí)驗(yàn)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢軟件課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--航班信息查詢與檢索系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---數(shù)據(jù)結(jié)構(gòu)相關(guān)算法的演示系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論