热门标签 | 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,直接可以打开看效果。最最后期待和这里的伙伴们一起学习,一起进步,一起分享。


推荐阅读
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
  • 解决MySQL Administrator 登录失败问题
    本文提供了解决在使用MySQL Administrator时遇到的登录错误的方法,包括启动变量和服务部分禁用的问题。同时,文章还介绍了通过安全配置模式来解决问题的具体步骤。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 本文介绍了FTP(文件传输协议)的基础知识,包括其定义、如何通过TCP建立控制和数据连接,以及主动模式与被动模式的区别。FTP作为一种重要的文件传输协议,在互联网数据交换中扮演着关键角色。 ... [详细]
  • Python安全实践:Web安全与SQL注入防御
    本文旨在介绍Web安全的基础知识,特别是如何使用Python和相关工具来识别和防止SQL注入攻击。通过实际案例分析,帮助读者理解SQL注入的危害,并掌握有效的防御策略。 ... [详细]
  • 使用EF Core在.Net Core控制台应用中操作SQLite数据库
    本文介绍如何利用Visual Studio 2019和Windows 10环境,通过Entity Framework Core(EF Core)实现对SQLite数据库的读写操作。项目源代码可从百度网盘下载。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Windows 系统中 Flutter 与 IntelliJ IDEA 的环境配置指南
    本指南详细介绍了如何在 Windows 操作系统上设置 Flutter 开发环境,并集成至 IntelliJ IDEA 中,适合初学者及专业人士参考。 ... [详细]
  • 本文探讨了一种方法,通过开发C#应用程序来拦截并处理从遗留系统发出的Http请求,该系统原本依赖于已停止服务的Web服务。解决方案涉及使用代理技术或HTTP监听器来捕获和重定向这些请求。 ... [详细]
  • UMPlatForm.NET 5.1 版本数据字典管理功能解析
    本文介绍了 UMPlatForm.NET 5.1 版本中的数据字典管理模块,探讨了该模块如何支持平台的数据共享与管理,以及如何通过用户和角色权限来增强系统的安全性。 ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的Redo Log和Undo Log,探讨了它们的工作原理、存储方式及其在事务处理中的关键作用。 ... [详细]
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社区 版权所有