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表达式替代掉。
最新文章
- nginx代理TCP端口
- 三分钟集成elmah xml 格式日志到mvc站点
- 将 expression 转换为数据类型 int 时发生算术溢出
- Tomcat启动时项目重复加载,导致资源初始化两次的问题
- Topology and Geometry in OpenCascade-Topology
- IOS-JSON &; XML解析
- iis7下iis安全狗不能用怎么办(安装iis6兼容性)
- Jmeter代理录制脚本
- RM报表 文本框 自动换行 相关代码
- floodlight StaticFlowPusher 基于网段写flow,通配
- golang学习遭遇duang...duang...duang
- Lua的安装
- Linux Mysql 总结
- RabbitMQ教程(一)——安装配置
- 查看Oracle中存储过程长时间被卡住的原因
- C++ 基于凸包的Delaunay三角网生成算法
- 洛谷P2084 进制转换
- python之线程(threading)
- pom.xml复制过来的代码报错-Maven expected START_TAG or END_TAG not TEXT (positionTEXT se
- SIGALRM信号和SIGCHID信号