C++商品管理系统实验报告--精选文档_第1页
C++商品管理系统实验报告--精选文档_第2页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计实训报告题目: 模拟超市商品管理系统 专 业: 班 级: 学 号: 小组成员: 年 月 日目录1 课程设计目的12 程序要求与简介13 系统分析23.1系统流程图23.2主要类说明34 测试运行的结果45 心得体会66 程序代码清单6一、课程设计目的通过设计一个较为简单的商场库存货物管理系统,进一步熟悉C+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。二、程序要求与简介设计并实现超市进销存管理系统,假设超市有三

2、个货架,分别放有日常用品、食品和家电。本题要求完成以下内容:1. 实现描述超市的类。该类中要求包含三个函数:(1) 增加商品的函数(说明:能增加新的商品,也能增加已有商品的数量)。(2) 销售函数,按照商品名称销售(要求:当商品现有数量少于卖出数量时,商品不能继续卖出,并有相关信息显示)。(3) 按照商品名称查询商品基本情况的函数。(查询结果包括基本属性和现有数量)。2. 定义商品类作为基类,要求包含:商品编号,名称,商品现有数量,以及输出函数(可定义为虚函数)。3. 从商品类中派生日用品类,食品类,家电类。其中,食品类商品拥有保质期属性,家电类商品拥有颜色属性(其他属性可根据实际情况自行定义

3、)。由输出函数来具体显示各类商品的名称、基本属性和现有数量。4. 设计简单的菜单界面,实现上述所要求的各种功能。即根据菜单界面的选择,对每一种商品都可以添加、售出和查询各类商品。5. 程序应采用多文件结构。6. (选做)重载输入“”操作符,使得可以通过cin直接读入上述商品对象的值。分工:商品基类,三个派生类,主函数三、系统分析1.系统流程图2.程序分析使用面向对象的程序设计进行分析,整个系统涉及两大类可操作,超市所用函数、商品。所以系统主要涉及两大类:超市的类、商品类。系统框架就是超市的类和商品类的定义;主函数中定义一个超市对象,循环显示主菜单并根据用户选择调用超市的类的相应方法(成员函数)

4、。考虑系统操作的商品信息具有不确定性,所以考虑使用链表保存、处理商品信息。超市类包含:所有商品信息的一个不带头结点的链表及可以对商品信息进行增加,销售,查询操作的相关模块为成员函数。所有商品都具有的公共信息及操作可以使用超市类进行描述。由于系统具有3类商品且3类商品信息数据,操作基本相同,所以可以为他们创立相同的类,并且采用继承和派生。四、测试运行结果1.超市商品管理系统界面2.商品增加3.商品查询4.自动生成5.商品销售五、心得体会通过学生的分组设计,使学生能够基本掌握C+程序设计的方法,并且在此基础上掌握类的构造方法,明确类中构造函数、成员函数的建立以及调用,灵活运用派生与继承。此外,并且

5、,结合C+中,字符串函数的编译系统给定的库函数,采用一定的逻辑编译,实现题目中要求的各项要求,达到基本实验目的,提高自己的C+语言使用水平。六、程序代码清单#include #include / setw()右对齐函数#include using namespace std;class ShangPin /商品类private:char name10;int count;public:ShangPin(char* s_name,int s_count)strcpy(name,s_name);count=s_count;char* getName() return name;int getCou

6、nt() return count;void setCount(int a) count=a;void print()coutsetw(10)namesetw(10)count;class YongPin : public ShangPin /日用品类public:YongPin(char* s_name=NONE,int s_count=0):ShangPin(s_name,s_count);void print()ShangPin:print();coutendl;class ShiPin:public ShangPin /食品类private:int year;int moon;int

7、day;public:ShiPin(char* s_name=NONE,int s_count=0,int a=0,int b=0,int c=0):ShangPin(s_name,s_count)year=a;moon=b;day=c;int getYear() return year;int getMoon() return moon;int getDay() return day;void print()ShangPin:print();coutsetw(10)yearsetw(3)moonsetw(3)dayendl;class DianQi:public ShangPin /电器类p

8、rivate:char colour10;public:DianQi(char* s_name=NONE,int count=0,char* s_colour=NONE):ShangPin(s_name,count)strcpy(colour,s_colour);char* gateColour() return colour;void print()ShangPin:print();coutsetw(30)colourendl;int str(char* s1,char* s2) /判断字符串内容是否相同while(*s1=*s2)if(*s1=0) return 1;s1+;s2+;ret

9、urn 0;int main()YongPin yp10; /申请10组用日品类型的空间ShiPin sp10;DianQi dq10;int a,b=1,i,count;char name10;while(1)cout*欢迎来到超市商品管理系统!*endl;cout* 1:增加 *endl;cout* 2:销售 *endl;cout* 3:查询 *endl;cout* 4:随机 *endl;cout* 0:退出 *endl;cout*endl;couta;switch(a)case 0: return 1; /退出程序case 1: /增加cout请输入增加商品种类endl; cout1:日

10、用品endl2:食品endl3:电器a;switch(a)case 1: /增加日用品cout请按格式输入:日用品名称 增加数量namecount;b=1;for(i=0;str(ypi.getName(),name)=0&i10;i+) /str(ypi.getName(),name)=0名称是否不一样if(str(ypi.getName(),NONE) /str(ypi.getName(),NONE)名称不存在ypi=YongPin(name,count);b=0;break;if(i=10) cout空间已满,无法存储,;break;if(b)ypi.setCount(ypi.getCo

11、unt()+count);coutsetw(10) 名称setw(10)数量setw(15)保质期setw(15)颜色endl;ypi.print();break;case 2: /增加食品cout请按格式输入:食品名称 增加数量 保质期(年 月 日)namecountyearmoonday;b=1;for(i=0;str(spi.getName(),NONE)=0&i10;i+)if(str(spi.getName(),name)&day=spi.getDay()&year=spi.getYear()&moon=spi.getMoon()spi.setCount(spi.getCount()

12、+count);b=0;break;if(i=10) cout空间已满,无法存储,;break;if(b)spi=ShiPin(name,count,year,moon,day);coutsetw(10) 名称setw(10)数量setw(15)保质期setw(15)颜色endl;spi.print();break;case 3: /增加电器cout请按格式输入:电器名称 增加数量 颜色namecountcolour;b=1;for(i=0;str(dqi.getName(),NONE)=0&i10;i+)if(str(dqi.getName(),name)&str(dqi.gateColou

13、r(),colour)dqi.setCount(dqi.getCount()+count);b=0;break;if(i=10) cout空间已满,无法存储,;break;if(b)dqi=DianQi(name,count,colour);coutsetw(10) 名称setw(10)数量setw(15)保质期setw(15)颜色endl;dqi.print();break;break;case 2: /卖出cout请输入卖出商品种类endl1:日用品endl2:食品endl3:电器a;switch(a)case 1: /卖出日用品cout请按格式输入:日用品名称 卖出数量namecount

14、;b=1;for(i=0;str(ypi.getName(),name)=0&i10;i+)if(str(ypi.getName(),NONE) cout无此商品出售,;b=0;break;if(b)if(ypi.getCount()-count)0)coutypi.getName()还有ypi.getCount()件,不够出售,;break;ypi.setCount(ypi.getCount()-count);coutsetw(10) 名称setw(10)数量setw(15)保质期setw(15)颜色endl;ypi.print();break;case 2: /卖出食品cout请按格式输入

15、:食品名称 卖出数量 保质期(年 月 日)namecountyearmoonday;b=1;for(i=0;str(spi.getName(),NONE)=0&i10;i+)if(str(spi.getName(),name)&day=spi.getDay()&year=spi.getYear()&moon=spi.getMoon()if(spi.getCount()-count)0) coutspi.getName()还有spi.getCount()件,不够出售,;b=0;break;spi.setCount(spi.getCount()-count);b=0;coutsetw(10) 名称

16、setw(10)数量setw(15)保质期setw(15)颜色endl;spi.print();break;if(b)cout无此商品出售,;break;case 3: /卖出电器cout请按格式输入:电器名称 卖出数量 颜色namecountcolour;b=1;for(i=0;str(dqi.getName(),NONE)=0&i10;i+)if(str(dqi.getName(),name)&str(dqi.gateColour(),colour)if(dqi.getCount()-count)0)coutdqi.getName()还有dqi.getCount()件,不够出售,;b=0;

17、break;dqi.setCount(dqi.getCount()-count);b=0;coutsetw(10) 名称setw(10)数量setw(15)保质期setw(15)颜色endl;dqi.print();break;if(b)cout无此商品出售,;break;break;case 3: /查询cout 请选择查询商品种类endl1:日用品endl2:食品endl3:电器endl4:全部(a);switch(a)case 1: /查询日用品cout日用品:endlsetw(10)名称setw(10)数量endlendl;for(i=0;str(ypi.getName(),NONE)

18、=0&i10;i+) ypi.print();break;case 2: /查询食品cout 食品:endlsetw(10)名称setw(10)数量setw(15)保质期endlendl;for(i=0;str(spi.getName(),NONE)=0&i10;i+)spi.print();break;case 3: /查询电器cout 电器:endlsetw(10)名称setw(10)数量setw(30)颜色endlendl;for(i=0;str(dqi.getName(),NONE)=0&i10;i+)dqi.print();break;case 4: /查询全部coutsetw(10) 名称setw(10)数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论