電氣078321謝挺 心算搶答系統_第1頁
電氣078321謝挺 心算搶答系統_第2頁
電氣078321謝挺 心算搶答系統_第3頁
電氣078321謝挺 心算搶答系統_第4頁
電氣078321謝挺 心算搶答系統_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、應用技術學院課 程 設 計 報 告課程名稱: C語言程序設計 課題名稱: 心算搶答系統 專 業: 電氣工程及自動化 班 級: 0783班 學 號: 21 姓 名: 謝挺 指導教師: 王穎 2008年 3 月 27日湖南工程學院課 程 設 計 任 務 書課程名稱: C語言程序設計 課 題: 心算搶答系統 專業班級: 電氣工程及自動化 學生姓名: 謝挺 學 號: 21 指導老師: 王穎 審 批: 任務書下達日期:2008 年3月8日任務完成日期:2008年3月27日C語言程序設計課程設計是對學生的一種全面綜合訓練,它包括問題分析,總體結構設計,用戶界面設計,程序設計基本技能和技巧,多人合作,以至一

2、整套軟件工作規范的訓練和科學作風的培養。是與課堂聽講、自學和練習相輔相成的必不可少的一個教學環節。通常,課程設計的課題比平時的習題復雜得多,也更接近實際。課程設計著眼于與應用的結合點,使學生學會如何把書上學到的知識用于解決實際問題,培養軟件工作所需要的動手能力;另一方面,能使書上的知識變“活”,使學生更好地深化理解和靈活掌握教學內容。為了達到上述目的,本課程設計安排了四個設計課題,訓練重點在于基本的程序設計方法和分析問題的能力,而不強調面面俱到。學生可任選其中一題進行設計,設計完畢寫出課程設計報告,用A4紙打印成冊;并將課程設計報告與源程序存盤。學習委員將課程設計報告與磁盤(缺一不可)收齊后交

3、指導老師。一、目的全面熟悉、掌握C語言基本知識,掌握C程序設計中的順序、分支、循環三種結構及數組、函數和C語言基本圖形編程等方法,把編程和實際結合起來,增強對不同的問題運用和靈活選擇合適的數據結構以及算法描述的本領,熟悉編制和調試程序的技巧,掌握分析結果的若干有效方法,進一步提高上機動手能力,培養使用計算機解決實際問題的能力,養成提供文檔資料的習慣和規范編程的思想,為以后在專業課程中應用計算機系統解決計算、分析、實驗和設計等學習環節打下較扎實的基礎。二、基本情況課程類別:必修課課程學分:1學分課程學時:1周課程對象:電氣工程0781、0782、0783、0784、0785、0786三、時間安排

4、時間任務2008-3-8下午3:40-5:40指導老師給學生布置課程設計的任務及要求2008-3-10到2008-3-15學生根據設計任務及要求,對系統進行需求分析、概要設計和詳細設計,并在此基礎上編寫程序代碼學生提交系統程序清單初稿上機調試程序修改并完善程序并上機調試程序2008-3-16接受指導老師的驗收2008-3-16到2008-3-22 書寫課程設計報告 提交課程設計報告課題要求一、 需求分析分析系統功能需求以及用戶操作流程。二、 概要設計在需求分析的基礎上,確定系統總體框架(系統功能結構圖)。三、 詳細設計定義數據儲存結構,并設計實現系統功能的具體算法,畫出各算法的工作流程圖。四、

5、 代碼設計根據所設計的算法,定義相應函數分別實現系統的各子功能模塊,同時由主程序提供友好的用戶界面,使用戶可通過選擇主菜單來調用課程設計中要求完成的各個功能模塊,子程序執行完后還可以返回到主菜單,繼續選擇其他功能執行。源程序要求書寫規范,結構清晰。重點函數的重點變量。重點功能部分均要求給出清晰的程序注釋。五、 程序調試程序編譯、連接成功后,自己設計實現程序功能的一組或多組測試數據,并嚴格按照此測試數據進行測試,然后分析測試結果。如果程序不能正常運行或結果不正確,則需對程序進行單步調試,在調試過程中認真查找算法實現中存在的問題,并加以分析和改正。如果程序能夠基本正確地運行,可考慮增加若干基本的容

6、錯功能;另外盡量對現有的算法給出改進方案,并比較不同算法之間的優缺點五、設計報告及書寫內容要求課程設計任務完成后,每位同學必須獨立書寫一份課程設計報告,注意:不得抄襲他人的報告(或給他人抄襲),一旦發現,成績為零分。課程設計報告的內容應包括以下五個部分:1) 需求分析:包括設計題目、設計要求以及系統功能需求分析;2) 概要設計:包括系統總體設計框架和系統功能模塊圖;3) 詳細設計:包括主要功能模塊的算法設計思路以及對應的工作流程圖;4) 主要源程序代碼:包括存儲結構設計說明,以及完整源程序清單;5) 調試分析過程描述:包括測試數據、測試輸出結果,以及對程序調試過程中存在問題的思考(列出主要問題

7、的出錯現象、出錯原因、解決方法及效果等);6) 總結:包括課程設計過程中的學習體會和收獲、對c語言和本次課程設計的認識以及自己的建議等內容。7) 書寫格式嚴格按所附要求書寫。附1:l 課程設計報告裝訂順序:封面、任務書、目錄、正文、評分、附件(A4大小的圖紙及程序清單)。 l 正文的格式:一級標題用3號黑體,二級標題用四號宋體加粗,正文用小四號宋體;行距為22。l 正文的內容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實現(至少要有一個主要模塊的流程圖);四、程序調試;五、總結;六、附件(所有程序的原代碼,要求對程序寫出必要的注釋)。l 正文總字數要求在50

8、00字以上(不含程序原代碼)。一.問題描述: 適用用于數學心算搶答賽。比賽題型分為兩種:“四則簡單運算”和“四則混合運算”,計算機隨機出題,選手搶答。要求進入每種題型比賽時,計算機均有提示,每隊的記分窗口隨分的情況而更新。 二.功能要求:1:顯示如下畫面: welcome jion in this competition!2.舉辦單位確定參賽的對數,每隊分配一個記分窗口,底分均為0分。 3.比賽題型分為兩種:“四則簡單運算”(N道題)和“四則混合運算” (M道題),N,M由舉辦單位確定,計算機隨機出題,現出:“四則簡單運算”題,每出一道,選手搶答,做對一題加5分,做錯一題減5分。后出“四則混合

9、運算”,做對一題加10分,做錯一題減10分。要求進入每種題型比賽時,計算機均有提示,每隊的積分窗口隨得分情況而更新。4.根據最后總分,由高到底宣布比賽名次,按任意鍵退出比賽系統。5.要求整個設計以人為本,用戶界面友好。 三.算法提示1.用簡單的程序設計方法2.一定的窗口設計技巧3.簡單的數據類型:int,char,4.簡單的指針 四、測試數據: 主持人測試五、其他: 對改系統有興趣的同學可以在實現系統的基本功能后,完善系統的其他功能。如底分的設置,每種類型題目的加,減分的多少和選手的起始均可由舉辦方設定。課題要求4一、題目6二、內容6三、關鍵字:6【需求分析】6【概要設計】71)、 程序的模塊

10、組成:72)、 各個函數的主要功能:7【詳細設計】7算法:8、【代碼設計】101主函數 main()102四則簡單運算函數simple()104高低分排名函數exchange()11【程序調試】12十、總結13十一,參考資料13附件13一、題目心算搶答系統二、內容該系統是一個簡單的心算搶答系統,能夠使選手實現搶答,了解自己的得分及排名情況。其功能包括:選手搶答、四則簡單計算、四則混合計算、顯示選手得分、選手排名等。三、關鍵字:心算搶答系統【需求分析】1. 開始時主持人可以選擇難題與容易題的數目。2. 主持人可以選擇先搶答者進行回答問題。3. 參加者的起始分為0。,若難題回答正確則加10分若回答

11、錯誤則扣10分。若容易回答正確則加5分若回答錯誤則扣5分。4. 程序能夠給出2個數字的加減乘除的容易運算,也可以給出較難的4種其他的難題運算。5. 在題目回答錯誤之后顯示出正確答案。6. 在題目答完之后顯示出3人的最終分數,并給出從高到低的排名。主持人宣布開始搶答后開始搶答,主持人選擇搶答者回答問題,若難題回答正確則加10分若回答錯誤則扣10分。若容易回答正確則加5分若回答錯誤則扣5分。在題目回答錯誤之后顯示出正確答案,回答完題之后顯示得分。總體設計方案的選定: 程序的功能:要實現對心算搶答進行統一有效的管理需要通過 用函數、數據類型、C語句(控制語句、函數調用語句、表達式語句、復合語句等)來

12、實現。由于是計算,很自然的要建立一個題庫,而這個題庫里的題目是隨機的。這個系統有很多個界面,這些界面的調用,最終是通過函數之間的調用來實現的。【概要設計】 程序的模塊組成以及各個函數的功能: 1)、 程序的模塊組成: 主函數: void main() 四則簡單運算函數:int simple() 四則混合運算函數: int mix() 高低分排名函數: void exchange() 交換函數:void swap()2)、 各個函數的主要功能: void main():主函數simple(): 四則簡單運算函數.mix():四則混合運算函數。void exchange(): 搶答結束后排出名次。

13、 void swap():交換函數為排序函數服務。 【詳細設計】 相關的數據類型 隊伍信息結構數組 struct team char name; int score; tea3=A,0,B,0,C,0算法:void main():輸入難題與容易題的數目。確定扣分加分規則。輸出最后得分與排名。simple():規定簡單題目的類型。mix():規定較難目的類型。void exchange():進行分數比較。void swap():進行排名。函數功能調用關系流程圖如下:歡迎界面輸入第一輪的次數輸入第二輪的次數進入第一輪的搶答進入第二輪的搶答顯示各隊的得分得到最終總排名退出本系統simple( )sr

14、and( )switch( )mix( )return(s )return(t )exchange( )swap( )swap()exit()exchange()mix()simple()main()【代碼設計】整個系統除了主函數外,另外還有5個函數,實現三大功能:四則簡單運算功能、四則混合運算功能、從高分到低分排序功能。1主函數 main()利用scanf()函數輸入第一輪和第二輪搶答的次數。2四則簡單運算函數simple()此函數通過隨機數和加,減,乘,除,實現四則簡單運算。算法:先初始化隨機數發生器,得到兩個隨機數,在利用switch函數選擇要進行的運算。N-S流程圖如下:srand(u

15、nsigned)time(NULL)num1=rand()%100+1;,w+)stpy=rand()%4+1; switch(stpy)switch(stpy)printf(%d-%d”)num2=rand()%100+1;j+,m+=301,m+)printf(%d+%d”)of(struct hk),M*H,fp)printf(%d*%d”)printf(%d/%d”)of(struct hk),M*H,fp)return(s)3.四則混合運算函數 mix()此函數通過隨機數和加,減,乘,除,實現四則簡單運算。算法:先初始化隨機數發生器,得到三個隨機數,在利用switch函數選擇要進行的

16、運算。N-S流程圖如下:srand(unsigned)time(NULL)num1=rand()%100+1;,w+)num3=rand()%4+1; switch(stpy)switch(stpy)printf(%d+%d)*(%d-%d)”)num2=rand()%100+1;j+,m+=301,m+)printf(%d*%d/%d”) hk),M*H,fp)printf(%d*%d-%d/%d”)printf(%d+%d-%d)*%d/%d”) hk),M*H,fp)return(t)4高低分排名函數exchange()此函數建立在四則簡單函數和四則混合運算的基礎之上,當運算結束時,會執

17、行此函數。算法:通過比較和交換函數,實現高低分排序。N-S流程圖如下:swap(int *x,int *y)if(*p1*p2) swap(p1,p2)if(*p1*p3) swap(p1,p3)if(*p2*p3) swap(p2,p3)【程序調試】(1)先進入歡迎界面后,根據提示分別輸入第一輪的次數,和第二輪的次數。(2)當輸入了次數后,先運行的是簡單運算,先輸入參賽隊伍,再輸入答案,如果答案正確則給相應的隊伍加分,當錯誤時,則扣分。(3)當簡單運算結束后,出現混合運算的提示,與簡單運算的方法一樣。(4)在搶答結束后應該會出現各隊的得分,并自動對其進行排序。(5)注意要按要求輸入數字和字母

18、,否則會得到錯誤的信息。十、總結 這次課程設計歷時一個星期多左右,通過這兩個星期的學習,發現了自己的很多不足,自己知識的很多漏洞,看到了自己的實踐經驗還是比較缺乏,理論聯系實際的能力還急需提高。 學習C語言不是一朝一夕的事情。如何以最小的代價學習并精通C語言是本文的主題。即使是“最小的代價”,也絕不是什么捷徑,而是以最短的時間取得最多的收獲,同時也意味著你需要經歷艱苦的過程。仔細讀書、認真抄寫源代碼、獨立完成習題外加更進一步的實驗,最后將所有的代碼留下,成為自己的經驗和財富,絕對的辛苦,也絕對的事半功倍。當然,這種方式只適合學習需要精通的技術,如果不是學習C語言,你還要具體情況具體分析。不斷的

19、練習,一個最愚蠢的辦法,我也離不開這個蠢辦法,但卻不得不承認是最實用的也是最好用的,剛開始學的時候,不斷的翻書查看,然后試著不看書憑記憶不斷寫些代碼,把自己易忘記和易錯的記下來,再默記幾次,而寫代碼和看代碼是每天必做的功課,經過一段時間,我發覺我翻書的次數少了,東西慢慢在腦子里了,這是一種潛移默化的學習過程。我覺得入門還是多看些書,多實踐,養成良好的編程習慣,在實踐的同時多思考問題,多看別人優秀的解題思路與方法,多看別人優秀的代碼,嘗試自己去實現或者說模仿著去實現,讓別人對你的代碼多提意見,探究別人的思維過程,增強自己的思維能力,拓展視野,經常看看自己以前寫的東西,有空拿出來改良改良,我想每隔

20、一段時間,都會有意想不到的收獲。就一定可以達到有效的鍛煉自己的抽象邏輯思維能力。另外還需注意的就是自己實在無法理解的地方不妨指出來多多請教老師和懂的同學讓他們用自然語言來描述一道,并且記錄下來這樣可以達到事半功倍的效果。 學習C語言不能停留在學習它的語法規則,而是利用學到的知識編寫C語言程序,解決實際問題。即把C語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握C語言、自己編寫的程序是否能夠正確地解題。 我首先覺得,用到的程序段不必太高級,因為天下事有高低之分,決定優劣的不是集體中某部分的強弱,起決定作用的是組合內各元素的和諧,要能在一個集體中各盡所能

21、,每個人都能發揮長處,避免自己的短處,那么這個集體的實際組合能量是最優的。 其次,注重程序設計地完善性與縝密性,在設計程序地思路時,應從大局著手,盡可能地考慮所有可能出現地異常情況,以便在前期地設計階段就加以控制。比如針對數組下標溢出地情況,學習了指針之后,就可以運用動態數組地知識加以解決。 程序的調試非常重要,掌握好的調試方法,可以事半功倍。下面說一下程序已經沒有編譯錯誤,能夠運行,但又得不出正確結果的情況下的程序的常用常見調試方法,完成程序的編寫,決不意味著萬事大吉。認為萬無一失的程序,實際上機運行時可能不斷出現麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,

22、但是運行結果顯然是錯誤的。開發環境所提供的編譯系統無法發現這種程序邏輯錯誤,只能靠自己的上機經驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對于初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間只是個小小錯誤. 通過對編碼規范的再次學習,發現了一些做的不夠的地方,在以后的工作中努力的改正,并嚴格遵守編碼規范來進行編碼。1. 代碼的排版布局。2. 效率問題。在實踐過程中,自己編程的時候常常會犯錯誤,并總結了一些克服缺點的方法。而且更深刻體會到程序設計中最重要的一部分不是編寫源程序,而是調試過程。只有經過調試程序,我們才能掌握正確的語法知識及把問題的解決方法用程序語

23、言來表達。在設計程序的同時也增長了翻閱有關文獻的能力,加強了實踐能力及自學能力,培養了分析問題 、編程和動手能力,掌握了程序設計基本技能。 好的排版比較利于別人對代碼進行閱讀和修改。雖然這是一小問題,但也不容忽視。代碼不僅要運行正確,還要比較高的運行效率。其原則是通過對系統數據結構的劃分與組織的改進,以及對程序算法的優化來提高時間和空間上的效率。我在做以后的項目過程中會更加的注意,并積極的提高程序運行的效率。 C語言語法結構很簡潔精妙,寫出的程序也很高效 。C語言能夠讓你深入系統底層。同時,我也清楚地知道21世紀挑戰與機遇并存,沒有足夠的知識儲備必將被時代所拋棄。C語言作為國際上廣泛流行的通用

24、程序設計語言,在計算機的研究和應用中已展現出強大的生命力。C語言兼顧了諸多高級語言的特點,是一種典型的結構化程序設計語言,它處理能力強,使用靈活方便,應用面廣,具有良好的可移植性。雖然我們C語言已有四個月,但一直都重概念、輕實踐,這次設計對我們來說是千載難逢的機會,無論如何都要好好把握。 生活就是這樣,汗水預示著結果也見證著收獲。勞動是人類生存生活永恒不變的話題。通過實習,我才真正領略到“艱苦奮斗”這一詞的真正含義,通過實踐的學習,我認到學好計算機要重視實踐操作,不僅僅是學習C語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學

25、好計算機。 十一,參考資料 C語言之家()C語言程序設計案例教程 張基溫 編著 清華大學出版社C程序設計 (第三版) 譚浩強 著 清華大學出版社 C語言課程設計案例精編 中國水利水電出版社附件#include #include #include void main() int simple(); int mix(); void exchange(int *p1,int *p2,int *p3); struct team char name;/*定義字符量name*/ int score;/*定義整型score*/ tea3=A,0,B,0,C,0;/*定義沒個人的初始分為0*/ int i,p

26、,j,t,k,n,m;/*定義整型*/ int a,b,c;/*定義整型*/ int result1,answer1,result2,answer2;/*定義整型*/ int *q1,*q2,*q3;/*定義指針q1,q2,q3*/ char ch1,ch2; printf( *n); printf( $ $n); printf( $ $n); printf( $ welcome jion in this competition!$n); printf( $ $n); printf( $ $n); printf( *n); /*在屏幕上打出所需圖文*/ for(i=0;i10;i+) prin

27、tf(n); printf(input simple count number n:);/*輸入簡單題目的數量*/ scanf(%d,&n); printf(ninput mix count number m:);/*輸入較難題目的數量*/ scanf(%d,&m); printf(n); printf( press any key to begain ! n); getch(); printf(Begain!n); printf(The first turn.n); printf(This is simple count.n); printf(Please look at the quest

28、ion:n); for(p=0;pn;p+) result1=simple(); printf(Please input one team name:); getchar(); scanf(%c,&ch1); printf(ninput your answer:); scanf(%d,&answer1); for(k=0;k3;k+) t=k; if(ch1=) if(result1=answer1) teat.score+=5;/*如果簡單題目回答正確,答題者score+5*/ else printf(This answer is wrong.n); printf(The

29、right answer is %dn,result1); teat.score-=5;/*如果簡單題目回答錯誤,答題者score-5*/ for(i=0;i3;i+) printf(%c%dn,,teai.score); printf(This turn is end.n); printf(nnnnn); printf(The second turn begain!n); printf(This is mix count!n); printf(Please look at the question:n); for(j=0;jm;j+) result2=mix(); prin

30、tf(please input one team:); getchar(); scanf(%c,&ch2); printf(ninput your answer:); scanf(%d,&answer2); for(i=0;i3;i+) t=i; if(ch2=) if(result2=answer2) teat.score+=10;/*如果較難題目回答正確,答題者score+10*/ else printf(nyour answer is wrong.n); printf(The right answer is %dn,result2);/*輸出正確答案result2*/

31、teat.score-=10;/*如果較難題目回答錯誤,答題者score-10*/ for(i=0;ib&bc) printf(%c %c %cn,A,B,C); if(ab&ca) printf(%c %c %c,C,A,B); if(ab&ac&cb) printf(%c %c %cn,A,C,B); if(ca&cb&ba) printf(%c %c %cn,C,B,A); if(ba&ca&bc) printf(%c %c %cn,B,C,A); if(ba&ac) printf(%c %c %cn,B,A,C);/*按分數大小打印出A,B,C*/ q1=&tea0.score; q2

32、=&tea1.score; q3=&tea2.score; exchange(q1,q2,q3); printf(%d %d %dn,tea0.score,tea1.score,tea2.score);/*輸出A,B,C所得分數*/ simple() int s,num1,num2,stpy; srand(unsigned)time(NULL); num1=rand()%100+1; num2=rand()%100+1; stpy=rand()%4+1; switch(stpy) case 1:s=num1+num2;/*說明簡單題型種類1*/ printf(%d+%d=?n,num1,num2);break; case 2:if(num1=num2)/*說明簡單題型種類2*/ s=num1-num2; printf(%d-%d=?n,num1,num2);bre

溫馨提示

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

評論

0/150

提交評論