c++小學期大作業攻略(零)建議+代碼結構(持續更新)


  當前已經做好的exe,數據庫是連服務器的,但是頭像是存在本地的文件系統里面:

  https://cloud.tsinghua.edu.cn/d/059ef6b1f9a149ce879b/files/?p=/translation.rar

建議

  可能完善碼風的一點建議和做大作業過程中遇到的坑:

  1. 盡可能不要在代碼中出現魔法值,即常量盡可能用const賦予其意義,同時可以復用。全局常量建議在cpp文件中定義,其他文件通過頭文件中的extern進行訪問。

  2. 小心你的頭文件結構,如果相互包含可能導致bug。

  3. Qt銷毀元素時是會把它的子元素一並銷毀的,所以我們並不需要太擔心new出來的對象如何delete的問題。update:界面中的元素不要隨意delete,手動delete可能在Qt內部刪的時候導致崩潰。

 

 

代碼結構

  先擺一個數字,當前所有.cpp、.h文件(不包括ui_****.h)總大小:173KB

  下面主要展示各對象中的數據成員及繼承關系,我並不建議你在沒有任何思考的情況下直接閱讀(除非你大作業做不完了)。

 

User : Id, Nickname, password, Introduction, Age, Gender, Score, Balabce

  派生:Candidate, Author, Manager, Translator

 

Task : Stage, Name, Description, Content, Amount, Author(SubTask), Maneger(SubTask), Candidates, Translators(SubTask), RecruitManagerDDL, FinalDDL

SubTask:User, Task

  AuthorTask(SubTask)

  ManagerTask(SubTask)

  TranslatorTaks(SubTask) : From, To, Local, Submit, Comment

Database

Message

以下界面相關,帶括號表示從中繼承而來。

GetInformation

Translation(MainWindow): Menu*, Content*, Status*

  Menu(QMenuBar)

  Content(QWidget)  : 

    Index(Content) :

    Login(Content, GetInformation) :  

    Register(Content, GetInformation) : 

    LeaderBoard(Content):

    Personal(Content)

    TaskList(Content)

    NewTask(Content)

    TaskInfo

    MessageView

  Status(QStatusBar)

  

 

  這里用了一個多繼承,Login和Register有Centent和GetInformation兩個父類,感覺寫起來確實方便一些。但是都說多繼承盡可能少用,我也不是很懂這里有沒有增加耦合性,還是這么寫了。后期應該可以用Lambda表達式替代掉。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM