📄 goodsapp.cpp
字号:
//Goods, list, listIterator类使用示例
#include <iostream.h>
#include "goods.h"
#include "list_link.h"
void init(list<Goods> &lst)
{
//用list::add()建表
int m,flag;
listiterator<Goods> iterlst(lst);
Goods gds;
do {
cout<<"请再输入结点数(>0):"; cin>>m;
}while (m<=0);
for (;m>0;m--) {
cin>>gds;
while(gds.GetValue()<=0){
cout<<"请输入结点数据(数量应大于0):";
cin>>gds;
}
//用遍历器判定表中是否已经存在该名称的货物
for (flag=0,iterlst.init();!flag&&!iterlst;++iterlst)
if (iterlst().GetName()==gds.GetName()) {
flag=1; break;
}
if (flag) {
//表中已经存在该货物名称,可作数量相加
cout<<gds.GetName()<<"在本库存已经存在,是否增加数量?(y表示增加数量)";
char yorn='n';
cin>>yorn;
if (yorn=='y'||yorn=='Y')
iterlst=iterlst()+gds.GetValue();
//调用(1)Goods Goods::operator+(int cnt);
// (2)void Goods::operator=(Goods &v);
//请分析Goods中对+和=的重载是否必要,可否不要?
}
else iterlst.addafter(gds);
}
cout<<"当前结点数据:"<<endl;
for (iterlst.init();!iterlst;++iterlst) {
cout<<iterlst()<<endl;
}
}
void query(list<Goods> &lst)
{
int flag;
char c;
string g;
listiterator<Goods> iter(lst);
if(!iter)
{
cout<<"本店现有货品: "<<endl;
do{
for(iter.init();!iter;++iter)
cout<<iter()<<endl;
cout<<"请输入要查询的货品: ";
cin>>g;
for (flag=0,iter.init();!flag && !iter;++iter)
if(iter().GetName()==g)
{
flag=1;break;
}
if(flag)
{
cout<<iter()<<endl;
cout<<"是否继续查找?(Y继续,N结束)";
}
else{
cout<<"对不起,本店没有你要的货品,我们已经记录了你的需求,请你明天来采购!谢谢!"<<endl;
cout<<"是否继续查找?(Y继续,N结束)";
}cin>>c;
}while(c=='Y'||c=='y');
}
else
cout<<"对不起,仓库无存货 ";
}
void input(list<Goods> &lst)
{
int flag,i;
char c;
Goods g;
string s;
listiterator<Goods> iter(lst);
cout<<"本店现有货品: "<<endl;
do{
for (iter.init();!iter;++iter)
cout<<iter()<<endl;
cout<<"请输入进货货品的名称: ";
cin>>s;
cout<<"请输入数量:";
cin>>i;
for (flag=0,iter.init();!flag&&!iter;++iter)
// if (iter().GetName()==g.GetName())
if (iter().GetName()==s)
{
flag=1;break;
}
if(flag)
{
// iter=iter()+g.GetValue();
iter=iter()+i;
cout<<"现有存货: ";
cout<<iter();
cout<<"是否继续进货?(Y继续,N结束)";
}
else
{
cout<<"您输入的物品名称在本库现有的库存还没有,是否增加货品?(y表示继续,n表示结束)"<<endl;
char n;
cin>>n;
if(n=='Y'||n=='y')
{
cout<<"请输入进货货品的名称: ";
cin>>s;
cout<<"请输入数量:";
cin>>i;
Goods g(s,i);
iter.addafter(g);
cout<<"是否继续进货?(Y继续,N结束)";
}
}
cin>>c;
}while(c=='Y'||c=='y');
}
void output(list<Goods> &lst)
{
int flag,i;
char c;
Goods g;
string s;
listiterator<Goods> iter(lst);
do{
cout<<"本店现有货品:"<<endl;
for (iter.init();!iter;++iter)
cout<<iter()<<endl;
cout<<"请输入出货";
cin>>s;
cout<<"请输入数量:";
cin>>i;
for (flag=0,iter.init();!flag&&!iter;++iter)
// if (iter().GetName()==g.GetName())
if (iter().GetName()==s)
{
flag=1; break;
}
if(flag)
// if(iter().GetValue()>=g.GetValue())
if(iter().GetValue()>=i)
{
// iter=iter()-g.GetValue();
iter=iter()-i;
cout<<iter();
}
else cout<<"库存量不足,不能出货"<<endl;
else cout<<"库存中无此物品,不能出货"<<endl;
cout<<"是否继续出货(y继续,n结束)";
cin>>c;
}while(c=='Y'||c=='y');
}
void del(list<Goods> &lst)
{
int flag;
char c;
string g;
listiterator<Goods> iter(lst);
do{
cout<<"本店现有货品:"<<endl;
for (iter.init();!iter;++iter)
cout<<iter()<<endl;
cout<<"请输入销货货品名称:";
cin>>g;
for (flag=0,iter.init();!flag&&!iter;++iter)
if (iter().GetName()==g)
{
flag=1; break;
}
if(flag)
if(iter().GetValue()==0)
iter.removecurrent();
else cout<<"现存货品存货未清空,不能销货!"<<endl;
else cout<<"库存中无此物品,不能销货!"<<endl;
cout<<"是否继续销货(y继续,n结束)";
cin>>c;
}while(c=='Y'||c=='y');
}
void main(){
list<Goods> linklist;
int m=0,flag,choice;
cout<<"*库存信息管理系统*"<<endl;
cout<<"请先对库存数据进行初始化!"<<endl;
do {
cout<<"*库存信息管理系统*"<<endl;
cout<<"请选择操作:"<<endl;
cout<<"0 --------- 退出本系统"<<endl;
cout<<"1 --------- 初始化库存数据"<<endl;
cout<<"2 --------- 查询"<<endl;
cout<<"3 --------- 进货"<<endl;
cout<<"4 --------- 出货"<<endl;
cout<<"5 --------- 销货"<<endl;
cout<<"请输入您的选择:"; cin>>choice;
switch (choice) {
case 0 : flag=0; break;
case 1 : if (!m) {init(linklist); m=1; }
else {
cout<<"你已经进行了初始化处理,重新初始化将失去原有数据,继续吗?(y表示进行初始化)";
char yorn='n';
cin>>yorn;
if (yorn=='y'||yorn=='Y') init(linklist);
}
break;
case 2 : if (m) query(linklist);
else cout<<"请先进行数据初始化处理!"<<endl;
break;
case 3 : if (m) input(linklist);
else cout<<"请先进行数据初始化处理!"<<endl;
break;
case 4 : if (m) output(linklist);
else cout<<"请先进行数据初始化处理!"<<endl;
break;
case 5 : if (m) del(linklist);
else cout<<"请先进行数据初始化处理!"<<endl;
break;
default: cout<<"对不起,没有对应操作,请重新选择!"<<endl;
}
}while(flag);
cout<<"谢谢您使用本系统,再见!"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -