• 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表达式替代掉。

  • 相关阅读:
    分布式爬虫
    前端页面展示
    fillter根据value来匹配字段
    element ui 怎么去修改el-date-picker的时间
    element ui,input框输入时enter健进行搜索
    element ui 里面的table怎么弹出一个框让表中数据点击出现弹框
    修改数据结构记录,将同级数据改成父子集数据
    h5的复制功能的使用,Clipboard.js的使用,主要是在app里面使用
    在安卓手机下按钮会悬浮在键盘上,怎么解决vue.js
    last-child为啥不生效
  • 原文地址:https://www.cnblogs.com/Enceladus/p/11216384.html
Copyright © 2020-2023  润新知