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表达式替代掉。
c++小学期大作业攻略(零)建议+代码结构(持续更新)的更多相关文章
- c++小学期大作业攻略(一)环境配置
UPDATE at 2019/07/20 20:21 更新了Qt连接mysql的方法,但是是自己仿照连VS的方法摸索出来的,简单测试了一下能work但是不保证后期不会出问题.如果你在尝试过程中出现了任 ...
- c++小学期大作业攻略(二)整体思路+主界面
写在前面:如果我曾经说过要在第一周之内写完大作业,那……肯定是你听错了.不过如果我在写的时候有攻略看的话应该可以轻松地在4~5天内做完,然后觉得写攻略的人是个小天使吧(疯狂暗示).出于给大家自由发挥的 ...
- c++小学期大作业攻略(五)基于QSS的样式美化
这回真的是最后一篇了. 前面说过,我们开发过程中暂时不搭理样式问题,等最后再一起处理,那么现在就是最后处理时刻了!看到网上说QSS跟CSS差不多,我还觉得自己可以干回老本行了,结果用起来发现,QSS是 ...
- c++小学期大作业攻略(四)任务系统+站内信
虽然比最早的预定晚了整整一个星期但这核心功能最后一篇终于还是来了. 如果你已经经历了用户系统的洗礼,相信代码实现应该已经没有太大的难度,所以我们重点关注一下设计好的流程. 一.任务系统 首先是新建任务 ...
- c++小学期大作业攻略(三)用户系统
Update at 2019/07/22 14:16 发现一个大坑,我们后期是打算用QSS统一堆样式进行美化的,于是我把之前对QLabel进行的setAlignment全部去掉了,打算统一丢进Qss里 ...
- 内连接、左外连接、右外连接、全外连接、交叉连接(CROSS JOIN)-----小知识解决大数据攻略
早就听说了内连接与外连接,以前视图中使用过.这次自考也学习了,只是简单理解,现在深入探究学习(由于上篇博客的出现)与实践: 概念 关键字: 左右连接 数据表的连接有: 1.内连接(自然连接): 只有两 ...
- 史上最全的用Python操控手机APP攻略!建议收藏!
最近经常看到用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里. ...
- 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新。
UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0 ...
- 微信小程序——【百景游戏小攻略】
微信小程序--[百景游戏小攻略] 本次课程小项目中的图片以及文章还未获得授权!请勿商用!未经授权,请勿转载! 博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE ...
随机推荐
- ASP.NET MVC IOC 之 Autofac 系列开篇
本系列主要讲述Autofac在.NET MVC项目以及webform中的使用. autofac为IOC组件,实现控制反转,主要结合面向接口编程,完成较大程度的解耦工作. 作为初学者,将学习到的每一步, ...
- Dikstra 堆优化板子
#include <bits/stdc++.h> #define MAXN 10005 using namespace std; typedef long long LL; vector& ...
- 模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
- maven 学习---Maven 编译打包时如何忽略测试用例
本文地址:http://blog.csdn.net/wirelessqa/article/details/14057305 跳过测试阶段: mvn package -DskipTests 临时性跳过测 ...
- [20190509]rman备份的疑问5.txt
[20190509]rman备份的疑问5.txt --//别人跟我提到的rman备份问题,我开始以为是assm与mssm的问题,实际测试情况不是.--//开始备份时生成的备份集文件很大,以后会回缩(对 ...
- Jenkins的CI持续集成
Jenkins的CI持续集成 全局配置 系统管理->全局工具配置,配置Git,JDK和Maven 1)解压maven到当前目录 tar zxf apache-maven-3.5.4-bin.ta ...
- istio部署-sidecar注入
参考 fleeto/sleep fleeto/flaskapp 1. Sidecar注入 1.1 对工作负载的一些要求 支持的工作负载类型:Job,DaemonSet,ReplicaSet,Pod,D ...
- 201871010101-陈来弟《面向对象程序设计(java)》第七周学习总结
201871010101-陈来弟<面向对象程序设计(java)>第七周学习总结 项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/n ...
- 曹玉中-201871010105《面向对象程序设计(java)》第6-7周学习总结
曹玉中-201871010105<面向对象程序设计(java)>第6-7周学习总结 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.c ...
- python -m pip install --upgrade pip
升级pip后报错 TypeError: 'module' object is not callable 原因 存在两个版本的pip 先把原先版本的卸载了: python -m pip uninstal ...