热门标签 | 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环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 针对MySQL Undo空间满载及Oracle Undo表空间溢出的问题,本文详细探讨了其原因与解决策略。首先,通过启动SQL*Plus并以SYS用户身份登录数据库,查询当前数据库的UNDO表空间名称,确认当前状态。接着,分析导致Undo空间满载的常见原因,如长时间运行的事务、频繁的更新操作等,并提出相应的解决方案,包括调整Undo表空间大小、优化事务管理、定期清理历史数据等。最后,结合实际案例,提供具体的实施步骤和注意事项,帮助DBA有效应对这些问题。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 如何高效地安装并配置 PostgreSQL 数据库系统?本文将详细介绍从下载到安装、配置环境变量、初始化数据库、以及优化性能的全过程,帮助读者快速掌握 PostgreSQL 的核心操作与最佳实践。文章还涵盖了常见问题的解决方案,确保用户在部署过程中能够顺利解决遇到的各种挑战。 ... [详细]
  • SSAS入门指南:基础知识与核心概念解析
    ### SSAS入门指南:基础知识与核心概念解析Analysis Services 是一种专为决策支持和商业智能(BI)解决方案设计的数据引擎。该引擎能够为报告和客户端应用提供高效的分析数据,并支持在多维数据模型中构建高性能的分析应用。通过其强大的数据处理能力和灵活的数据建模功能,Analysis Services 成为了现代 BI 系统的重要组成部分。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 在IIS上运行的WebApi应用程序在开发环境中能够正常进行文件的读写操作。然而,在尝试通过FTP访问实时服务器上的文件列表时,遇到了无法显示的问题,尽管服务器配置与开发环境相同。这可能涉及权限设置、FTP服务配置或网络连接等方面的问题。 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
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社区 版权所有