⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 商品库存管理系统.cpp

📁 一个很好用的C++课程设计
💻 CPP
字号:
#include <iostream> 
#include <string> 
#define MaxHEAP 100 
using namespace std; 

class Elem
{ 
private: 
	int objectID; 
	int number; 
	string proName; 
public: 
	Elem(int objectID=0,int number=0)
	{ 
		setID(objectID); 
		setNum(number); 
		setProN(proName); 
	} 
	
	int getID()
	{ 
		return objectID; 
	} 
	
	int getNum()
	{ 
		return number; 
	} 
	
	string getProN()
	{ 
		return proName; 
	} 
	
	void setID(int id)
	{ 
		objectID=id; 
	} 
	
	void setNum(int Num)
	{ 
		number=Num; 
	} 
	
	void setProN(string s) 
	{ 
		proName=s; 
	} 
	
}; 


class Heap 
{ 
private: 
	Elem items[MaxHEAP]; 
	int size; 
public : 
	Heap()
	{ 
		Elem items[MaxHEAP]; 
		setSize(0);}
	
	void setSize(int sz) 
	{
		size=sz;
	} 
	
	int heapIsEmpty()
	{ 
		return size==0; 
	} 
	
	void heapInsert(Elem newItem) 
	{
		if(size<MaxHEAP) 
		{ 
			items[size]=newItem; 
			int place=size; 
			int parent=(place-1)/2; 
			while((parent>=0)&&(items[parent].getNum()<items[place].getNum())) 
			{ 
				Elem temp=items[parent]; 
				items[parent]=items[place]; 
				items[place]=temp; 
				place=parent; 
				parent=(place-1/2); 
			} 
			++size; 
		} 
		heapRebuild(0); 
	} 
	Elem heapDelete(int ID) 
	{ 
		Elem rootItem; 
		if(!heapIsEmpty()) 
		{ 
			for(int i=0;i<size;i++) 
				if(items[i].getID()==ID) 
				{
					rootItem=items[i]; 
					swap(items[i],items[0]); 
				} 
				items[0]=items[--size]; 
				heapRebuild(0); 
		} 
		else 
			cout<<"\n错误:信息查找为空"<<endl; 
		return rootItem; 
	} 
	
	void heapInit()
	{ 
		setSize(0); 
		cout<<"空的信息"<<endl;
	} 
	
	void heapView()
	{ 
		if(size==0)
		{ 
			cout<<"空的信息!"<<endl; 
		} 
		else
		{ 
			cout<<"共有商品种类: "<<size<<endl; 
			for(int ct=0;ct<size;ct++)
			{ 
				cout<<"商品ID: "<<items[ct].getID()<<endl;
				cout<<"商品数量: "<<items[ct].getNum()<<endl;
				cout<<"经手人名称(入库后辍为-C;出库后辍为-G): " <<items[ct].getProN()<<endl; 
			} 
		} 
	} 
	
	void search(int ID) 
	{ 
		int N=0; 
		for(int i=0;i<size;i++) 
			if(items[i].getID()==ID) 
			{
				N++; 
				cout<<"商品ID: "<<items[i].getID()<<endl;
				cout<<"商品数量: "<<items[i].getNum() <<endl;
				cout<<"经手人名称(入库后辍为-C;出库后辍为-G): " <<items[i].getProN()<<endl; 
			} 
			if(!N) cout<<"未找到相关的信息"<<endl; 
	} 
	
	void heapRebuild(int root) 
	{ 
		int child=2*root+1; 
		if(child<size) 
		{ 
			int rightChild=child+1; 
			if((rightChild<size)&&(items[rightChild].getNum()>=items[child].getNum())) 
			{child=rightChild; 
			} 
			if(items[root].getNum()<=items[child].getNum()) 
			{ 
				Elem temp=items[root]; 
				items[root]=items[child]; 
				items[child]=temp; 
				heapRebuild(child); 
			} 
		} 
	} 
}; 


class priQueue 
{
private: 
	Heap h; 
public: 
	priQueue()
	{ 
		Heap(); 
	} 
	
	int priIsEmpty()
	{ 
		return h.heapIsEmpty(); 
	} 
	
	void priInit()
	{ 
		h.heapInit(); 
	} 
	
	void priInsert(Elem newItem)
	{ 
		h.heapInsert(newItem); 
	} 
	
	Elem priDelete(int ID)
	{ 
		return h.heapDelete(ID); 
	} 
	
	void priView()
	{
		h.heapView(); 
	} 
	
	void search(int ID) 
	{ 
		h.search(ID); 
	} 
	
}; 

void showMenu()
{ 
	cout<<"****************************************************"<<endl; 
	cout<<"******************商场库存管理系统******************"<<endl; 
	cout<<"****************************************************"<<endl; 
	cout<<"*                    1.重置信息                    *"<<endl; 
	cout<<"*                    2.入库出库                    *"<<endl; 
	cout<<"*                    3.删除商品                    *"<<endl; 
	cout<<"*                    4.查找商品                    *"<<endl; 
	cout<<"*                    5.显示库存                    *"<<endl; 
	cout<<"*                    0.退出系统                    *"<<endl; 
	cout<<"****************************************************"<<endl; 
}

void showTip()
{ 
	cout<<"*******************操作完成*************************"<<endl; 
	cout<<"******************选择0-5继续**********************"<<endl; 
} 



int main()
{ 
	string i="-1"; 
	int ID,NUM; 
	string proName; 
	Elem in; 
	priQueue PQ; 
	PQ.priInit(); 
	system("cls"); 
	showMenu(); 
	cout<<"选择菜单中的相关选项以便处理数据!"<<endl; 
	cin>>i; 
	system("cls"); 
	while(i!="0") 
	{ 
		if(i=="1") 
		{
			system("cls"); 
			showMenu(); 
			cout<<"你选择了1,所有数据将全部清空:"<<endl; 
			PQ.priInit(); 
			showTip(); 
		} 
		else if(i=="2") 
		{
			system("cls"); 
			showMenu(); 
			cout<<"你选择了2,请输入商品ID,商品数量,经手人名称(入库后辍为-C;出库后辍为-G)"<<endl; 
			cout<<"请输入 商品ID:"<<endl; 
			cin>>ID; 
			cout<<"请输入商品数量:"<<endl; 
			cin>>NUM; 
			cout<<"请输入经手人名称(入库后辍为-C;出库后辍为-G):"<<endl; 
			cin>>proName; 
			in.setID(ID); 
			in.setNum(NUM); 
			in.setProN(proName); 
			PQ.priInsert(in); 
			showTip(); 
		} 
		
		else if(i=="3") 
		{
			system("cls"); 
			showMenu(); 
			cout<<"你选择了3,请选择你要删除的商品ID"<<endl; 
			cin>>ID; 
			PQ.priDelete(ID); 
			showTip(); 
		} 
		
		else if(i=="4") 
		{
			system("cls"); 
			showMenu(); 
			cout<<"你选择了4,输入要查找的商品ID"<<endl; 
			cin>>ID; 
			PQ.search(ID); 
			showTip(); 
		} 
		
		else if(i=="5") 
		{
			system("cls"); 
			showMenu(); 
			cout<<"你选择了5,整个商品库存量显示如下:"<<endl; 
			PQ.priView(); 
			showTip(); 
		} 
		else 
		{ 
			system("cls"); 
			showMenu(); 
			cout<<"无效的输入,请更正!"<<endl; 
		} 
		cin>>i; 
		system("cls"); 
	} 
    return 0; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -