求解C++题目,如下,谢谢!

某商店已有10种商品,商品信息包括商品名称、型号、数量、单价,这些商品信息已储存在计算机中,现在需要加入一种商品,请把该产品的信息添加进去。
我需要编写好的可以再VC++ 6.0中运行的程序,要代码

第1个回答  2011-05-10
我给你写了一个,程序已经很完完美了。你如果对STL不熟悉的话,可以用数组来代替。代码如下:
//作者:段晓辉
//时间:2011.5.10
#include <vector>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

//先定义一个商品类
class CGoods
{
public:
CGoods():m_name("noName"),m_id(0), m_count(0), m_price(0){}
CGoods(const string name, int id, int count, float price)
:m_name(name),m_id(id), m_count(count), m_price(price){}
string GetGoodsName() const
{
return m_name;
}
int GetGoodsID() const
{
return m_id;
}
int GetGoodsCount() const
{
return m_count;
}
float GetGoodsPrice() const
{
return m_price;
}

protected:
private:
// CGoods(){}
// CGoods(const CGoods &){}
// CGoods &operator = (const CGoods &);
// void *operator new(size_t){}
// void operator delete(void *){}
private:
string m_name;
int m_id;
int m_count;
float m_price;
};

void main()
{
string inchar;
string goodsName;
int goodsID;
int goodsCount;
float goodsPrice;
int goodsNum=0;//商品总数
//定义一个类数组来初始化刚开始的10个商品信息
CGoods arrGoods[10];
string classname;
for (int i=0; i<10; i++)//这个没有支持C++0x标准,因为i是一个局部变量,下面如果再次定义不会重复定义
{
classname = "Goods";
char buf[2];
classname += itoa(i, buf, 10);
CGoods classname(classname, i, i+10, 199);
arrGoods[i] = classname;
}

vector<CGoods> Goods;
Goods.reserve(20);

for (i=0; i<10; i++)
{
Goods.push_back(arrGoods[i]);
goodsNum++;
}

while (1)
{
cout<<"输入1,进行新增加商品的操作"<<endl;
cout<<"输入2,进行新查找商品的操作"<<endl;
cout<<"输入0,结束程序"<<endl;
cin>>inchar;

if(0==inchar.compare("1") )//增加商品
{
cout<<"请输入商品名称:";
cin>>goodsName;
cout<<endl;

cout<<"请输入商品ID:";
cin>>goodsID;
cout<<endl;

cout<<"请输入商品数量:";
cin>>goodsCount;
cout<<endl;

cout<<"请输入商品价格:";
cin>>goodsPrice;
cout<<endl;

//下面再加入一个商品的信息
CGoods newGoods(goodsName, goodsID, goodsCount, goodsPrice);
Goods.push_back(newGoods);
goodsNum++;
cout<<"商品已成功添加"<<endl;
cout<<endl;
}
else if (0==inchar.compare("2"))//查询商品信息
{
cout<<"请输入要查询的商品名:";
cin>>goodsName;
cout<<endl;
for (i=0; i<goodsNum; i++)
{
if (0==Goods.at(i).GetGoodsName().compare(goodsName))
{
cout<<"商品名:"<<Goods.at(i).GetGoodsName().c_str()<<endl;
cout<<endl;
cout<<"商品ID:"<<Goods.at(i).GetGoodsID()<<endl;
cout<<endl;
cout<<"商品数量:"<<Goods.at(i).GetGoodsCount()<<endl;
cout<<endl;
cout<<"商品价格:"<<Goods.at(i).GetGoodsPrice()<<endl;
cout<<endl;
break;//跳出for循环
}
}//end for
if (i==goodsNum)
{
cout<<"没有你要查找的商品信息"<<endl;
cout<<endl;
}

}
else if (0==inchar.compare("0"))
{
break;
}
}//end while

}
第2个回答  2011-05-09
#include <iostream>
#include <string>
using namespace std;
class goods
{
private:
string name;
string type;
int num;
int price;
public:
goods()
{}
goods(string nam,string t,int n,int p)
{
name = nam;
type = t;
num = n;
price = p;
}
void insert();
};
void goods::insert()
{
cin>>name>>type>>num>>price;
}
int main()
{
int i;
class goods s[11];
for(i = 0;i < 10;i++)
{
s[i].insert();//初始化 10种商品 ,也可以在初始化时写
}
s[i].insert();//第十一种商品
system("pause");
return 0;
}本回答被网友采纳
第3个回答  2011-05-09
构造出一个商品类来,再在类里面写一个添加信息的方法(insert),再用类初始化一个实例对象之后,如果要添加信息的话,直接调用你的商品类提供的insert方法就可以了。
第4个回答  2011-05-09
可以去书店买南开一百道试卷

c++题目求解?、
题目描述 把一个四位数的数字由小到大排列,组成一个新数,又从大到小排列组成另一个新数,两数相减,之后重复这个步骤,只要四位数的四个数字不重复,数字最终便会变成6174 一个数(一个四位数)输出 一组等式 样例输入 3109 样例输出 9310-139=91719711-1179=85328532-2358=6174 参考程序和运行结...

求大神解答c++题目
然后划分应该断开直径中的边,以保证剩下子树的直径都变小 接着使用树形dp预处理出断开直径上的每条边后,剩下子树的直径 最后遍历直径上的边,计算断开后两子树直径差的绝对值最小值即可 C++代码如下:include <bits\/stdc++.h> \/\/ C++万能头文件 using namespace std;using pii = pair<int, in...

求解c++练习题 感谢
1 --x==y 返回真此时x为8 执行表达式--x 再执行--x后x为7 x<9成立 b=7 c=8 2 感觉B D都对 B选项只执行t=2*s D选项只执行t=t+s 3 fun里的变量d会覆盖全局变量d 结果为5+3 main里为1+3

请问大家这道C++编程题怎么做?求帮忙
先将输入的数保存到数组,然后遍历数字,判断相邻数字是否相同即可 使用一个变量记录当前是否处于数字连续的状态,用于输出中括号 一个小技巧是给数组多分配一个位置并将其置为-1,方便判断数组最后一个数 C++代码和运行结果如下:输出符合样例,望采纳~附源码链接:判断连续数字 ...

C++求解!谢谢了
首先,输出是 ft::y=3。但是我想问?这是哪个出的题,太不严谨了!1:原题中没有使用命名空间,但是cout前没有+std:: 。2:p=test::fun1;错误!因为是指针,所以p=&test::fun1。3:虽然不算真正错误,就是test::fun1()里面,输出的是"ft::x" ,而不是"ft::x="。总之,出题的...

求解c++代码。 用类做求解。 如图
1、根据题目构造类时可发现其2类具有所有图形的共性,即抽象出CShape基类 2、由于各图形的面积与周长算法不同,为保证各自得到正确实现,把面积与周长函数方法声明为纯虚函数 3、因为输出可利用output成员函数,因为面积与周长算法无需提供到共有部分,且输出函数不具有差异性,因此作为普通函数让子类继承 ...

这是一个C++二级考试的题,请高手指教一下
首先你要明白逗号表达式的含义才能掌握。逗号表达式:比如(表达式1,表达式2),它最终返回的是第二个表达上也就是表达式2的值。因此,在A中,首先先执行括号里面的语句y=z=8,得到y==8,z==8,接着执行4*6,得到24,并且该表达式返回第二个表达上的值,也就是24,因此x==24。同理可得B中,z...

帮忙解答下这道C++题目!!!~谢谢~1~
继续突破 如果号码被n整除,则n不是素数,周期可以结束。3:无效转换成int f()的函数有一个返回int类型的值。4:CIN >> A >> B,C语言区分大小写。即,A是一个不同的标识符。5:还有一个错误,你可能是错误的。错误如下:(我>正)cout <<“请”<< endl;应该的,如果(> =)...

C++问题 求解!
答案是正确的,分析结果如下:首先搞清楚Base1(int i, int j=0) : Base(j)还有Base2(int i, int j=0) : Base(j) 还有Derived(int a, int b, int c, int d) :mem1(a), mem2(b), Base1(c),Base2(d), Base(a) 都是成员初始化列表,而且由题中的继承可知,当创建Derived对象...

c++ 的题目 急
第三个分析:(3)a%=(n%=2) a=12,n=5,n%2为1,a%1为0,结果为0;第四个分析:(4)aIIb+4&&a*b a=5,b=3;这是逻辑运算,a非零,所以aIIb为真,即就是1,a*b为15,15&&和4都非零为真,即就是1,1+1等于2,这就是结果。很荣幸为您解答难题,祝您开心,生活愉快~~~...

相似回答