C++课程设计商品销售统计.docx
《C++课程设计商品销售统计.docx》由会员分享,可在线阅读,更多相关《C++课程设计商品销售统计.docx(28页珍藏版)》请在冰豆网上搜索。
C++课程设计商品销售统计
商品销售统计
1.需求和规格说明
1.1问题描述
编写商品销售统计程序,商品的信息有商品名、计量单位(重量或件)、单价。
所有商品的信息事先已存入计算机,屏幕上显示所有商品的名称,选择商品名,输入商品计量单位(如重量、件数等),根据单价算出总价。
客户一次可能购买多种商品,程序应计算出客户应付的钱款数。
1.2基本要求
程序分为两个部分:
第一部分用于输入商品的信息并允许修改和删除;第二部分实现销售统计。
程序运行时由用户选择进入哪一部分功能,并能在运行时在两部分之间切换。
第二部分运行时,首先显示所有商品名称及代码(商品数目较多时,应考虑分屏显示),用户输入商品代码及商品重量或件数,用户一次操作可输入若干商品的购买信息,然后输入一个特殊的代码(如“-1”)表示本次购物结束。
此时,程序计算出应付钱款数并显示。
2.设计
2.1文字描述
先定义一个商品类GOODS,含有每种商品基本信息即商品名、计量单位(重量或件)、单价、商品总量皆被定义为私有数据成员;公有成员部分有该类构造函数以及其他友元函数。
为了完成程序基本要求,采用嵌套系统思想,即先构造一个总的系统——商品销售统计工程,通过switch语句可选择进入其下面两个子系统——商品信息管理系统和商品销售系统,以完成程序要求的两个部分的功能。
其中,每个子系统又可根据switch语句进行选择操作,并能实现在两个子系统之间的切换。
2.2图示
3.用户手册
根据提示选择操作即可,具体为:
(1)程序运行时,首先要求初始化商品信息,即需添加销售的商品名称、单价等;
(2)根据需求选择进入商品信息管理系统或者商品销售系统,其中前者可进行的操作有:
录入新商品信息、修改商品信息、删除商品信息等,后者为用户提供购买商品功能,只需根据提示操作即可;
注意:
请输入与程序要求相应的选择以及正确的格式,不要超出程序给定的围!
4.附录源代码
#include
#include
#include
usingnamespacestd;
intchoice;
classGOODS
{
private:
stringname;//商品名
stringunit;//计量单位
doubleprice_per_unit;//单价
doubleamount;//商品总数
public:
GOODS();//构造函数
//排序函数,使得信息为空的商品类数组元素沉底,不为空的排在前面(被"删除商品信息函数"调用)
friendvoidsort(GOODSarray[],intsize);
friendvoidinput_gds_mesg(GOODSgoods1[],intsize);//底层函数:
录入商品信息(从属于商品信息管理系统)
friendvoidMessage_modify(GOODSgoods2[],intsize);//底层函数:
修改商品信息(从属于商品信息管理系统)
friendvoidMessage_delete(GOODSgoods3[],intsize);//底层函数:
删除商品信息(从属于商品信息管理系统)
friendvoidGoods_Message_Manage(GOODSGoods1[],intsize);//中层函数:
1.商品信息管理系统(从属于商品销售统计工程)
friendvoidGoods_Sale(GOODSGoods2[],intsize);//中层函数:
2.商品销售系统(从属于商品销售统计工程)
friendvoidWORK(GOODSGoods[],intsize);//高层函数:
商品销售统计工程
};
GOODS:
:
GOODS()
{
name="0";
unit="0";
price_per_unit=0.0;
amount=0;
}
voidinput_gds_mesg(GOODSgoods1[],intsize)//底层函数:
录入商品信息函数(从属于商品信息管理系统)
{
inti,j,m=0;
ints=size;
intn=size;
stringl;
for(i=0;i
{
if(goods1[i].name!
="0")m++;
elseif(goods1[i].name=="0")s=m;
}
for(j=m;j{
cout<<"________________________________________________________________________"<cout<<">>>请输入第"<__";
cin>>goods1[j].name;
cout<cout<<">>>请输入第"<__";
cin>>goods1[j].unit;
cout<cout<<">>>请输入第"<__";
cin>>goods1[j].price_per_unit;
cout<cout<<">>>请输入第"<__";
cin>>goods1[j].amount;
cout<<"________________________________________________________________________"<cout<cout<<"__继续录入商品信息?
(y/n)__";
cin>>l;
cout<if(l=="n"||l=="N")n=j;
elseif(l=="y"||l=="Y"){};
}
cout<<"__商品信息录入完成!
"<cout<<"________________________________________________________________________"<return;
}
voidMessage_modify(GOODSgoods2[],intsize)//底层函数:
修改商品信息函数(从属于商品信息管理系统)
{
if(goods2[0].name=="0")
{
cout<<"Caution:
当前无商品信息,请返回更新!
(y/n)__";
stringc;
cin>>c;
cout<<"________________________________________________________________________"<cout<if(c=="y"||c=="Y")
{
Goods_Message_Manage(goods2,size);
WORK(goods2,size);
}
else
{
cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>使用,祝您愉快!
再见!
<<<<<<<<<<<<<<<<<<<<<<<<<<"<exit(0);
}
}
stringp,q;
intn;
stringunit;
stringname;
doubleprice;
doubleamount;
intchoice2;
do
{
do
{
cout<<"---------------------------商品信息列表--------------------------"<cout<<"\t商品编号\t商品名称\t商品单价\t商品余量"<inti,m=0;
ints=size;
for(i=0;i
{
if(goods2[i].name!
="0")m++;
elseif(goods2[i].name=="0")s=m;
}
for(i=0;i{
cout<<"\t"<
}
cout<<"________________________________________________________________________"<cout<<">>>请输入您想修改信息的商品编号:
__";
//intn;
cin>>n;
cout<<"________________________________________________________________________"<cout<cout<<"__您想修改信息的商品为:
"<//stringp;
cin>>p;
cout<if(p=="y"||p=="Y")
{cout<<"________________________________________________________________________"<do
{
cout<<"1.修改商品名称"<cout<<"2.修改商品计量单位"<cout<<"3.修改商品单价(元)"<cout<<"4.修改商品数量"<cout<<"________________________________________________________________________"<cout<<">>>请输入您的选择(1-4):
__";
cin>>choice2;
cout<switch(choice2)
{
case1:
cout<<">>>请输入"<__";
//!
!
stringname;
cin>>name;
goods2[n-1].name=name;
break;
case2:
cout<<">>>请输入"<__";
//!
!
stringunit;
cin>>unit;
goods2[n-1].unit=unit;
break;
case3:
cout<<">>>请输入"<__";
//!
!
doubleprice;
cin>>price;
goods2[n-1].price_per_unit=price;
break;
case4:
cout<<">>>请输入"<__";
//!
!
intnum;
cin>>amount;
goods2[n-1].amount=amount;
break;
default:
cout<<"Caution:
对不起,输入有误,请从新输入!
";
break;
}
}while(choice2!
=1&&choice2!
=2&&choice2!
=3&&choice2!
=4);
}
}while(p=="n"||p=="N");
cout<<"________________________________________________________________________"<cout<<"__继续修改商品信息(y/n)?
__";
//stringq;
cin>>q;
cout<}while(q=="y"||q=="Y");
cout<<"__商品信息修改完成!
";
cout<<"________________________________________________________________________"<return;
}
voidsort(GOODSarray[],intsize)//排序函数,使得信息为空的商品类数组元素沉底,不为空的排在前面(被"删除商品信息函数"调用)
{
inti,j;
GOODStemp;
for(i=0;i{
for(j=0;j{
if(array[j].name=="0"&&array[j+1].name!
="0")
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
return;
}
voidMessage_delete(GOODSgoods3[],intsize)//底层函数:
删除商品信息函数(从属于商品信息管理系统)
{
if(goods3[0].name=="0")
{
cout<<"Caution:
对不起,当前无商品信息,请返回更新!
(y/n)__";
stringc;
cin>>c;
cout<<"________________________________________________________________________"<cout<if(c=="y"||c=="Y")
{
Goods_Message_Manage(goods3,size);
WORK(goods3,size);
}
else
{
cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>使用,祝您愉快!
再见!
<<<<<<<<<<<<<<<<<<<<<<<<<<"<exit(0);
}
}
stringp,q;
intn;
stringunit;
//doubleprice;
do
{
do
{
cout<<"---------------------------商品信息列表--------------------------"<cout<<"\t商品编号\t商品名称\t商品单价\t商品余量"<inti,m=0;
ints=size;
for(i=0;i
{
if(goods3[i].name!
="0")m++;
elseif(goods3[i].name=="0")s=m;
}
for(i=0;i{
cout<<"\t"<
}
cout<<"________________________________________________________________________"<cout<<">>>请输入您想删除信息的商品编号:
__";
//intn;
cin>>n;
cout<cout<<"__您想删除信息的商品为:
"<//stringp;
cin>>p;
cout<if(p=="y"||p=="Y")
{
goods3[n-1].name="0";
goods3[n-1].unit="0";
goods3[n-1].price_per_unit=0.0;
goods3[n-1].amount=0;
}
cout<<"________________________________________________________________________"<}while(p=="n"||p=="N");
cout<<"__继续删除商品信息(y/n)?
__";
//stringq;
cin>>q;
cout<}while(q=="y"||q=="Y");
cout<<"__商品信息删除完成!
";
cout<<"________________________________________________________________________"<sort(goods3,size);
return;
}
voidGoods_Message_Manage(GOODSGoods1[],intsize)//中层函数:
M.商品信息管理系统(从属于商品销售统计工程)
{
intchoice1;
do
{
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<"★★"<cout<<"★商品信息管理系统★"<cout<<"★★"<cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<">>>>>>>>>>>>>>>>>>>>>>请选择您要执行的操作<<<<<<<<<<<<<<<<<<<<<"<cout<<"1.录入新商品信息"<cout<<"2.修改商品信息"<cout<<"3.删除商品信息"<cout<<"4.返回"<cout<<"0.退出";
cout<<"_____________________________________________________________"<cout<<">>>请输入您的选择:
(0-4)__";
cin>>choice1;
cout<switch(choice1)
{
case1:
input_gds_mesg(Goods1,size);
break;
case2:
Message_modify(Goods1,size);
break;
case3:
Message_delete(Goods1,size);
break;
case4:
WORK(Goods1,size);
break;
case0:
cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>使用,祝您愉快!
再见!
<<<<<<<<<<<<<<<<<<<<<<<<<<"<exit(0);
break;
default:
cout<<"对不起,您的输入有误,请重新进行选择!
"<break;
}
}while(choice1!
=0&&choice1!
=1&&choice1!
=2&&choice1!
=3&&choice1!
=4);
return;
}
voidGoods_Sale(GOODSGoods2[],intsize)//中层函数:
S.商品销售系统(从属于商品销售统计工程)
{
if(Goods2[0].name=="0")
{
cout<<"Caution:
对不起,当前无商品信息,请返回更新!
(y/n)__";
stringc;
cin>>c;
cout<<"________________________________________________________________________"<cout<if(c=="y"||c=="Y")
{
Goods_Message_Manage(Goods2,size);
WORK(Goods2,size);
}
else
{
cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>使用,祝您愉快!
再见!
<<<<<<<<<<<<<<<<<<<<<<<<<<"<exit(0);
}
}
stringp,q;
intnum[1000],amount[1000];//num[]存放所要购买商品的编号,amount[]存放购买的每种商品数量
intj=0,f=0,r=0;
stringunit;
doublemoney=0.0;
do
{
do
{
cout<<"________________________________________________________________________"<cout<<"---------------------------商品信息列表--------------------------"<cout<<"\t商品编号\t商品名称\t商品单价\t商品余量"<inti,m=0;
ints=size;
for(i=0;i
{
if(Goods2[i].name!
="0")m++;
elseif(Goods2[i].name=="0")s=m;
}
for(i=0;i{
cout<<"\t"<
}
cout<<"________________________________________________________________________"<cout<<">>>请输入您想购买的商品的编号(输入“0”结束):
"<//intnum[size];
for(j=0;num[j-1]!
=0;j++)
{
cout<<"---";
cin>>num[j];
}
//do
//{
//cin>>num[j];
//j++;
//}while(num[j-1]!
=0);
cout<<"__您想购买的商品为:
"<cout<<"__________________________________________