物品库存管理源代码.docx

上传人:b****8 文档编号:24000235 上传时间:2023-05-23 格式:DOCX 页数:43 大小:22.18KB
下载 相关 举报
物品库存管理源代码.docx_第1页
第1页 / 共43页
物品库存管理源代码.docx_第2页
第2页 / 共43页
物品库存管理源代码.docx_第3页
第3页 / 共43页
物品库存管理源代码.docx_第4页
第4页 / 共43页
物品库存管理源代码.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

物品库存管理源代码.docx

《物品库存管理源代码.docx》由会员分享,可在线阅读,更多相关《物品库存管理源代码.docx(43页珍藏版)》请在冰豆网上搜索。

物品库存管理源代码.docx

物品库存管理源代码

/********物品库存管理********/

//fileoperations

#include

#include

#include

#include

#include

#include

#include

#include

#include//exit

(1)

#defineMAXNUM10//运用宏定义,规定品牌数最大为10

time_ttimer;

inlineistream&Flush(istream&stream)//清空缓冲区的函数。

可以解决过多输入

{

stream.clear();

intchars_to_skip=stream.rdbuf()->in_avail();

returnstream.ignore(chars_to_skip);

}

classBrand//品牌类

{

private:

charbrnd_name[20];//品牌名称

intBrand_code;//品牌代号

intquantity;//数量

floatbrnd_price;//价格

public:

Brand(){quantity=0;strcpy(brnd_name,

friendclassCItem;//定义友元类

friendclassCNode;

friendclassCList;

};

classCItem//品种类

{

private:

charItem_name[10];//品种名称

intItem_code;//品种代号

charcolour[10];//颜色

intquantity;//数量

个品牌MAXNUM最多//Brandbrnd[MAXNUM];

intnBrnd;//品牌的数量(

public:

CItem(){strcpy(Item_name,\//缺省构造函数

CItem(char*name){strcpy(Item_name,name);Item_code=0;}//用品种名称构造

CItem(intcode){Item_code=code;strcpy(Item_name,\//用品种代码构造

intSetItem(intn=0);//置品种数据,正确返回1,当n为1时,是新进货物,输出至出清单文件

char*GetItemName(){returnItem_name;}//返回品种名

intGetItemCode(){returnItem_code;}//返回品种代码

intCompare(CItem&);//比较品种名称,供查找用,比较结果为1,0

intCompareCode(CItem&);//比较品种代码,比较结果为1,0

voidShow();//显示品种数据

voidOutModify();//出货,修改结点中的数据部分

voidInModify();//已有商品,再次进货,修改结点中的数据部分

};

classCNode//结点类

{

private:

CNode*pNext;//指向链表下一结点的指针

CItem*pData;//用于指向数据类的指针

public:

CNode(){pData=0;pNext=0;}//结点构造函数

CNode(CNode&node)//用于拷贝的构造函数

{

pData=node.pData;

pNext=node.pNext;

}

voidInputData(CItem*pSal){pData=pSal;}//输入数据

voidShowNode(){pData->Show();}//输出结点中的数据

CItem*GetData(){returnpData;}//返回下一结点的指针

friendclassCList;//定义链表类为友元类

};

classCList//定义链表类

{

protected:

CNode*pHead;//链表头结点指针

public:

CList(){pHead=0;}

~CList(){DeleteList();}

voidAddNode(CNode*pnode);//首部添加结点

CNode*DeleteNode(CNode*);//删除一个指定的结点,返回该结点的指针

CNode*LookUp(CItem&);/*查找一个指定的数据,返回该数据所在结点在链表中的指针,若未找

到返回0*/

voidShowList();//打印整个链表

voidDeleteList();//删除整个链表

CNode*GetListHead(){returnpHead;}//返回链表首结点

CNode*GetListNextNode(CNode*);//返回链表指定结点的下一个结点

voidInsert(CNode*);//按代码的顺序插入一个结点

};

classcustomer//仿品牌类增加客户类

{

private:

charcustomer_name[10];//客户姓名

intcustomer_code;//客户代码

charcustomer_tel[15];//客户电话

charcustomer_Item_name[10];//客户选择的品种名称

charcustomer_brnd_name[20];//客户选择的品牌名称

voidgetdata();

voidshowdata();

public:

voidadd();//新增

voidremove();//移除

voidsearch();//搜索

voidshowab();//显示

friendclassCItem;//定义友元类

friendclassBrand;

};

intCItem:

:

Compare(CItem&pitem)//比较品种名称,供查找用,比较结果为1,0

{

intn;

n=strcmp(Item_name,pitem.Item_name);//两个字符串相等,n=0

if(n!

=0)return0;

elsereturn1;

}

intCItem:

:

CompareCode(CItem&pitem)//比较品种代码,比较结果为1,0

{

return(Item_code==pitem.Item_code);

}

intCItem:

:

SetItem(intn)//置品种数据,正确返回1,当n为1时,是新进货物,输出至出清单文件

{

cout<<\

输入商品名称:

;

Flush(cin);//把输入流固化,不会对程序造成太大的影响

cin.getline(Item_name,20);

cout<<\

输入商品代码:

;

cin>>Item_code;

cout<<\

输入商品颜色:

;

Flush(cin);

cin.getline(colour,20);

cout<<\

输入品牌数:

<<(不超过?

?

塁啎?

尼个);

cin>>nBrnd;

//循环实现品牌数据的输入,count为商品总数

for(inti=0,count=0;i

{

cout<<\

输入品牌?

椼?

?

的数据\n;

cout<<\

输入品牌名称:

;

Flush(cin);

cin.getline(brnd[i].brnd_name,20);

cout<<\

输入品牌代码:

;

cin>>brnd[i].Brand_code;

cout<<\

输入数量:

;

cin>>brnd[i].quantity;

cout<<\

输入价格:

;

cin>>brnd[i].brnd_price;

voidcustomer:

:

getdata();

count+=brnd[i].quantity;

}

quantity=count;

if(n==1)

{

景瑳敲浡映汩?

进货清单.txt,ios:

:

out|ios:

:

ate);

if(!

file)

{

潣瑵?

错误,不能打开文件.;

getch();

exit

(1);

}

timer=time(NULL);

file<

楦敬?

品种?

尼屜屴?

代码?

尼屜屴?

颜色<<\

;

file<

;

<<\

;

价格?

尼屜屴?

数量?

尼屜屴?

代码?

尼屜屴?

品牌楦敬?

for(inti=0;i

{

file<

<

;

}

file<<\

;

file.close();

}

return1;

}

voidCItem:

:

Show()//显示品种数据

{

潣瑵?

品种?

尼屜屴?

代码?

尼屜屴?

颜色<<\

;

cout<

;

潣瑵?

品牌?

尼屜屴?

代码?

尼屜屴?

数量?

尼屜屴?

价格<<\

;

for(inti=0;i

{

cout<

<

;

}

cout<<\

\n<

system(pause);//命令行上输出一行类似于“pressanykeytoexit”的字,等待用户按一个键,然后返回

cout<<\

;

}

voidCItem:

:

OutModify()//出货,修改结点中的数据部分

{

intchoice,count,chuhuo;

floatprice=0;//chuhuo为出货量,price为总价格

int*num;

num=newint[nBrnd];

if(quantity==0)

{

潣瑵?

数量为0.;

exit

(1);//随时结束程序

}

for(inti=0;i

{

num[i]=brnd[i].quantity;

}

潣瑵?

品牌?

尼屜屴?

代码?

尼屜屴?

数量?

尼屜屴?

价格<<\

;

for(i=0;i

{

cout<

<

;

}

cout<<\

\n;

潣瑵?

输入数字选择出货商品或按0退出.\n;

cin>>choice;

while(choice>=1&&choice<=nBrnd)

{

潣瑵?

输入商品数量:

;

cin>>count;

while(count>brnd[choice-1].quantity)

{

潣瑵?

库存不足,重新输入:

;

cin>>count;

}

brnd[choice-1].quantity-=count;

潣瑵?

出货成功,按0退出或按数字继续出货.\n;

cin>>choice;

}

景瑳敲浡映汩?

出货清单.txt,ios:

:

out|ios:

:

ate);

if(!

file)

{

潣瑵?

错误,不能打开文件.;

getch();

exit

(1);

}

timer=time(NULL);

file<

楦敬?

品种?

尼屜屴?

代码?

尼屜屴?

颜色<<\

;

file<

\n;

楦敬?

品牌?

尼屜屴?

代码?

尼屜屴?

价格?

尼屜屴?

出货量<<\

;

for(i=0;i

{

if(chuhuo=num[i]-brnd[i].quantity)

{

price=chuhuo*brnd[i].brnd_price;

file<

<

;

}

}

楦敬?

总价格为:

<

\n;

delete[]num;

file.close();

}

voidCItem:

:

InModify()//已有商品,再次进货,修改结点中的数据部分

{

charname[20];

charchoice;

intcount,jinhuo=0;

intprenBrnd=nBrnd;//原先品牌数

intn=1;//用于判断是否继续进货

intflag=0;//用于判断是否新品牌

int*num;

num=newint[prenBrnd];

for(inti=0;i

{

num[i]=brnd[i].quantity;

}

while(n)

{

cout<<\

\n输入品牌名称:

;

Flush(cin);

cin.getline(name,20);

for(inti=0;i

{

if(strcmp(brnd[i].brnd_name,name)==0)

{

cout<<\

\n输入进货数量:

;

cin>>count;

brnd[i].quantity+=count;

quantity+=count;

flag=1;

break;

}

}

if(flag==0)

{

strcpy(brnd[nBrnd].brnd_name,name);

cout<<\

输入品牌代码:

;

cin>>brnd[nBrnd].Brand_code;

:

;

输入数量cout<<\

cin>>brnd[nBrnd].quantity;

cout<<\

输入价格:

;

cin>>brnd[nBrnd].brnd_price;

quantity+=brnd[nBrnd].quantity;

nBrnd++;

}

cout<<\

继续进货:

y/n;

cin>>choice;

if(choice=='y'||choice=='Y')

n=1;

elsen=0;

}

景瑳敲浡映汩?

进货清单.txt,ios:

:

out|ios:

:

ate);

if(!

file)

{

潣瑵?

错误,不能打开文件.;

getch();

exit

(1);

}

timer=time(NULL);

file<

楦敬?

品种?

尼屜屴?

代码?

尼屜屴?

颜色<<\

;

file<

\n;

楦敬?

品牌?

尼屜屴?

代码?

尼屜屴?

价格?

尼屜屴?

进货量<<\

;

for(i=0;i

{

if(jinhuo=brnd[i].quantity-num[i])

{

file<

<

;

}

}

if(nBrnd>prenBrnd)

{

for(i=prenBrnd;i

{

file<

<

;

}

}

file<<\

\n;

delete[]num;

file.close();

}

voidCList:

:

AddNode(CNode*pnode)//首部添加结点

{

if(pHead==0)

{

pHead=pnode;

pnode->pNext=0;

}

else

{

pnode->pNext=pHead;

pHead=pnode;

}

}

CNode*CList:

:

DeleteNode(CNode*pnode)//删除一个指定的结点,返回该结点的指针

{

if(pnode==pHead)//删除的结点是链表的首结点

{

pHead=pnode->pNext;

pnode->pNext=0;

}

else

{

CNode*p=pHead;

while(p->pNext!

=pnode)

p=p->pNext;

p->pNext=pnode->pNext;//删除结点后将前后两个结点再连结起来

pnode->pNext=0;

}

return(pnode);

}

CNode*CList:

:

LookUp(CItem&pitem)/*查找一个指定的数据,返回该数据所在结点在链表中的指针,若未找

到返回0*/

{

CNode*pn=pHead;

if(pitem.GetItemCode()==0)

{

while(pn)

{

if(pn->pData->Compare(pitem))returnpn;//按品种名称查找

pn=pn->pNext;

}

}

else

{

while(pn)

{

if(pn->pData->CompareCode(pitem))returnpn;//按品种代码查找

pn=pn->pNext;

}

}

return0;

}

voidCList:

:

ShowList()//打印整个链表

{

CNode*p=pHead;

while(p)

{

p->pData->Show();

p=p->pNext;

}

}

voidCList:

:

DeleteList()//删除整个链表

{

CNode*p,*q;

p=pHead;

while(p)

{

deletep->pData;

q=p;

p=p->pNext;

deleteq;

}

}

CNode*CList:

:

GetListNextNode(CNode*pnode)//返回链表指定结点的下一个结点

{

returnpnode->pNext;

}

按代码的顺序插入一个结点voidCList:

:

Insert(CNode*pnode)//

{

CNode*p1,*p2;

if(pHead==0)

{

pHead=pnode;

pnode->pNext=0;

}

elseif(pHead->pData->GetItemCode()>=pnode->pData->GetItemCode())

{

pnode->pNext=pHead;

pHead=pnode;

}

else

{

p2=p1=pHead;

while(p2->pNext&&p2->pData->GetItemCode()pData->GetItemCode())

{

p1=p2;

p2=p2->pNext;

}

if(p2->pData->GetItemCode()pData->GetItemCode())

{

p2->pNext=pnode;

pnode->pNext=0;

}

else

{

pnode->pNext=p2;

p1->pNext=pnode;

}

}

}

voidcustomer:

:

getdata()//获取客户资料

{

cout<<\

输入客户名称:

;

cin.getline(customer_name,10);

cout<<\

输入客户代码:

;

cin>>customer_code;

cout<<\

输入客户电话:

;

cin>>customer_tel;

cout<<\

输入客户选择的品种名称:

;

Flush(cin);

cin.getline(customer_Item_name,10);

:

;输入客户选择的品牌名称cout<<\

cin.getline(customer_brnd_name,10);

}

voidcustomer:

:

showdata()//显示客户资料

{

cout<<\

客户名称:

;

cout<

cout<<\

客户代码:

;

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

当前位置:首页 > 高等教育 > 农学

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

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