项目复盘 | C++ & Qt 独立开发Windows客户端

1,258 阅读5分钟

「Offer 驾到,掘友接招!我正在参与2022春招系列活动-项目经验复盘,点击查看 征文活动详情」。

前言:

大学毕业刚进公司的时候,就开始做Windows系统下C++客户端的开发。主要负责项目中部分模块的功能和界面的开发。刚开始界面用MFC实现,后来为了界面开发更快捷、方便,界面效果更丰富,公司开始使用Qt开发界面。当时的Qt是自学的,自学7天,就开始做项目,在后来的项目开发中再深入学习,Qt的技能逐渐掌握。

在公司参与模块开发有一年半的时间,这段时间主要实现了技能上丰富和提升,以及对公司业务流程的了解。后来开始进行客户端的独立开发。

我在公司负责的一个独立的客户端,第一版本开发了半年时间,在进入公司第二年年末的时候完成开发,年底拿到了丰厚的项目奖金。第二版本在第一版本上进行升级和扩展,断断续续进行了一年的时间,这一年是痛苦的一年,也让我在项目开发中吸取了很多经验和教训。

项目简介:

项目主要实现的功能有:

  1. Http/Https通信。用来和数据库通信,进行数据的获取、上传、下载等功能。
  2. 串口通信。用来和硬件进行通信。
  3. TCP通信。用来实现本机中两个客户端程序之间的通信。
  4. vlc视频播放器的封装。主要用来实现程序中自定义的视频播放器功能。
  5. 海康威视摄像头的使用。主要用来在程序中实现观看直播画面、录像等功能。

这些功能,都封装成一个个单独的模块,最后嵌入到客户端程序中,这样就实现了程序的低耦合、模块化、复用性。所以建议在开发项目时,要有模块化开发的理念。

项目背景:

项目主要面向针对学生实现视频教学、专业技能的训练以及组织考试的功能。

  • 教学部分主要实现视频教学,通过视频播放器播放网络视频,学生可以连续学习、分步骤学习、边学习边进行实操。
  • 训练部分主要实现对学生实操数据的实时获取与展示,提示学生操作正确与错误,并且对学生进行全程录像,训练结束生成训练结果,对学生操作进行评估。
  • 考核部分主要实现对学生进行考核,对学生操作数据进行实时获取,并进行录像,最终将录像与考核结果上传至服务器。

这个项目的业务痛点在于分步骤教学的同时学生可以进行分步骤的训练,这里的业务逻辑比较复杂,场景切换和跳转也比较复杂。但是针对这样的需求,我们需要做的就是将模块化思维进行到底,越复杂,耦合性就要越低。并且,这部分的需求改动是最大的,因为它有很强的灵活性,所以就要求我们要充分考虑各种情况的发生。

三、实践过程:

  1. 视频播放器之所以选择vlc是因为它的开源、功能全等优点。之前也做过其他的播放器,像Mediaplayer,OpenCV,但是它们在频繁启停、播放网络视频等方面都有比较多的问题和局限性,所以最后选择用Vlc播放器来实现。
  2. 视频播放器之所以选择海康是因为它的普及、SDK接口很丰富、方便,可以进行录制等原因。最主要的原因是主流。
  3. 项目中最头疼的是与硬件的实时通信,采用串口通信,因为硬件一秒钟可能上传七十多条数据,这些数据要进行实时展示,所以界面优化就很重要。首先是对数据进行逻辑是上的筛选,选出主要数据,后将数据展示在界面上。重要的问题还是卡顿的问题,但是经过数据优化、界面优化都得到了解决。

五、总结思考:

在这个项目一年半的打磨中,我对一个项目的从无到有产生了清楚的认知,在搭建项目时,建议先了解一下设计模式,这决定了项目搭建的整体方向。一开始我们这个项目启动时,是有明确方向的,所以在项目开发时并没有考虑太多,后来因为需求发生了非常大的改动,这个项目也进行了升级,所以从原来的针对某项技能的教学、训练、考核,改成了实现多功能的教学、训练、考核,并且它们的教学步骤、训练方式、考核打分等功能都不相同,但又要实现融合,相当于将整个客户端进行重造。

但是,没有没有完不成的任务,没有解决不了的问题,我们能做的就是技术实现,技术实现不了的问题,可以进行商讨用其他方式实现,或进行更改。

在工作上,除了努力做好自己的工作,还要多学习、多提升,这样才能提高自己的工作效率,提高自己的思想境界,而不是单纯做一个写代码的工具。程序对于我们来说也是一件艺术品,有些人写的程序就会让人感叹写的很漂亮。在项目开发中,一般都是身处于团队之中,这段时间我的团队协作能力,共同能力,自主意识都得到了很大的提升。

未来还是要不断打磨自己,多接触新的技术、多思考、平常心、平衡工作、生活和健康。美好生活都是需要自己努力经营的,大家一起加油吧。