第六次作業--------結構體與文件
1.本章學習總結
1.1思維導圖

1.2.本章學習體會
結構體的學習,明白哪個變量屬于哪里,好像不是那么地難。pta上面的幾題練了一下,似乎有點感覺了。文件,目前只會比較簡單的讀寫,打開文件什么的。終歸一點,還是基礎不夠扎實。大作業的完成需要建項目,代碼是打出來了,就是達不到目的。文件,還是需要花時間多去理解和練習的。
現在終于明白,基礎不牢,地動山搖。。前面學的不夠好,后面寸步難行。這次大作業,試了好多次,連編譯都過不了,看著自己的代碼和別人的沒多大區別,可就是有問題,真的挺氣人的。對于文件,我們目前要用到的就是打開、寫入、修改等一些比較基本的操作。仔細想想,不懂的怎么寫程序還是不太擅長在項目中同時用多個文件,涉及到傳參,主函數存放函數聲明什么的,還是要拿書上代碼去練練才更有感覺。
2.大作業
2.1.文件介紹
1.頭文件head.h
- 定義了結構體,里面有變量username和password,分別表示賬號和密碼
- 之后就是一些函數的聲明
![]()
2.其他文件介紹
文件1:main.c
- 用戶登入界面的設計
- 如果輸入錯誤就讓用戶重新輸入,并且,每個用戶答完題后做清屏處理
- 調用函數實現式子的生成,計算與反饋結果
- 最后調用排名函數根據答題情況打印排名榜
![]()
文件2:Login.c
- 檢驗用戶的登入系統合不合法,就看能不能打開user.txt這個文件
-無法打開文件則給出相應的提示


文件3:ComputeExp.c
- 根據生產的式子計算相應的結果
- 其實這個是之前指針大作業的代碼
![]()
文件4:CreateExp
- 里面包含了生成隨機式子和計算答題情況的函數
- CreateExp里面是根據用戶選擇的等級將生成的式子放入數組中
- scoreCalculate函數中最核心的部分就是需要將答題數以及正確率存到數組里面,否則會亂掉



文件5:rank排名系統
- Rank函數遍歷存入數組中的結果,用選擇法按正確率從高到低排列
- printRank函數實現打開ranking.txt這個文件并將結果放入文件中

2.2.運行結果
1.登錄界面
{{A}7_EOOI_YN_E0BK24]S@H8.png(uploading...)}}




2.排名結果

2.3改進大作業總結
1.碰到問題及解決辦法
- 對文件不熟悉,不清楚主函數改干嘛什么的,經過請教大佬后,知道主函數里面只是放一些函數聲明以及結構體的定義
- 原本一直以為那些用戶賬號和密碼等信息是通過代碼實現的,后來才知道原來是寫在記事本上,然后打開那個文件實現用戶信息的讀取
- 編譯一直過不了,出現多次定義的問題,問過同學后,知道那是因為在函數里面調用頭文件然后調用頭文件的時候又調用函數就會出現重復定義的問題
- 最后排名哪里的答題數和正確率一直是亂的,仔細查找發現是沒有將結果放入數組中導致亂了,于是多加一個將答題數和正確率放入數組s的語句就好
2.小結
- 難度依次比一次大是毋庸置疑的,花了很多時間,卻并沒解決什么問題,看著分明沒問題,可就是編譯不讓過,問了好多次同學,最后發現,最熟悉自己代碼的還是自己,只有自己多花時間去研究研究,才知道哪里錯了
- 做完之后回顧一下代碼,發現也并不是那么地難,登入和排名函數是參照同學思路去做的,其他代碼是之前大作業寫了就可以拿過來用的,模仿著寫,不懂就問問自己參考的那個同學,能比較快找到問題。書上也有代碼可以參考,不過現在對文件真的不熟,不看書的話,可能會寫不出來,看來還是要多練練
- 一開始我是放著一堆代碼不想動了,后來老師又多給了時間,于是我也就再看看吧,少點錯誤還是有好處的。課設設計到這一塊的,代碼模板什么的就有了,做起來也更快。
- 最大的感受就是,函數沒學好真的很難受。寫代碼過程中遇到很多時候都要調用函數,然后我在傳參那一塊比較懵懂,就很容易出錯,學習是環環相扣的,前面學的不好,后面就會受到影響;同樣,前面不要留下錯誤,下次作業就可以直接把前面的成果拿來用,錯誤也沒那么多,調試起來也更順心。所以,不要拖拉、懈怠每一次作業真的非常重要,付出了是會有回報的!



浙公網安備 33010602011771號