圖書(shū)信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告C語(yǔ)言程序設(shè)計(jì)_第1頁(yè)
圖書(shū)信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告C語(yǔ)言程序設(shè)計(jì)_第2頁(yè)
圖書(shū)信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告C語(yǔ)言程序設(shè)計(jì)_第3頁(yè)
圖書(shū)信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告C語(yǔ)言程序設(shè)計(jì)_第4頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、德州學(xué)院計(jì)算機(jī)系課程設(shè)計(jì)報(bào)告實(shí)習(xí)名稱(chēng)程序設(shè)計(jì)課程設(shè)計(jì)設(shè)計(jì)題目圖書(shū)信息管理系統(tǒng)實(shí)習(xí)時(shí)間 2010.06.27-2010.07.04專(zhuān)業(yè)班級(jí)指導(dǎo)老師教學(xué)單位(小組分工情況:學(xué)號(hào)姓名分工二O 一 O年七月五日(設(shè)計(jì)或?qū)嶒?yàn))論述、結(jié)果分課程設(shè)計(jì)報(bào)告正文內(nèi)容及格式要求:1、正文部分主要包括:選題背景、論點(diǎn)或方案論證、過(guò)程析、結(jié)論或總結(jié)。2、標(biāo)題:題目用小二號(hào)黑體字 (加黑),居中;副標(biāo)題用三號(hào)黑體字,緊挨正標(biāo)題下居中,文字前加破折號(hào)。 英文題目為18磅加粗Times NewRoman字,副標(biāo)題為16磅加粗TimesNew Roman字o3、課程設(shè)計(jì)報(bào)告格式要求:一級(jí)標(biāo)題用小三號(hào)黑體字;二級(jí)標(biāo)題用四號(hào)黑體

2、字;三級(jí)標(biāo)題用小四號(hào)黑體字;正文用宋體小四號(hào)字(英文用12磅Times NewRoman字),采用1.5倍行距,標(biāo)準(zhǔn)字符間距:頁(yè)碼一律用小5號(hào)字標(biāo)明。4、課程設(shè)計(jì)報(bào)告撰寫(xiě)要求:(1)文字通順,語(yǔ)言流暢,能將設(shè)計(jì)過(guò)程表述清楚。(2)圖表整潔,布局合理,須按國(guó)家規(guī)定的繪圖標(biāo)準(zhǔn)繪制。3)報(bào)告字?jǐn)?shù)不少于 3 千字。C語(yǔ)言程序設(shè)計(jì)報(bào)告- 圖書(shū)管理系統(tǒng)、實(shí)驗(yàn)準(zhǔn)備做系統(tǒng)前,首先,自己詳細(xì)看了c程序設(shè)計(jì)教程(教科書(shū))的第十章文 件,基本自學(xué)會(huì)了文件的相關(guān)內(nèi)容,理解了相關(guān)函數(shù)的用法和作用;另,上網(wǎng) 查詢了很多相關(guān)資料, 還有找了很多相關(guān)的系統(tǒng), 都詳細(xì)的看了一遍, 加深了對(duì) C的理解以及對(duì)文件的相關(guān)內(nèi)容進(jìn)一步理

3、解。學(xué)習(xí)了 C語(yǔ)言的內(nèi)容,圖書(shū)信息管 理系統(tǒng)有助于C語(yǔ)言學(xué)習(xí)的進(jìn)一步鞏固,在本系統(tǒng)可以增強(qiáng)對(duì)指針、數(shù)組、文件、 函數(shù)等基本知識(shí)的進(jìn)一步理解。 另外圖書(shū)信息管理系統(tǒng)也是學(xué)校常用的基本系統(tǒng) 之一,它有助于學(xué)校對(duì)圖書(shū)館書(shū)籍的基本管理。、功能簡(jiǎn)介圖書(shū)信息管理系統(tǒng)是對(duì)圖書(shū)信息的基本管理, 它包括:圖書(shū)信息的輸入、 圖 書(shū)信息的修改及刪除、圖書(shū)信息的查詢、圖書(shū)信息的添加、圖書(shū)信息的瀏覽。使用模塊化編程的方法每項(xiàng)功能有一個(gè)或多個(gè)函數(shù)組合來(lái)完成 .三、系統(tǒng)與性環(huán)境系統(tǒng)可以在MicrosoftVisualC+6.0軟件運(yùn)行,硬件基本無(wú)要求,現(xiàn)在的計(jì)算機(jī)基本都可以運(yùn)行該系統(tǒng)。四、功能劃分及詳細(xì)說(shuō)明主要算法的設(shè)計(jì):

4、(1)主函數(shù)的算法設(shè)計(jì)首先,運(yùn)行程序,進(jìn)入菜單,然后選擇操作(運(yùn)用 swith語(yǔ)句),調(diào)用各子函 數(shù)。在返回操作中運(yùn)用 while語(yǔ)句進(jìn)行控制返回菜單。(2)各子函數(shù)的算法設(shè)計(jì)1、圖書(shū)信息的輸入函數(shù)f勺開(kāi)始3、圖書(shū)信息的查詢void search()選擇查詢方式,1按書(shū)號(hào)查詢,2按書(shū)名查詢,然后定位,再調(diào)用輸出函數(shù);4、圖書(shū)信息的瀏覽開(kāi)始首先,輸出所有圖書(shū)的信息,并輸出圖書(shū)記錄數(shù),然后調(diào)用 輔助函數(shù)進(jìn)行菜單選擇,操作完成后返回主菜單。5、圖書(shū)信息的添加首先,從文件中調(diào)用函數(shù)讀入函數(shù),再輸入要添加數(shù),然后添加圖書(shū)信息, 并保存。上機(jī)調(diào)試過(guò)程:在調(diào)試過(guò)程中出現(xiàn)了許多的錯(cuò)誤!特別是在查詢、修改刪除這

5、 2個(gè)函數(shù)的 調(diào)上花費(fèi)了很多時(shí)間,主要是文件的寫(xiě)入與讀出以及菜單調(diào)試的問(wèn)題, 還有建立 新的鏈接也出現(xiàn)問(wèn)題,說(shuō)明自己對(duì)程序的執(zhí)行過(guò)程理解不夠深刻。五、源程序#in clude#in clude#i ncludevstri ng.h#in clude#defi ne LEN sizeof(stu)typedef struct stude ntlong nu mber;char n ame10;char sex3;int age;float chi nese;float math;float en glish;float sum;float average;struct stude nt *n e

6、xt;stu;book *creat(void);book *cha nges(book *head);book *modify(book *head,l ong nu m);book *del(book *head,l ong nu m);book *in sert(book *head,book *stud);book *in put(book *head,book *p1);void sort(book *head);void total_average_sort(book *head);void chin ese_sort(book *head);void math_sort(book

7、 *head);void en glish_sort(book *head);void prin t(book *head);void Statistics(book *head);void search(book *head);void nu msearch(book *head,l ong nu m); void n amesearch(book *head,char n ame); int n;book *creat(void) I book *head,*p1,*p2;n=0;p1= p2=(book *)malloc(LEN);prin tf(請(qǐng)輸入圖書(shū)信息! n);head=NUL

8、L;p1= in put(head,p1);while(p1- nu mber!=0) In=n+1;if(n=1) head=p1;else p2-n ext=p1;p2=p1;p1=(book *)malloc(LEN); p1= in put(head,p1); p2- next=NULL;return(head);book *input(book *head,book *p1)/*輸入圖書(shū)的信息 */nt i,f,k;book *p2;loop:printf( 圖書(shū)號(hào)(為整數(shù),輸入0時(shí)返回上一級(jí)):);sea nf(%ld,&p1- nu mber); if(p1- nu mbernu

9、 mber=0) return(p1);elsep2=head;f=0;for(i=1;inu mber=p2-nu mber)f=1;break;p2=p2-n ext;if(f)pri ntf(圖書(shū)不能重復(fù),請(qǐng)重新輸入!n);goto loop;prin tf(書(shū)名:);sca nf(%s,p1- n ame);Ioop1:printf( 類(lèi)別:1.文科 2.理科 n);printf(請(qǐng)選擇類(lèi)別:);sca nf(%d,&k);switch(k)case 1:strcpy(p1-sex,文科);break;case 2:strcpy(p1-sex,理科);break;default:pri

10、ntf(”類(lèi)別只能是“文科”或“理科”,請(qǐng)重新輸入! n);gotoIoop1;prin tf(存期:);sca nf(%d,&p1-age);while(p1-ageage120)prin tf(你輸入的存期不符合實(shí)際情況,請(qǐng)重新輸入!n);printf(存期:);sca nf(%d,&p1-age);prin tf(章數(shù):);sea nf(%f,&p1-chi nese);while(p1-chi nesechi nese100)prin tf(你輸入的章數(shù)不符合實(shí)際情況,請(qǐng)重新輸入!n);prin tf(章數(shù):);scan f(%f,&p1-chi nese);prin tf(頁(yè)數(shù):);

11、sca nf(%f,&p1-math); while(p1-mathmath100)prin tf(你輸入的頁(yè)數(shù)不符合實(shí)際情況,請(qǐng)重新輸入!n);prin tf(頁(yè)數(shù):);scan f(%f,&p1-math);printf(閱讀次數(shù):);sca nf(%f,&p1-e nglish);while(p1-e nglishe nglish100)prin tf(你輸入的閱讀次數(shù)不符合實(shí)際情況,請(qǐng)重新輸入!nprintf(閱讀次數(shù):);scan f(%f,&p1-e nglish);p1-sum=p1-chi nese+p1-math+p1-e nglish; p1-average=p1-sum/

12、3;return(p1);void search(book *head)int k;long num;char n ame10;if(n=0)pri ntf(數(shù)據(jù)庫(kù)為空,沒(méi)有圖書(shū)的記錄!n);return;else返回上:);doprin tf(1.按書(shū)號(hào)查找2. 按書(shū)名查找 0.級(jí) n);printf(請(qǐng)選擇:);sca nf(%d,&k);switch(k)case 1:doprintf(書(shū)號(hào)(輸入0時(shí)跳出按書(shū)號(hào)查找)scan f(%ld,&n um);if(num=0)break;elseif(n um0)nu msearch(head ,nu m);elseprintf(輸入錯(cuò)誤,請(qǐng)重

13、新選擇! n);while(1);break;case 2:doprintf(書(shū)名(輸入0時(shí)跳出按書(shū)名查找):);scan f(%s, name);printf(書(shū)號(hào)t書(shū)名t類(lèi)別t存期t章數(shù)t頁(yè)數(shù)t閱讀次數(shù)t總次數(shù)t平均次數(shù)n);n amesearch(head, name);while(strcmp( name,0)!=0);break;case 0:break; default:pri ntf(輸入錯(cuò)誤,請(qǐng)重新選擇!n);while(k!=0);void nu msearch(book *head,l ong num)book *p1;p仁head;while(p1!=NULL)if(nu

14、m=p1- nu mber)printf(書(shū)號(hào)t書(shū)名t類(lèi)別t存期t章數(shù)t頁(yè)數(shù)t閱讀次數(shù)t總次數(shù)t平均次數(shù)n);prin tf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1- nu mber,p1-n ame,p1-sex,p1-age,p1-ch in ese,p1-math,p1-e nglish,p1-sum,p1- average);return;p1=p1- n ext;printf(沒(méi)有找到你要查找的圖書(shū)信息!n);void n amesearch(book *head,char n ame)nt a=1;book *p1;p仁head;whil

15、e(p1!=NULL)if(strcmp( name,p1- n ame)=0)prin tf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1- nu mber,p1-n ame,p1-sex,p1-age,p1-ch in ese,p1-math,p1-e nglish,p1-sum,p1- average);a=O;p1=p1- n ext;f(a)printf(沒(méi)有找到你要查找的圖書(shū)信息!n);book *cha nges(book *head)book *p1;int k;long num;doprintf(1. 修改 2. 刪除 3. 插入 0.

16、返回上一級(jí)n); printf( 請(qǐng)選擇:);sca nf(%d,&k);switch(k)case 1:do if(n=0)printf(數(shù)據(jù)庫(kù)為空,沒(méi)有圖書(shū)的記錄!n);break;elseprintf(請(qǐng)輸入圖書(shū)的書(shū)號(hào)(書(shū)號(hào)應(yīng)為整數(shù),輸入0時(shí)跳出修改數(shù)據(jù)):);scan f(%ld,&n um); if(num=0)break;elseif(n um0) head=modify(head, nu m);elseprintf(書(shū)號(hào)不能為負(fù)數(shù),請(qǐng)重新輸入!n);while(1);break;case 2:doif(n=0)pri ntf(數(shù)據(jù)庫(kù)為空,沒(méi)有圖書(shū)信息!n);break;elsep

17、rintf(請(qǐng)輸入要?jiǎng)h除的圖書(shū)的書(shū)號(hào)(書(shū)號(hào)應(yīng)為整數(shù),輸入 0時(shí)跳出刪除元素):);sca nf(%ld,&nu m); if(num=0)break; elseif(num 0)head=del(head ,nu m);elseprintf(書(shū)號(hào)不能為負(fù)數(shù),請(qǐng)重新輸入!n);while(1);break;case 3:pri ntf(請(qǐng)輸入圖書(shū)信息!n);p仁(book *)malloc(LEN);p1= in put(head,p1);while(p1- nu mber!=0)head=in sert(head,p1);prin t(head);prin tf(請(qǐng)輸入圖書(shū)信息! n);p仁(

18、book *)malloc(LEN);p1= in put(head,p1); |break;case 0:break;default:pri ntf(輸入錯(cuò)誤,請(qǐng)重新輸入! n);while(k!=0);return(head);void sort(book *head)nt k;if(n=0)pri ntf(數(shù)據(jù)庫(kù)為空,沒(méi)有圖書(shū)記錄!n);return;doprin tf(1.按書(shū)號(hào)排序2.按總次數(shù)和平均次數(shù)排序3.按章數(shù)成績(jī)排序4.按頁(yè)數(shù)排序5.按閱讀次數(shù)排序0.返回上一級(jí)n);printf(請(qǐng)選擇:);sca nf(%d,&k);switch(k) Icase 1:pri nt(hea

19、d);break;case 2:total_average_sort(head);break;case 3:ch in ese_sort(head);break;case 4:math_sort(head);break;case 5:e nglish_sort(head);break;case 0:break;default:pri ntf(輸入錯(cuò)誤,請(qǐng)重新輸入!n);while(k!=0);宀 LdunsALdxfs=6UXLdeLUALda)seuzOALda)6eALdl LdH0da)s uzOALdHxelu)(lv s UZOA Ldososxelu 八s UZOA Ld)七(X

20、UALdH L2 Lprpe UH Ld)04oHxelu GOP一 -(=51$?fr 乍報(bào)總癥、8乍報(bào)w乍隸te乍m粼乍媒r乍叩r=)七dL+土 LdunsALdxfs=6UXLdeLUALda)seuzOALda)6eALdlLdH0d -LunsALdHxelu )(IVLUnsA LdososxeLUALUnsA Ld)七 (X UALdH L2 Lprpe UH Ld)04oHxelu )op_(=u$?fr 乍報(bào)總癥、乍報(bào)總|厘乍報(bào)皚 乍報(bào)冊(cè) 乍隸肚Igllml絲乍媒嚴(yán) 乍呼r=)七UKToeHwxelu 蒼0匸 O也-U 一Zd*-Ld* |ooq(pe 一I* looq)七

21、OS 6eeel-eol powhile(j n ext)if(p1-mathmax&p1-mathmath;p2=p1;k=max;for(p1=p2;p1;p1=p1- n ext)if(p1-math=max)prin tf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1- nu mber,p1-n ame,p1-sex,p1-age,p1-ch in ese,p1-math,p1-e nglish,p1-sum,p1- average);j+;while(j n ext)if(p1-e nglishmax&p1-e nglishe nglish;p2

22、=p1;k=max;for(p1=p2;p1;p1=p1- n ext)if(p1-e nglish=max)prin tf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1- nu mber,p1-n ame,p1-sex,p1-age,p1-ch in ese,p1-math,p1-e nglish,p1-sum,p1-average);j+;while(j nu mber=num)break;p1=p1- n ext;if(p1- nu mber=num)doprin tf(1.書(shū)名2.類(lèi)別3.存期4.章數(shù)成績(jī)5.頁(yè)數(shù)6閱讀次數(shù) 0.返回上一級(jí)n);pr

23、intf(請(qǐng)選擇:);scan f(%d,&k);switch(k)修改成功!重新輸入!case1:printf(書(shū)名:);scanf(%s,p1-name);printf(n);break;case 2:loop2:printf(類(lèi)別:1.文科 2. 理科n);printf(請(qǐng)選擇類(lèi)別:);sca nf(%d,&m);switch(m)case 1:strcpy(p1-sex,case 2:strcpy(p1-sex, default:pri ntf(n);goto loop2;IIII文科);break;理科);break;類(lèi)別只能是“文科”或“理科”,請(qǐng)printf(修改成功! n);b

24、reak;case 3:pri ntf(存期:);sca nf(%d,&p1-age);while(p1-ageage120)prin tf(你輸入的存期不符合實(shí)際情況,請(qǐng)重新輸入! n);printf(存期:);sca nf(%d,&p1-age);printf(”修改成功! n);break;case 4:printf(章數(shù)成績(jī):);sea nf(%f,&p1-chi nese);while(p1-chi nesechi nese100)printf(你輸入的章數(shù)成績(jī)不符合實(shí)際情況,請(qǐng)重新輸入! n);printf(章數(shù)成績(jī):);sca nf(%f,&p1-chi nese);p1-sum

25、=p1-chi nese+p1-math+p1-e nglish; p1-average=p1-sum/3;printf(修改成功! n);break;case 5:pri ntf(頁(yè)數(shù):);sca nf(%f,&p1-math);while(p1-mathmath100)printf(你輸入的頁(yè)數(shù)不符合實(shí)際情況,請(qǐng)重新輸入!n);prin tf(頁(yè)數(shù):);sca nf(%f,&p1-math);p1-sum=p1-chi nese+p1-math+p1-e nglish; p1-average=p1-sum/3;printf(修改成功! n);break;case 6:printf(閱讀次數(shù)

26、:);sca nf(%f,&p1-e nglish);while(p1-e nglishe nglish100)printf(年輸入的閱讀次數(shù)不符合實(shí)際情況,請(qǐng)重新輸入!n);printf(閱讀次數(shù):);sca nf(%f,&p1-e nglish);p1-sum=p1-chi nese+p1-math+p1-e nglish;p1-average=p1-sum/3;printf(修改成功! n);break;case 0:break;default:pri ntf(輸入錯(cuò)誤,請(qǐng)重新選擇! n);while(k!=0);elseprintf(沒(méi)有找到你要修改的圖書(shū)的信息!n);return(h

27、ead);book *del(book *head,l ong num)book *p1,*p2;if(head=NULL)pri ntf(數(shù)據(jù)庫(kù)為空,沒(méi)有圖書(shū)記錄!n);gotoen d;p仁head;while( nu m!=p1- nu mber&p1- next!=NULL)p2=p1;p1=p1- n ext;if(num=p1- nu mber)if(p1=head)head=p1- next;pri ntf(刪除成功! n);else p2- next=p1- next;pri ntf(刪除成功! n);n=n-1;else printf(沒(méi)有找到你要?jiǎng)h除的圖書(shū)信息!n,n um

28、);en d:;return(head);book *in sert(book *head,book *stud)book *p0,*p1,*p2;p仁head;p0=stud;if(head=NULL)head=p0;p0- next=NULL;elsewhile(p0- nu mberp1- nu mber)&( p1- next!=NULL)p2=p1;p1=p1- n ext;if(p0-nu mbernu mber)if(head=p1)head=p0;else p2-n ext=p0;p0-n ext=p1;elsep1- next=p0;p0- next=NULL;n=n+1;r

29、eturn(head);void Statistics(book *head) |book *p1;int i,c=0,m=0,e=0;float cmax=0,mmax=0,emax=0,summax=0,averagemax=0; p仁head;for(i=1;ich in ese=cmax) cmax=p1-ch in ese;if(p1-math=mmax) mmax=p1-math;if(p1-e nglish=emax)emax=p1-e nglish;if(p1-sum=summax)summax=p1-sum;if(p1-average=averagemax) averagem

30、ax=p1-average;if(p1-chi nesemathe nglishn ext; printf(總成績(jī)最高分:5.1fn,summax);printf(平成績(jī)最高分:%5.1fn,averagemax);printf(章數(shù)最多:%5.1fn,cmax);printf(頁(yè)數(shù)最高分:%5.1fn,mmax);printf(閱讀次數(shù)最多:%5.1fn,emax);printf(章數(shù)最少:%dn,c);printf(頁(yè)數(shù)最少:%dn,m);printf(閱讀次數(shù)最少:%dn,e);prin tf(n); IZvoid prin t(book *head)book *p1;printf(n現(xiàn)

31、在的d個(gè)圖書(shū)記錄為:n,n);p1=head;if(head!=NULL) Iprintf(書(shū)號(hào)t書(shū)名t類(lèi)別t存期t章數(shù)t頁(yè)數(shù)t閱讀次數(shù)t總次數(shù)t平均次數(shù)n);do prin tf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1- nu mber,p1-n ame,p1-sex,p1-age,p1-ch in ese,p1-math,p1-e nglish,p1-sum,p1- average);p1=p1- n ext; while(p1!=NULL);void mai n()int choice; book *head;do/* 打印表頭*/*n);tf

32、(A AAAAAAAAAAjA A A歡迎來(lái)到圖書(shū)成績(jī)管理系統(tǒng)!AAAAAAAAAAAAA An);printf(n);printf(圖書(shū)成績(jī)管理系統(tǒng)的基本功能n);printf(1.新建;n);printf(2.查找;n);printf(3.更新;n);printf(4.排序;n);printf(5.統(tǒng)計(jì);n);printf(6.顯示;n);printf(0.跳出;n);printf(n);printf(*printf(按鍵選擇,回車(chē)確定!n);printf(n);An);請(qǐng)選擇:);/*提示用戶選擇操作功能*/printf(prin tf(,A aaaaaaaaaaaaaaaaaaaaaaaaaaa

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論