“超市商品管理系统设计”
A.问题描述
超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。
主要完成对商品的销售、统计和简单管理。
B.功能要求
(1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。
(2)商品简单管理功能。
添加功能:主要完成商品信息的添加。
查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
修改功能:可根据查询结果对相应的记录进行修改。
删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
(3)统计功能。
输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
(7)商品信息存盘:将当前程序中的商品信息存入文件中。
(8)读出信息:从文件中将商品信息读入程序。
“超市商品管理系统设计”
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- 陌湘萘 2016-02-27 06:21关注
修改版,现在主要就是文件的读取有问题。
/* A.问题描述 超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。 主要完成对商品的销售、统计和简单管理。 B.功能要求 (1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。 (2)商品简单管理功能。 添加功能:主要完成商品信息的添加。 查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。 修改功能:可根据查询结果对相应的记录进行修改。 删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。 (3)统计功能。 输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。 (7)商品信息存盘:将当前程序中的商品信息存入文件中。 (8)读出信息:从文件中将商品信息读入程序。 */ //价格 # include <iostream> # include <fstream> # include <string.h> #include <conio.h>//用getch(); #include<windows.h> using namespace std; //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌commodity类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ class commodity { public: char type[20];//商品类型 char name[20];//商品名称; char factor[20];//生产厂家; double price;//价格; int amount;//数量; int sum; commodity * Next; void Input() { cout<<"\t\t请输入商品的类型:";cin>>type; cout<<"\t\t请输入商品的名称:"; cin>>name; cout<<"\t\t请输入商品生产厂家"; cin>>factor; cout<<"\t\t请输入商品的价格:"; cin>>price; cout<<"\t\t请输入商品的库存量:"; cin>>amount; sum=price*amount; } void ReadFile(istream & in) { in>>type>>name>>price>>amount>>factor>>sum; } void Show() { cout<<"商品类型"<<type<<endl <<"商品名"<<name<<endl <<"价格:"<<price<<endl <<"商品库存量:"<<amount<<endl <<"生产厂家:"<<factor<<endl <<"预计总利润:"<<sum <<endl<<endl<<endl; } }; //﹌﹌﹌﹌﹌﹌﹌﹌﹌Commoditymassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ class Commoditymassage { public: Commoditymassage(); ~Commoditymassage(); void ShowMenu(); void Find(); void Save(); void ModifyItem(); void RemoveItem(); void Swap(commodity *,commodity *); void Sort(); void Sale(); int ListCount(); void Display() { for(commodity * p=Head->Next;p!=End;p=p->Next) p->Show(); cout<<"输入任意字符!继续……"; getch(); } void AddItem()//添加商品 { End->Input(); End->Next=new commodity; End=End->Next; cout<<"添加成功!"<<endl; cout<<"输入任意字符!继续……"; getch(); } private: commodity * Head,* End; ifstream in1,in2,in3,in4; ofstream out1,out2,out3,out4; commodity *FindItem(char * name) { for(commodity * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p->Next->name,name))return p; return NULL; } commodity *FindFactor(char * factor) { for(commodity * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p->Next->factor,factor))return p; return NULL; } commodity *FindType(char * type) { for(commodity * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p->Next->type,type))return p; return NULL; } }; //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ Commoditymassage::Commoditymassage() { Head=new commodity; Head->Next=new commodity; End=Head->Next; in1.open("food.txt"); if(!in1) cout<<"无商品信息。请先输入。"<<endl; else { while(!in1.eof()) { End->ReadFile(in1); if(End->name[0]=='\0')break; End->Next=new commodity; End=End->Next; } in1.close(); cout<<"\t\t读取商品信息成功!"<<endl; } in2.open("cosmetic.txt"); if(!in2) cout<<"无商品信息。请先输入。"<<endl; else { while(!in2.eof()) { End->ReadFile(in2); if(End->name[0]=='\0')break; End->Next=new commodity; End=End->Next; } in2.close(); cout<<"\t\t读取商品信息成功!"<<endl; } in3.open("dailyuse.txt"); if(!in3) cout<<"无商品信息。请先输入。"<<endl; else { while(!in3.eof()) { End->ReadFile(in3); if(End->name[0]=='\0')break; End->Next=new commodity; End=End->Next; } in3.close(); cout<<"\t\t读取商品信息成功!"<<endl; } in4.open("drink.txt"); if(!in4) cout<<"无商品信息。请先输入。"<<endl; else { while(!in4.eof()) { End->ReadFile(in4); if(End->name[0]=='\0')break; End->Next=new commodity; End=End->Next; } in4.close(); cout<<"\t\t读取商品信息成功!"<<endl; } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ Commoditymassage::~Commoditymassage() { Save(); for(commodity * temp;Head->Next!=End;) { temp=Head->Next; Head->Next=Head->Next->Next; delete temp; } delete Head,End; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ void Commoditymassage::ShowMenu() { cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 超 市 商 品 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl; cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.显示超市商品 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;// cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.添加超市商品 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.修改超市商品 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.删除超市商品 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.统计超市商品 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.查找超市商品 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; cout<<"\n\t\t\n\t\t请选择:"; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ void Commoditymassage::Find() { char type[20],name[20] ,factor[20]; int x; commodity * p=NULL; cout<<"\n\t\t*********************************\n"; cout<<"\t\t※ 1.按商品的类别(名称)查找\n\t\t※ 2.按商品生产厂家查找"; cout<<"\n\t\t*********************************\n\t\t请选择:"; cin>>x; switch(x) { case 1: { cout<<"\n\t\t*********************************\n"; cout<<"\t\t※ 1.food 2.cosmertic 3.dailyuse 4.drink"; cout<<"\n\t\t*********************************\n请选择:"; cout<<"\t\t请输入要查找的商品的类型:";cin>>type; if(p=FindType(type)) { p->Next->Show(); cout<<"输入任意字符!继续……"; getch(); cout<<"\t\t请输入要查找的商品的名称:";cin>>name; if(p=FindItem(name)) { p->Next->Show(); cout<<"输入任意字符!继续……"; getch(); } else { cout<<"\t\t没有找到该名称的商品!"<<'\n'<<endl; cout<<"输入任意字符!继续……"; getch(); } } else { cout<<"\t\t没有找到该类型的商品!"<<'\n'<<endl; cout<<"输入任意字符!继续……"; getch(); } }break; case 2: { cout<<"\t\t请输入要查找的商品的生产厂家:";cin>>factor; if(p=FindFactor(factor)) { p->Next->Show(); cout<<"输入任意字符!继续……"; getch(); } else { cout<<"\t\t没有找到该厂家的商品!"<<'\n'<<endl; cout<<"输入任意字符!继续……"; getch(); } }break; } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌销售函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ //好像没用到…… void Commoditymassage::Sale() { int amount1; double price1,sum; commodity * p; char name[20]; cout<<"请选择销售产品(名称)"<<endl; cin>>name; if(p=FindItem(name)) { cout<<"请输入销售量(件)"; cin>>amount1; p->amount=amount1; price1=p->price; sum=price1 * amount1; p->sum=sum; cout<<"购买成功!\n"; } else cout<<"库存量不足!请重新输入销售库存量:\n"; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改商品信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ void Commoditymassage::ModifyItem() //修改商品信息 { char name[20]; commodity * p=NULL; cout<<"\t\t请输入要修改的商品的名称:";cin>>name; if(p=FindItem(name)) { cout<<"\t\t已找到商品的信息,请输入新的信息!"<<endl; p->Next->Input(); cout<<"修改成功!"<<endl; cout<<"输入任意字符!继续……"; getch(); } else { cout<<"\t\t没有找到!"<<endl; cout<<"输入任意字符!继续……"; getch(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ void Commoditymassage::RemoveItem() // 删除信息 { char name[20]; commodity * p=NULL,*temp=NULL; cout<<"\t\t请输入要删除的商品的名称:"<<endl;cin>>name; if(p=FindItem(name)) { temp=p->Next; p->Next=p->Next->Next; delete temp; cout<<"\t\t删除成功!"<<endl; cout<<"输入任意字符!继续……"; getch(); } else { cout<<"\t\t没有找到!"<<endl; cout<<"输入任意字符!继续……"; getch(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ void Commoditymassage::Swap(commodity *p1, commodity *p2)//交换两个combox变量的数据域 { commodity *temp=new commodity; strcpy(temp->type,p1->type); strcpy(temp->name,p1->name); strcpy(temp->factor,p1->factor); temp->price=p1->price; temp->amount=p1->amount; temp->sum=p1->sum; strcpy(p1->type,p2->type); strcpy(p1->name,p2->name); strcpy(p1->factor,p2->factor); p1->price=p2->price; p1->amount=p2->amount; p1->sum=p2->sum; strcpy(p2->type,temp->type); strcpy(p2->name,temp->name); strcpy(p2->factor,temp->factor); p2->price=temp->price; p2->amount=temp->amount; p2->sum=temp->sum; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ int Commoditymassage::ListCount()//统计当前链表的记录总数,返回一个整数 { if(! Head) return 0; int n=0; for(commodity * p=Head->Next;p!=End;p=p->Next) { n++; } return n; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ void Commoditymassage::Sort()//对当前链表进行排序 { cout <<"Sorting..."<<endl; commodity *p=NULL,*p1=NULL,*k=NULL; int n=Commoditymassage::ListCount(); if(n<2) return; for(p=Head->Next;p!=End;p=p->Next) for(k=p->Next;k!=End;k=k->Next) { if(p->sum>k->sum) { Commoditymassage::Swap(p,k); } } cout <<"排序完成!"<<endl; getch(); return; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ void Commoditymassage::Save() { out1.open("food.txt"); for(commodity *p1=Head->Next;p1!=End;p1=p1->Next) out1<<p1->type<<"\t"<<p1->name<<"\t"<<p1->factor<<"\t"<<p1->price<<"\t"<<p1->amount<<"\t"<<p1->sum<<'\n'; out1.close(); out2.open("cosmetic.txt"); for(commodity *p2=Head->Next;p2!=End;p2=p2->Next) out2<<p2->type<<"\t"<<p2->name<<"\t"<<p2->factor<<"\t"<<p2->price<<"\t"<<p2->amount<<"\t"<<p2->sum<<'\n'; out2.close(); out3.open("dailyuse.txt"); for(commodity *p3=Head->Next;p3!=End;p3=p3->Next) out3<<p3->type<<"\t"<<p3->name<<"\t"<<p3->factor<<"\t"<<p3->price<<"\t"<<p3->amount<<"\t"<<p3->sum<<'\n'; out3.close(); out4.open("drink.txt"); for(commodity *p4=Head->Next;p4!=End;p4=p4->Next) out4<<p4->type<<"\t"<<p4->name<<"\t"<<p4->factor<<"\t"<<p4->price<<"\t"<<p4->amount<<"\t"<<p4->sum<<'\n'; out4.close(); } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ int main() { int x,i=0; bool quit=false; cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl; for(i=0;i<3;i++) cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl; cout<<"\t\t◎★★★★【 欢迎进入超市商品管理系统 】★★★★◎"<<endl; for(i=0;i<3;i++) cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl; cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;; cout<<"\t\t按任意键开始……"; getch(); Commoditymassage Grade; // while(!quit) { system("cls"); Grade.ShowMenu(); cin>>x; switch(x) { case 0:quit=true;break; case 1:Grade.Display();break; case 2:Grade.AddItem();break; case 3:Grade.ModifyItem();break; case 4:Grade.RemoveItem();break; case 5:Grade.Sort();break; case 6:Grade.Find();break; } } return 0; }
解决 7无用
悬赏问题
- ¥15 overleaf中论文编辑,报错`pages' is a missing field, not a string, for entry 4
- ¥15 vhdl+MODELSIM
- ¥20 simulink中怎么使用solve函数?
- ¥30 dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,求解决办法
- ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
- ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
- ¥15 知识蒸馏实战博客问题
- ¥15 用PLC设计纸袋糊底机送料系统
- ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
- ¥15 用C语言输入方程怎么