C++物品库存管理Word格式文档下载.docx
《C++物品库存管理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++物品库存管理Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
3.查询商品
4.删除商品
5.商品出库
6.商品进库
0.退出系统
***************************************************
4.设计中所负责的部分————商品的出库与入库部分
intCItem:
:
SetItem(intn)rnd_name,20);
cout<
<
"
\n输入品牌代码:
;
cin>
>
brnd[i].Brand_code;
\n输入数量:
brnd[i].quantity;
\n输入价格:
brnd[i].brnd_price;
count+=brnd[i].quantity;
}
quantity=count;
if(n==1)
{
ofstreamfile("
进货清单.txt"
ios:
out|ios:
ate);
if(!
file)
{
cout<
错误,不能打开文件."
getch();
exit
(1);
}
timer=time(NULL);
file<
ctime(&
timer);
品种"
\t"
代码"
颜色"
\n"
Item_name<
Item_code<
colour<
品牌"
数量"
价格"
for(inti=0;
i<
nBrnd;
i++)
{file<
brnd[i].brnd_name<
brnd[i].Brand_code<
brnd[i].quantity<
brnd[i].brnd_price<
}
();
return1;
此函数的两个功能:
第一个是在添加商品时从键盘输入商品的各种数据,调用这个功能时利用n的缺省值,在调用时不给n赋值;
第二个是在进货时如果进的是新的品种,那么也要从键盘输入这个品种的各种数据,这部分与第一个功能相同,但是进货要输出进货清单,所以进货功能调用该函数时n设置为1,函数在运行时增加一个判断语句,若n为1时,将所键入的数据输出至进货清单。
voidCItem:
Show()rnd_name<
\n\n"
flush;
system("
pause"
);
这个函数也是与出货功能有关,与InModify()的函数类似。
因为是库中的商品出货,所以商品品种必须存在,若不存在,则输出提示信息,出货失败。
还有一种可能是商品品种曾经存在,但已经全部出完了,这时,该品种的各种数据还存在,只是数量为零。
所以,在函数开始执行时要判断库存量是否为零,若为零,则输出提示信息,出货失败。
在出货成功结束时同样要将本品种的各种品牌的出货数据输出到出货清单中。
同样,该函数也是对链表中所存在的结点的数据部分的修改。
OutModify();
exit
(1);
}
for(inti=0;
i++)uantity;
cout<
for(i=0;
i+1<
."
<
输入数字选择出货商品或按0退出.\n"
cin>
choice;
while(choice>
=1&
&
choice<
=nBrnd)
输入商品数量:
count;
while(count>
brnd[choice-1].quantity)
库存不足,重新输入:
cin>
brnd[choice-1].quantity-=count;
出货成功,按0退出或按数字继续出货.\n"
ofstreamfile("
出货清单.txt"
timer=time(NULL);
file<
出货量"
if(chuhuo=num[i]-brnd[i].quantity)
price=chuhuo*brnd[i].brnd_price;
file<
<
chuhuo<
总价格为:
price<
delete[]num;
();
InModify()同样也与进货功能有关。
因为所进的品种可能是也有的品种,只是增加其中的数量而已。
所以,在输入进货品种或品种代码时要判断是否是库中已有的品种,若是就调用这个函数,只从键盘输入具体的品牌数量或新增品牌数据即可,而不用在键入品种的各种数据,同时,新键入的各种数据也输出到进货清单。
实际上该函数是对链表中所存在的结点的数据部分的修改。
此函数先判断出货量是不是大于库存量,如果大于将显示“库存不足,重新输入”。
如果小于的话将会继续程序,通过brnd[choice-1].quantity-=count;
把原有量减去省下剩余量。
InModify()uantity;
while(n)
{cout<
\n\n输入品牌名称:
Flush(cin);
(name,20);
if(strcmp(brnd[i].brnd_name,name)==0)
{
cout<
\n\n输入进货数量:
cin>
brnd[i].quantity+=count;
quantity+=count;
flag=1;
break;
}
if(flag==0)
strcpy(brnd[nBrnd].brnd_name,name);
brnd[nBrnd].Brand_code;
brnd[nBrnd].quantity;
brnd[nBrnd].brnd_price;
quantity+=brnd[nBrnd].quantity;
nBrnd++;
\n继续进货:
y/n"
if(choice=='
y'
||choice=='
Y'
)
n=1;
elsen=0;
Ofstreamfile("
file<
进货量"
prenBrnd;
if(jinhuo=brnd[i].quantity-num[i])
jinhuo<
if(nBrnd>
prenBrnd)
for(i=prenBrnd;
5.课程设计遇到的技术问题与解决思路
1.在实际操作中,可能会因错误而输入错误的字符,这时可能会对程序的正常运行造成影响,所以必须刷新输入流清除储存器中的数据,经过翻阅C语言方面的资料发现使用以下函数就可实现。
inlineistream&
Flush(istream&
stream)
{
intchars_to_skip=()->
in_avail();
return(chars_to_skip);
2.怎样实现按任意键回到主菜单。
为了使程序的可读性和使用的方便性更好,设计程序时,打算增加此功能。
在设计过程中,试图通过一段程序实现,但始终都要输入一个字符后按回车键才行,表面上已经实现了此功能,但其实并没有达到预期的效果。
过了几天,在网上查找相关资料,终于在别人设计的一个小程序里面找到代码,原来只需要在利用库函数里面的一函数system(),当然这里要包含头文件,程序中加入system(“pause”)即可达到要求。
3.为保证程序界面的美观,如何清屏
在图书馆查阅了有关方面的书籍和文献,利用网络资源,使用函数system("
cls"
)即可。
程序完整代码
#include<
#include<
rnd_name,20);
ofstreamfile("
{file<
}
classCNoden"
else
CItempitem;
(reinterpret_cast<
char*>
(&
pitem),sizeof(CItem));
while(!
())
{
p=newCItem;
*p=pitem;
pn=newCNode;
pn->
InputData(p);
(pn);
(reinterpret_cast<
do
\n\t&
物品库存管理系统&
"
\n**********************************************"
\n\n1.添加商品品种"
\n\n2.显示商品品种"
\n\n3.查询商品"
\n\n4.删除商品"
\n\n5.商品出库"
\n\n6.商品进库"
cout