📄 supermarket.txt
字号:
// 1、实现描述超市的的类Supermarket类,记录系统中现有商品(用链表实现)。类定义归入头文件
// supermarket.h,类的实现归入程序文件supermarket.cpp,要求完成以下操作:
// void appendGoods(char* name,float price,int number);//添加新商品
// void queryAllGoods();//查询所有商品
// void deleteGoods(char* name);//删除指定商品
// void saleGoods(char* name,int number);//销售指定商品
// void addGoods(char* name,int number);//商品上架,系统中已有商品数量增加
// void queryGoods(char* name);//查询指定商品
// 2、 定义商品类Goods,记录商品信息。类定义归入头文件goods.h,类的实现归入程序文件goods.cpp。
// private数据成员有商品名称name,商品价格price,商品数量number等属性,要求完成以下操作:
// void sale(char* name,int number);//商品销售,余额不足时给予提示
// void add(char* name,int number);//商品上架
// void showMe();//商品信息显示
// 3、编写main函数,测试以上所要求的各种功能,如0-退出系统,1-增加商品,2-删除商品,
// 3-查询商品,4-商品销售,5-商品上架,6-查询所有商品。主程序文件归入pmain.cpp。
//
// Note: 没有分成头文件(.h)和程序文件(.cpp),程序很小,没必要。
//-----------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <string.h>
//===================== Goods Class ================
class Goods{
char name[20];
double price;
int number;
public:
Goods* next;
Goods(){
name[0]=0;
price=0.0;
number=0;
next=NULL;
}
bool sale(char* goodsName,int goodsNumber);
bool add(char* goodsName, double goodsPrice, int goodsNumber);
void showMe();
bool query(char* goodsName);
};
bool Goods::sale(char *goodsName, int goodsNumber){
if(strcmp(name, goodsName)==0){
if(number<goodsNumber) printf("余额不足\7\n");
else number = number-goodsNumber;
return true;
}
return false;
}
bool Goods::add(char *goodsName, double goodsPrice, int goodsNumber){
if(name[0]==0){
strcpy(name, goodsName);
price=goodsPrice;
number=goodsNumber;
return true;
}
else if(strcmp(name, goodsName)==0){
number=number+goodsNumber;
return true;
}
else return false;
}
void Goods::showMe(){
printf("%20s%10.2lf%10d\n", name, price, number);
}
bool Goods::query(char* goodsName){
if(strcmp(goodsName,name)==0) return true;
else return false;
}
//======================== Supermarket Class ==========
class Supermarket{
Goods *header, *last, *temp;
public:
Supermarket(){
header=last=temp=NULL;
}
void appendGoods(char* name,double price,int number);
void queryAllGoods();
void deleteGoods(char* name);
void saleGoods(char* name,int number);
void addGoods(char* name,int number);
void queryGoods(char* name);
};
void Supermarket::appendGoods(char* name,double price,int number){
temp= new Goods;
temp->add(name, price, number);
temp->next=NULL;
if(header==NULL)
header=last= temp;
else{
last->next= temp;
last= temp;
}
}
void Supermarket::queryAllGoods(){
temp= header;
printf("%20s%10s%10s\n", "商品名","价格","数量");
while(temp){
temp->showMe();
temp= temp->next;
}
}
void Supermarket::deleteGoods(char* name){
Goods* preTemp=NULL;
temp= header;
while(temp && !temp->query(name)){
preTemp= temp;
temp= temp->next;
}
if(temp==NULL) printf("没有找到该商品\n");
else{
if(temp==header)
header= header->next;
else{
preTemp->next= temp->next;
if(temp==last) last= preTemp;
}
delete temp;
printf("%s 商品已成功删除\n",name);
}
}
void Supermarket::saleGoods(char* name,int number){
temp= header;
while(temp && !temp->sale(name,number))
temp= temp->next;
if(temp==NULL) printf("没有找到该商品\n");
}
void Supermarket::addGoods(char* name,int number){
temp= header;
while(temp && !temp->add(name,0.0,number))
temp= temp->next;
if(temp==NULL)
printf("没有找到该商品。请使用添加新商品\n");
}
void Supermarket::queryGoods(char* name){
temp= header;
while(temp && !temp->query(name))
temp= temp->next;
if(temp==NULL) printf("没有找到该商品\n");
else{
printf("%20s%10s%10s\n", "商品名","价格","数量");
temp->showMe();
}
}
//======================== main====================
int main(){
char choice;
Supermarket supermkt;
char name[20];
double price;
int number;
while(1){
printf("========================================\n");
printf("1-增加商品 2-删除商品 3-查询商品 4-商品销售\n5-商品上架 6-查询所有商品 0-退出系统\n");
printf("Your choice: ");
choice = _getch();
switch(choice){
case '1':
printf("%c\n",choice);
printf("请输入 商品名,价格,数量: ");
scanf("%s %lf %d",name,&price,&number);
supermkt.appendGoods(name, price, number);
break;
case '2':
printf("%c\n",choice);
printf("请输入 商品名: ");
scanf("%s",name);
supermkt.deleteGoods(name);
break;
case '3':
printf("%c\n",choice);
printf("请输入 商品名: ");
scanf("%s",name);
supermkt.queryGoods(name);
break;
case '4':
printf("%c\n",choice);
printf("请输入 商品名,数量: ");
scanf("%s %d",name,&number);
supermkt.saleGoods(name,number);
break;
case '5':
printf("%c\n",choice);
printf("请输入 商品名,数量: ");
scanf("%s %d",name,&number);
supermkt.addGoods(name,number);
break;
case '6':
printf("%c\n",choice);
supermkt.queryAllGoods();
break;
case '0':
return 0;
default:
printf("\n!! Choose from 0 to 6\7\n");
break;
}
}
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -