C++商品管理系统实验报告.docx
《C++商品管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《C++商品管理系统实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
C++商品管理系统实验报告
《面向对象程序设计》实训报告
题目:
模拟超市商品管理系统
专业:
班级:
学号:
小组成员:
年月日
1课程设计目的……………………………………………1
2程序要求与简介…………………………………………1
3系统分析…………………………………………………2
3.1系统流程图…………………………………………2
3.2主要类说明…………………………………………3
4测试运行的结果…………………………………………4
5心得体会…………………………………………………6
6程序代码清单……………………………………………6
一、课程设计目的
通过设计一个较为简单的《商场库存货物管理系统》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。
了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与VisualC++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。
二、程序要求与简介
设计并实现超市进销存管理系统,假设超市有三个货架,分别放有日常用品、食品和家电。
本题要求完成以下内容:
1.实现描述超市的类。
该类中要求包含三个函数:
(1)增加商品的函数(说明:
能增加新的商品,也能增加已有商品的数量)。
(2)销售函数,按照商品名称销售(要求:
当商品现有数量少于卖出数量时,商品不能继续卖出,并有相关信息显示)。
(3)按照商品名称查询商品基本情况的函数。
(查询结果包括基本属性和现有数量)。
2.定义商品类作为基类,要求包含:
商品编号,名称,商品现有数量,以及输出函数(可定义为虚函数)。
3.从商品类中派生日用品类,食品类,家电类。
其中,食品类商品拥有保质期属性,家电类商品拥有颜色属性(其他属性可根据实际情况自行定义)。
由输出函数来具体显示各类商品的名称、基本属性和现有数量。
4.设计简单的菜单界面,实现上述所要求的各种功能。
即根据菜单界面的选择,对每一种商品都可以添加、售出和查询各类商品。
5.程序应采用多文件结构。
6.(选做)重载输入“>>”操作符,使得可以通过cin直接读入上述商品对象的值。
分工:
商品基类,三个派生类,主函数
三、系统分析
1.系统流程图
2.程序分析
使用面向对象的程序设计进行分析,整个系统涉及两大类可操作,超市所用函数、商品。
所以系统主要涉及两大类:
超市的类、商品类。
系统框架就是超市的类和商品类的定义;主函数中定义一个超市对象,循环显示主菜单并根据用户选择调用超市的类的相应方法(成员函数)。
考虑系统操作的商品信息具有不确定性,所以考虑使用链表保存、处理商品信息。
超市类包含:
所有商品信息的一个不带头结点的链表及可以对商品信息进行增加,销售,查询操作的相关模块为成员函数。
所有商品都具有的公共信息及操作可以使用超市类进行描述。
由于系统具有3类商品且3类商品信息数据,操作基本相同,所以可以为他们创立相同的类,并且采用继承和派生。
四、测试运行结果
1.超市商品管理系统界面
2.商品增加
3.商品查询
4.自动生成
5.商品销售
五、心得体会
通过学生的分组设计,使学生能够基本掌握C++程序设计的方法,并且在此基础上掌握类的构造方法,明确类中构造函数、成员函数的建立以及调用,灵活运用派生与继承。
此外,并且,结合C++中,字符串函数的编译系统给定的库函数,采用一定的逻辑编译,实现题目中要求的各项要求,达到基本实验目的,提高自己的C++语言使用水平。
六、程序代码清单
#include
#include//setw()右对齐函数
#include
usingnamespacestd;
classShangPin//商品类
{
private:
charname[10];
intcount;
public:
ShangPin(char*s_name,ints_count)
{
strcpy(name,s_name);
count=s_count;
}
char*getName(){returnname;}
intgetCount(){returncount;}
voidsetCount(inta){count=a;}
voidprint()
{
cout<}
};
classYongPin:
publicShangPin//日用品类
{
public:
YongPin(char*s_name="NONE",ints_count=0):
ShangPin(s_name,s_count){};
voidprint()
{
ShangPin:
:
print();
cout<}
};
classShiPin:
publicShangPin//食品类
{
private:
intyear;
intmoon;
intday;
public:
ShiPin(char*s_name="NONE",ints_count=0,inta=0,intb=0,intc=0):
ShangPin(s_name,s_count)
{
year=a;moon=b;day=c;
}
intgetYear(){returnyear;}
intgetMoon(){returnmoon;}
intgetDay(){returnday;}
voidprint()
{
ShangPin:
:
print();
cout<}
};
classDianQi:
publicShangPin//电器类
{
private:
charcolour[10];
public:
DianQi(char*s_name="NONE",intcount=0,char*s_colour="NONE"):
ShangPin(s_name,count)
{
strcpy(colour,s_colour);
}
char*gateColour(){returncolour;}
voidprint()
{
ShangPin:
:
print();
cout<}
};
intstr(char*s1,char*s2)//判断字符串内容是否相同
{
while(*s1==*s2)
{
if(*s1=='\0')return1;
s1++;
s2++;
}
return0;
}
intmain()
{
YongPinyp[10];//申请10组用日品类型的空间
ShiPinsp[10];
DianQidq[10];
inta,b=1,i,count;
charname[10];
while
(1)
{
cout<<"******欢迎来到超市商品管理系统!
******"<cout<<"*1:
增加*"<cout<<"*2:
销售*"<cout<<"*3:
查询*"<cout<<"*4:
随机*"<cout<<"*0:
退出*"<cout<<"*************************************"<cout<<"请输入您的选择:
";
cin>>a;
switch(a)
{
case0:
return1;//退出程序
case1:
//增加
cout<<"请输入增加商品种类"<cout<<"1:
日用品"<食品"<电器"<cin>>a;
switch(a)
{
case1:
//增加日用品
cout<<"请按格式输入:
日用品名称增加数量"<cin>>name>>count;
b=1;
for(i=0;str(yp[i].getName(),name)==0&&i<10;i++)//str(yp[i].getName(),name)==0名称是否不一样
{
if(str(yp[i].getName(),"NONE"))//str(yp[i].getName(),"NONE")名称不存在
{
yp[i]=YongPin(name,count);
b=0;
break;
}
}
if(i==10){cout<<"空间已满,无法存储,";break;}
if(b)
{
yp[i].setCount(yp[i].getCount()+count);
}
cout<yp[i].print();
break;
case2:
//增加食品
cout<<"请按格式输入:
食品名称增加数量保质期(年月日)"<intyear,moon,day;
cin>>name>>count>>year>>moon>>day;
b=1;
for(i=0;str(sp[i].getName(),"NONE")==0&&i<10;i++)
{
if(str(sp[i].getName(),name)&&day==sp[i].getDay()&&year==sp[i].getYear()&&moon==sp[i].getMoon())
{
sp[i].setCount(sp[i].getCount()+count);
b=0;
break;
}
}
if(i==10){cout<<"空间已满,无法存储,";break;}
if(b)
{
sp[i]=ShiPin(name,count,year,moon,day);
}
cout<sp[i].print();
break;
case3:
//增加电器
cout<<"请按格式输入:
电器名称增加数量颜色"<charcolour[10];
cin>>name>>count>>colour;
b=1;
for(i=0;str(dq[i].getName(),"NONE")==0&&i<10;i++)
{
if(str(dq[i].getName(),name)&&str(dq[i].gateColour(),colour))
{
dq[i].setCount(dq[i].getCount()+count);
b=0;
break;
}
}
if(i==10){cout<<"空间已满,无法存储,";break;}
if(b)
{
dq[i]=DianQi(name,count,colour);
}
cout<dq[i].print();
break;
}
break;
case2:
//卖出
cout<<"请输入卖出商品种类"<日用品"<食品"<电器"<cin>>a;
switch(a)
{
case1:
//卖出日用品
cout<<"请按格式输入:
日用品名称卖出数量"<cin>>name>>count;
b=1;
for(i=0;str(yp[i].getName(),name)==0&&i<10;i++)
{
if(str(yp[i].getName(),"NONE"))
{
cout<<"无此商品出售,";
b=0;
break;
}
}
if(b)
{
if((yp[i].getCount()-count)<0)
{
cout<break;
}
yp[i].setCount(yp[i].getCount()-count);
cout<yp[i].print();
}
break;
case2:
//卖出食品
cout<<"请按格式输入:
食品名称卖出数量保质期(年月日)"<intyear,moon,day;
cin>>name>>count>>year>>moon>>day;
b=1;
for(i=0;str(sp[i].getName(),"NONE")==0&&i<10;i++)
{
if(str(sp[i].getName(),name)&&day==sp[i].getDay()&&year==sp[i].getYear()&&moon==sp[i].getMoon())
{
if((sp[i].getCount()-count)<0)
{
cout<b=0;
break;
}
sp[i].setCount(sp[i].getCount()-count);
b=0;
cout<sp[i].print();
break;
}
}
if(b)
{
cout<<"无此商品出售,";
}
break;
case3:
//卖出电器
cout<<"请按格式输入:
电器名称卖出数量颜色"<charcolour[10];
cin>>name>>count>>colour;
b=1;
for(i=0;str(dq[i].getName(),"NONE")==0&&i<10;i++)
{
if(str(dq[i].getName(),name)&&str(dq[i].gateColour(),colour))
{
if((dq[i].getCount()-count)<0)
{
cout<b=0;
break;
}
dq[i].setCount(dq[i].getCount()-count);
b=0;
cout<dq[i].print();
break;
}
}
if(b)
{
cout<<"无此商品出售,";
}
break;
}
break;
case3:
//查询
cout<<"请选择查询商品种类"<日用品"<食品"<电器"<全部"<cin>>(a);
switch(a)
{
case1:
//查询日用品
cout<<"日用品:
"<for(i=0;str(yp[i].getName(),"NONE")==0&&i<10;i++)
{
yp[i].print();
}
break;
case2:
//查询食品
cout<<"食品:
"<for(i=0;str(sp[i].getName(),"NONE")==0&&i<10;i++)
{
sp[i].print();
}
break;
case3:
//查询电器
cout<<"电器:
"<for(i=0;str(dq[i].getName(),"NONE")==0&&i<10;i++)
{
dq[i].print();
}
break;
case4:
//查询全部
cout<for(i=0;str(yp[i].getName(),"NONE")==0&&i<10;i++)
{
yp[i].print();
}
for(i=0;str(sp[i].getName(),"NONE")==0&&i<10;i++)
{
sp[i].print();
}
for(i=0;str(dq[i].getName(),"NONE")==0&&i<10;i++)
{
dq[i].print();
}
break;
}
break;
case4:
//添加测试数据
yp[0]=YongPin("桌子",5);
yp[1]=YongPin("椅子",10);
yp[2]=YongPin("簸箕",20);
yp[3]=YongPin("扫帚",30);
yp[4]=YongPin("水壶",15);
sp[0]=ShiPin("牛奶",10,2011,5,12);
sp[1]=ShiPin("牛奶",20,2011,5,13);
sp[2]=ShiPin("面包",25,2011,7,1);
sp[3]=ShiPin("饼干",15,2011,8,1);
sp[4]=ShiPin("矿泉水",30,2011,6,1);
dq[0]=DianQi("随身听",5,"black");
dq[1]=DianQi("随身听",3,"red");
dq[2]=DianQi("MP3",10,"black");
dq[3]=DianQi("MP3",5,"red");
dq[4]=DianQi("MP3",2,"green");
cout<}
cout<<"请输入任意数字返回"<cin>>a;
}
}