商店商品管理系统总结与深度分析
一,进度总结
本次对商店商品管理系统的修改,让代码能够适配当前版本系统与初步的改进,主要包括:
从 “固定数组、易崩溃、数据易丢失” ,到 “、稳定性强、数据持久化” ;提升跨平台运行能力。
实现对数据的增删改查与对数据的保存功能。
二,关键修改点
- 动态数据结构:从固定数组到 vector
define MAXSIZE 100 + 商品结构体数组 std::vector动态容器
按需分配内存,避免固定数组的内存浪费;
商品数量无上限,适配不同规模商店需求;
内置push_back/erase方法,简化商品增删逻辑,消除数组越界风险
核心代码示例:
// 封装后的商品管理类核心成员
class GoodsManager {
private:
vectorgoodsList; // 替代固定大小的Goods数组
string dataFile = "Myshop.txt"; // 数据持久化文件路径
public:
// 添加商品:自动扩容,无需判断数组是否满
void addGoods(const Goods& goods) {
goodsList.push_back(goods);
saveToFile(); // 新增后自动持久化
}
// 删除商品:按索引安全删除,避免越界
bool deleteGoods(int index) {
if (index < 0 || index >= goodsList.size()) {
cout << "商品索引无效!" << endl;
return false;
}
goodsList.erase(goodsList.begin() + index);
saveToFile();
return true;
}
}; - 输入验证:全维度防错机制
针对原始代码 “输入非法数据导致程序崩溃 / 逻辑异常” 的问题,重构后实现类型校验、范围校验、格式校验三层防护:
价格 / 库存验证:限制为非负数,输入非数字 / 负数时重置输入流并重新提示:
// 通用数值验证函数(适配价格、库存)
template
T getValidNumber(const string& prompt, T minVal = 0) {
T num;
while (true) {
cout << prompt;
if (cin >> num && num >= minVal) break;
// 重置cin错误状态+清空缓冲区
cin.clear();
cin.ignore(numeric_limits::max(), '\n');
cout << "输入无效!请输入不小于" << minVal << "的数字" << endl;
}
return num;
}
// 调用示例:获取合法进价
float inPrice = getValidNumber("请输入商品进价:", 0);
int storage = getValidNumber("请输入商品库存:", 0);
商品类型 / 品牌验证:封装独立输入函数,支持模糊校验(避免空输入):
cpp
运行
string getValidString(const string& prompt) {
string str;
while (true) {
cout << prompt;
cin.ignore(); // 清空换行符缓冲区
getline(cin, str);
if (!str.empty()) break;
cout << "输入不能为空!请重新输入" << endl;
}
return str;
}
// 调用示例:获取商品类型
string type = getValidString("请输入商品类型:");
菜单选择验证:避免输入非数字导致死循环:
int getValidMenuChoice(int min, int max) {
int choice;
while (true) {
cout << "请选择操作(" << min << "-" << max << "):";
if (cin >> choice && choice >= min && choice <= max) break;
cin.clear();
cin.ignore(numeric_limits::max(), '\n');
cout << "输入无效!请输入" << min << "-" << max << "之间的数字" << endl;
}
return choice;
}
三,修改难点
原代码距今久远,随着版本迭代与更新,编译器可能无法成功编译出结果,需要进行修改与调试,使得其能够在vs2022中成功编译出来;部分设计理念可能过于落后,使得代码安全性与实用性特别低,需要进行着重修改。
四,运行图片




五,代码来源
https://files.cnblogs.com/files/jingxinbk/超市商品管理系统.rar
浙公网安备 33010602011771号