介绍
这篇博客我将介绍数据库课程的期末大作业–图书销售管理系统的开发过程。该项目实现对书店内图书库存量的进货、销售和顾客的退货、购买统计服务。开发的合作者是Alva,首先我将对这个项目进行简要的介绍。图书这个项目使用MYSQL作为数据库存储数据信息,使用QT作为前端交互界面的框架,使用的语言是C++。主要功能有:
- 书店的进货管理:包括输出进货表单和对书店库存量的修改。
- 书店的销售管理:包括输出销售表单和对书店库存量的修改。
- 谷歌退货管理:包括输出退货表单和对书店库存量的修改。
- 系统的统计功能:包括输出对月销售量、月销售额的查询。
接下来我将主要介绍一下开发中遇到的难点。源码直接看Github。
数据库实现
数据库使用的是MYSQL。首先需要确认数据库中的关系模型,建立好相应的表格。这里需要注意精简表格的数量与内容,要特别注意外码的约束。这一步需要花多点时间来分析,如果没有一个合理的数据模型,将对后面的开发过程造成很大的影响。这里直接给出分析后的结果:
建立完数据库后,需要创建一个程序用于接下来的测试,因为采用前后端分离的开发模式,因此需要对后端数据库的正确性进行测试,这里涉及到了使用C++连接数据库的问题。
C++成功连接上MYSQL后,当后面新增加了功能的时候,就可以现在这里测试,然后再给前端部分调用就可以了。
这里讲解一下几个比较重要的功能。
QT前端开发
在开发过程中我负责的是两个数据库功能的实现以及所有的前端部分,因此对于QT也算是有了一定的了解。QT是一个基于C++的前端框架,开发起来非常容易,它具有可视化开发工具,许多控件的添加都可以直接拖动添加,而不需要自己动手写大量的代码。但是他也有很多的坑需要注意。
首先是QT连接数据库的问题。由于QT的编译器路径已经在初始化配置中设定好,因此如果需要添加第三方库的话,就要在手动在编译路径中添加。这里还牵涉到一个mysql的版本问题。具体可以参考QT配置sql
其次需要注意的是QT的编译过程所导致的问题。对于界面设计文件.ui
文件,他会首先生成一个.h
文件,因此有时候我们添加或者删除了东西,运行的时候没有更新,原因可能就是因为这个.h
文件没有更新,直接将Debug
文件夹删掉再重新运行一次就可以解决了。
最后是为控件添加事件监听器的问题。由于本次项目涉及到了大量的与用户的交互,因此界面需要有比较多的输入输出框,以及按钮。对按钮添加事件监听需要以按钮的名字制定,因此我的建议是最好对每个按钮重命名,改一个有意义的名字,否则到后面很容易混淆。
这里我还做出了程序的打包,把项目压缩成一个可执行文件。这一步可以借用QT5的新特性–windeployqt工具。这个工具的优势在于,他能够很智能地打包相关的依赖项,而不需要手动地添加,确保了程序的完整性。主要步骤有两步:
- 使用windeployqt提取依赖项,请参考 https://blog.csdn.net/u012246376/article/details/54561379
- 使用Enigma Virtual Box封包,详情请参考:https://www.cnblogs.com/findumars/p/6256856.html
总结
由于时间比较匆促,大概只有4天的时间,总共两个人完成,做出来的成品还比较粗糙,但是正常的使用还是没问题的,在这个开发过程中也学到了包括数据库和QT在内的很多知识,还是很有意义的。如果有时间我将进一步完善这个应用,关于这个应用的开发过程就讲解到这里了,谢谢!