C++商品管理系统实验报告.docx
- 文档编号:28769242
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:19
- 大小:323.99KB
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
#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; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 商品 管理 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)