C++商品管理系统实验报告.docx

上传人:b****9 文档编号:28769242 上传时间:2023-07-19 格式:DOCX 页数:19 大小:323.99KB
下载 相关 举报
C++商品管理系统实验报告.docx_第1页
第1页 / 共19页
C++商品管理系统实验报告.docx_第2页
第2页 / 共19页
C++商品管理系统实验报告.docx_第3页
第3页 / 共19页
C++商品管理系统实验报告.docx_第4页
第4页 / 共19页
C++商品管理系统实验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C++商品管理系统实验报告.docx

《C++商品管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《C++商品管理系统实验报告.docx(19页珍藏版)》请在冰豆网上搜索。

C++商品管理系统实验报告.docx

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;

}

}

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

当前位置:首页 > 工程科技 > 电子电路

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

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