+ -
当前位置:首页 → 问答吧 → 《数据结构》项目设计

《数据结构》项目设计

时间:2011-12-07

来源:互联网

#ifndef _SQLIST_
#define _SQLIST_
#include <iostream>
using namespace std;
struct box
{
char num[3]; //货物号
char name[9]; //货物名
char type[6]; //货物类别
float money; //价格

};

class SqList
{
public:
SqList();
~SqList();
void Menu() ; //显示提示选单
int Quit(); //退出选单
void Create(); //创建新的商品记录
bool Add();//在商场记录的末尾,写入新的信息,并返回选单。
int Find(const char* ) const; //按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则商场中没有此商品的信息,并返回选单。
bool Alter(const char* e); //修改某商品的信息,如果未找到要修改的商品,则提示商场中没有此商品的信息,并返回选单
bool Delete(const char* e); //删除某商品信息,如果未找到要删除的商品,则提示商场中没有此商品的信息,并返回选单
void List() const; //显示所有商品记录
void GetNum() const; //低于20块钱的货物总数

private:
int len;
int size;
box *elem;

};

SqList::SqList()
{
int m;
len = 0;
if (m==0)
elem=NULL;
else
elem=new box[m];
size=m;
}




void SqList::Menu()
{
cout <<"***********************************************************"<< endl;
cout <<" 商品管理 "<< endl;
cout <<" 1创建新的商品记录 "<<"2显示所有商品记录 "<<"3增加新商品记录 "<< endl;
cout <<" 4查询商品记录 "<<"5修改商品记录 "<<"6删除商品记录 "<< endl;
cout <<" 7低于20块钱的货物总数  8日用品类的详细信息"<< endl;
cout <<" 9程序退出"<< endl;
cout <<"***********************************************************"<< endl;
cout <<"请输入操作序号: "<< endl;

while(1)
{
int i;
cin >> i;
switch(i)
{
case 1:
this->Create();
cout<<"操作完成."<<endl<<endl<<"请输入操作序号: ";
break;
case 2:
cout<<"所有商品记录为:"<< endl;
this->List();
cout<<"操作完成."<<endl<<endl<<"请输入操作序号: ";
break;
case 3:
cout <<"请输入新商品,格式为:货物号 货物名 货物类别 价格"<< endl;
this->Add();
cout<<"操作完成."<<endl<<endl<<"请输入操作序号: ";
break;
case 4:
cout <<"请输入需查询商品的名称:"<< endl;
char tname[9];
cin >> tname;
Find(tname);
cout<<"操作完成."<<endl<<endl<<"请输入操作序号: ";
break;
case 5:
cout <<"请输入需修改商品的名称:"<< endl;
char sname[9];
cin >> sname;
Alter(sname);
cout<<"操作完成."<<endl<<endl<<"请输入操作序号: ";
break;
case 6:
cout <<"请输入需删除商品的名称:"<< endl;
char dname[9];
cin >> dname; 
Delete(dname);
cout<<"操作完成."<<endl<<endl<<"请输入操作序号: ";
break;
case 7:
break;
case 8:
break;
case 9:
cout<<"程序退出!"<< endl;
goto a;
break;
}
}
a: ;
}

int SqList::Quit()
{
return 0;
}



bool SqList::Add()
{
box *newbase;
cin>>newbase->num>>newbase->name>>newbase->money;
if (len>=size)
newbase=new box[size+10];
if (!newbase)
return false;
for(int j=0;j<len;j++)
newbase[j]=elem[j];
delete[] elem;
elem=newbase;
size+=10;
  


}
 int SqList::Find(const char* e) const
{
  box *p =elem;
int i=1;
while (i<=len && p->name!=e )
  { p++;
i++;
}
  if (i<=len)
  { return i;
cout<<"件商品,格式为:货物号 货物名 货物类别 价格:"<<elem[i].num<<elem[i].name<<elem[i].type<<elem[i].money;
}
  else
cout <<"查找失败!"<< endl;
  return 0; 





}

void SqList::Create()
{

int n;
  box b;

cout << "请输入此商场商品的数目:";
cin >> n;
cout<<"逐件输入"<< n <<"件商品,格式为:货物号 货物名 货物类别 价格"<< endl;
for (int i = 0; i < n; i++)
  { cin>>b.num>>b.name>>b.type>>b.money ;
Add();
}
}


bool SqList::Alter(const char* e) 
{
int i = Find(e);
if (i<1 || i>len)
cout<<"商场中没有此商品的信息"<< endl;
else
{
box b;
cout << "请输新商品的信息,格式为:货物号 货物名 货物类别 价格" << endl;
cin>>b.num>>b.name>>b.type>>b.money;
strcpy(elem[i].num,b.num);
strcpy(elem[i].name,b.name);
strcpy(elem[i].type,b.type);
elem[i].money=b.money;

}
}
bool SqList::Delete(const char* e)
{

cout<<"删除:";
int i = Find(e);
  if(i<1 || i>len)
return false;
box *p,*q;
p=&elem[i-1];
   
  e=*p;
q=elem+len-1;
for(++p; p<=q; ++p)
*(p-1)=*p;
--len;
return true;
}
void SqList::List() const
{
box *p = elem;
for(int i=0;i<len; i++)
  cout <<p->num<<" "<<p->name<<" "<<p->type<<" "<<p->money<<" "<< endl;

}
void SqList::GetNum() const
{
for(int i=0; i<len; i++)
{
if(elem[i-1].money<20)

cout<<"低于20块钱的货物总数:"<<elem[i-1].num<<elem[i-1].name<<elem[i-1].type<<elem[i-1].money;
 
}
}

运行之后:DDD.CPP
c:\program files (x86)\microsoft visual studio\myprojects\ddddd\dd.h(204) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'struct box' (or there is no acceptable conversion)
执行 cl.exe 时出错.

DDDDD.exe - 1 error(s), 0 warning(s)



#endif

作者: ASDCHEN6400053   发布时间: 2011-12-07

不是贴个代码上来,别人就知道你想干嘛。。还有你这个代码贴的,注意点格式把兄弟

作者: bobye1230   发布时间: 2011-12-07

简单的程序就不要用C++写啦。

作者: wcg_jishuo   发布时间: 2011-12-07