《程序語言課程設計一元多項式簡單的計算器》_第1頁
《程序語言課程設計一元多項式簡單的計算器》_第2頁
《程序語言課程設計一元多項式簡單的計算器》_第3頁
《程序語言課程設計一元多項式簡單的計算器》_第4頁
《程序語言課程設計一元多項式簡單的計算器》_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、西安文理學院軟件學院課程設計報告設計名稱: 程序語言課程設計 設計題目: 一元多項式簡單的計算器 學生學號: 專業(yè)班級: 軟件學院一班 學生姓名: 張文東 學生成績: 指導教師(職稱): 袁溪(講師) 課題工作時間: 2013.12.9 至 2013.12.23 軟件學院課程設計任務書學生姓名張文東學號專業(yè)班級1班設計題目一元多項式簡單的計算器內容概要: 設計或開發(fā)環(huán)境:Microsoft Visual Studio 2010 關鍵技術:C語言 主要功能: 1建立一元多次多項式 2多項式相加 3多項式相減 4多項式相乘文獻資料:1譚浩強C語言程序設計(第三版) 清華大學出版社 20072姜敏芝

2、 余健 C語言程序設計案例精編 清華大學出版社 20083李健學 余健 數據結構課程設計案例精編 20074唐國民 王國均數據結構(C語言版) 清華大學出版社5網上相關文獻資料設計要求:A.功能要求1)輸入并建立多項式;2)輸出多項式;3)兩個多項式相加,輸出和多項式;4)兩個多項式相減,輸出差多項式。B.文檔格式*.c工作期限:設計工作自2013年12月9日至2013年12月23日止。指導教師: 院長: 日 期:2013年12月9日軟件學院課程設計進度安排表學生姓名: 張文東 學號: 專業(yè): 軟件工程 班級: 一班 起止日期內 容備注12月9日下達任務書,制定進度安排計劃 12月10日12月

3、12日系統(tǒng)整體設計和詳細設計12月13日12月17日系統(tǒng)編碼實現12月18日12月19日系統(tǒng)測試 12月20日12月23日撰寫課程設計報告 12月25日演示軟件和答辯 指導教師簽名: 2013年12月11日成績評定表學生姓名: 張文東 學號: 專業(yè): 軟件工程 班級: 一班 類別合計分值各項分值評分標準實際得分合計得分平時表現1010按時參加設計指導,無違反紀律情況。完成情況3020按設計任務書的要求完成了全部任務,能完整演示其設計內容,符合要求。10能對其設計內容進行詳細、完整的介紹,并能就指導教師提出的問題進行正確的回答。報告質量3510報告文字通順,內容翔實,論述充分、完整,立論正確,結

4、構嚴謹合理;報告字數符合相關要求,工整規(guī)范,整齊劃一。5課題背景介紹清楚,綜述分析充分。5設計方案合理、可行,論證嚴謹,邏輯性強,具有說服力。5符號統(tǒng)一;圖表完備、符合規(guī)范要求。5能對整個設計過程進行全面的總結,得出有價值的結論或結果。5參考文獻數量在2篇以上,格式符合要求,在正文中正確引用。答辯情況2510在規(guī)定時間內能就所設計的內容進行闡述,言簡意明,重點突出,論點正確,條理清晰。15在規(guī)定時間內能準確、完整、流利地回答教師所提出的問題??傇u成績: 分 指導教師: (簽字) 日期:2013 年12月 25 日摘 要 摘要:隨著科技的不斷發(fā)展,人們生活水平的不斷提高,方便、高效、快捷成為了人

5、們所追求的主要目標,面對一些復雜的技術總會花費大量時間進行計算,因此有一個多項式功能的計算器是很有必要的。 開發(fā)這樣一個程序需要用到C結點、鏈表方面的知識,系統(tǒng)分為多項式的輸入輸出、多項式的加法、多項式的減法、多項式的乘法四個模塊。 該報告主要是通過系統(tǒng)的程序段、程序設計的要求以及計算器的功能來介紹該計算器實現過程。關鍵字:多項式;C語言;結點;鏈表目 錄目 錄1第一章 課題背景21.1 緒論21.2 主要內容2第二章 設計簡介及設計方案論述32.1 系統(tǒng)分析32.2 總體設計3第三章 詳細設計53.1 建立多項式53.2 多項式相加73.3 多項式相減93.4 多項式相乘10主要代碼如下:1

6、2主要代碼如下:14第四章 設計結果及分析174.1 調試與測試174.2 運行結果194.3 結果分析21總結22參考文獻23附錄24第一章 課題背景1.1 緒論隨著科技的進步,社會的不斷發(fā)展,計算器已普遍應用于各行各業(yè),為了幫助人們提高工作效率,節(jié)約運算時間,設計一個多功能的計算器是很有必要的,在此設計一個多項式計算器可以很方便的對多項式相加、相減、相乘,對提高人們的運算效率很有幫助。一個計算器需要用到C多方面的知識,要實現多項式的建立和輸入輸出等功能,必須要熟練的掌握C,在此尤其是鏈表和結點。1.2 主要內容用C語言實現多項式的輸入輸出和多項式的加減乘等運算,其中主要用到鏈表和結點的相關

7、知識,具體功能如下:1)輸入并建立多項式;2)輸出多項式;3)兩個多項式相加,輸出和多項式;4)兩個多項式相減,輸出差多項式。第二章 設計簡介及設計方案論述2.1 系統(tǒng)分析2.1.1 功能需求多項式的建立 多項式的輸入輸出 多項式的加減乘等運算2.1.2 數據需求在輸入過程中,首先要給定輸入的數據,數據只能是數字,不能是字母或其他,不能連續(xù)輸入數據,必須要求以空格分開要輸入的數據。2.1.3 系統(tǒng)需求系統(tǒng)必須安全可靠,不會出現無故死機狀態(tài),運算速度要快。2.2 總體設計2.2.1 系統(tǒng)設計方案采用菜單設計,選擇你需要的功能,用單鏈表儲存你輸入的數據。(1) 菜單菜單包括計算器加減乘等功能的選擇

8、(2) 文件保存方式運用帶頭節(jié)點的單鏈表儲存多項式(3) 抽象數據類型定義主要定義多項式的系數和指數。系數項用浮點類型定義,指數項用整型定義(4) 存儲結構采用鏈式結構,建立鏈表儲存輸入的多項式(5) 算法設計運用鏈表知識,建立鏈表,給鏈表分配一定量的存儲空間,查找鏈表,插入鏈表和鏈表的連接2.2.2 功能模塊設計一元多項式計算器建立多項式 多項式相加 多項式相減 多項式相乘將輸入的多項式相乘將輸入的多項式相減將輸入的多項式相加建立一元多項式輸出一元多項式圖 2-1 功能模塊設計第三章 詳細設計一元多項式計算器主要分為4大部分,多項式建立,多項式加法,多項式減法和多項式乘法。多項式的建立主要需

9、要建立新鏈表,并分配給這個新鏈表一定量的存儲空間,分配的存儲空間內進行運算;多項式加減乘等運算主要運用了鏈表的建立,鏈表存儲空間分配,鏈表的查找,插入與連接進行計算。3.1 建立多項式此階段是多項式的建立,可以對計算器進行輸入輸出等功能。主要運用鏈表方面的知識如圖 3-1所示:開始PLOY *head,*inpt;NX!=0Yinpt=(PLOY *)malloc(sizeof(PLOY)Return head結束圖 3-1 多項式的建立主要代碼如下:PLOY *creat(char ch)/建立多項式PLOY *head,*inpt;float x;int y;head=(PLOY *)ma

10、lloc(sizeof(PLOY); head-next=NULL;printf(請輸入一元多項式%c:(格式是:系數 指數;以0 0 結束!)n,ch);scanf(%f %d,&x,&y);while(x!=0)inpt=(PLOY *)malloc(sizeof(PLOY); inpt-coef=x;inpt-expn=y;inpt-next=NULL;insert(head,inpt); printf(請輸入一元多項式%c:(以0 0 結束!)n,ch);scanf(%f %d,&x,&y);return head;3.2 多項式相加此階段是計算器的加法運用功能,對你輸入的多項式進行相

11、加計算,主要運用了鏈表,及鏈表的插入等知識,如圖 3-2所示:開始PLOY *inpt;N flag=0YN pre-next=NULLY Flag=1 pre=pre-next Return head結束圖 3-2 多項式相加主要代碼如下:PLOY *addPLOY(PLOY *head,PLOY *pre)/多項式相加PLOY *inpt;int flag=0;while(flag=0)if(pre-next=NULL)flag=1;elsepre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=pre-coef;inpt-expn=

12、pre-expn;inpt-next=NULL;insert(head,inpt);return head;3.3 多項式相減此階段是計算器的減法運用功能,對你輸入的多項式進行相減計算,主要運用了鏈表,鏈表查詢,及鏈表的插入等知識,如圖 3-3所示:開始PLOY *inpt;N flag=0YN pre-next=NULLY Flag=1 pre=pre-next Return head結束圖 3-3 多項式相減主要代碼如下:PLOY *minusPLOY(PLOY *head,PLOY *pre)/多項式相減PLOY *inpt;int flag=0;while(flag=0)if(pre-

13、next=NULL)flag=1;elsepre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=0-pre-coef;inpt-expn=pre-expn;inpt-next=NULL;insert(head,inpt);return head;3.4 多項式相乘此階段是計算器的乘法運用功能,對你輸入的多項式進行相乘計算,主要運用了鏈表,鏈表查詢,及鏈表的插入等知識,如圖 3-4所示:開始PLOY *inpt,*flag,*pre; Nflag=0Y pre- Nnext=NULLYpre=head2Continuehead1=NULL

14、YNflag=1continuepre=pre-nextreturn res結束圖 3-4多項式相乘主要代碼如下:PLOY *byPLOY(PLOY *head1,PLOY *head2)/多項式相乘PLOY *inpt,*res,*pre;int flag=0;res=(PLOY *)malloc(sizeof(PLOY);res-next=NULL;head1=head1-next;pre=head2;while(flag=0)if(pre-next=NULL)pre=head2;head1=head1-next;continue;if(head1=NULL)flag=1;continue

15、;pre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=pre-coef*head1-coef;inpt-expn=pre-expn+head1-expn;inpt-next=NULL;insert(res,inpt);return res;3.5 計算器主函數 開始PLOY *f,*gN sign!=0Yscanf(“%d”,&sign)Nsign=0YN sign=1breakY printf(“你選擇 的操作是多項式N 相加n”); sign=2 Y break printf(“你選擇 的操作是多項式N 相減n”);sign=3

16、Y break printf(“你選擇 的操作是多項式N 相乘n”);sign=4 Y printf(“Error!breaksign=-1 請重新輸入”); break break結束 圖 3-5 計算器主函數主要代碼如下:void main()PLOY *f,*g;int sign=-1;start();while(sign!=0)scanf(%d,&sign);switch(sign)case 0:break;case 1:printf(你選擇的操作是多項式相加:n);f=creat(f);printf(f(x)=);print(f);g=creat(g);printf(g(x)=);p

17、rint(g);printf(-nn);printf(兩個多項式相加結果為:nn);printf( F(x)=f(x)+g(x)=);f=addPLOY(f,g);print(f);printf(n-n);sign=-1;start();break;case 2:printf(你選擇的操作是多項式相減:n);f=creat(f);printf(f(x)=);print(f);g=creat(g);printf(g(x)=);print(g);printf(-nn);printf(兩個多項式相減結果為:nn);printf( F(x)=f(x)-g(x)=);f=minusPLOY(f,g);p

18、rint(f);printf(n-n);sign=-1;start();break;case 3:printf(你選擇的操作是多項式相乘:n);f=creat(f);printf(f(x)=);print(f);g=creat(g);printf(g(x)=);print(g);printf(-nn);printf(兩個多項式相乘結果為:nn);printf( F(x)=f(x)*g(x)=);f=byPLOY(f,g);print(f);printf(n-n);sign=-1;start();break;case 4:sign=-1;start();break;default:printf(

19、Error!請重新選擇操作!n);start();break;printf( *n);printf( * 謝謝使用! *n);printf( *n); 第四章 設計結果及分析4.1 調試與測試4.1.1 調試調試過程主要是運行編制好的程序,然后遇到錯誤后根據系統(tǒng)的提示,找到相關的問題所在。本系統(tǒng)調試過程中遇到的主要問題、原因和解決方法如下面介紹。(1) cannot open Debug/Cpp1.exe for writing執(zhí)行窗口沒關閉就修改程序段關閉執(zhí)行窗口后從新執(zhí)行程序。(2) 系統(tǒng)提示的錯誤error C2065: addPLOY : undeclared identifierad

20、dPLOY沒有被明確的定義。到程序段里仔細尋找addPLOY,并將其定義。4.1.2 測試軟件測試是軟件生存期中的一個重要階段,是軟件質量保證的關鍵步驟從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應該是“為了發(fā)現錯誤而執(zhí)行程序的過程”?;蛘哒f,軟件測試應該根據軟件開發(fā)各階段的規(guī)格說明和程序的內部結構而精心設計一批測試用例(即輸入數據及其預期的輸出結果),并利用這些測試用例去運行程序,以發(fā)現程序錯誤或缺陷。過度測試則會浪費許多寶貴的資源。到測試后期,即使找到了錯誤,然而付出了過高的代價。測試數據過程如下:(1) 輸入功能測試輸入數據1:2 3 0 0預期結果:2

21、.x3運行結果: 2.x3說明:符合輸入的要求輸入數據2:a b 0 0 預期結果:a.xb運行結果:死循環(huán)說明:不符合輸入要求(2) 運算功能測試輸入數據1:2 3 0 0 5 6 0 0預期結果:2.x3+5.x6運行結果:2.x3+5.x6說明:符合計算的要求輸入數據2:a b 0 0 c d 0 0預期結果:a.xb+c.xd運行結果:死循環(huán)4.2 運行結果4.2.1 歡迎界面圖 4-1 歡迎界面4.2.2 多項式加法圖 4-2 多項式加法4.2.3 多項式減法圖 4-3 多項式減法4.2.4 多項式乘法圖4-4多項式的乘法4.3 結果分析經過一段時間的設計,我的程序大體完成,任務書中

22、所要求實現多項式的輸入輸出、多項式的加法、多項式的減法都實現了,而且實現了多項式的乘法,但程序還存在一些缺點,例如,無法輸入字母計算,無法進行多項連續(xù)計算??偨Y 數據結構體現的是解決問題的一種思想,怎樣把這種思想體現出來,需要我們對每個方面的系統(tǒng)了解。并發(fā)現了許多自己的不足,平時沒掌握的的知識在實踐中暴露,經過不斷的思考,查閱書籍和上網查資料及上機運行,解決了大部分的問題,還有一些小問題。但是,我相信在今后的學習中,一定能把它解決好。當今計算機應用在生活中可以說是無處不在。因此作為二十一世紀的大學生來說掌握程序開發(fā)技術是十分重要的,而C語言又是最常見,功能最強大的一種高級語言,因此做好c語言版

23、數據結構課程設計是十分必要的。我不僅鞏固了數據結構程序設計的內容,掌握設計的基本方法,強化了上機動手能力,還進一步掌握了以下知識:數據類型,鏈表,結點,分支控制,循環(huán)控制,結構體及數組,指針,文件操作,編譯預處理等;通過課程設計,掌握了程序的局部測試,調試方法,建立程序系統(tǒng)調試,測試的基本概念和思想,學會較大程序的系統(tǒng)測試和調試方法。當我選擇這個多項式計算器系統(tǒng)時,首先系統(tǒng)分析主要思路和框架哦,與同學討論,聯系所學的知識。我知道書上和老師講的有限,所以上網搜也是一種利用資源的表現。在編程中,特別是結構體,指針的部分,幾乎是一片空白。不過經過幾天的努力,大體把課本上的知識點看了一遍,知識點也基本

24、上掌握了,所以下一步就是開始正式的編程序了。當讀懂了C語言編程的基本過程和方法,經過一波三折,終于開始正式編程。 編譯過程中,算法至關重要,多項式加法:系數相同時指數相加,不同時兩項做加法;多項式減法:和加法相差無幾,只是把加換成減;多項式乘法:指數相乘,系數相加,當然在設計過程中還要注意一些特殊值,如0,1等。通過這次課程設計,我感覺到要自己動手真正做出一個程序并不很容易,但只要用心去做,總會有收獲,特別是當我遇到問題,問老師,問同學,想盡辦法去解決,最后終于找到方法時,心里的那份喜悅之情真是難以形容.編寫程序中遇到問題再所難免,應耐心探究其中的原因,從出現問題的地方起,并聯系前后程序,仔細

25、推敲,逐個排查.直到最終搞清為止。在課程設計過程中,收獲知識,提高能力的同時,我也學到了很多的人生哲理,懂得了怎么去制定計劃,怎么去實現這個計劃,并掌握了在執(zhí)行的過程中怎樣去克服心理上的不良情緒。因此在以后的生活和學習的過程中,我一定把課程設計的精神帶到生活中,使生活變得更好。參考文獻1 譚浩強. C語言程序設計(第三版)M. 清華大學出版社, 2007.2 姜敏芝,余健. C語言程序設計案例精編M. 清華大學出版社, 2008.3 李健學,余健. 數據結構課程設計案例精編M. 2007.4 唐國民,王國均. 數據結構(C語言版)M. 北京:清華大學出版社.5 王路明. C語言程序設計教程M.

26、 北京:北京郵電大學出版社,2005年5月.6 譚浩強. C+程序設計M. 北京:清華大學出版社.2004.7 范策. 算法與數據結構(C語言版)M. 北京:機械工業(yè)出版社,2004.8 詹春華,楊沙. C語言程序設計教程M. 科學出版社,2011.8.9 董志民,崔建平,肖利娜. C語言程序設計教學改革探索與實踐J.福建電腦.附錄#include#includetypedef struct myNode/數據結構float coef;/系數coefficientint expn;/指數exponentstruct myNode * next;PLOY;void start()/用戶選擇界面p

27、rintf( n);printf( *n);printf( * 歡迎使用一元多項式計算器 *n);printf( *n);printf(n);printf( 請選擇操作:nn);printf( 0.退出操作n);printf( 1.一元多項式相加n);printf( 2.一元多項式相減n);printf( 3.一元多項式相乘nn);void insert(PLOY *head,PLOY *inpt)PLOY *pre,*now;int signal=0;pre=head; if(pre-next=NULL)pre-next=inpt;elsenow=pre-next;while(signal=

28、0)if(inpt-expnexpn) if(now-next=NULL)now-next=inpt;signal=1;elsepre=now;now=pre-next;elseif(inpt-expnnow-expn)inpt-next=now;pre-next=inpt;signal=1;elsenow-coef=now-coef+inpt-coef;signal=1;free(inpt); if(now-coef=0)pre-next=now-next;free(now);PLOY *creat(char ch)/建立多項式PLOY *head,*inpt;float x;int y;h

29、ead=(PLOY *)malloc(sizeof(PLOY); head-next=NULL;printf(請輸入一元多項式%c:(格式是:系數 指數;以0 0 結束!)n,ch);scanf(%f %d,&x,&y);while(x!=0)inpt=(PLOY *)malloc(sizeof(PLOY); inpt-coef=x;inpt-expn=y;inpt-next=NULL;insert(head,inpt); printf(請輸入一元多項式%c:(以0 0 結束!)n,ch);scanf(%f %d,&x,&y);return head;PLOY *addPLOY(PLOY *h

30、ead,PLOY *pre)/多項式相加PLOY *inpt;int flag=0;while(flag=0)if(pre-next=NULL)flag=1;elsepre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=pre-coef;inpt-expn=pre-expn;inpt-next=NULL;insert(head,inpt);return head;PLOY *minusPLOY(PLOY *head,PLOY *pre)/多項式相減PLOY *inpt;int flag=0;while(flag=0)if(pre-nex

31、t=NULL)flag=1;elsepre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=0-pre-coef;inpt-expn=pre-expn;inpt-next=NULL;insert(head,inpt);return head;PLOY *byPLOY(PLOY *head1,PLOY *head2)/多項式相乘PLOY *inpt,*res,*pre;int flag=0;res=(PLOY *)malloc(sizeof(PLOY);res-next=NULL;head1=head1-next;pre=head2;whi

32、le(flag=0)if(pre-next=NULL)pre=head2;head1=head1-next;continue;if(head1=NULL)flag=1;continue;pre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=pre-coef*head1-coef;inpt-expn=pre-expn+head1-expn;inpt-next=NULL;insert(res,inpt);return res;void print(PLOY *fun)PLOY *printing;int flag=0;printing=fun-next;if(fun-next=NULL)printf(0n);return;while(flag=0)if(printing-coef0&fun-next!=printing)printf(+);if(printing-coef=1); else if(prin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論