前言
我们学校的生产实习从6月30号开始到8月2号,每周六天,总共30天;这是一段值得怀念的日子,每天都是9点准时到实验室上班,每天的气温都在37度以上,感受到了西安最炎酷的夏天,也感受到了工作的气氛。
我选的是C++方向,项目是基于QT开发的一个局域网通信系统,我们组我给取名为VFeiQ。
文档和设计
一开始做这个项目时是写各种文档,神马需求分析、概要设计、详细设计…每天还要写工作日志,整个项目做下来写了非常多的文档,这是我们小组最后出来的文档文件夹:
整个系统的需求分析框架图:
系统用例图:
业务流程图:
代码编写与设计
第一次使用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上
整体设计的架构图:
聊天时序图:
上线广播时序图:
文件传输时序图:
文件共享时序图:
成果展
其中最有价值也是最难的部分应该是文件传输,我当时严重感冒了,刚开始代码写得非常乱,后来感冒好了,发现文件传输部分的代码实在是看不下去了,差不多又重写了一遍;我在写代码的时候一直注重设计,反复考虑每个类的功能,整个系统的架构,正因如此,我经常动不动改掉一大堆代码,甚至推翻之前的协议。
主界面
任务栏最小化界面
最近联系人界面
联系人搜索界面
聊天界面
聊天截图功能
聊天字体颜色选择功能
聊天字体和大小选择功能
聊天表情发送功能
多文件传输功能
多文件传输功能
查看和下载别人的共享文件
设置自己的共享文件
系统设置之头像设置
应用中心
天气预报
项目源代码
我一直喜欢开源的东西,当然我自己的东西更喜欢开源,不管做得好不好,开源了就意味着可能给别人带来帮助,我喜欢这种开源的感觉~
全部项目代码,github: https://github.com/vell001/VFeiQ