?? 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 + -