1#include <iostream> 2using namespace std; 3class Goods 4{ 5public: 6 Goods() //货物的无参构造 7 { 8 weight = 0; 9 next = NULL; 10 cout << "创建了一个重量为" << weight << "的货物" << endl; 11 } 12 Goods(int w) //传进一个重量为w的货物,且仓库的总重量加上w 13 { 14 weight = w; 15 next = NULL; //每创建一个货物,其指针域要为空,否则会出现乱码 16 a_weight += w; 17 cout << "创建了一个重量为" << weight << "的货物" << endl; 18 } 19 ~Goods() //仓库减少这个重量的货物 20 { 21 cout << "删除了一箱重量为" << weight << "的货物" << endl; 22 a_weight -= weight; 23 } 24 Goods *next; //定义每个类的指针域,用于链表的连接 25 static int sum() //定义静态统计函数,用于返回私有的静态成员变量 26 { 27 return a_weight; 28 } 29private: 30 int weight; 31 static int a_weight; //统计仓库的总重量 32}; 33int Goods::a_weight = 0; //静态成员的初始化 34 35void buy(Goods *&head, int w) //定义进货函数,形参为引用,或者二级指针,目的是为了能够通过函数修改主函数名为head的链表 36{ 37 Goods *new_goods = new Goods(w); 38 if (head == NULL) 39 { 40 head = new_goods; 41 } 42 else 43 { 44 new_goods->next = head; //在表头插入,此步骤意为新传入的w的next指向头指针head所指向的地址,即原链表的第一个元素 45 head = new_goods; //修改表头指针使表头指针指向新添加的w的地址空间 46 } 47} 48 49void sale(Goods *&head) //定义出货函数,形参为引用,目的是为了能够通过函数修改主函数名为head的链表 50{ 51 if (head == NULL) 52 { 53 cout << "仓库已经没有货物了" << endl; 54 } 55 else { 56 Goods *temp = head; //建立一个临时temp,使其指向Head指向的第一个元素的地址 57 head = head->next; //修改头指针,使其指向第二个元素 58 delete temp; 59 cout << "saled..." << endl; 60 } 61} 62int main() 63{ 64 int choice; 65 int w; //定义需要进货的货物的重量的变量w 66 Goods *head = NULL; 67 do { 68 cout << "------------------------" << endl; 69 cout << " 1.进货 " << endl; 70 cout << " 2.出货 " << endl; 71 cout << " 0.退出 " << endl; 72 cout << "------------------------" << endl; 73 cin >> choice; 74 switch (choice) 75 { 76 case 1: 77 //进货 78 cout << "请输入需要进货的货物的重量" << endl; 79 cin >> w; 80 buy(head, w); //传进链表和重量w 81 break; 82 case 2: 83 //出货 84 sale(head); //传进链表 85 break; 86 case 0: 87 return 0; 88 default: 89 break; 90 } 91 cout << "当前仓库的总重量为" << Goods::sum() << endl; 92 } while (1); 93 94 system("pause"); 95 return 0; 96}
C++
Wesley13
2021-10-11
1346 0 0
点赞
收藏
评论区
加载中...