《C++程序设计》题目:超市管理系统班级:信管学号:1251220117姓名:吴昊翀指导老师:刘欣2014.01.01目录一.设计目的与任务描述…………………………………二.设计思想………………………………………………三.系统功能与设计过程…………………………………四.程序源代码……………………………………………五.运行情况………………………………………………六.心得体会………………………………………………七.参考文献………………………………………………超市管理系统一.设计目的与任务描述设计目的:1.熟悉C++语言系统开发的基本过程2.巩固所学知识,培养和提高学生分析和解决实际问题的能力任务描述:需求分析:中小型超市采购的商品一般都成千上万件。对这些商品进行有效的管理必不可少。每件商品一般都需要记录商品名、条形码、类别、价格、出厂日期等商品的基本信息。除此之外,还需要记录商品的其他相关信息,如生产厂家、供货处代码、厂家网址、厂家电话等。超市商品的相关信息需要存储到文件系统中,一般都需要提供对商品信息的添加、编辑、删除等操作。超市管理员每天都会记录购进的商品信息,核销过期的商品等。为了巩固我们所学的C++语言程序设计知识,也为了满足课程设计的要求,我们在对几个中小型超市进行调研的基础上,设计和实现一个小型的超市商品管理系统,提供商品系统的添加、删除、编辑等功能。同类系统多数使用结构体数组来操作数据,本系统使用链表结构操作数据,提高了数据处理的效率。设计一个小型超市管理系统,用链表来存储商品的基本信息(包括商品名称,代码产地,单价等)。完成以下基本功能:A、添加商品信息:有商品代码、商品名称、产地、商品单价、库存量等。B、修改,删除商品信息:输入商品名称,修改或删除相应商品信息。C、查询,统计商品:输入商品名称,查询,统计相应商品信息。二:设计思想(1)设计菜单来实现功能设计1增加商品2显示商品3排序统计商品4查找商品5删除商品6修改商品7安全退出(2)设计classSupermarket商品类,实现对商品信息的描叙;设计classSupermarketmassage类,实现对商品信息的增加,删除,修改,查询,统计等。以下是函数功能表:函数功能voidDisplay()输出商品的信息Supermarket()构造函数~Supermarket()析构函数voidAddItem()增加商品voidRemoveItem()删除商品voidModifyItem()修改商品voidFind()查询商品intListCount()统计商品voidSave()基础数据存盘voidSort()排序商品Supermarketmassage()构造函数(3)用类的成员函数对链表的数据进行操作,其功能如上表所列。三.设计类及对象本程序定义了两个类,定义如下:1.classSupermarketclassSupermarket{public:charname[20];charNum[20];intCnum;//进货总数intMnum;//销售数目intEnum;//剩余库存数目doublePrice;//单价charAdd[20];//产地doubleSum;//销售额Supermarket*Next;voidInput(){cout\t\t请输入商品名:;cinname;cout\t\t请输入商品编号:;cinNum;cout\t\t请输入商品进货总数:;cinCnum;cout\t\t请输入商品销售数目:;cinMnum;cout\t\t请输入商品剩余库存数目:;cinEnum;cout\t\t请输入商品产地:;cinAdd;cout\t\t请输入商品单价:;cinPrice;Sum=Mnum*Price;}voidReadFile(istream&in)//文件指针{innameNumCnumMnumEnumAddPriceSum;}voidShow(){cout商品名:nameendl商品编号:Numendl进货总数:Cnumendl销售数目:Mnumendl剩余库存:Enumendl产地:Addendl单价:Priceendl销售额:Sumendlendl;}};2classSupermarketmassage;classSupermarketmassage{public:Supermarketmassage();~Supermarketmassage();voidShowMenu();voidFind();voidSave();voidModifyItem();voidRemoveItem();voidSwap(Supermarket*,Supermarket*);voidSort();//voidUnpass();intListCount();//voidAverage();voidDisplay(){for(Supermarket*p=Head-Next;p!=End;p=p-Next)p-Show();cout输入任意字符!继续……;getch();}voidAddItem(){End-Input();End-Next=newSupermarket;End=End-Next;cout添加成功!endl;cout输入任意字符!继续……;getch();}private:Supermarket*Head,*End;ifstreamin;ofstreamout;Supermarket*FindItem(char*name){for(Supermarket*p=Head;p-Next!=End;p=p-Next)//匹配成功则返回上一个指针,不成功就返回空if(!strcmp(p-Next-name,name))returnp;returnNULL;}Supermarket*FindNum(char*Num){for(Supermarket*p=Head;p-Next!=End;p=p-Next)//匹配成功则返回上一个指针,不成功就返回空if(!strcmp(p-Next-Num,Num))returnp;returnNULL;}Supermarket*FindAdd(char*Add){for(Supermarket*p=Head;p-Next!=End;p=p-Next)//匹配成功则返回上一个指针,不成就返回空if(!strcmp(p-Next-Add,Add))returnp;returnNULL;}};四.程序源代码#includeiostream#includefstream#includestring.h#includeconio.h//用getch();usingnamespacestd;//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Supermarket类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌classSupermarket{public:charname[20];charNum[20];intCnum;//进货总数intMnum;//销售数目intEnum;//剩余库存数目doublePrice;//单价charAdd[20];//产地doubleSum;//销售额Supermarket*Next;voidInput(){cout\t\t请输入商品名:;cinname;cout\t\t请输入商品编号:;cinNum;cout\t\t请输入商品进货总数:;cinCnum;cout\t\t请输入商品销售数目:;cinMnum;cout\t\t请输入商品剩余库存数目:;cinEnum;cout\t\t请输入商品产地:;cinAdd;cout\t\t请输入商品单价:;cinPrice;Sum=Mnum*Price;}voidReadFile(istream&in)//文件指针{innameNumCnumMnumEnumAddPriceSum;}voidShow(){cout商品名:nameendl商品编号:Numendl进货总数:Cnumendl销售数目:Mnumendl剩余库存:Enumendl产地:Addendl单价:Priceendl销售额:Sumendlendl;}};//﹌﹌﹌﹌﹌﹌﹌﹌﹌Supermarketmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌classSupermarketmassage{public:Supermarketmassage();~Supermarketmassage();voidShowMenu();voidFind();voidSave();voidModifyItem();voidRemoveItem();voidSwap(Supermarket*,Supermarket*);voidSort();//voidUnpass();intListCount();//voidAverage();voidDisplay(){for(Supermarket*p=Head-Next;p!=End;p=p-Next)p-Show();cout输入任意字符!继续……;getch();}voidAddItem(){End-Input();End-Next=newSupermarket;End=End-Next;cout添加成功!endl;cout输入任意字符!继续……;getch();}private:Supermarket*Head,*End;ifstreamin;ofstreamout;Supermarket*FindItem(char*name){for(Supermarket*p=Head;p-Next!=End;p=p-Next)//匹配成功则返回上一个指针,不成功就返回空if(!strcmp(p-Next-name,name))returnp;returnNULL;}Supermarket*FindNum(char*Num){for(Supermarket*p=Head;p-Next!=End;p=p-Next)//匹配成功则返回上一个指针,不成功就返回空if(!strcmp(p-Next-Num,Num))returnp;returnNULL;}Supermarket*FindAdd(char*Add){for(Supermarket*p=Head;p-Next!=End;p=p-Next)//匹配成功则返回上一个指针,不成就返回空if(!strcmp(p-Next-Add,Add))returnp;returnNULL;}};//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Supermarketmassage::Supermarketmassage(){Head=newSupermarket;Head-Next=newSupermarket;End=Head-Next;in.open(sort.txt);if(!in)cout这是一个新系统,无商品信息。请先输入。endl;else{while(!in.eof()){End-ReadFile(in);if(End-name[0]=='\0')break;End-Next=newSupermarket;End=End-Next;}in.close();cout\t\t读取商品信息成功!endl;}}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Supermarketmassage::~Supermarketmassage(){S