超市商品管理系统设计
- 一、题目
- 二、功能展示
- 三、代码
一、题目
2.超市商品管理系统设计
某超市有三类商品,食品、化妆品、日用品,每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。需要设计一个系统,对商品的销售相关数据进行统计和管理,设计要求如下
①应用程序中需有菜单,用于选择各项功能调用,以下功能至少选做4项:
添加功能:主要完成商品信息的添加。
②查询功能:可按商品类别、商品名称等进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
③删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
④销售功能。销售商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入销售的数量,进行相应计算。如果库存量不够,给出提示信息,结束销售。
⑤统计功能。输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
二、功能展示
超市商品管理系统
三、代码
#include <iostream>
using namespace std;
#include <String>
#include <algorithm> //分类统计
#define MAX 1000 //可以存放的最大数量
/* designed by:susocool
* 题目要要求五个功能均能实现->增(1)查(2)删(3)销售(4)统计(5)
* 增加清除(6)和退出系统(0)功能,使得操作系统完善
*/
//设计商品结构体
struct GoodsInfo
{
int category; //类别
int Allowance; //库存量
int price;
string name;
string Producers; //生产产家
string brand; //品牌
};
struct Goodsbooks
{
// 管理录中保存的商品数组
struct GoodsInfo GoodsArray[MAX];
// 管理系统中当前记录商品人个数
int m_Size;
// 分别记录每个类别的库存总量
int foodTotal;
int cosmeticsTotal;
int dailyUseTotal;
};
// 0、菜单显示
//菜单界面
void showMenu()
{
cout << "****************************" << endl;
cout << "***** 1、添加商品信息 *****" << endl;
cout << "***** 2、显示商品信息 *****" << endl;
cout << "***** 3、删除商品信息 *****" << endl;
cout << "***** 4、销售商品 *****" << endl;
cout << "***** 5、统计商品信息 *****" << endl;
cout << "***** 6、清空商品信息 *****" << endl;
cout << "***** 0、退出管理系统 *****" << endl;
cout << "****************************" << endl;
}
//1、添加商品
void addGoods(Goodsbooks*gbs)
{
if (gbs->m_Size == MAX)
{
cout << "商品信息已满,无法继续添加!" << endl;
return;
}
else
{
//如果可以,先输入六类别
//1-食品 2-化妆品 3-日用品
int category = 0;
cout << "请输入商品类别:" << endl;
cout << "1--------食品" << endl;
cout << "2--------化妆品:" << endl;
cout << "3--------日用品:" << endl;
//对用户输入进行判断,排除输入错误的情况
while (true)
{
cin >> category;
if (category == 1 || category == 2 || category == 3)
{
gbs->GoodsArray[gbs->m_Size].category = category;
break;
}
else
{
cout << "输入错误,请重新输入!" << endl;
}
}
string name;
cout << "请输入商品姓名:" << endl;
cin >> name;
gbs->GoodsArray[gbs->m_Size].name = name;
int price;
cout << "请输入价格:" << endl;
cin >> price;
gbs->GoodsArray[gbs->m_Size].price = price;
int Allowance;
cout << "库存量:" << endl;
cin >> Allowance;
gbs->GoodsArray[gbs->m_Size].Allowance = Allowance;
string Producers;
cout << "请输入生产产家:" << endl;
cin >> Producers;
gbs->GoodsArray[gbs->m_Size].Producers = Producers;
string brand;
cout << "请输入品牌信息:" << endl;
cin >> brand;
gbs->GoodsArray[gbs->m_Size].brand = brand;
// 添加商品后,更新类别总量
switch (category)
{
case 1: // 食品类别
gbs->foodTotal += gbs->GoodsArray[gbs->m_Size].Allowance;
break;
case 2: // 化妆品类别
gbs->cosmeticsTotal += gbs->GoodsArray[gbs->m_Size].Allowance;
break;
case 3: // 日用品类别
gbs->dailyUseTotal += gbs->GoodsArray[gbs->m_Size].Allowance;
break;
default:
break;
}
//更新管理系统数量
gbs->m_Size++;
cout << "添加成功!" << endl;
system("pause"); //请按任意键继续
system("cls"); //清屏
}
}
//2、显示商品信息
void showGoods(Goodsbooks* gbs)
{
if (gbs->m_Size == 0)
{
cout << "当前记录为空" << endl;
}
else
{
for (int i = 0; i < gbs->m_Size; i++)
{
if (gbs->GoodsArray[i].category == 1)
{
cout << "食品" << "\t";
}
else if (gbs->GoodsArray[i].category == 2)
{
cout << "化妆品" << "\t";
}
else if (gbs->GoodsArray[i].category == 3)
{
cout << "日用品" << "\t";
}
cout << "商品名称:" << gbs->GoodsArray[i].name << "\t";
cout << "商品价格:" << gbs->GoodsArray[i].price <<"元" << "\t";
cout << "余量:" << gbs->GoodsArray[i].Allowance << "个" << "\t";
cout << "商品厂家:" << gbs->GoodsArray[i].Producers << "\t";
cout << "品牌信息:" << gbs->GoodsArray[i].brand << "\t";
cout << endl;
}
}
system("pause"); //请按任意键继续
system("cls"); //清屏
}
//3 & 4需要判断商品是否存在
int isExist(Goodsbooks* gbs, string name)
{
for (int i = 0; i < gbs->m_Size; i++)
{
//找到该商品名称
if (gbs->GoodsArray[i].name == name)
{
return i;
//未找到
}
}
return -1;
}
//3、删除商品信息
void deleteGoods(Goodsbooks* gbs)
{
cout << "请输入要删除的商品名称:" << endl;
string name;
cin >> name;
int res = isExist(gbs, name);
if (res == -1) //未查到
{
cout << "未查询到该商品" << endl;
}
else //找到,删除过程是顺序表的删除
{
for (int i = res; i < gbs->m_Size; i++)
{
//数据前移
gbs->GoodsArray[i] = gbs->GoodsArray[i + i];
}
gbs->m_Size--;
cout << "商品信息删除成功" << endl;
}
system("pause"); //请按任意键继续
system("cls"); //清屏
}
//4、销售功能,查找商品信息
//如果商品信息足够,输入销量(卖多少个)进行相应的计算,不足给出提示,结束销售
//检测商品是否存在->检查商品数量是否满足
//@1系统名称 @2对比名称
void findGoods(Goodsbooks* gbs)
{
cout << "请输入要查找商品的名称:" << endl;
string name;
cin >> name;
int ret = isExist(gbs, name);
if (ret == -1)
{
cout << "查无此商品" << endl;
}
else
{
//对余量进行判断
if (gbs->GoodsArray[ret].category == 1)
{
cout << "该商品属于食品类,还有" << gbs->foodTotal << "件" << endl;
}
else if (gbs->GoodsArray[ret].category == 2)
{
cout << "该商品属于化妆品类,还有" << gbs->cosmeticsTotal << "件" << endl;
}
else if (gbs->GoodsArray[ret].category == 3)
{
cout << "该商品属于日用品,还有" << gbs->dailyUseTotal << "件" << endl;
}
// 输入销售数量
int salesAmount;
cout << "请输入销售数量:";
cin >> salesAmount;
// 检查销售数量
if (salesAmount <= 0 || salesAmount > gbs->GoodsArray[ret].Allowance)
{
cout << "销售数量无效!或者库存量不足!" << endl;
}
// 计算总的售价
double unitPrice = gbs->GoodsArray[ret].price; //单价
double totalSalesPrice = salesAmount * unitPrice;
// 更新库存水平
gbs->GoodsArray[ret].Allowance -= salesAmount;
// 更新余量
switch (gbs->GoodsArray[ret].category)
{
case 1:
gbs->foodTotal -= salesAmount;
break;
case 2:
gbs->cosmeticsTotal -= salesAmount;
break;
case 3:
gbs->dailyUseTotal -= salesAmount;
break;
default:
break;
}
// 检测库存量
if (gbs->GoodsArray[ret].Allowance <= 0)
{
cout << "该商品已售罄!" << endl;
}
else
{
cout << "销售成功!剩余库存:" << gbs->GoodsArray[ret].Allowance << "件。" << endl;
}
// 输出总价
cout << "销售应该金额为:" << totalSalesPrice << "元。" << endl;
}
system("pause"); //请按任意键继续
system("cls"); //清屏
}
//5、统计商品信息
void showGoodsInfo(Goodsbooks* gbs)
{
cout << "统计当前商品信息:" << endl;
// 用于计算商品的数目
int total_items = 0;
// 按价格从大到小排序
cout << "\n按价格从大到小排序:" << endl;
sort(gbs->GoodsArray, gbs->GoodsArray + gbs->m_Size,
[](const GoodsInfo& a, const GoodsInfo& b) {
return a.price > b.price;
});
for (int i = 0; i < gbs->m_Size; ++i) {
total_items += gbs->GoodsArray[i].Allowance;
cout << "商品名称: " << gbs->GoodsArray[i].name << ", 价格: " << gbs->GoodsArray[i].price
<< ", 库存量: " << gbs->GoodsArray[i].Allowance << ", 生产厂家: " << gbs->GoodsArray[i].Producers << endl;
}
// 按库存量从大到小排序
cout << "\n按库存量从大到小排序:" << endl;
sort(gbs->GoodsArray, gbs->GoodsArray + gbs->m_Size,
[](const GoodsInfo& a, const GoodsInfo& b) {
return a.Allowance > b.Allowance;
});
for (int i = 0; i < gbs->m_Size; ++i) {
cout << "商品名称: " << gbs->GoodsArray[i].name << ", 价格: " << gbs->GoodsArray[i].price
<< ", 库存量: " << gbs->GoodsArray[i].Allowance << ", 生产厂家: " << gbs->GoodsArray[i].Producers << endl;
}
// 按生产厂家排序
cout << "\n按生产厂家排序:" << endl;
sort(gbs->GoodsArray, gbs->GoodsArray + gbs->m_Size,
[](const GoodsInfo& a, const GoodsInfo& b) {
return a.Producers < b.Producers;
});
for (int i = 0; i < gbs->m_Size; ++i) {
cout << "商品名称: " << gbs->GoodsArray[i].name << ", 价格: " << gbs->GoodsArray[i].price
<< ", 库存量: " << gbs->GoodsArray[i].Allowance << ", 生产厂家: " << gbs->GoodsArray[i].Producers << endl;
}
// 输出总库存数
cout << "\n当前库存中所有商品总数: " << total_items << endl;
system("pause"); //请按任意键继续
system("cls"); //清屏
}
//6、清空商品信息
//使用简单的方法---逻辑上清空
void clearGoods(Goodsbooks* gbs)
{
gbs->m_Size = 0;//将当前记录商品数量置为0
cout << "商品信息已经清空咯~" << endl;
system("pause");
system("cls");
}
int main()
{
//创建管理系统结构体变量
Goodsbooks gbs;
gbs.m_Size = 0;
gbs.m_Size = 0;
gbs.foodTotal = 0;
gbs.cosmeticsTotal = 0;
gbs.dailyUseTotal = 0;
int select = 0;
while (true)
{
showMenu();
cin >> select;
switch (select)
{
case 1: //添加商品信息
addGoods(&gbs);
break;
case 2: //显示商品信息
showGoods(&gbs);
break;
case 3: //删除商品信息
deleteGoods(&gbs);
break;
case 4: //销售商品
findGoods(&gbs);
break;
case 5: //统计商品信息
showGoodsInfo(&gbs);
break;
case 6: //清空商品信息
clearGoods(&gbs);
break;
case 0: //退出商品仓库
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("pause");
return 0;
}