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

简介: 面向对象程序设计(荣誉)大作业(上)

一、 题目描述


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


二、 开发环境


Qt Creator 4.11.0 (Community)


三、 详细设计


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

①项目文件(ClothingManager.pro)

在此定义模板,头文件,源文件,UI列表以及预处理程序定义的列表。


c19ba267c5e5414ba2245fbe74e344ec.png

②头文件(mainwindow.h)


在此定义头文件,由于程序中需要对服装进行处理,不妨定义一个“ALLData”数据类型,用来保存每件衣服的名字,颜色,编号,尺码,库存数,季节及上架日期。

60c96e888c104425a8744d936f275cd5.png

采用 STL 中 vector 和 map 容器来存储数据,并定义界面中需要用到的槽函数。

6f2effa782fa4c509310e2085ba60ce6.png

③界面 UI 文件(mainwindow.ui)


实现界面中的按钮,以及界面的设置。

cdb94d38c87841a691ed2cfac6ecc5c0.png

④主程序(main.cpp)


运行整个项目。

b17b0dfe0596400c889014d48ee67ec2.png

⑤主窗体源文件(mainwindow.cpp)


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


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

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

①on_Read_clicked()

通过调用readTXTFile()实现文件的读取


②readTXTFile()

实现对文件的读取。先打开文件路径对数据文件进行读取,如果未选择则给出错误提示。选择对应的文件之后,将文件按行读取放入文件流中, 由于数据文件中商品的每个属性之间以空格分隔,故可以直接将商品的每个属性直接对应到文件流中。

44971d31d411404497851ef1e59e6336.png

③setViewDatas()

本函数的作用为初始化表格填充并显示相应的数据。

506f65ccd1774d90b41a9856f7674092.png

④on_ShowEason_clicked()

本函数的作用为按季节进行展示,通过迭代器遍历全体数据,符合条件的显示,不符合条件的不显示。报告中仅展示当季节选择为“春”时的情景,其他情况基本一致。

ccd884ed35de4bdcb48e77c55cf79dae.png

ba37eee7248d4148828e6dfa44289a1b.png

⑤on_Sort_clicked()

本函数的作用为按所选内容进行排序,通过迭代器遍历 map 中全体数据并进行排序,此处以按序号排序为例进行展示。

8db00bd432314d9c9e00a5ce57d789c6.png

⑥on_Add_clicked()

本函数的作用为进行进货,即库存的增加。在进行进货操作时,对数据


合法性进行判断,若数据位空,则弹出错误提示,若操作成功,则弹出成功提示。

数据合法性判断:

ff1dc3085d7a42658563ff2afa8f3a3b.png

对应数据的增加:

7c7c98f7f4ca4d7db78b3a25b997925d.png

数据回显:

68c330f3a94945a0a3b3966aa9ff3f4d.png

⑦on_Sole_clicked()

本函数的作用为进行销售,即库存的减少。在进行进货操作时,对数据合法性进行判断,若数据位空,则弹出错误提示,若操作成功,则弹出成功提示。此外,如果库存少于 200,将弹出库存过少的提示。

数据合法性判断:

25475a42cff7422780a9244e2d0595b9.png

ed2a4d4ded6c4535ac90aa64f405db99.png

数据回显:

c6f98c1b1da94aebac07a51f35911764.png

⑧on_pushButton_clicked()

本函数负责数据的保存,为了防止在销售过程中的误操作造成无法撤回,并保留前一天的数据。将进行操作后的数据重新保存为对应的数据文件,命名为newData.txt

6b998f8c73614499ba34e9114514a895.png

相关文章
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1216 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1181 87
|
10天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1776 12
|
19天前
|
人工智能 运维 安全
|
2天前
|
资源调度
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
230 127
|
10天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
362 0