




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、A J課程設(shè)計(jì)報(bào)課程名稱C語言程序設(shè)計(jì)報(bào)告課題名稱猜數(shù)字游戲機(jī)械設(shè)計(jì)級(jí) 1082號(hào)16指導(dǎo)教師王穎2011年9 月15日湖南工程學(xué)院課程設(shè)計(jì)任務(wù)課程名稱 課C 課程設(shè)計(jì) 猜數(shù)字游戲?qū)I(yè)班級(jí)機(jī)設(shè)1082班學(xué)生姓名0216指導(dǎo)老師審 批王穎任務(wù)書下達(dá)日期2011 年 9任務(wù)書完成日期2011 年 9月 15目錄第三章 總體設(shè)計(jì)程序的模塊組成各個(gè)函數(shù)的主要功能第四章 詳細(xì)設(shè)計(jì)系統(tǒng)的總體框圖流程圖第五章 測(cè)試和結(jié)果調(diào)試分析運(yùn)行結(jié)果截屏及說明附錄 1、應(yīng)用技術(shù)學(xué)院評(píng)分標(biāo) 準(zhǔn)第一章、八前言C 語言程序設(shè)計(jì) 課程設(shè)計(jì)是對(duì)學(xué)生的一種全面綜合訓(xùn) 練,它 包括問題分析,總 體結(jié)構(gòu)設(shè)計(jì) ,用 戶界面設(shè)計(jì),程序設(shè)計(jì)基
2、本技能和 技巧,多人合 作,以至一 整套軟件 工作規(guī)范 的訓(xùn)練 和科 學(xué)作風(fēng)的 培養(yǎng) 。 是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué) 環(huán)節(jié)。通 常,課程設(shè) 計(jì)的課題比平時(shí)的習(xí)題復(fù)雜得多,也 更接近實(shí)際。課程設(shè) 計(jì)著眼 于與 應(yīng)用 的結(jié) 合 點(diǎn),使學(xué) 生 學(xué)會(huì) 如何 把書 上學(xué) 到的 知識(shí) 用于 解 決實(shí)際問題,培 養(yǎng)軟件工作所需要的動(dòng)手能力;另一方面,能 使書上 的 知 識(shí) 變 “ 活 ”, 使 學(xué) 生 更 好 地 深 化 理 解 和 靈 活 掌 握 教 學(xué) 內(nèi) 容 。 為 了 達(dá)到上 述目 的,本 課 程設(shè) 計(jì)安 排了 八個(gè) 設(shè)計(jì) 課題,訓(xùn)練重 點(diǎn)在 于基 本 的程序 設(shè)計(jì) 方法
3、和分 析 問題 的能 力,而 不強(qiáng) 調(diào)面面 俱到。學(xué)生 可任選 其中一題進(jìn)行設(shè)計(jì),設(shè)計(jì)完畢寫出課程設(shè)計(jì)報(bào)告,用 A4 紙打印成冊(cè); 并將課 程設(shè) 計(jì)報(bào) 告與 源 程序 存盤 。學(xué)習(xí) 委員 將課 程設(shè) 計(jì)報(bào) 告與 磁盤 收 齊后交指導(dǎo)老師。第二章需求分析猜 數(shù) 字 游 戲 是 一 個(gè) 運(yùn) 行 在 Wi nd ows平 臺(tái) 下的 小型 游 戲 軟 件 ,依 據(jù)猜 數(shù) 字 游 戲 的基 本規(guī) 則 ,給 用戶 進(jìn) 行 成 績(jī)排 行 ,在 排 行 榜 中 排 出前 五 名 玩 家 的游 戲記 錄 ,并 可 以 隨 著玩家的游戲記錄進(jìn)行更新。1、系 統(tǒng) 概 述臺(tái)匕能。該 軟 件 在 Wi ndo ws 系
4、 統(tǒng) 上 為 玩 家 提 供 猜 數(shù)字 游 戲 的 基 本 功 能,游 戲 用 戶 可 以 選擇 開始 游 、排 行 榜 查 看 、幫 助 等 主 要 功 能 。當(dāng) 用 戶 選 擇 開 始 游 戲 時(shí) ,系 統(tǒng) 會(huì) 提 示 用 戶 排 行 榜 上 猜數(shù) 字 成 績(jī) 的 最好 記 錄 ,并 讓 用 戶逐 次 猜 數(shù) 字 ,用 戶 每 次 猜 數(shù)字 后 系 統(tǒng) 會(huì) 給 出 本次 猜 數(shù) 字 的 結(jié)果 提示 ,如 位置 和 數(shù) 字 都 正 確 的數(shù) 字個(gè) 數(shù) 、數(shù) 字 正 確 介位置 不 正 確的數(shù) 字個(gè) 數(shù) 。如果用戶猜 數(shù) 字的 次 數(shù) 超 過 8 次 ,則 提示用 戶 游 戲失敗 ,如 果 在
5、 8次 之內(nèi)猜 出 4 個(gè) 數(shù)字 和 正 確 的 順序 ,則提 示 用 戶猜數(shù) 字成 功 ,并到排行榜 中 進(jìn)行 比 較 ,如 果 排 名 在 前一名 ,則 計(jì)入 排 行 榜 中 ,以便其他用 戶 查看 。在 排 行 榜 查 看 功能 中 ,用 戶 可 以 查 看當(dāng) 前 的 游 戲 排 行 , 排 行 榜 中 總共 顯 示 5 名 玩 家 的 排 行 ,如 有 新的 記錄 產(chǎn) 生 ,則 插 入 到 排 行 榜 中 ,并 把 排 行 榜 中 位次 最 末 的 記 錄擠 出排 行 榜 。在 幫 助 模 塊 ,用戶 可 以 查 看 游 戲 規(guī)則 ,當(dāng) 熟 悉 規(guī) 則 后 可 以 退 出 幫 助 模塊
6、 。2、功 能 需 求 描 述猜數(shù)字游戲軟件的總體目標(biāo)是按 照 特 定游 戲 規(guī) 則 為 用 戶 提供 一 個(gè) 方 便 友好 的游 戲 界 面 ,同 時(shí) 給 用 戶提供排行榜的功能使用戶能夠按照特定的目標(biāo)提高自己的成 績(jī) , 并且 提供 相 應(yīng) 的 幫 助功 能 。 游 戲 規(guī)則 如下 。 游 戲 軟 件 隨 機(jī) 產(chǎn)生 4 個(gè) 數(shù) 字 , 但 不 顯 示,給 用 戶提 供 輸 入 提 示符 ,讓 用 戶猜 4 個(gè) 數(shù) 字 的 值 和位 置 順 序 。如 果數(shù) 字 值 和 位 置順 序 均 正 確 , 則 猜數(shù) 字 成 功 。 玩 家 有 8 次 猜 數(shù)字 的機(jī) 會(huì) , 如 果 在 8 次 之
7、內(nèi)仍 末 猜 出 正 確的 數(shù) 字 值 和 數(shù)字 位置 順 序 ,則 提 示 用 戶 游戲失敗。 一旦 玩 家 在 8 次 的 次 數(shù) 限 制 內(nèi) 猜 出正確的數(shù)字值和位置順序,則贏得游戲。 當(dāng)玩家贏得游戲后,會(huì)與排行榜 中 的 前五 名玩 家 的 游 戲 記錄 比 較 ,如 果 排 名能 夠進(jìn) 入 前 五 名 ,則 更 新 排 行 榜 , 使 當(dāng) 前 玩 家 成 為 入 榜 選 手。 記分 規(guī) 則 : 猜 數(shù)字 所用 次 數(shù) 即 為 分 數(shù) ,所 以 分 數(shù)越 少 證 明 玩 家 水 平 越 高 ,排 行 榜 中 也是 排 列 份 數(shù) 最少的前五名選手。本 游 戲 軟 件 需 要 實(shí) 現(xiàn) 以
8、 下 一 些 基本功能。 游戲區(qū):玩家可以在游戲區(qū)逐次 猜 數(shù) 字,系 統(tǒng) 給 出玩 家每 次 猜數(shù) 字 后 的 提 示,包 括 數(shù) 值、位 置 均 正確的數(shù)字個(gè)數(shù)和數(shù)值正確但位置不正確的數(shù)字個(gè)數(shù)。 刷新 排 行 榜 : 當(dāng)玩 家 成 功 完 成 一輪猜 數(shù)字 游戲 后,可通過和排行 榜中 相應(yīng)記錄 的比 較判 斷玩家是 否可以進(jìn)入排行榜,進(jìn)入排行榜的資格游戲成績(jī)?cè)谇拔迕耐?家。 查看排行榜:玩家可以查看當(dāng)前 排 行 榜中 的排 名順序,從 而 確定 自己的游 戲目 標(biāo)。排 行 榜 的查 看 按一定順序顯示給用戶,便于查看。 清除 排 行 榜 : 玩家 可以 選擇清除 能 ,使 得 排 行
9、榜 上 的 玩 家 姓 名 和 玩 家 游 戲 記 錄 從 系 統(tǒng) 中e r) 和 系 統(tǒng) 默 認(rèn) 記 錄 8 次 。 玩家通過幫助功能了解游排行榜功清除,只留下系統(tǒng)默認(rèn)的玩家名(p lay幫助: 戲規(guī)則和排行榜設(shè)置規(guī)則。退出:玩家想結(jié)束并退出游戲系統(tǒng)。第三章總體設(shè)計(jì)在前面對(duì)猜數(shù)字游戲進(jìn)行需求分析的過程中, 已經(jīng)初步明確了系統(tǒng)的主要功能模塊和用戶需求,下面將在總體設(shè)計(jì)的過程中, 給出猜數(shù)字游戲的模塊結(jié)構(gòu)、 流程描述以及界面布局, 并使得系統(tǒng)的總體設(shè)計(jì)符 合軟件工程中總體設(shè)計(jì)的基本原則。開發(fā)與設(shè)計(jì)的總體思想 猜數(shù)字游戲是一種大眾娛樂游戲, 開發(fā)與設(shè)計(jì) 的重點(diǎn)在于游戲供玩家進(jìn)行猜數(shù)字游戲的原始數(shù)字
10、的產(chǎn)生和用戶每次進(jìn)行猜數(shù) 字操作之后的游戲提示, 這兩方面的規(guī)則設(shè)計(jì)往往決定了軟件運(yùn)行的正確性和質(zhì) 量。1、模塊設(shè)計(jì):1)、游戲區(qū)模塊該模塊為玩家提供猜數(shù)字游戲的主休功能, 由 系統(tǒng)自動(dòng)產(chǎn)生 4 個(gè)隨機(jī)排列的整數(shù),并給用戶 8 次機(jī)會(huì)猜測(cè)數(shù)字的數(shù)值和排列順 序。如果用戶在 8 次之內(nèi)沒有猜出正確的結(jié)果, 則提示用戶游戲失敗, 否則提示 用戶猜數(shù)字成功,并調(diào)用產(chǎn)生新記錄模塊對(duì)玩家游戲成績(jī)進(jìn)行處理。 ( 因精力有 限且只能用畫圖來畫個(gè)框架,所以就不再有圖了 ) 產(chǎn)生原始數(shù)字: 由系統(tǒng)產(chǎn)生 4 個(gè)隨機(jī)數(shù),并按任 意順序排列,作為游戲的原始數(shù)字供玩家進(jìn)行猜數(shù)字游戲。 游提示:提示用戶數(shù)值和位置全對(duì)的數(shù)
11、字個(gè)數(shù), 和只有數(shù)值但位置不對(duì)的數(shù)字個(gè)數(shù)。 原始數(shù)字顯示: 當(dāng)用戶在 8 次之內(nèi)仍未能猜出原 始數(shù)字和順序時(shí),系統(tǒng)提示玩家失敗,并給玩家顯示出原始數(shù)字和順序。2)、排行榜模塊 該模塊為玩家提供排行榜的瀏覽和清除功能, 包括按玩家成績(jī)順序?yàn)g覽、按玩家姓名瀏覽和清除排行榜 3 個(gè)子功能。 按玩家成績(jī)順序?yàn)g覽子功能中,將玩家的姓名、 游戲成績(jī)按猜數(shù)字次數(shù)從少到多的順序列表顯示,即將玩家記錄從高到底顯示。 按玩家姓名瀏覽的子功能中, 為了玩家便于查找 到自己的游戲成績(jī), 將玩家的姓名和猜數(shù)字次數(shù)記錄按照玩家姓名的字母順序列 表顯示。 清除排行榜: 當(dāng)用戶選擇清除排行榜功能時(shí), 統(tǒng)會(huì)將所有玩家的歷史游戲
12、記錄和玩家姓名一起從排行榜中清除, 在排行榜中只 留下默認(rèn)的游戲記錄和默認(rèn)的玩家姓名,即系統(tǒng)默認(rèn)玩家姓名 player 和系統(tǒng)默 認(rèn)記錄 8 次。3)、產(chǎn)生新記錄模塊 該模塊的功能是當(dāng)玩家成功完成游戲時(shí), 判斷用 戶可否進(jìn)入排行榜, 如果可以進(jìn)入, 則刷新排行榜中的記錄, 將當(dāng)前玩家的游戲 記錄寫入排行榜,并將排行榜目前結(jié)果顯示給用戶。4) 讀取最好記錄模塊讀取最好記錄模塊的主要功能是當(dāng)用戶選擇游戲 開始選項(xiàng)時(shí), 首先提示用戶目前排行榜中的最游戲記, 如果目前沒有排行的玩家 記錄,則初始化排行榜, 給出系統(tǒng)默認(rèn)的玩家姓名和默認(rèn)的游戲記錄。 如果目前 排行榜中有玩家記錄,則判斷出最好記錄顯示給用
13、戶。5) 、幫助模塊 幫助模塊提供的功能是當(dāng)玩家選項(xiàng)為幫助功能 對(duì)應(yīng)的選項(xiàng)數(shù)字時(shí), 進(jìn)入幫助模塊, 給出用戶猜數(shù)字的游戲規(guī)則和游戲中相關(guān)提 示的含義。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 猜數(shù)字游戲軟件涉及到對(duì)玩家信息和排行榜的 操作。為將玩家的姓名和游戲成績(jī)描述成一個(gè)玩家的兩個(gè)重要方面,使用C語中的結(jié)構(gòu)體來描述2、程序的模塊組成 :主函數(shù) : int main()創(chuàng)立結(jié)構(gòu)體: struct p1 ()使數(shù)字產(chǎn)生循環(huán): int rand1()調(diào)用讀取破記錄 : goread()輸入數(shù)字: void input1();初始化隨機(jī)數(shù)發(fā)生器: getnumber()清除文本模式窗口: clrscr();讀入字符串的時(shí)候,直
14、到回車為止 : gets()3、各個(gè)函數(shù)的主要功能 :隨機(jī)產(chǎn)生 4個(gè)數(shù)的函數(shù): 隨機(jī)產(chǎn)生 4個(gè)數(shù)字。randomize()是c函數(shù)庫提供的一個(gè)函數(shù),功能給產(chǎn)生隨機(jī)數(shù)的進(jìn)行初始化清除文本模式窗口第四章詳細(xì)設(shè)計(jì)1、系統(tǒng)的總體框圖*Startprogramresertracorreadrecordclearsorthelpexit圖 4-12、相關(guān)的數(shù)據(jù)類型:#in cludeo#in cludeo#in cludeo #in cludeo void ran d2();int ran d1(); void inp ut1();void comp are1(); int i,j,k,c,d,b4;ch
15、ar a24;將數(shù)字定義為整型3、函數(shù)間的調(diào)用關(guān)系圖如下:顯示玩家積分 函數(shù):dis play()新記錄者函數(shù);breakrecord()隨機(jī)產(chǎn)生4個(gè)數(shù) 函數(shù);getnumber(_圖4-3第五章測(cè)試和結(jié)果1、調(diào)試分析;輸入的游戲玩家人數(shù)太多時(shí) ,屏幕顯示不能控制為一頁一頁顯示, 所以為了 方便起見,不要輸入太多記錄,十七左右為最佳。剛開始執(zhí)行輸入函數(shù),按數(shù)字順序輸入 , 輸完后執(zhí)行顯示功能,數(shù)字、字母 的位置顯示不對(duì),試著在其中增加一些語句, 希望能把所需結(jié)果按正常順序顯示, 但暫時(shí)沒有成功,最后在老師的幫助下,所需結(jié)果能按正常順序輸出了。在前面對(duì)猜數(shù)字游戲進(jìn)行需求分析 的過 程中 ,已經(jīng)初
16、步明確了 系統(tǒng)的主要功能模塊和用戶需求,下面將在總體設(shè)計(jì)的過程中, 給出猜數(shù)字游戲的模塊結(jié)構(gòu)、流程描述以及界面布局,并 使得系 統(tǒng)的總體設(shè)計(jì)符合軟件工程中總體設(shè)計(jì)的基本原則。開發(fā)與設(shè)計(jì)的總體思想猜數(shù)字游戲是一種大眾娛樂游戲,開發(fā)與設(shè)計(jì)的重點(diǎn)在 于游戲供玩家進(jìn)行猜數(shù)字游戲的原始數(shù)字的產(chǎn)生和用戶每次進(jìn)行猜 數(shù)字 操作 之后的游 戲提 示,這兩 方面的規(guī) 則設(shè) 計(jì)往 往決定了 軟件運(yùn)行的正確性和質(zhì)量。同 時(shí),要謹(jǐn)記調(diào)試失敗的原因,以免 下次犯同類錯(cuò)誤。2、使用說明:1)打開程序:2)進(jìn)入選擇頁面:選擇 1 為查看記錄 選擇 2 為新游戲 選擇 0 為退出3)、進(jìn)行游戲 4)、退出 3、運(yùn)行結(jié)果截屏及
17、說明:游戲初始畫面m C;Yin-7Ciro iect sXnonue. extt.-to -to .to .to -to= =11 stait gamettbrowse the Sort by scor tt brouse the sort by name tt view tlifl Itelpttclear tlie sorttt.Exxttt.ttff Welc one to GuessNun Prs(i*an tt tt tt tt tt tt tt tt ttinput vu cJtu ice Itcrd選擇一進(jìn)入游戲系統(tǒng)隨機(jī)顯示四個(gè)數(shù)字提供讓游戲者猜測(cè):m C:in=TCproj&
18、ctsnonaae. ezett tttt Mvlii uiic tv GucusHuit Frvy tapitt ft tt tt tt ttUI . Lu3 .to3Lu4 .to5 - to9.ExitsLart ycUM岀#browse the Sort by scor tt bruxjstf Lic yurt by iiaiie tt vieu tJie be Ipttclecir tlie sortttttPlease input you choice here:!tlie recD*-e keepet is playerout in IQ tine令6 2 3 5如果連續(xù)四次輸入
19、錯(cuò)誤將出現(xiàn)如下結(jié)果,并出現(xiàn)提示:GN C;Tin-TCprojrtsnonaBe.ere tu to.to -ExitStart gameMIruusB LlicuurlLySCurHLrau?e thesortbynanetiflH電itiu th廿 iBlpclear tbe sortlease input yuu clnIce heie =1 keeper is playei*.guessedhe recoreout in 10 tinesHO.lxii|uLHO. 2numljcr- 4G5inputtheHO.3riumbtrxiipuLtheHO. 4riumbei :030?t
20、value and correct position, uiif igrafulAiiLlulls tVuu f in lii It b# liat is oiir name?.orrecion :11 t lute:icorrect value an_CurreuL voluv but iiiuvrrecLiiepus It Ivii uuu*iabout tlte scure list+alia tit the scure list+ the score list is store the f lue player# score on top +選擇四進(jìn)入幫助顯示結(jié)果C:in7CprQ j
21、ectsXnonaBe. ezeyou haua IQ opportunivles to guess num ttuep*/ Lime the system ulLl flint yuu = d correct posit ion count如果繼續(xù)則可以輸入姓名并保存記錄如果按任意鍵則返回首頁:Jc7in-lCprojectsnona*e. exe1inputtheNO.lnumber:8748inputtheNO.2number:9485inputtheNO.3number :9580theNO.4number:0309C t pus It LUI- 1 _finish iC by 1 t
22、inesVliAt is yuur iianc?li fan!tbe record is:jinputeorrcGt value and correct Conf xgrafulastlonstyou L _:Nanescoreplayet*101lJir:3 3 any key tu cunt xnue .Ji第六章源程序#include #include #include#include int a5,b5,n1,n2,n3,i,j;/* a,b, 只用了從 14的四個(gè)下標(biāo) . */* n1 計(jì)算位置數(shù)字相同的數(shù)字個(gè)數(shù) */* n2 計(jì)算數(shù)字相同但位置不相同的數(shù)字個(gè)數(shù) */* n3 計(jì)算所
23、猜次數(shù) */char ch;StartProgram()ReadRecord(); /* 調(diào)用讀取破記者函數(shù) */n1=0;n3=0;getnumber();/* 調(diào)用隨機(jī)產(chǎn)生 4 個(gè)數(shù)的函數(shù) */for(j=i-1;j=1;j-)printf(%d ,aj);getchar();printf(nnnnn);/* 循環(huán)猜數(shù) */ while(n14&n310) +n3;n1=0;n2=0;/* 提示用戶輸入四個(gè)要猜的 4 位整數(shù) */ for(i=1;i=4;i+)printf(ninput the NO.%d number:,i); scanf(%d,&bi);位置數(shù)字都對(duì)的 */ for(
24、i=1;i=4;i+) if(ai=bi)/* n1+; continue;計(jì)算數(shù)字相同但位置不相同的個(gè)數(shù) */ for(j=1;j=10)printf(You blew it ,the answer is %d,%d,%d,a1,a2,a3,a4); elseprintf(Configrafulastions!You finish it by %d timesn,n3); ResetRecord(n3);printf(press any key to continue.n); fflush(stdin);getch(); getnumber()/* 隨機(jī)產(chǎn)生四個(gè)數(shù)的函數(shù) */ randomi
25、ze();*/* 產(chǎn)生隨機(jī)數(shù)的初始化函數(shù) for(i=1;i=1;j-) if(ai=aj) goto loop2; #ifndef PLAYER #define PLAYER #include #include #include #define SIZE 5 typedef struct char name20;/* field of name */ int score;/* field of score */player;#endif#/* SortByName 按游戲成績(jī)排序 */#include void SortByName()int i,j,k;player TempS;/* 定義
26、進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量 */ player s5;/* SIZE 在頭文件中定義的常量 , 值為 5 */ int recNumber=0;char DataFile10=record;FILE *fp=NULL;clrscr();/* 以讀的方式打開文件 , 如文件不存在 , 提示錯(cuò)誤 */ fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen file %s fial !End with any key.n,DataFile); perror(Open file fail);fflush(stdin);getch();return;/* 將文件中要
27、排序的信息存入結(jié)構(gòu)體數(shù)組 */ while(fread(&srecNumber,sizeof(player),1,fp)!=(int)NULL) recNumber+;fclose(fp);/* 如果文件中有記錄 , 則將各記錄按游戲成績(jī)值排序 */ if(recNumber1)for(i=0;irecNumber-1;i+)k=i;for(j=i+1;j0) k=j;if(k!=i)strcpy,);=sk.score;strcpy(,); sk.score=si.score; strcpy(,; si.score=;/* 將排序好的記
28、錄寫入文件 */ fp=fopen(DataFile,wb+);if(fp=NULL)printf(nOpen file %s fial!End with any key.n,DataFile); perror(Open file fail);fflush(stdin);getch();return;for (i=0;irecNumber;i+)if(fwrite(&si,sizeof(player),1,fp)!=1)printf(nwrite file %s fail!End with any key.n,DataFile); perror(write file fail);fflush(
29、stdin);getch();return;fclose(fp);/* 顯示排序后的文件 */ printf(the players score as folow:n); fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen file %s fial!End with any key.n,DataFile); perror(Open file fail);fflush(stdin);getch();return; printf(nNamettscoren); while(fread(&TempS,sizeof(player),1,fp)!=(int)NUL
30、L)printf(%stt%dn,;fclose(fp);printf(press any key to continue.); fflush(stdin);getch();#include /* 顯示幫助信息 */PrintHelp() clrscr(); printf(n);printf(+- );printf(+ +n);printf(+ +n);printf(+ +n);printf(+ +n);+nyou hava 10everycorrectcorrecttime thevaluevalue butopportunitiessystem willand correctincorre
31、ctnessprintf(+- );printf(+ +n);printf(+ the score list is store the five players+naboutto guess numhintyoupositionpositionthe scorescore on topcountcountlist+n);+nprintf(+);fflush(stdin);getch();/* SortByName 按游戲成績(jī)排序 */#include void SortByScore()int i,j,k;player TempS;/* 定義進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量 */ player s5
32、;/* SIZE 在頭文件中定義的常量 , 值為 5 */ int recNumber=0;char DataFile10=record;FILE *fp=NULL;clrscr();/* 以讀的方式打開文件 ,如文件不存在 , 提示錯(cuò)誤 */ fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen file %s fial !End with any key.n,DataFile); perror(Open file fail);fflush(stdin);getch();return;/* 將文件中要排序的信息存入結(jié)構(gòu)體數(shù)組 */ while(fread
33、(&srecNumber,sizeof(player),1,fp)!=(int)NULL) recNumber+;fclose(fp);/* 如果文件中有記錄 , 則將各記錄按游戲成績(jī)值排序 */ if(recNumber1)for(i=0;irecNumber-1;i+)k=i;for(j=i+1;jsj.score) k=j;if(k!=i)strcpy,);=sk.score; strcpy(,); sk.score=si.score; strcpy(,;si.score=;/* 將排序好的記錄寫入文件 */ fp=fopen(Da
34、taFile,wb+);if(fp=NULL)printf(nOpen file %s fial!End with any key.n,DataFile);perror(Open file fail); fflush(stdin); getch(); return;for (i=0;irecNumber;i+) if(fwrite(&si,sizeof(player),1,fp)!=1) printf(nwrite file %s fail!End with any key.n,DataFile); perror(write file fail);fflush(stdin);getch();
35、return; fclose(fp);/* 顯示排序后的文件 */ printf(the players score as flow:n); fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen file %s fial!End with any key.n,DataFile); perror(Open file fail);fflush(stdin);getch();return; printf(nNamettscoren); while(fread(&TempS,sizeof(player),1,fp)!=(int)NULL)printf(%stt%d
36、n,; fclose(fp);printf(press any key to continue.); fflush(stdin);getch();#include ResetRecord(int n) /* n所用次數(shù) */ int i,j;int recnum=0; int maxscore=0; player r5; FILE *fp=NULL; player Pro; player TempS; fp=fopen(record,rb); if(fp=NULL) printf(nOpen file fail!End with any keyn); perror(Open file fail
37、); fflush(stdin); getch(); exit(0);& /* 將文件中的記錄讀入數(shù)組中 . */ while(fread(&rrecnum,sizeof(player),1,fp)!=(int)NULL) (recnum5) recnum+; fclose(fp);/* 如果記錄成員沒有 5 個(gè) , 則順次入數(shù)組中添加記錄 */ if(recnum4)讓玩家輸入姓名 */ printf(What is your name); /* scanf(%s,); rrecnum.score=n; recnum+;*/* 如果記錄成員已經(jīng)有 5 個(gè) , 則找出猜
38、數(shù)字次數(shù)最多的記錄 , 即最差玩家 */ /* 如果當(dāng)前記錄比此記錄快 , 則替換 else 初始值為 0 */for(i=0;imaxscore)/* maxscor maxscore=ri.score;, 或相等則替換 , 使玩家入榜 , 最差玩家落/* 如果當(dāng)前人的記錄比最慢記錄快 榜 */if(n=rj.score)讓玩家輸入姓名 */ printf(What is your name); /* scanf(%s,); rj.score=n;以寫的方式打開排行榜文件 */ fp=fopen(record,wb);/* if(fp=NULL)printf(Open file
39、 fail!end with any key.n); perror(Open file fail);fflush(stdin); getch();exit(0);/* 循環(huán)把更新過的排行情況寫入排行榜 */ for(i=0;irecnum;i+) if(fwrite(&ri,sizeof(player),1,fp)!=1) printf(nWrite file fail!End with any key.n); perror(Write file fail);getch(); exit(0); fclose(fp);/* 顯示更新排行過的排行榜 */ fp=fopen(record,rb);
40、if(fp=NULL)printf(Open file fail!end with any key.n); perror(Open file fail);fflush(stdin); getch();exit(0); printf(the record is:n); printf(nNametscoren); while(fread(&TempS,sizeof(player),1,fp)!=(int)NULL) printf(n%st%dn,;fclose(fp);#include ClearSort() player TempS;/* 定義進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量 , 用于存放系統(tǒng)默認(rèn)記
41、錄 */存放排行榜文件名 */char DataFile10=record;/*FILE * fp=NULL;*/strcpy,player);/* 初始化系統(tǒng)默認(rèn)記錄的玩家姓名 */ =10;/* 初始化系統(tǒng)默認(rèn)記錄的玩家成績(jī) */ fp=fopen(DataFile,wb+);/* 打開排行榜文伯 */ if(fp=NULL)/* 打開不成功給出錯(cuò)誤提示 the score sortfile fail!end with anyprintf(nOpen key!n,DataFile);perror(Open file fail!); fflush(stdin); getch(); exit(
42、0);*/ /* 將系統(tǒng)默認(rèn)記錄以履蓋的方式寫入排行榜 if(fwrite(&TempS,sizeof(player),1,fp)!=1) printf(nWrite file %s fail!End with any key!n,DataFile); perror(write file fail!); fflush(stdin); getch(); exit(0); fclose(fp); printf(nThe sort file is cleared!n); fflush(stdin);getch();#include void main() int choice=1; while(1)
43、 clrscr(); printf(#=#n); printf(# Welcome to GuessNum Program #n);#n);printf(#= printf(# start game #n); printf(# browse the sort by scor #n); printf(# browse the sort by name #n); printf(# view the help#n);printf(# clear the sort#n);#n);printf(# #n); printf(#= printf(Please input you choice here:);
44、 scanf(%d,&choice); switch(choice) case 1:StartProgram(); break; case 2:SortByScore(); break; case 3:SortByName(); break; case 4:PrintHelp(); break; case 5:ClearSort(); break; case 0: exit(0); break; default:printf(select error!nPress any key to countinue.); fflush(stdin);getch(); break; #include ReadRecord() FILE * fp; player TempS; player Min;=11;/* 打開記錄保持文,如果不能以讀方式打,說明記錄不存在,則他建記錄, 寫入文件 */if(fp=fopen(record,rb)=NULL) SetRecord();/* 調(diào)用初始化記錄函數(shù) */ fp=fopen(record,rb);/* 循環(huán)讀取文件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 土地托管合同土地托管合同
- 2025年上半年宣城市廣德縣事業(yè)單位招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 汽車車載網(wǎng)絡(luò)控制技術(shù) 豐田汽車車載網(wǎng)絡(luò)系統(tǒng)檢修教案
- 2025年上半年安徽省宿州市靈璧縣國(guó)土測(cè)繪信息中心招聘3人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省六安市直事業(yè)單位招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽新橋投資開發(fā)限公司公開招聘工作人員20人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽安慶市民政局所屬殯葬管理所招錄勞務(wù)派遣工作人員3人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025中國(guó)聯(lián)通蒼南縣分公司招聘10人(浙江)筆試參考題庫附帶答案詳解
- 2024重慶長(zhǎng)安專用汽車有限公司招聘筆試參考題庫附帶答案詳解
- 2025年建筑智能化產(chǎn)品項(xiàng)目可行性研究報(bào)告
- 空壓機(jī)節(jié)能改造方案
- 語文-山東省泰安市2024屆高三下學(xué)期一模檢測(cè)試題和答案
- 傷口造口工作總結(jié)
- 木材在室內(nèi)設(shè)計(jì)中的應(yīng)用案例
- 部隊(duì)花樣主食培訓(xùn)課件
- 駕駛員安全培訓(xùn)(客運(yùn))-駕駛員職業(yè)道德
- 二《市場(chǎng)調(diào)查》(課件)-【中職專用】高二語文同步課件(高教版2023·職業(yè)模塊)
- 安全總監(jiān)安全教育培訓(xùn)課件
- 主動(dòng)脈球囊反搏術(shù)患者的護(hù)理查房
- 新概念英語1一課一練全冊(cè)1-144課
- SolidWorks 2020 建模與仿真 課件全套 第1-6章 SolidWorks 2020 入門-動(dòng)畫與仿真
評(píng)論
0/150
提交評(píng)論