承德网站制作多少钱,选择锦州网站建设,网页设计网站多少钱,开发一个进销存app需要多少钱1、货物出货与进货
#if 0
#includeiostream
using namespace std;
/*
某商店经销一种货物。货物购进和卖出时以箱为单位。各箱
的重量不一样#xff0c;因此商店需要记录目前库存的总重量#xff0c;现在用
C模拟商店货物购进和卖出的情况
*/
class Goods {
public:…1、货物出货与进货
#if 0
#includeiostream
using namespace std;
/*
某商店经销一种货物。货物购进和卖出时以箱为单位。各箱
的重量不一样因此商店需要记录目前库存的总重量现在用
C模拟商店货物购进和卖出的情况
*/
class Goods {
public:Goods() {weight 0;next NULL;cout 创建了一个重量为 weight 的货物 endl;}Goods(int w) {//需要创建一个w的货物并且仓库加这个重量weight w;next NULL;total_weight w;cout 创建了一个重量为 weight 的货物 endl;}static int get_total_wight() {return total_weight;}~Goods() {//需要删除一个w的货物并且仓库减这个重量cout 删除了一个重量为 weight 的货物 endl;total_weight - weight;}
public:Goods *next;
private:int weight;static int total_weight;
};
int Goods::total_weight 0;
void buy(Goods *head, int w) {//创建一个货物 重量为wGoods *new_goods new Goods(w);if (head NULL)head new_goods;else {new_goods-next head; //头结点插入head new_goods;}
}
void sale(Goods * head) {if (head NULL) {cout 仓库为空 endl;return;}Goods *temp head;head head-next;delete temp;cout saled. endl;
}
int main(void) {int choice 0;int w;Goods *head NULL; //利用链表管理 无头指针do{cout 1 进货 endl;cout 2 出货 endl;cout 0 退出 endl;cin choice;switch (choice){case 1:cout 请输入要创建货物的重量 endl;cin w;buy(head, w);break;case 2:sale(head);break;case 0:return 0;break;default:break;}cout 当前仓库的总重量是 Goods::get_total_wight() endl;} while (1);
}
#endif 我的思路
#if 0
#includeiostream
using namespace std;
/*
某商店经销一种货物。货物购进和卖出时以箱为单位。各箱
的重量不一样因此商店需要记录目前库存的总重量现在用
C模拟商店货物购进和卖出的情况
*/
class Goods {
public:Goods(int num, int weight) {m_num num;m_weight weight;}void get_in_good() {m_sum_weight m_num*m_weight;}void get_out_good(int num, int weight) {m_sum_weight - num*weight;}static int get_m_sum_weight(){return m_sum_weight;}
private:int m_num;int m_weight;static int m_sum_weight;
};
int Goods::m_sum_weight 0;
int main() {Goods g1(1, 20);Goods g2(2, 30);Goods g3(3, 50);g1.get_in_good();g2.get_in_good();g3.get_in_good();g2.get_out_good(1, 30);cout Goods::get_m_sum_weight() endl;return 0;
}
#endif
2、数组类的封装
MyArray.h
#pragma once
#includeiostream
using namespace std;
class MyArray
{
public:friend ostream operator(ostream os, const MyArray obj);friend istream operator(istream os, MyArray obj);friend bool operator(const MyArray a1, const MyArray a2); //全局函数bool operator!(const MyArray another); //成员函数MyArray();MyArray(int length);MyArray(const MyArray obj);MyArray operator(const MyArray obi);int operator[](int index) const; void setData(int index, int value);int getData(int index);int getLength() const;~MyArray();
private:int m_length;int *m_space; //指向堆上空间 数组首地址
};
MyArray.cpp
#include MyArray.hMyArray::MyArray() {cout MyArray() endl;m_length 0;m_space NULL;
}
MyArray::MyArray(int length){/*if (length 0){m_length 0;m_space new int[length];}else {m_length length;m_space new int[length];}*///等价于if (length 0){length 0;}m_length length;m_space new int[length];
}
MyArray::MyArray(const MyArray obj) {if (obj.m_length0){ if (m_space ! NULL) {delete[] m_space;m_space NULL;}this-m_length obj.m_length;this-m_space new int[this-m_length];for (int i 0; i m_length; i) //数据元素深拷贝{this-m_space[i] obj.m_space[i];}}
}
MyArray::~MyArray() {if (m_space ! NULL) {delete[] m_space;m_space NULL;}
}
MyArray MyArray::operator(const MyArray another) {if (this another){return *this;}if (this-m_space ! NULL) {delete this-m_space;this-m_space NULL;this-m_length 0;}if (another.m_length 0){this-m_length another.m_length;this-m_space new int[this-m_length];for (int i 0; i m_length; i) //数据元素深拷贝{this-m_space[i] another.m_space[i];}}return *this;
}
int MyArray::operator[](int index) const{return this-m_space[index];
}void MyArray::setData(int index, int value) {if (m_space ! NULL) {//a1.setData(i, i);m_space[index] value;}}
int MyArray::getData(int index) {return m_space[index];
}
int MyArray::getLength() const {return m_length;
}
bool MyArray::operator!(const MyArray another) {/*if (this-getLength() ! another.getLength()) {return true;}for (int i 0; i this-getLength(); i) {if (this-m_space[i] ! another.m_space[i])return true;}return false;*///等价于return !(*this another);
}
ostream operator(ostream os, const MyArray obj) { //防止被修改添加const后报错//原因分析在调用getLengt()传入的是obj,并不是const类型//安全性高的转换为安全性低的会报错//下面的operator[](obj)传入的是obj,并不是const类型 所以报错//修改方法就是加上在getLength() 函数后添加const//修改方法就是加上在operator[](int index)函数后添加constos 遍历整个数组 endl;//for (int i 0; i obj.m_length; i) 无法修改for (int i 0; i obj.getLength(); i){//os obj.m_space[i] ;//等价于os obj[i] ;}return os;
}
//istream operator (istream is,MyArray obj) {
// cout 请输入数组元素个数;
// cin obj.m_length;
// obj.m_space new int[obj.m_length];
// for (int i 0; i obj.m_length; i)
// {
// int j;
// cin j;
// obj.m_space[i] j;
// }
// return is;
//
//}
istream operator(istream is, MyArray array) {cout 请输入 array.getLength() 个数 endl;for (int i 0; i array.getLength(); i){cin array[i];}return is;
}
bool operator(const MyArray a1, const MyArray a2) {if (a1.getLength() ! a2.getLength()) {return false;}for (int i 0; i a1.getLength(); i){if (a1.m_space[i] ! a2.m_space[i])return false;}return true;
}
main.cpp
#includeiostream
using namespace std;
#includeMyArray.hint main() {MyArray a1(10);for (int i 0; i a1.getLength(); i){//a1.setData(i, i);a1[i] i 10; //space[i]i10}cout print a1 endl;for (int i 0; i a1.getLength(); i){//couta1.getData(i) ;cout a1[i] ;}MyArray a2 a1;cout endlprint a2 endl;for (int i 0; i a2.getLength(); i){//couta1.getData(i) ;cout a2[i] ;}cout endl;MyArray a3;a3 a1;cout endl print a3 endl;for (int i 0; i a3.getLength(); i){//cout a3.getData(i) ;cout a3[i] ;}cout endl 操作符重载 endl;cout a3 endl;MyArray array1(3);cin array1;cout array1 endl;if (array1 a1) {cout 相等 endl;}elsecout 不相等 endl;if (array1 ! a1) {cout 不相等 endl;}elsecout 相等 endl;
}