c语言系统主函数流程图,C语言程序设计——成语学习系统
頭文件
包含內容:
代碼:
主函數
功能:
初始化數據,負責調用各個函數,運行登錄系統、游戲系統、數據寫入系統,完成程序的完整執行。
流程圖
代碼
Data文件
Data文件包含函數
函數
功能
GetData
讀取成語文件
SeekWord
查找成語
SuperGet
成語接龍專用數據讀取
SuperSearch
成語接龍專用檢索
MatchingIdioms
匹配接龍成語
MyRand
生成一個在開區間(0,num)的隨機數
GetData函數
該函數用于將帶釋義的成語文件存入到在主函數中定義好的結構體數組
流程圖
代碼
利用' '切割字符串的靈感來源于刪除字符串中的子串
SeekWord函數
該函數用于查找是否有符合要求的函數,查找到則返回結構體數組中的對應下標,找不到返回-1。
流程圖
代碼
Game文件
Game文件函數
函數
功能
StartGame
游戲程序控制中樞函數
OpenDictionary
成語詞典
PlayTest
“女媧補天”成語測試
ManMachineWar
成語接龍,人機大戰
PlayTest2
“望義生文”成語測試
StartGame函數
此函數是整個成語游戲的中樞,不僅要接收傳進來的數據指針,還要輸出菜單,以供用戶選擇程序功能,并調用相對應的函數。
流程圖
代碼
OpenDictionary函數
此函數被調用之后將進入成語詞典界面,用戶可通過這個函數進行成語釋義查詢,查詢到了輸出釋義,查詢不到就輸出提示信息。
流程圖
代碼
PlayTest函數
此函數被調用之后將進入成語測試界面,用戶可通過這個函數進行成語測試,函數將給出10道題,用戶依次作答,系統將根據作答情況結算,打分,結束后返回用戶作答成績。
流程圖
代碼
ManMachineWar函數
此函數被調用之后將進入成語測試界面,用戶可通過這個函數進行成語接龍人機大戰,函數將隨機給出一個成語,系統將判斷用戶是否輸入了成語,如果正確輸入則判斷是否能夠接龍,如果可以,就由系統進行接龍,如果系統接龍成功則開啟新一輪接龍。接龍結束后,返回接龍的輪次。
流程圖
代碼
Ranking文件
Ranking文件函數
函數
功能
RankingList
讀取排行榜數據
InList
顯示排行榜
WriteList
向排行榜寫入數據
WriteList函數
此函數用于向排行榜文件寫入數據,根據用戶的分數判斷是否寫入文件,若滿足則按順序寫入,若不滿足則不寫入文件。
流程圖
代碼
Users文件
Users文件函數
函數
功能
OutMenu
登錄菜單及登錄系統中樞
SignIn
登錄操作
IsRegister
注冊操作
InCartoon
過場動畫
OutMenu函數
此函數是登錄系統的中樞,先顯示菜單,然后根據用戶的選擇分別進行注冊或登錄的操作,對登錄失敗的用戶有再次嘗試登錄的功能。
流程圖
代碼
SignIn函數
該函數被調用之后將進入登錄系統,接收用戶輸入的用戶名和密碼,并進行核對,核對成功之后結束登錄操作。
流程圖
代碼
IsRegister函數
該函數被調用之后將進入注冊系統,接收用戶輸入的用戶名進行查重,通過查重之后接收用戶輸入的密碼,之后寫入文件,完成注冊。
流程圖
代碼
運行結果
登錄系統
過場動畫
選擇取消,退出程序。
登錄界面
選擇是,進入登錄界面,故意輸入錯誤。
重新正確輸入。
注冊界面
先選擇否,再選擇進入注冊。
故意輸入存在的用戶名。
重新注冊。
游戲主菜單
成語詞典
閱讀使用說明。
查詢成語。
故意查詢文件沒有的成語。
成語測試
成語接龍,人機大戰
查看排行榜
退出程序
碰到問題及解決辦法
Q1:用戶登錄時密碼會顯示,達不到安全的要求;
A1:學習getch函數,達到用戶輸入的密碼不回顯的目的;
Q2:登錄界面太寒酸,用戶體驗不好,想要做一點簡單的可視化;
A2:學習MessageBoxA函數,利用提示框來做簡單的可視化,優化用戶體驗;
Q3:界面切換得太快,有的文字來不及看清;
A3:在切換頁面之前都放一句system("pause")代碼暫停運行;
Q4:fflush(stdin)語句在調試的時候失靈;
A4:經查找資料,用rewind(stdin)語句代替,但是原因暫時未知;
Q5:無法準確分開文件中的成語和釋義;
A5:想起“刪除子串”這道題目的做法,通過利用“ ”分割字符串實現;
Q6:原有成語文件只有233個成語,程序詞窮;
A6:自行上網找了個13355個成語的版本,利用記事本和Word進行清洗,程序瞬間變學霸;
Q7:非法輸入會影響程序的正常使用;
A7:將輸入的函數全部改為fgets(),并且遇到輸入就清空緩沖區,程序變得極其安全;
Q8:成語測試出題時遇到了只隱去了一個字的情況,并且要求用戶作答兩次;
A8:是兩次隱去的字的隨機數重復了,加一段代碼讓需要隱去的字的隨機數不重復;
Q9:成語接龍時,用戶可以作弊,即只輸入一個字接龍,然后剩下亂輸;
A9:在進行接龍之前先進行查錯,由于數據量被改大,可以實施;
Q10:游戲時沒有音樂,嗨不起來,學習mciSendString播放音樂,但是編譯器報錯;
A10:使用這個函數之前,需要引入對應的庫,vs只需要一段代碼即可做到,Dev c需要手動配置;
Q11:排行榜文件的日期不好處理;
A11:學習time_t結構體和asctime函數,日期數據的處理變得容易;
Q12:讀取日期數據時,會把日期數據之前的空格讀入;
A12:另外用fgetc函數吸收空格;
Q13:排行榜數據排序用排序法很繁瑣;
A13:想起插入排序,修改文件打開方式為“w”,變得簡單;
Q14:如果用戶登錄之后直接退出,會出錯;
A14:提前把用戶成績都初始化為0,再開啟游戲。
參考資料
總結
以上是生活随笔為你收集整理的c语言系统主函数流程图,C语言程序设计——成语学习系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言容斥原理,容斥原理 | 易学教程
- 下一篇: Android适配器以及作用,Andro