热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用户管理_用户管理的小项目

之前学习链表数据结构的时候,写过(相信很多人都做过)dos窗口版的学生管理系统,通过输入数字来实现CURD学生的信息,顶多就是把数据写入文件来存储数据

  之前学习链表数据结构的时候,写过(相信很多人都做过)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,直接可以打开看效果。最最后期待和这里的伙伴们一起学习,一起进步,一起分享。


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细探讨了在Android 8.0设备上使用ChinaCock的TCCBarcodeScanner进行扫码时出现的应用闪退问题,并提供了解决方案。通过调整配置文件,可以有效避免这一问题。 ... [详细]
  • MySQL 用户创建失败的解决方案
    本文详细介绍了在 MySQL 中遇到用户创建失败问题时的解决方法,包括如何正确配置环境、执行命令以及常见错误排查技巧。通过逐步指导,帮助用户顺利添加和管理 MySQL 用户。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有