不说废话,开干:
商品类:
#include <iostream>
#include <string>
using namespace std;
class Goods {
private:
string kind; // 商品种类
string serial_number; // 商品编号
string name; // 商品名字
string brand; // 商品品牌
double price; // 商品价格
int inventory; // 商品库存量
string manufacturer; // 商品生产商
friend class Operate; // 管理类作为友元类
public:
Goods() {}
Goods(string k, string sn, string n, string b, double p, int i, string m)
: kind(k), serial_number(sn), name(n), brand(b), price(p), inventory(i), manufacturer(m) {}
};
管理类:
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
class Operate {
private:
vector<Goods> vec; // 存储商品信息的向量
string m_file_name; // 商品信息文件名
public:
Operate(string file_name) {
m_file_name = file_name;
Read_File(file_name); // 从文件中读取商品信息
}
~Operate() {
Write_File(m_file_name); // 将商品信息写入文件
}
void Read_File(string file_name) {
ifstream filein(file_name.c_str());
if (!filein) {
cout << "打开文件失败,请检查文件是否存在!" << endl;
exit(0);
}
vec.clear();
Goods s;
while (filein >> s.kind >> s.serial_number >> s.name >> s.brand >> s.price >> s.inventory >> s.manufacturer) {
vec.push_back(s);
}
filein.close();
}
void Write_File(string file_name) {
ofstream fileout(file_name.c_str());
if (!fileout) {
cout << "打开文件失败,请检查文件是否存在!" << endl;
exit(0);
}
for (const auto& s : vec) {
fileout << s.kind << "\t" << s.serial_number << "\t" << s.name << "\t" << s.brand << "\t" << s.price << "\t" << s.inventory << "\t" << s.manufacturer << endl;
}
fileout.close();
}
void Add(Goods s) {
vec.push_back(s);
}
void Delete(string serial_number) {
vec.erase(remove_if(vec.begin(), vec.end(), [&](Goods& s) { return s.serial_number == serial_number; }), vec.end());
}
void Display() {
for (const auto& s : vec) {
cout << s.kind << "\t" << s.serial_number << "\t" << s.name << "\t" << s.brand << "\t" << s.price << "\t" << s.inventory << "\t" << s.manufacturer << endl;
}
}
};
系统功能:
添加商品:通过调用Add方法将新商品添加到向量中。
删除商品:通过调用Delete方法根据商品编号删除商品。
显示商品:通过调用Display方法显示所有商品信息。
读取文件:通过调用Read_File方法从文件中读取商品信息。
写入文件:通过调用Write_File方法将商品信息写入文件。
你可以自己添加一些功能,更“好玩一些”。