当前已经做好的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表达式替代掉。

c++小学期大作业攻略(零)建议+代码结构(持续更新)的更多相关文章

  1. c++小学期大作业攻略(一)环境配置

    UPDATE at 2019/07/20 20:21 更新了Qt连接mysql的方法,但是是自己仿照连VS的方法摸索出来的,简单测试了一下能work但是不保证后期不会出问题.如果你在尝试过程中出现了任 ...

  2. c++小学期大作业攻略(二)整体思路+主界面

    写在前面:如果我曾经说过要在第一周之内写完大作业,那……肯定是你听错了.不过如果我在写的时候有攻略看的话应该可以轻松地在4~5天内做完,然后觉得写攻略的人是个小天使吧(疯狂暗示).出于给大家自由发挥的 ...

  3. c++小学期大作业攻略(五)基于QSS的样式美化

    这回真的是最后一篇了. 前面说过,我们开发过程中暂时不搭理样式问题,等最后再一起处理,那么现在就是最后处理时刻了!看到网上说QSS跟CSS差不多,我还觉得自己可以干回老本行了,结果用起来发现,QSS是 ...

  4. c++小学期大作业攻略(四)任务系统+站内信

    虽然比最早的预定晚了整整一个星期但这核心功能最后一篇终于还是来了. 如果你已经经历了用户系统的洗礼,相信代码实现应该已经没有太大的难度,所以我们重点关注一下设计好的流程. 一.任务系统 首先是新建任务 ...

  5. c++小学期大作业攻略(三)用户系统

    Update at 2019/07/22 14:16 发现一个大坑,我们后期是打算用QSS统一堆样式进行美化的,于是我把之前对QLabel进行的setAlignment全部去掉了,打算统一丢进Qss里 ...

  6. 内连接、左外连接、右外连接、全外连接、交叉连接(CROSS JOIN)-----小知识解决大数据攻略

    早就听说了内连接与外连接,以前视图中使用过.这次自考也学习了,只是简单理解,现在深入探究学习(由于上篇博客的出现)与实践: 概念 关键字: 左右连接 数据表的连接有: 1.内连接(自然连接): 只有两 ...

  7. 史上最全的用Python操控手机APP攻略!建议收藏!

    ​最近经常看到用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里. ​ ...

  8. 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新。

    UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0 ...

  9. 微信小程序——【百景游戏小攻略】

    微信小程序--[百景游戏小攻略] 本次课程小项目中的图片以及文章还未获得授权!请勿商用!未经授权,请勿转载! 博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE ...

随机推荐

  1. js和C#互相调用

    快速上手 js和C#互相调用. C#调用js比较容易.JS调用C#代码,现有两种方法.老方法的缺点是只支持单页,如果切换页面,原有创建的变量就失效了.新方法没有这些问题. 老方法: Cefsharp ...

  2. ubuntu玩坏之后

    昨天,安装openssh-server的时候,与openssh-client冲突,故卸载openssh-client然后重装openssh-server解决问题. 今天,想装emacs,发现跟perl ...

  3. springBoot实现发送QQ邮件

    一.导依赖 <!-- mail依赖--> <dependency> <groupId>org.springframework.boot</groupId> ...

  4. 奖金高达150万元的NEST即将上线,速来报名

    表哥.表姐们快粗来~~~分享一个劲爆消息: 年度奖金总额高达150万元的众测平台(NEST)已于2019年6月10日启动全球报名,6月26号开始首批线上众测,欢迎精英白帽们前来挑战! 更多详情请认真阅 ...

  5. iOS tableView侧滑删除的第三方控件

    (到我的文件中,下载“tableview中cell测滑删除的第三方控件”),使用方法如下: 在tableView中的.m中,设置cell的方法上,事例代码如下,其中,EaseConversationC ...

  6. Can't toast on a thread that has not called Looper.prepare()

    Android开发中Can't toast on a thread that has not called Looper.prepare()问题 说一下问题出现场景: 在一个Android项目中,利用 ...

  7. 个人项目(WC.exe)(java)(基于图形界面)

    一.Github项目地址:https://github.com/Leungdc/ENhomework 二.PSP: PSP2.1 Personal Software Process Stages 预估 ...

  8. 2019CCPC网络赛 C - K-th occurrence HDU - 6704(后缀数组+ST表+二分+主席树)

    题意 求区间l,r的子串在原串中第k次出现的位置. 链接:https://vjudge.net/contest/322094#problem/C 思路 比赛的时候用后缀自动机写的,TLE到比赛结束. ...

  9. 第一个java小程序

    程序名:MyFirstJavaProgram.java //package com.example; public class MyFirstJavaProgram { public static v ...

  10. JAVA并发-ReentrantReadWriteLock

    简介 读写锁维护着一对锁,一个读锁和一个写锁.通过分离读锁和写锁,使得并发性比一般的排他锁有了较大的提升:在同一时间可以允许多个读线程同时访问,但是在写线程访问时,所有读线程和写线程都会被阻塞. 读写 ...