面向对象程序设计(荣誉)大作业

Posted 上山打老虎D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象程序设计(荣誉)大作业相关的知识,希望对你有一定的参考价值。

一、 题目描述

本课程的教学目的是掌握并熟练使用STL。我的期末大作业是基于STL实现网店管理系统。该系统主要用于服装网店进货以及销售时库存的统计(对编程实现的系统进行介绍。)

二、 开发环境

Qt Creator 4.11.0 (Community)

三、 详细设计

1. 程序结构(对涉及的变量、类、程序结构进行说明)

①项目文件(ClothingManager.pro)
在此定义模板,头文件,源文件,UI列表以及预处理程序定义的列表。
在这里插入图片描述
②头文件(mainwindow.h)

在此定义头文件,由于程序中需要对服装进行处理,不妨定义一个“ALLData”数据类型,用来保存每件衣服的名字,颜色,编号,尺码,库存数,季节及上架日期。
在这里插入图片描述
采用 STL 中 vector 和 map 容器来存储数据,并定义界面中需要用到的槽函数。
在这里插入图片描述
③界面 UI 文件(mainwindow.ui)

实现界面中的按钮,以及界面的设置。
在这里插入图片描述
④主程序(main.cpp)

运行整个项目。
在这里插入图片描述
⑤主窗体源文件(mainwindow.cpp)

具体实现每个槽函数,并执行项目中的每个功能。具体作用将在“2.主要功能”中详细介绍。

2. 主要功能(对实现的系统功能进行阐述,哪个函数完成什么功能)

实现商品属性管理,并实现销售、进货、按季节显示、排序、缺货预警等功能。这些功能均通过主窗体源文件实现的,在头文件中定义的各个槽函数具体实现。下面对这些函数以及程序结构做仔细分析介绍。
①on_Read_clicked()
通过调用readTXTFile()实现文件的读取

②readTXTFile()
实现对文件的读取。先打开文件路径对数据文件进行读取,如果未选择则给出错误提示。选择对应的文件之后,将文件按行读取放入文件流中, 由于数据文件中商品的每个属性之间以空格分隔,故可以直接将商品的每个属性直接对应到文件流中。
在这里插入图片描述
③setViewDatas()
本函数的作用为初始化表格填充并显示相应的数据。
在这里插入图片描述
④on_ShowEason_clicked()
本函数的作用为按季节进行展示,通过迭代器遍历全体数据,符合条件的显示,不符合条件的不显示。报告中仅展示当季节选择为“春”时的情景,其他情况基本一致。
在这里插入图片描述
在这里插入图片描述
⑤on_Sort_clicked()
本函数的作用为按所选内容进行排序,通过迭代器遍历 map 中全体数据并进行排序,此处以按序号排序为例进行展示。
在这里插入图片描述
⑥on_Add_clicked()
本函数的作用为进行进货,即库存的增加。在进行进货操作时,对数据

合法性进行判断,若数据位空,则弹出错误提示,若操作成功,则弹出成功提示。
数据合法性判断:
在这里插入图片描述
对应数据的增加:
在这里插入图片描述
数据回显:
在这里插入图片描述
⑦on_Sole_clicked()
本函数的作用为进行销售,即库存的减少。在进行进货操作时,对数据合法性进行判断,若数据位空,则弹出错误提示,若操作成功,则弹出成功提示。此外,如果库存少于 200,将弹出库存过少的提示。
数据合法性判断:
在这里插入图片描述
在这里插入图片描述
数据回显:
在这里插入图片描述
⑧on_pushButton_clicked()
本函数负责数据的保存,为了防止在销售过程中的误操作造成无法撤回,并保留前一天的数据。将进行操作后的数据重新保存为对应的数据文件,命名为newData.txt
在这里插入图片描述

四、 程序使用说明

①打开程序:
在这里插入图片描述
②点击右上角的“读取”按钮进行数据读入
在这里插入图片描述
③点击右侧按钮进行进货及售卖,或点击上方按钮进行排序。此处需注意,按季节显示或排序前需先在左侧的下拉菜单中选择对应的条件,后点击右侧按钮进行排序。
在这里插入图片描述
④点击“保存数据文件按钮”进行保存。
在这里插入图片描述
⑤编译目录下的newData.txt 即为目标文件
在这里插入图片描述

五、 测试及结果截图

1. 文件导入

在这里插入图片描述

2. 进货:

①正常进货
在这里插入图片描述
②异常进货
在这里插入图片描述
在这里插入图片描述

3. 销售

①正常销售
在这里插入图片描述
②异常销售
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 排序

①按照编号排序
在这里插入图片描述
②按照库存排序
在这里插入图片描述

5. 按季节显示

①春
在这里插入图片描述
②夏
在这里插入图片描述
③秋

在这里插入图片描述
④冬
在这里插入图片描述

6. 文件保存导出

在这里插入图片描述
在这里插入图片描述

六、 总结

通过这次对 QT 的编程实验,我感受颇多。

①对 QT 使用不熟练经常出错
由于对 QT 编程不太熟练,经常会忽略掉 QT 与 C++之间的一些差距, 造成编译出错或是运行出错,但在经过反复调试后,最终都解决了。

②QT 图形界面比 Console 更美观
虽然使用Console 不用编写UI 界面,但使用 QT 图形界面有更好的交互性,也提高了程序的兼容性和实用行,使程序不仅仅是为了作业而是为了投入实际的生活中进行使用。

③程序的编写要边调试边编写
对于这类比较长的程序,在编写代码的过程中应该一边调试一边编写, 从而保证每个已经实现的功能都是正确的,否则一但长程序出现 bug,改正程序将是十分痛苦的。

④想要编写好的代码,基础十分重要
这也是我本次实验中感受最多的一点。在编写“回显”功能时,由于对map 掌握不熟练经常导致回显顺序不是想要的顺序。后来翻阅了相关书籍最终得以改正。这也恰恰说明代码的编写需要很牢固的基础知识。

以上是关于面向对象程序设计(荣誉)大作业的主要内容,如果未能解决你的问题,请参考以下文章

面向对象程序设计(荣誉)实验一 String

面向对象程序设计(荣誉)实验三 算法及list

面向对象程序设计(荣誉)实验六 set,bitset,multimap

面向对象程序设计(荣誉)实验七 unordered_set

面向对象程序设计(荣誉)实验四 deque,stack,queue

面向对象程序设计(荣誉)实验五 priority_queue,map