Cpp类的基础练习:商店货物

某商店经销一种货物。货物购进和卖出时以箱为单位,各箱的重量不一样,因此,商店需要记录目前库存的总重量。现在用C++模拟商店货物购进和卖出的情况。

#include<iostream>
using namespace std;
class Goods
{
private:
	int weight;
	static int total_weight;
public:
	Goods *pNext;
	Goods(int weight)
	{
		this->weight = weight;
		total_weight += weight;
	}
	//使用delete释放内存时会调用析构函数
	~Goods()
	{
		total_weight -= weight;
	}
	int GetWeight()
	{
		return weight;
	}
	static int GetTotalWeight()
	{
		return total_weight;
	}
};
int Goods::total_weight = 0;
void menu()
{
	cout << "============================" << endl;
	cout << "       商店货物系统" << endl;
	cout << "       输入1购进" << endl;
	cout << "       输入2卖出" << endl;
	cout << "       输入0退出" << endl;
	cout << "============================" << endl;
}
//某商店经销一种货物。货物购进和卖出时以箱为单位,各箱的重量不一样,因此,
//商店需要记录目前库存的总重量。现在用C++模拟商店货物购进和卖出的情况。
void Purchase(Goods * &Head, Goods * &Tail,int weight)
{
	Goods *pNew = new Goods(weight);//这个时候会调用pNew这个指针变量指向的对象的构造函数啊
	pNew->pNext = NULL;
	if (Head == NULL && Tail == NULL)
	{
		Head = Tail = pNew;
	}
	else
	{
		Tail->pNext = pNew;
		Tail = pNew;
	}
}
void Sale(Goods * &Head)
{
	if (Head == NULL)
	{
		cout << "没有货物!" << endl;
		return;
	}
	Goods *Temp = Head->pNext;
	delete Head;
	Head = Temp;
}
int main()
{
	Goods *Head = NULL;
	Goods *Tail = NULL;
	int choice = -1;
	int weight = 0;
	do {
		menu();
		cin >> choice;
		//scanf("%d", &choice);  ? ? ?
		switch (choice)
		{
			case 1:
			{
				cout << "请输入重量:";
				cin >> weight;
				Purchase(Head, Tail, weight);
				break;
			}
			case 2:
			{
				Sale(Head);
				break;
			}
			case 0:exit(0); break;
			default:cout << "输入错误,请重新输入!" << endl; break;
		}
		cout << "总重量为:" << Goods::GetTotalWeight() << endl << endl;
	} while (1);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值