版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課程設(shè)計(jì)(大作業(yè))報(bào)告</p><p> 課程名稱:程序設(shè)計(jì)語言 </p><p> 設(shè)計(jì)題目: 學(xué)生借閱系統(tǒng) </p><p> 院 系: 自動化控制與機(jī)械工程學(xué)院 </p><p> 課程設(shè)計(jì)(大作業(yè))任務(wù)書</p><p> 課程設(shè)計(jì)題目:學(xué)生借閱系統(tǒng)&
2、lt;/p><p><b> 課程設(shè)計(jì)要求:</b></p><p> 設(shè)計(jì)一個學(xué)生借閱系統(tǒng),功能包括:學(xué)生管理子系統(tǒng),由管理員負(fù)責(zé)錄入信息(包括學(xué)號、姓名、學(xué)院名、圖書名等信息),刪除學(xué)生信息等功能;學(xué)生借閱子系統(tǒng)(保存用戶名、借閱書的編號、書名等信息),負(fù)責(zé)學(xué)生借閱、歸還、續(xù)借、超期罰款等功能;查詢子系統(tǒng),包括可以查詢學(xué)生庫中的借閱圖書、學(xué)生借閱情況等,信息保存到
3、文件中。</p><p><b> 工作計(jì)劃及安排:</b></p><p> 第十八周:問題分析,方案設(shè)計(jì),軟件編碼和調(diào)試;</p><p> 第19周: 軟件測試,書寫課程實(shí)驗(yàn)設(shè)計(jì)報(bào)告,答辯。</p><p> 指導(dǎo)教師簽字 </p><p> 2013年
4、7 月 9 日 </p><p> 課程設(shè)計(jì)(大作業(yè))報(bào)告</p><p><b> 題目分析</b></p><p> 設(shè)計(jì)一個學(xué)生借閱系統(tǒng),功能包括:學(xué)生管理子系統(tǒng),由管理員負(fù)責(zé)錄入信息(包括學(xué)號、姓名、學(xué)院名、圖書名等信息),刪除學(xué)生信息等功能;學(xué)生借閱子系統(tǒng)(保存用戶名、借閱書的編號、書名等信息),負(fù)責(zé)圖書的借閱、歸
5、還、續(xù)借、超期罰款等功能;查詢子系統(tǒng),包括可以查詢學(xué)生庫中的書、學(xué)生借閱情況等;信息保存到文件中。</p><p><b> 基本理論</b></p><p> 建立一個關(guān)于圖書的結(jié)構(gòu)體,內(nèi)含ISBN號,書名,作者,出版社和價格。</p><p> InsertDoc函數(shù),負(fù)責(zé)新書信息的插入。</p><p>
6、void sort_maopao函數(shù),用冒泡法將圖書的ISBN號以由小到大的順序進(jìn)行排列。 </p><p> void DeleteDoc函數(shù),將廢舊圖書信息進(jìn)行刪除。</p><p> void Print_Book_Doc函數(shù),輸出圖書的信息,方便讀者選書。</p><p> void search_book函數(shù),進(jìn)行圖書的查詢。<
7、/p><p> void info_change函數(shù),將圖書信息進(jìn)行修改。</p><p> 主函數(shù),用switch-case結(jié)構(gòu)進(jìn)行函數(shù)的調(diào)用。</p><p><b> 總體設(shè)計(jì)</b></p><p><b> 1、 軟件模塊設(shè)計(jì)</b></p><p><b
8、> 圖2-2-1</b></p><p><b> 2、軟件界面設(shè)計(jì)</b></p><p><b> 圖2-3-1</b></p><p><b> 實(shí)驗(yàn)器材</b></p><p> 開發(fā)工具:Visual C++ 6.0, CodeBlock1
9、0.05,等</p><p> 環(huán)境:Windows 7操作系統(tǒng)。</p><p> 方法步驟(程序調(diào)試)</p><p><b> 1. 調(diào)試方案</b></p><p> 選擇1,輸入201204100203 遲寬廣 自機(jī)學(xué)院 《鋼鐵事怎樣煉成的》 001</p><p>
10、 201204100207 龔正雄 自機(jī)學(xué)院 《成功的男人》 002</p><p> 201204100228 譚小春 自機(jī)學(xué)院 《愛情三十六計(jì)》 003</p><p> 選擇2,輸出圖3-2-1</p><p> 選擇7,輸出圖3-2-2</p><p><b> 2. 調(diào)試結(jié)果&l
11、t;/b></p><p><b> 圖3-2-1</b></p><p><b> 圖3-2-2</b></p><p><b> 成效分析</b></p><p> 在編程實(shí)踐中,我才知道自己基礎(chǔ)知識的不足,通過一段時間的努力學(xué)習(xí),我的基礎(chǔ)知識更加牢固,尤其是
12、后面指針,結(jié)構(gòu)體,鏈表,文件的知識了解的更加深入。其次是知識的運(yùn)用,以前學(xué)到的知識都是片面的了解,一到編程序時就無從下手,現(xiàn)在能熟練的應(yīng)用各種知識,使知識得到應(yīng)用。最后是編程的技巧,從整體構(gòu)型到各個函數(shù)的應(yīng)用都有了很大的進(jìn)步。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]c語言程序設(shè)計(jì),馬秀麗,李筠著。清華大學(xué)出版社.2008.1</
13、p><p> [2]c程序設(shè)計(jì)(第三版),譚浩強(qiáng)著,清華大學(xué)出版社.2005.7</p><p> [3]面向?qū)ο蟪绦蛟O(shè)計(jì)(c++語言),李愛華,程磊著,清華大學(xué)出版社.2010,2</p><p><b> 八、 源代碼</b></p><p> #include<stdio.h></p>
14、<p> #include<math.h></p><p> #include<string.h></p><p> #include<stdlib.h></p><p> struct books_list</p><p><b> {</b></p>
15、;<p> char writer[20]; /*學(xué)院名*/</p><p> char title[20]; </p><p> char ISBN[20]; /*姓名*/ </p><p> char publishinghouse[20];
16、 /*圖書名*/</p><p> int price,borrowed; /*圖書編號*/</p><p> struct books_list * next;</p><p> /*鏈表的指針域*/</p><p><b> };</b></p>
17、<p> struct books_list * Create_Books_Doc(); /*新建鏈表*/</p><p> void InsertDoc(struct books_list * head); /*插入*/</p><p> void sort_maopao(struct books_list * hea
18、d ); // 排序</p><p> void DeleteDoc(struct books_list * head , int num); /*刪除*/</p><p> void Print_Book_Doc(struct books_list * head); /*瀏覽*/</p><p> void search_
19、book(struct books_list * head); /*查詢*/</p><p> void info_change(struct books_list * head); /*修改*/</p><p> void save(struct books_list * head); /*保存數(shù)據(jù)至文件*/&
20、lt;/p><p> /*新建鏈表頭節(jié)點(diǎn)*/</p><p> struct books_list * Create_Books_Doc()</p><p><b> {</b></p><p> struct books_list * head;</p><p> head=(struct
21、 books_list *)malloc(sizeof(struct books_list)); /*分配頭節(jié)點(diǎn)空間*/</p><p> head->next=NULL; /*頭節(jié)點(diǎn)指針域初始化,定為空*/</p><p> return head;</p><p><b> }</b></p><p>
22、 /*保存數(shù)據(jù)至文件*/</p><p> void save(struct books_list * head)</p><p><b> {</b></p><p> struct books_list *p;</p><p><b> FILE *fp;</b></p>
23、<p><b> p=head;</b></p><p> fp=fopen("data.txt","w+"); /*以寫方式新建并打開 data.txt文件*/</p><p> fprintf(fp," --------學(xué) 號-------姓 名---------------學(xué) 院
24、 名----------圖 書 名-----------借 閱 圖 書 編 號 \n"); </p><p> /*指針從頭節(jié)點(diǎn)開始移動,遍歷至尾結(jié)點(diǎn),依次輸出學(xué)生借閱信息*/</p><p> while(p->next!= NULL)</p><p><b> {</b></p><p>
25、 p=p->next;</p><p> fprintf(fp,"%-6.6s %-15.10s %-10.10s %-10.10s %-10.10d\n",p->ISBN,p->title,p->writer,p->publishinghouse,p->price);</p><p><b> }</b>
26、</p><p> fprintf(fp,"\n");</p><p> fclose(fp);</p><p> printf(" 已將學(xué)生數(shù)據(jù)保存到 data.txt 文件\n");</p><p><b> }</b></p><p>
27、 void sort_maopao(struct books_list * head )</p><p><b> {</b></p><p> struct books_list *tail,*p,*q,*p1,*t; //p1等于head t等于head q保存p的next節(jié)點(diǎn)</p><p> p1=(struct books_li
28、st *)malloc(sizeof (struct books_list));</p><p> for(t=head->next;t!=NULL;t=t->next)</p><p> for(p=head->next,p1=head;p->next!=NULL;p=p->next,p1=p1->next)</p><p>
29、;<b> {</b></p><p> if(strcmp(p->ISBN,p->next->ISBN)>0)</p><p><b> { </b></p><p> q=p->next->next;</p><p> tail=p->ne
30、xt;</p><p> tail->next=NULL;</p><p> p->next=q;</p><p> p1->next=tail;</p><p> tail->next=p;</p><p><b> p=p1;</b></p>&
31、lt;p><b> } </b></p><p><b> }</b></p><p> save(head); //保存文件</p><p><b> }</b></p><p><b> /*插入*/</b></p>&
32、lt;p> void InsertDoc(struct books_list *head)</p><p><b> {</b></p><p> /*定義結(jié)構(gòu)體指針變量 s指向開辟的新結(jié)點(diǎn)首地址 p為中間變量*/</p><p> struct books_list *s, *p;</p><p> c
33、har flag='Y'; /*定義flag,方便用戶選擇重復(fù)輸入*/</p><p><b> p=head;</b></p><p> /*遍歷到尾結(jié)點(diǎn),p指向尾結(jié)點(diǎn)*/</p><p> while(p->next!= NULL)</p><p><b> {</b&g
34、t;</p><p> p=p->next;</p><p><b> } </b></p><p> /*開辟新空間,存入數(shù)據(jù),添加進(jìn)鏈表*/</p><p> while(flag=='Y'||flag=='y')</p><p><b&
35、gt; {</b></p><p> system("cls");</p><p> p->borrowed=0;</p><p> s=(struct books_list *)malloc(sizeof(struct books_list));</p><p> printf("\
36、n 請輸入學(xué)生學(xué)號:");</p><p> fflush(stdin);</p><p> scanf("%s",s->ISBN);</p><p> printf("\n 請輸入學(xué)生姓名:");</p><
37、p> fflush(stdin);</p><p> scanf("%s",s->title);</p><p> printf("\n 請輸入學(xué)生學(xué)院名:");</p><p> fflush(stdin);</p><p> scanf(&
38、quot;%s",s->writer);</p><p> printf("\n 請輸入借閱圖書名:");</p><p> fflush(stdin);</p><p> scanf("%s",s->publishinghouse);</p>&
39、lt;p> printf("\n 請輸入借閱圖書編號:");</p><p> fflush(stdin);</p><p> scanf("%d",&s->price);</p><p> printf("\n");</p>
40、<p> p->next=s; /*將新增加的節(jié)點(diǎn)添加進(jìn)鏈表*/</p><p> p=s; /*p指向尾節(jié)點(diǎn),向后移*/</p><p> s->next=NULL;</p><p> printf(" ━━━━ 添加成功!━━━━");</p><p&g
41、t; printf("\n 繼續(xù)添加?(Y/N):");</p><p> fflush(stdin);</p><p> scanf("%c",&flag);</p><p> printf("\n");</p><p
42、> if(flag=='N'||flag=='n')</p><p><b> {break;}</b></p><p> else if(flag=='Y'||flag=='y')</p><p> {continue;}</p><p>&
43、lt;b> }</b></p><p> save(head); /*保存數(shù)據(jù)至文件*/</p><p> system("cls");</p><p><b> return;</b></p><p><b> }</b></p>&
44、lt;p><b> /*查詢操作*/</b></p><p> void search_book(struct books_list *head)</p><p><b> {</b></p><p> struct books_list * p;</p><p> char tem
45、p[20];</p><p><b> p=head;</b></p><p> if(head==NULL || head->next==NULL) /*判斷數(shù)據(jù)庫是否為空*/</p><p><b> {</b></p><p> printf("
46、 ━━━━ 學(xué)生庫為空!━━━━\n");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("請輸入您要查找的書名: "
47、;);</p><p> fflush(stdin);</p><p> scanf("%s",temp);</p><p> /*指針從頭節(jié)點(diǎn)開始移動,遍歷至尾結(jié)點(diǎn),查找學(xué)生借閱信息*/</p><p> while(p->next!= NULL)</p><p><b>
48、 {</b></p><p> p=p->next;</p><p> if(strcmp(p->title,temp)==0)</p><p><b> {</b></p><p> printf("\n學(xué)生信息已找到!\n");</p><p&
49、gt; printf("\n");</p><p> printf("學(xué)號: %s\t\n",p->ISBN);</p><p> printf("姓名: %s\t\n",p->writer);</p><p> printf("學(xué)院名: %s\t\n",p->
50、writer);</p><p> printf("圖書名: %s\t\n",p->publishinghouse);</p><p> printf("圖書編號: %.2d\t\n",p->price);</p><p><b> }</b></p><p>
51、 if(p->next==NULL)</p><p><b> {</b></p><p> printf("\n查詢完畢!\n");</p><p><b> }</b></p><p><b> } </b></p><
52、p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p><b> /*瀏覽操作*/</b></p><p> void Print_Book_Doc(struct b
53、ooks_list * head)</p><p><b> {</b></p><p> struct books_list * p;</p><p> if(head==NULL || head->next==NULL) /*判斷數(shù)據(jù)庫是否為空*/</p><p><b> {</b&
54、gt;</p><p> printf("\n ━━━━ 沒有學(xué)生借閱記錄! ━━━━\n\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b>
55、p=head;</b></p><p> printf("\n\n\n\t\t學(xué)號 姓名 學(xué)院名 圖書名 圖書編號 \n"); </p><p> /*指針從頭節(jié)點(diǎn)開始移動,遍歷至尾結(jié)點(diǎn),依次輸出學(xué)生借閱信息*/</p><p> while(p->next!=
56、 NULL)</p><p><b> {</b></p><p> p=p->next;</p><p> printf("\t\t%-7.6s %-13.10s %-10.10s %-10.10s %d \n",p->ISBN,p->title,p->writer,p->publish
57、inghouse,p->price); </p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p><b> /*修改操作*/</b></p><
58、;p> void info_change(struct books_list * head)</p><p><b> {</b></p><p> struct books_list * p;</p><p> int panduan=0; /*此變量用于判斷是否找到學(xué)生信息*/</p><p> ch
59、ar temp[20];</p><p><b> p=head;</b></p><p> printf("請輸入要修改的姓名:");</p><p> scanf("%s",temp);</p><p> while(p->next!= NULL)</p&g
60、t;<p><b> {</b></p><p> p=p->next;</p><p> if(strcmp(p->title,temp)==0)</p><p><b> {</b></p><p> printf("\n
61、 請輸入學(xué)生學(xué)號:");</p><p> fflush(stdin);</p><p> scanf("%d",p->ISBN);</p><p> printf("\n 請輸入學(xué)生姓名:");</p><p> fflush(s
62、tdin);</p><p> scanf("%s",p->title);</p><p> printf("\n 請輸入學(xué)生學(xué)院名:");</p><p> fflush(stdin);</p><p> scanf("%s",p
63、->writer);</p><p> printf("\n 請輸入圖書名:");</p><p> fflush(stdin);</p><p> scanf("%s",p->publishinghouse);</p><p> printf(
64、"\n 請輸入借閱圖書編號:");</p><p> fflush(stdin);</p><p> scanf("%d",&p->price);</p><p> printf("\n");</p><p> pandua
65、n=1;</p><p><b> }</b></p><p><b> }</b></p><p> if(panduan==0)</p><p><b> {</b></p><p> printf("\n
66、 ━━━━ 沒有學(xué)生借閱記錄! ━━━━\n\n");</p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> void book_borrow(st
67、ruct books_list * head)</p><p><b> {</b></p><p> struct books_list * p;</p><p> int panduan=0; /*此變量用于判斷是否找到學(xué)生信息*/</p><p> char temp[20];</p><
68、;p><b> p=head;</b></p><p> printf("請輸入姓名:");</p><p> scanf("%s",temp);</p><p> while(p->next!= NULL)</p><p><b> {</b
69、></p><p> p=p->next;</p><p> if((strcmp(p->title,temp)==0)&&(p->borrowed==0))</p><p><b> {</b></p><p> p->borrowed=1;</p>
70、<p> panduan=1;</p><p> printf("借閱成功 \n");</p><p><b> }</b></p><p><b> }</b></p><p> if(panduan==0)</p><p><
71、b> {</b></p><p> printf("\n ━━━━ 沒有該學(xué)生信息! ━━━━\n\n");</p><p><b> }</b></p><p><b> return;</b></p><p&
72、gt;<b> }</b></p><p><b> /*刪除操作*/</b></p><p> void DeleteDoc(struct books_list * head)</p><p><b> {</b></p><p> struct books_lis
73、t *s,*p; /*s為中間變量,p為遍歷時使用的指針*/</p><p> char temp[20];</p><p> int panduan; /*此變量用于判斷是否找到了學(xué)生信息*/</p><p> panduan=0;</p><p><b> p=s=head;</b></p>
74、<p> printf(" [請輸入您要刪除的姓名]:");</p><p> scanf("%s",temp);</p><p> /*遍歷到尾結(jié)點(diǎn)*/</p><p> while(p!= NULL)</p><p><b>
75、 {</b></p><p> if(strcmp(p->title,temp)==0)</p><p><b> {</b></p><p> panduan++;</p><p><b> break;</b></p><p><b>
76、 }</b></p><p> p=p->next;</p><p><b> } </b></p><p> if(panduan==1)</p><p><b> {</b></p><p> for(;s->next!=p;)
77、/*找到所需刪除卡號結(jié)點(diǎn)的上一個結(jié)點(diǎn)*/</p><p><b> {</b></p><p> s=s->next;</p><p><b> }</b></p><p> s->next=p->next; /*將后一節(jié)點(diǎn)地址賦值給前一節(jié)點(diǎn)的指針域*/</p>
78、<p><b> free(p);</b></p><p> printf("\n ━━━━ 刪除成功! ━━━━\n");</p><p><b> }</b></p><p> else /*未找到相應(yīng)學(xué)生姓名*/</p>
79、;<p><b> {</b></p><p> printf(" 您輸入的姓名不存在,請確認(rèn)后輸入!\n");</p><p><b> }</b></p><p><b> return;</b></p>
80、<p><b> }</b></p><p> int main(void)</p><p><b> { </b></p><p> struct books_list * head;</p><p> int choice;</p><p> h
81、ead=NULL;</p><p><b> do{</b></p><p> printf(" \n"); </p><p> printf(" ---------
82、----------- 學(xué)生借閱系統(tǒng)-------------------\n\n");</p><p> printf(" [1]學(xué)生信息錄入 \n\n");</p><p> printf("
83、[2]學(xué)生信息瀏覽 \n\n");</p><p> printf(" [3]學(xué)生信息查詢 \n\n");</p><p> printf(" [4]學(xué)生信息修改
84、 \n\n");</p><p> printf(" [5]學(xué)生信息刪除 \n\n");</p><p> printf(" [6]學(xué)生排序
85、 \n\n");</p><p> printf(" [7]學(xué)生借閱 \n\n");</p><p> printf(" [0]退出系統(tǒng) \n\n
86、");</p><p> printf(" 請選擇:");</p><p> fflush(stdin);</p><p> scanf("%d",&choice);</p><p> switch(choice)&l
87、t;/p><p><b> {</b></p><p> case 1: if(head==NULL)</p><p><b> {</b></p><p> head=Create_Books_Doc();</p><p><b> }</b>
88、</p><p> InsertDoc(head);</p><p><b> break;</b></p><p> case 2: Print_Book_Doc(head);</p><p><b> break;</b></p><p> case 3:
89、search_book(head);</p><p><b> break;</b></p><p> case 4 : info_change(head);</p><p><b> break; </b></p><p> case 5: DeleteDoc(head);</p
90、><p><b> break;</b></p><p> case 6: sort_maopao(head); </p><p><b> break;</b></p><p> case 7: book_borrow(head);</p><p><b>
91、 break;</b></p><p> case 0 : printf("\n");</p><p> printf(" ━━━━━━━━ 感謝使用學(xué)生借閱系統(tǒng) ━━━━━━━━\n");</p><p><b> break;</b></p>
92、<p> default : printf(" ━━━━ 輸入錯誤,請重新輸入!━━━━");</p><p><b> }</b></p><p> }while(choice!=0);</p><p> return 0; </p><
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書借閱管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)---圖書借閱管理系統(tǒng)
- 課程設(shè)計(jì)----圖書借閱管理系統(tǒng)
- c語言課程設(shè)計(jì)--圖書借閱管理系統(tǒng)
- 學(xué)校圖書借閱管理系統(tǒng)-課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--圖書借閱管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--圖書借閱管理系統(tǒng)設(shè)計(jì)
- 圖書借閱數(shù)據(jù)挖掘課程設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)--圖書借閱管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)--圖書借閱管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)-圖書館借閱系統(tǒng)
- 課程設(shè)計(jì)---小型圖書館借閱管理子系統(tǒng)
- c語言課程設(shè)計(jì)-- 圖書館借閱管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)-圖書借閱管理系統(tǒng)設(shè)計(jì)(附代碼)
- 數(shù)據(jù)庫課程設(shè)計(jì)-圖書借閱管理系統(tǒng)設(shè)計(jì)(附代碼)
- 數(shù)據(jù)庫課程設(shè)計(jì)----圖書借閱管理
- 圖書借閱管理系統(tǒng)-c程序設(shè)計(jì)課程設(shè)計(jì)(實(shí)踐教學(xué))
- 學(xué)生選課系統(tǒng)課程設(shè)計(jì)
- 學(xué)生選課系統(tǒng)課程設(shè)計(jì)
- 學(xué)生選課系統(tǒng)課程設(shè)計(jì)
評論
0/150
提交評論