资源简介

欢迎进入系统菜单 .添加新商品信息记录 .显示仓库中商品信息记录内容 .根据商品名查询仓库中商品信息记录 .根据商品名首字查询仓库中商品信息记录 .根据商品名删除仓库中商品信息记录 .根据商品名修改仓库中商品信息记录 .退出系统 请输入您的选择

资源截图

代码片段和文件信息

#include
#include
#include
#include
using namespace std;
int count=0;
class CData   //定义数据基类
{
public:
CData(){};
virtual int Compare(CData &int)=0;
virtual void Show()=0;
virtual ~CData(){};
};
class CNode   //定义结点基类
{
private:
CData *pData;  //用于指向数据类的指针
CNode *pNext;  //用于指向链表的后向指针
public:
CNode(){pData=0;pNext=0;};   //结点构造函数
CNode(CNode &node)      //用于拷贝的构造函数
{
pData=node.pData;
pNext=node.pNext;
}
void InputData(CData *pdata){pData=pdata;}   //输入数据
void ShowNode(){pData->Show();}
CData *GetData(){return pData;}
friend class CList;    //定义链表类为基类
};
class CList
{

CNode *pHead;    //链表头结点指针
public:
CList(){pHead=0;};       
~CList(){DeleteList();}
void AddNode(CNode *pnode);   //在首部添加结点
CNode *DeleteNode(CNode *);   //删除一个指定的结点,返回该结点的指针
CNode *LookUp(CData &);     //查找一个指定的数据,返回该数据所在的结点在链表的指针,未找到返回0
bool LookUpF(CData &);
void ShowList();            //打印整个链表
void DeleteList();          //删除整个链表
CNode *GetListHead(){return pHead;}   //返回链表首结点
CNode *GetListNextNode(CNode *pnode);  //返回链表指定结点的下一个结点
};
CNode *CList::GetListNextNode(CNode *pnode)     //返回链表指定结点的下一个结点
{
    CNode *p1=pnode;
    return p1->pNext;
};
void CList::AddNode(CNode *pnode)   //在首部添加结点
{
if (pHead==0)    //如果是空链表,插入的结点是唯一的结点
{
pHead=pnode;
pnode->pNext=0;
return;
}
else     //否则,插入到链表首部
{
pnode->pNext=pHead;
pHead=pnode;
}
};
CNode *CList::DeleteNode(CNode *pnode)     //删除一个指定的结点,返回该结点的指针
{
CNode *p1*p2;
p1=pHead;              //指向首结点
while(p1!=pnode&&p1->pNext!=0)    //寻找要删除的结点
{
p2=p1;
p1=p1->pNext;       //结点p2始终在p1的后面
}
if (p1==pHead)       //如果要删除的是首结点
{
pHead=pHead->pNext;   //将首结点后移
return pnode;
}
p2->pNext=p1->pNext;  //p1指向被删除的结点,将p2结点与p1后面的结点连接起来
return pnode;
}
CNode *CList::LookUp(CData &data)   //查找一个指定的数据,返回指针,若未找到返回0
{
CNode *p1=pHead;
while(p1)                     //从头结点开始查找
{
if (p1->pData->Compare(data1)==0)
return p1;             //找到后返回结点指针
p1=p1->pNext;
}
return 0;     //搜索完找不到,返回空指针0
}
bool CList::LookUpF(CData &data)
{
bool f1=false;
CNode *p1=pHead;
while(p1)
{
if (p1->pData->Compare(data0)==0)
{
p1->ShowNode();
f1=true;
}
p1=p1->pNext;

}
return f1;
}
void CList::ShowList()  //打印整个链表
{
CNode *p1=pHead;
while(p1)
{
p1->pData->Show();
p1=p1->pNext;
}


}
void CList::DeleteList()   //删除整个链表结点
{
CNode *p1*p2;
p1=pHead;
while(p1)
{
delete p1->pData;
p2=p1;
p1=p1->pNext;
delete p2;
}
}
class Warehouse:public CData   //仓库为记录,为数据基类的公有派生类
{
private :
char szName[20];     //仓库中数据:商品名、商品数量和入库时间
char szNumber[20];
char szTime[20];
char szN;
public:
Warehouse(){strcpy(szName“\0“);strcpy(szNumber“\0“);strcpy(szTime“\0“);} //构造函数
Warehouse(char *namechar *numberchar *time)
{
strcpy(szNamename);
strcpy(szNumbernumber);
strcpy(szTimetime);

评论

共有 条评论