面向对象程序设计(荣誉)大作业
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 掌握不熟练经常导致回显顺序不是想要的顺序。后来翻阅了相关书籍最终得以改正。这也恰恰说明代码的编写需要很牢固的基础知识。
以上是关于面向对象程序设计(荣誉)大作业的主要内容,如果未能解决你的问题,请参考以下文章
面向对象程序设计(荣誉)实验六 set,bitset,multimap