⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 supermarket.txt

📁 实现描述超市的类
💻 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 + -