标签:过程 描述 压缩包 线程 ber list oid 逻辑 最大
之前学习链表数据结构的时候,写过(相信很多人都做过)dos窗口版的学生管理系统,通过输入数字来实现CURD学生的信息,顶多就是把数据写入文件来存储数据。这次决定用Qt来实现,虽然不是学生管理,但是也类似,数据保存使用的是mysql数据库。之前,学习Qt只是单一的练习某一块知识,这次做个小项目,算是把之前学的做一下综合,感受颇多。
使用Qt的原因不多说了,方便,快捷,最重要和吸引人的就是跨平台性,代码无需修改或者少量的修改,再用相关平台的编译器重新编译下,就可以在windows,linux,android等系统上运行。当然也要推荐下,Qt for Python,是Qt官方出品,必属精品。下次有机会,还是要用python实现一下。
开发工具:Qt5.14.1版本
编译器版本:MSVC2015 64位
直接上图,简单说下实现的功能,这次使用了QTabWidget和QStackWidget来实现了分页功能,共分了3页,每页实现相应的功能。
当然,第一个界面还是写烂了的登陆窗口:
这个很简单了,不做过多的描述,不过这次登陆没有做数据库验证,直接使用的本地验证。
分页1:
第一页的功能如图所示,一目了然,主要是连接数据库的,点击连接数据库,连接成功就可以展示数据库里的客户信息了。这里比较方便的是可以将表格和数据库模型建立连接(即数据库数据改变,表格会自动更新),这里面使用的是MVC模式,对数据的展示和操控非常的方便。还有添加了一个根据手机号码模糊查询的功能,会根据输入的手机号实时查询相似的数据,其实就是用了mysql语法里的like查询语句。最后还有一个短信群发,可以选中表格里一个或多个用户,来群发短信,具体在第三页说明。
分页2:
同样,第二页也很清晰,实现了增加客户和修改用户的消费和积分等,说到底就是对数据库的CURD,对数据库操作使用的是QSqlDatabase这个类,这里面有个坑点,我已经在之前的文章提到过了,并做了记录,就是缺少mysql的相关插件,需要自己去编译好并添加到相应的目录。
分页3:
这一页的功能是对接的短信云平台的,根据云平台提供的接口,将功能嵌入到应用中,方便了使用者,可以不用再登录网页做相关设置和查询,直接在这里面一目了然。
1. 主要的功能还是短信群发,比如店铺里有优惠活动,或者可以积分兑换物品等促销方式,可以再次吸引客户前来消费和兑换东西。
2. 对接使用的https协议,使用的QSslConfiguration这个类做相关的配置,相关的源代码会在文末贴出。这里面也有个坑,也是缺少dll,不过qt里面有自带的,不需要自己编译,所以只要复制到相应目录就不会报错了。
平台服务器返回的是json格式的数据,这里面qt有相关处理json格式数据的类,会使用就好。
3. 网络请求使用的是QNetworkAccessManager,QNetworkReply和QNetworkRequest三剑客,分三步走,具体操作请看文末源代码。顺便插一句,用这个做爬虫也是蛮有意思的,不过之前玩爬虫都是用的python,用python只是更方便了些。
4. 这一页在实现功能调试的时候,会遇到程序崩溃的状况,仔细分析下来是因为,我只用了一个reply变量来处理网络请求响应,可使用者不一定中规中矩等一个查询完了,再去点另外一个,比如,我点完短信剩余条数查询,程序还没来得及处理完,我立刻就点了模板查询,这会造成紊乱,故而会崩溃。因此,改进了下,每个请求对应一个reply来处理,再将这些申请的reply放置到list链表中统一管理,当reply处理完之后,将该堆内存及时释放,节约内存。所以,就算使用者狂点查询按钮,程序也不会崩溃。当然,还有别的解决方法。
总结:
1. 总体感受是什么?
整个小项目做下来,不算界面代码才9百多行代码,量有点少,但收获还是蛮大的,之前没有系统的将所学知识融合起来,这次正好有个磨合,学到了很多东西,一直是在不断遇坑,不断找解决方法填坑,乐在其中,很痛苦,也很享受。
2. 学到了哪些?
学会了要注意处理细节,这个很重要,遗漏了一些地方,可能达不到想要的效果或者程序会崩溃,同时心态很重要,有时候一个问题一直调试不出来,心态可能会炸,那就更难找到症结所在了。当然,这也是一个经验的积累,一个随时间积累沉淀的过程,那同时我也希望自己能够尽快入行,不断积累和沉淀,因为这一条路本身就是永不止步的过程。
3. 本次项目的缺点?
首先最大的短板就是样式,可以看到上面的界面截图,基本上都是白板,没有过多的使用样式,说通俗点就是有点难看,之前看到过一个大佬用qt设计出来的界面,那叫一个好看,甚至惊艳,最近也在恶补这方便的知识,后期会补上。还有一点是,在短信模块中,还要添加新的功能,比如,新增自定义短信内容模板功能,这里面会用到多线程来处理。要做到功能齐全和完善,最起码能用吧。
最后一点是,虽然这个小项目很简单,我将所有的功能实现和逻辑都放在一起了,我觉得还是应该将项目中不同的功能细分,用不同的类来实现,这是一个很好的习惯,也方便将来客户如有需求的增加和改动而方便代码的维护。
夜深了,就到这里了,最后放上源码地址:https://gitee.com/dianzhui/userManager,里面的member文件夹里是源码,zip压缩包里是编译好的exe,直接可以打开看效果。最最后期待和这里的伙伴们一起学习,一起进步,一起分享。
标签:过程 描述 压缩包 线程 ber list oid 逻辑 最大
原文地址:https://www.cnblogs.com/dz-study/p/12405534.html