




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#includeconst int N=5;struct PRODUCT int code;/商品代码 char name20;/商品名称 double price;/单价 int amount;/商品数量 int sales;/销售量 int stock;/商品的库存量proN;void input(struct PRODUCT *p);void sort1(int stock,int sales);/冒泡法按商品的库存量排序void sort2(int code);/选择法按商品代码排序void search1();/选择法按商品库存量查询void search2(int code);/折半法按商品代码查询void out();void main()int code;struct PRODUCT *p;input(p);int ch;docout按库存量排序, 请选择: 1 endl;cout按商品代码排序,请选择: 2 endl;cout按商品代码查询,请选择: 3 endl;cout按库存量查询, 请选择: 4 endl;cout显示商品信息, 请选择: 5 endl; cout结束程序, 请选择: 6 ch;switch (ch) case 1:sort1(proN.stock,proN.sales); break; case 2:sort2(proN.code);break; case 3: coutcode; search2(code); break; case 4:search1();break; case 5:out();break; case 6:0;break; default:cout您的输入有错endl;while(ch!=6);void input(struct PRODUCT *P)cout输入英文的时候,请以?为结束标志endlendl;for(int i=0;iN;i+)coutproi.code;cin.getline(,10,?);cinproi.priceproi.amountproi.sales;proi.stock=proi.amount-proi.sales;void sort1(int stock,int sales)/冒泡法按商品的库存量排序struct PRODUCT t;for(int i=0;iN-1;i+)for(int j=0;jproj+1.stock) t=proj;proj=proj+1;proj+1=t;for(i=0;iN-1;i+)for(int j=0;jproj+1.sales) t=proj;proj=proj+1;proj+1=t; coutcodetnametpricetamounttsaleststockendl; for(i=0;iN;i+)tproi.pricetproi.amounttproi.salestproi.stockendl;void sort2(int code)/选择法按商品代码排序struct PRODUCT t;for(int i=0;iN-1;i+) for(int j=i+1;jproj.code) t=proi;proi=proj;proj=t; coutcodetnametpricetamounttsaleststockendl;for(i=0;iN;i+)tproi.pricetproi.amounttproi.salestproi.stockendl; void search1()/选择法按商品库存量查询int stock1,stock2;coutstock1stock2;coutcodetnametpricetamounttsaleststockendl; for(int i=stock1;i=stock2;i+) for(int j=0;jN;j+) if(i=proj.stock)break; if(j=N) cout; else tproj.pricetproj.amounttproj.salestproj.stockendl; cout如果没有显示则无此商品信息endl;void search2(int code)/折半法按商品代码查询 struct PRODUCT t;for(int i=0;iN-1;i+)for(int j=0;jproj+1.code) t=proj;proj=proj+1;proj+1=t;int top=0,bottom=N-1,middle=(top+bottom)/2;/折半法查找商品代码while(toppromiddle.code)top=middle+1;else bottom=middle-1;middle=(top+bottom)/2;if(code=promiddle.code)coutcodetnametpricetamounttsaleststockendl;tpromiddle.pricetpromiddle.amounttpromiddle.salestpromiddle.stockendl;elsecout没有您要找的商品endl;void out()coutcodetnametpricetamounttsaleststockendl;for(int i=0;iN;i+)tproi.pricetproi.amounttproi.salestproi.stockendl;#include #include #include using namespace std;class Goodsprivate:string name;/商品名 double price;/商品价格 int storage;/商品存量 public:double sell(int num);/出售商品,减少本商品的存量同时返回出售商品的总价,失败返回-1 double buy(int num);/购买商品,减少本商品的存量同时返回购买商品的总价bool isEmpty();void show();bool operator =(string name);/重载等号运算符,用来进行商品是否重复的比较 Goods(string name,double price);/构造 ;class GoodsManagerprivate:vector goods_list;/商品列表 double account;/账户余额 public:bool add(string name,double num);/添加新商品,不可重名,成功则商品被加入列表同时返回true,失败返回false bool sell(string name,int num);/出售商品,成功则商品存量减少,账户余额增加同时返回true,失败返回false bool buy(string name,int num);/购买商品,成功则商品存量增加,账户余额减少同时返回true,失败返回false bool del(string name);/删除商品,商品数量不为0时不可删除 void show();GoodsManager();void menu()cout1.添加商品endl;cout2.删除商品endl;cout3.出售商品endl;cout4.购入商品endl;cout5.查看库存endl;cout0.退出程序endl;int main()GoodsManager gm;char order;while(1)system(cls);menu();coutorder;switch(order)case 1:/添加 string name;double price;coutname;coutprice;if(gm.add(name,price)coutsuccess!endl;elsecoutfailed!endl;getch();break;case 2:/删除 string name;coutname;if(gm.del(name)coutsuccess!endl;elsecoutfailed!endl;getch();break;case 3:/出售 string name;int num;coutname;coutnum;if(gm.sell(name,num)coutsuccess!endl;elsecoutfailed!endl;getch();break;case 4:/购入 string name;int num;coutname;coutnum;if(gm.buy(name,num)coutsuccess!endl;elsecoutfailed!endl;getch();break;case 5:/查看 gm.show();getch();break;case 0:/退出 exit(0);break;default:coutwrong order!endl;break; return 0;double Goods:sell(int num)if(storagenum)return -1;storage-=num;return price*num;double Goods:buy(int num)storage+=num;return price*num;bool Goods:isEmpty()return 0=storage;void Goods:show()coutnametpricetstoragename=name;Goods:Goods(string name,double price)this-name=name;this-price=price;storage=0;bool GoodsManager:add(string name,double num)vector:iterator result = find(goods_list.begin(),goods_list.end(),name); if(goods_list.end()=result)goods_list.push_back(Goods(name,num);return true;elsereturn false;bool GoodsManager:sell(string name,int num)vector:iterator result = find(goods_list.begin(),goods_list.end(),name); if(goods_list.end()!=result&!result-isEmpty()double count=result-sell(num);if(count0)return false;account+=count;return true;elsereturn false;bool GoodsManager:buy(string name,int num)vector:iterator result = find(goods_list.begin(),goods_list.end(),name); if(goods_list.end()!=result)double count=result-buy(num);account-=count;return true;elsereturn false;bool GoodsManager:del(string name)vector:iterator result = find(goods_list.begin(),goods_list.end(),name);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年法律处长培训课件 EPC合同4篇
- 新解读《GB-T 31093-2014蓝宝石晶锭应力测试方法》
- SEO外包合同范本
- 全款租房合同范本
- 锯片修磨合同范本
- 餐饮加盟占股合同范本
- 富力购房合同范本
- 志远课堂奥数题目及答案
- 金融科技创新趋势报告
- 文化艺术节目创意策划方案
- 电力营销考试题库
- 护理专业实训室设备管理制度
- TB-T 3356-2021铁路隧道锚杆-PDF解密
- 2024届陕西省渭南市临渭区小升初语文重难点模拟卷含答案
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 配电自动化终端缺陷处理
- 《电力系统治安反恐防范要求 第4部分:风力发电企业》
- 小区物业接管方案
- 《生产部月报模板》课件
- 骨质疏松性骨折应对策略骨折联络服务研究进展及应用探讨
- 公差配合课件
评论
0/150
提交评论