假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx

上传人:b****8 文档编号:9533302 上传时间:2023-02-05 格式:DOCX 页数:15 大小:18.58KB
下载 相关 举报
假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx_第1页
第1页 / 共15页
假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx_第2页
第2页 / 共15页
假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx_第3页
第3页 / 共15页
假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx_第4页
第4页 / 共15页
假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx

《假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx》由会员分享,可在线阅读,更多相关《假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx(15页珍藏版)》请在冰豆网上搜索。

假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx

假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息

《C++程序设计》上机实验

题目:

假设某商店有如下几种货品:

衬衣、帽子、立柜。

每一种货物都有与其关联的说明信息。

衬衣:

单价、产地、库存量、布料;

帽子:

单价、产地、库存量、布料、样式(平顶或尖顶);

立柜:

单价、产地、库存量、木料、颜色。

对这些商品的操作有:

商品的进库(增加库存量),商品的出库(减少库存量),该类货

品总价格的计算。

要求自行设计数据结构,用类的继承与派生关系将上述的各种货品表示出来,并使用类

的构造函数来初始化每一类对象的初始数据。

而后将上述的商品管理计算机化,完成操作要

求的功能。

【实现方法提示】

1.设立3个不同的类来描述与处理3种不同的货品。

首先注意到上述3种货品数据之

间的相互关联关系,可使用C++基类及其派生类的定义方法,先抽象出(“提取”出)如下每

一货品都具有的“公有”数据构成一个所谓的基类base,而后再派生出所需的那3个类。

(1)base(基)类:

单价、产地、库存量;

(2)由base作为基类,派生出shirt(衬衣)类:

增加“布料”数据;

(3)由base出发,派生出wardrobe(立柜)类:

增加“木料”与“颜色”数据;

(4)而后又由shirt类出发(作为基类),派生出cap(帽子)类:

增加“样式”数据。

2.对应于要对各类数据所进行的操作,而设立出类的如下几个成员函数。

(1)构造函数

通过传递来的实参数据,来构造出每一对象所具有的各数据成员。

如基类base需要传

递place、count与price三项数据,而派生类shirt则需在base数据的基础上增加第四项

即布料数据material等。

(2)商品的进库(增加库存量)

voidin_something(intadd_cnt);

将对象的库存量count增加一个数量add_cnt。

(3)商品的出库(减少库存量)

voidout_something(intdel_cnt);

将对象的库存量count减少一个数量del_cnt。

(4)该类货品总价格的计算

doubletotal_price();

通过使用“price*count”计算并返回对象所代表货品的总价格。

(5)对象数据的输出。

在屏幕上显示出对象所拥有的当前数据。

//复杂化要求:

1.各自商品拥有独立特征独立库存数量、单价和其他特性

2.2.录入功能中

(1)需要判断现在输入与以前输入的是否相同若相同则叠加库存量

(2)在

(1)的基础上判断单价是否冲突若冲突则要求重新录入

3.功能部分要求自由度并设立查询功能

程序如下:

#include

#include

usingnamespacestd;

classbase{

protected:

floatprice;//单价

stringplace;//产地

intcount;//库存量

public:

base(float&p,int&c,string&pl)

{price=p;count=c;place=pl;}

voidin_something(intadd_cnt)

{count+=add_cnt;}

voidout_something(intdel_cnt)

{

if(del_cnt>count)count=0;//变0保护小于0的按0计算

elsecount-=del_cnt;

}

doubletotal_price()

{returnprice*count;}

intr_count()

{returncount;}

};

classshirt:

publicbase{

protected:

stringmaterial;

public:

shirt(float&p,int&c,string&pl,string&m):

base(p,c,pl)

{material=m;}

voidprint()

{

cout<<"\n衬衣"<<"\t产地:

"<

"<

<<"\n库存量:

"<

"<

}

};

classwardrobe:

publicbase{

protected:

stringwood;

stringcolor;

public:

wardrobe(float&p,int&c,string&pl,string&w,string&co):

base(p,c,pl)

{

wood=w;color=co;

}

voidprint()

{

cout<<"\n立柜"<<"\t产地:

"<

"<

"<

"

<

"<

}

};

classcap:

publicshirt{

protected:

stringstyle;

public:

cap(float&p,int&c,string&pl,string&m,string&st):

shirt(p,c,pl,m)

{

style=st;

}

voidprint()

{

cout<<"\n帽子"<<"\t产地:

"<

"<

<<"样式:

"<

"<

"

<

}

};

 

intchoose(stringa)//用于判断下一步执行的命令0.结束1.衬衣2.帽子3.立柜4.查询5.入库6.出库7.出错重输

{

if(a=="0")return0;//结束

elseif(a=="衬衣"||a=="shirt")return1;

elseif(a=="帽子"||a=="cap")return2;

elseif(a=="立柜"||a=="wardrobe")return3;

elseif(a=="查询"||a=="?

"||a=="about")return4;

elseif(a=="入库"||a=="+"||a=="in")return5;

elseif(a=="出库"||a=="-"||a=="out")return6;

elseif(a=="帮助"||a=="?

"||a=="help")return8;

elsereturn7;

}

inttotal_count(cap&a,shirt&b,wardrobe&c)

{returna.r_count()+b.r_count()+c.r_count();}

//PoweredbyX.Duke

intmain(void)

{

//==========输入部分

intcho=1,i;//cho为选择计数器接收choose函数的返回值通过if语句判断要执行的语句

intci=0,wi=0,si=0;//标记角标

floatpci[5]={0.00},pwi[5]={0.00},psi[5]={0.00};//单价

intcou_cap[5]={0,0,0,0,0},cou_shi[5]={0,0,0,0,0},cou_war[5]={0,0,0,0,0};//依次记录帽子衬衣立柜的库存量

stringpla_cap[5]={"0","0","0","0","0"};//保存帽子产地信息

stringpla_war[5]={"0","0","0","0","0"};//保存立柜产地信息

stringpla_shi[5]={"0","0","0","0","0"};//保存衬衣产地信息

stringcol[5]={"0","0","0","0","0"};//保存颜色信息

strings_mat[5]={"0","0","0","0","0"};//保存衬衣_布料信息

stringc_mat[5]={"0","0","0","0","0"};//保存帽子_布料信息

stringwoo[5]={"0","0","0","0","0"};//保存木料信息

stringsty[5]={"0","0","0","0","0"};//保存样式信息

stringtemp,temp1="0",temp2="0",temp3="0";//临时寄存字符

intcou_temp;floatp_temp;//临时记录初始值

intloop_sw=0;//事件标记点为0时不跳过非0时跳过

//提示性语句

cout<<"现在对3种商品\n衬衣(shirt),帽子(cap),立柜(wardrobe)\n实现基本管理功能"<

cout<<"即将录入商品名称(也可以是括号中的英文)输入0结束"<

while(cho!

=0)//分类输入

{

cout<<"输入商品名称";

cin>>temp;

cho=choose(temp);

if(cho==1){//shirt->placematerial

if(si==5){cout<<"超过最大数量输入限制,跳出";continue;}//溢出保护

cout<<"设置衬衣的单价:

";cin>>p_temp;//设置帽子单价

cout<<"输入产地布料初始数量并以空格隔开"<>temp1>>temp2>>cou_temp;

for(i=0;i<=si;i++)//用于判断是否与之前输入的有冲突

if(temp1==pla_shi[i]&&temp2==s_mat[i]){

if(p_temp!

=psi[si]){cout<<"价格冲突,输入最终价格:

";cin>>psi[si];}

cout<<"与之前输入的商品重复,将数量叠加"<

if(loop_sw==0){

psi[si]=p_temp;pla_shi[si]=temp1;s_mat[si]=temp2;cou_shi[si++]=cou_temp;}//赋值工作

cou_temp=0;//扫尾清零工作

loop_sw=0;//同上

}

if(cho==2){//cap->placematerialstyle

if(ci==5){cout<<"超过最大数量输入限制,跳出";continue;}

cout<<"设置帽子单价:

";cin>>p_temp;//

cout<<"输入产地布料样式初始数量并以空格隔开"<>temp1>>temp2>>temp3>>cou_temp;

for(i=0;i<=ci;i++)

if(temp1==pla_cap[i]&&temp2==c_mat[i]&&temp3==sty[i]){

if(p_temp!

=pci[ci]){cout<<"价格冲突,输入最终价格:

";cin>>pci[ci];}

cout<<"与之前输入的商品重复,将数量叠加"<

if(loop_sw==0){

pci[ci]=p_temp;pla_cap[ci]=temp1;c_mat[ci]=temp2;sty[ci]=temp3;cou_cap[ci++]=cou_temp;}

cou_temp=0;

loop_sw=0;

}

if(cho==3){//wardrobe->placewoodcolor

if(wi==5){cout<<"超过最大数量输入限制,跳出";continue;}

cout<<"设置立柜单价:

";cin>>p_temp;

cout<<"输入产地木料颜色初始数量并以空格隔开"<>temp1>>temp2>>temp3>>cou_temp;

for(i=0;i<=wi;i++)

if(temp1==pla_war[i]&&temp2==woo[i]&&temp3==col[i]){

if(p_temp!

=pwi[wi]){cout<<"价格冲突,输入最终价格:

";cin>>pwi[wi];}

cout<<"与之前输入的商品重复,将数量叠加"<

if(loop_sw==0){

pwi[wi]=p_temp;pla_war[wi]=temp1;woo[wi]=temp2;col[wi]=temp3;cou_war[wi++]=cou_temp;}

cou_temp=0;

loop_sw=0;

}

if(cho==7)cout<<"输入有误重新";

}

cho=1;//选择计数器重新设置

//开始初始化工作

shirts_[5]={

shirt(psi[0],cou_shi[0],pla_shi[0],s_mat[0]),

shirt(psi[1],cou_shi[1],pla_shi[1],s_mat[1]),

shirt(psi[2],cou_shi[2],pla_shi[2],s_mat[2]),

shirt(psi[3],cou_shi[3],pla_shi[3],s_mat[3]),

shirt(psi[4],cou_shi[4],pla_shi[4],s_mat[4])

};

capc_[5]={

cap(pci[0],cou_cap[0],pla_cap[0],c_mat[0],sty[0]),

cap(pci[1],cou_cap[1],pla_cap[1],c_mat[1],sty[1]),

cap(pci[2],cou_cap[2],pla_cap[2],c_mat[2],sty[2]),

cap(pci[3],cou_cap[3],pla_cap[3],c_mat[3],sty[3]),

cap(pci[4],cou_cap[4],pla_cap[4],c_mat[4],sty[4])

};

wardrobew_[5]={

wardrobe(pwi[0],cou_war[0],pla_war[0],woo[0],col[0]),

wardrobe(pwi[1],cou_war[1],pla_war[1],woo[1],col[1]),

wardrobe(pwi[2],cou_war[2],pla_war[2],woo[2],col[2]),

wardrobe(pwi[3],cou_war[3],pla_war[3],woo[3],col[3]),

wardrobe(pwi[4],cou_war[4],pla_war[4],woo[4],col[4])

};

//输入部分结束

//============================功能部分

inttotal=0,totalcap=0,totalshi=0,totalwar=0;//用于累计库存总数

floatptotal=0.00,stotal=0.00,ctotal=0.00,wtotal=0.00;//用于累计总价值

intj=0;

cout<<"初始化结束启用基本功能"<

cout<<"输入+或in或入库实现入库功能"<

cout<<"输入-或out或出库实现出库功能"<

while(cho!

=0){

if(loop_sw==0){cout<<"请输入相应功能:

";cin>>temp;

cho=choose(temp);}

if(cho==7)cout<<"输入有误重新";

if(cho==4){//查询功能

for(i=0;i

for(i=0;i

for(i=0;i

for(i=0;i<5;i++){

total+=total_count(c_[i],s_[i],w_[i]);

ptotal+=(s_[i].total_price()+c_[i].total_price()+w_[i].total_price());

stotal+=s_[i].total_price();

ctotal+=c_[i].total_price();

wtotal+=w_[i].total_price();

totalcap+=c_[i].r_count();

totalshi+=s_[i].r_count();

totalwar+=w_[i].r_count();

}

cout<<"\n衬衣总库存:

"<

"<

"<

"<

"<

"<

"<

"<

if(loop_sw==1)break;

}

if(cho==5){//入库

while(cho!

=0){

cout<<"输入要入库的商品种类(输入0结束):

";cin>>temp;

cho=choose(temp);

if(cho)cout<

if(cho==1){

for(i=0;i

cout<<"\n编号"<

"\t布料:

"<

cout<<"\n输入商品编号:

";cin>>j;

if(si==0){cout<<"无商品"<

else{

while(j<0||j>=si){cout<<"有误重新输入:

";cin>>j;}

cout<<"入库数量:

";cin>>cou_temp;s_[j].in_something(cou_temp);

}

}

if(cho==2){

for(i=0;i

cout<<"\n编号"<

"<

<<"样式:

"<

if(ci==0){cout<<"无商品"<

else{

cout<<"\n输入商品编号:

";cin>>j;

while(j<0||j>=ci){cout<<"有误重新输入:

";cin>>j;}

cout<<"入库数量:

";cin>>cou_temp;c_[j].in_something(cou_temp);

}

}

if(cho==3){

for(i=0;i

cout<<"\n编号"<

"<

<<"颜色:

"<

if(ci==0){cout<<"无商品"<

else{

cout<<"\n输入商品编号:

";cin>>j;

while(j<0||j>=wi){cout<<"有误重新输入:

";cin>>j;}

cout<<"入库数量:

";cin>>cou_temp;w_[j].in_something(cou_temp);

}

}

if(cho==7)cout<<"有误重新";

}

cho=5;

}

if(cho==6){//出库

while(cho!

=0){

cout<<"输入要出库的商品种类(输入0结束):

";cin>>temp;

cho=choose(temp);

if(cho)cout<

if(cho==1){

for(i=0;i

cout<<"\n编程"<

"\t布料:

"<

cout<<"\n输入商品编号:

";cin>>j;

while(j<0||j>=si){cout<<"有误重新输入:

";cin>>j;}

cout<<"出库数量:

";cin>>cou_temp;s_[j].out_something(cou_temp);

}

if(cho==2){

for(i=0;i

cout<<"\n编程"<

"<

<<"样式:

"<

cout<<"\n输入商品编号:

";cin>>j;

while(j<0||j>=ci){cout<<"有误重新输入:

";cin>>j;}

cout<<"出库数量:

";cin>>cou_temp;c_[j].out_something(cou_temp);

}

if(cho==3){

for(i=0;i

cout<<"\n编程"<

"<

<<"颜色:

"<

cout<<"\n输入商品编号:

";cin>>j;

while(j<0||j>=wi){cout<<"有误重新输入:

";cin>>j;}

cout<<"出库数量:

";cin>>cou_temp;w_[j].out_something(cou_temp);

}

if(cho==7)cou

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1