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

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

修改版,现在主要就是文件的读取有问题。

 /*
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;
}

Q1
我在vc中用sstring为什么会报错?
Q2
string h;为什么不能用?
字符串不能用string呢?
Q3
这是一个桑心的事儿……
头文件和其他文件那个,怎么分开来写?
一直出错……我写了个.h然后还有七八个.cpp,在主函数那个代码里怎么写?
好桑心

可以用string啊,但是没有sstring,这是什么东西。
头文件一般写类的定义和函数的声明,实现放在cpp里面。

#include
using namespace std;

网上有份实验报告的,主函数的语句怎么写呢?
http://m.doc88.com/p-9005929139245.html?st_type=null

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

include

include

include

#include //用getch();
#include
using namespace std;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌commodity类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class commodity
{
public:
char name[20];//商品名称;
char factor[20];//生产厂家;
int price;//价格;
int amount;//数量;
commodity * Next;
void Input()
{
cout<<"\t\t请输入商品的名称:"; cin>>name;
cout<<"\t\t请输入商品的价格:"; cin>>price;
cout<<"\t\t请输入商品的库存量:"; cin>>amount;
cout<<"\t\t请输入商品生产厂家"; cin>>factor;
}
void ReadFile(istream & in)
{
in>>name>>price>>amount>>factor;
}
void Show()
{
cout<<"商品名"<<name<<endl<<"价格:"<<price<<endl
<<"商品库存量:"<<amount<<"生产厂家:"<<factor<<endl<<endl<<endl;
}
};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌Commoditymassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Commoditymassage
{
public:
Commoditymassage1();
~Commoditymassage1();
Commoditymassage2();
~Commoditymassage2();
Commoditymassage3();
~Commoditymassage3();
Commoditymassage4();
~Commoditymassage4();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(commodity ,commodity *);
void Sort();
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 in;
ofstream out;
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;
}
};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Commoditymassage::Commoditymassage1()
{
Head=new commodity;
Head->Next=new commodity;
End=Head->Next;
in.open("food.txt");
if(!in)
cout<<"无商品信息。请先输入。"< else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new commodity;
End=End->Next;
}
in.close();
cout<<"\t\t读取商品信息成功!"<<endl;
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Commoditymassage::~Commoditymassage1()
{
Save();
for(commodity * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Commoditymassage::Commoditymassage2()
{
Head=new commodity;
Head->Next=new commodity;
End=Head->Next;
in.open("oosmetic.txt");
if(!in)
cout<<"无商品信息。请先输入。"< else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new commodity;
End=End->Next;
}
in.close();
cout<<"\t\t读取商品信息成功!"<<endl;
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Commoditymassage::~Commoditymassage2()
{
Save();
for(commodity * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Commoditymassage::Commoditymassage3()
{
Head=new commodity;
Head->Next=new commodity;
End=Head->Next;
in.open("dailyuse.txt");
if(!in)
cout<<"无商品信息。请先输入。"< else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new commodity;
End=End->Next;
}
in.close();
cout<<"\t\t读取商品信息成功!"< }
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Commoditymassage::~Commoditymassage3()
{
Save();
for(commodity * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Commoditymassage::Commoditymassage4()
{
Head=new commodity;
Head->Next=new commodity;
End=Head->Next;
in.open("drink.txt");
if(!in)
cout<<"无商品信息。请先输入。"< else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new commodity;
End=End->Next;
}
in.close();
cout<<"\t\t读取商品信息成功!"<<endl;
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Commoditymassage::~Commoditymassage4()
{
Save();
for(commodity * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void 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 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请选择:";
cin>>x;
switch(x)
{
case 1:
int v;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.food 2.cosmertic 3.dailyuse 4.drink";
cout<<"\n\t\t*********************************\n请选择:";
cin>>v;
switch(v)
{
case 1:
{
cout<<"\t\t请输入要查找的商品的名称:";cin>>name;
if(p=FindItem(name))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该名称的商品!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
case 2:

      case 3:

      case 4:
   }

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::ModifyItem() //修改商品信息
{
char name[20];
commodity * p=NULL;
cout<<"\t\t请输入要修改的商品的名称:";cin>>name;
if(p=FindItem(name))
{
cout<<"\t\t已找到商品的信息,请输入新的信息!"< 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请输入要删除的商品的名称:"<>name;
if(p=FindItem(name))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t删除成功!"< cout getch();
}
else
{
cout cout getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Commoditymassage::Swap(commodity *p1, commodity *p2)//交换两个combox变量的数据域
{
commodity *temp=new commodity;
strcpy(temp->name,p1->name);
strcpy(temp->Id,p1->Id);
temp->sale=p1->sale;
temp->buy=p1->buy;
temp->sum=p1->sum;

strcpy(p1->name,p2->name);
strcpy(p1->Id,p2->Id);
p1->sale=p2->sale;
p1->buy=p2->buy;
p1->sum=p2->sum;

strcpy(p2->name,temp->name);
strcpy(p2->Id,temp->Id);
p2->sale=temp->sale;
p2->buy=temp->buy;
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..."< commodity *p=NULL,*p1=NULL,*k=NULL;
int n=Commoditymassage::ListCount();
if(n 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()
{
out.open("food.txt");
for(commodity *p=Head->Next;p!=End;p=p->Next)
out<name<<"\t"<Id<<"\t"<sum<<'\n';
out.close();
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"< for(i=0;i cout cout for(i=0;i cout cout Commoditymassage Grade;
cout getch();
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.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}