2 sinat 28782331 sinat_28782331 于 2016.02.22 18:42 提问

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

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

6个回答

caozhy
caozhy   Ds   Rxr 2016.02.22 20:42

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

sinat_28782331
sinat_28782331 头文件里可以写#include〈fstream〉之类的头文件吗?
2 年多之前 回复
sinat_28782331
sinat_28782331 写错了,应该是这样的~ goods *per1; per1=new goods [200]; ifstream fin1("foods.txt"); while(getline(fin1,buff)) { per1[p1].read(buff); p1++; } 运用了#include<sstream>包头文件 从文本文件中读取字符到对象中,再把对象作为程序的输入流,既可把从文件中读取来的数字字符单个进行读取,从而进行处理。
2 年多之前 回复
sinat_28782331
sinat_28782331   2016.02.22 18:49

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

VisualEleven
VisualEleven   Ds   Rxr 2016.02.23 13:44

#include
using namespace std;

sinat_28782331
sinat_28782331 亲,你的回答真短小精悍
2 年多之前 回复
sinat_28782331
sinat_28782331   2016.02.24 18:59

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

sinat_28782331
sinat_28782331   2016.02.25 21:17

四个动态链表怎么设置呢?
贴上筛子代码……
/*
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;
}

sinat_28782331
sinat_28782331   2016.02.27 14: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;
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
超市商品管理系统(课程设计)
#include #include #include #include #include //用getch();当用户按下某个字符时,函数自动读取,无需按回车。 using namespace std; class Goods { public:  Goods()     {     }  int kind;  char name[20];//名字  cha
课程设计--超市商品管理系统.rar
可行性分析报告+需求分析报告+软件设计说明书+测试报告+用户手册 代码易懂
c++ 课程设计 超市管理系统(源代码和已编译程序)
具有良好的菜单选择项,可用键盘进行选择,具有c++面向对象的思想,功能齐全,具有文件读写
超市管理系统设计报告
 一.超市管理系统调研计划说明书a.前言随着我国信息技术和经济的发展,计算机已经被应用在各个领域。计算机给人们的生活带来了便利的同时还需要开发相应的管理系统。目前,农民的生活水品有了很大的提高,在农村当中很多的杂货店往中小型超市发展的趋势日益明显,但是在实际中农村里面很多超市的管理还是依靠人工来管理,给日常的超市管理带来了很多麻烦。为达到方便超市管理的目的,对农村的超市进行调研,获
超市管理系统课程设计C++源码
这是我编程实现的课程设计,现在与大家共享,用C++实现的,功能有增加商品、删除商品、修改商品、查询商品、统计商品、基础数据存盘、基础数据装入。
C#开发的超市商品管理系统
使用VS2010 + SQL Server 2008 开发的超市商品管理系统(C/S) 实现了商品入库、商品查询(浏览)、商品售出(收银台)和销售统计等功能 内包含C#源码 数据库 使用配置方法 以及课程设计论文。
java版超市商品管理系统
java版超市商品管理系统 本人还有.Net版的,大家可以在我的资源里边找 演示地址:http://user.qzone.qq.com/493547845/blog/1202127629 更新版本修正了一些bug java版超市商品管理系统 http://download.csdn.net/source/584645
超市库存管理系统
今日内容介绍 1、Eclipse开发工具 2、超市库存管理系统 ###01Eclipse的下载安装 * A: Eclipse的下载安装 l * a: 下载 * http://www.eclipse.org * b: 安装 * 只需要解压后就能使用 * c: 卸载 * 只需要将文件夹删除就可以了 * d: 注意  * 开发软件的安装目
[数据库设计]超市管理系统设计
数据库 超市管理系统设计报告 系统叙述 图 代码 心得体会 参考文献等【提供全部完全版】可是直接应用 班级:计HR05-7 姓名:张 冰 学号:0520010726 2007年7月4日 超市管理系统设计 一、需求分析 1 项目背景 1.1 编写目的   本需求的编写目的在于研究超市管理系统软件的开发途径和应用方法。   本需求的预期读者是与超市管理系统软件开发有联系的决策人,开发组成人员,扶助开发者,支持本项目的领导和公司人员,软件验证者。 1.2 背景及范围   本项目的名称:超市管理系统开发软件。   本项目的任务提出者及开发者是超市管理系统软件开发小组,用户是超市。   超市管理系统: 超市管理系统是帮助管理人员、商品销售和库存的管理软件。 2 项目概述   该超市管理系统软件目前已有比较完善的管理与使用功能,研制超市管理系统软件是为了满足超市对商品销售和库存管理的方便,以现代化的创新思维模式去工作。 2.1 目标 2.1.1 开发意图   a. 为了超市管理系统更完善;   b. 为了超市对商品库存和销售的管理更方便;   c. 为了减轻工作人员的工作负担。 2.1.2 应用目标   通过本系统软件,能帮助工作人员利用计算机,快速方便的对超市进行管理等操作,使散乱的商品销售量和库存量能够具体化、直观化、合理化。 2.1.3 作用及范围 本软件适用于超市,它是比较完善的系统管理软件 2.1.4 背景   现今超市管理的烦琐给具有强烈时间观念的行政人员带来了诸多不便,为了对商品销售和管理商品库存方便,因此开发了本软件。 2.2 一般约束   a. 本项目的开发经费不超过1万元;   b. 辅导老师1人,开发人员1人;   c. 在管理方针、硬件的限制、并行操作安全和保密方面无约束。 2.3 假设和依据   假设开发经费不到位,管理不完善,设计时没能用全得到考虑,本项目的开发都将受到很大的影响。 3 功能需求 3.1 规格说明   查询超市的全部信息。 3.2 引言 为了查询超市的全部信息。 3.2.1 外部功能 内部功能 操作员和系统管理员 通过应用界面,应用程序,查询等。 同过SQL语言,对数据库的查询、插入、修改、删除等操作。 3.3 性能需求 3.3.1静态数值需求   a. 支持的终端数为4台;   b. 处理并发的40个链接; 3.3.2 精度需求   在精度需求上,根据使用需要,在各项数据的输入、输出及传输过程中,由于本系统使用了数摞结构,可以满足各种精度的需求。 3.3.3时间需求   在软件方面,响应时间、更新处理时间都比较快且迅速,完全满足用户要求。 3.3.4 灵活性   当用户需求,如操作方式,运行环境,结果精度,数据结构与其他软件接口等发生变化时,设计的软件要做适当调整,灵活性非常大。 3.3.5 故障处理   a. 内部故障处理   在开发阶段可以随即修改数据库里的相应内容。   b. 外部故障处理   对编辑的程序进行重装载时,第一次装载认为错,修改。第二次运行,在需求调用时出错,有错误提示,重试。 3.4 设计约束条件 3.4.1 技术约束 本项目的设计采用软硬一体化的设计方法。 3.4.2 环境约束   运行该软件所适用的具体设备必须是奔腾2G内存256兆以上的计算机,局域网络环境 3.4.3 标准约束   该软件的开发完全按照企业标准开发,包括硬件、软件和文档规格。 3.4.4 硬件限制   奔腾2G、内存256兆以上的计算机满足输入端条件。 3.5 接口需求 3.5.1 用户接口   本产品的用户一般需要通过终端进行操作,进入主界面后点击相应的窗口,分别进入相对应的界面(如:输入界面、输出界面)。用户对程序的维护,最好要有备份。 3.5.2 软件接口 WIN2000/XP操作系统. 3.6 属性 3.6.1 可使用性   在装载总程序时,正常就运行,异常就停止;汉语编程系统出现错误,将会产生不可遇见的问题,热启,整个终端程序就会再启动;程序出现错误,重新装载,若仍有错,按照提示逐渐装载。 3.6.2 保密性   本软件作为超市管理辅助设备,它的规模比较小,不需要保密技术;限定一个程序中某些区域的规约,给不同的模块分配不同的功能。 3.6.3 可维护性   本软件的组成程序为汉语成语设计语言,组构均较简单,直观意义上的较独立。因此,基于电子化所构成的硬件的简单可维护的特点,决定了该软件的简单可维护性。 3.6.4 可转移、可转换性 可转移的环境是奔腾1G、128兆内存以上;不可修改任何部分; 3.6.5 注释   本产品拥有的属性十分重要,它使得读者用规定的方法去客观的验证软件的各种特性。 3.7 数据库   数据库是实现有组织地,动态地存储大量关联数据,方便多用户访问的计算机软硬件组成的系统;它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。   由于本软件的整体结构比较简单,所涉及数据相对来说也较少,组成文件的最小单位是记录。 4 设备   奔腾1g、内存128兆以上的计算机。局域网络环境 5 需求注释 对于本软件,它的功能需求、性能需求、接口需求,从稳定性、可行性上都是可以的。 6 功能树 二、概念设计 1 实体及其属性 (1)超市E-R图: (2)收银员E-R图: (3)收银小票E-R图: (4)商品库存E-R图: 2 综合ER图 图2-1 超市管理ER图 三、逻辑设计 超市表(企业编号,店名,地址),主键为企业编号,符合三范式。 收银员表(收银员编号,姓名,性别,工资),主键为收银员编号号,符合三范式。 收银小票表(小票编号,商品编号,收银员编号,商品名称,单价,个数,总价)主键 为小票编号,符合三范式。 商品库存表(商品编号,商品名称,单价,库存量,供货商名)主键为商品编号号,符 合三范式。 表3-1 超市表SHOP 列名 含义 长度 类型 NULL DEFAULT ENO 企业编号 10 Char() no no SNAME 店名 30 Char() no no ADDRESS 地址 30 Char() no no 表3-2 收银员表ASSISTANT 列名 含义 长度 类型 NULL DEFAULT ANO 收银员编号 10 Char() no no ANAME 姓名 6 Char() no no SEX 性别 2 Char() no no SALARY 工资 8 INT no no 表3-3收银小票 表BILL 列名 含义 长度 类型 NULL DEFAULT BNO 小票编号 20 Char() no no CNO 商品编号 8 Char() no no ANO 收银员编号 8 Char() no no CNAME 商品名称 8 Char() no no PRICE 单价 8 Float() no no QUANTITY 个数 3 Int no no TOTAL 总价 10 Float () no no 表3-4 商品库存表RESERVR 列名 含义 长度 类型 NULL DEFAULT CNO 商品编号 8 Char() no no CNAME 商品名称 8 Char() no no PRICE 单价 8 Float() no no LIST 库存量 8 Int no no PROFESSINAL 供货商名 20 Char() yes no 四、其它数据库对象的设计 1、索引 (1)商品库存表商品编号索引 CREATE UNIQUE INDEX CRESERVE ON RESERVE(CNO ); (2)收银小票表小票编号索引 CREATE UNIQUE INDEX BBILL ON BILL (BNO); (3)收银员表中收银员编号索引 CREATE UNIQUE INDEX AASSISTANT ON ASSISTANT (ANO); 2、视图 某种商品的销售量和库存量的视图 GREATE VIEW COMMODITY (CNO,CNAME,MARKET,LIST) AS SELECT RESERVR .CNO,RESERVR .CNAME,SUM(QUANTITY),LIST FROM RESERVR ,BILL GROUP BY BILL.CNO 3、触发器 定义一个触发器,当商品库存表中,供货商为空时,自动改为”本店制作”。 CREATE TRIGGER UDLIST BEFORE UPDATE OR TNSERT ON RESERVR FOR EACH ROW AS BEGIN IF PROFESSINAL IS NULL THEN PROFESSINAL:=’本店制作’; END IF; END; 4、存储过程 利用存储过程来实现,当某商品卖出时,它的商品库存量相应的减少. CREATE PROCEDURE SELL ( BCNO CHAR, QLIST INT) AS DECLARE BEGIN SELECT TIST FROM RESERVE WHERE BCNO =RESERVE.CNO; IF LIST IS NULL THEN ROLLBACK; RETURN; END IF; IF LIST<QUANTITY THEN ROLLBACK; RETURN; END IF; UPDATE RESERVE SET LIST=LIST-QLIST WHERE BCNO=RESERVE.CNO; COMMIT; END; 五、备份及恢复策略 备分策略 采用数据转储和登录日志文件两种方法结合的方法备分数据库。 针对不同的故障,制定恢复策略 1、事务故障的恢复策略 (1)反向扫描日志文件,查找该事务的更新操作. (2)对事务的更新操作执行逆操作. (3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理. (4)如此处理下去,直到读到此事务的开始标记,事务故障恢复就完成了. 2、系统故障的恢复策略 (1)正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做队列.同时找出故障发生时尚未完成的事务,将其事务标识记入撤消队列. (2)对撤消队列中的各个事务进行撤消处理. (3)对重做队列中的各个事务进行重做处理. 3、介质故障恢复策略 (1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时一致性状态. (2)装入相应的日志文件副本,重做已完成的事务.
超市管理系统 c++
,利用超市货物管理系统实现各个商品的信息输入,商品入库,商品销售、商品退货,查询,统计等功能 商品入库信息包括:商品名,入库时间,入库数量,库存数量;商品销售信息包括:商品名,销售数量,单价,销售金额;商品退货信息包括:商品名,购买时间,退货数量,退货原因;入库、销售、退货时库存数量要做相应修改。