> # ♻️ 资源
> **大小:** 955KB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010624**](https://www.yuque.com/sxbn/ks/100010624)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87415792**](https://download.csdn.net/download/s1t16/87415792)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 高级程序设计实践(C++)
## 课程设计报告
# 一、需求分析
## 1.1 程序设计任务
### 1.1.1 总体要求
运用面向对象程序设计知识,利用 C++ 语言设计和实现一个“库存管理系统设计”,主要完成对商品的销售、统计和简单管理。在实现过程中,需利用面向对象程序设计理论的基础知识,充分体现出 C++ 语言关于类、继承和封装等核心概念,每一个类应包含数据成员和成员函数。
### 1.1.2 具体要求
超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和品牌等信息。本系统要求具备如下主要功能:
**商品简单管理功能**
- 添加功能:主要完成商品基本信息的添加。
- 查询功能:可按商品类别、商品名称、生产厂家、进货日期进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
- 修改功能:可根据查询结果对相应的记录进行修改。
- 删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
**进货功能**
按要求添加相应商品的信息到库存中。添加进货日期、生产厂家、进货价等信息。
**出货功能**
出货时,先输入商品类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入出货的数量、出货日期,计算销售额和利润。如果库存量不够,给出提示信息,结束出货。
**统计功能**
输出当前库存中所有商品的总数及详细信息;能统计每种商品一周时间内的销售额和利润;能统计每类商品的一周时间内的销售额和利润。输出统计信息时,要按从大到小进行排序。(根据个人能力,至少实现一种统计功能)
## 1.2 本程序可实现功能
**商品管理功能**
- 添加商品信息功能
- 可添加商品基本信息。
- 查找商品信息功能
- 可分别按照商品编号,商品名称,商品类别,商品品牌查找相应商品信息。
- 编辑商品信息功能
- 可按照商品编号查找商品,从而编辑商品信息。
- 删除商品信息功能
- 可根据商品名称查找商品,从而删除商品信息
- 保存商品信息功能
- 可将商品信息保存到名为“货物信息”的 txt 文件中。
**商品进货功能**
可按要求输入商品编号,商品名称,生产厂家,商品价格,商品数量,商品类别,入库时间等商品基本信息。
**商品出货功能**
出货时可按照商品名称查找相应商品,显示相关商品库存量等基本信息。若有库存量则输入出售数量,出售价格以及出库时间,计算销售额,利润。如果库存量不足则提示出货失败,结束出货。
**商品统计功能**
可显示当前所有商品数量及基本信息。
# 第二章 程序设计
## 概要设计
**类的关系**
在定义商品的类别时采用了枚举类型,并定义 Food=1,因此在程序中阿拉伯数字 1,2,3,4 即分别代表食品,化妆品,日用品,饮料这四种商品。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1713753338742-2501854d-98ad-4d8e-ab2c-361db8f3b489.png#averageHue=%23fbfbfb&from=url&id=TVYfp&originHeight=300&originWidth=697&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
图 2.1.1 系统类的关系图
**系统的类层次**
在定义商品基本信息时采用了结构体类型,即定义了一个 struct Goods,其中包含类别,名称,品牌,价格,数量等信息,同时包含 struct Date 表示入库时间,包含 enum GoodsType 表示商品类别。
定义 class GoodsManage 包含各成员函数进行对商品信息的管理,其中包含 DisplayMainMenu(),AddGoodsInfo(),DisplayGoodsInfo(),SearchByCode()等成员函数。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1713753338808-88a4e334-f91c-4048-9749-dde45fe2f81f.png#averageHue=%23f7f7f7&from=url&id=RD6nP&originHeight=835&originWidth=712&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
图 2.1.2 系统的类层次关系图
主程序流程
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1713753338914-83610d3a-9fc7-4bd0-bce8-487b2e5e5b38.png#averageHue=%23fcf8f5&from=url&id=YySX6&originHeight=777&originWidth=585&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
图 2.1.3 主程序流程图
## 详细设计
**各类的描述**
商品类别
```
enum GoodsType//商品类别
{
Food=1,//食品
Cosmetic,//化妆品
Commodity,//日用品
Drink//饮料
};
```
入库时间
```
struct Date//入库时间
{
int year;
int month;
int day;
};
```
商品基本信息
```
struct Goods//商品基本信息
{
string code;//商品编号
string name;//商品名称
string brand;//生产厂家
double price;//商品价格
int num;//商品数量
GoodsType type;//商品类别
Date date;//入库时间
Goods *next;
};
```
商品售出信息
```
struct SellRecord//商品售出信息
{
Goods sellGoods;//已出售的商品
int sellNum;//出售数量
double sellPrice;//出售价格
Date date;//出库日期
SellRecord *next;
};
```
商品管理
```
class GoodsManage//商品管理
{
public:
GoodsManage();
~GoodsManage() {}
void DisplayMainMenu();//主菜单显示
void AddGoodsInfo();//添加商品信息
void DisplayGoodsInfo();//浏览商品信息
void SearchByCode();//按照商品编号搜索商品信息
void SearchByName();//按照商品名称搜索商品信息
void SearchByType();//按照商品类别搜索商品信息
void SearchByBrand();//按照商品品牌搜索商品信息
void EditGoodsInfo();//编辑商品信息
void DeleteGoodsInfo();//删除商品信息
void SellGoodsInfo();//出售商品信息
void SaveGoodsInfo();//保存商品信息
private:
int amount;//商品量
int DeleteAmount;
Goods *head;
Goods *DeleteHead;
};
```
各成员函数定义
构造函数
```
GoodsManage::GoodsManage()//定义构造函数
{
amount=0;
DeleteAmount=0;
head=new Goods;
head->next=NULL;
DeleteHead=new Goods;
DeleteHead->next=NULL;
}
```
主菜单显示函数
```
void GoodsManage::DisplayMainMenu()//定义主菜单函数
{
cout<<" ━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆━═☆\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 欢迎使用商品库存管理系统 ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 【商品进�
神仙别闹
- 粉丝: 4231
- 资源: 7516
最新资源
- 安卓项目源码Android手机防火墙源码(DroidWall)
- 双buck电路并联(VDCM控制+下垂控制) 变器并联控制方案中,下垂控制是一种经典的控制策略,但下垂控制因缺少传统电机的阻尼和旋转惯量以及励磁暂态特性,因此在负载功率变化时,输出电压更容易受到影响
- 数据科学的笔记以及资料收集.zip
- unidac-10.3.0-src.zip
- 安卓项目源码Android调用C++代码和C++代码调用源码
- 机械设计自带动力索道车sw18可编辑非常好的设计图纸100%好用.zip
- 非线性磁链观测器+PLL(源码+参考文献+仿真模型) ①源码:VESC的无感非线性观测器代码,并做了简单的调试,可以做到0速启动 代码注释非常详细,快速入门 ②参考文献(英文+翻译):为VESC非
- 数据采集平台zdh,etl处理服务.zip
- 数据集,包括原始数据集、自助数据集、存储过程数据集、JSON数据集、脚本数据集、HTTP数据集、JS数据集.zip
- 安卓项目源码Android网络监视器源码
- 发动机激励噪声仿真 使用软件为hyperworks motionview 技术路线:提取载荷等效轴心载荷,并加载加速工况下的频域激励,识别车内噪声
- 文本匹配相关模型DSSM,ESIM,ABCNN,BIMPM等,数据集为LCQMC官方数据.zip
- 基于线性预测共振峰检测和基音参数的语音合成实验MATLAB代码
- 微环谐振腔的光学频率梳matlab仿真 微腔光频梳仿真 包括求解LLE方程(Lugiato-Lefever equation)实现微环中的光频梳,同时考虑了色散,克尔非线性,外部泵浦等因素,具有可延展
- 安卓项目源码Android网页浏览器源码
- 文档分类概要01234.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈