




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+程序设计上机实验题目:假设某商店有如下几种货品:衬衣、帽子、立柜。每一种货物都有与其关联的说明信息。衬衣:单价、产地、库存量、布料;帽子:单价、产地、库存量、布料、样式(平顶或尖顶);立柜:单价、产地、库存量、木料、颜色。对这些商品的操作有:商品的进库(增加库存量),商品的出库(减少库存量),该类货品总价格的计算。要求自行设计数据结构,用类的继承与派生关系将上述的各种货品表示出来,并使用类的构造函数来初始化每一类对象的初始数据。而后将上述的商品管理计算机化,完成操作要求的功能。【实现方法提示】1设立3 个不同的类来描述与处理3 种不同的货品。首先注意到上述3 种货品数据之间的相互关联关系,
2、可使用C+基类及其派生类的定义方法,先抽象出(“提取”出)如下每一货品都具有的 “公有”数据构成一个所谓的基类base,而后再派生出所需的那3 个类。(1)base(基)类:单价、产地、库存量;(2)由base 作为基类,派生出shirt(衬衣)类:增加“布料”数据;(3)由base 出发,派生出wardrobe(立柜)类:增加“木料”与“颜色”数据;(4)而后又由shirt 类出发(作为基类),派生出cap(帽子)类:增加“样式”数据。2对应于要对各类数据所进行的操作,而设立出类的如下几个成员函数。(1)构造函数通过传递来的实参数据,来构造出每一对象所具有的各数据成员。如基类base 需要传
3、递place、count 与price 三项数据,而派生类shirt 则需在base 数据的基础上增加第四项即布料数据material 等。(2)商品的进库(增加库存量)void in_something(int add_cnt);将对象的库存量count 增加一个数量add_cnt。(3)商品的出库(减少库存量)void out_something(int del_cnt);将对象的库存量count 减少一个数量del_cnt。(4)该类货品总价格的计算double total_price();通过使用“price*count”计算并返回对象所代表货品的总价格。(5)对象数据的输出。在屏幕上
4、显示出对象所拥有的当前数据。 /复杂化要求:1. 各自商品拥有独立特征 独立库存数量、单价和其他特性2. 2.录入功能中(1)需要判断现在输入与以前输入的是否相同 若相同 则叠加库存量(2)在(1)的基础上判断单价是否冲突 若冲突 则要求重新录入3.功能部分要求自由度 并设立查询功能程序如下: #include<iostream>#include<string>using namespace std;class baseprotected: float price; /单价 string place; /产地 int count; /库存量 public: base(f
5、loat &p,int &c,string &pl) price=p; count=c; place=pl; void in_something(int add_cnt) count+=add_cnt; void out_something(int del_cnt) if(del_cnt>count)count=0; /变0保护 小于0的按0计算 else count-=del_cnt; double total_price() return price*count; int r_count() return count; ;class shirt:public
6、baseprotected: string material;public: shirt(float &p ,int &c ,string &pl ,string &m):base( p , c, pl) material=m; void print() cout<<"n衬衣"<<"t产地:"<<place<<"t材料:"<<material <<"n库存量:"<<count<<"
7、;t单价:"<<price<<"t总价格"<<total_price()<<endl; ;class wardrobe:public baseprotected: string wood; string color;public: wardrobe(float &p ,int &c ,string &pl ,string &w ,string &co ):base(p,c,pl) wood=w; color=co; void print() cout<<"
8、n立柜"<<"t产地:"<<place<<"t颜色:"<<color<<"t木料:"<<wood<<"n库存量:" <<count<<"t单价:"<<price<<"t总价格"<<total_price()<<endl; ;class cap:public shirtprotected: string style
9、;public: cap(float &p ,int &c ,string &pl ,string &m,string &st ):shirt(p,c,pl,m) style=st; void print() cout<<"n帽子"<<"t产地:"<<place<<"t材料:"<<material <<"样式:"<<style<<"n库存量:"<<c
10、ount<<"t单价:" <<price<<"t总价格"<<total_price()<<endl; ;int choose(string a) /用于判断下一步执行的命令 0.结束1.衬衣2.帽子3.立柜4.查询5.入库6.出库7.出错重输 if(a="0")return 0; /结束 else if(a="衬衣"|a="shirt")return 1; else if(a="帽子"|a="cap&quo
11、t;)return 2; else if(a="立柜"|a="wardrobe")return 3; else if(a="查询"|a="?"|a="about")return 4; else if(a="入库"|a="+"|a="in")return 5; else if(a="出库"|a="-"|a="out")return 6; else if(a="帮助&qu
12、ot;|a="?"|a="help")return 8; else return 7; int total_count(cap &a,shirt &b,wardrobe &c) return a.r_count()+b.r_count()+c.r_count(); /Powered by X.Duke int main(void)/=输入部分 int cho=1,i; /cho为选择计数器 接收choose函数的返回值 通过if语句判断要执行的语句 int ci=0,wi=0,si=0; /标记 角标 float pci5=0.0
13、0,pwi5=0.00,psi5=0.00; /单价 int cou_cap5=0,0,0,0,0,cou_shi5=0,0,0,0,0,cou_war5=0,0,0,0,0; /依次记录帽子 衬衣 立柜的库存量 string pla_cap5="0","0","0","0","0" /保存帽子产地信息 string pla_war5="0","0","0","0","0" /保存立柜产地信息 s
14、tring pla_shi5="0","0","0","0","0" /保存衬衣产地信息 string col5="0","0","0","0","0" /保存颜色信息 string s_mat5="0","0","0","0","0" /保存衬衣_布料信息 string c_mat5="
15、0","0","0","0","0" /保存帽子_布料信息 string woo5="0","0","0","0","0" /保存木料信息 string sty5="0","0","0","0","0" /保存样式信息 string temp,temp1="0",temp2="0
16、",temp3="0" /临时寄存字符 int cou_temp;float p_temp; /临时记录初始值 int loop_sw=0; /事件标记点 为0时不跳过 非0时跳过 /提示性语句 cout<<"现在对3种商品 n衬衣(shirt),帽子(cap),立柜(wardrobe) n实现基本管理功能"<<endl<<"n=首先进行初始化工作="<<endl; cout<<"即将录入商品名称(也可以是括号中的英文)输入0结束"<<
17、;endl; while(cho!=0) /分类输入 cout<<"输入商品名称" cin>>temp; cho=choose(temp); if(cho=1) /shirt ->place material if(si=5)cout<<"超过最大数量输入限制,跳出"continue; /溢出保护 cout<<"设置衬衣的单价:"cin>>p_temp; /设置帽子单价 cout<<"输入产地 布料 初始数量 并以空格隔开"<<
18、;endl;cin>>temp1>>temp2>>cou_temp; for(i=0;i<=si;i+) /用于判断是否与之前输入的有冲突 if(temp1=pla_shii&&temp2=s_mati) if(p_temp!=psisi)cout<<"价格冲突,输入最终价格:"cin>>psisi; cout<<"与之前输入的商品重复,将数量叠加"<<endl;cou_shii+=cou_temp; loop_sw=1; /由于重复 事件开关打开
19、跳过赋值工作 if(loop_sw=0) psisi=p_temp; pla_shisi=temp1; s_matsi=temp2; cou_shisi+=cou_temp; /赋值工作 cou_temp=0; /扫尾清零工作 loop_sw=0; /同上 if(cho=2) /cap ->place material style if(ci=5)cout<<"超过最大数量输入限制,跳出"continue; cout<<"设置帽子单价:"cin>>p_temp; / cout<<"输入产地
20、布料 样式 初始数量 并以空格隔开"<<endl;cin>>temp1>>temp2>>temp3>>cou_temp; for(i=0;i<=ci;i+) if(temp1=pla_capi&&temp2=c_mati&&temp3=styi) if(p_temp!=pcici)cout<<"价格冲突,输入最终价格:"cin>>pcici; cout<<"与之前输入的商品重复,将数量叠加"<<end
21、l;cou_capi+=cou_temp; loop_sw=1; if(loop_sw=0) pcici=p_temp; pla_capci=temp1; c_matci=temp2; styci=temp3; cou_capci+=cou_temp; cou_temp=0; loop_sw=0; if(cho=3) /wardrobe ->place wood color if(wi=5)cout<<"超过最大数量输入限制,跳出"continue; cout<<"设置立柜单价:"cin>>p_temp; cou
22、t<<"输入产地 木料 颜色 初始数量 并以空格隔开"<<endl;cin>>temp1>>temp2>>temp3>>cou_temp; for(i=0;i<=wi;i+) if(temp1=pla_wari&&temp2=wooi&&temp3=coli) if(p_temp!=pwiwi)cout<<"价格冲突,输入最终价格:"cin>>pwiwi; cout<<"与之前输入的商品重复,将数量叠
23、加"<<endl;cou_wari+=cou_temp; loop_sw=1; if(loop_sw=0) pwiwi=p_temp; pla_warwi=temp1; woowi=temp2; colwi=temp3; cou_warwi+=cou_temp; cou_temp=0; loop_sw=0; if(cho=7)cout<<"输入有误 重新" cho=1; /选择计数器重新设置 /开始初始化工作 shirt s_5= shirt(psi0,cou_shi0,pla_shi0,s_mat0), shirt(psi1,cou_sh
24、i1,pla_shi1,s_mat1), shirt(psi2,cou_shi2,pla_shi2,s_mat2), shirt(psi3,cou_shi3,pla_shi3,s_mat3), shirt(psi4,cou_shi4,pla_shi4,s_mat4) ; cap c_5= cap(pci0,cou_cap0,pla_cap0,c_mat0,sty0), cap(pci1,cou_cap1,pla_cap1,c_mat1,sty1), cap(pci2,cou_cap2,pla_cap2,c_mat2,sty2), cap(pci3,cou_cap3,pla_cap3,c_mat
25、3,sty3), cap(pci4,cou_cap4,pla_cap4,c_mat4,sty4) ; wardrobe w_5= wardrobe(pwi0,cou_war0,pla_war0,woo0,col0), wardrobe(pwi1,cou_war1,pla_war1,woo1,col1), wardrobe(pwi2,cou_war2,pla_war2,woo2,col2), wardrobe(pwi3,cou_war3,pla_war3,woo3,col3), wardrobe(pwi4,cou_war4,pla_war4,woo4,col4) ;/输入部分结束/=功能部分 i
26、nt total=0,totalcap=0,totalshi=0,totalwar=0; /用于累计库存总数 float ptotal=0.00,stotal=0.00,ctotal=0.00,wtotal=0.00; /用于累计总价值 int j=0; cout<<"初始化结束 启用基本功能"<<endl<<"n输入查询或about 查询当前库存情况"<<endl; cout<<"输入+或in或 入库 实现入库功能"<<endl; cout<<&qu
27、ot;输入-或out或 出库 实现出库功能"<<endl; while(cho!=0) if(loop_sw=0)cout<<"请输入相应功能:"cin>>temp; cho=choose(temp); if(cho=7)cout<<"输入有误 重新" if(cho=4) /查询功能 for(i=0;i<si;i+)s_i.print(); for(i=0;i<ci;i+)c_i.print(); for(i=0;i<wi;i+)w_i.print(); for(i=0;i<
28、;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衬衣总库存:"<<t
29、otalshi<<"t价值:"<<stotal<<"n帽子总库存:"<<totalcap<<"t价值:"<<ctotal<<"n立柜总库存:"<<totalwar<<"t价值:"<<wtotal<<"n所有商品库存总量:"<<total<<"t总价值:"<<ptotal<<end
30、l; if(loop_sw=1)break; if(cho=5) /入库 while(cho!=0) cout<<"输入要入库的商品种类(输入0结束):"cin>>temp; cho=choose(temp); if(cho)cout<<temp<<"中有以下小类 输入编号进行入库操作" if(cho=1) for(i=0;i<si;i+) cout<<"n编号 "<<i<<"t产地 "<<pla_shii<
31、< "t布料:"<<s_mati<<"t现有 "<<s_i.r_count(); cout<<"n输入商品编号:"cin>>j; if(si=0)cout<<"无商品"<<endl; else while(j<0|j>=si)cout<<"有误 重新输入:"cin>>j; cout<<"入库数量:"cin>>cou_temp;s
32、_j.in_something(cou_temp); if(cho=2) for(i=0;i<ci;i+) cout<<"n编号 "<<i<<"t产地 "<<pla_capi<<"t布料:"<<c_mati <<"样式:"<<styi<<"t现有 "<<c_i.r_count(); if(ci=0)cout<<"无商品"<<en
33、dl; 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<wi;i+) cout<<"n编号 "<<i<<"t产地 "<<p
34、la_wari<<"t木料:"<<wooi <<"颜色:"<<coli<<"t现有 "<<w_i.r_count(); if(ci=0)cout<<"无商品"<<endl; else cout<<"n输入商品编号:"cin>>j; while(j<0|j>=wi)cout<<"有误 重新输入:"cin>>j; cout&l
35、t;<"入库数量:"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<<temp<<"中有以下小类 输入编号进行出库操作" if(cho=1) for(i=0;i<si;i+) cout<<"n编程 "<<i<<"t产地 "<<pla_shii<< "t布料:"<<s_mati<<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建同安区财政国资直属党委资产管理有限公司招聘1人笔试历年参考题库附带答案详解
- 2025中国广电青海网络股份有限公司招聘7人笔试历年参考题库附带答案详解
- 2025广投集团春季校园招聘230人模拟试卷及答案详解(必刷)
- 2025湖南株洲市工业中等专业学校招聘第一批高层次人才13人考前自测高频考点模拟试题完整答案详解
- 2025福建福州市闽清县机关事务服务中心招聘1人考前自测高频考点模拟试题及答案详解(全优)
- 安全管理培训取证课件
- 2025广西玉林容县公安局第一次公开招聘警务辅助人员23人模拟试卷及完整答案详解1套
- 2025第十三届贵州人才博览会贵阳贵安事业单位引进高层次及急需紧缺人才770人考前自测高频考点模拟试题附答案详解
- 2025昆明市禄劝县教育体育局所属事业单位面向县内学校选调人员(4人)考前自测高频考点模拟试题(含答案详解)
- 2025安徽宣城市广德市国有资产投资经营有限公司下属公司招聘11人考前自测高频考点模拟试题及答案详解(易错题)
- 专卖店店长工作手册知识点梳理汇总
- 企业车辆管理系统解决方案
- 医院培训课件:《医务人员职业暴露与防护》
- 电梯有限空间作业方案
- J-STD-033D处理包装运输和使用湿度回流和过程敏感设备
- 诚实守信 部编版道德与法治八年级上册
- 新村卫生室人员值班表
- 子宫肌瘤手术治疗单病种质控查检表
- 物业管理项目服务报价表
- 2023年06月贵州黔西南州册亨县公开招聘事业单位工作人员(127人)笔试题库含答案解析
- 检验科生化项目SOP
评论
0/150
提交评论