版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 前言</b></p><p> 《C語言程個序設(shè)計》課程設(shè)計是對學(xué)生的一種全面綜合訓(xùn)練,它包括問題分析,總體結(jié)構(gòu)設(shè)計,用戶界面設(shè)計,程序設(shè)計基礎(chǔ)技能和技巧,多人合作,以致一整套軟件工作規(guī)范的訓(xùn)練和科學(xué)作風(fēng)的培養(yǎng)。是與課堂聽講、自學(xué)和聯(lián)系相輔相成的必不可少的一個教學(xué)環(huán)節(jié)。通常,課程設(shè)計的課題比平時的習(xí)題復(fù)雜得多,也更接近實際。課程設(shè)計著眼于理論與應(yīng)用的結(jié)合點,使
2、學(xué)生學(xué)會如何把書上學(xué)到的知識用于解決實際問題,培養(yǎng)程序設(shè)計工作所需要的知識綜合能力;另一方面,能使書上的知識變“活”,使學(xué)生更好地深化理解和靈活掌握教學(xué)內(nèi)容。為了達到上述目的,本課程設(shè)計安排了十五個設(shè)計課題,訓(xùn)練重點在于基本的程序設(shè)計方法和分析問題的能力,而不強調(diào)面面俱到。學(xué)生選其中一題進行設(shè)計,設(shè)計完畢寫出課程設(shè)計報告,用A4紙打印成冊;并將課程設(shè)計報告與源程序存盤。學(xué)習(xí)委員將課程設(shè)計報告與磁盤(缺一不可)收齊以后交指導(dǎo)老師。<
3、/p><p><b> 一、目的</b></p><p> 全面熟悉、掌握C語言基本知識,掌握C語言程序設(shè)計中的順序、分支、循環(huán)三種結(jié)構(gòu)及數(shù)函數(shù)和C語言基本圖形編程等方法,把編程和實際結(jié)合起來,增強對不同的問題運用和靈活選擇合適的數(shù)據(jù)結(jié)構(gòu)以及算法描述的本領(lǐng),熟悉編制和調(diào)試程序的技巧,掌握分析結(jié)果的若干有效方法,進一步提高上機動手能力,培養(yǎng)使用計算機解決實際問題的能力,
4、養(yǎng)成提供文檔資料的習(xí)慣和規(guī)范編程的思想,為以后再在專業(yè)課程中應(yīng)用計算機系統(tǒng)解決計算、分析、實驗和設(shè)計等等學(xué)習(xí)環(huán)節(jié)打下較扎實的基礎(chǔ)。</p><p><b> 二、基本情況、</b></p><p><b> 課程類別:必修課</b></p><p><b> 課程學(xué)分:1學(xué)分</b></p
5、><p><b> 三、時間安排</b></p><p> 四、設(shè)計可調(diào)試過程規(guī)范化要求</p><p><b> 需要分析</b></p><p> 分析系統(tǒng)功能需求以及用戶操作流程。</p><p><b> 概要設(shè)計</b></p>
6、;<p> 在需要分析的基礎(chǔ)上,確定系統(tǒng)總體框架(系統(tǒng)功能結(jié)構(gòu)圖)</p><p><b> 詳細設(shè)計</b></p><p> 定義數(shù)據(jù)儲存結(jié)構(gòu),并設(shè)計實現(xiàn)系統(tǒng)功能的具體算法,畫出各算法的工作流程圖。</p><p><b> 代碼設(shè)計</b></p><p> 根據(jù)所設(shè)計
7、的算法,定義相應(yīng)函數(shù)分別實現(xiàn)系統(tǒng)的各子功能模塊,同時由主程序提供友好的用戶界面,使用戶可通過選擇主菜單來調(diào)用課程設(shè)計中要求完成的各個功能模塊,子程序執(zhí)行完后還可以返回主菜單,繼續(xù)選擇其他功能執(zhí)行。源程序要求書寫規(guī)范,結(jié)構(gòu)清晰。重點函數(shù)的重點變量。重點功能部分均要求給出清晰的程序注釋</p><p><b> 程序調(diào)試</b></p><p> 程序編譯、連接成功后
8、,自己設(shè)計實現(xiàn)程序功能的一組或多組測試數(shù)據(jù),并嚴格按照此測試數(shù)據(jù)進行測試,然后分析測試結(jié)果。如果程序不能正常運行或結(jié)果不正確,則需要對程序進行單步調(diào)試,在進行過程中認真查找算法實現(xiàn)中存在的問題,并加以分析和改正。如果程序能夠基本正確運行,可考慮增加若干基本的容錯功能(如避免用戶操作錯誤時程序出現(xiàn)死循。)</p><p> 設(shè)計課題:猜數(shù)字游戲</p><p><b> 一、問
9、題描述:</b></p><p> 該游戲可以由程序隨機產(chǎn)生或由用戶輸入四個0到9之間的數(shù)字,且不重復(fù)。玩游戲者通過游戲提示輸入八次來匹配上面所輸入的數(shù)字。A表示位置正確且數(shù)字正確,B表示數(shù)字正確而位置不正確。</p><p><b> 二、功能要求:</b></p><p> 1、本游戲顯示這樣的菜單:</p>
10、<p><b> 隨機產(chǎn)生數(shù)據(jù)</b></p><p><b> 用戶輸入數(shù)據(jù)</b></p><p><b> 退出游戲</b></p><p> 2、游戲成功與否都能返回主菜單</p><p><b> 三、算法提示:</b>&l
11、t;/p><p><b> 數(shù)據(jù)結(jié)構(gòu):數(shù)組</b></p><p> 用簡單的程序設(shè)計方法</p><p><b> 四、測試數(shù)據(jù):</b></p><p> 測試數(shù)據(jù): 3792</p><p> 第一次輸入: 1234</p><p>&
12、lt;b> 0A2B</b></p><p> 第二次輸入: 5678</p><p><b> 0A1B</b></p><p> 第三次輸入: 0867</p><p><b> 0A1B</b></p><p> 第四次輸入: 97
13、86</p><p><b> 1A1B</b></p><p> 第五次輸入: 1794</p><p><b> 2A0B</b></p><p> 第六次輸入: 2793</p><p><b> 2A2B</b></p&g
14、t;<p> 第七次輸入: 3792</p><p><b> 4A0B</b></p><p><b> 游戲成功?。。?lt;/b></p><p><b> 五、其它:</b></p><p> 對該系統(tǒng)有興趣的同學(xué)可以在實現(xiàn)系統(tǒng)基本功能后,完善系統(tǒng)
15、的其它功能,如:破記錄功能,若你所匹配的次數(shù)小于紀錄保持者,則為破紀錄。調(diào)用積分函數(shù),若你一次完成,則記錄7分,若你2次完成則記錄6分,一次類推,大于8次則不記錄分數(shù).</p><p><b> 課程設(shè)計報告規(guī)范</b></p><p><b> 需求分析</b></p><p><b> 程序的功能。&l
16、t;/b></p><p><b> 2、方案選定</b></p><p><b> 二、概要設(shè)計</b></p><p> 1、程序由哪些模塊組成以及一個模塊之間的層次結(jié)構(gòu)、模塊的調(diào)用關(guān)系;每個模塊的功能。</p><p> 2、課題的總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu);即要存儲什么數(shù)據(jù),這些
17、數(shù)據(jù)是什么樣的結(jié)構(gòu),它們之間有什么關(guān)系等。</p><p><b> 三、詳細設(shè)計</b></p><p> 1、采用C語言定義相關(guān)的數(shù)據(jù)類型。</p><p> 2、寫出各模塊的類C碼算法。</p><p> 3、畫出函數(shù)的調(diào)用關(guān)系圖。</p><p> 四、調(diào)試分析以及設(shè)計體會<
18、;/p><p> 1、測試數(shù)據(jù):準備典型的測試數(shù)據(jù)和測試方案,包括正確的輸入及輸出結(jié)果和含有錯誤的輸入及輸出結(jié)果。</p><p> 2、程序調(diào)試中遇到的問題以及解決問題的方法。</p><p> 3、課程設(shè)計過程經(jīng)驗教訓(xùn)、心得體會。</p><p><b> 五、使用說明</b></p><p&
19、gt; 用戶使用手冊:說明如何使用你編寫的程序,詳細列出每一步的操作步驟。</p><p><b> 六、書寫格式</b></p><p> 設(shè)計報告要求用A4紙打印成冊:</p><p> 標題和正文要求見附1</p><p><b> 封面格式如下頁。</b></p>&
20、lt;p><b> 附錄</b></p><p><b> 1、參考書目</b></p><p> 2、源程序清單(帶注釋)</p><p><b> 附1:</b></p><p> 課程設(shè)計報告裝訂順序:封面、任務(wù)書、目錄、正文、評分、附件(A4大小的圖紙及
21、程序清單)。 </p><p> 正文的格式:一級標題用3號黑體,二級標題用四號宋體加粗,正文用小四號宋體;行距為22。</p><p> 正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實現(xiàn)(至少要有一個主要模塊的流程圖);四、程序調(diào)試;五、總結(jié);六、附件(所有程序的原代碼,要求對程序?qū)懗霰匾淖⑨專?lt;/p><p&g
22、t; 正文總字數(shù)要求在5000字以上(不含程序原代碼)。</p><p><b> 目 錄</b></p><p> 第一章 前言............................................................................................1</p><p>
23、 第二章 需求分析……………………………………………….....…...2</p><p> 2.1系統(tǒng)概述.........................................................2</p><p> 2.2功能需求描述..................................................2</p>
24、<p> 第三章 總體設(shè)計………………………………………..……….….... 4</p><p> 3.1模塊設(shè)計...........................................................................................4</p><p> 3.2程序的模塊組成…………………………………………
25、……….5</p><p> 3.3各個函數(shù)的主要功能…………………………….………...…...5</p><p> 第四章 詳細設(shè)計…………………………………………………....…6 </p><p> 4.1 系統(tǒng)的總體框圖…………………………………………..…….6</p><p> 4.2 相關(guān)的數(shù)據(jù)類型.........
26、.................................................................7</p><p> 4.3 函數(shù)間的調(diào)用圖...........................................................................7</p><p> 4.4 流程圖……………………………………
27、……………… .....……9</p><p> 第五章 測試和結(jié)果………………………………………………....…9</p><p> 5.1 調(diào)試分析……………………………………………………..…...9</p><p> 5.2 使用說明...........................................................
28、..............................9</p><p> 5.3 運行結(jié)果截屏及說明………………………………………...10</p><p> 第六章 源程序…………………………………………………...…...13</p><p> 第七章 總結(jié)………………………………………………………......25</p><
29、;p> 附錄 1、參考文獻...........................................................................................27</p><p> 2、應(yīng)用技術(shù)學(xué)院評分標準………………..…………………….....28</p><p><b> 第一章</b><
30、/p><p><b> 前 言</b></p><p> 《C語言程序設(shè)計》課程設(shè)計是對學(xué)生的一種全面綜合訓(xùn)練,它包括問題分析,總體結(jié)構(gòu)設(shè)計,用戶界面設(shè)計,程序設(shè)計基本技能和技巧,多人合作,以至一整套軟件工作規(guī)范的訓(xùn)練和科學(xué)作風(fēng)的培養(yǎng)。是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個教學(xué)環(huán)節(jié)。通常,課程設(shè)計的課題比平時的習(xí)題復(fù)雜得多,也更接近實際。課程設(shè)計著眼于與應(yīng)
31、用的結(jié)合點,使學(xué)生學(xué)會如何把書上學(xué)到的知識用于解決實際問題,培養(yǎng)軟件工作所需要的動手能力;另一方面,能使書上的知識變“活”,使學(xué)生更好地深化理解和靈活掌握教學(xué)內(nèi)容。為了達到上述目的,本課程設(shè)計安排了八個設(shè)計課題,訓(xùn)練重點在于基本的程序設(shè)計方法和分析問題的能力,而不強調(diào)面面俱到。學(xué)生可任選其中一題進行設(shè)計,設(shè)計完畢寫出課程設(shè)計報告,用A4紙打印成冊;并將課程設(shè)計報告與源程序存盤。學(xué)習(xí)委員將課程設(shè)計報告與磁盤收齊后交指導(dǎo)老師。</p&
32、gt;<p><b> 第二章 </b></p><p><b> 需求分析</b></p><p> 猜數(shù)字游戲是一個運行在Windows平臺下的小型游戲軟件,依據(jù)猜數(shù)字游戲的基本規(guī)則,給用戶進行成績排行,在排行榜中排出前五名玩家的游戲記錄,并可以隨著玩家的游戲記錄進行更新。1、系統(tǒng)概述 該軟件在
33、Windows系統(tǒng)上為玩家提供猜數(shù)字游戲的基本功能,游戲用戶可以選擇開始游、排行榜查看、幫助等主要功能。當(dāng)用戶選擇開始游戲時,系統(tǒng)會提示用戶排行榜上猜數(shù)字成績的最好記錄,并讓用戶逐次猜數(shù)字,用戶每次猜數(shù)字后系統(tǒng)會給出本次猜數(shù)字的結(jié)果提示,如位置和數(shù)字都正確的數(shù)字個數(shù)、數(shù)字正確介位置不正確的數(shù)字個數(shù)。如果用戶猜數(shù)字的次數(shù)超過8次,則提示用戶游戲失敗,如果在8次之內(nèi)猜出4個數(shù)字和正確的順序,則提示用戶猜數(shù)字成功,并到排行榜中進行比較,如果排
34、名在前一名,則計入排行榜中,以便其他用戶查看。在排行榜查看功能中,用戶可以查看當(dāng)前的游戲排行,排行榜中總共顯示5名玩家的排行,如有新的記錄產(chǎn)生,則插入到排行榜中,并把排行榜中位次最末的記錄擠出排行榜。在幫助模塊,用戶可以查看游戲規(guī)則,當(dāng)熟悉規(guī)則后可以退出幫助模塊。2、功能需求描述 猜數(shù)字游戲軟件的總體目標是按照特定游戲規(guī)則為用戶提供一個方便友好的游戲</p><p><b>
35、 第三章 </b></p><p><b> 總體設(shè)計</b></p><p> 在前面對猜數(shù)字游戲進行需求分析的過程中,已經(jīng)初步明確了系統(tǒng)的主要功能模塊和用戶需求,下面將在總體設(shè)計的過程中,給出猜數(shù)字游戲的模塊結(jié)構(gòu)、流程描述以及界面布局,并使得系統(tǒng)的總體設(shè)計符合軟件工程中總體設(shè)計的基本原則。開發(fā)與設(shè)計的總體思想 猜數(shù)字
36、游戲是一種大眾娛樂游戲,開發(fā)與設(shè)計的重點在于游戲供玩家進行猜數(shù)字游戲的原始數(shù)字的產(chǎn)生和用戶每次進行猜數(shù)字操作之后的游戲提示,這兩方面的規(guī)則設(shè)計往往決定了軟件運行的正確性和質(zhì)量。1、模塊設(shè)計: 1)、游戲區(qū)模塊 該模塊為玩家提供猜數(shù)字游戲的主休功能,由系統(tǒng)自動產(chǎn)生4個隨機排列的整數(shù),并給用戶8次機會猜測數(shù)字的數(shù)值和排列順序。如果用戶在8次之內(nèi)沒有猜出正確的結(jié)果,則提示用戶游戲失敗,否
37、則提示用戶猜數(shù)字成功,并調(diào)用產(chǎn)生新記錄模塊對玩家游戲成績進行處理。(因精力有限且只能用畫圖來畫個框架,所以就不再有圖了) ①產(chǎn)生原始數(shù)字:由系統(tǒng)產(chǎn)生4個隨機數(shù),并按任意順序排列,作為游戲的原始數(shù)字供玩家進行猜數(shù)字游戲。 ②游提示:提示用戶數(shù)值和位置全對的數(shù)字個數(shù),和只有數(shù)值但位置不對的數(shù)字個數(shù)?!?③原始數(shù)字顯示:當(dāng)用戶在8次之內(nèi)仍未能</p><p> 2、程序的模塊組成:</p>&
38、lt;p> 主函數(shù): int main()</p><p> 創(chuàng)立結(jié)構(gòu)體:struct p1()</p><p> 使數(shù)字產(chǎn)生循環(huán): int rand1()</p><p> 調(diào)用讀取破記錄: goread()</p><p> 輸入數(shù)字: void input1();</p><p> 初始化隨機
39、數(shù)發(fā)生器:getnumber()</p><p> 清除文本模式窗口:clrscr();</p><p> 讀入字符串的時候,直到回車為止 :gets()</p><p> 3、各個函數(shù)的主要功能:</p><p> 隨機產(chǎn)生4個數(shù)的函數(shù): 隨機產(chǎn)生4個數(shù)字。</p><p> randomize()是c函數(shù)
40、庫提供的一個函數(shù),功能給產(chǎn)生隨機數(shù)的進行初始化</p><p><b> 清除文本模式窗口</b></p><p><b> 第四章 </b></p><p><b> 詳細設(shè)計</b></p><p><b> 1、系統(tǒng)的總體框圖</b><
41、;/p><p><b> 圖 4-1</b></p><p> 2、相關(guān)的數(shù)據(jù)類型:</p><p> #include<stdio.h></p><p> #include<conio.h></p><p> #include<stdlib.h><
42、/p><p> #include<string.h></p><p> void rand2();</p><p> int rand1();</p><p> void input1();</p><p> void compare1();</p><p> int i,j
43、,k,c,d,b[4];</p><p> char a[24];</p><p><b> 將數(shù)字定義為整型</b></p><p> 3、函數(shù)間的調(diào)用關(guān)系圖如下:</p><p><b> 圖 4-2</b></p><p><b> 4、流程圖&l
44、t;/b></p><p><b> 圖 4-3</b></p><p><b> 第五 </b></p><p><b> 測試和結(jié)果</b></p><p><b> 1、調(diào)試分析;</b></p><p>
45、輸入的游戲玩家人數(shù)太多時,屏幕顯示不能控制為一頁一頁顯示,所以為了方便起見,不要輸入太多記錄,十七左右為最佳。</p><p> 剛開始執(zhí)行輸入函數(shù),按數(shù)字順序輸入,輸完后執(zhí)行顯示功能,數(shù)字、字母的位置顯示不對,試著在其中增加一些語句,希望能把所需結(jié)果按正常順序顯示,但暫時沒有成功,最后在老師的幫助下,所需結(jié)果能按正常順序輸出了。</p><p> 在前面對猜數(shù)字游戲進行需求分析的過程
46、中,已經(jīng)初步明確了系統(tǒng)的主要功能模塊和用戶需求,下面將在總體設(shè)計的過程中,給出猜數(shù)字游戲的模塊結(jié)構(gòu)、流程描述以及界面布局,并使得系統(tǒng)的總體設(shè)計符合軟件工程中總體設(shè)計的基本原則。開發(fā)與設(shè)計的總體思想 猜數(shù)字游戲是一種大眾娛樂游戲,開發(fā)與設(shè)計的重點在于游戲供玩家進行猜數(shù)字游戲的原始數(shù)字的產(chǎn)生和用戶每次進行猜數(shù)字操作之后的游戲提示,這兩方面的規(guī)則設(shè)計往往決定了軟件運行的正確性和質(zhì)量。同時,要謹記調(diào)試失敗的原因,以免
47、下次犯同類錯誤。</p><p><b> 2、使用說明:</b></p><p><b> 1)、打開程序:</b></p><p> 2)、進入選擇頁面:</p><p> ?。?)選擇1為查看記錄</p><p> ?。?)選擇2為新游戲</p>&
48、lt;p><b> (3)選擇0為退出</b></p><p><b> 3)、進行游戲</b></p><p><b> 4)、退出</b></p><p> 3、運行結(jié)果截屏及說明:</p><p><b> 游戲初始畫面</b><
49、;/p><p> 選擇一進入游戲系統(tǒng)隨機顯示四個數(shù)字提供讓游戲者猜測:</p><p> 如果連續(xù)四次輸入錯誤將出現(xiàn)如下結(jié)果,并出現(xiàn)提示:</p><p> 選擇四進入幫助顯示結(jié)果</p><p> 如果繼續(xù)則可以輸入姓名并保存記錄如果按任意鍵則返回首頁:</p><p><b> 第六章 </
50、b></p><p><b> 源程序</b></p><p> #include <time.h></p><p> #include <stdlib.h></p><p> #include<stdio.h></p><p> #includ
51、e <conio.h></p><p> int a[5],b[5],n1,n2,n3,i,j;/* a,b,只用了從1~4的四個下標. */</p><p> /* n1計算位置數(shù)字相同的數(shù)字個數(shù) */</p><p> /* n2計算數(shù)字相同但位置不相同的數(shù)字個數(shù) */</p><p> /* n3計算所猜次數(shù) */&
52、lt;/p><p><b> char ch;</b></p><p> StartProgram()</p><p><b> {</b></p><p> ReadRecord(); /*調(diào)用讀取破記者函數(shù) */</p><p><b> n1=0;<
53、;/b></p><p><b> n3=0;</b></p><p> getnumber();/*調(diào)用隨機產(chǎn)生4個數(shù)的函數(shù)*/</p><p> for(j=i-1;j>=1;j--)</p><p> printf("%d ",a[j]);</p><p&
54、gt; getchar();</p><p> printf("\n\n\n\n\n");</p><p> /* 循環(huán)猜數(shù) */</p><p> while(n1<4&&n3<10)</p><p><b> {</b></p><p>
55、;<b> ++n3;</b></p><p><b> n1=0;</b></p><p><b> n2=0;</b></p><p> /* 提示用戶輸入四個要猜的4位整數(shù) */</p><p> for(i=1;i<=4;i++)</p>
56、<p><b> {</b></p><p> printf("\ninput the NO.%d number:",i);</p><p> scanf("%d",&b[i]);</p><p><b> }</b></p><p>
57、; for(i=1;i<=4;i++)</p><p><b> {</b></p><p> if(a[i]==b[i])/* 位置數(shù)字都對的 */</p><p><b> {</b></p><p><b> n1++;</b></p>&l
58、t;p><b> continue;</b></p><p><b> }</b></p><p> for(j=1;j<=4;j++)/* 計算數(shù)字相同但位置不相同的個數(shù) */</p><p> if(b[i]==a[j]) n2++;</p><p><b> }
59、</b></p><p> printf("correct value and correct position: %d\n",n1);</p><p> printf("correct value but incorrectness position:%d\n",n2);</p><p> printf(&
60、quot;you have guessed %d times\n",n3);</p><p> if(n1==4) break;/* 如果四次都猜對了就結(jié)束循環(huán)。 */</p><p> } /* while循環(huán)結(jié)束 */</p><p> if(n3>=10)</p><p> printf("You bl
61、ew it ,the answer is %d,%d,%d",a[1],a[2],a[3],a[4]);</p><p><b> else</b></p><p><b> {</b></p><p> printf("Configrafulastions!You finish it by %d
62、 times\n",n3);</p><p> ResetRecord(n3);</p><p><b> }</b></p><p> printf("press any key to continue...\n");</p><p> fflush(stdin);</p&g
63、t;<p><b> getch();</b></p><p><b> }</b></p><p> getnumber()/* 隨機產(chǎn)生四個數(shù)的函數(shù) */</p><p><b> {</b></p><p> randomize(); </p
64、><p> /* 產(chǎn)生隨機數(shù)的初始化函數(shù) */</p><p> for(i=1;i<=4;i++)</p><p><b> {</b></p><p><b> loop2:</b></p><p><b> {</b></p>
65、;<p> /* 產(chǎn)生的隨機數(shù)處理為1位的整數(shù) */</p><p> a[i]=rand()%10;/* rand函數(shù)用于產(chǎn)生隨機數(shù) */</p><p> /* 循環(huán)判斷,隨機數(shù)要求不重復(fù),如果重復(fù)則重新產(chǎn)生 */</p><p> for(j=i-1;j>=1;j--)</p><p> if(a[i]==
66、a[j]) goto loop2;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> #ifndef PLAYER</p><p> #define PLAYER
67、</p><p> #include <stdio.h></p><p> #include <conio.h></p><p> #include <string.h></p><p> #define SIZE 5</p><p> typedef struct<
68、/p><p><b> {</b></p><p> char name[20];/* field of name */</p><p> int score;/* field of score */</p><p><b> }player;</b></p><p>&
69、lt;b> #endif#</b></p><p> /* SortByName按游戲成績排序 */</p><p> #include <stdio.h></p><p> void SortByName()</p><p><b> {</b></p><p
70、> int i,j,k;</p><p> player TempS;/* 定義進行操作時的臨時結(jié)構(gòu)體變量 */</p><p> player s[5];/* SIZE在score.h頭文件中定義的常量,值為5 */</p><p> int recNumber=0;</p><p> char DataFile[10]=&
71、quot;record";</p><p> FILE *fp=NULL;</p><p><b> clrscr();</b></p><p> /* 以讀的方式打開文件,如文件不存在,提示錯誤 */</p><p> fp=fopen(DataFile,"rb");</p&
72、gt;<p> if(fp==NULL)</p><p><b> {</b></p><p> printf("\nOpen file %s fial !End with any key.\n",DataFile);</p><p> perror("Open file fail"
73、);</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p> /* 將文件中要排序的信息存入結(jié)
74、構(gòu)體數(shù)組 */</p><p> while(fread(&s[recNumber],sizeof(player),1,fp)!=(int)NULL)</p><p><b> {</b></p><p> recNumber++;</p><p><b> }</b></p&
75、gt;<p> fclose(fp);</p><p> /* 如果文件中有記錄,則將各記錄按游戲成績值排序 */</p><p> if(recNumber>1)</p><p><b> {</b></p><p> for(i=0;i<recNumber-1;i++)</p
76、><p><b> {</b></p><p><b> k=i;</b></p><p> for(j=i+1;j<recNumber;j++)</p><p><b> {</b></p><p> if(strcmp(s[k].name
77、,s[j].name)>0) k=j;</p><p><b> }</b></p><p><b> if(k!=i)</b></p><p><b> {</b></p><p> strcpy(TempS.name,s[k].name);</p>
78、<p> TempS.score=s[k].score;</p><p> strcpy(s[k].name,s[i].name);</p><p> s[k].score=s[i].score;</p><p> strcpy(s[i].name,TempS.name);</p><p> s[i].score=Te
79、mpS.score;</p><p><b> }</b></p><p><b> }</b></p><p> /* 將排序好的記錄寫入文件 */</p><p> fp=fopen(DataFile,"wb+");</p><p> if(
80、fp==NULL)</p><p><b> {</b></p><p> printf("\nOpen file %s fial!End with any key.\n",DataFile);</p><p> perror("Open file fail");</p><p&
81、gt; fflush(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p> for (i=0;i<recNumber;i++)</p&g
82、t;<p><b> {</b></p><p> if(fwrite(&s[i],sizeof(player),1,fp)!=1)</p><p><b> {</b></p><p> printf("\nwrite file %s fail!End with any key.\
83、n",DataFile);</p><p> perror("write file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p&
84、gt;<p><b> }</b></p><p><b> }</b></p><p> fclose(fp);</p><p><b> }</b></p><p> /* 顯示排序后的文件 */</p><p> prin
85、tf("the player's score as folow:\n");</p><p> fp=fopen(DataFile,"rb");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf(&quo
86、t;\nOpen file %s fial!End with any key.\n",DataFile);</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p
87、><b> return;</b></p><p><b> }</b></p><p> printf("\nName\t\tscore\n");</p><p> while(fread(&TempS,sizeof(player),1,fp)!=(int)NULL)</p
88、><p><b> {</b></p><p> printf("%s\t\t%d\n",TempS.name,TempS.score);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf
89、("press any key to continue...");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> }</b></p><p> #include <stdio.h>
90、</p><p> /* 顯示幫助信息 */</p><p> PrintHelp()</p><p><b> {</b></p><p><b> clrscr();</b></p><p> printf("\n");</p>
91、<p> printf("+--------------------------------------------------------+\n");</p><p> printf("+ you hava 10 opportunities to guess num +\n");</p><p>
92、printf("+ every time the system will hint you : +\n");</p><p> printf("+ correct value and correct position count +\n");</p><p> printf("
93、;+ correct value but incorrectness position count +\n");</p><p> printf("+--------------------------------------------------------+\n");</p><p> printf("+
94、 about the score list +\n");</p><p> printf("+ the score list is store the five player's score on top +\n");</p><p> printf("+------------------
95、--------------------------------------+\n");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> }</b></p><p> /* SortByName按游戲成績
96、排序 */</p><p> #include <stdio.h></p><p> void SortByScore()</p><p><b> {</b></p><p> int i,j,k;</p><p> player TempS;/* 定義進行操作時的臨時結(jié)構(gòu)
97、體變量 */</p><p> player s[5];/* SIZE在score.h頭文件中定義的常量,值為5 */</p><p> int recNumber=0;</p><p> char DataFile[10]="record";</p><p> FILE *fp=NULL;</p>
98、<p><b> clrscr();</b></p><p> /* 以讀的方式打開文件,如文件不存在,提示錯誤 */</p><p> fp=fopen(DataFile,"rb");</p><p> if(fp==NULL)</p><p><b> {</b
99、></p><p> printf("\nOpen file %s fial !End with any key.\n",DataFile);</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b&g
100、t; getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p> /* 將文件中要排序的信息存入結(jié)構(gòu)體數(shù)組 */</p><p> while(fread(&s[recNumber],sizeof(
101、player),1,fp)!=(int)NULL)</p><p><b> {</b></p><p> recNumber++;</p><p><b> }</b></p><p> fclose(fp);</p><p> /* 如果文件中有記錄,則將各記錄
102、按游戲成績值排序 */</p><p> if(recNumber>1)</p><p><b> {</b></p><p> for(i=0;i<recNumber-1;i++)</p><p><b> {</b></p><p><b>
103、 k=i;</b></p><p> for(j=i+1;j<recNumber;j++)</p><p><b> {</b></p><p> if(s[k].score>s[j].score) k=j;</p><p><b> }</b></p>
104、<p><b> if(k!=i)</b></p><p><b> {</b></p><p> strcpy(TempS.name,s[k].name);</p><p> TempS.score=s[k].score;</p><p> strcpy(s[k].name
105、,s[i].name);</p><p> s[k].score=s[i].score;</p><p> strcpy(s[i].name,TempS.name);</p><p> s[i].score=TempS.score;</p><p><b> }</b></p><p>&
106、lt;b> }</b></p><p> /* 將排序好的記錄寫入文件 */</p><p> fp=fopen(DataFile,"wb+");</p><p> if(fp==NULL)</p><p><b> {</b></p><p>
107、printf("\nOpen file %s fial!End with any key.\n",DataFile);</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p
108、><p><b> return;</b></p><p><b> }</b></p><p> for (i=0;i<recNumber;i++)</p><p><b> {</b></p><p> if(fwrite(&s[
109、i],sizeof(player),1,fp)!=1)</p><p><b> {</b></p><p> printf("\nwrite file %s fail!End with any key.\n",DataFile);</p><p> perror("write file fail"
110、);</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b
111、></p><p> fclose(fp);</p><p><b> }</b></p><p> /* 顯示排序后的文件 */</p><p> printf("the player's score as flow:\n");</p><p> fp
112、=fopen(DataFile,"rb");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("\nOpen file %s fial!End with any key.\n",DataFile);</p><p&
113、gt; perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b>&
114、lt;/p><p> printf("\nName\t\tscore\n");</p><p> while(fread(&TempS,sizeof(player),1,fp)!=(int)NULL)</p><p><b> {</b></p><p> printf("%s\
115、t\t%d\n",TempS.name,TempS.score);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("press any key to continue...");</p><p> fflush(std
116、in);</p><p><b> getch();</b></p><p><b> }</b></p><p> #include <stdio.h></p><p> ResetRecord(int n) /* n所用次數(shù) */</p><p>&l
117、t;b> {</b></p><p><b> int i,j;</b></p><p> int recnum=0;</p><p> int maxscore=0;</p><p> player r[5];</p><p> FILE *fp=NULL;<
118、/p><p> player Pro;</p><p> player TempS;</p><p> fp=fopen("record","rb");</p><p> if(fp==NULL)</p><p><b> {</b></p>
119、;<p> printf("\nOpen file fail!End with any key\n");</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></
120、p><p><b> exit(0);</b></p><p><b> }</b></p><p> /* 將文件中的記錄讀入數(shù)組中. */</p><p> while((fread(&r[recnum],sizeof(player),1,fp)!=(int)NULL) &&
121、amp; (recnum<5))</p><p><b> {</b></p><p><b> recnum++;</b></p><p><b> }</b></p><p> fclose(fp);</p><p> /* 如果記錄
122、成員沒有5個,則順次入數(shù)組中添加記錄 */</p><p> if(recnum<4)</p><p><b> {</b></p><p> printf("What is your name?"); /* 讓玩家輸入姓名 */</p><p> scanf("%s&quo
123、t;,r[recnum].name);</p><p> r[recnum].score=n;</p><p><b> recnum++;</b></p><p><b> }</b></p><p> /* 如果記錄成員已經(jīng)有5個,則找出猜數(shù)字次數(shù)最多的記錄,即最差玩家 */</p
124、><p> /* 如果當(dāng)前記錄比此記錄快,則替換 */</p><p><b> else</b></p><p><b> {</b></p><p> for(i=0;i<5;i++)</p><p><b> {</b></p&g
125、t;<p> if(r[i].score>maxscore)/* maxscor初始值為0 */</p><p><b> {</b></p><p> maxscore=r[i].score;</p><p><b> j=i;</b></p><p><b>
126、; }</b></p><p><b> }</b></p><p> /* 如果當(dāng)前人的記錄比最慢記錄快,或相等則替換,使玩家入榜,最差玩家落榜 */</p><p> if(n<=r[j].score)</p><p><b> {</b></p>&l
127、t;p> printf("What is your name?"); /* 讓玩家輸入姓名 */</p><p> scanf("%s",r[j].name);</p><p> r[j].score=n;</p><p><b> }</b></p><p>&l
128、t;b> }</b></p><p> fp=fopen("record","wb");/* 以寫的方式打開排行榜文件 */</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("O
129、pen file fail!end with any key.\n");</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> ex
130、it(0);</b></p><p><b> }</b></p><p> /* 循環(huán)把更新過的排行情況寫入排行榜 */</p><p> for(i=0;i<recnum;i++)</p><p><b> {</b></p><p> if(
131、fwrite(&r[i],sizeof(player),1,fp)!=1)</p><p><b> {</b></p><p> printf("\nWrite file fail!End with any key.\n");</p><p> perror("Write file fail&quo
132、t;);</p><p><b> getch();</b></p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> }</b></p><p> fclose(
133、fp);</p><p> /* 顯示更新排行過的排行榜 */</p><p> fp=fopen("record","rb");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf(&
134、quot;Open file fail!end with any key.\n");</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b&g
135、t; exit(0);</b></p><p><b> }</b></p><p> printf("the record is:\n");</p><p> printf("\nName\tscore\n");</p><p> while(fread(&
136、amp;TempS,sizeof(player),1,fp)!=(int)NULL)</p><p><b> {</b></p><p> printf("\n%s\t%d\n",TempS.name,TempS.score);</p><p><b> }</b></p><
137、;p> fclose(fp);</p><p><b> }</b></p><p> #include <stdio.h></p><p> ClearSort()</p><p><b> {</b></p><p> player Temp
138、S;/* 定義進行操作時的臨時結(jié)構(gòu)體變量,用于存放系統(tǒng)默認記錄 */</p><p> char DataFile[10]="record";/* 存放排行榜文件名 */</p><p> FILE * fp=NULL;</p><p> strcpy(TempS.name,"player");/* 初始化系統(tǒng)默認記錄的
139、玩家姓名 */</p><p> TempS.score=10;/* 初始化系統(tǒng)默認記錄的玩家成績 */</p><p> fp=fopen(DataFile,"wb+");/* 打開排行榜文伯 */</p><p> if(fp==NULL)/* 打開不成功給出錯誤提示 */</p><p><b>
140、{</b></p><p> printf("\nOpen the score sort file fail!end with any key!\n",DataFile);</p><p> perror("Open file fail!");</p><p> fflush(stdin);</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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計--猜數(shù)字游戲
- c語言課程設(shè)計---猜數(shù)字游戲報告
- c語言程序課程設(shè)計-猜數(shù)字游戲
- c語言課程設(shè)計---猜數(shù)字游戲姚成
- 《c語言程序設(shè)計》課程設(shè)計---猜數(shù)字游戲
- c語言課程設(shè)計----猜字游戲
- c語言課程設(shè)計--猜數(shù)游戲
- 猜數(shù)字游戲課程設(shè)計報告
- 課程設(shè)計報告--猜數(shù)字游戲
- java課程設(shè)計——猜數(shù)字游戲
- c++猜單詞課程設(shè)計--——猜單詞游戲
- android課程設(shè)計報告--猜數(shù)字小游戲
- c++課程設(shè)計報告--猜數(shù)游戲
- 猜單詞游戲c++課程設(shè)計報告
- android課程設(shè)計報告--猜數(shù)字小游戲.doc
- c語言課程設(shè)計-數(shù)組游戲
- c語言小游戲課程設(shè)計
- c語言課程設(shè)計報告---游戲設(shè)計
- 設(shè)計一個gui猜數(shù)字游戲程序課程設(shè)計
- 猜數(shù)字課程設(shè)計報告
評論
0/150
提交評論