C++综合练习-商品信息管理系统

基于C++的商品信息管理系统

1 课题需求
定义一个基类来维护所有商品的基本信息。 每种商品维护着三种基本信息,包括:商品库存量、商品价格以及商品销售量。另外, 定义一个派生 类来维护带有折扣的商品的信息。此时,每种商品除了包含商品库存量、商品价格以及商品销售量三种基本信息外,还包含一个折扣信息,用于表示该商品出售时的折扣。

2 总体设计
该系统的主要功能包括:商品信息录人、商品信息输出、商品销售、商品进货、统计库存不足商品、统计营业额、统计销量最高和销量最低的商品、统计营业额最高和营业额最低的商品。

3 详细设计
3.1 商晶信息录入
在基类和派生类中都有一个成员函数来实现该功能。该成员函数包含一个形参,用于表示商品的种类。根据商品的种类来完成每种商品信息的初始化。对于基类,商品信息包括:商品数量和商品价格。在基类中,每种商品维护着三种信息;商品库存量、商品价格和商品销售量。三种信息分别用三个数组来存储,并作为类的数据成员存在。对于派生类,商品信息包括;商品数量、商品价格以及商品折扣。在派生类中,每种商品维护着四种信息:商品库存量、商品价格、商品销售量以及商品折扣。四种信息分别用四个数组来存储,并作为类的数据成员存在。在函数中进行信息录人时,用输人的商品数量来初始化商品库存量,用输人的商品价格来初始化商晶价格,并将商品销售量初始化为0。对于派生类,用输人的商品折扣来初始化商品折扣。

3.2 商品信息输出
在基类和派生类中都有一个成员函数来实现该功能。将所有商品的信息依次输出到屏幕上显示,每种商品信息显示一行。对于基类,输出的信息包括:商品库存量、商品价格和商品销售量。对于派生类,输出的信息包括:商品库存量、商品价格、商品销售量以及商品折扣。

3.3 商品销售
该功能由基类的一个单独的成员函数来实现。根据商品编号(编号从1开始)对某种商品进行销售,销售时需指定具体的商品销售数量。在对商品进行销售之前,需要对输人的商品编号和商品销售数量的信息进行合法性检测,只有输入数据合法时,才能进行商品销售。若输人数据合法,则根据具体的商品编号和商品销售数量对某种商品进行销售,销售成功后,需要相应的修改该商品的库存量和销售量的信息。注意:当库存量无法满足销售量需求时,同样不能进行商品销售。

3.4 商品进货
该功能由基类的一个单独的成员函数来实现。根据商品编号(编号从1开始)对某种商品进行进货,进货时需指定具体的商品进货数量。在对商品进行进货之前,需要对输人的商品编号和商品进货数量的信息进行合法性检测,只有输人数据合法时,才能进行商品进货。若输入数据合法,则根据具体的商品编号和商品进货数量对某种商品进行进货,进货成功后,需要相应的修改该商品的库存量信息。

3.5 统计库存不足商品
该功能由基类的一个单 独的成员函数来实现。 依次对所有商品的库存量进行检测,若某 种商品的库存量为0,则将该商品输出,每行输出一种商品。

3.6 统计营业额
在基类和派生类中都有一个成员函数来实现该功能。依次对每种商品的营业额进行统计,并输出该商品的营业额统计结果,每行输出一种商品。 对于基类,商品营业额计算公式为:商品价格X商品销售量。对于派生类,商品营业额计算公式为:商品价格X商品销售量X商品折扣。同时,将所有商品的营业额进行相加,在最后一行显示所有商品的总营业额。

3.7 统计销量最高和销量最低的商品
该功能由基类的一个单独的成员函数来实现。依次比较所有商品的销售量,从中找出销量最高和销量最低的商品。首先,定义两个变量分别用于存放最高销量和最低销量,初始时,将最高销量和最低销量都初始化为第一种商品的销售量。接下来,依次将其余商品的销售量与最高销量和最低销量进行比较。若当前商品的销售量大于最高销量,则将最高销量设置成该商品的销售量;此外,若当前商品的销售量小于最低销量,则将最低销量设置成该商品的销售量。

3.8 统计营业额最高和营业额最低的商品
在基类和派生类中都有一个成员函数来实现该功能。依次比较所有商品的营业额,从中找出营业额最高和营业额最低的商品。首先,定义两个变量分别用于存放最高营业额和最低营业额,初始时,将最高营业额和最低营业额初始化为第一种商品的营业额。接下来,依次将其余商品的营业额与最高营业额和最低营业额进行比较。若当前商品的营业额大于最高营业额,则将最高营业额设置成该商品的营业额;此外,若当前商品的营业额小于最低营业额,则将最低营业额设置成该商品的营业额。1587

原文分析:

Product::Product()
{
num=NULL;
price=NULL;
sell=NULL;
total=0;
}/*对数据成员进行初始化。
将商品种类初始化为0.将其余的指针成员初给化为空指针。

Product::Product (int *_num,double *_price,int _total):total(_total)
{
num=new int[total];
price=new double[total];
sell=new int[total];
for(int i=0;i<total;++i)
{
num[i]=_num[i];
price[i]=_price[i];
sell[i]=0;
}
}
对数据成员进行初始化。利用参数提供的商品种类对商品种类成员进行初始化。根据商品种类为其余指针成员开辟堆空间,并根据提供的形参对其进行初始化。

Product::Product(const Product &prod):total(prod.total)
{
num =new int[total];
price=new double[total];
sell=new int[total];
for(int i=0;i<total;++i)
{
num[i]=num[i];
price[i]=price[i];
sell[i]=0;
}
}
对数据成员进行初始化。利用参数提供的商品种类对商品种类成员进行初始化。根据商品种类为其余指针成员开辟堆空间,并根据提供的形参对其进行初始化。

void Product::input(int _total)
{
total=_total;
num=new int[total];
price=new double[total];
sell=new int[total];
for(int i=0;i<total;++i)
{
cout<<“输入第”<<i+1<<“种商品的信息(数量,价格):”;
cin>>num[i]>>price[i];
sell[i]=0;
}
}
利用参数提供的商品种类值对商品种类成员进行初始化,并根据商品种类为指针成员开辟堆空间。根据商品的种类依次输人每种商品的信息,信息包括:商品数量和商品价格。通过循环语句,每次循环输人一种商品的信息。

void Product::output()const
{
for(int i=0;i<total;++i)
cout<<"[商品"<<i+1<<"]库存量:"<<num[i]<<",价格:"<<price[i]<<",销量:"<<sell[i]<<endl;
}
根据商品种类依次输出每种商品的信息信息包括:商品库存量,商品价格和商品销量。

通过循环语句,每次循环输出一种商品的信息。

void Product::sale()
{
cout<<“请输入商品编号(1-”<<total<<")和销售数量(>0):";
int product,n;
cin>>product>>n;
if(n>num[product-1])
cout<<“商品”<<product<<“库存不足”<<endl;
else
{
num[product-1]-=n;
sell[product-1]+=n;
cout<<“商品”<<product<<“销售成功”<<endl;
}
}
需要对输人的商品编号和销售数量进行合法性检测,当输入数据合法时再根据具体的商品编号和销售数量对某种商品进行销售。此外,只有在某种商品的库存量能够满足销售数量的需求时,才能对该商品进行销售。

void Product::stock(int total)
{
cout<<“请输入商品编号(1-”<<total<<")和销售数量(>0):";
int product,n;
cin>>product>>n;
if(n<0)
cout<<“进货数量不能为负值!”<<endl;
else
{
num[product-1]+=n;
cout<<“商品”<<product<<“进货成功!”<<endl;
}
}
需要对输入的商品编号和进货数量进行合法性检测,当输人数据合法时再根据具体的商品编号和进货数量对某种商品进行进货。

void Product::lack()const
{
for(int i=0;i<total;++i)
if(num[i]==0)
cout<<“商品”<<i+1<<“库存不足 !”<<endl;
}
依次对每种商品的库存量进行检测,并输出所有库存量为0的商品。通过循环语句,每次循环检测种商品的库存量。

double Product::statistics ()const
{
double sum=0.0;
for(int i=0;i<total;++i)
{
cout<<“商品”<<i+1<<“营业额(元):”<<price[i]*sell[i]<<endl;
sum+=price[i]*sell[i];
}
return sum;
}
依次对每种商品的营业额进行统计,并输出该商品的营业额统计结果。商品营业额计算公式为:商品价格X商品销售量。通过循环语句,每次循环统计一种商品的营业额,并将其叠加到总营业额上。

void Product::minmaxAmount()const
{
int max_amount,min_amount;
max_amount=sell[0];
min_amount=sell[0];
for (int i=1;i<total;++i)
{
if(sell[i]>max_amount)
max_amount=sell[i];
if(sell[i]<min_amount)
min_amount=sell[i];
}
}
依次将其余商品的销售量与最高销量和最低销量进行比较,若该商品的销售量大于最高销量,则将最高销量设置成该商品的销售量;另外,若该商品的销售量小于最低销量,则将最低销量设置成该商品的销售量。通过循环语句,每次循环比较一种商品的销售量。

void Product::minmaxIncome()const
{
double max_income,min_income;
max_income=price[0]*sell[0];
min_income=price[0]*sell[0];
for(int i=1;i<total;++i)
{
if(price[i]*sell[i]>max_income)
max_income=price[i]*sell[i];
if(price[i]*sell[i]<min_income)
min_income=price[i]*sell[i];
}
}
依次将其余商品的营业额与最高营业额和最低营业额进行比较,若该商品的营业额大于最高营业额,则将最高营业额设置成该商品的营业额;另外,若该商品的营业额小于最低营业额,则将最低营业额设置成该商品的营业额。通过循环语句,每次循环比较一种 商品的营业额。

DiscountProduct& DiscountProduct::opertor=(const DiscountProduct &dprod)
{
if(num!=NULL;)
delete []num
if(price!=NULL;)
delete []price;
if(sell!=NULL;)
delete []sell;
if(discount!=NULL;)
delete []discount;
total=prod.total;
num=new int[total];
price=new double[total];
sell=new int[total];
discount=new double[total];
for(int i=0;i<total;++i)
{
num[i]=prod.num[i];
price[i]=prod.price[i];
sell[i]=prod.sell[i];
discount[i]=prod.discount[i];
}
return *this;
}
首先,释放基类和派生类指针成员原有的堆空间。然后,再根据参数对象的商品种类成员初始化自身的商品种类成员,并根据商品种类为基类和派生类的指针成员开辟新的堆空间。最后根据参数对象的成员来初始化基类和派生类的成员。

4 测试

5 总结
在本次实训中,通过课本与本次程序再一次的复习了,类的继承与派生的相关知识,并完成我的:商品信息管理系统设计。在编写程序过程中,遇到许许多多的困难,但是我每一次都是通过一次次的程序运行,将每一个错误逐一排除,遇到自己解决不了的就请教同学或者老师,在编写每一段程序的相关代码(不熟悉)都会去回顾一下课本或者老师上课所讲的ppt。

在为期近两周的实训中,我体会颇多,学到了很多东西。我加强了对C++程序

设计这门课程的认识,并且复习了自己以前学习到的知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次实训,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,这并不是我们平时只靠课本,就可以轻易解诀的。

所以,这次的实训锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C++中 如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。

我在编写程序之前,首先在心中有一个大体的框架。比如:每种商品都有3个基本信息,包括:商品库存量,商品价格以及商品库存量。然后,需要定义一个派生类(有折扣的商品含有折扣),用于表示该商品出售时的折扣。然后分八条来编写 分别是:商品信息录人、商品信息输出、商品销售、商品进货、统计库存不足商品、统计营业额、统计销量最高和销量最低的商品、统计营业额最高和营业额最低的商品。

C++商品管理系统50页报告+源码。代码详细并且功能完善。 本系统要求实现商品管理、用户管理、商品购买/退货管理等日常管理工作,以提高工作效率和管理水平。 系统合法普通用户分为用户(买家)和系统管理员,其中,系统管理员负责用户管理和商品管理,用户可以购买/退货管理。本设计要求实现的功能较多,所以将它们分为三个部分来叙述。 商品库存管理系统分为三个主要的功能模块: (1)商品管理模块:包括6个子模块,分别是商品入库模块、商品出库模块、删除商品模块、修改商品模块、查询商品模块和显示商品模块; I商品入库模块:首先自动显示系统中已有的商品信息,如果还没有商品,显示没有记录。提示用户是否需要入库,用户输入需要入库的商品编号,系统自动判断该商品是否已经存在,若存在则无法入库;若不存在,则提示用户输入商品的相关信息,一条商品的所有信息均输入完成之后,系统还会询问是否继续进行其他商品的入库操作。 II商品出库模块:首先自动显示系统中已有的商品信息,并提示用户输入需要出库的商品编号,系统自动判断该商品是否已经存在,若存在则提示用户输入出库的数量;若不存在,则提示用户找不到该商品,无法进行出库操作。I III删除商品模块:首先自动显示系统中已有的商品信息,并提示用户输入需要删除的商品编号,系统自动判断该商品是否已经存在,若存在则提示用户是否删除该商品;若不存在则提示无法找到该商品。 IV修改商品模块:首先自动显示系统中已有的商品信息,并提示用户输入需要修改的商品编号,系统自动判断该商品是否已经存在,若存在则提示用户输入新的商品信息;若不存在则提示无法找到该商品。 V查询商品模块:该模块通过用户输入的商品编号来查找商品,若存在则提示用户是否显示商品所有信息,若不存在则提示无法找到该商品。 VI显示商品模块:该模块负责将所有商品的信息列表显示出来。 (2)用户管理模块:包括5个子模块,分别是新增用户信息模块、删除用户信息模块、修改用户信息模块、查找用户信息模块和显示用户信息模块; I增加用户模块:首先自动显示系统中已有的用户信息,如果还没有用户,显示没有记录。提示管理员是否需要增加,管理员输入需要增加的用户编号,系统自动判断该用户是否已经存在,若存在则无法增加;若不存在,则提示管理员输入要增加用户的相关信息,一条要增加用户的所有信息均输入完成之后,系统还会询问是否继续进行增加其他用户的操作。 II删除用户模块:首先自动显示系统中已有的用户信息,并提示管理员输入需要删除的用户编号,系统自动判断该用户是否已经存在,若存在则提示管理员是否删除该用户;若不存在则提示无法找到该用户。 III修改用户模块:首先自动显示系统中已有的用户信息,并提示管理员输入需要修改的用户编号,系统自动判断该用户是否已经存在,若存在则提示管理员输入新的用户信息;若不存在则提示无法找到该用户。 IV查询用户模块:该模块通过管理员输入的用户编号来查找用户,若存在则提示管理员是否显示用户所有信息,若不存在则提示无法找到该用户。 V显示用户模块:该模块负责将所有用户的信息列表显示出来。 (3)用户购买/退货管理模块:包括2个子模块,分别是用户购买管理模块和用户退货管理模块
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是刘彦宏吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值