VFeiQ简介

前言

我们学校的生产实习从6月30号开始到8月2号,每周六天,总共30天;这是一段值得怀念的日子,每天都是9点准时到实验室上班,每天的气温都在37度以上,感受到了西安最炎酷的夏天,也感受到了工作的气氛。
我选的是C++方向,项目是基于QT开发的一个局域网通信系统,我们组我给取名为VFeiQ

文档和设计

一开始做这个项目时是写各种文档,神马需求分析、概要设计、详细设计…每天还要写工作日志,整个项目做下来写了非常多的文档,这是我们小组最后出来的文档文件夹:

  1. 整个系统的需求分析框架图:

  2. 系统用例图:

  3. 业务流程图:

代码编写与设计

第一次使用QT去写一个完整的程序是老师布置的一个小作业题,就是这个东西《第一个完整的QT程序》;这个完了就直接开始写整个系统的通信功能。我之前一直学的是java方面的,包括android,很少使用C++去写东西,最多用下C语言。这次是个不错的挑战,不过刚开始写的时候代码是天天改,大多数是因为语法问题,后来纠结于使用指针还是引用,在后来变成了整个系统分层的设计,模块的设计。学习了很多QT的东西,包括信号槽、model-view的概念,还有一些容器的使用等等。我慢慢发现QT设计的太好了,特别是信号槽的设计!而且容器的设计也是非常棒的,可以和java一样去访问,当然还可以和VC一样去用。甚至现在我写一个String的时候还老写成QString了~~~
觉得第一个C++应该向java学习的地方就是java的包管理;好像C++就没有包的概念,也允许文件名和类名不一致,java这种规范是让世界的程序员都拥有统一的编程习惯,而C++的理念却是使编程自由度最大化。QTCreator最应该向Eclipse学习的地方就是代码自动生成功能了;我在写QT代码时写得最烦的就是get/set函数,这个完全可以让编辑器去自动生成的啊,可是QTCreator没有这个功能。
这个项目是完全使用git管理的,全部代码开源到github

  1. 整体设计的架构图:

  2. 聊天时序图:

  3. 上线广播时序图:

  4. 文件传输时序图:

  5. 文件共享时序图:

成果展

其中最有价值也是最难的部分应该是文件传输,我当时严重感冒了,刚开始代码写得非常乱,后来感冒好了,发现文件传输部分的代码实在是看不下去了,差不多又重写了一遍;我在写代码的时候一直注重设计,反复考虑每个类的功能,整个系统的架构,正因如此,我经常动不动改掉一大堆代码,甚至推翻之前的协议。

  1. 主界面

  2. 任务栏最小化界面

  3. 最近联系人界面

  4. 联系人搜索界面

  5. 聊天界面

  6. 聊天截图功能

  7. 聊天字体颜色选择功能

  8. 聊天字体和大小选择功能

  9. 聊天表情发送功能

  10. 多文件传输功能

  11. 多文件传输功能

  12. 查看和下载别人的共享文件

  13. 设置自己的共享文件

  14. 系统设置之头像设置

  15. 应用中心

  16. 天气预报

项目源代码

我一直喜欢开源的东西,当然我自己的东西更喜欢开源,不管做得好不好,开源了就意味着可能给别人带来帮助,我喜欢这种开源的感觉~

全部项目代码,github: https://github.com/vell001/VFeiQ