陌湘萘 2016-02-22 10:42 采纳率: 50%
浏览 6293

“超市商品管理系统设计”

“超市商品管理系统设计”
A.问题描述
超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。
主要完成对商品的销售、统计和简单管理。
B.功能要求
(1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。
(2)商品简单管理功能。
添加功能:主要完成商品信息的添加。
查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
修改功能:可根据查询结果对相应的记录进行修改。
删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
(3)统计功能。
输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
(7)商品信息存盘:将当前程序中的商品信息存入文件中。
(8)读出信息:从文件中将商品信息读入程序。

  • 写回答

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;
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥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语言输入方程怎么