資源簡介
歡迎進入系統菜單
.添加新商品信息記錄
.顯示倉庫中商品信息記錄內容
.根據商品名查詢倉庫中商品信息記錄
.根據商品名首字查詢倉庫中商品信息記錄
.根據商品名刪除倉庫中商品信息記錄
.根據商品名修改倉庫中商品信息記錄
.退出系統
請輸入您的選擇
代碼片段和文件信息
#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);
- 上一篇:行李寄存管理軟件綠色版.
- 下一篇:山東大學數字圖像處理實驗一:圖像基本操作
評論
共有 條評論